Re: [PATCH v3] irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU

2012-08-10 Thread Joerg Roedel
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

2012-08-10 Thread Joerg Roedel
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

2012-08-08 Thread Seth Forshee
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

2012-08-08 Thread Yinghai Lu
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

2012-08-08 Thread Seth Forshee
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

2012-08-08 Thread Seth Forshee
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

2012-08-08 Thread Yinghai Lu
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

2012-08-08 Thread Seth Forshee
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/