blob: 6bb1ddb6b2974cc2989e389f4ec18e0705dbca48 (
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
|
device: 0.754
KVM: 0.743
architecture: 0.736
hypervisor: 0.712
performance: 0.710
graphic: 0.691
ppc: 0.620
semantic: 0.603
user-level: 0.572
files: 0.572
register: 0.564
i386: 0.552
x86: 0.548
kernel: 0.543
network: 0.537
mistranslation: 0.530
permissions: 0.505
socket: 0.503
peripherals: 0.500
debug: 0.468
boot: 0.466
vnc: 0.453
risc-v: 0.448
PID: 0.446
virtual: 0.432
TCG: 0.418
VMM: 0.416
arm: 0.403
assembly: 0.311
hv-tlbflush malfunctions on Intel host CPUs with neither EPT nor VPID (qemu-kvm)
Enabling hv-tlbflush on older hosts using Intel CPUs supporting VT-x but neither EPT nor VPID will lead to bluescreens on the guest.
It seems KVM only checks if EPT is available, and if it isn't it forcibly uses VPID. If that's *also* not available, it defaults to basically a no-op hypercall, though windows is expecting the TLB to be flushed.
hv-tlbflush is pretty useless on machines not supporting these extensions anyway (only reasonably fix I can see would be to flush the *entire* TLB on tlbflush hypercall in KVM (i.e. a kernel fix), but that would remove any performance benefits), so I would suggest some kind of preliminary check and warning/error if hv-tlbflush is specified on such a host.
All CPUs mentioned in this thread[0] are confirmed to be affected by the bug, and I have successfully reproduced it on an Intel Core2Duo E8500.
[0] https://forum.proxmox.com/threads/windows-guest-bluescreen-with-proxmox-6.56053/
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 please 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.]
|