diff options
author | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2014-10-16 17:10:28 +0530 |
---|---|---|
committer | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2014-10-29 16:19:39 +0530 |
commit | b931c7bc10a3c29a8ca0e693d4dfb94f17311451 (patch) | |
tree | 1fe30c226b3558f8f1557e6a34bc5ce7cf08c9a5 /slof | |
parent | 792984914c9937bebd6e70a564777aa883233444 (diff) | |
download | SLOF-b931c7bc10a3c29a8ca0e693d4dfb94f17311451.zip SLOF-b931c7bc10a3c29a8ca0e693d4dfb94f17311451.tar.gz SLOF-b931c7bc10a3c29a8ca0e693d4dfb94f17311451.tar.bz2 |
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>
Diffstat (limited to 'slof')
-rw-r--r-- | slof/fs/pci-scan.fs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/slof/fs/pci-scan.fs b/slof/fs/pci-scan.fs index 7e860f4..8ab8cad 100644 --- a/slof/fs/pci-scan.fs +++ b/slof/fs/pci-scan.fs @@ -231,11 +231,12 @@ DEFER func-pci-bridge-range-props dup set-space \ set the config addr for this device tree entry dup pci-set-slot \ set the slot bit dup pci-htype@ \ read HEADER-Type - 1 and IF \ IF BRIDGE - pci-bridge-setup \ | set up the bridge - ELSE \ ELSE - pci-device-setup \ | set up the device - THEN \ FI + 7f and \ Mask bit 7 - multifunction device + CASE + 0 OF pci-device-setup ENDOF \ | set up the device + 1 OF pci-bridge-setup ENDOF \ | set up the bridge + dup OF dup pci-htype@ pci-out ENDOF + ENDCASE finish-device \ and close the device-tree node ; |