Mailing List Archive

[xen master] x86/mm: avoid playing with directmap when self-snoop can be relied upon
commit f9c53bd9eeff5d93e63665d67265dd27155e905e
Author: Jan Beulich <jbeulich@suse.com>
AuthorDate: Fri Oct 23 10:06:20 2020 +0200
Commit: Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Oct 23 10:06:20 2020 +0200

x86/mm: avoid playing with directmap when self-snoop can be relied upon

The set of systems affected by XSA-345 would have been smaller is we had
this in place already: When the processor is capable of dealing with
mismatched cacheability, there's no extra work we need to carry out.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/mm.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 6d2262a3f0..b2f35b3e7d 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -795,6 +795,9 @@ static int update_xen_mappings(unsigned long mfn, unsigned int cacheattr)
unsigned long xen_va =
XEN_VIRT_START + ((mfn - PFN_DOWN(xen_phys_start)) << PAGE_SHIFT);

+ if ( boot_cpu_has(X86_FEATURE_XEN_SELFSNOOP) )
+ return 0;
+
if ( unlikely(alias) && cacheattr )
err = map_pages_to_xen(xen_va, _mfn(mfn), 1, 0);
if ( !err )
@@ -802,6 +805,7 @@ static int update_xen_mappings(unsigned long mfn, unsigned int cacheattr)
PAGE_HYPERVISOR | cacheattr_to_pte_flags(cacheattr));
if ( unlikely(alias) && !cacheattr && !err )
err = map_pages_to_xen(xen_va, _mfn(mfn), 1, PAGE_HYPERVISOR);
+
return err;
}

--
generated by git-patchbot for /home/xen/git/xen.git#master