diff options
author | Yinghai Lu <yinghai@kernel.org> | 2012-09-17 22:20:31 -0700 |
---|---|---|
committer | Yinghai Lu <yinghai@kernel.org> | 2012-09-17 22:20:31 -0700 |
commit | 02c3c764de79aa21c770f5bdfb2dbcfe5dd39b14 (patch) | |
tree | b9f522bc9dedb0ce49ccb5d88a60419d22cdb70d | |
parent | ea36ae81f8b9b4123a3f9f43d7e9efab1972030b (diff) | |
download | linux-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.c | 7 |
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); |