pci: scan only type 0 and type 1

In certain cases when a PCI device is passthru and is frozen before it
reaches SLOF.  All PCI read result reading FF. This exposed a bug in
the pci scan code which would wrongly take it as a pci brigde and try
to scan devices below that and that would enter an infinite loop.

Explicitly scan for type 0/1 and rest are not supported.

Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
This commit is contained in:
Nikunj A Dadhania 2014-10-16 17:10:28 +05:30
parent 792984914c
commit b931c7bc10
1 changed files with 6 additions and 5 deletions

View File

@ -231,11 +231,12 @@ DEFER func-pci-bridge-range-props
dup set-space \ set the config addr for this device tree entry dup set-space \ set the config addr for this device tree entry
dup pci-set-slot \ set the slot bit dup pci-set-slot \ set the slot bit
dup pci-htype@ \ read HEADER-Type dup pci-htype@ \ read HEADER-Type
1 and IF \ IF BRIDGE 7f and \ Mask bit 7 - multifunction device
pci-bridge-setup \ | set up the bridge CASE
ELSE \ ELSE 0 OF pci-device-setup ENDOF \ | set up the device
pci-device-setup \ | set up the device 1 OF pci-bridge-setup ENDOF \ | set up the bridge
THEN \ FI dup OF dup pci-htype@ pci-out ENDOF
ENDCASE
finish-device \ and close the device-tree node finish-device \ and close the device-tree node
; ;