diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-22 19:39:28 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-22 19:39:28 -0500 |
| commit | e1ba84597c9012b9f9075aac283ac7537d7561ba (patch) | |
| tree | 41ab1a74c71ce55e72ef73424346e8e0a7f4616e /arch | |
| parent | 60eaa0190f6b39dce18eb1975d9773ed8bc9a534 (diff) | |
| parent | cef09b808e584c13b7126b83dc37c80b00234137 (diff) | |
Merge tag 'pci-v3.14-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
"PCI changes for the v3.14 merge window:
Resource management
- Change pci_bus_region addresses to dma_addr_t (Bjorn Helgaas)
- Support 64-bit AGP BARs (Bjorn Helgaas, Yinghai Lu)
- Add pci_bus_address() to get bus address of a BAR (Bjorn Helgaas)
- Use pci_resource_start() for CPU address of AGP BARs (Bjorn Helgaas)
- Enforce bus address limits in resource allocation (Yinghai Lu)
- Allocate 64-bit BARs above 4G when possible (Yinghai Lu)
- Convert pcibios_resource_to_bus() to take pci_bus, not pci_dev (Yinghai Lu)
PCI device hotplug
- Major rescan/remove locking update (Rafael J. Wysocki)
- Make ioapic builtin only (not modular) (Yinghai Lu)
- Fix release/free issues (Yinghai Lu)
- Clean up pciehp (Bjorn Helgaas)
- Announce pciehp slot info during enumeration (Bjorn Helgaas)
MSI
- Add pci_msi_vec_count(), pci_msix_vec_count() (Alexander Gordeev)
- Add pci_enable_msi_range(), pci_enable_msix_range() (Alexander Gordeev)
- Deprecate "tri-state" interfaces: fail/success/fail+info (Alexander Gordeev)
- Export MSI mode using attributes, not kobjects (Greg Kroah-Hartman)
- Drop "irq" param from *_restore_msi_irqs() (DuanZhenzhong)
SR-IOV
- Clear NumVFs when disabling SR-IOV in sriov_init() (ethan.zhao)
Virtualization
- Add support for save/restore of extended capabilities (Alex Williamson)
- Add Virtual Channel to save/restore support (Alex Williamson)
- Never treat a VF as a multifunction device (Alex Williamson)
- Add pci_try_reset_function(), et al (Alex Williamson)
AER
- Ignore non-PCIe error sources (Betty Dall)
- Support ACPI HEST error sources for domains other than 0 (Betty Dall)
- Consolidate HEST error source parsers (Bjorn Helgaas)
- Add a TLP header print helper (Borislav Petkov)
Freescale i.MX6
- Remove unnecessary code (Fabio Estevam)
- Make reset-gpio optional (Marek Vasut)
- Report "link up" only after link training completes (Marek Vasut)
- Start link in Gen1 before negotiating for Gen2 mode (Marek Vasut)
- Fix PCIe startup code (Richard Zhu)
Marvell MVEBU
- Remove duplicate of_clk_get_by_name() call (Andrew Lunn)
- Drop writes to bridge Secondary Status register (Jason Gunthorpe)
- Obey bridge PCI_COMMAND_MEM and PCI_COMMAND_IO bits (Jason Gunthorpe)
- Support a bridge with no IO port window (Jason Gunthorpe)
- Use max_t() instead of max(resource_size_t,) (Jingoo Han)
- Remove redundant of_match_ptr (Sachin Kamat)
- Call pci_ioremap_io() at startup instead of dynamically (Thomas Petazzoni)
NVIDIA Tegra
- Disable Gen2 for Tegra20 and Tegra30 (Eric Brower)
Renesas R-Car
- Add runtime PM support (Valentine Barshak)
- Fix rcar_pci_probe() return value check (Wei Yongjun)
Synopsys DesignWare
- Fix crash in dw_msi_teardown_irq() (Bjørn Erik Nilsen)
- Remove redundant call to pci_write_config_word() (Bjørn Erik Nilsen)
- Fix missing MSI IRQs (Harro Haan)
- Add dw_pcie prefix before cfg_read/write (Pratyush Anand)
- Fix I/O transfers by using CPU (not realio) address (Pratyush Anand)
- Whitespace cleanup (Jingoo Han)
EISA
- Call put_device() if device_register() fails (Levente Kurusa)
- Revert EISA initialization breakage ((Bjorn Helgaas)
Miscellaneous
- Remove unused code, including PCIe 3.0 interfaces (Stephen Hemminger)
- Prevent bus conflicts while checking for bridge apertures (Bjorn Helgaas)
- Stop clearing bridge Secondary Status when setting up I/O aperture (Bjorn Helgaas)
- Use dev_is_pci() to identify PCI devices (Yijing Wang)
- Deprecate DEFINE_PCI_DEVICE_TABLE (Joe Perches)
- Update documentation 00-INDEX (Erik Ekman)"
* tag 'pci-v3.14-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (119 commits)
Revert "EISA: Initialize device before its resources"
Revert "EISA: Log device resources in dmesg"
vfio-pci: Use pci "try" reset interface
PCI: Check parent kobject in pci_destroy_dev()
xen/pcifront: Use global PCI rescan-remove locking
powerpc/eeh: Use global PCI rescan-remove locking
PCI: Fix pci_check_and_unmask_intx() comment typos
PCI: Add pci_try_reset_function(), pci_try_reset_slot(), pci_try_reset_bus()
MPT / PCI: Use pci_stop_and_remove_bus_device_locked()
platform / x86: Use global PCI rescan-remove locking
PCI: hotplug: Use global PCI rescan-remove locking
pcmcia: Use global PCI rescan-remove locking
ACPI / hotplug / PCI: Use global PCI rescan-remove locking
ACPI / PCI: Use global PCI rescan-remove locking in PCI root hotplug
PCI: Add global pci_lock_rescan_remove()
PCI: Cleanup pci.h whitespace
PCI: Reorder so actual code comes before stubs
PCI/AER: Support ACPI HEST AER error sources for PCI domains other than 0
ACPICA: Add helper macros to extract bus/segment numbers from HEST table.
PCI: Make local functions static
...
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/alpha/kernel/pci-sysfs.c | 4 | ||||
| -rw-r--r-- | arch/alpha/kernel/pci_iommu.c | 2 | ||||
| -rw-r--r-- | arch/arm/common/it8152.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-ixp4xx/common-pci.c | 6 | ||||
| -rw-r--r-- | arch/ia64/hp/common/sba_iommu.c | 2 | ||||
| -rw-r--r-- | arch/ia64/sn/pci/pci_dma.c | 24 | ||||
| -rw-r--r-- | arch/parisc/kernel/drivers.c | 22 | ||||
| -rw-r--r-- | arch/powerpc/kernel/eeh_driver.c | 19 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci-common.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/kernel/pci_of_scan.c | 4 | ||||
| -rw-r--r-- | arch/s390/pci/pci.c | 4 | ||||
| -rw-r--r-- | arch/sparc/kernel/pci.c | 6 | ||||
| -rw-r--r-- | arch/x86/include/asm/pci.h | 3 | ||||
| -rw-r--r-- | arch/x86/include/asm/x86_init.h | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/x86_init.c | 4 | ||||
| -rw-r--r-- | arch/x86/pci/xen.c | 2 |
17 files changed, 57 insertions, 59 deletions
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c index 2b183b0d3207..99e8d4796c96 100644 --- a/arch/alpha/kernel/pci-sysfs.c +++ b/arch/alpha/kernel/pci-sysfs.c | |||
| @@ -83,7 +83,7 @@ static int pci_mmap_resource(struct kobject *kobj, | |||
| 83 | if (iomem_is_exclusive(res->start)) | 83 | if (iomem_is_exclusive(res->start)) |
| 84 | return -EINVAL; | 84 | return -EINVAL; |
| 85 | 85 | ||
| 86 | pcibios_resource_to_bus(pdev, &bar, res); | 86 | pcibios_resource_to_bus(pdev->bus, &bar, res); |
| 87 | vma->vm_pgoff += bar.start >> (PAGE_SHIFT - (sparse ? 5 : 0)); | 87 | vma->vm_pgoff += bar.start >> (PAGE_SHIFT - (sparse ? 5 : 0)); |
| 88 | mmap_type = res->flags & IORESOURCE_MEM ? pci_mmap_mem : pci_mmap_io; | 88 | mmap_type = res->flags & IORESOURCE_MEM ? pci_mmap_mem : pci_mmap_io; |
| 89 | 89 | ||
| @@ -139,7 +139,7 @@ static int sparse_mem_mmap_fits(struct pci_dev *pdev, int num) | |||
| 139 | long dense_offset; | 139 | long dense_offset; |
| 140 | unsigned long sparse_size; | 140 | unsigned long sparse_size; |
| 141 | 141 | ||
| 142 | pcibios_resource_to_bus(pdev, &bar, &pdev->resource[num]); | 142 | pcibios_resource_to_bus(pdev->bus, &bar, &pdev->resource[num]); |
| 143 | 143 | ||
| 144 | /* All core logic chips have 4G sparse address space, except | 144 | /* All core logic chips have 4G sparse address space, except |
| 145 | CIA which has 16G (see xxx_SPARSE_MEM and xxx_DENSE_MEM | 145 | CIA which has 16G (see xxx_SPARSE_MEM and xxx_DENSE_MEM |
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index a21d0ab3b19e..eddee7720343 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c | |||
| @@ -325,7 +325,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size, | |||
| 325 | /* Helper for generic DMA-mapping functions. */ | 325 | /* Helper for generic DMA-mapping functions. */ |
| 326 | static struct pci_dev *alpha_gendev_to_pci(struct device *dev) | 326 | static struct pci_dev *alpha_gendev_to_pci(struct device *dev) |
| 327 | { | 327 | { |
| 328 | if (dev && dev->bus == &pci_bus_type) | 328 | if (dev && dev_is_pci(dev)) |
| 329 | return to_pci_dev(dev); | 329 | return to_pci_dev(dev); |
| 330 | 330 | ||
| 331 | /* Assume that non-PCI devices asking for DMA are either ISA or EISA, | 331 | /* Assume that non-PCI devices asking for DMA are either ISA or EISA, |
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index 001f4913799c..5114b68e99d5 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c | |||
| @@ -257,7 +257,7 @@ static int it8152_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t s | |||
| 257 | */ | 257 | */ |
| 258 | static int it8152_pci_platform_notify(struct device *dev) | 258 | static int it8152_pci_platform_notify(struct device *dev) |
| 259 | { | 259 | { |
| 260 | if (dev->bus == &pci_bus_type) { | 260 | if (dev_is_pci(dev)) { |
| 261 | if (dev->dma_mask) | 261 | if (dev->dma_mask) |
| 262 | *dev->dma_mask = (SZ_64M - 1) | PHYS_OFFSET; | 262 | *dev->dma_mask = (SZ_64M - 1) | PHYS_OFFSET; |
| 263 | dev->coherent_dma_mask = (SZ_64M - 1) | PHYS_OFFSET; | 263 | dev->coherent_dma_mask = (SZ_64M - 1) | PHYS_OFFSET; |
| @@ -268,7 +268,7 @@ static int it8152_pci_platform_notify(struct device *dev) | |||
| 268 | 268 | ||
| 269 | static int it8152_pci_platform_notify_remove(struct device *dev) | 269 | static int it8152_pci_platform_notify_remove(struct device *dev) |
| 270 | { | 270 | { |
| 271 | if (dev->bus == &pci_bus_type) | 271 | if (dev_is_pci(dev)) |
| 272 | dmabounce_unregister_dev(dev); | 272 | dmabounce_unregister_dev(dev); |
| 273 | 273 | ||
| 274 | return 0; | 274 | return 0; |
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index 6d6bde3e15fa..200970d56f6d 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
| @@ -326,7 +326,7 @@ static int ixp4xx_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t s | |||
| 326 | */ | 326 | */ |
| 327 | static int ixp4xx_pci_platform_notify(struct device *dev) | 327 | static int ixp4xx_pci_platform_notify(struct device *dev) |
| 328 | { | 328 | { |
| 329 | if(dev->bus == &pci_bus_type) { | 329 | if (dev_is_pci(dev)) { |
| 330 | *dev->dma_mask = SZ_64M - 1; | 330 | *dev->dma_mask = SZ_64M - 1; |
| 331 | dev->coherent_dma_mask = SZ_64M - 1; | 331 | dev->coherent_dma_mask = SZ_64M - 1; |
| 332 | dmabounce_register_dev(dev, 2048, 4096, ixp4xx_needs_bounce); | 332 | dmabounce_register_dev(dev, 2048, 4096, ixp4xx_needs_bounce); |
| @@ -336,9 +336,9 @@ static int ixp4xx_pci_platform_notify(struct device *dev) | |||
| 336 | 336 | ||
| 337 | static int ixp4xx_pci_platform_notify_remove(struct device *dev) | 337 | static int ixp4xx_pci_platform_notify_remove(struct device *dev) |
| 338 | { | 338 | { |
| 339 | if(dev->bus == &pci_bus_type) { | 339 | if (dev_is_pci(dev)) |
| 340 | dmabounce_unregister_dev(dev); | 340 | dmabounce_unregister_dev(dev); |
| 341 | } | 341 | |
| 342 | return 0; | 342 | return 0; |
| 343 | } | 343 | } |
| 344 | 344 | ||
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index 4c530a82fc46..8e858b593e4f 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
| @@ -255,7 +255,7 @@ static u64 prefetch_spill_page; | |||
| 255 | #endif | 255 | #endif |
| 256 | 256 | ||
| 257 | #ifdef CONFIG_PCI | 257 | #ifdef CONFIG_PCI |
| 258 | # define GET_IOC(dev) (((dev)->bus == &pci_bus_type) \ | 258 | # define GET_IOC(dev) ((dev_is_pci(dev)) \ |
| 259 | ? ((struct ioc *) PCI_CONTROLLER(to_pci_dev(dev))->iommu) : NULL) | 259 | ? ((struct ioc *) PCI_CONTROLLER(to_pci_dev(dev))->iommu) : NULL) |
| 260 | #else | 260 | #else |
| 261 | # define GET_IOC(dev) NULL | 261 | # define GET_IOC(dev) NULL |
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c index 3290d6e00c31..d0853e8e8623 100644 --- a/arch/ia64/sn/pci/pci_dma.c +++ b/arch/ia64/sn/pci/pci_dma.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | */ | 34 | */ |
| 35 | static int sn_dma_supported(struct device *dev, u64 mask) | 35 | static int sn_dma_supported(struct device *dev, u64 mask) |
| 36 | { | 36 | { |
| 37 | BUG_ON(dev->bus != &pci_bus_type); | 37 | BUG_ON(!dev_is_pci(dev)); |
| 38 | 38 | ||
| 39 | if (mask < 0x7fffffff) | 39 | if (mask < 0x7fffffff) |
| 40 | return 0; | 40 | return 0; |
| @@ -50,7 +50,7 @@ static int sn_dma_supported(struct device *dev, u64 mask) | |||
| 50 | */ | 50 | */ |
| 51 | int sn_dma_set_mask(struct device *dev, u64 dma_mask) | 51 | int sn_dma_set_mask(struct device *dev, u64 dma_mask) |
| 52 | { | 52 | { |
| 53 | BUG_ON(dev->bus != &pci_bus_type); | 53 | BUG_ON(!dev_is_pci(dev)); |
| 54 | 54 | ||
| 55 | if (!sn_dma_supported(dev, dma_mask)) | 55 | if (!sn_dma_supported(dev, dma_mask)) |
| 56 | return 0; | 56 | return 0; |
| @@ -85,7 +85,7 @@ static void *sn_dma_alloc_coherent(struct device *dev, size_t size, | |||
| 85 | struct pci_dev *pdev = to_pci_dev(dev); | 85 | struct pci_dev *pdev = to_pci_dev(dev); |
| 86 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); | 86 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); |
| 87 | 87 | ||
| 88 | BUG_ON(dev->bus != &pci_bus_type); | 88 | BUG_ON(!dev_is_pci(dev)); |
| 89 | 89 | ||
| 90 | /* | 90 | /* |
| 91 | * Allocate the memory. | 91 | * Allocate the memory. |
| @@ -143,7 +143,7 @@ static void sn_dma_free_coherent(struct device *dev, size_t size, void *cpu_addr | |||
| 143 | struct pci_dev *pdev = to_pci_dev(dev); | 143 | struct pci_dev *pdev = to_pci_dev(dev); |
| 144 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); | 144 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); |
| 145 | 145 | ||
| 146 | BUG_ON(dev->bus != &pci_bus_type); | 146 | BUG_ON(!dev_is_pci(dev)); |
| 147 | 147 | ||
| 148 | provider->dma_unmap(pdev, dma_handle, 0); | 148 | provider->dma_unmap(pdev, dma_handle, 0); |
| 149 | free_pages((unsigned long)cpu_addr, get_order(size)); | 149 | free_pages((unsigned long)cpu_addr, get_order(size)); |
| @@ -187,7 +187,7 @@ static dma_addr_t sn_dma_map_page(struct device *dev, struct page *page, | |||
| 187 | 187 | ||
| 188 | dmabarr = dma_get_attr(DMA_ATTR_WRITE_BARRIER, attrs); | 188 | dmabarr = dma_get_attr(DMA_ATTR_WRITE_BARRIER, attrs); |
| 189 | 189 | ||
| 190 | BUG_ON(dev->bus != &pci_bus_type); | 190 | BUG_ON(!dev_is_pci(dev)); |
| 191 | 191 | ||
| 192 | phys_addr = __pa(cpu_addr); | 192 | phys_addr = __pa(cpu_addr); |
| 193 | if (dmabarr) | 193 | if (dmabarr) |
| @@ -223,7 +223,7 @@ static void sn_dma_unmap_page(struct device *dev, dma_addr_t dma_addr, | |||
| 223 | struct pci_dev *pdev = to_pci_dev(dev); | 223 | struct pci_dev *pdev = to_pci_dev(dev); |
| 224 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); | 224 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); |
| 225 | 225 | ||
| 226 | BUG_ON(dev->bus != &pci_bus_type); | 226 | BUG_ON(!dev_is_pci(dev)); |
| 227 | 227 | ||
| 228 | provider->dma_unmap(pdev, dma_addr, dir); | 228 | provider->dma_unmap(pdev, dma_addr, dir); |
| 229 | } | 229 | } |
| @@ -247,7 +247,7 @@ static void sn_dma_unmap_sg(struct device *dev, struct scatterlist *sgl, | |||
| 247 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); | 247 | struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev); |
| 248 | struct scatterlist *sg; | 248 | struct scatterlist *sg; |
| 249 | 249 | ||
| 250 | BUG_ON(dev->bus != &pci_bus_type); | 250 | BUG_ON(!dev_is_pci(dev)); |
| 251 | 251 | ||
| 252 | for_each_sg(sgl, sg, nhwentries, i) { | 252 | for_each_sg(sgl, sg, nhwentries, i) { |
| 253 | provider->dma_unmap(pdev, sg->dma_address, dir); | 253 | provider->dma_unmap(pdev, sg->dma_address, dir); |
| @@ -284,7 +284,7 @@ static int sn_dma_map_sg(struct device *dev, struct scatterlist *sgl, | |||
| 284 | 284 | ||
| 285 | dmabarr = dma_get_attr(DMA_ATTR_WRITE_BARRIER, attrs); | 285 | dmabarr = dma_get_attr(DMA_ATTR_WRITE_BARRIER, attrs); |
| 286 | 286 | ||
| 287 | BUG_ON(dev->bus != &pci_bus_type); | 287 | BUG_ON(!dev_is_pci(dev)); |
| 288 | 288 | ||
| 289 | /* | 289 | /* |
| 290 | * Setup a DMA address for each entry in the scatterlist. | 290 | * Setup a DMA address for each entry in the scatterlist. |
| @@ -323,26 +323,26 @@ static int sn_dma_map_sg(struct device *dev, struct scatterlist *sgl, | |||
| 323 | static void sn_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, | 323 | static void sn_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, |
| 324 | size_t size, enum dma_data_direction dir) | 324 | size_t size, enum dma_data_direction dir) |
| 325 | { | 325 | { |
| 326 | BUG_ON(dev->bus != &pci_bus_type); | 326 | BUG_ON(!dev_is_pci(dev)); |
| 327 | } | 327 | } |
| 328 | 328 | ||
| 329 | static void sn_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, | 329 | static void sn_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, |
| 330 | size_t size, | 330 | size_t size, |
| 331 | enum dma_data_direction dir) | 331 | enum dma_data_direction dir) |
| 332 | { | 332 | { |
| 333 | BUG_ON(dev->bus != &pci_bus_type); | 333 | BUG_ON(!dev_is_pci(dev)); |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | static void sn_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, | 336 | static void sn_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, |
| 337 | int nelems, enum dma_data_direction dir) | 337 | int nelems, enum dma_data_direction dir) |
| 338 | { | 338 | { |
| 339 | BUG_ON(dev->bus != &pci_bus_type); | 339 | BUG_ON(!dev_is_pci(dev)); |
| 340 | } | 340 | } |
| 341 | 341 | ||
| 342 | static void sn_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, | 342 | static void sn_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, |
| 343 | int nelems, enum dma_data_direction dir) | 343 | int nelems, enum dma_data_direction dir) |
| 344 | { | 344 | { |
| 345 | BUG_ON(dev->bus != &pci_bus_type); | 345 | BUG_ON(!dev_is_pci(dev)); |
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | static int sn_dma_mapping_error(struct device *dev, dma_addr_t dma_addr) | 348 | static int sn_dma_mapping_error(struct device *dev, dma_addr_t dma_addr) |
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index 14285caec71a..dba508fe1683 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
| @@ -282,18 +282,6 @@ find_pa_parent_type(const struct parisc_device *padev, int type) | |||
| 282 | return NULL; | 282 | return NULL; |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | #ifdef CONFIG_PCI | ||
| 286 | static inline int is_pci_dev(struct device *dev) | ||
| 287 | { | ||
| 288 | return dev->bus == &pci_bus_type; | ||
| 289 | } | ||
| 290 | #else | ||
| 291 | static inline int is_pci_dev(struct device *dev) | ||
| 292 | { | ||
| 293 | return 0; | ||
| 294 | } | ||
| 295 | #endif | ||
| 296 | |||
| 297 | /* | 285 | /* |
| 298 | * get_node_path fills in @path with the firmware path to the device. | 286 | * get_node_path fills in @path with the firmware path to the device. |
| 299 | * Note that if @node is a parisc device, we don't fill in the 'mod' field. | 287 | * Note that if @node is a parisc device, we don't fill in the 'mod' field. |
| @@ -306,7 +294,7 @@ static void get_node_path(struct device *dev, struct hardware_path *path) | |||
| 306 | int i = 5; | 294 | int i = 5; |
| 307 | memset(&path->bc, -1, 6); | 295 | memset(&path->bc, -1, 6); |
| 308 | 296 | ||
| 309 | if (is_pci_dev(dev)) { | 297 | if (dev_is_pci(dev)) { |
| 310 | unsigned int devfn = to_pci_dev(dev)->devfn; | 298 | unsigned int devfn = to_pci_dev(dev)->devfn; |
| 311 | path->mod = PCI_FUNC(devfn); | 299 | path->mod = PCI_FUNC(devfn); |
| 312 | path->bc[i--] = PCI_SLOT(devfn); | 300 | path->bc[i--] = PCI_SLOT(devfn); |
| @@ -314,7 +302,7 @@ static void get_node_path(struct device *dev, struct hardware_path *path) | |||
| 314 | } | 302 | } |
| 315 | 303 | ||
| 316 | while (dev != &root) { | 304 | while (dev != &root) { |
| 317 | if (is_pci_dev(dev)) { | 305 | if (dev_is_pci(dev)) { |
| 318 | unsigned int devfn = to_pci_dev(dev)->devfn; | 306 | unsigned int devfn = to_pci_dev(dev)->devfn; |
| 319 | path->bc[i--] = PCI_SLOT(devfn) | (PCI_FUNC(devfn)<< 5); | 307 | path->bc[i--] = PCI_SLOT(devfn) | (PCI_FUNC(devfn)<< 5); |
| 320 | } else if (dev->bus == &parisc_bus_type) { | 308 | } else if (dev->bus == &parisc_bus_type) { |
| @@ -695,7 +683,7 @@ static int check_parent(struct device * dev, void * data) | |||
| 695 | if (dev->bus == &parisc_bus_type) { | 683 | if (dev->bus == &parisc_bus_type) { |
| 696 | if (match_parisc_device(dev, d->index, d->modpath)) | 684 | if (match_parisc_device(dev, d->index, d->modpath)) |
| 697 | d->dev = dev; | 685 | d->dev = dev; |
| 698 | } else if (is_pci_dev(dev)) { | 686 | } else if (dev_is_pci(dev)) { |
| 699 | if (match_pci_device(dev, d->index, d->modpath)) | 687 | if (match_pci_device(dev, d->index, d->modpath)) |
| 700 | d->dev = dev; | 688 | d->dev = dev; |
| 701 | } else if (dev->bus == NULL) { | 689 | } else if (dev->bus == NULL) { |
| @@ -753,7 +741,7 @@ struct device *hwpath_to_device(struct hardware_path *modpath) | |||
| 753 | if (!parent) | 741 | if (!parent) |
| 754 | return NULL; | 742 | return NULL; |
| 755 | } | 743 | } |
| 756 | if (is_pci_dev(parent)) /* pci devices already parse MOD */ | 744 | if (dev_is_pci(parent)) /* pci devices already parse MOD */ |
| 757 | return parent; | 745 | return parent; |
| 758 | else | 746 | else |
| 759 | return parse_tree_node(parent, 6, modpath); | 747 | return parse_tree_node(parent, 6, modpath); |
| @@ -772,7 +760,7 @@ void device_to_hwpath(struct device *dev, struct hardware_path *path) | |||
| 772 | padev = to_parisc_device(dev); | 760 | padev = to_parisc_device(dev); |
| 773 | get_node_path(dev->parent, path); | 761 | get_node_path(dev->parent, path); |
| 774 | path->mod = padev->hw_path; | 762 | path->mod = padev->hw_path; |
| 775 | } else if (is_pci_dev(dev)) { | 763 | } else if (dev_is_pci(dev)) { |
| 776 | get_node_path(dev, path); | 764 | get_node_path(dev, path); |
| 777 | } | 765 | } |
| 778 | } | 766 | } |
diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c index 36bed5a12750..c17f90d0f73c 100644 --- a/arch/powerpc/kernel/eeh_driver.c +++ b/arch/powerpc/kernel/eeh_driver.c | |||
| @@ -369,7 +369,9 @@ static void *eeh_rmv_device(void *data, void *userdata) | |||
| 369 | edev->mode |= EEH_DEV_DISCONNECTED; | 369 | edev->mode |= EEH_DEV_DISCONNECTED; |
| 370 | (*removed)++; | 370 | (*removed)++; |
| 371 | 371 | ||
| 372 | pci_lock_rescan_remove(); | ||
| 372 | pci_stop_and_remove_bus_device(dev); | 373 | pci_stop_and_remove_bus_device(dev); |
| 374 | pci_unlock_rescan_remove(); | ||
| 373 | 375 | ||
| 374 | return NULL; | 376 | return NULL; |
| 375 | } | 377 | } |
| @@ -416,10 +418,13 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus) | |||
| 416 | * into pcibios_add_pci_devices(). | 418 | * into pcibios_add_pci_devices(). |
| 417 | */ | 419 | */ |
| 418 | eeh_pe_state_mark(pe, EEH_PE_KEEP); | 420 | eeh_pe_state_mark(pe, EEH_PE_KEEP); |
| 419 | if (bus) | 421 | if (bus) { |
| 422 | pci_lock_rescan_remove(); | ||
| 420 | pcibios_remove_pci_devices(bus); | 423 | pcibios_remove_pci_devices(bus); |
| 421 | else if (frozen_bus) | 424 | pci_unlock_rescan_remove(); |
| 425 | } else if (frozen_bus) { | ||
| 422 | eeh_pe_dev_traverse(pe, eeh_rmv_device, &removed); | 426 | eeh_pe_dev_traverse(pe, eeh_rmv_device, &removed); |
| 427 | } | ||
| 423 | 428 | ||
| 424 | /* Reset the pci controller. (Asserts RST#; resets config space). | 429 | /* Reset the pci controller. (Asserts RST#; resets config space). |
| 425 | * Reconfigure bridges and devices. Don't try to bring the system | 430 | * Reconfigure bridges and devices. Don't try to bring the system |
| @@ -429,6 +434,8 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus) | |||
| 429 | if (rc) | 434 | if (rc) |
| 430 | return rc; | 435 | return rc; |
| 431 | 436 | ||
| 437 | pci_lock_rescan_remove(); | ||
| 438 | |||
| 432 | /* Restore PE */ | 439 | /* Restore PE */ |
| 433 | eeh_ops->configure_bridge(pe); | 440 | eeh_ops->configure_bridge(pe); |
| 434 | eeh_pe_restore_bars(pe); | 441 | eeh_pe_restore_bars(pe); |
| @@ -462,6 +469,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus) | |||
| 462 | pe->tstamp = tstamp; | 469 | pe->tstamp = tstamp; |
| 463 | pe->freeze_count = cnt; | 470 | pe->freeze_count = cnt; |
| 464 | 471 | ||
| 472 | pci_unlock_rescan_remove(); | ||
| 465 | return 0; | 473 | return 0; |
| 466 | } | 474 | } |
| 467 | 475 | ||
| @@ -618,8 +626,11 @@ perm_error: | |||
| 618 | eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); | 626 | eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); |
| 619 | 627 | ||
| 620 | /* Shut down the device drivers for good. */ | 628 | /* Shut down the device drivers for good. */ |
| 621 | if (frozen_bus) | 629 | if (frozen_bus) { |
| 630 | pci_lock_rescan_remove(); | ||
| 622 | pcibios_remove_pci_devices(frozen_bus); | 631 | pcibios_remove_pci_devices(frozen_bus); |
| 632 | pci_unlock_rescan_remove(); | ||
| 633 | } | ||
| 623 | } | 634 | } |
| 624 | 635 | ||
| 625 | static void eeh_handle_special_event(void) | 636 | static void eeh_handle_special_event(void) |
| @@ -692,6 +703,7 @@ static void eeh_handle_special_event(void) | |||
| 692 | if (rc == 2 || rc == 1) | 703 | if (rc == 2 || rc == 1) |
| 693 | eeh_handle_normal_event(pe); | 704 | eeh_handle_normal_event(pe); |
| 694 | else { | 705 | else { |
| 706 | pci_lock_rescan_remove(); | ||
| 695 | list_for_each_entry_safe(hose, tmp, | 707 | list_for_each_entry_safe(hose, tmp, |
| 696 | &hose_list, list_node) { | 708 | &hose_list, list_node) { |
| 697 | phb_pe = eeh_phb_pe_get(hose); | 709 | phb_pe = eeh_phb_pe_get(hose); |
| @@ -703,6 +715,7 @@ static void eeh_handle_special_event(void) | |||
| 703 | eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); | 715 | eeh_pe_dev_traverse(pe, eeh_report_failure, NULL); |
| 704 | pcibios_remove_pci_devices(bus); | 716 | pcibios_remove_pci_devices(bus); |
| 705 | } | 717 | } |
| 718 | pci_unlock_rescan_remove(); | ||
| 706 | } | 719 | } |
| 707 | } | 720 | } |
| 708 | 721 | ||
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index a1e3e40ca3fd..d9476c1fc959 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
| @@ -835,7 +835,7 @@ static void pcibios_fixup_resources(struct pci_dev *dev) | |||
| 835 | * at 0 as unset as well, except if PCI_PROBE_ONLY is also set | 835 | * at 0 as unset as well, except if PCI_PROBE_ONLY is also set |
| 836 | * since in that case, we don't want to re-assign anything | 836 | * since in that case, we don't want to re-assign anything |
| 837 | */ | 837 | */ |
| 838 | pcibios_resource_to_bus(dev, ®, res); | 838 | pcibios_resource_to_bus(dev->bus, ®, res); |
| 839 | if (pci_has_flag(PCI_REASSIGN_ALL_RSRC) || | 839 | if (pci_has_flag(PCI_REASSIGN_ALL_RSRC) || |
| 840 | (reg.start == 0 && !pci_has_flag(PCI_PROBE_ONLY))) { | 840 | (reg.start == 0 && !pci_has_flag(PCI_PROBE_ONLY))) { |
| 841 | /* Only print message if not re-assigning */ | 841 | /* Only print message if not re-assigning */ |
| @@ -886,7 +886,7 @@ static int pcibios_uninitialized_bridge_resource(struct pci_bus *bus, | |||
| 886 | 886 | ||
| 887 | /* Job is a bit different between memory and IO */ | 887 | /* Job is a bit different between memory and IO */ |
| 888 | if (res->flags & IORESOURCE_MEM) { | 888 | if (res->flags & IORESOURCE_MEM) { |
| 889 | pcibios_resource_to_bus(dev, ®ion, res); | 889 | pcibios_resource_to_bus(dev->bus, ®ion, res); |
| 890 | 890 | ||
| 891 | /* If the BAR is non-0 then it's probably been initialized */ | 891 | /* If the BAR is non-0 then it's probably been initialized */ |
| 892 | if (region.start != 0) | 892 | if (region.start != 0) |
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c index ac0b034f9ae0..83c26d829991 100644 --- a/arch/powerpc/kernel/pci_of_scan.c +++ b/arch/powerpc/kernel/pci_of_scan.c | |||
| @@ -111,7 +111,7 @@ static void of_pci_parse_addrs(struct device_node *node, struct pci_dev *dev) | |||
| 111 | res->name = pci_name(dev); | 111 | res->name = pci_name(dev); |
| 112 | region.start = base; | 112 | region.start = base; |
| 113 | region.end = base + size - 1; | 113 | region.end = base + size - 1; |
| 114 | pcibios_bus_to_resource(dev, res, ®ion); | 114 | pcibios_bus_to_resource(dev->bus, res, ®ion); |
| 115 | } | 115 | } |
| 116 | } | 116 | } |
| 117 | 117 | ||
| @@ -280,7 +280,7 @@ void of_scan_pci_bridge(struct pci_dev *dev) | |||
| 280 | res->flags = flags; | 280 | res->flags = flags; |
| 281 | region.start = of_read_number(&ranges[1], 2); | 281 | region.start = of_read_number(&ranges[1], 2); |
| 282 | region.end = region.start + size - 1; | 282 | region.end = region.start + size - 1; |
| 283 | pcibios_bus_to_resource(dev, res, ®ion); | 283 | pcibios_bus_to_resource(dev->bus, res, ®ion); |
| 284 | } | 284 | } |
| 285 | sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus), | 285 | sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus), |
| 286 | bus->number); | 286 | bus->number); |
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index 0820362c7b0f..66670ff262a0 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c | |||
| @@ -407,8 +407,8 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) | |||
| 407 | struct msi_msg msg; | 407 | struct msi_msg msg; |
| 408 | int rc; | 408 | int rc; |
| 409 | 409 | ||
| 410 | if (type != PCI_CAP_ID_MSIX && type != PCI_CAP_ID_MSI) | 410 | if (type == PCI_CAP_ID_MSI && nvec > 1) |
| 411 | return -EINVAL; | 411 | return 1; |
| 412 | msi_vecs = min(nvec, ZPCI_MSI_VEC_MAX); | 412 | msi_vecs = min(nvec, ZPCI_MSI_VEC_MAX); |
| 413 | msi_vecs = min_t(unsigned int, msi_vecs, CONFIG_PCI_NR_MSI); | 413 | msi_vecs = min_t(unsigned int, msi_vecs, CONFIG_PCI_NR_MSI); |
| 414 | 414 | ||
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index cb021453de2a..7de8d1f590b7 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c | |||
| @@ -392,7 +392,7 @@ static void apb_fake_ranges(struct pci_dev *dev, | |||
| 392 | res->flags = IORESOURCE_IO; | 392 | res->flags = IORESOURCE_IO; |
| 393 | region.start = (first << 21); | 393 | region.start = (first << 21); |
| 394 | region.end = (last << 21) + ((1 << 21) - 1); | 394 | region.end = (last << 21) + ((1 << 21) - 1); |
| 395 | pcibios_bus_to_resource(dev, res, ®ion); | 395 | pcibios_bus_to_resource(dev->bus, res, ®ion); |
| 396 | 396 | ||
| 397 | pci_read_config_byte(dev, APB_MEM_ADDRESS_MAP, &map); | 397 | pci_read_config_byte(dev, APB_MEM_ADDRESS_MAP, &map); |
| 398 | apb_calc_first_last(map, &first, &last); | 398 | apb_calc_first_last(map, &first, &last); |
| @@ -400,7 +400,7 @@ static void apb_fake_ranges(struct pci_dev *dev, | |||
| 400 | res->flags = IORESOURCE_MEM; | 400 | res->flags = IORESOURCE_MEM; |
| 401 | region.start = (first << 29); | 401 | region.start = (first << 29); |
| 402 | region.end = (last << 29) + ((1 << 29) - 1); | 402 | region.end = (last << 29) + ((1 << 29) - 1); |
| 403 | pcibios_bus_to_resource(dev, res, ®ion); | 403 | pcibios_bus_to_resource(dev->bus, res, ®ion); |
| 404 | } | 404 | } |
| 405 | 405 | ||
| 406 | static void pci_of_scan_bus(struct pci_pbm_info *pbm, | 406 | static void pci_of_scan_bus(struct pci_pbm_info *pbm, |
| @@ -491,7 +491,7 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
| 491 | res->flags = flags; | 491 | res->flags = flags; |
| 492 | region.start = GET_64BIT(ranges, 1); | 492 | region.start = GET_64BIT(ranges, 1); |
| 493 | region.end = region.start + size - 1; | 493 | region.end = region.start + size - 1; |
| 494 | pcibios_bus_to_resource(dev, res, ®ion); | 494 | pcibios_bus_to_resource(dev->bus, res, ®ion); |
| 495 | } | 495 | } |
| 496 | after_ranges: | 496 | after_ranges: |
| 497 | sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus), | 497 | sprintf(bus->name, "PCI Bus %04x:%02x", pci_domain_nr(bus), |
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index 947b5c417e83..1ac6114c9ea5 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h | |||
| @@ -104,7 +104,7 @@ extern void pci_iommu_alloc(void); | |||
| 104 | struct msi_desc; | 104 | struct msi_desc; |
| 105 | int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); | 105 | int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); |
| 106 | void native_teardown_msi_irq(unsigned int irq); | 106 | void native_teardown_msi_irq(unsigned int irq); |
| 107 | void native_restore_msi_irqs(struct pci_dev *dev, int irq); | 107 | void native_restore_msi_irqs(struct pci_dev *dev); |
| 108 | int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, | 108 | int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, |
| 109 | unsigned int irq_base, unsigned int irq_offset); | 109 | unsigned int irq_base, unsigned int irq_offset); |
| 110 | #else | 110 | #else |
| @@ -125,7 +125,6 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, | |||
| 125 | 125 | ||
| 126 | /* generic pci stuff */ | 126 | /* generic pci stuff */ |
| 127 | #include <asm-generic/pci.h> | 127 | #include <asm-generic/pci.h> |
| 128 | #define PCIBIOS_MAX_MEM_32 0xffffffff | ||
| 129 | 128 | ||
| 130 | #ifdef CONFIG_NUMA | 129 | #ifdef CONFIG_NUMA |
| 131 | /* Returns the node based on pci bus */ | 130 | /* Returns the node based on pci bus */ |
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index 0f1be11e43d2..e45e4da96bf1 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h | |||
| @@ -181,7 +181,7 @@ struct x86_msi_ops { | |||
| 181 | u8 hpet_id); | 181 | u8 hpet_id); |
| 182 | void (*teardown_msi_irq)(unsigned int irq); | 182 | void (*teardown_msi_irq)(unsigned int irq); |
| 183 | void (*teardown_msi_irqs)(struct pci_dev *dev); | 183 | void (*teardown_msi_irqs)(struct pci_dev *dev); |
| 184 | void (*restore_msi_irqs)(struct pci_dev *dev, int irq); | 184 | void (*restore_msi_irqs)(struct pci_dev *dev); |
| 185 | int (*setup_hpet_msi)(unsigned int irq, unsigned int id); | 185 | int (*setup_hpet_msi)(unsigned int irq, unsigned int id); |
| 186 | u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); | 186 | u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); |
| 187 | u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); | 187 | u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 6c0b43bd024b..d359d0fffa50 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
| @@ -1034,9 +1034,7 @@ static int mp_config_acpi_gsi(struct device *dev, u32 gsi, int trigger, | |||
| 1034 | 1034 | ||
| 1035 | if (!acpi_ioapic) | 1035 | if (!acpi_ioapic) |
| 1036 | return 0; | 1036 | return 0; |
| 1037 | if (!dev) | 1037 | if (!dev || !dev_is_pci(dev)) |
| 1038 | return 0; | ||
| 1039 | if (dev->bus != &pci_bus_type) | ||
| 1040 | return 0; | 1038 | return 0; |
| 1041 | 1039 | ||
| 1042 | pdev = to_pci_dev(dev); | 1040 | pdev = to_pci_dev(dev); |
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c index 021783b1f46a..e48b674639cc 100644 --- a/arch/x86/kernel/x86_init.c +++ b/arch/x86/kernel/x86_init.c | |||
| @@ -136,9 +136,9 @@ void arch_teardown_msi_irq(unsigned int irq) | |||
| 136 | x86_msi.teardown_msi_irq(irq); | 136 | x86_msi.teardown_msi_irq(irq); |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | void arch_restore_msi_irqs(struct pci_dev *dev, int irq) | 139 | void arch_restore_msi_irqs(struct pci_dev *dev) |
| 140 | { | 140 | { |
| 141 | x86_msi.restore_msi_irqs(dev, irq); | 141 | x86_msi.restore_msi_irqs(dev); |
| 142 | } | 142 | } |
| 143 | u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) | 143 | u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) |
| 144 | { | 144 | { |
diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c index 5eee4959785d..103e702ec5a7 100644 --- a/arch/x86/pci/xen.c +++ b/arch/x86/pci/xen.c | |||
| @@ -337,7 +337,7 @@ out: | |||
| 337 | return ret; | 337 | return ret; |
| 338 | } | 338 | } |
| 339 | 339 | ||
| 340 | static void xen_initdom_restore_msi_irqs(struct pci_dev *dev, int irq) | 340 | static void xen_initdom_restore_msi_irqs(struct pci_dev *dev) |
| 341 | { | 341 | { |
| 342 | int ret = 0; | 342 | int ret = 0; |
| 343 | 343 | ||
