Prev: [GIT PULL] perf fixes
Next: [PATCH 1/3] perf probe: Fix error message if get_real_path() failed
From: Ben Greear on 16 Jul 2010 13:50 On 07/16/2010 10:43 AM, Bjorn Helgaas wrote: > On Wednesday, July 14, 2010 11:02:03 am Ben Greear wrote: >> The mrst logic introduced in 2.6.33-rc8 in commit >> a712ffbc199849364c46e9112b93b66de08e2c26 causes boot >> to hang on at least this platform: >> >> Intel E5405 CPU >> System Information >> Manufacturer: Supermicro >> Product Name: X7DBU >> >> The cause of the hang is that pci_cap points to itself >> as the next capability, putting the fixed_bar_cap into >> an endless loop. >> >> This patch detects the loop, prints a warning, and >> continues on with useful work. This strategy was >> suggested by Robert Hancock<hancockrwd(a)gmail.com> >> >> This should be a candidate for 2.6.34.y as well. >> >> Signed-off-by: Ben Greear<greearb(a)candelatech.com> >> --- >> :100644 100644 1cdc02c... 9535ba9... M arch/x86/pci/mrst.c >> arch/x86/pci/mrst.c | 11 +++++++++++ >> 1 files changed, 11 insertions(+), 0 deletions(-) >> >> diff --git a/arch/x86/pci/mrst.c b/arch/x86/pci/mrst.c >> index 1cdc02c..9535ba9 100644 >> --- a/arch/x86/pci/mrst.c >> +++ b/arch/x86/pci/mrst.c >> @@ -76,6 +76,17 @@ static int fixed_bar_cap(struct pci_bus *bus, unsigned int devfn) >> return pos; >> } >> >> + if ((pcie_cap>> 20) == 0) >> + break; >> + >> + if ((pcie_cap>> 20)<= pos) { >> + printk(KERN_WARNING "WARNING: mrst: detected loop" >> + " when searching for fixed BAR cap, previous" >> + " position: 0x%x new position: 0x%x" >> + " bus-number: %i devfn: %i\n", >> + pos, pcie_cap>> 20, bus->number, devfn); > > Can you use dev_warn() here to print the device info in the > standard way? There seems to be a different way to do this. Some of the folks who understand this better are working on a patch (I tested something based on HPA's suggestions and it fixed my problem at least.) Thanks, Ben -- Ben Greear <greearb(a)candelatech.com> Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Bjorn Helgaas on 16 Jul 2010 13:50 On Wednesday, July 14, 2010 11:02:03 am Ben Greear wrote: > The mrst logic introduced in 2.6.33-rc8 in commit > a712ffbc199849364c46e9112b93b66de08e2c26 causes boot > to hang on at least this platform: > > Intel E5405 CPU > System Information > Manufacturer: Supermicro > Product Name: X7DBU > > The cause of the hang is that pci_cap points to itself > as the next capability, putting the fixed_bar_cap into > an endless loop. > > This patch detects the loop, prints a warning, and > continues on with useful work. This strategy was > suggested by Robert Hancock <hancockrwd(a)gmail.com> > > This should be a candidate for 2.6.34.y as well. > > Signed-off-by: Ben Greear <greearb(a)candelatech.com> > --- > :100644 100644 1cdc02c... 9535ba9... M arch/x86/pci/mrst.c > arch/x86/pci/mrst.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/pci/mrst.c b/arch/x86/pci/mrst.c > index 1cdc02c..9535ba9 100644 > --- a/arch/x86/pci/mrst.c > +++ b/arch/x86/pci/mrst.c > @@ -76,6 +76,17 @@ static int fixed_bar_cap(struct pci_bus *bus, unsigned int devfn) > return pos; > } > > + if ((pcie_cap >> 20) == 0) > + break; > + > + if ((pcie_cap >> 20) <= pos) { > + printk(KERN_WARNING "WARNING: mrst: detected loop" > + " when searching for fixed BAR cap, previous" > + " position: 0x%x new position: 0x%x" > + " bus-number: %i devfn: %i\n", > + pos, pcie_cap >> 20, bus->number, devfn); Can you use dev_warn() here to print the device info in the standard way? Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Pages: 1 Prev: [GIT PULL] perf fixes Next: [PATCH 1/3] perf probe: Fix error message if get_real_path() failed |