
Hallo, ich möchte gerne den Suse Kernel 2.4.20 der Suse 8.2 mit einem Low-Latency-patch patchen. Bisher hab ich es mit 'Andrew Morton's low-latency patch for audio purposes' probiert. Leider gibt es beim patchen einige Fehlermeldungen. Die Übersetzung des Kernels bricht mit folgender Fehlermeldungen ab. make[1]: Entering directory `/usr/src/linux-2.4.20.SuSE/mm' make all_targets make[2]: Entering directory `/usr/src/linux-2.4.20.SuSE/mm' gcc -D__KERNEL__ -I/usr/src/linux-2.4.20.SuSE/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Wno-sign-compare -finline-limit=2000 -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=athlon -nostdinc -iwithprefix include -DKBUILD_BASENAME=memory -DEXPORT_SYMTAB -c memory.c memory.c: In function `zeromap_pmd_range': memory.c:871: warning: passing arg 1 of `zeromap_pte_range' from incompatible pointer type memory.c:871: warning: passing arg 2 of `zeromap_pte_range' makes pointer from integer without a cast memory.c:871: error: incompatible type for argument 4 of `zeromap_pte_range' memory.c:871: error: too few arguments to function `zeromap_pte_range' memory.c: In function `handle_bigpage_fault': memory.c:1484: warning: unused variable `dummy' make[2]: *** [memory.o] Error 1 make[2]: Leaving directory `/usr/src/linux-2.4.20.SuSE/mm' make[1]: *** [first_rule] Error 2 make[1]: Leaving directory `/usr/src/linux-2.4.20.SuSE/mm' make: *** [_dir_mm] Error 2 Kann mir da jemand weiterhelfen ? Danke und Gruß Christain

Christian Bunge wrote:
ich möchte gerne den Suse Kernel 2.4.20 der Suse 8.2 mit einem Low-Latency-patch patchen. Bisher hab ich es mit 'Andrew Morton's low-latency patch for audio purposes' probiert. Leider gibt es beim patchen einige Fehlermeldungen. Die Übersetzung des Kernels bricht mit folgender Fehlermeldungen ab. [...]
Wie stellst Du Dir das vor? Du patchst den Kernel-Source: dabei gibt es Fehlermeldungen, d.h. es konnten nicht alle Veraenderun- gen am Quellcode vorgenommen werden, die noetig sind, um das Feature, das Du haben moechtest, zu implementieren. Du hast nun also Kernel-Quellen, bei denen manchen Dateien veraendert wurden, andere wiederum nicht, obwohl sie ebenfalls haetten veraendert werden muessen. Du versuchst nun, mit diesen inkonsistenten Kernel-Quellen einen Kernel zu erstellen und wunderst Dich, dass es nicht geht. Also, um ehrlich zu sein, mich wundert das nicht! Wenn Du einen Patch anwendest, dann muss der _exakt_ zum Kernel passen, sonst wird das Anwenden des Patches nicht funktionieren. Wenn der Patch nicht 100% zum Kernel-Source passt, dann musst Du die Aenderungen, die abgelehnt wurden (.rej), von Hand vornehmen. Dazu musst Du Dich aber mit Programmieren auskennen und auch un- gefaehr ueber den Kernel Bescheid wissen. Kurz: das ist eher et- was fuer Experten. Versuche es mit dem Patch von Andrew bei einem Vanilla-Kernel, bei einem SuSE-Kernel wirst Du wenig Chan- cen haben - da hat SuSE schon sehr viele andere Patches eingear- beitet, so dass der Quellcode so weit veraendert ist, dass Du wei- tere Patches erst anpassen oder ganz von Hand einspielen musst... Aber auch bei einem Vanilla-Kernel brauchst Du einen Patch, der exakt zur Version der Kernel-Quellen passt - siehe dazu auch http://www.thomashertweck.de/kernel.html#patchen. Gruesse, Thomson

On Friday 19 September 2003 09:17, Thomas Hertweck wrote:
Christian Bunge wrote:
ich möchte gerne den Suse Kernel 2.4.20 der Suse 8.2 mit einem Low-Latency-patch patchen. Bisher hab ich es mit 'Andrew Morton's low-latency patch for audio purposes' probiert. Leider gibt es beim patchen einige Fehlermeldungen. Die Übersetzung des Kernels bricht mit folgender Fehlermeldungen ab.
[...]
Wie stellst Du Dir das vor? Du patchst den Kernel-Source: dabei gibt es Fehlermeldungen, d.h. es konnten nicht alle Veraenderun- gen am Quellcode vorgenommen werden, die noetig sind, um das Feature, das Du haben moechtest, zu implementieren. Du hast nun also Kernel-Quellen, bei denen manchen Dateien veraendert wurden, andere wiederum nicht, obwohl sie ebenfalls haetten veraendert werden muessen. Du versuchst nun, mit diesen inkonsistenten Kernel-Quellen einen Kernel zu erstellen und wunderst Dich, dass es nicht geht. Also, um ehrlich zu sein, mich wundert das nicht!
Na ja, es war ein Versuch.
Wenn Du einen Patch anwendest, dann muss der _exakt_ zum Kernel passen, sonst wird das Anwenden des Patches nicht funktionieren.
Der Patch hat die Versionsnummer 2.4.20, also passend zum suse Kernel-Source.
Wenn der Patch nicht 100% zum Kernel-Source passt, dann musst Du die Aenderungen, die abgelehnt wurden (.rej), von Hand vornehmen. Dazu musst Du Dich aber mit Programmieren auskennen und auch un- gefaehr ueber den Kernel Bescheid wissen. Kurz: das ist eher et- was fuer Experten. Versuche es mit dem Patch von Andrew bei einem Vanilla-Kernel, bei einem SuSE-Kernel wirst Du wenig Chan- cen haben
Das habe ich befürchtet.
- da hat SuSE schon sehr viele andere Patches eingear- beitet, so dass der Quellcode so weit veraendert ist, dass Du wei- tere Patches erst anpassen oder ganz von Hand einspielen musst... Aber auch bei einem Vanilla-Kernel brauchst Du einen Patch, der exakt zur Version der Kernel-Quellen passt - siehe dazu auch http://www.thomashertweck.de/kernel.html#patchen.
Danke, ich werde es mir durchlesen und es mal mit dem Vanilla-Kernel probieren. Gruss Christian

Christian Bunge schrieb:
On Friday 19 September 2003 09:17, Thomas Hertweck wrote:
[...] Wenn Du einen Patch anwendest, dann muss der _exakt_ zum Kernel passen, sonst wird das Anwenden des Patches nicht funktionieren.
Der Patch hat die Versionsnummer 2.4.20, also passend zum suse Kernel-Source.
Nein. Der Patch passt zum Vanilla Kernel 2.4.20 von kernel.org. Da sich aber der SuSE Kernel vom Vanilla Kernel in ziemlich vie- len Dingen unterscheidet (der Patch zum Wandeln eines Vanilla in einen SuSE Kernel ist mehr als 9MB(!) gross, und das in kompri- miertem Zustand - das zeigt ein bisschen, wie sehr sich die Ker- nel unterscheiden), wird der Patch nicht zum SuSE-Kernel 2.4.20 passen. Es hilft insofern wirklich nur, den Patch anzupassen auf die Quellen des SuSE-Kernels oder alle abgelehnten Aenderungen, die in .rej Dateien gespeichert wurden, von Hand einzufuegen an den richtigen Stellen. Gruesse, Thomson

On Friday 19 September 2003 17:59, Thomas Hertweck wrote:
Christian Bunge schrieb:
On Friday 19 September 2003 09:17, Thomas Hertweck wrote:
[...] Wenn Du einen Patch anwendest, dann muss der _exakt_ zum Kernel passen, sonst wird das Anwenden des Patches nicht funktionieren.
Der Patch hat die Versionsnummer 2.4.20, also passend zum suse Kernel-Source.
Nein. Der Patch passt zum Vanilla Kernel 2.4.20 von kernel.org. Da sich aber der SuSE Kernel vom Vanilla Kernel in ziemlich vie- len Dingen unterscheidet (der Patch zum Wandeln eines Vanilla in einen SuSE Kernel ist mehr als 9MB(!) gross, und das in kompri- miertem Zustand - das zeigt ein bisschen, wie sehr sich die Ker- nel unterscheiden), wird der Patch nicht zum SuSE-Kernel 2.4.20 passen. Es hilft insofern wirklich nur, den Patch anzupassen auf die Quellen des SuSE-Kernels oder alle abgelehnten Aenderungen, die in .rej Dateien gespeichert wurden, von Hand einzufuegen an den richtigen Stellen.
Gruesse, Thomson
Hi, Danke erstmal. Ich habe das Linux-Kernel-HOWTO durchgelesen und mich für den Vanilla-Kernel 2.4.21 entschieden. Der low-latency patch lies sich ohne Probleme einspielen. Danach hab ich die Konfiguration des laufenden Suse-Athlon Kernels geklont mit : cd /usr/src/linux-2.4.21-low_latency $> zcat /proc/config.gz > .config $> make oldconfig Die Fragen zu low latency hab ich mit ja beantwortet und alle anderen neuen Konfigurationen mit nein. Der Kernel lies sich problemlos Übersetzen. Leider giebt's jetzt eine Fehlermeldung beim compilieren der Module /usr/src/linux-2.4.21-low_latency/include/linux/atmdev.h: In function `atm_may_send': /usr/src/linux-2.4.21-low_latency/include/linux/atmdev.h:446: warning: comparison between signed and unsigned ambassador.c:301:21: pasting "." and "start" does not give a valid preprocessing token ambassador.c:305:23: pasting "." and "regions" does not give a valid preprocessing token ambassador.c:310:20: pasting "." and "data" does not give a valid preprocessing token ambassador.c: At top level: /usr/src/linux-2.4.21-low_latency/include/linux/module.h:299: warning: `__module_kernel_version' defined but not used /usr/src/linux-2.4.21-low_latency/include/linux/module.h:302: warning: `__module_using_checksums' defined but not used ambassador.c:2588: warning: `__module_license' defined but not used make[2]: *** [ambassador.o] Fehler 1 make[2]: Leaving directory `/usr/src/linux-2.4.21-low_latency/drivers/atm' make[1]: *** [_modsubdir_atm] Fehler 2 make[1]: Leaving directory `/usr/src/linux-2.4.21-low_latency/drivers' make: *** [_mod_drivers] Fehler 2 Was habe ich falsch gemacht, oder übersehen? Danke und Gruss Christian

Hallo, Am Sat, 20 Sep 2003, Christian Bunge schrieb:
Ich habe das Linux-Kernel-HOWTO durchgelesen und mich für den Vanilla-Kernel ^^^^^^^ *DING* 2.4.21 entschieden. Der low-latency patch lies sich ohne Probleme einspielen. Danach hab ich die Konfiguration des laufenden Suse-Athlon Kernels geklont ^^^^ *DING* Welche Version? mit :
cd /usr/src/linux-2.4.21-low_latency $> zcat /proc/config.gz > .config $> make oldconfig Der Kernel lies sich problemlos Übersetzen. Leider giebt's jetzt eine Fehlermeldung beim compilieren der Module
*DONG* Mein Tip: config passt nicht zum Kernel... Geh die Config am besten per Hand durch. Wenn du genug Platz auf der HD hast: - Saeubere die config deines neuen Kernels (make mrproper) - Packe die Quellen des laufenden SuSE-Kernels aus - Konfiguriere diesen (make cloneconfig) Dann rufe 'make menuconfig' fuer deinen SuSE und fuer deinen neuen Kernel in 2 xterms auf: make -C /usr/src/linux/2.4.2x.SuSE menuconfig make -C /usr/src/linux/2.4.21-low_latency menuconfig Klappere in beiden menuconfigs die Einstellungen ab -- die die's in beiden gibt, kannst du uebernehmen (oder auf deine HW/Plattform anpassen)... Anschliessend sollte es dann klappen... -dnh -- Conversation, n.: A vocal competition in which the one who is catching his breath is called the listener. -- the BSD fortune file

David Haller <david@dhaller.de> [20 Sep 2003 01:49:03 +0200]:
Mein Tip: config passt nicht zum Kernel...
Tja, genial daneben :) Da macht der Code Murks: #ifdef AMB_NEW_MICROCODE #define UCODE(x) UCODE1(atmsar12.,x) #else #define UCODE(x) UCODE1(atmsar11.,x) #endif #define UCODE2(x) #x #define UCODE1(x,y) UCODE2(x ## y) static u32 __initdata ucode_start = #include UCODE(start) ; static region __initdata ucode_regions[] = { #include UCODE(regions) { 0, 0 } }; static u32 __initdata ucode_data[] = { #include UCODE(data) 0xdeadbeef }; Sprich will mittels des ## Präprozessor-Operators den Dateinamen zusammenbasteln. ISO C99 sagt nun aber einmal in 6.10.3.3#3: If the result is not a valid preprocessing token, the behavior is undefined. Der gcc 3.2 hat es noch mit Warnung akzeptiert, aber seit gcc 3.3 gibt es einen Fehler. Dabei geht es auch standard konform, wie der Code in 2.4.22 zeigt: #ifdef AMB_NEW_MICROCODE #define UCODE(x) UCODE2(atmsar12.x) #else #define UCODE(x) UCODE2(atmsar11.x) #endif #define UCODE2(x) #x Philipp

Christian Bunge <chbung321@compuserve.de> [20 Sep 2003 00:32:12 +0200]:
/usr/src/linux-2.4.21-low_latency/include/linux/atmdev.h: In function `atm_may_send': /usr/src/linux-2.4.21-low_latency/include/linux/atmdev.h:446: warning: comparison between signed and unsigned ambassador.c:301:21: pasting "." and "start" does not give a valid preprocessing token ambassador.c:305:23: pasting "." and "regions" does not give a valid preprocessing token ambassador.c:310:20: pasting "." and "data" does not give a valid preprocessing token
Was habe ich falsch gemacht, oder übersehen?
Gar nichts. Der Code macht an der Stelle (und ein paar anderen) einfach Sachen, die laut dem ISO C Standard nicht definiert sind. Gcc 3.2 hat die noch mit Warnung akzeptiert, aber seit gcc 3.3 wird solcher Code zurückgewiesen. Verwende 2.4.22, da ist zumindest der Code gefixt oder deaktiviere einfach die ganze ATM Unterstützung, denn die wirst du sicherlich nicht benötigen. Philipp

