Re: Rescan PCIE bus to find recently powered on device.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux