[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: fix tboot after c/s 23013:65d26504e843 (ACPI cleanup)
# HG changeset patch # User Jan Beulich <jbeulich@xxxxxxxxxx> # Date 1301131804 0 # Node ID dd386a4b6595e1ee63acb7220f8884b7a8532b99 # Parent ef8dd40422c8e238ac4d4745c1bb2ecfb55ed3ca x86: fix tboot after c/s 23013:65d26504e843 (ACPI cleanup) TXT code calls acpi_parse_dmar() with a transient copy of the DMAR table, and hence storing the pointer for later reference was wrong. Obtain the pointer in acpi_dmar_init() instead. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> Tested-by: Gang Wei <gang.wei@xxxxxxxxx> --- diff -r ef8dd40422c8 -r dd386a4b6595 xen/drivers/passthrough/vtd/dmar.c --- a/xen/drivers/passthrough/vtd/dmar.c Sat Mar 26 08:27:41 2011 +0000 +++ b/xen/drivers/passthrough/vtd/dmar.c Sat Mar 26 09:30:04 2011 +0000 @@ -673,7 +673,6 @@ u8 dmar_host_address_width; int ret = 0; - dmar_table = table; dmar = (struct acpi_table_dmar *)table; if ( !iommu_enabled ) @@ -762,6 +761,13 @@ int __init acpi_dmar_init(void) { + unsigned long flags; + + /* Disabling IRQs avoids cross-CPU TLB flush in map_pages_to_xen(). */ + local_irq_save(flags); + acpi_get_table(ACPI_SIG_DMAR, 0, &dmar_table); + local_irq_restore(flags); + return parse_dmar_table(acpi_parse_dmar); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |