Opened 18 years ago
Closed 11 years ago
#748 closed bug (invalid)
kernel-kqemu pagefault with interrupts disabled
Reported by: | Owned by: | axeld | |
---|---|---|---|
Priority: | low | Milestone: | R1 |
Component: | System/Kernel | Version: | R1/Development |
Keywords: | Cc: | diver, umccullough, luroh | |
Blocked By: | Blocking: | ||
Platform: | x86 |
Description
When using the kqemu accelerator for qemu under Linux with a recent disk image (Downloaded yesterday from haikuhost) there is a reproducible pagefault generated while interrupts are disabled. This may be a problem with kqemu as the 'normal' qemu works fine.
I am using qemu 0.8.2, kqemu 1.3.0_pre9 on Linux kernel version 2.6.17-gentoo-hrev4
Serial debug output follows:
danny@gim ~/Desktop $ qemu -kernel-kqemu -serial stdio -hda haiku.image APM version 1.2 available, flags 3. smp_probe: entry base 0x9fc00, limit 0xa0000 smp_probe: entry base 0xf0000, limit 0x100000 VESA version = 200 oem string: VGABIOS Cirrus extension Welcome to the Haiku boot loader! legacy base address 1f0 ATA device, master number of drives: 1 boot partition offset: 0 load kernel... unhandled pheader type 0x6 unhandled pheader type 0x3 kernel entry at 80027ce0 Welcome to kernel debugger output! vm_mark_page_range_inuse: page 0x9f in non-free state 7! apm_init()
code32: 0xf000, 0x9cb2, length 0xfff0 code16: 0xf000, length 0xfff0 data: 0xf000, length 0xfff0
PANIC: page fault, but interrupts were disabled. Touching address 0x09b7e1d0 from eip 0x8002ba17
Welcome to Kernel Debugging Land... Running on CPU 0 kdebug> sc stack trace for thread 0x1 "idle thread 1"
kernel stack: 0x80101000 to 0x80104000
frame caller <image>:function + offset 80103d84 (+ 48) 800773a1 <kernel>:kernel_debugger_loop + 0x0109 80103db4 (+ 32) 80077dde <kernel>:kernel_debugger + 0x009a 80103dd4 (+ 176) 80077d3a <kernel>:panic + 0x0036 80103e84 (+ 160) 8007d008 <kernel>:i386_handle_trap + 0x0168 iframe at 0x80103f2c (end = 0x80103f80)
eax 0x9b7e174 ebx 0x1 ecx 0x8002e669 edx 0x17 esi 0x848e edi 0x30004400 ebp 0x80103fa0 esp 0x80103f5c eip 0x8002ba17 eflags 0x210096 vector: 0xe, error code: 0x0
80103f24 (+ 124) 8002ba17 <kernel>:scheduler_reschedule + 0x000f 80103fa0 (+ 48) 8002bc60 <kernel>:scheduler_start + 0x0020 80103fd0 (+ 32) 80027f23 <kernel>:_start + 0x0243 kdebug>
Change History (13)
comment:1 by , 18 years ago
Cc: | added |
---|
comment:2 by , 18 years ago
Platform: | → All |
---|
comment:3 by , 18 years ago
Cc: | added |
---|
comment:4 by , 18 years ago
Platform: | All → x86 |
---|
comment:5 by , 18 years ago
I've just managed to kill my installation of kqemu. It's not impossible that I've mucked up some aspect of my previous kqemu install (Especially seeing it's Gentoo and qemu has funny GCC requirements). So, I'll try to run it under the next installation of Ubuntu I have access to, but until then it's probably safe to assume it's a fault on my end. Sorry.
comment:6 by , 18 years ago
kqemu works for me in _user_ mode only. Running kernel code with kqemu fails with the same error.
load kernel... unhandled pheader type 0x6 unhandled pheader type 0x3 kernel entry at 80027e10 Welcome to kernel debugger output! vm_mark_page_range_inuse: page 0x9f in non-free state 7! apm_init()
code32: 0xf000, 0x9cb2, length 0xfff0 code16: 0xf000, length 0xfff0 data: 0xf000, length 0xfff0
PANIC: page fault, but interrupts were disabled. Touching address 0x09b957b8 from eip 0x8002bb67
comment:7 by , 18 years ago
Same results here, can use QEMU in "user" mode, attempting to use the kqemu accelerator module fails. This is on a Slackware 11.0 install that is completely stock with the exceptions qemu/kqemu and kernel version 2.6.19
APM version 1.2 available, flags 3. smp_probe: entry base 0x9fc00, limit 0xa0000 smp_probe: entry base 0xf0000, limit 0x100000 VESA version = 200 oem string: VGABIOS Cirrus extension Welcome to the Haiku boot loader! legacy base address 1f0 ATA device, master number of drives: 1 add_partitions_for(0x001041cc, mountFS = no) add_partitions_for(fd = 0, mountFS = no) Partition::Scan() check for partitioning_system: Amiga Partition Map check for partitioning_system: Intel Partition Map intel: pm_identify_partition(1, 1065628: 0, 120586240, 512) Partition::SetTo(): active: 6f intel: _ParsePrimary(): partition 0: bad location, ignoring Partition::SetTo(): active: 74 Partition::SetTo(): active: 0 Partition::SetTo(): active: 0 check for partitioning_system: Intel Extended Partition check for partitioning_system: Apple Partition Map boot partition offset: 0 check for file_system: BFS Filesystem load kernel... unhandled pheader type 0x6 unhandled pheader type 0x3 kernel entry at 80027e40 Welcome to kernel debugger output! vm_mark_page_range_inuse: page 0x9f in non-free state 7! apm_init() code32: 0xf000, 0x9cb2, length 0xfff0 code16: 0xf000, length 0xfff0 data: 0xf000, length 0xfff0 PANIC: page fault, but interrupts were disabled. Touching address 0x0000005d from eip 0x8002bb97 Welcome to Kernel Debugging Land... Running on CPU 0 kdebug> sc stack trace for thread 0x1 "idle thread 1" kernel stack: 0x80101000 to 0x80104000 frame caller <image>:function + offset 80103d84 (+ 48) 80078741 <kernel>:kernel_debugger_loop + 0x0109 80103db4 (+ 32) 8007917e <kernel>:kernel_debugger + 0x009a 80103dd4 (+ 176) 800790da <kernel>:panic + 0x0036 80103e84 (+ 160) 8007e528 <kernel>:i386_handle_trap + 0x0168 iframe at 0x80103f2c (end = 0x80103f80) eax 0x1 ebx 0x1 ecx 0x8002e809 edx 0xb esi 0x848e edi 0x30005400 ebp 0x80103fa0 esp 0x80103f5c eip 0x8002bb97 eflags 0x210096 vector: 0xe, error code: 0x0 80103f24 (+ 124) 8002bb97 <kernel>:scheduler_reschedule + 0x000f 80103fa0 (+ 48) 8002bde0 <kernel>:scheduler_start + 0x0020 80103fd0 (+ 32) 80028083 <kernel>:_start + 0x0243 kdebug>
comment:8 by , 18 years ago
accidentally added a duplicate ticket for this issue: Ticket #1246 same problem on latest haiku image.
comment:10 by , 17 years ago
Summary: | kqemu pagefault with interrupts disabled → kernel-kqemu pagefault with interrupts disabled |
---|
Please note that this actually is an issue with "--kernel-kqemu". When you have kqemu installed and use QEMU then it will always use kqemu to emulate user code (CPL=3). Emulating kernel code using kqemu has to be enabled separately by "--kernel-kqemu" and causes this crash. It is caused by some kind of wrong handling of the debug registers which Haiku uses to store its current thread (dr3 to be exact). I tracked that down for the kqemu for BeOS, disabling kqemu handling for getting/setting debug registers will let Haiku boot.
comment:11 by , 17 years ago
Cc: | added; removed |
---|
comment:12 by , 17 years ago
Cc: | added |
---|
comment:13 by , 11 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Version: | → R1/Development |
I'm closing this one as no longer valid as kqemu was deprecated and removed from qemu releases years ago.
I can confirm here that qemu-0.8.2-windows and kqemu-1.3.0pre9 under Windows XP works without error (as reported by another user in the forums also). This problem must be specific to kqemu under Linux.