Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
On Wed, Aug 08, 2012 at 08:27:03AM -0500, Seth Forshee wrote: > The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, > but the only remapping unit described in the DMAR table matches id 0. > Interrupt remapping fails as a result, and the kernel panics with the > message "timer doesn't work through Interrupt-remapped IO-APIC." > > To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is > not found, do not allow IRQ remapping to be enabled. > > v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, > and add FW_BUG to the log message > v3: Skip check if IOMMU doesn't support interrupt remapping and remove > existing check that the IOMMU count equals the IOAPIC count > > Acked-by: Suresh Siddha > Signed-off-by: Seth Forshee > --- > drivers/iommu/intel_irq_remapping.c | 18 +- > 1 file changed, 13 insertions(+), 5 deletions(-) Applied to iommu/fixes, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
On Wed, Aug 08, 2012 at 08:27:03AM -0500, Seth Forshee wrote: The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, but the only remapping unit described in the DMAR table matches id 0. Interrupt remapping fails as a result, and the kernel panics with the message timer doesn't work through Interrupt-remapped IO-APIC. To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is not found, do not allow IRQ remapping to be enabled. v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, and add FW_BUG to the log message v3: Skip check if IOMMU doesn't support interrupt remapping and remove existing check that the IOMMU count equals the IOAPIC count Acked-by: Suresh Siddha suresh.b.sid...@intel.com Signed-off-by: Seth Forshee seth.fors...@canonical.com --- drivers/iommu/intel_irq_remapping.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) Applied to iommu/fixes, thanks. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
On Wed, Aug 08, 2012 at 10:57:06AM -0700, Yinghai Lu wrote: > On Wed, Aug 8, 2012 at 6:27 AM, Seth Forshee > wrote: > > The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, > > but the only remapping unit described in the DMAR table matches id 0. > > Interrupt remapping fails as a result, and the kernel panics with the > > message "timer doesn't work through Interrupt-remapped IO-APIC." > > > > To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is > > not found, do not allow IRQ remapping to be enabled. > > > > v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, > > and add FW_BUG to the log message > > v3: Skip check if IOMMU doesn't support interrupt remapping and remove > > existing check that the IOMMU count equals the IOAPIC count > > > > Acked-by: Yinghai Lu Thanks! I'm not sure whose tree this goes through, but it occurred to me that it might be good to get this fixed in the stable kernels as well. Whoever applies the patch might consider adding a Cc for stable, otherwise I can submit it after it hits Linus's tree. Thanks, Seth -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
On Wed, Aug 8, 2012 at 6:27 AM, Seth Forshee wrote: > The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, > but the only remapping unit described in the DMAR table matches id 0. > Interrupt remapping fails as a result, and the kernel panics with the > message "timer doesn't work through Interrupt-remapped IO-APIC." > > To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is > not found, do not allow IRQ remapping to be enabled. > > v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, > and add FW_BUG to the log message > v3: Skip check if IOMMU doesn't support interrupt remapping and remove > existing check that the IOMMU count equals the IOAPIC count > Acked-by: Yinghai Lu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, but the only remapping unit described in the DMAR table matches id 0. Interrupt remapping fails as a result, and the kernel panics with the message "timer doesn't work through Interrupt-remapped IO-APIC." To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is not found, do not allow IRQ remapping to be enabled. v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, and add FW_BUG to the log message v3: Skip check if IOMMU doesn't support interrupt remapping and remove existing check that the IOMMU count equals the IOAPIC count Acked-by: Suresh Siddha Signed-off-by: Seth Forshee --- drivers/iommu/intel_irq_remapping.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c index e0b18f3..af8904d 100644 --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c @@ -736,6 +736,7 @@ int __init parse_ioapics_under_ir(void) { struct dmar_drhd_unit *drhd; int ir_supported = 0; + int ioapic_idx; for_each_drhd_unit(drhd) { struct intel_iommu *iommu = drhd->iommu; @@ -748,13 +749,20 @@ int __init parse_ioapics_under_ir(void) } } - if (ir_supported && ir_ioapic_num != nr_ioapics) { - printk(KERN_WARNING - "Not all IO-APIC's listed under remapping hardware\n"); - return -1; + if (!ir_supported) + return 0; + + for (ioapic_idx = 0; ioapic_idx < nr_ioapics; ioapic_idx++) { + int ioapic_id = mpc_ioapic_id(ioapic_idx); + if (!map_ioapic_to_ir(ioapic_id)) { + pr_err(FW_BUG "ioapic %d has no mapping iommu, " + "interrupt remapping will be disabled\n", + ioapic_id); + return -1; + } } - return ir_supported; + return 1; } int __init ir_dev_scope_init(void) -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, but the only remapping unit described in the DMAR table matches id 0. Interrupt remapping fails as a result, and the kernel panics with the message timer doesn't work through Interrupt-remapped IO-APIC. To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is not found, do not allow IRQ remapping to be enabled. v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, and add FW_BUG to the log message v3: Skip check if IOMMU doesn't support interrupt remapping and remove existing check that the IOMMU count equals the IOAPIC count Acked-by: Suresh Siddha suresh.b.sid...@intel.com Signed-off-by: Seth Forshee seth.fors...@canonical.com --- drivers/iommu/intel_irq_remapping.c | 18 +- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c index e0b18f3..af8904d 100644 --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c @@ -736,6 +736,7 @@ int __init parse_ioapics_under_ir(void) { struct dmar_drhd_unit *drhd; int ir_supported = 0; + int ioapic_idx; for_each_drhd_unit(drhd) { struct intel_iommu *iommu = drhd-iommu; @@ -748,13 +749,20 @@ int __init parse_ioapics_under_ir(void) } } - if (ir_supported ir_ioapic_num != nr_ioapics) { - printk(KERN_WARNING - Not all IO-APIC's listed under remapping hardware\n); - return -1; + if (!ir_supported) + return 0; + + for (ioapic_idx = 0; ioapic_idx nr_ioapics; ioapic_idx++) { + int ioapic_id = mpc_ioapic_id(ioapic_idx); + if (!map_ioapic_to_ir(ioapic_id)) { + pr_err(FW_BUG ioapic %d has no mapping iommu, + interrupt remapping will be disabled\n, + ioapic_id); + return -1; + } } - return ir_supported; + return 1; } int __init ir_dev_scope_init(void) -- 1.7.9.5 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
On Wed, Aug 8, 2012 at 6:27 AM, Seth Forshee seth.fors...@canonical.com wrote: The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, but the only remapping unit described in the DMAR table matches id 0. Interrupt remapping fails as a result, and the kernel panics with the message timer doesn't work through Interrupt-remapped IO-APIC. To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is not found, do not allow IRQ remapping to be enabled. v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, and add FW_BUG to the log message v3: Skip check if IOMMU doesn't support interrupt remapping and remove existing check that the IOMMU count equals the IOAPIC count Acked-by: Yinghai Lu ying...@kernel.org -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
On Wed, Aug 08, 2012 at 10:57:06AM -0700, Yinghai Lu wrote: On Wed, Aug 8, 2012 at 6:27 AM, Seth Forshee seth.fors...@canonical.com wrote: The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2, but the only remapping unit described in the DMAR table matches id 0. Interrupt remapping fails as a result, and the kernel panics with the message timer doesn't work through Interrupt-remapped IO-APIC. To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is not found, do not allow IRQ remapping to be enabled. v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR, and add FW_BUG to the log message v3: Skip check if IOMMU doesn't support interrupt remapping and remove existing check that the IOMMU count equals the IOAPIC count Acked-by: Yinghai Lu ying...@kernel.org Thanks! I'm not sure whose tree this goes through, but it occurred to me that it might be good to get this fixed in the stable kernels as well. Whoever applies the patch might consider adding a Cc for stable, otherwise I can submit it after it hits Linus's tree. Thanks, Seth -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/