uint32_t pcie_serr_disable_flag = 0; /* Disable SERR */
In einem Kommentar wird erwähnt das bei aktiviertem SERR eventuell ein NMI entsteht (welcher aber nicht behandelt wird). Jetzt wollen wir den Inhalt dieser Variable also auf 1 haben damit SERR deaktiviert wird und wir den NMI los sind. Dazu nehmen wir den Kerneldebugger. Durch einfaches Anhängen von -kd im Kerneleintrag von Grub landet man gleich zu Anfang am Debugprompt. Wir wollen jetzt zu dem Punkt springen an dem unser pcie Modul geladen wird, das erreichen wir indem wir dem Debugger sagen das es an diesem Punkt halten soll.
::bp pcie`_init
::cont
Damit wird ein so genannter Breakpoint gesetzt. Wird dieser erreicht halten wir an und gelangen wieder an den Prompt. ::cont sagt dem Debugger einfach
das das Programm weiterlaufen soll.
Wir erreichen nun unseren Breakpoint. Jetzt können wir den Inhalt unserer Variable einfach mit
pcie_serr_disable_flag/W 1
auf 1 setzen und mit ::cont weiterbooten ohne das der NMI auftaucht.
Praktische Sache oder? ;)
Keine Kommentare:
Kommentar veröffentlichen