diff options
author | Arnaud Patard <apatard@mandriva.com> | 2010-03-25 14:02:58 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2010-04-14 10:38:59 -0400 |
commit | 4f506e07e0a3dff34427cece255a8f390a78d5a0 (patch) | |
tree | a2814c43af0bf82f84028272107740402c7f7eab /drivers/pci/dmar.c | |
parent | dda565492776b7dff5f8507298d868745e734aab (diff) |
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/dmar.c')
-rw-r--r-- | drivers/pci/dmar.c | 2 |
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) | |||
1466 | { | 1466 | { |
1467 | struct acpi_table_dmar *dmar; | 1467 | struct acpi_table_dmar *dmar; |
1468 | dmar = (struct acpi_table_dmar *)dmar_tbl; | 1468 | dmar = (struct acpi_table_dmar *)dmar_tbl; |
1469 | if (!dmar) | ||
1470 | return 0; | ||
1469 | return dmar->flags & 0x1; | 1471 | return dmar->flags & 0x1; |
1470 | } | 1472 | } |