From: David Woodhouse Date: Wed, 26 Aug 2009 13:25:41 +0000 (+0100) Subject: intel-iommu: Cope with yet another BIOS screwup causing crashes X-Git-Tag: v3.12-rc1~12840^2~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ff729f5445cc47d1910386c36e53fc6b1c5e47a;p=kernel%2Fkernel-generic.git intel-iommu: Cope with yet another BIOS screwup causing crashes Signed-off-by: David Woodhouse --- diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index beb5ccf..d36fa80 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, printk(KERN_INFO "IOMMU: Setting identity map for device %s [0x%Lx - 0x%Lx]\n", pci_name(pdev), start, end); + + if (end >> agaw_to_width(domain->agaw)) { + WARN(1, "Your BIOS is broken; RMRR exceeds permitted address width (%d bits)\n" + "BIOS vendor: %s; Ver: %s; Product Version: %s\n", + agaw_to_width(domain->agaw), + dmi_get_system_info(DMI_BIOS_VENDOR), + dmi_get_system_info(DMI_BIOS_VERSION), + dmi_get_system_info(DMI_PRODUCT_VERSION)); + ret = -EIO; + goto error; + } ret = iommu_domain_identity_map(domain, start, end); if (ret)