Mój system to CentOS 6.3
(z uruchomioną wersją jądra 2.6.32-279.el6.x86_64
).Linux utknął w soft lockup CPU?
Mam ładowalny moduł jądra, który jest sterownikiem, który zarządza kartą PCIe. Jeśli ręcznie włożę sterownik za pomocą insmod
, gdy system operacyjny jest uruchomiony, sterownik ładuje się pomyślnie i działa.
Jednakże, jeśli spróbuję zainstalować sterownik przy użyciu rpm, a następnie ponownie uruchomić system, podczas uruchamiania system operacyjny zostaje zablokowany wypluwając następujący komunikat "soft lockup" dla WSZYSTKICH rdzeni procesora, z wyjątkiem jednego rdzenia, który jest w " soft lockup "w jednym z wątków stworzonych przez mojego kierowcę.
BUG: soft lockup - CPU#X stuck for 67s! [migration/8:36]
.......(same above message for all cores except one)
BUG: soft lockup - CPU#10 stuck for 67s! [mydriver_thread/8:36]
(one core is locked up in one of the threads in my driver).
Przeszukałem net trochę za info o tym kernel/msg bug, i istnieje sporo postów o tym, nikt na co go wywołuje i jak do debugowania. Każda pomoc z następującymi pytaniami naprawdę być docenione:
nie jestem w stanie zalogować się do systemu, myślę, że to dlatego, że wszystkie rdzenie są w „miękki blokowaniem” państwa, a tym samym nie może wywołać jądra zrzutu z wiersza powłoki. Włączyłem SysRq i spróbowałem wyzwolić zrzut jądra z kombinacją klawiszy SysRq, ale bez powodzenia. Wygląda na to, że system nie reaguje na klawiaturę (nawet nie reaguje na przycisk CapsLock). Jakieś sugestie, w jaki sposób mogę wywołać zrzut jądra w takich okolicznościach?
Potrafię sobie wyobrazić prawdopodobnie wątek sterownika powodujący "miękką blokadę". Ale w jaki sposób wątek "migracja" (wątek jądra) może być "miękką blokadą" tylko z powodu mojego sterownika?
Od przeglądania sieci wątek "migracja" służy do przenoszenia zadań z jednego procesora na drugi. Czy ktoś może mi pomóc zrozumieć, co dokładnie robi ten wątek? I jak to może wpłynąć na inne wątki, jeśli w ogóle.
Byłoby bardzo pomocne, gdybyś mógł pokazać nam ślady stosu. – cdleonard
Problem z ponownym uruchomieniem sprawia, że myślę o wielu problemach, które moduły ładowały oprogramowanie układowe, gdy nie ma oprogramowania układowego. Czy sterownik próbuje załadować z początkowego ramdysku? Czy wymaga oprogramowania sprzętowego i nie otrzymuje go? Czy twój sterownik zapętla się podczas inicjalizacji i wyłapuje wszystkie wątki kolejki pracy czy coś takiego? –
@cdleonard Na ekranie nie ma odwrotu. Otrzymuję tylko szesnaście linii tego samego komunikatu jądra ("BUG: soft lockup .....") dla każdego z szesnastu rdzeni w systemie. Jedna z tych wiadomości dotyczy rdzenia zajęty wątkiem od mojego sterownika, a reszta rdzenia utknęła z wątkiem migracji. –