| .. | .. |
|---|
| 15 | 15 | #include "pci.h" |
|---|
| 16 | 16 | |
|---|
| 17 | 17 | DECLARE_RWSEM(pci_bus_sem); |
|---|
| 18 | | -EXPORT_SYMBOL_GPL(pci_bus_sem); |
|---|
| 19 | 18 | |
|---|
| 20 | 19 | /* |
|---|
| 21 | 20 | * pci_for_each_dma_alias - Iterate over DMA aliases for a device |
|---|
| .. | .. |
|---|
| 33 | 32 | struct pci_bus *bus; |
|---|
| 34 | 33 | int ret; |
|---|
| 35 | 34 | |
|---|
| 36 | | - ret = fn(pdev, PCI_DEVID(pdev->bus->number, pdev->devfn), data); |
|---|
| 35 | + /* |
|---|
| 36 | + * The device may have an explicit alias requester ID for DMA where the |
|---|
| 37 | + * requester is on another PCI bus. |
|---|
| 38 | + */ |
|---|
| 39 | + pdev = pci_real_dma_dev(pdev); |
|---|
| 40 | + |
|---|
| 41 | + ret = fn(pdev, pci_dev_id(pdev), data); |
|---|
| 37 | 42 | if (ret) |
|---|
| 38 | 43 | return ret; |
|---|
| 39 | 44 | |
|---|
| .. | .. |
|---|
| 42 | 47 | * DMA, iterate over that too. |
|---|
| 43 | 48 | */ |
|---|
| 44 | 49 | if (unlikely(pdev->dma_alias_mask)) { |
|---|
| 45 | | - u8 devfn; |
|---|
| 50 | + unsigned int devfn; |
|---|
| 46 | 51 | |
|---|
| 47 | | - for_each_set_bit(devfn, pdev->dma_alias_mask, U8_MAX) { |
|---|
| 52 | + for_each_set_bit(devfn, pdev->dma_alias_mask, MAX_NR_DEVFNS) { |
|---|
| 48 | 53 | ret = fn(pdev, PCI_DEVID(pdev->bus->number, devfn), |
|---|
| 49 | 54 | data); |
|---|
| 50 | 55 | if (ret) |
|---|
| .. | .. |
|---|
| 88 | 93 | return ret; |
|---|
| 89 | 94 | continue; |
|---|
| 90 | 95 | case PCI_EXP_TYPE_PCIE_BRIDGE: |
|---|
| 91 | | - ret = fn(tmp, |
|---|
| 92 | | - PCI_DEVID(tmp->bus->number, |
|---|
| 93 | | - tmp->devfn), data); |
|---|
| 96 | + ret = fn(tmp, pci_dev_id(tmp), data); |
|---|
| 94 | 97 | if (ret) |
|---|
| 95 | 98 | return ret; |
|---|
| 96 | 99 | continue; |
|---|
| .. | .. |
|---|
| 101 | 104 | PCI_DEVID(tmp->subordinate->number, |
|---|
| 102 | 105 | PCI_DEVFN(0, 0)), data); |
|---|
| 103 | 106 | else |
|---|
| 104 | | - ret = fn(tmp, |
|---|
| 105 | | - PCI_DEVID(tmp->bus->number, |
|---|
| 106 | | - tmp->devfn), data); |
|---|
| 107 | + ret = fn(tmp, pci_dev_id(tmp), data); |
|---|
| 107 | 108 | if (ret) |
|---|
| 108 | 109 | return ret; |
|---|
| 109 | 110 | } |
|---|
| .. | .. |
|---|
| 111 | 112 | |
|---|
| 112 | 113 | return ret; |
|---|
| 113 | 114 | } |
|---|
| 114 | | -EXPORT_SYMBOL_GPL(pci_for_each_dma_alias); |
|---|
| 115 | 115 | |
|---|
| 116 | 116 | static struct pci_bus *pci_do_find_bus(struct pci_bus *bus, unsigned char busnr) |
|---|
| 117 | 117 | { |
|---|
| .. | .. |
|---|
| 241 | 241 | } |
|---|
| 242 | 242 | EXPORT_SYMBOL(pci_get_domain_bus_and_slot); |
|---|
| 243 | 243 | |
|---|
| 244 | | -static int match_pci_dev_by_id(struct device *dev, void *data) |
|---|
| 244 | +static int match_pci_dev_by_id(struct device *dev, const void *data) |
|---|
| 245 | 245 | { |
|---|
| 246 | 246 | struct pci_dev *pdev = to_pci_dev(dev); |
|---|
| 247 | | - struct pci_device_id *id = data; |
|---|
| 247 | + const struct pci_device_id *id = data; |
|---|
| 248 | 248 | |
|---|
| 249 | 249 | if (pci_match_one_device(id, pdev)) |
|---|
| 250 | 250 | return 1; |
|---|