Page MenuHomeFreeBSD

D61226.1794114197.diff
No OneTemporary

Authored By
Unknown
Size
738 B
Referenced Files
None
Subscribers
None

D61226.1794114197.diff

Index: sys/amd64/vmm/amd/svm.c
===================================================================
--- sys/amd64/vmm/amd/svm.c
+++ sys/amd64/vmm/amd/svm.c
@@ -1996,10 +1996,13 @@
if (vcpu->asid.gen != asid[cpu].gen) {
alloc_asid = true; /* (c) and (d) */
} else if (vcpu->eptgen != eptgen) {
- if (flush_by_asid())
- ctrl->tlb_ctrl = VMCB_TLB_FLUSH_GUEST; /* (b1) */
- else
- alloc_asid = true; /* (b2) */
+ /*
+ * flush-by-asid doesn't reliably evict cached NPT walk
+ * state for addresses with no prior translation (e.g.
+ * bhyve UEFI bootrom execute faults); force a new ASID
+ * instead, as in the asidgen-mismatch case above.
+ */
+ alloc_asid = true;
} else {
/*
* This is the common case (a).

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 8, 5:03 AM (11 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41533576
Default Alt Text
D61226.1794114197.diff (738 B)

Event Timeline