Autor Thema: GPF bei allen interrupt beispielkerneln aus osdev tutorial reihe auf QEMU  (Gelesen 11761 mal)

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
Wenn ich den http://www.lowlevel.eu/wiki/Teil_5_-_Interrupts beispielkernel kompiliere und auf qemu laufen lasse bekomme ich ein paar Taktzyklen(25) nach dem GDT und IDT init einen Exception 13 General Protection Fault. Auf Virtual box läuft alles bestens.

...

Wieso? :?
Ich weiß leider nicht wo die qemu logdatei liegt.
« Letzte Änderung: 06. July 2012, 16:31 von Martin Erhardt »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
Vermutlich hast du einen Fehler gemacht. ;)

Interessant wäre zunächst einmal, ob der #GP ausgelöst wird, weil ein Hardware-Interrupt auftritt (z.B. Timer) oder ob dein Code schuld ist. Wenn du qemu mit -d int aufrufst, wird jeder Interrupt mitsamt CPU-Status zu diesem Zeitpunkt mitgeloggt (normal in /tmp/qemu.log). Auf jeden Fall solltest du dort den #GP sehen (v=0d). Der zugehörige Fehlercode (e=...) verrät in der Regel schonmal einiges. Ansonsten ist auch eip interessant, also die Instruktion, an der die Exception ausgelöst worden ist.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
Vermutlich hast du einen Fehler gemacht. ;)

Interessant wäre zunächst einmal, ob der #GP ausgelöst wird, weil ein Hardware-Interrupt auftritt (z.B. Timer) oder ob dein Code schuld ist. Wenn du qemu mit -d int aufrufst, wird jeder Interrupt mitsamt CPU-Status zu diesem Zeitpunkt mitgeloggt (normal in /tmp/qemu.log). Auf jeden Fall solltest du dort den #GP sehen (v=0d). Der zugehörige Fehlercode (e=...) verrät in der Regel schonmal einiges. Ansonsten ist auch eip interessant, also die Instruktion, an der die Exception ausgelöst worden ist.
mhm Eine datei qemu.log wird dann angelegt bleibt aber beim befehl "/usr/bin/qemu-system-x86_64 -cdrom /home/martin/Downloads/tutorial-28b2b4c/bootable.iso -d int" leer ich versuche jetzt ein floppy img zu nehmen.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
Benutzt du eventuell in Wirklichkeit ein qemu-kvm? Wenn ja, versuche es mal mit -no-kvm, KVM loggt diese ganzen Informationen leider nicht mit.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
Vielen Dank nicht nur das alles geloggt wird auch der Exception ist weg  :-D

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
Hm, gut, so war das eigentlich nicht gedacht, aber dir kann's ja recht sein...  :-D

Bei Gelegenheit muss ich mir das vielleicht mal näher anschauen. Mit meinem installierten qemu-kvm bekomme ich auch den #GP, interessanterweise aber mit meinem "normalen" qemu (relativ aktuelle git-Version) auch mit -enable-kvm nicht.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
Ich bekomme den Exception auch nicht mehr mit dem parameter -no-kvm-irqchip. Offenbar ist das Problem lediglich, dass qemu diesen irq chip simuliert. Der bei dir anscheinend standardmäßig von qemu emuliert wird.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
Interessant. Theoretisch sollte das keinen Unterschied machen, das ist also entweder ein Bug im Kernel-PIC oder im Userspace-PIC.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen