2013-09-27 16:56:02

by Neil Horman

[permalink] [raw]
Subject: [PATCH] iommu: Remove stack trace from broken irq remapping warning

The warning for the irq remapping broken check in intel_irq_remapping.c is
pretty pointless. We need the warning, but we know where its comming from, the
stack trace will always be the same, and it needlessly triggers things like
Abrt. This changes the warning to just print a text warning about BIOS being
broken, without the stack trace, then sets the appropriate taint bit. Since we
automatically disable irq remapping, theres no need to contiue making Abrt jump
at this problem

Signed-off-by: Neil Horman <[email protected]>
CC: Joerg Roedel <[email protected]>
CC: Bjorn Helgaas <[email protected]>
CC: Andy Lutomirski <[email protected]>
CC: Konrad Rzeszutek Wilk <[email protected]>
CC: Sebastian Andrzej Siewior <[email protected]>
---
drivers/iommu/intel_irq_remapping.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index f71673d..b97d70b 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -525,12 +525,13 @@ static int __init intel_irq_remapping_supported(void)
if (disable_irq_remap)
return 0;
if (irq_remap_broken) {
- WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
- "This system BIOS has enabled interrupt remapping\n"
- "on a chipset that contains an erratum making that\n"
- "feature unstable. To maintain system stability\n"
- "interrupt remapping is being disabled. Please\n"
- "contact your BIOS vendor for an update\n");
+ printk(KERN_WARNING
+ "This system BIOS has enabled interrupt remapping\n"
+ "on a chipset that contains an erratum making that\n"
+ "feature unstable. To maintain system stability\n"
+ "interrupt remapping is being disabled. Please\n"
+ "contact your BIOS vendor for an update\n");
+ add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
disable_irq_remap = 1;
return 0;
}
--
1.8.3.1


2013-09-27 19:24:33

by Andy Lutomirski

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Fri, Sep 27, 2013 at 9:53 AM, Neil Horman <[email protected]> wrote:
> The warning for the irq remapping broken check in intel_irq_remapping.c is
> pretty pointless. We need the warning, but we know where its comming from, the
> stack trace will always be the same, and it needlessly triggers things like
> Abrt. This changes the warning to just print a text warning about BIOS being
> broken, without the stack trace, then sets the appropriate taint bit. Since we
> automatically disable irq remapping, theres no need to contiue making Abrt jump
> at this problem
>
> Signed-off-by: Neil Horman <[email protected]>
> CC: Joerg Roedel <[email protected]>
> CC: Bjorn Helgaas <[email protected]>
> CC: Andy Lutomirski <[email protected]>
> CC: Konrad Rzeszutek Wilk <[email protected]>
> CC: Sebastian Andrzej Siewior <[email protected]>
> ---
> drivers/iommu/intel_irq_remapping.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
> index f71673d..b97d70b 100644
> --- a/drivers/iommu/intel_irq_remapping.c
> +++ b/drivers/iommu/intel_irq_remapping.c
> @@ -525,12 +525,13 @@ static int __init intel_irq_remapping_supported(void)
> if (disable_irq_remap)
> return 0;
> if (irq_remap_broken) {
> - WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
> - "This system BIOS has enabled interrupt remapping\n"
> - "on a chipset that contains an erratum making that\n"
> - "feature unstable. To maintain system stability\n"
> - "interrupt remapping is being disabled. Please\n"
> - "contact your BIOS vendor for an update\n");
> + printk(KERN_WARNING
> + "This system BIOS has enabled interrupt remapping\n"
> + "on a chipset that contains an erratum making that\n"
> + "feature unstable. To maintain system stability\n"
> + "interrupt remapping is being disabled. Please\n"
> + "contact your BIOS vendor for an update\n");
> + add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);

Is the taint bit actually useful? It seems like functionality will be
missing if this workaround happens, but everything should be stable.

--Andy

2013-09-27 19:44:04

