diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-07-03 19:39:53 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-07-03 19:39:53 +0200 |
| commit | dee4dcba78baf712cab403d47d9db319ab7f95d6 (patch) | |
| tree | 418478faf06786701a56268672f73d6b0b4eb239 /results/classifier/zero-shot/105/socket/796202 | |
| parent | 4d9e26c0333abd39bdbd039dcdb30ed429c475ba (diff) | |
| download | qemu-analysis-dee4dcba78baf712cab403d47d9db319ab7f95d6.tar.gz qemu-analysis-dee4dcba78baf712cab403d47d9db319ab7f95d6.zip | |
restructure results
Diffstat (limited to 'results/classifier/zero-shot/105/socket/796202')
| -rw-r--r-- | results/classifier/zero-shot/105/socket/796202 | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/results/classifier/zero-shot/105/socket/796202 b/results/classifier/zero-shot/105/socket/796202 new file mode 100644 index 000000000..ca94772e6 --- /dev/null +++ b/results/classifier/zero-shot/105/socket/796202 @@ -0,0 +1,83 @@ +socket: 0.871 +instruction: 0.871 +graphic: 0.836 +other: 0.827 +boot: 0.813 +network: 0.805 +device: 0.803 +semantic: 0.794 +vnc: 0.793 +mistranslation: 0.694 +assembly: 0.558 +KVM: 0.478 + +Doing a 64 bit load from a 32 bit local APIC register is allowed + +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. + +On Sun, Jun 12, 2011 at 4:03 PM, Robert Uhl <email address hidden> wrote: +> 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). + +Thank you for the report. Currently QEMU devices only provide access +methods up to 32 bits, a 64 bit access is emulated with two 32 bit +accesses. So it is not possible to handle a 32 bit access differently +from a 64 bit one for now. + +So far this hasn't been considered to be a problem for x86, though it +is clearly not correct for Sparc and Alpha. This report shows that it +is necessary to add 64 bit access methods (or otherwise handle 64 bit +accesses more realistically) since x86 is also affected. + +Adding the 64 bit method would be a major refactoring though and there +are other designs possible. + + +Triaging old bug tickets ... can you somehow still reproduce this problem with the latest version of QEMU (currently v2.9), or could we close this ticket nowadays? + +[Expired for QEMU because there has been no activity for 60 days.] + |