Message ID | 1374101277-7915-90-git-send-email-kamal@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
18.07.2013 01:47, Kamal Mostafa skrev: > 3.8.13.5 -stable review patch. If anyone has any objections, please let me know. > > ------------------ > > From: Neil Horman <nhorman@tuxdriver.com> > > commit 03bbcb2e7e292838bb0244f5a7816d194c911d62 upstream. > > A few years back intel published a spec update: > http://www.intel.com/content/dam/doc/specification-update/5520-and-5500-chipset-ioh-specification-update.pdf > > For the 5520 and 5500 chipsets which contained an errata (specificially errata > 53), which noted that these chipsets can't properly do interrupt remapping, and > as a result the recommend that interrupt remapping be disabled in bios. While > many vendors have a bios update to do exactly that, not all do, and of course > not all users update their bios to a level that corrects the problem. As a > result, occasionally interrupts can arrive at a cpu even after affinity for that > interrupt has be moved, leading to lost or spurrious interrupts (usually > characterized by the message: > kernel: do_IRQ: 7.71 No irq handler for vector (irq -1) > > There have been several incidents recently of people seeing this error, and > investigation has shown that they have system for which their BIOS level is such > that this feature was not properly turned off. As such, it would be good to > give them a reminder that their systems are vulnurable to this problem. For > details of those that reported the problem, please see: > https://bugzilla.redhat.com/show_bug.cgi?id=887006 > > [ Joerg: Removed CONFIG_IRQ_REMAP ifdef from early-quirks.c ] > > Signed-off-by: Neil Horman <nhorman@tuxdriver.com> > CC: Prarit Bhargava <prarit@redhat.com> > CC: Don Zickus <dzickus@redhat.com> > CC: Don Dutile <ddutile@redhat.com> > CC: Bjorn Helgaas <bhelgaas@google.com> > CC: Asit Mallick <asit.k.mallick@intel.com> > CC: David Woodhouse <dwmw2@infradead.org> > CC: linux-pci@vger.kernel.org > CC: Joerg Roedel <joro@8bytes.org> > CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > CC: Arkadiusz Mi?kiewicz <arekm@maven.pl> > Signed-off-by: Joerg Roedel <joro@8bytes.org> > Signed-off-by: Luis Henriques <luis.henriques@canonical.com> > --- > arch/x86/include/asm/irq_remapping.h | 2 ++ > arch/x86/kernel/early-quirks.c | 20 ++++++++++++++++++++ > drivers/iommu/intel_irq_remapping.c | 10 ++++++++++ > drivers/iommu/irq_remapping.c | 6 ++++++ > drivers/iommu/irq_remapping.h | 2 ++ > 5 files changed, 40 insertions(+) > This patch introduces this warning on 3.8 series kernels: In file included from arch/x86/kernel/early-quirks.c:21:0: /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: varning: ”struct irq_data” deklarerad inuti parameterlista [aktiverat som standard] /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: varning: dess scope-område är endast denna definition eller deklaration, vilket troligen inte är vad du vill. [aktiverat som standard] /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:50:17: varning: ”struct msi_msg” deklarerad inuti parameterlista [aktiverat som standard] You need to add this upstream fix too: commit 35d3d814cbd46a85bed97cd74ba97fbbb51e0ccd Author: Joerg Roedel <joro@8bytes.org> Date: Fri Apr 19 20:34:55 2013 +0200 iommu: Fix compile warnings with forward declarations -- Thomas -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Jul 18, 2013 at 11:02:00AM +0300, Thomas Backlund wrote: > 18.07.2013 01:47, Kamal Mostafa skrev: > >3.8.13.5 -stable review patch. If anyone has any objections, please let me know. > > > >------------------ > > > >From: Neil Horman <nhorman@tuxdriver.com> > > > >commit 03bbcb2e7e292838bb0244f5a7816d194c911d62 upstream. > > > >A few years back intel published a spec update: > >http://www.intel.com/content/dam/doc/specification-update/5520-and-5500-chipset-ioh-specification-update.pdf > > > >For the 5520 and 5500 chipsets which contained an errata (specificially errata > >53), which noted that these chipsets can't properly do interrupt remapping, and > >as a result the recommend that interrupt remapping be disabled in bios. While > >many vendors have a bios update to do exactly that, not all do, and of course > >not all users update their bios to a level that corrects the problem. As a > >result, occasionally interrupts can arrive at a cpu even after affinity for that > >interrupt has be moved, leading to lost or spurrious interrupts (usually > >characterized by the message: > >kernel: do_IRQ: 7.71 No irq handler for vector (irq -1) > > > >There have been several incidents recently of people seeing this error, and > >investigation has shown that they have system for which their BIOS level is such > >that this feature was not properly turned off. As such, it would be good to > >give them a reminder that their systems are vulnurable to this problem. For > >details of those that reported the problem, please see: > >https://bugzilla.redhat.com/show_bug.cgi?id=887006 > > > >[ Joerg: Removed CONFIG_IRQ_REMAP ifdef from early-quirks.c ] > > > >Signed-off-by: Neil Horman <nhorman@tuxdriver.com> > >CC: Prarit Bhargava <prarit@redhat.com> > >CC: Don Zickus <dzickus@redhat.com> > >CC: Don Dutile <ddutile@redhat.com> > >CC: Bjorn Helgaas <bhelgaas@google.com> > >CC: Asit Mallick <asit.k.mallick@intel.com> > >CC: David Woodhouse <dwmw2@infradead.org> > >CC: linux-pci@vger.kernel.org > >CC: Joerg Roedel <joro@8bytes.org> > >CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > >CC: Arkadiusz Mi?kiewicz <arekm@maven.pl> > >Signed-off-by: Joerg Roedel <joro@8bytes.org> > >Signed-off-by: Luis Henriques <luis.henriques@canonical.com> > >--- > > arch/x86/include/asm/irq_remapping.h | 2 ++ > > arch/x86/kernel/early-quirks.c | 20 ++++++++++++++++++++ > > drivers/iommu/intel_irq_remapping.c | 10 ++++++++++ > > drivers/iommu/irq_remapping.c | 6 ++++++ > > drivers/iommu/irq_remapping.h | 2 ++ > > 5 files changed, 40 insertions(+) > > > > This patch introduces this warning on 3.8 series kernels: > > In file included from arch/x86/kernel/early-quirks.c:21:0: > /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: > varning: ”struct irq_data” deklarerad inuti parameterlista > [aktiverat som standard] > /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: > varning: dess scope-område är endast denna definition eller > deklaration, vilket troligen inte är vad du vill. [aktiverat som > standard] > /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:50:17: > varning: ”struct msi_msg” deklarerad inuti parameterlista [aktiverat > som standard] > > > You need to add this upstream fix too: > > commit 35d3d814cbd46a85bed97cd74ba97fbbb51e0ccd > Author: Joerg Roedel <joro@8bytes.org> > Date: Fri Apr 19 20:34:55 2013 +0200 > > iommu: Fix compile warnings with forward declarations > I submited a 3.9 backport that included that fix to -stable over a week ago, you should just be able to use that if you want. Neil > > -- > > Thomas > > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
18.07.2013 13:37, Neil Horman skrev: > On Thu, Jul 18, 2013 at 11:02:00AM +0300, Thomas Backlund wrote: >> 18.07.2013 01:47, Kamal Mostafa skrev: >>> 3.8.13.5 -stable review patch. If anyone has any objections, please let me know. >>> >>> ------------------ >>> >>> From: Neil Horman <nhorman@tuxdriver.com> >>> >>> commit 03bbcb2e7e292838bb0244f5a7816d194c911d62 upstream. >>> >>> A few years back intel published a spec update: >>> http://www.intel.com/content/dam/doc/specification-update/5520-and-5500-chipset-ioh-specification-update.pdf >>> >>> For the 5520 and 5500 chipsets which contained an errata (specificially errata >>> 53), which noted that these chipsets can't properly do interrupt remapping, and >>> as a result the recommend that interrupt remapping be disabled in bios. While >>> many vendors have a bios update to do exactly that, not all do, and of course >>> not all users update their bios to a level that corrects the problem. As a >>> result, occasionally interrupts can arrive at a cpu even after affinity for that >>> interrupt has be moved, leading to lost or spurrious interrupts (usually >>> characterized by the message: >>> kernel: do_IRQ: 7.71 No irq handler for vector (irq -1) >>> >>> There have been several incidents recently of people seeing this error, and >>> investigation has shown that they have system for which their BIOS level is such >>> that this feature was not properly turned off. As such, it would be good to >>> give them a reminder that their systems are vulnurable to this problem. For >>> details of those that reported the problem, please see: >>> https://bugzilla.redhat.com/show_bug.cgi?id=887006 >>> >>> [ Joerg: Removed CONFIG_IRQ_REMAP ifdef from early-quirks.c ] >>> >>> Signed-off-by: Neil Horman <nhorman@tuxdriver.com> >>> CC: Prarit Bhargava <prarit@redhat.com> >>> CC: Don Zickus <dzickus@redhat.com> >>> CC: Don Dutile <ddutile@redhat.com> >>> CC: Bjorn Helgaas <bhelgaas@google.com> >>> CC: Asit Mallick <asit.k.mallick@intel.com> >>> CC: David Woodhouse <dwmw2@infradead.org> >>> CC: linux-pci@vger.kernel.org >>> CC: Joerg Roedel <joro@8bytes.org> >>> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> >>> CC: Arkadiusz Mi?kiewicz <arekm@maven.pl> >>> Signed-off-by: Joerg Roedel <joro@8bytes.org> >>> Signed-off-by: Luis Henriques <luis.henriques@canonical.com> >>> --- >>> arch/x86/include/asm/irq_remapping.h | 2 ++ >>> arch/x86/kernel/early-quirks.c | 20 ++++++++++++++++++++ >>> drivers/iommu/intel_irq_remapping.c | 10 ++++++++++ >>> drivers/iommu/irq_remapping.c | 6 ++++++ >>> drivers/iommu/irq_remapping.h | 2 ++ >>> 5 files changed, 40 insertions(+) >>> >> >> This patch introduces this warning on 3.8 series kernels: >> >> In file included from arch/x86/kernel/early-quirks.c:21:0: >> /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: >> varning: ”struct irq_data” deklarerad inuti parameterlista >> [aktiverat som standard] >> /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: >> varning: dess scope-område är endast denna definition eller >> deklaration, vilket troligen inte är vad du vill. [aktiverat som >> standard] >> /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:50:17: >> varning: ”struct msi_msg” deklarerad inuti parameterlista [aktiverat >> som standard] >> >> >> You need to add this upstream fix too: >> >> commit 35d3d814cbd46a85bed97cd74ba97fbbb51e0ccd >> Author: Joerg Roedel <joro@8bytes.org> >> Date: Fri Apr 19 20:34:55 2013 +0200 >> >> iommu: Fix compile warnings with forward declarations >> > I submited a 3.9 backport that included that fix to -stable over a week ago, you > should just be able to use that if you want. > Neil Almost, but not enough... The patch you refer to was: [3.9 stable PATCH] iommu/vt-d: add quirk for broken interrupt remapping on 55XX chipsets and got merged in 3.9.9. And that added a missing: "#include <linux/irq.h>" in arch/x86/include/asm/irq_remapping.h But using that patch it still spits out: kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:50:17: >> varning: ”struct msi_msg” deklarerad inuti parameterlista [aktiverat >> som standard] which is why the additional patch is still needed... -- Thomas -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, 2013-07-18 at 16:45 +0300, Thomas Backlund wrote: > 18.07.2013 13:37, Neil Horman skrev: > > On Thu, Jul 18, 2013 at 11:02:00AM +0300, Thomas Backlund wrote: > >> 18.07.2013 01:47, Kamal Mostafa skrev: > >>> 3.8.13.5 -stable review patch. If anyone has any objections, please let me know. > >>> > >>> ------------------ > >>> > >>> From: Neil Horman <nhorman@tuxdriver.com> > >>> > >>> commit 03bbcb2e7e292838bb0244f5a7816d194c911d62 upstream. > >>> > >>> A few years back intel published a spec update: > >>> http://www.intel.com/content/dam/doc/specification-update/5520-and-5500-chipset-ioh-specification-update.pdf > >>> > >>> For the 5520 and 5500 chipsets which contained an errata (specificially errata > >>> 53), which noted that these chipsets can't properly do interrupt remapping, and > >>> as a result the recommend that interrupt remapping be disabled in bios. While > >>> many vendors have a bios update to do exactly that, not all do, and of course > >>> not all users update their bios to a level that corrects the problem. As a > >>> result, occasionally interrupts can arrive at a cpu even after affinity for that > >>> interrupt has be moved, leading to lost or spurrious interrupts (usually > >>> characterized by the message: > >>> kernel: do_IRQ: 7.71 No irq handler for vector (irq -1) > >>> > >>> There have been several incidents recently of people seeing this error, and > >>> investigation has shown that they have system for which their BIOS level is such > >>> that this feature was not properly turned off. As such, it would be good to > >>> give them a reminder that their systems are vulnurable to this problem. For > >>> details of those that reported the problem, please see: > >>> https://bugzilla.redhat.com/show_bug.cgi?id=887006 > >>> > >>> [ Joerg: Removed CONFIG_IRQ_REMAP ifdef from early-quirks.c ] > >>> > >>> Signed-off-by: Neil Horman <nhorman@tuxdriver.com> > >>> CC: Prarit Bhargava <prarit@redhat.com> > >>> CC: Don Zickus <dzickus@redhat.com> > >>> CC: Don Dutile <ddutile@redhat.com> > >>> CC: Bjorn Helgaas <bhelgaas@google.com> > >>> CC: Asit Mallick <asit.k.mallick@intel.com> > >>> CC: David Woodhouse <dwmw2@infradead.org> > >>> CC: linux-pci@vger.kernel.org > >>> CC: Joerg Roedel <joro@8bytes.org> > >>> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > >>> CC: Arkadiusz Mi?kiewicz <arekm@maven.pl> > >>> Signed-off-by: Joerg Roedel <joro@8bytes.org> > >>> Signed-off-by: Luis Henriques <luis.henriques@canonical.com> > >>> --- > >>> arch/x86/include/asm/irq_remapping.h | 2 ++ > >>> arch/x86/kernel/early-quirks.c | 20 ++++++++++++++++++++ > >>> drivers/iommu/intel_irq_remapping.c | 10 ++++++++++ > >>> drivers/iommu/irq_remapping.c | 6 ++++++ > >>> drivers/iommu/irq_remapping.h | 2 ++ > >>> 5 files changed, 40 insertions(+) > >>> > >> > >> This patch introduces this warning on 3.8 series kernels: > >> > >> In file included from arch/x86/kernel/early-quirks.c:21:0: > >> /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: > >> varning: ”struct irq_data” deklarerad inuti parameterlista > >> [aktiverat som standard] > >> /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:46:10: > >> varning: dess scope-område är endast denna definition eller > >> deklaration, vilket troligen inte är vad du vill. [aktiverat som > >> standard] > >> /kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:50:17: > >> varning: ”struct msi_msg” deklarerad inuti parameterlista [aktiverat > >> som standard] > >> > >> > >> You need to add this upstream fix too: > >> > >> commit 35d3d814cbd46a85bed97cd74ba97fbbb51e0ccd > >> Author: Joerg Roedel <joro@8bytes.org> > >> Date: Fri Apr 19 20:34:55 2013 +0200 > >> > >> iommu: Fix compile warnings with forward declarations > >> > > I submited a 3.9 backport that included that fix to -stable over a week ago, you > > should just be able to use that if you want. > > Neil > > Almost, but not enough... > > The patch you refer to was: > [3.9 stable PATCH] iommu/vt-d: add quirk for broken interrupt remapping > on 55XX chipsets > > and got merged in 3.9.9. > > And that added a missing: "#include <linux/irq.h>" in > arch/x86/include/asm/irq_remapping.h > > But using that patch it still spits out: > > kernel/linux-3.8.13.5/arch/x86/include/asm/irq_remapping.h:50:17: > >> varning: ”struct msi_msg” deklarerad inuti parameterlista [aktiverat > >> som standard] > > > which is why the additional patch is still needed... > > -- > > Thomas Ok, I have replaced the queued patch in linux-3.8.y-review[0] with Neil's backport[1], and added Joerg's patch[2]. These are (still) queued up for 3.8.13.5 -stable. Thanks very much for the heads-up folks. -Kamal [0] http://kernel.ubuntu.com/git?p=ubuntu/linux.git;h=linux-3.8.y-review;a=shortlog [1] http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=commitdiff;h=af4e6e26bde03f5203c9e366673623f4a3797639 [2] http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=commitdiff;h=3668f1f9e97d4ab0007f357e06fc67ce152c3998
diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index 5fb9bbb..38477e6 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h @@ -30,6 +30,7 @@ extern int irq_remapping_enabled; extern void setup_irq_remapping_ops(void); extern int irq_remapping_supported(void); +extern void set_irq_remapping_broken(void); extern int irq_remapping_prepare(void); extern int irq_remapping_enable(void); extern void irq_remapping_disable(void); @@ -58,6 +59,7 @@ extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); static inline void setup_irq_remapping_ops(void) { } static inline int irq_remapping_supported(void) { return 0; } +static inline void set_irq_remapping_broken(void) { } static inline int irq_remapping_prepare(void) { return -ENODEV; } static inline int irq_remapping_enable(void) { return -ENODEV; } static inline void irq_remapping_disable(void) { } diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c index 3755ef4..94ab6b9 100644 --- a/arch/x86/kernel/early-quirks.c +++ b/arch/x86/kernel/early-quirks.c @@ -18,6 +18,7 @@ #include <asm/apic.h> #include <asm/iommu.h> #include <asm/gart.h> +#include <asm/irq_remapping.h> static void __init fix_hypertransport_config(int num, int slot, int func) { @@ -192,6 +193,21 @@ static void __init ati_bugs_contd(int num, int slot, int func) } #endif +static void __init intel_remapping_check(int num, int slot, int func) +{ + u8 revision; + + revision = read_pci_config_byte(num, slot, func, PCI_REVISION_ID); + + /* + * Revision 0x13 of this chipset supports irq remapping + * but has an erratum that breaks its behavior, flag it as such + */ + if (revision == 0x13) + set_irq_remapping_broken(); + +} + #define QFLAG_APPLY_ONCE 0x1 #define QFLAG_APPLIED 0x2 #define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED) @@ -221,6 +237,10 @@ static struct chipset early_qrk[] __initdata = { PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs }, { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd }, + { PCI_VENDOR_ID_INTEL, 0x3403, PCI_CLASS_BRIDGE_HOST, + PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, + { PCI_VENDOR_ID_INTEL, 0x3406, PCI_CLASS_BRIDGE_HOST, + PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, {} }; diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c index af8904d..4c9379c 100644 --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c @@ -509,6 +509,16 @@ 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"); + disable_irq_remap = 1; + return 0; + } if (!dmar_ir_support()) return 0; diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c index faf85d6..018382c 100644 --- a/drivers/iommu/irq_remapping.c +++ b/drivers/iommu/irq_remapping.c @@ -12,6 +12,7 @@ int irq_remapping_enabled; int disable_irq_remap; +int irq_remap_broken; int disable_sourceid_checking; int no_x2apic_optout; @@ -58,6 +59,11 @@ void __init setup_irq_remapping_ops(void) #endif } +void set_irq_remapping_broken(void) +{ + irq_remap_broken = 1; +} + int irq_remapping_supported(void) { if (disable_irq_remap) diff --git a/drivers/iommu/irq_remapping.h b/drivers/iommu/irq_remapping.h index 95363ac..23bdea1 100644 --- a/drivers/iommu/irq_remapping.h +++ b/drivers/iommu/irq_remapping.h @@ -32,6 +32,7 @@ struct pci_dev; struct msi_msg; extern int disable_irq_remap; +extern int irq_remap_broken; extern int disable_sourceid_checking; extern int no_x2apic_optout; @@ -88,6 +89,7 @@ extern struct irq_remap_ops amd_iommu_irq_ops; #define irq_remapping_enabled 0 #define disable_irq_remap 1 +#define irq_remap_broken 0 #endif /* CONFIG_IRQ_REMAP */