Ticket #28637

QEMU上でTinyVisorを動かすと、Guest Linux の起動中にパニック

Eröffnet am: 2012-06-03 23:35 Letztes Update: 2013-11-23 19:24

Auswertung:
Verantwortlicher:
Typ:
Status:
Geschlossen
Komponente:
(Keine)
Meilenstein:
(Keine)
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine

Details

QEMU上でTinyVisorを動かすと、Guest Linux の起動中にパニックしました。 VMMが割り込みを有効化した時に、ベクタ0の割り込みが発生してしまったようです。

障害発生リビジョン: trunk の r37

CPU0 panic : Fatal interrupt in VMM: 0x00 Divide Error Exception (#DE)
CR0: 0x80000019  CR2: 0x00000000  CR3: 0x17D4E000  CR4: 0x00000020
RSP on interrupt: 0x4031FDD8  Stack information:
  +00  Error code / RIP    : 0x40108F25  +32  RSP        / SS     : 0x00000058
  +08  RIP        / CS     : 0x00000050  +40  SS         /        : 0x4031FF90
  +16  CS         / RFLAGS : 0x00007246  +48             /        : 0x40126D0D
  +24  RFLAGS     / RSP    : 0x4031FE08  +56             /        : 0x4031FE70
RAX: 0x00000000  RCX: 0x81001000  RDX: 0x402EBD80  RBX: 0x40325000
RSP: 0x4031FD80  RBP: 0x4031FF90  RSI: 0x00000000  RDI: 0x00004000
R8:  0x0000002C  R9:  0x0000000A  R10: 0x00000004  R11: 0x81551A60
R12: 0x4031FF28  R13: 0x40330000  R14: 0x4031FF5E  R15: 0x4031FEC0
ES: 0x0058  CS: 0x0050  SS: 0x0058  DS: 0x0058  FS: 0x0058  GS: 0x0080
VMM state of CPU0---- --------------------------
RAX 00000031    RCX 00000000    RDX 00000000    RBX 401434B8
RSP 4031FA20    RBP 4031FC70    RSI 00000001    RDI 00000000
R8  4011E810    R9  00000000    R10 00000000    R11 00000000
R12 4031FD20    R13 4031FC80    R14 4031FF5E    R15 4031FEC0
CR0 80000019    CR2 00000000    CR3 17D4E000    CR4 00000020
RFLAGS 00003006  GDTR 402EBD80+000000FF  IDTR 4019F540+00001000
backtrace:
    0x4031fa18: 0x4011cb67
    0x4031fc78: 0x4011d348
    0x4031fcd8: 0x40112d10
    0x4031fcf8: 0x40112e13
    0x4031fd18: 0x401173a7
    0x4031ff98: 0x40118239
    0x4031ffc8: 0x4012535d
    0x4031fff8: 0x0
------------------------------------------------
Guest state of CPU0 ----------------------------
RAX 00000000    RCX 00000003    RDX 000003F9    RBX FFFFFFFF81551A5A
RSP FFFFFFFF8142FDC8    RBP 00000000    RSI 000003F8    RDI FFFFFFFF81551A58
R8  0000002C    R9  0000000A    R10 00000004    R11 81551A60
R12 FFFFFFFF81551A54    R13 FFFFFFFF81551A60    R14 00000046    R15 FFFFFFFF813A1518
CR0 80050033    CR2 00000000    CR3 01001000    CR4 000000A0
ACR   ES 0000C093 CS 0000A09B SS 0000C093 DS 0000C093 FS 0000C093 GS 0000C093
LIMIT ES FFFFFFFFFFFFFFFF CS FFFFFFFFFFFFFFFF SS FFFFFFFFFFFFFFFF DS FFFFFFFFFFFFFFFF FS FFFFFFFFFFFFFFFF GS FFFFFFFFFFFFFFFF
BASE  ES 00000000 CS 00000000 SS 00000000 DS 00000000 FS 00000000 GS FFFFFFFF81505000
SEL   ES 00000018 CS 00000010 SS 00000018 DS 00000018 FS 00000018 GS 00000018
RIP FFFFFFFF8152C913  RFLAGS 00000046  GDTR FFFFFFFF81509000+0000007F  IDTR FFFFFFFF815F0000+00000FFF
EFER 00001D01
VMCB 0x40325000 (phys 17F25000)
EXITCODE: 123=0x7B (VMEXIT_IOIO)
EXITINFO1 03F90010  EXITINFO2 FFFFFFFF8152C913  EXITINTINFO 00000000
------------------------------------------------
Sending NMI to other CPUs
The first panic occured on CPU0 : Fatal interrupt in VMM: 0x00 Divide Error Exception (#DE)
Starting shell.
(gdb) list *0x40108F25
0x40108f25 is in enable_interrupt (cpu.c:86).
81              if (currentcpu_available()) {
82                      if ( --currentcpu->disable_interrupt == 0) {
83                              asm_sti();
84                      }
85              }
86      }
87
88      void
89      disable_interrupt(void)
90      {

関連チケット: #28386

Ticket-Verlauf (3/6 Historien)

2012-06-03 23:35 Aktualisiert von: yuichi_xy
  • New Ticket "QEMU上でTinyVisorを動かすと、Guest Linux の起動中にパニック" created
2012-06-04 22:22 Aktualisiert von: yuichi_xy
Kommentar

yuichi_xy への返信

Guest state of CPU0 ---------------------------- RAX 00000000 RCX 00000003 RDX 000003F9 RBX FFFFFFFF81551A5A RSP FFFFFFFF8142FDC8 RBP 00000000 RSI 000003F8 RDI FFFFFFFF81551A58 R8 0000002C R9 0000000A R10 00000004 R11 81551A60 R12 FFFFFFFF81551A54 R13 FFFFFFFF81551A60 R14 00000046 R15 FFFFFFFF813A1518 CR0 80050033 CR2 00000000 CR3 01001000 CR4 000000A0

RDXに000003f9という値が入っているので、シリアルポートが関連している可能性があります。 そこで、Guest Linuxのブートパラメータからconsole=ttyS0,115200とearlyprintk=ttyS0,115200を削除してみたところ、 Guest Linuxが「Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled」というメッセージを出力するまで、先に進みました。

2012-06-05 21:49 Aktualisiert von: yuichi_xy
Kommentar

シリアルエミュレータから I/O APIC エミュレータを経由してベクタ 0 の割り込みを vm0 に Inject してしまうことが原因でした。 r38 で修正しました。

2012-06-05 21:50 Aktualisiert von: yuichi_xy
  • Details Updated
2012-06-07 22:41 Aktualisiert von: yuichi_xy
  • Status Update from Offen to Geschlossen
  • Ticket Close date is changed to 2012-06-07 22:41
Kommentar

本バグを修正したところ、Guest Linuxの起動が先に進みましたが、udevの起動中にストールしました。 #28662を発行しましたので、本チケットはcloseします。

2013-11-23 19:24 Aktualisiert von: yuichi_xy
  • Lösung Update from Keine to Gefixt

Dateianhangliste

Keine Anhänge

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden