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:
parent
792984914c
commit
b931c7bc10
|
@ -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
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue