"We are back" « oc.at

Codeanpassung für aacraid Linux Treiber für Kernel 4.x

The Prophet 27.07.2016 - 11:32 3868 15
Posts

The Prophet

Addicted
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
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: BASH
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:

Zitat
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
linit-c_215767.zip (downloaded 94x)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
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
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
Hi, danke! Das File scsi_tcq.h ist nicht im package dabei!? Ich werde gleich testen.

Sieht jetzt so aus:

Code: BASH
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
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?

The Prophet

Addicted
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
ah ok, dachte du meinst vom aacraid package selbst.

Makefile und scsi_tcq.h anbei.
makefile_215772.zip (downloaded 104x)
scsi_tcq-h_215773.zip (downloaded 113x)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
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
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
das hab dann wohl ich verbrochen. Ich bessere das mal aus.
Bearbeitet von The Prophet am 27.07.2016, 15:13

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
Nimm dieses File, das sollte passen:
linit_215778.zip (downloaded 110x)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
Die "implicit declaration"-Fehler kommen weil CONFIG_PM nicht im Make-Script definiert ist.

The Prophet

Addicted
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
jetzt sieht es schon besser aus:

Code: BASH
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
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:
makefile_215779.zip (downloaded 111x)

The Prophet

Addicted
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
Code: BASH
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25493
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
Avatar
Registered: May 2004
Location: Hinterbrühl
Posts: 559
danke, bekomme aber noch immer die gleichen Fehler wenn ich das modul laden möchte.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz