summary refs log tree commit diff stats
path: root/results/classifier/zero-shot/118/debug/1699867
blob: 99fcf8ed7b69121686c908ef6ca5c40bf79d0fed (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
x86: 0.987
architecture: 0.974
debug: 0.974
graphic: 0.948
boot: 0.943
device: 0.905
performance: 0.878
socket: 0.842
kernel: 0.828
ppc: 0.822
files: 0.769
permissions: 0.752
network: 0.724
user-level: 0.724
semantic: 0.711
KVM: 0.694
assembly: 0.683
hypervisor: 0.671
register: 0.668
peripherals: 0.664
PID: 0.631
mistranslation: 0.590
vnc: 0.564
VMM: 0.548
arm: 0.545
risc-v: 0.540
TCG: 0.487
i386: 0.342
virtual: 0.257

x86_64 qemu crashes at far call into long-mode

I am experimenting with this OS https://github.com/phil-opp/blog_os and spotted a weird behavior with qemu.

I am looking at code that does transition from 32bit mode to 64bit mode. Right now it does 'jmp $SELECTOR,64bitfunction'. https://github.com/phil-opp/blog_os/blob/557c6a58ea11e31685b9d014d307002d64df5c22/src/arch/x86_64/boot.asm#L32

This code works fine with qemu/kvm/vmware.

To transition from 32 to 64 bit code it is possible to use 'call' operation. So I am trying to replace that code with 'call $SELECTOR,64bitfunction'. It works fine with kvm and wmware. But it fails with Qemu emulation. See the interrup debug log attached. qemu crashes at 10302c (far call mnemonic).


  103016:       e8 18 00 00 00          callq  103033 <set_up_page_tables>
  10301b:       e8 5c 00 00 00          callq  10307c <enable_paging>
  103020:       e8 ec 00 00 00          callq  103111 <set_up_SSE>
  103025:       0f 01 15 28 00 10 00    lgdt   0x100028(%rip)        # 203054 <GCC_except_table2+0xdb5f8>
  10302c:       9a                      (bad)  
  10302d:       40 31 10                rex xor %edx,(%rax)
  103030:       00 08                   add    %cl,(%rax)


As the code works at hardware I expect it to work with qemu. Thus current qemu behavior looks like a bug.



The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now.
If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience.

[Expired for QEMU because there has been no activity for 60 days.]