[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/2] x86/tboot: invalidate FIX_TBOOT_MAP_ADDRESS mapping after use



On Feb 18, 2015 17:03, Jan Beulich wrote:
> 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 <jbeulich@xxxxxxxx>
> 
> --- a/xen/arch/x86/tboot.c
> +++ b/xen/arch/x86/tboot.c
> @@ -138,6 +138,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
> @@ -476,6 +477,8 @@ int __init tboot_parse_dmar_table(acpi_t
>      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);
> 
>

It might be better to move the fixmap invalidations into tboot_copy_memory like 
below.

diff -r 37706d651593 xen/arch/x86/tboot.c
--- a/xen/arch/x86/tboot.c      Wed Mar 04 10:03:48 2015 +0100
+++ b/xen/arch/x86/tboot.c      Thu Mar 05 12:40:25 2015 +0800
@@ -88,6 +88,8 @@ static void __init tboot_copy_memory(uns
         }
         va[i] = map_addr[pa + i - (map_base << PAGE_SHIFT)];
     }
+
+    __set_fixmap(FIX_TBOOT_MAP_ADDRESS, 0, 0);
 }

 void __init tboot_probe(void)

Thanks
Jimmy


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.