From b9654f9dcbd4bc5bcc61251dc1a2a20fed7867a2 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 12 Mar 2015 14:20:52 +0100 Subject: [PATCH] x86/tboot: invalidate FIX_TBOOT_MAP_ADDRESS mapping after use In order for commit cbeeaa7d ("x86/nmi: fix shootdown of pcpus running in VMX non-root mode")'s re-use of that fixmap entry to not cause undesirable (in crash context) cross-CPU TLB flushes, invalidate the fixmap entry right after use. Signed-off-by: Jan Beulich master commit: 375a09cffacff820e025c65d0cdfbd403ecb30cc master date: 2015-03-04 09:59:47 +0100 --- xen/arch/x86/tboot.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c index ccde4a0447..9fb3f19c74 100644 --- a/xen/arch/x86/tboot.c +++ b/xen/arch/x86/tboot.c @@ -140,6 +140,7 @@ void __init tboot_probe(void) TXT_PUB_CONFIG_REGS_BASE + TXTCR_SINIT_BASE); tboot_copy_memory((unsigned char *)&sinit_size, sizeof(sinit_size), TXT_PUB_CONFIG_REGS_BASE + TXTCR_SINIT_SIZE); + __set_fixmap(FIX_TBOOT_MAP_ADDRESS, 0, 0); } /* definitions from xen/drivers/passthrough/vtd/iommu.h @@ -477,6 +478,8 @@ int __init tboot_parse_dmar_table(acpi_table_handler dmar_handler) dmar_table_raw = xmalloc_array(unsigned char, dmar_table_length); tboot_copy_memory(dmar_table_raw, dmar_table_length, pa); dmar_table = (struct acpi_table_header *)dmar_table_raw; + __set_fixmap(FIX_TBOOT_MAP_ADDRESS, 0, 0); + rc = dmar_handler(dmar_table); xfree(dmar_table_raw);