aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2012-09-17 22:20:31 -0700
committerYinghai Lu <yinghai@kernel.org>2012-09-17 22:20:31 -0700
commit02c3c764de79aa21c770f5bdfb2dbcfe5dd39b14 (patch)
treeb9f522bc9dedb0ce49ccb5d88a60419d22cdb70d
parentea36ae81f8b9b4123a3f9f43d7e9efab1972030b (diff)
downloadlinux-yinghai-02c3c764de79aa21c770f5bdfb2dbcfe5dd39b14.tar.gz
PCI: Update pci_resource_bar() to support addon_resource
need to loop addon resource list to retrieve reg_addr in it. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
-rw-r--r--drivers/pci/pci.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 0bb3dc9994ef1..6b0a9aef1faa8 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3573,6 +3573,13 @@ int pci_resource_bar(struct pci_dev *dev, int resno, enum pci_bar_type *type)
reg = pci_iov_resource_bar(dev, resno, type);
if (reg)
return reg;
+ } else if (resno >= PCI_NUM_RESOURCES) {
+ struct resource *res = pci_dev_resource_n(dev, resno);
+
+ if (res) {
+ *type = pci_bar_unknown;
+ return to_pci_dev_addon_resource(res)->reg_addr;
+ }
}
dev_err(&dev->dev, "BAR %d: invalid resource\n", resno);