kernel panic

Tomek Grzejszczyk T.Grzejszczyk w elka.pw.edu.pl
Pon, 23 Cze 2003, 16:48:55 CEST


Cześć,
	Piszę tutaj w ramach próby uzyskiwania pierwszej pomocy. Używam jądra 
2.4.20-8 z
ftp://ep09.kernel.pl/pub/People/cieciwa/Ra-2.4.20-8.i686_gcc2
Próbuję napisać driver do portu podczerwieni, metodą modyfikacji już 
instniejącego driver'a. Jak na razie doszedłem do kernel panic. 
Sekwencja wydarzeń wygląda tak:
-hotplug ładuje mój moduł do portu podczerwieni podłączonego po USB
-ifconfig irda0 up
-irattach irda0 -s (w zasięgu nie ma żadnego urządzenia IR) i tutaj:
	-wysłanie pakietu do urządzenia
	-wysłanie pakietu kontrolnego do urządzenia
	-urządzenie zaczyna odsyłać ramki pełne zer. Po odebraniu trzeciej takiej 
ramki (ciekawe że zawsze po trzeciej) następuje kernel panic z taką oto 
treścią:
----------------------
Bug at sched.c: 566!
invalid operand: 0000
CPU: 0
EIP: 0010 [<c01acda9>] Not tainted
EFLAGS: 0010286
...tutaj zawartość rejestrów...
Process swapper(pid:0, stacpage=c0143000)
Stack: ...
Call Trace: ...
Code: ...
<0> Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
-----------------------

Nie wiem jaka część tej informacji jest przydatna żeby zlokalizować 
bug'a. Zajrzałem do sched.c no i wychodzi na to że panic jest efektem 
wywołania scheduler'a w trakcie przerwania. Nie wiem teraz gdzie szukać 
błędu. Czy to ja wywołuję w moim module funkcję, której nie powinienem? 
Ale w takim razie dlaczego dopiero po trzeciej przychodzącej ramce pada? 
  A może błąd jest gdzieś poza moim kodem? Jak go zlokalizować/poprawić?
	Będę wdzięczny za sugestie dalszego postępowania, ewentualne porady i 
skierowania na właściwe listy dyskusyjne.

Pozdrawiam,
Tomek Grzejszczyk



Więcej informacji o liście dyskusyjnej pld-kernel