From: Jan Beulich Date: Fri, 23 Oct 2020 08:06:20 +0000 (+0200) Subject: x86/mm: avoid playing with directmap when self-snoop can be relied upon X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=f9c53bd9eeff5d93e63665d67265dd27155e905e;p=people%2Fpauldu%2Fxen.git 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 Acked-by: Roger Pau Monné --- 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; }