Public bug reported: Doing
u64 lapic_idregister = (u64) fix_to_virt(FIX_APIC_BASE) + 0x20; and later in an interrupt handler movq (lapic_idregister), %rcx movq (%rcx), %rcx in a linux kernel module works in qemu 0.13.91 but not on real hardware (it simply reboots). On real hardware only movl (%rcx), %ecx works (also in qemu). Commandline: qemu-system-x86_64 \ -kernel $LINUXDIR/arch/x86_64/boot/bzImage \ -hda $BUILDROOTDIR/output/images/rootfs.ext2 \ -append "root=/dev/sda rw rootfstype=ext2 maxcpus=4" \ -cpu phenom \ -smp 4 \ -gdb tcp::1234 \ -net nic -net user Guest: Vanilla Linux Kernel 2.6.37.6 64-bit with buildroot Mikael Pettersson from the linux kernel mailinglist told me it's an accepts-invalid bug in qemu. ** Affects: qemu Importance: Undecided Status: New -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/796202 Title: Doing a 64 bit load from a 32 bit local APIC register is allowed Status in QEMU: New Bug description: Doing u64 lapic_idregister = (u64) fix_to_virt(FIX_APIC_BASE) + 0x20; and later in an interrupt handler movq (lapic_idregister), %rcx movq (%rcx), %rcx in a linux kernel module works in qemu 0.13.91 but not on real hardware (it simply reboots). On real hardware only movl (%rcx), %ecx works (also in qemu). Commandline: qemu-system-x86_64 \ -kernel $LINUXDIR/arch/x86_64/boot/bzImage \ -hda $BUILDROOTDIR/output/images/rootfs.ext2 \ -append "root=/dev/sda rw rootfstype=ext2 maxcpus=4" \ -cpu phenom \ -smp 4 \ -gdb tcp::1234 \ -net nic -net user Guest: Vanilla Linux Kernel 2.6.37.6 64-bit with buildroot Mikael Pettersson from the linux kernel mailinglist told me it's an accepts-invalid bug in qemu. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/796202/+subscriptions