Wo am besten Kernelbug mit ndiswrapper und RT Patch melden?

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Wo am besten Kernelbug mit ndiswrapper und RT Patch melden?

Beitrag von minimike » 11.08.2007 22:59:52

Habe noch nie einen Kernelbug verfast, wo sollte ich diesen am besten melden? Sobald ich mit "modprobe ndiswrapper" dieses Modul lade wird es mit folgender unten anstehender Dauermeldung unlustig. Kernel ist 2.6.21.6 mit dem Realtime Patch rt21.

Code: Alles auswählen

BUG: sleeping function called from invalid context softirq-timer/0(5) at kernel/rtmutex.c:613
in_atomic():1 [00000001], irqs_disabled():1

Call Trace:
 [<ffffffff8025f8ba>] __rt_spin_lock+0x27/0x48
 [<ffffffff884742e7>] :ndiswrapper:queue_kdpc+0x4b/0x177
 [<ffffffff88475565>] :ndiswrapper:timer_proc+0x1b/0x4a
 [<ffffffff8028c45d>] process_timeout+0x0/0x5
 [<ffffffff8847554a>] :ndiswrapper:timer_proc+0x0/0x4a
 [<ffffffff8028c0e5>] run_timer_softirq+0x67f/0x73b
 [<ffffffff80288a69>] ksoftirqd+0x14d/0x240
 [<ffffffff8028891c>] ksoftirqd+0x0/0x240
 [<ffffffff802309a6>] kthread+0xd1/0x101
 [<ffffffff80259f68>] child_rip+0xa/0x12
 [<ffffffff802308d5>] kthread+0x0/0x101
 [<ffffffff80259f5e>] child_rip+0x0/0x12

Error (END)
Ich möchte mich etwas mehr mit Musik und Jackd beschäftigen drumm der Realtimepatch. Helfen kann mir keiner aber vieleicht kann mann das für später fixen

Kernel.org wäre meiner Meinung nicht angebracht aber der Realtimepatch hat so viel ich weis keine eigene Liste. Oder sollte ich lieber bei denen vom NDISWRAPPER Projekt vorstellig werden?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Beitrag von Six » 12.08.2007 12:09:30

Wenn das Problem nur in Kombination auftritt, dann würde ich es beiden Seiten (RT, NDIS) melden. Irgendwo in den Quellen (meistens am Anfang) findest du mit Sicherheit eine E-Mail, die du kontaktieren kannst.
Be seeing you!

brummer
Beiträge: 182
Registriert: 19.02.2007 19:21:23

Beitrag von brummer » 12.08.2007 19:52:21

hallo

der bug ist bekannt, hier is nen kleiner patch von ingo molnar

http://www.mail-archive.com/linux-kerne ... 90067.html

gruß brummer

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 12.08.2007 22:50:30

Oh das ist schön zu Lesen :)!

Nur wie hole ich mir den Patch aus der Mail raus?

habe mit vim einr Datei namens fix.patch angelegt mit folgenden Zeilen.

Code: Alles auswählen

Index: linux-rt-rebase.q/drivers/net/atl1/atl1_main.c
===================================================================
--- linux-rt-rebase.q.orig/drivers/net/atl1/atl1_main.c
+++ linux-rt-rebase.q/drivers/net/atl1/atl1_main.c
@@ -1704,10 +1704,8 @@ static int atl1_xmit_frame(struct sk_buf
                }
        }
 
-       local_irq_save(flags);
-       if (!spin_trylock(&adapter->lock)) {
+       if (!spin_trylock_irqsave(&adapter->lock, flags)) {
                /* Can't get lock - tell upper layer to requeue */
-               local_irq_restore(flags);
                dev_printk(KERN_DEBUG, &adapter->pdev->dev, "tx locked\n");
                return NETDEV_TX_LOCKED;
        }
-
Irgendwas mach ich wohl verkehrt

Code: Alles auswählen

bitch:/usr/src/linux-headers-2.6.21.6-rt21-amd64/drivers/net/atl1# patch atl1_main.c /usr/src/fix.patch
missing header for unified diff at line 1 of patch
patching file atl1_main.c
Hunk #1 FAILED at 1704.
1 out of 1 hunk FAILED -- saving rejects to file atl1_main.c.rej
bitch:/usr/src/linux-headers-2.6.21.6-rt21-amd64/drivers/net/atl1#

Wie mache ich das richtig?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 12.08.2007 22:58:12

Funktioniert es wenn du die ersten beiden Zeilen weglässt?

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 12.08.2007 23:08:09

Code: Alles auswählen

--- linux-rt-rebase.q.orig/drivers/net/atl1/atl1_main.c
+++ linux-rt-rebase.q/drivers/net/atl1/atl1_main.c
@@ -1704,10 +1704,8 @@ static int atl1_xmit_frame(struct sk_buf
                }
        }