by Neil Horman

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Fri, Sep 27, 2013 at 12:24:10PM -0700, Andy Lutomirski wrote:
> On Fri, Sep 27, 2013 at 9:53 AM, Neil Horman <[email protected]> wrote:
> > The warning for the irq remapping broken check in intel_irq_remapping.c is
> > pretty pointless. We need the warning, but we know where its comming from, the
> > stack trace will always be the same, and it needlessly triggers things like
> > Abrt. This changes the warning to just print a text warning about BIOS being
> > broken, without the stack trace, then sets the appropriate taint bit. Since we
> > automatically disable irq remapping, theres no need to contiue making Abrt jump
> > at this problem
> >
> > Signed-off-by: Neil Horman <[email protected]>
> > CC: Joerg Roedel <[email protected]>
> > CC: Bjorn Helgaas <[email protected]>
> > CC: Andy Lutomirski <[email protected]>
> > CC: Konrad Rzeszutek Wilk <[email protected]>
> > CC: Sebastian Andrzej Siewior <[email protected]>
> > ---
> > drivers/iommu/intel_irq_remapping.c | 13 +++++++------
> > 1 file changed, 7 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
> > index f71673d..b97d70b 100644
> > --- a/drivers/iommu/intel_irq_remapping.c
> > +++ b/drivers/iommu/intel_irq_remapping.c
> > @@ -525,12 +525,13 @@ static int __init intel_irq_remapping_supported(void)
> > if (disable_irq_remap)
> > return 0;
> > if (irq_remap_broken) {
> > - WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
> > - "This system BIOS has enabled interrupt remapping\n"
> > - "on a chipset that contains an erratum making that\n"
> > - "feature unstable. To maintain system stability\n"
> > - "interrupt remapping is being disabled. Please\n"
> > - "contact your BIOS vendor for an update\n");
> > + printk(KERN_WARNING
> > + "This system BIOS has enabled interrupt remapping\n"
> > + "on a chipset that contains an erratum making that\n"
> > + "feature unstable. To maintain system stability\n"
> > + "interrupt remapping is being disabled. Please\n"
> > + "contact your BIOS vendor for an update\n");
> > + add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
>
> Is the taint bit actually useful? It seems like functionality will be
> missing if this workaround happens, but everything should be stable.
>
I think its useful yes. The system will be stable, an in fact should run
exactly as it did before, but since the errata indicates this should be fixed in
BIOS, its a reminder to the admin that you should investigate an update, or take
action in manually disabling iommu on the command line

Its also in keeping with the way this was structured previously.
Neil

> --Andy
>

2013-10-03 17:21:59

by Neil Horman

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Fri, Sep 27, 2013 at 12:53:35PM -0400, Neil Horman wrote:
> The warning for the irq remapping broken check in intel_irq_remapping.c is
> pretty pointless. We need the warning, but we know where its comming from, the
> stack trace will always be the same, and it needlessly triggers things like
> Abrt. This changes the warning to just print a text warning about BIOS being
> broken, without the stack trace, then sets the appropriate taint bit. Since we
> automatically disable irq remapping, theres no need to contiue making Abrt jump
> at this problem
>
> Signed-off-by: Neil Horman <[email protected]>
> CC: Joerg Roedel <[email protected]>
> CC: Bjorn Helgaas <[email protected]>
> CC: Andy Lutomirski <[email protected]>
> CC: Konrad Rzeszutek Wilk <[email protected]>
> CC: Sebastian Andrzej Siewior <[email protected]>
> ---
> drivers/iommu/intel_irq_remapping.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
> index f71673d..b97d70b 100644
> --- a/drivers/iommu/intel_irq_remapping.c
> +++ b/drivers/iommu/intel_irq_remapping.c
> @@ -525,12 +525,13 @@ static int __init intel_irq_remapping_supported(void)
> if (disable_irq_remap)
> return 0;
> if (irq_remap_broken) {
> - WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
> - "This system BIOS has enabled interrupt remapping\n"
> - "on a chipset that contains an erratum making that\n"
> - "feature unstable. To maintain system stability\n"
> - "interrupt remapping is being disabled. Please\n"
> - "contact your BIOS vendor for an update\n");
> + printk(KERN_WARNING
> + "This system BIOS has enabled interrupt remapping\n"
> + "on a chipset that contains an erratum making that\n"
> + "feature unstable. To maintain system stability\n"
> + "interrupt remapping is being disabled. Please\n"
> + "contact your BIOS vendor for an update\n");
> + add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
> disable_irq_remap = 1;
> return 0;
> }
> --
> 1.8.3.1
>
>

Ping Bjorn, Jeorg, any thoughts here?
Neil

2013-10-03 19:21:45

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Thu, Oct 3, 2013 at 11:21 AM, Neil Horman <[email protected]> wrote:
> On Fri, Sep 27, 2013 at 12:53:35PM -0400, Neil Horman wrote:
>> The warning for the irq remapping broken check in intel_irq_remapping.c is
>> pretty pointless. We need the warning, but we know where its comming from, the
>> stack trace will always be the same, and it needlessly triggers things like
>> Abrt. This changes the warning to just print a text warning about BIOS being
>> broken, without the stack trace, then sets the appropriate taint bit. Since we
>> automatically disable irq remapping, theres no need to contiue making Abrt jump
>> at this problem
>>
>> Signed-off-by: Neil Horman <[email protected]>
>> CC: Joerg Roedel <[email protected]>
>> CC: Bjorn Helgaas <[email protected]>
>> CC: Andy Lutomirski <[email protected]>
>> CC: Konrad Rzeszutek Wilk <[email protected]>
>> CC: Sebastian Andrzej Siewior <[email protected]>
>> ---
>> drivers/iommu/intel_irq_remapping.c | 13 +++++++------
>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
>> index f71673d..b97d70b 100644
>> --- a/drivers/iommu/intel_irq_remapping.c
>> +++ b/drivers/iommu/intel_irq_remapping.c
>> @@ -525,12 +525,13 @@ static int __init intel_irq_remapping_supported(void)
>> if (disable_irq_remap)
>> return 0;
>> if (irq_remap_broken) {
>> - WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND,
>> - "This system BIOS has enabled interrupt remapping\n"
>> - "on a chipset that contains an erratum making that\n"
>> - "feature unstable. To maintain system stability\n"
>> - "interrupt remapping is being disabled. Please\n"
>> - "contact your BIOS vendor for an update\n");
>> + printk(KERN_WARNING
>> + "This system BIOS has enabled interrupt remapping\n"
>> + "on a chipset that contains an erratum making that\n"
>> + "feature unstable. To maintain system stability\n"
>> + "interrupt remapping is being disabled. Please\n"
>> + "contact your BIOS vendor for an update\n");
>> + add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
>> disable_irq_remap = 1;
>> return 0;
>> }
>> --
>> 1.8.3.1
>>
>>
>
> Ping Bjorn, Jeorg, any thoughts here?