On Saturday 20 September 2003 10:57, Philipp Thomas wrote:
Christian Bunge <chbung321@compuserve.de> [20 Sep 2003 00:32:12 +0200]:
/usr/src/linux-2.4.21-low_latency/include/linux/atmdev.h: In function `atm_may_send': /usr/src/linux-2.4.21-low_latency/include/linux/atmdev.h:446: warning: comparison between signed and unsigned ambassador.c:301:21: pasting "." and "start" does not give a valid preprocessing token ambassador.c:305:23: pasting "." and "regions" does not give a valid preprocessing token ambassador.c:310:20: pasting "." and "data" does not give a valid preprocessing token
Was habe ich falsch gemacht, oder übersehen?
Gar nichts. Der Code macht an der Stelle (und ein paar anderen) einfach Sachen, die laut dem ISO C Standard nicht definiert sind. Gcc 3.2 hat die noch mit Warnung akzeptiert, aber seit gcc 3.3 wird solcher Code zurückgewiesen. Verwende 2.4.22, da ist zumindest der Code gefixt oder deaktiviere einfach die ganze ATM Unterstützung, denn die wirst du sicherlich nicht benötigen.
Philipp
Danke für den Tipp. Gibt es noch mehr böse Überraschungen mit dem Kernel oder den Modulen? Gruß Christian

Am Freitag, 19. September 2003 10:41 schrieb Christian Bunge:
Der Patch hat die Versionsnummer 2.4.20, also passend zum suse Kernel-Source.
Nein, Passend zum Vanilla 2.4.20er Kernel. Der SuSE Kernel hat ca. 20 MByte bzip comprimierte Patches mit drin. Mit einem Vanilla-Kernel hat er damit weniger gemein als ein 2.4.19er oder 2.4.21er Vanilla-Kernel.
Danke, ich werde es mir durchlesen und es mal mit dem Vanilla-Kernel probieren.
Ich hoffe, Du bist Dir auch bewusst, dass Du all die SuSE-Features mit dem Vanille-Kernel verlieren wirst. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de

On Friday 19 September 2003 22:19, Manfred Tremmel wrote:
Am Freitag, 19. September 2003 10:41 schrieb Christian Bunge:
Der Patch hat die Versionsnummer 2.4.20, also passend zum suse Kernel-Source.
Nein, Passend zum Vanilla 2.4.20er Kernel. Der SuSE Kernel hat ca. 20 MByte bzip comprimierte Patches mit drin. Mit einem Vanilla-Kernel hat er damit weniger gemein als ein 2.4.19er oder 2.4.21er Vanilla-Kernel.
Danke, ich werde es mir durchlesen und es mal mit dem Vanilla-Kernel probieren.
Ich hoffe, Du bist Dir auch bewusst, dass Du all die SuSE-Features mit dem Vanille-Kernel verlieren wirst.
Eigentlich schon, aber was sind die SuSE-Features?. Bisher ist mir nur bewusst, dass ich die ALSA-Module compilieren und den nvidia Treiber für die Grafikkarte einspielen muss. Noch ne Frage zu alsa, reicht es wenn ich die alsa-driver-0.9.6 compiliere und ansonsten die alsa-rpms alsa-0.9.6-0.pm.0.i586.rpm und alsa-devel-0.9.6-0.pm.0.i586.rpm von Packman installiere? Gruß Christian

Am Sonntag, 21. September 2003 00:32 schrieb Christian Bunge:
Eigentlich schon, aber was sind die SuSE-Features?.
Wenn Du das kernel-source Source-RPM installierst, gibts ein README in dem die Patches erleutert werden.
Bisher ist mir nur bewusst, dass ich die ALSA-Module compilieren und den nvidia Treiber für die Grafikkarte einspielen muss.
Der NVidia-Treiber ist ja auch beim SuSE-Kernel nicht enthalten. Mir persönlich reicht alsa, lm-sensors und der Bequemlichkeit halber das /proc/config.gz Zeugs. Für mein PowerBook hab ich mir einen entsprechenden 2.4.22er Kernel zusammengepatched.
Noch ne Frage zu alsa, reicht es wenn ich die alsa-driver-0.9.6 compiliere und ansonsten die alsa-rpms alsa-0.9.6-0.pm.0.i586.rpm und alsa-devel-0.9.6-0.pm.0.i586.rpm von Packman installiere?
Ja, je nach Bedarf noch das alsa-tools dazu, dann sollte das passen. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
participants (5)
-
Christian Bunge
-
David Haller
-
Manfred Tremmel
-
Philipp Thomas
-
Thomas Hertweck