On Sat, Apr 20, 2013 at 8:21 PM, Jiang Liu <liuj97@xxxxxxxxx> wrote: > On 04/21/2013 04:52 AM, Frank Rizzo wrote: >> 00:02.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (ext gfx port 0) (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, Cache Line Size: 64 bytes >> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 >> I/O behind bridge: 0000f000-00000fff >> Memory behind bridge: fbb00000-fbdfffff >> Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff >> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR- >> BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B- >> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- >> Capabilities: [50] Power Management version 3 >> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) >> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- >> Capabilities: [58] Express (v2) Root Port (Slot+), MSI 00 >> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us >> ExtTag+ RBE+ FLReset- >> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- >> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ >> MaxPayload 128 bytes, MaxReadReq 128 bytes >> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- >> LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Latency L0 <64ns, L1 <1us >> ClockPM- Surprise- LLActRep+ BwNot+ >> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ >> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- >> LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt- >> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- >> Slot #2, PowerLimit 75.000W; Interlock- NoCompl+ > Hi Frank, > According to "Hotplug-" flag above, the slot for 00:02.0 doesn't support hotplug. > Actually no slot in this system supports PCI devic hotplug at all. So simply powering on > the device connected to the adapter after booting won't work. Hotplug support in the bridge just means we can *automatically* detect hotplug events. Powering on a connected device and manually rescanning may still work. But the first problem is that the 00:02.0 root port is left disabled if there's nothing connected at boot-time. This is a BIOS issue; it must be using a chipset-specific way to disable the port completely, and Linux has no way to enable it. If the BIOS had left 00:02.0 enabled, it should work to power-on the device below it, and even though 00:02.0 does not support hotplug, we should be able to find the device below it with a manual rescan, e.g., "echo 1 > /sys/bus/pci/rescan". (There might still be resource issues with actually *using* the device, but we should at least find it.) If 00:02.0 supported hotplug as well, then we would be able to to the rescan automatically when the device below it powers up. It's possible that the BIOS treats 00:02.0 specially because it's intended as a graphics slot. So if it's physically possible, you might try swapping your external device connection with another device that is always present at boot, e.g., the JMicron 1394 firewire device at 03:00.0 or the Realtek NIC at 04:00.0. Then the graphics slot would be populated, so the BIOS should configure the 00:02.0 root port, and it might leave the 00:05.0 or 00:06.0 root port configured even if the external device is unpowered. If that's the case, you should be able to power-up the external device later, and a manual rescan should find it. Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html