summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorArnaud Patard2010-03-25 19:02:58 +0100
committerDavid Woodhouse2010-04-14 16:38:59 +0200
commit4f506e07e0a3dff34427cece255a8f390a78d5a0 (patch)
treea2814c43af0bf82f84028272107740402c7f7eab /drivers/pci
parentintel-iommu: use physfn to search drhd for VF (diff)
downloadkernel-qcow2-linux-4f506e07e0a3dff34427cece255a8f390a78d5a0.tar.gz
kernel-qcow2-linux-4f506e07e0a3dff34427cece255a8f390a78d5a0.tar.xz
kernel-qcow2-linux-4f506e07e0a3dff34427cece255a8f390a78d5a0.zip
intel-iommu: Fix boot inside 64bit virtualbox with io-apic disabled
Commit 074835f0143b83845af5044af2739c52c9f53808 ("intel-iommu: Fix kernel hand if interrupt remapping disabled in BIOS") is adding a check for interrupt remapping disabled and is dereferencing the dmar_tbl pointer without checking its value. Unfortunately, this value is null when booting inside a 64bit virtual box guest with io-apic disabled, leading to a crash. With a check on it, the guest is now booting. It's triggering a WARN() in clockevent_delta2ns but it's better than not booting at all and allows the user to see there's something wrong on their io-apic setup. Signed-off-by: Arnaud Patard <apatard@mandriva.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/dmar.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index edc5f002e055..7771b2dd5978 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -1466,5 +1466,7 @@ int __init dmar_ir_support(void)
{
struct acpi_table_dmar *dmar;
dmar = (struct acpi_table_dmar *)dmar_tbl;
+ if (!dmar)
+ return 0;
return dmar->flags & 0x1;
}