aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/intel-iommu.c
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2009-08-26 09:25:41 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-08-26 09:25:41 -0400
commit2ff729f5445cc47d1910386c36e53fc6b1c5e47a (patch)
treeb94951ac7215f36399395e0e1f34374251bc0d11 /drivers/pci/intel-iommu.c
parent94a91b5051a77d8a71d4f11a3240f0d9c51b6cf2 (diff)
intel-iommu: Cope with yet another BIOS screwup causing crashes
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/pci/intel-iommu.c')
-rw-r--r--drivers/pci/intel-iommu.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index beb5ccfd89bd..d36fa80aaa52 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -1974,6 +1974,17 @@ static int iommu_prepare_identity_map(struct pci_dev *pdev,
1974 printk(KERN_INFO 1974 printk(KERN_INFO
1975 "IOMMU: Setting identity map for device %s [0x%Lx - 0x%Lx]\n", 1975 "IOMMU: Setting identity map for device %s [0x%Lx - 0x%Lx]\n",
1976 pci_name(pdev), start, end); 1976 pci_name(pdev), start, end);
1977
1978 if (end >> agaw_to_width(domain->agaw)) {
1979 WARN(1, "Your BIOS is broken; RMRR exceeds permitted address width (%d bits)\n"
1980 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
1981 agaw_to_width(domain->agaw),
1982 dmi_get_system_info(DMI_BIOS_VENDOR),
1983 dmi_get_system_info(DMI_BIOS_VERSION),
1984 dmi_get_system_info(DMI_PRODUCT_VERSION));
1985 ret = -EIO;
1986 goto error;
1987 }
1977 1988
1978 ret = iommu_domain_identity_map(domain, start, end); 1989 ret = iommu_domain_identity_map(domain, start, end);
1979 if (ret) 1990 if (ret)