Opened 13 years ago

Closed 5 years ago

#748 closed bug (invalid)

kernel-kqemu pagefault with interrupts disabled

Reported by: danny@… Owned by: axeld
Priority: low Milestone: R1
Component: System/Kernel Version: R1/Development
Keywords: Cc: diver, umccullough, luroh
Blocked By: Blocking:
Has a Patch: no 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 diver, 13 years ago

Cc: diver added

comment:2 by umccullough, 13 years ago

Platform: All

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.

comment:3 by umccullough, 13 years ago

Cc: umccullough added

comment:4 by umccullough, 13 years ago

Platform: Allx86

comment:5 by eNGIMa, 13 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 elmo, 13 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 hollywoodb, 13 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 netster403, 13 years ago

accidentally added a duplicate ticket for this issue: Ticket #1246 same problem on latest haiku image.

comment:10 by mmlr, 12 years ago

Summary: kqemu pagefault with interrupts disabledkernel-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 umccullough, 12 years ago

Cc: umccullough added; umccullough@… removed

comment:12 by luroh, 12 years ago

Cc: luroh added

comment:13 by luroh, 5 years ago

Resolution: invalid
Status: newclosed
Version: R1/Development

I'm closing this one as no longer valid as kqemu was deprecated and removed from qemu releases years ago.

Note: See TracTickets for help on using tickets.