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@novell.com>
Tested-by: Gang Wei <gang.wei@intel.com>
u8 dmar_host_address_width;
int ret = 0;
- dmar_table = table;
dmar = (struct acpi_table_dmar *)table;
if ( !iommu_enabled )
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);
}