-       local_irq_save(flags);
-       if (!spin_trylock(&adapter->lock)) {
+       if (!spin_trylock_irqsave(&adapter->lock, flags)) {
                /* Can't get lock - tell upper layer to requeue */
-               local_irq_restore(flags);
                dev_printk(KERN_DEBUG, &adapter->pdev->dev, "tx locked\n");
                return NETDEV_TX_LOCKED;
        }
-
habe ich gemacht, klappt aber nicht
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 12.08.2007 23:25:43

Dann würde ich die Änderungen per Hand eintragen, danach kannst du ja einen funktionierenden Patch erstellen.

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 13.08.2007 00:44:46

also jede Zeile mit einem - soll weg und + wird hinzgefügt? Habe keine Ahnung davon und weis nicht wirklich was ich da gerade mache.
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 13.08.2007 01:00:26

Vorher

Code: Alles auswählen

	local_irq_save(flags);
	if (!spin_trylock(&adapter->lock)) {
		/* Can't get lock - tell upper layer to requeue */
		local_irq_restore(flags);
		printk(KERN_DEBUG "%s: TX locked\n", atl1_driver_name);
		return NETDEV_TX_LOCKED;
	}
Nachher

Code: Alles auswählen

	local_irq_save(flags);
	if (!spin_trylock_irqsave(&adapter->lock, flags)) {
                /* Can't get lock - tell upper layer to requeue */
	}

Ist das richtig? Denn ich verstehe nicht was das heist. Mir fehlt hierfür die Bildung
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 13.08.2007 01:47:05

Nur die Zeilen vor denen ein Minus steht müssen weg:
Vorher:

Code: Alles auswählen

local_irq_save(flags);
if (!spin_trylock(&adapter->lock)) {
      /* Can't get lock - tell upper layer to requeue */
      local_irq_restore(flags);
      printk(KERN_DEBUG "%s: TX locked\n", atl1_driver_name);
      return NETDEV_TX_LOCKED;
} 
Nachher:

Code: Alles auswählen

if (!spin_trylock_irqsave(&adapter->lock, flags)) {
      /* Can't get lock - tell upper layer to requeue */
      printk(KERN_DEBUG "%s: TX locked\n", atl1_driver_name);
      return NETDEV_TX_LOCKED;
} 

brummer
Beiträge: 182
Registriert: 19.02.2007 19:21:23

Beitrag von brummer » 13.08.2007 07:00:54

missing header for unified diff at line 1 of patch
ich würde sagen du nimst einfach die headerzeile dazu.

Code: Alles auswählen

 drivers/net/atl1/atl1_main.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Index: linux-rt-rebase.q/drivers/net/atl1/atl1_main.c
===================================================================
der patch ist der abschnitt ab dem --- zeichen bis zum -

gruß brummer

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Beitrag von minimike » 16.08.2007 05:59:31

Ich gebe die Sache auf, das artet in sinnloser Bastelei aus ohne aber jedoch ein positives Ergebnis zu erzielen. Ich habe ca 20 Stunden meiner Freizeit ohne Erfolg darin verbraten.und 16 mal den Kernel neu übersetzt

Anderer Kernel läuft anstatt diesem
Kernel 2.6.21.7
Con Kolivas CK1 Patch
Reiser4 Patch
Bootsplash Patch
Realtime LSM Modul
ALSA 1.0.14 Module
NDISWRAPPER Modules

Bei einer Latenz von einer Milisekunde habe ich zumindest mit Jackd eine CPU last von ca 20%. CPU und Arbeitsspeicher siehe Signatur
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 19.08.2007 21:38:00

OT:
du könntest auch die Realtime Rechte über PAM verwalten und auf realtime-lsm gänzlich verzichten

Gruß
gms

Antworten