From b931c7bc10a3c29a8ca0e693d4dfb94f17311451 Mon Sep 17 00:00:00 2001 From: Nikunj A Dadhania Date: Thu, 16 Oct 2014 17:10:28 +0530 Subject: [PATCH] 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 --- slof/fs/pci-scan.fs | 11 ++++++----- 1 file 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 ;