|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/pagewalk: Remove opt_allow_superpage check from guest_can_use_l2_superpages()
commit 28d9a9a2d41759b9e5163037b759ac557aea767c
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Mon Jul 24 17:28:25 2017 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Tue Jul 25 18:48:37 2017 +0100
x86/pagewalk: Remove opt_allow_superpage check from
guest_can_use_l2_superpages()
The purpose of guest_walk_tables() is to match the behaviour of real
hardware.
A PV guest can have 2M superpages in its pagetables, via the M2P (and for
dom0
via the initial P2M), even if the guest isn't permitted to create arbitrary
2M
superpage mappings.
guest_can_use_l2_superpages() checking opt_allow_superpage is a piece of PV
guest policy enforcement, rather than its intended purpose of meaning "would
hardware tolerate finding an L2 superpage with these control settings?"
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Reviewed-by: Tim Deegan <tim@xxxxxxx>
Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
xen/include/asm-x86/guest_pt.h | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/xen/include/asm-x86/guest_pt.h b/xen/include/asm-x86/guest_pt.h
index 72126d5..08031c8 100644
--- a/xen/include/asm-x86/guest_pt.h
+++ b/xen/include/asm-x86/guest_pt.h
@@ -205,15 +205,17 @@ static inline guest_l4e_t guest_l4e_from_gfn(gfn_t gfn,
u32 flags)
static inline bool guest_can_use_l2_superpages(const struct vcpu *v)
{
/*
+ * PV guests use Xen's paging settings. Being 4-level, 2M
+ * superpages are unconditionally supported.
+ *
* The L2 _PAGE_PSE bit must be honoured in HVM guests, whenever
* CR4.PSE is set or the guest is in PAE or long mode.
* It's also used in the dummy PT for vcpus with CR0.PG cleared.
*/
- return (is_pv_vcpu(v)
- ? opt_allow_superpage
- : (GUEST_PAGING_LEVELS != 2
- || !hvm_paging_enabled(v)
- || (v->arch.hvm_vcpu.guest_cr[4] & X86_CR4_PSE)));
+ return (is_pv_vcpu(v) ||
+ GUEST_PAGING_LEVELS != 2 ||
+ !hvm_paging_enabled(v) ||
+ (v->arch.hvm_vcpu.guest_cr[4] & X86_CR4_PSE));
}
static inline bool guest_can_use_l3_superpages(const struct domain *d)
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |