diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2025-07-31 16:11:43 -0500 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2025-07-31 16:11:43 -0500 |
| commit | 29ccb7b97e2734e411a5e8e5cec1c8b7b2686503 (patch) | |
| tree | 79043a9354e9048c5d49d8da5c0f0b4827fde595 /drivers/pci/pci.c | |
| parent | 618c1ead12a44c6a16922e7853943c79b202c995 (diff) | |
| parent | 84f890414a12b8d1480045b92a5e4e6ac4ab3419 (diff) | |
Merge branch 'pci/resources'
- Restore VF resizable BAR state after reset (Michał Winiarski)
- Add pci_resource_num_to_vf_bar() and pci_resource_num_from_vf_bar() to
convert between VF BAR number and the dev->resource[] index (Michał
Winiarski)
- Allow IOV resources (VF BARs) to be resized (Michał Winiarski)
- Add pci_iov_vf_bar_set_size() so drivers can control VF BAR size (Michał
Winiarski)
* pci/resources:
PCI/IOV: Allow drivers to control VF BAR size
PCI/IOV: Check that VF BAR fits within the reservation
PCI/IOV: Allow IOV resources to be resized in pci_resize_resource()
PCI/IOV: Add pci_resource_num_to_vf_bar() to convert VF BAR number to/from IOV resource
PCI/IOV: Restore VF resizable BAR state after reset
Diffstat (limited to 'drivers/pci/pci.c')
| -rw-r--r-- | drivers/pci/pci.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 0fe80f6a6c47..a6004513a50d 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3756,7 +3756,13 @@ static int pci_rebar_find_pos(struct pci_dev *pdev, int bar) unsigned int pos, nbars, i; u32 ctrl; - pos = pdev->rebar_cap; + if (pci_resource_is_iov(bar)) { + pos = pci_iov_vf_rebar_cap(pdev); + bar = pci_resource_num_to_vf_bar(bar); + } else { + pos = pdev->rebar_cap; + } + if (!pos) return -ENOTSUPP; |