Message ID | alpine.LFD.2.01.0908071116520.3390@localhost.localdomain (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Fri, 7 Aug 2009 11:40:19 -0700 (PDT) Linus Torvalds <torvalds@linux-foundation.org> wrote: [explanation snipped] > So this patch is not something that I'm going to apply to my tree, but > it's worth testing out to just verify that yes, I finally understand > exactly what's going on. Because if I'm right, your warning will now go > away (and it could be replaced by _other_ issues, of course ;). > --- > drivers/pci/pci.c | 8 ++++++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index dbd0f94..89efbb5 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -367,8 +367,12 @@ pci_find_parent_resource(const struct pci_dev *dev, struct resource *res) > continue; /* Wrong type */ > if (!((res->flags ^ r->flags) & IORESOURCE_PREFETCH)) > return r; /* Exact match */ > - if ((res->flags & IORESOURCE_PREFETCH) && !(r->flags & IORESOURCE_PREFETCH)) > - best = r; /* Approximating prefetchable by non-prefetchable */ > + /* We can't insert a non-prefetch resource inside a prefetchable parent .. */ > + if (r->flags & IORESOURCE_PREFETCH) > + continue; > + /* .. but we can put a prefetchable resource inside a non-prefetchable one */ > + if (!best) > + best = r; > } > return best; > } The warning is gone, and /proc/iomem is identical to 2.6.30. I'd say you've hit the nail on the head ;) Thanks! Manuel Lauss -- 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 Tue, 11 Aug 2009, Manuel Lauss wrote: > > > So this patch is not something that I'm going to apply to my tree, but > > it's worth testing out to just verify that yes, I finally understand > > exactly what's going on. Because if I'm right, your warning will now go > > away (and it could be replaced by _other_ issues, of course ;). > > The warning is gone, and /proc/iomem is identical to 2.6.30. > I'd say you've hit the nail on the head ;) Ok, thanks. I'm not going to do anything about it right now, since clearly we've not changed any actual behavior from before. But if you remind me after 2.6.31 is out, I'll look at perhaps making a better "pci_claim_resource()" that actually iterates over the different parent resources and doesn't just try to find one (and then fail if that particular one doesn't work out). Thanks, Linus -- 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
Linus Torvalds wrote: > I'm not going to do anything about it right now, since clearly we've > not changed any actual behavior from before. But if you remind me after > 2.6.31 is out, I'll look at perhaps making a better > "pci_claim_resource()" that actually iterates over the different parent > resources and doesn't just try to find one (and then fail if that > particular one doesn't work out). Just for your information, this issue also affects my (old) Toshiba Satellite A40. With pre-2.6.31 kernels I always had the following in dmesg: pci 0000:00:1d.0: BAR 4: can't allocate resource pci 0000:00:1d.1: BAR 4: can't allocate resource [...] pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.0 BAR 4 (0x0-0x1f), disabling pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.1 BAR 4 (0x0-0x1f), disabling I was very happy to see that for 2.6.31-rc2 those messages were gone. But with .31-rc5 they are back again, with added "address space collision": pci 0000:00:1d.0: BAR 4: address space collision on of device [0xcfe0-0xcfff] pci 0000:00:1d.0: BAR 4: can't allocate resource pci 0000:00:1d.1: BAR 4: address space collision on of device [0xcf80-0xcf9f] pci 0000:00:1d.1: BAR 4: can't allocate resource [...] pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.0 BAR 4 (0x0-0x1f), disabling pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.1 BAR 4 (0x0-0x1f), disabling It's never resulted in things not working, but it would still be nice if it got solved. Please let me know if you'd like anything tested. Cheers, FJP -- 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, 13 Aug 2009, Frans Pop wrote: > > It's never resulted in things not working, but it would still be nice if > it got solved. Please let me know if you'd like anything tested. Did you test the trial-balloon patch I sent to Manuel? It's not the one I'd ever commit, but behavior-wise it's likely very close in practice to a patch that would iterate over possible parent resources (ie there are differences in theory but probably not so many in practice). So testing it on your machine would be sensible. And you might also remind me after 2.6.31 is out. Linus -- 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 Thursday 13 August 2009, Linus Torvalds wrote: > On Thu, 13 Aug 2009, Frans Pop wrote: > > It's never resulted in things not working, but it would still be nice > > if it got solved. Please let me know if you'd like anything tested. > > Did you test the trial-balloon patch I sent to Manuel? I had not, but I've tried it now. And it does not change anything: the errors are still there. So it probably isn't the same issue after all. I'll try to find out exactly which commits made the errors go away with .31-rc2 and reappear with .31-rc5. -- 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
Frans Pop wrote: > With pre-2.6.31 kernels I always had the following in dmesg: > pci 0000:00:1d.0: BAR 4: can't allocate resource > pci 0000:00:1d.1: BAR 4: can't allocate resource > [...] > pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.0 BAR 4 (0x0-0x1f), disabling > pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.1 BAR 4 (0x0-0x1f), disabling > > I was very happy to see that for 2.6.31-rc2 those messages were gone. The commit that resulted in the messages disappearing was: commit a76117dfd687ec4be0a9a05214f3009cc5f73a42 Author: Matthew Wilcox <willy@linux.intel.com> Date: Wed Jun 17 16:33:35 2009 -0400 x86: Use pci_claim_resource > But with .31-rc5 they are back again, with added "address space collision": > pci 0000:00:1d.0: BAR 4: address space collision on of device [0xcfe0-0xcfff] > pci 0000:00:1d.0: BAR 4: can't allocate resource > pci 0000:00:1d.1: BAR 4: address space collision on of device [0xcf80-0xcf9f] > pci 0000:00:1d.1: BAR 4: can't allocate resource > [...] > pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.0 BAR 4 (0x0-0x1f), disabling > pnp 00:08: io resource (0x10-0x1f) overlaps 0000:00:1d.1 BAR 4 (0x0-0x1f), disabling The commit that caused the messages to return is: commit 79896cf42f6a96d7e14f2dc3473443d68d74031d Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Sun Aug 2 14:04:19 2009 -0700 Make pci_claim_resource() use request_resource() rather than insert_resource() The affected devices are the two USB UHCI controllers. Cheers, FJP 00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx- Latency: 0 Region 0: Memory at <unassigned> (32-bit, prefetchable) Capabilities: [40] Vendor Specific Information <?> Kernel driver in use: agpgart-intel Kernel modules: intel-agp 00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02) (prog-if 00 [VGA controller]) Subsystem: Toshiba America Info Systems Device 0002 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 10 Region 0: Memory at d8000000 (32-bit, prefetchable) [size=128M] Region 1: Memory at d0000000 (32-bit, non-prefetchable) [size=512K] Region 2: I/O ports at eff8 [size=8] Capabilities: [d0] Power Management version 1 Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02) Subsystem: Toshiba America Info Systems Device 0002 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Region 0: Memory at 20000000 (32-bit, prefetchable) [disabled] [size=128M] Region 1: Memory at 2c000000 (32-bit, non-prefetchable) [disabled] [size=512K] Capabilities: [d0] Power Management version 1 Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03) (prog-if 00 [UHCI]) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 16 Region 4: I/O ports at 18c0 [size=32] Kernel driver in use: uhci_hcd Kernel modules: uhci-hcd 00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03) (prog-if 00 [UHCI]) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin B routed to IRQ 19 Region 4: I/O ports at 18e0 [size=32] Kernel driver in use: uhci_hcd Kernel modules: uhci-hcd 00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03) (prog-if 20 [EHCI]) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin D routed to IRQ 23 Region 0: Memory at 2c080000 (32-bit, non-prefetchable) [size=1K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [58] Debug port: BAR=1 offset=0080 Kernel driver in use: ehci_hcd Kernel modules: ehci-hcd 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR+ INTx- Latency: 0 Bus: primary=00, secondary=01, subordinate=03, sec-latency=64 I/O behind bridge: 0000c000-0000cfff Memory behind bridge: cff00000-cfffffff Prefetchable memory behind bridge: 28000000-2bffffff Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Kernel modules: shpchp 00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03) Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Kernel modules: iTCO_wdt, intel-rng 00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03) (prog-if 8a [Master SecP PriP]) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 18 Region 0: I/O ports at 01f0 [size=8] Region 1: I/O ports at 03f4 [size=1] Region 2: I/O ports at 0170 [size=8] Region 3: I/O ports at 0374 [size=1] Region 4: I/O ports at bfa0 [size=16] Region 5: Memory at 2c080400 (32-bit, non-prefetchable) [size=1K] Kernel driver in use: PIIX_IDE Kernel modules: piix, ata_piix 00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03) Subsystem: Toshiba America Info Systems Device 0241 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin B routed to IRQ 255 Region 0: I/O ports at 1000 [disabled] [size=256] Region 1: I/O ports at 1880 [disabled] [size=64] Region 2: Memory at 2c080800 (32-bit, non-prefetchable) [disabled] [size=512] Region 3: Memory at 2c080a00 (32-bit, non-prefetchable) [disabled] [size=256] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03) (prog-if 00 [Generic]) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin B routed to IRQ 17 Region 0: I/O ports at 1400 [size=256] Region 1: I/O ports at 1800 [size=128] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- 01:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 83) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64 (2000ns min, 14000ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 20 Region 0: Memory at cffff000 (32-bit, non-prefetchable) [size=4K] Region 1: I/O ports at cf40 [size=64] Capabilities: [dc] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=2 PME- Kernel driver in use: e100 01:0b.0 CardBus bridge: Toshiba America Info Systems ToPIC100 PCI to Cardbus Bridge with ZV Support (rev 33) Subsystem: Toshiba America Info Systems Device 0001 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 168 Interrupt: pin A routed to IRQ 18 Region 0: Memory at cff00000 (32-bit, non-prefetchable) [size=4K] Bus: primary=01, secondary=02, subordinate=02, sec-latency=0 Memory window 0: 28000000-2bfff000 (prefetchable) Memory window 1: 30000000-33fff000 I/O window 0: 0000c000-0000c0ff I/O window 1: 0000c400-0000c4ff BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt- PostWrite+ 16-bit legacy interface ports at 0001 Kernel driver in use: yenta_cardbus Kernel modules: yenta_socket 02:00.0 Ethernet controller: Atheros Communications Inc. AR5212/AR5213 Multiprotocol MAC/baseband processor (rev 01) Subsystem: Global Sun Technology Inc Device 7103 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 168 (2500ns min, 7000ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 18 Region 0: Memory at 30000000 (32-bit, non-prefetchable) [size=64K] Capabilities: [44] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=2 PME- Kernel driver in use: ath5k Kernel modules: ath5k
On Fri, 14 Aug 2009, Frans Pop wrote: > > The commit that resulted in the messages disappearing was: > commit a76117dfd687ec4be0a9a05214f3009cc5f73a42 > Author: Matthew Wilcox <willy@linux.intel.com> > Date: Wed Jun 17 16:33:35 2009 -0400 > x86: Use pci_claim_resource > > The commit that caused the messages to return is: > commit 79896cf42f6a96d7e14f2dc3473443d68d74031d > Author: Linus Torvalds <torvalds@linux-foundation.org> > Date: Sun Aug 2 14:04:19 2009 -0700 > Make pci_claim_resource() use request_resource() rather than insert_resource() > > The affected devices are the two USB UHCI controllers. Ok, it's the same behavior that mano had, but since the warning didn't go away with the trial patch, it's not exactly the same situation. Can you send - output of /proc/ioports both with the current kernel (or the 2.6.30 kernel - they should be identical) and with one of the kernels in between that didn't warn - send the full bootup dmesg with CONFIG_PCI_DEBUG enabled and we can probably figure it out. That said, since it's not a regression, I'm not going to _do_ anything about it until after 2.6.31, but I might have a test-patch for you to try ot something. Linus -- 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
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index dbd0f94..89efbb5 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -367,8 +367,12 @@ pci_find_parent_resource(const struct pci_dev *dev, struct resource *res) continue; /* Wrong type */ if (!((res->flags ^ r->flags) & IORESOURCE_PREFETCH)) return r; /* Exact match */ - if ((res->flags & IORESOURCE_PREFETCH) && !(r->flags & IORESOURCE_PREFETCH)) - best = r; /* Approximating prefetchable by non-prefetchable */ + /* We can't insert a non-prefetch resource inside a prefetchable parent .. */ + if (r->flags & IORESOURCE_PREFETCH) + continue; + /* .. but we can put a prefetchable resource inside a non-prefetchable one */ + if (!best) + best = r; } return best; }