Codeanpassung für aacraid Linux Treiber für Kernel 4.x
The Prophet 27.07.2016 - 11:32 3868 15
The Prophet
Addicted
|
Hi liebe Leute, nachdem der Adaptec / Microsemi Support leider nicht in der Lage ist mir zu helfen und ich ein Programmier Noob bin, hätte ich eine bitte an euch. Das DKMS Package von Adaptec läuft nur bis Kernel 3.x. Jemand im Debian Forum hat die Sourcen angepasst, damit sie auch unter Kernel 4.x kompiliert werden können. Jedoch habe ich aufgrund eines neueren Compilers das Problem das Package bei mir zum laufen zu bringen (obwohl es ws. nur kleine Probleme sind). Hier mal das make.log: DKMS make.log for aacraid-1.2.1.50663 for kernel 4.6.4-gentoo (x86_64) Wed Jul 27 09:41:41 CEST 2016 make -C /lib/modules/4.6.4-gentoo/build M=/var/lib/dkms/aacraid/1.2.1.50663/build modules make[1]: Entering directory '/usr/src/linux-4.6.4-gentoo' CC [M]
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.o /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:3366:25: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] .change_queue_depth = aac_change_queue_depth, ^
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:3366:25: note: (near initialization for 'aac_driver_template.change_queue_depth')
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:3386:5: error: unknown field 'use_blk_tags' specified in initializer .use_blk_tags = 1, ^
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_probe_one': /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4013:13: error: implicit declaration of function 'scsi_init_shared_tag_map' [-Werror=implicit-function-declaration] error = scsi_init_shared_tag_map(shost, shost->can_queue); ^
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_error_detected':
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4313:3: error: implicit declaration of function 'aac_release_resources' [-Werror=implicit-function-declaration] aac_release_resources(aac); ^ /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_resume':
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4389:2: error: implicit declaration of function 'aac_acquire_resources' [-Werror=implicit-function-declaration] aac_acquire_resources(aac); ^ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:292:
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.o] Error 1 make[1]: *** [Makefile:1429: _module_/var/lib/dkms/aacraid/1.2.1.50663/build] Error 2 make[1]: Leaving directory '/usr/src/linux-4.6.4-gentoo' make: *** [Makefile:202: aacraid_dkms_build] Error 2
Der nette Herr aus dem Debian Forum hat mir auch folgendes gesagt: Für aac_change_queue_depth musst du die Präprozessor-Anweisung abändern, dass er ab der Kernel-Version 4.0 in den else-Zweig geht. Für die anderen Fehler sollten Funktionsdeklarationen am Anfang der Datei reichen. Das ist zwar ein ziemlich genauer Hinweis, trotzdem schaffe ich das leider nicht umzusetzen. Vl. erbarmt sich jemand und kann mir helfen. Anbei das c file um das es geht. Danke im Voraus! Gruß Christian
|
mat
AdministratorLegends never die
|
Ich hab mir den Code mal angesehen. Mit sovielen unbekannten Include-Files kann man leider nur per Trail and Error an die Sache herangehen.
Aber ich hab mal so ziemlich alles gemacht, was dir empfohlen wurde. Es gibt nur ein Problem: scsi_init_shared_tag_map - die Funktion sollte eigentlich problemlos in scsi_tcq.h deklariert und definiert werden (ist eine inline-Funktion direkt im Header-File). Kannst du mal den Inhalt von der Datei auch posten?
Hier das neue c-File, versuch mal und schau, welche Fehler nun weg sind:
linit_215768.zip (downloaded 106x)
|
The Prophet
Addicted
|
Hi, danke! Das File scsi_tcq.h ist nicht im package dabei!? Ich werde gleich testen. Sieht jetzt so aus: DKMS make.log for aacraid-1.2.1.50663 for kernel 4.6.4-gentoo (x86_64) Wed Jul 27 13:56:20 CEST 2016 make -C /lib/modules/4.6.4-gentoo/build M=/var/lib/dkms/aacraid/1.2.1.50663/build modules make[1]: Entering directory '/usr/src/linux-4.6.4-gentoo' CC [M] /var/lib/dkms/aacraid/1.2.1.50663/build/linit.o /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:3390:5: error: unknown field 'use_blk_tags' specified in initializer .use_blk_tags = 1, ^ /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_probe_one': /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4017:13: error: implicit declaration of function 'scsi_init_shared_tag_map' [-Werror=implicit-function-declaration] error = scsi_init_shared_tag_map(shost, shost->can_queue); ^ /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_error_detected': /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4317:3: error: implicit declaration of function 'aac_release_resources' [-Werror=implicit-function-declaration] aac_release_resources(aac); ^ /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_resume': /var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4393:2: error: implicit declaration of function 'aac_acquire_resources' [-Werror=implicit-function-declaration] aac_acquire_resources(aac); ^ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:292: /var/lib/dkms/aacraid/1.2.1.50663/build/linit.o] Error 1 make[1]: *** [Makefile:1429: _module_/var/lib/dkms/aacraid/1.2.1.50663/build] Error 2 make[1]: Leaving directory '/usr/src/linux-4.6.4-gentoo' make: *** [Makefile:202: aacraid_dkms_build] Error 2
Bearbeitet von The Prophet am 27.07.2016, 13:58
|
mat
AdministratorLegends never die
|
|
The Prophet
Addicted
|
ah ok, dachte du meinst vom aacraid package selbst.
Makefile und scsi_tcq.h anbei.
|
mat
AdministratorLegends never die
|
Ok, der Fehler mit scsi_init_shared_tag_map liegt daran, dass das define drumrum falsch ist. Die Funktion gibt es nämlich nur im Kernel-Source von < 4.4, es steht aber 4.7.
|
The Prophet
Addicted
|
das hab dann wohl ich verbrochen. Ich bessere das mal aus.
Bearbeitet von The Prophet am 27.07.2016, 15:13
|
mat
AdministratorLegends never die
|
Nimm dieses File, das sollte passen:
linit_215778.zip (downloaded 110x)
|
mat
AdministratorLegends never die
|
Die "implicit declaration"-Fehler kommen weil CONFIG_PM nicht im Make-Script definiert ist.
|
The Prophet
Addicted
|
jetzt sieht es schon besser aus: DKMS make.log for aacraid-1.2.1.50663 for kernel 4.6.4-gentoo (x86_64)
Wed Jul 27 15:23:12 CEST 2016
make -C /lib/modules/4.6.4-gentoo/build M=/var/lib/dkms/aacraid/1.2.1.50663/build modules
make[1]: Entering directory '/usr/src/linux-4.6.4-gentoo'
CC [M] /var/lib/dkms/aacraid/1.2.1.50663/build/linit.o
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_error_detected':
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4313:3: error: implicit declaration of function 'aac_release_resources' [-Werror=implicit-function-declaration]
aac_release_resources(aac);
^
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_resume':
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4389:2: error: implicit declaration of function 'aac_acquire_resources' [-Werror=implicit-function-declaration]
aac_acquire_resources(aac);
^
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:292: /var/lib/dkms/aacraid/1.2.1.50663/build/linit.o] Error 1
make[1]: *** [Makefile:1429: _module_/var/lib/dkms/aacraid/1.2.1.50663/build] Error 2
make[1]: Leaving directory '/usr/src/linux-4.6.4-gentoo'
make: *** [Makefile:202: aacraid_dkms_build] Error 2
Bearbeitet von The Prophet am 27.07.2016, 15:26
|
mat
AdministratorLegends never die
|
Hab dir das Makefile angepasst. Ich hab die Präprozessoranweisung (-DCONFIG_PM) aber in die COMMON_FLAGS geworfen. Wahrscheinlich sollte man eher abfragen, ob die entsprechenden Prerequisites dafür vorhanden sind und es zu den AAC_FLAGS dazugeben. Aber probiers mal:
|
The Prophet
Addicted
|
DKMS make.log for aacraid-1.2.1.50663 for kernel 4.6.4-gentoo (x86_64)
Wed Jul 27 15:27:32 CEST 2016
make -C /lib/modules/4.6.4-gentoo/build M=/var/lib/dkms/aacraid/1.2.1.50663/build modules
make[1]: Entering directory '/usr/src/linux-4.6.4-gentoo'
CC [M] /var/lib/dkms/aacraid/1.2.1.50663/build/linit.o
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_error_detected':
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4313:3: error: implicit declaration of function 'aac_release_resources' [-Werror=implicit-function-declaration]
aac_release_resources(aac);
^
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c: In function 'aac_pci_resume':
/var/lib/dkms/aacraid/1.2.1.50663/build/linit.c:4389:2: error: implicit declaration of function 'aac_acquire_resources' [-Werror=implicit-function-declaration]
aac_acquire_resources(aac);
^
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:292: /var/lib/dkms/aacraid/1.2.1.50663/build/linit.o] Error 1
make[1]: *** [Makefile:1429: _module_/var/lib/dkms/aacraid/1.2.1.50663/build] Error 2
make[1]: Leaving directory '/usr/src/linux-4.6.4-gentoo'
make: *** [Makefile:202: aacraid_dkms_build] Error 2
|
mat
AdministratorLegends never die
|
Hast du eigentlich als Kernel-Option CONFIG_PM=y angegeben? Das ist das Power Management für alles mögliche im Kernel. Wenn nicht, dann könnte man die beiden Funktionen sowieso rausschmeißen.
|
mat
AdministratorLegends never die
|
Hier ist noch eine Version von linit.c, die den Fehler mit den impliziten Funktionsdeklarationen behebt, wenn CONFIG_PM nicht aktiviert ist. Bzw. werden diese Funktion aktiviert, wenn CONFIG_PM als Präprozessoranweisung im Makefile landet:
linit_215786.zip (downloaded 100x)
|
The Prophet
Addicted
|
danke, bekomme aber noch immer die gleichen Fehler wenn ich das modul laden möchte.
|