This is in drivers/iommu, so I'd prefer that Joerg handle this.

My opinion is that this patch does the right thing in dropping the
backtrace and keeping the taint.

I tend to agree with Andy that we should also consider a second patch
that drops the taint, because this is basically just a quirk that
avoids broken chipset functionality, but as far as I can tell, there's
no reason to fear an undebuggable problem related to disabling
interrupt remapping. We don't taint the kernel for other similar
quirks, so I don't see why we should here.

Bjorn

2013-10-03 20:08:29

by Joerg Roedel

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Thu, Oct 03, 2013 at 01:21:42PM -0400, Neil Horman wrote:
> On Fri, Sep 27, 2013 at 12:53:35PM -0400, Neil Horman wrote:
> > The warning for the irq remapping broken check in intel_irq_remapping.c is
> > pretty pointless. We need the warning, but we know where its comming from, the
> > stack trace will always be the same, and it needlessly triggers things like
> > Abrt. This changes the warning to just print a text warning about BIOS being
> > broken, without the stack trace, then sets the appropriate taint bit. Since we
> > automatically disable irq remapping, theres no need to contiue making Abrt jump
> > at this problem
> >
> > Signed-off-by: Neil Horman <[email protected]>
> > CC: Joerg Roedel <[email protected]>
> > CC: Bjorn Helgaas <[email protected]>
> > CC: Andy Lutomirski <[email protected]>
> > CC: Konrad Rzeszutek Wilk <[email protected]>
> > CC: Sebastian Andrzej Siewior <[email protected]>
>
> Ping Bjorn, Jeorg, any thoughts here?

Yes, the patch is doing the right thing. I have it already on my list
and will merge it soon.


Joerg

2013-10-03 20:26:29

by Neil Horman

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Thu, Oct 03, 2013 at 10:08:24PM +0200, Joerg Roedel wrote:
> On Thu, Oct 03, 2013 at 01:21:42PM -0400, Neil Horman wrote:
> > On Fri, Sep 27, 2013 at 12:53:35PM -0400, Neil Horman wrote:
> > > The warning for the irq remapping broken check in intel_irq_remapping.c is
> > > pretty pointless. We need the warning, but we know where its comming from, the
> > > stack trace will always be the same, and it needlessly triggers things like
> > > Abrt. This changes the warning to just print a text warning about BIOS being
> > > broken, without the stack trace, then sets the appropriate taint bit. Since we
> > > automatically disable irq remapping, theres no need to contiue making Abrt jump
> > > at this problem
> > >
> > > Signed-off-by: Neil Horman <[email protected]>
> > > CC: Joerg Roedel <[email protected]>
> > > CC: Bjorn Helgaas <[email protected]>
> > > CC: Andy Lutomirski <[email protected]>
> > > CC: Konrad Rzeszutek Wilk <[email protected]>
> > > CC: Sebastian Andrzej Siewior <[email protected]>
> >
> > Ping Bjorn, Jeorg, any thoughts here?
>
> Yes, the patch is doing the right thing. I have it already on my list
> and will merge it soon.
>
Awesome, thanks guys. Regarding the taint, I'll propose something for that
early next week.

Regards
Neil

>
> Joerg
>
>
>

2013-10-04 14:32:23

by Joerg Roedel

[permalink] [raw]
Subject: Re: [PATCH] iommu: Remove stack trace from broken irq remapping warning

On Fri, Sep 27, 2013 at 12:53:35PM -0400, Neil Horman wrote:
> The warning for the irq remapping broken check in intel_irq_remapping.c is
> pretty pointless. We need the warning, but we know where its comming from, the
> stack trace will always be the same, and it needlessly triggers things like
> Abrt. This changes the warning to just print a text warning about BIOS being
> broken, without the stack trace, then sets the appropriate taint bit. Since we
> automatically disable irq remapping, theres no need to contiue making Abrt jump
> at this problem

Applied to x86/vt-d, thanks Neil.