URL: https://www.overclockers.at/coding-stuff/codeanpassung-fuer-aacraid-linux-treiber-fuer-kernel-4-x_246745/page_1 - zur Vollversion wechseln!
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:
Code: BASHDKMS 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
ZitatFü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.
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:
Hi, danke! Das File scsi_tcq.h ist nicht im package dabei!? Ich werde gleich testen.
Sieht jetzt so aus:
Code: BASHDKMS 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
Strange, weil die sollte ein Teil von Linux sein: https://github.com/torvalds/linux/b...scsi/scsi_tcq.h
Hat das make-Script den Include-Path der Kernel-Sourcen drinnen?
ah ok, dachte du meinst vom aacraid package selbst.
Makefile und scsi_tcq.h anbei.
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.
das hab dann wohl ich verbrochen. Ich bessere das mal aus.
Nimm dieses File, das sollte passen:
Die "implicit declaration"-Fehler kommen weil CONFIG_PM nicht im Make-Script definiert ist.
jetzt sieht es schon besser aus:
Code: BASHDKMS 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
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:
Code: BASHDKMS 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
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.
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:
danke, bekomme aber noch immer die gleichen Fehler wenn ich das modul laden möchte.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025