diff options
author | Tony Luck <tony.luck@intel.com> | 2008-10-17 13:52:22 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2008-10-17 13:52:22 -0700 |
commit | fe393164c529f72def1952fb66c11732d0984d78 (patch) | |
tree | 56e4425988e90cb9608e95844f577cd18009618c /arch/ia64/kernel/acpi.c | |
parent | 22ca532a4d137545244fdff0b687325fd4e13eae (diff) | |
parent | 62fdd7678a26efadd6ac5c2869543caff77d2df0 (diff) |
Pull vtd-iommu into release branch
Conflicts:
arch/ia64/kernel/acpi.c
Diffstat (limited to 'arch/ia64/kernel/acpi.c')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 00936491933..0635015d0aa 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c @@ -92,6 +92,9 @@ acpi_get_sysname(void) struct acpi_table_rsdp *rsdp; struct acpi_table_xsdt *xsdt; struct acpi_table_header *hdr; +#ifdef CONFIG_DMAR + u64 i, nentries; +#endif rsdp_phys = acpi_find_rsdp(); if (!rsdp_phys) { @@ -126,6 +129,18 @@ acpi_get_sysname(void) return "xen"; } +#ifdef CONFIG_DMAR + /* Look for Intel IOMMU */ + nentries = (hdr->length - sizeof(*hdr)) / + sizeof(xsdt->table_offset_entry[0]); + for (i = 0; i < nentries; i++) { + hdr = __va(xsdt->table_offset_entry[i]); + if (strncmp(hdr->signature, ACPI_SIG_DMAR, + sizeof(ACPI_SIG_DMAR) - 1) == 0) + return "dig_vtd"; + } +#endif + return "dig"; #else # if defined (CONFIG_IA64_HP_SIM) @@ -142,6 +157,8 @@ acpi_get_sysname(void) return "dig"; # elif defined (CONFIG_IA64_XEN_GUEST) return "xen"; +# elif defined(CONFIG_IA64_DIG_VTD) + return "dig_vtd"; # else # error Unknown platform. Fix acpi.c. # endif |