Merge tag 'pci-v3.16-changes-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Jun 2014 20:20:24 +0000 (13:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Jun 2014 20:20:24 +0000 (13:20 -0700)
Pull more PCI updates from Bjorn Helgaas:
 "Here are some more things I'd like to see in v3.16-rc1:

   - DMA alias iterator, part of some work to fix IOMMU issues
   - MVEBU, Tegra, DesignWare changes that I forgot to include before
   - Some whitespace code cleanup

  Details:

  IOMMU
    - Add DMA alias iterator (Alex Williamson)
    - Add DMA alias quirks for ASMedia, ITE, Tundra bridges (Alex Williamson)
    - Add DMA alias quirks for Marvell, Ricoh devices (Alex Williamson)
    - Add DMA alias quirk for HighPoint devices (Jérôme Carretero)

  MSI
    - Fix leak in free_msi_irqs() (Alexei Starovoitov)

  Marvell MVEBU
    - Remove unnecessary use of 'conf_lock' spinlock (Andrew Murray)
    - Avoid setting an undefined window size (Jason Gunthorpe)
    - Allow several windows with the same target/attribute (Thomas Petazzoni)
    - Split PCIe BARs into multiple MBus windows when needed (Thomas Petazzoni)
    - Fix off-by-one in the computed size of the mbus windows (Willy Tarreau)

  NVIDIA Tegra
    - Use new OF interrupt mapping when possible (Lucas Stach)

  Synopsys DesignWare
    - Remove unnecessary use of 'conf_lock' spinlock (Andrew Murray)
    - Use new OF interrupt mapping when possible (Lucas Stach)
    - Split Exynos and i.MX bindings (Lucas Stach)
    - Fix comment for setting number of lanes (Mohit Kumar)
    - Fix iATU programming for cfg1, io and mem viewport (Mohit Kumar)

  Miscellaneous
    - EXPORT_SYMBOL cleanup (Ryan Desfosses)
    - Whitespace cleanup (Ryan Desfosses)
    - Merge multi-line quoted strings (Ryan Desfosses)"

* tag 'pci-v3.16-changes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (21 commits)
  PCI: Add function 1 DMA alias quirk for HighPoint RocketRaid 642L
  PCI/MSI: Fix memory leak in free_msi_irqs()
  PCI: Merge multi-line quoted strings
  PCI: Whitespace cleanup
  PCI: Move EXPORT_SYMBOL so it immediately follows function/variable
  PCI: Add bridge DMA alias quirk for ITE bridge
  PCI: designware: Split Exynos and i.MX bindings
  PCI: Add bridge DMA alias quirk for ASMedia and Tundra bridges
  PCI: Add support for PCIe-to-PCI bridge DMA alias quirks
  PCI: Add function 1 DMA alias quirk for Marvell devices
  PCI: Add function 0 DMA alias quirk for Ricoh devices
  PCI: Add support for DMA alias quirks
  PCI: Convert pci_dev_flags definitions to bit shifts
  PCI: Add DMA alias iterator
  PCI: mvebu: Use '%pa' for printing 'phys_addr_t' type
  PCI: mvebu: Remove unnecessary use of 'conf_lock' spinlock
  PCI: designware: Remove unnecessary use of 'conf_lock' spinlock
  PCI: designware: Use new OF interrupt mapping when possible
  PCI: designware: Fix iATU programming for cfg1, io and mem viewport
  PCI: designware: Fix comment for setting number of lanes
  ...

1  2 
drivers/pci/hotplug/acpiphp_glue.c
drivers/pci/hotplug/shpchp_ctrl.c
drivers/pci/htirq.c
drivers/pci/pci.c

index 91aa3d780138ee85f5033ecc80402201b4181bce,772d8766338a2809b7060b781f581c892c46ea9a..602d153c7055b0227416c2d960a1efe4688aa847
@@@ -351,11 -351,9 +351,9 @@@ static acpi_status acpiphp_add_context(
                        slot->slot = NULL;
                        bridge->nr_slots--;
                        if (retval == -EBUSY)
-                               pr_warn("Slot %llu already registered by another "
-                                       "hotplug driver\n", sun);
+                               pr_warn("Slot %llu already registered by another hotplug driver\n", sun);
                        else
-                               pr_warn("acpiphp_register_hotplug_slot failed "
-                                       "(err code = 0x%x)\n", retval);
+                               pr_warn("acpiphp_register_hotplug_slot failed (err code = 0x%x)\n", retval);
                }
                /* Even if the slot registration fails, we can still use it. */
        }
  
  static struct acpiphp_bridge *acpiphp_dev_to_bridge(struct acpi_device *adev)
  {
 -      struct acpiphp_context *context;
        struct acpiphp_bridge *bridge = NULL;
  
        acpi_lock_hp_context();
 -      context = acpiphp_get_context(adev);
 -      if (context) {
 -              bridge = context->bridge;
 +      if (adev->hp) {
 +              bridge = to_acpiphp_root_context(adev->hp)->root_bridge;
                if (bridge)
                        get_bridge(bridge);
 -
 -              acpiphp_put_context(context);
        }
        acpi_unlock_hp_context();
        return bridge;
@@@ -877,17 -879,7 +875,17 @@@ void acpiphp_enumerate_slots(struct pci
         */
        get_device(&bus->dev);
  
 -      if (!pci_is_root_bus(bridge->pci_bus)) {
 +      acpi_lock_hp_context();
 +      if (pci_is_root_bus(bridge->pci_bus)) {
 +              struct acpiphp_root_context *root_context;
 +
 +              root_context = kzalloc(sizeof(*root_context), GFP_KERNEL);
 +              if (!root_context)
 +                      goto err;
 +
 +              root_context->root_bridge = bridge;
 +              acpi_set_hp_context(adev, &root_context->hp, NULL, NULL, NULL);
 +      } else {
                struct acpiphp_context *context;
  
                /*
                 * parent is going to be handled by pciehp, in which case this
                 * bridge is not interesting to us either.
                 */
 -              acpi_lock_hp_context();
                context = acpiphp_get_context(adev);
 -              if (!context) {
 -                      acpi_unlock_hp_context();
 -                      put_device(&bus->dev);
 -                      pci_dev_put(bridge->pci_dev);
 -                      kfree(bridge);
 -                      return;
 -              }
 +              if (!context)
 +                      goto err;
 +
                bridge->context = context;
                context->bridge = bridge;
                /* Get a reference to the parent bridge. */
                get_bridge(context->func.parent);
 -              acpi_unlock_hp_context();
        }
 +      acpi_unlock_hp_context();
  
        /* Must be added to the list prior to calling acpiphp_add_context(). */
        mutex_lock(&bridge_mutex);
                cleanup_bridge(bridge);
                put_bridge(bridge);
        }
 +      return;
 +
 + err:
 +      acpi_unlock_hp_context();
 +      put_device(&bus->dev);
 +      pci_dev_put(bridge->pci_dev);
 +      kfree(bridge);
 +}
 +
 +void acpiphp_drop_bridge(struct acpiphp_bridge *bridge)
 +{
 +      if (pci_is_root_bus(bridge->pci_bus)) {
 +              struct acpiphp_root_context *root_context;
 +              struct acpi_device *adev;
 +
 +              acpi_lock_hp_context();
 +              adev = ACPI_COMPANION(bridge->pci_bus->bridge);
 +              root_context = to_acpiphp_root_context(adev->hp);
 +              adev->hp = NULL;
 +              acpi_unlock_hp_context();
 +              kfree(root_context);
 +      }
 +      cleanup_bridge(bridge);
 +      put_bridge(bridge);
  }
  
  /**
@@@ -961,7 -934,8 +959,7 @@@ void acpiphp_remove_slots(struct pci_bu
        list_for_each_entry(bridge, &bridge_list, list)
                if (bridge->pci_bus == bus) {
                        mutex_unlock(&bridge_mutex);
 -                      cleanup_bridge(bridge);
 -                      put_bridge(bridge);
 +                      acpiphp_drop_bridge(bridge);
                        return;
                }
  
index 6efc2ec5e4db0823758a409eb95c2d3054a8ba48,e57972366c910f81b4bbdab2ae3e254b159a3378..a81fb67ea9a18a405dce84c2bd4b88aee4b9e6fc
@@@ -162,7 -162,7 +162,7 @@@ u8 shpchp_handle_power_fault(u8 hp_slot
  
        p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);
  
-       if ( !(p_slot->hpc_ops->query_power_fault(p_slot))) {
+       if (!(p_slot->hpc_ops->query_power_fault(p_slot))) {
                /*
                 * Power fault Cleared
                 */
@@@ -196,8 -196,8 +196,8 @@@ static int change_bus_speed(struct cont
  
        ctrl_dbg(ctrl, "Change speed to %d\n", speed);
        if ((rc = p_slot->hpc_ops->set_bus_speed_mode(p_slot, speed))) {
-               ctrl_err(ctrl, "%s: Issue of set bus speed mode command "
-                        "failed\n", __func__);
+               ctrl_err(ctrl, "%s: Issue of set bus speed mode command failed\n",
+                        __func__);
                return WRONG_BUS_FREQUENCY;
        }
        return rc;
@@@ -215,8 -215,8 +215,8 @@@ static int fix_bus_speed(struct control
         */
        if (flag) {
                if (asp < bsp) {
-                       ctrl_err(ctrl, "Speed of bus %x and adapter %x "
-                                "mismatch\n", bsp, asp);
+                       ctrl_err(ctrl, "Speed of bus %x and adapter %x mismatch\n",
+                                bsp, asp);
                        rc = WRONG_BUS_FREQUENCY;
                }
                return rc;
@@@ -250,8 -250,7 +250,7 @@@ static int board_added(struct slot *p_s
  
        hp_slot = p_slot->device - ctrl->slot_device_offset;
  
-       ctrl_dbg(ctrl,
-                "%s: p_slot->device, slot_offset, hp_slot = %d, %d ,%d\n",
+       ctrl_dbg(ctrl, "%s: p_slot->device, slot_offset, hp_slot = %d, %d ,%d\n",
                 __func__, p_slot->device, ctrl->slot_device_offset, hp_slot);
  
        /* Power on slot without connecting to bus */
  
        if ((ctrl->pci_dev->vendor == 0x8086) && (ctrl->pci_dev->device == 0x0332)) {
                if ((rc = p_slot->hpc_ops->set_bus_speed_mode(p_slot, PCI_SPEED_33MHz))) {
-                       ctrl_err(ctrl, "%s: Issue of set bus speed mode command"
-                                " failed\n", __func__);
+                       ctrl_err(ctrl, "%s: Issue of set bus speed mode command failed\n",
+                                __func__);
                        return WRONG_BUS_FREQUENCY;
                }
  
  
        rc = p_slot->hpc_ops->get_adapter_speed(p_slot, &asp);
        if (rc) {
-               ctrl_err(ctrl, "Can't get adapter speed or "
-                        "bus mode mismatch\n");
+               ctrl_err(ctrl, "Can't get adapter speed or bus mode mismatch\n");
                return WRONG_BUS_FREQUENCY;
        }
  
 -      bsp = ctrl->pci_dev->bus->cur_bus_speed;
 -      msp = ctrl->pci_dev->bus->max_bus_speed;
 +      bsp = ctrl->pci_dev->subordinate->cur_bus_speed;
 +      msp = ctrl->pci_dev->subordinate->max_bus_speed;
  
        /* Check if there are other slots or devices on the same bus */
        if (!list_empty(&ctrl->pci_dev->subordinate->devices))
                slots_not_empty = 1;
  
-       ctrl_dbg(ctrl, "%s: slots_not_empty %d, adapter_speed %d, bus_speed %d,"
-                " max_bus_speed %d\n", __func__, slots_not_empty, asp,
+       ctrl_dbg(ctrl, "%s: slots_not_empty %d, adapter_speed %d, bus_speed %d, max_bus_speed %d\n",
+                __func__, slots_not_empty, asp,
                 bsp, msp);
  
        rc = fix_bus_speed(ctrl, p_slot, slots_not_empty, asp, bsp, msp);
@@@ -490,12 -488,12 +488,12 @@@ static void handle_button_press_event(s
                p_slot->hpc_ops->get_power_status(p_slot, &getstatus);
                if (getstatus) {
                        p_slot->state = BLINKINGOFF_STATE;
-                       ctrl_info(ctrl, "PCI slot #%s - powering off due to "
-                                 "button press.\n", slot_name(p_slot));
+                       ctrl_info(ctrl, "PCI slot #%s - powering off due to button press\n",
+                                 slot_name(p_slot));
                } else {
                        p_slot->state = BLINKINGON_STATE;
-                       ctrl_info(ctrl, "PCI slot #%s - powering on due to "
-                                 "button press.\n", slot_name(p_slot));
+                       ctrl_info(ctrl, "PCI slot #%s - powering on due to button press\n",
+                                 slot_name(p_slot));
                }
                /* blink green LED and turn off amber */
                p_slot->hpc_ops->green_led_blink(p_slot);
                else
                        p_slot->hpc_ops->green_led_off(p_slot);
                p_slot->hpc_ops->set_attention_status(p_slot, 0);
-               ctrl_info(ctrl, "PCI slot #%s - action canceled due to "
-                         "button press\n", slot_name(p_slot));
+               ctrl_info(ctrl, "PCI slot #%s - action canceled due to button press\n",
+                         slot_name(p_slot));
                p_slot->state = STATIC_STATE;
                break;
        case POWEROFF_STATE:
diff --combined drivers/pci/htirq.c
index d68b030ab5338b2f945a0dce447b8641eeb629ac,5d50b54bb51c231b90019515d0c882d2b090f4e6..a94dd2c4183a0ddc7ac118b1cfc41a7014d2fc4c
@@@ -87,9 -87,12 +87,9 @@@ void unmask_ht_irq(struct irq_data *dat
  int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)
  {
        struct ht_irq_cfg *cfg;
 +      int max_irq, pos, irq;
        unsigned long flags;
        u32 data;
 -      int max_irq;
 -      int pos;
 -      int irq;
 -      int node;
  
        pos = pci_find_ht_capability(dev, HT_CAPTYPE_IRQ);
        if (!pos)
        spin_unlock_irqrestore(&ht_irq_lock, flags);
  
        max_irq = (data >> 16) & 0xff;
-       if ( idx > max_irq)
+       if (idx > max_irq)
                return -EINVAL;
  
        cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
        cfg->msg.address_lo = 0xffffffff;
        cfg->msg.address_hi = 0xffffffff;
  
 -      node = dev_to_node(&dev->dev);
 -      irq = create_irq_nr(0, node);
 -
 -      if (irq <= 0) {
 +      irq = irq_alloc_hwirq(dev_to_node(&dev->dev));
 +      if (!irq) {
                kfree(cfg);
                return -EBUSY;
        }
  
        return irq;
  }
+ EXPORT_SYMBOL(__ht_create_irq);
  
  /**
   * ht_create_irq - create an irq and attach it to a device.
@@@ -146,6 -152,7 +147,7 @@@ int ht_create_irq(struct pci_dev *dev, 
  {
        return __ht_create_irq(dev, idx, NULL);
  }
+ EXPORT_SYMBOL(ht_create_irq);
  
  /**
   * ht_destroy_irq - destroy an irq created with ht_create_irq
@@@ -161,11 -168,8 +163,8 @@@ void ht_destroy_irq(unsigned int irq
        cfg = irq_get_handler_data(irq);
        irq_set_chip(irq, NULL);
        irq_set_handler_data(irq, NULL);
 -      destroy_irq(irq);
 +      irq_free_hwirq(irq);
  
        kfree(cfg);
  }
- EXPORT_SYMBOL(__ht_create_irq);
- EXPORT_SYMBOL(ht_create_irq);
  EXPORT_SYMBOL(ht_destroy_irq);
diff --combined drivers/pci/pci.c
index 212c63d780e755eacc91d6ad163faf397fa31728,0a271a100986d2fc7815b6c1ac8774f2eab14f64..63a54a3408639c249202685c1bfd4f81e25c8ae1
@@@ -114,7 -114,7 +114,7 @@@ unsigned char pci_bus_max_busnr(struct 
        max = bus->busn_res.end;
        list_for_each_entry(tmp, &bus->children, node) {
                n = pci_bus_max_busnr(tmp);
-               if(n > max)
+               if (n > max)
                        max = n;
        }
        return max;
@@@ -226,6 -226,7 +226,7 @@@ int pci_find_capability(struct pci_dev 
  
        return pos;
  }
+ EXPORT_SYMBOL(pci_find_capability);
  
  /**
   * pci_bus_find_capability - query for devices' capabilities
@@@ -253,6 -254,7 +254,7 @@@ int pci_bus_find_capability(struct pci_
  
        return pos;
  }
+ EXPORT_SYMBOL(pci_bus_find_capability);
  
  /**
   * pci_find_next_ext_capability - Find an extended capability
@@@ -403,8 -405,8 +405,8 @@@ EXPORT_SYMBOL_GPL(pci_find_ht_capabilit
   *  For given resource region of given device, return the resource
   *  region of parent bus the given region is contained in.
   */
- struct resource *
pci_find_parent_resource(const struct pci_dev *dev, struct resource *res)
+ struct resource *pci_find_parent_resource(const struct pci_dev *dev,
                                        struct resource *res)
  {
        const struct pci_bus *bus = dev->bus;
        struct resource *r;
        }
        return NULL;
  }
+ EXPORT_SYMBOL(pci_find_parent_resource);
  
  /**
   * pci_wait_for_pending - wait for @mask bit(s) to clear in status word @pos
@@@ -470,8 -473,7 +473,7 @@@ int pci_wait_for_pending(struct pci_de
   * Restore the BAR values for a given device, so as to make it
   * accessible by its driver.
   */
- static void
- pci_restore_bars(struct pci_dev *dev)
+ static void pci_restore_bars(struct pci_dev *dev)
  {
        int i;
  
@@@ -496,7 -498,7 +498,7 @@@ static inline bool platform_pci_power_m
  }
  
  static inline int platform_pci_set_power_state(struct pci_dev *dev,
-                                                 pci_power_t t)
+                                              pci_power_t t)
  {
        return pci_platform_pm ? pci_platform_pm->set_state(dev, t) : -ENOSYS;
  }
@@@ -553,8 -555,8 +555,8 @@@ static int pci_raw_set_power_state(stru
         */
        if (state != PCI_D0 && dev->current_state <= PCI_D3cold
            && dev->current_state > state) {
-               dev_err(&dev->dev, "invalid power transition "
-                       "(from state %d to %d)\n", dev->current_state, state);
+               dev_err(&dev->dev, "invalid power transition (from state %d to %d)\n",
+                       dev->current_state, state);
                return -EINVAL;
        }
  
        pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr);
        dev->current_state = (pmcsr & PCI_PM_CTRL_STATE_MASK);
        if (dev->current_state != state && printk_ratelimit())
-               dev_info(&dev->dev, "Refused to change power state, "
-                       "currently in D%d\n", dev->current_state);
+               dev_info(&dev->dev, "Refused to change power state, currently in D%d\n",
+                        dev->current_state);
  
        /*
         * According to section 5.4.1 of the "PCI BUS POWER MANAGEMENT
@@@ -846,6 -848,7 +848,7 @@@ int pci_set_power_state(struct pci_dev 
  
        return error;
  }
+ EXPORT_SYMBOL(pci_set_power_state);
  
  /**
   * pci_choose_state - Choose the power state of a PCI device
@@@ -884,12 -887,10 +887,10 @@@ pci_power_t pci_choose_state(struct pci
        }
        return PCI_D0;
  }
  EXPORT_SYMBOL(pci_choose_state);
  
  #define PCI_EXP_SAVE_REGS     7
  
  static struct pci_cap_saved_state *_pci_find_saved_cap(struct pci_dev *pci_dev,
                                                       u16 cap, bool extended)
  {
@@@ -1001,8 -1002,7 +1002,7 @@@ static void pci_restore_pcix_state(stru
   * pci_save_state - save the PCI configuration space of a device before suspending
   * @dev: - PCI device that we're dealing with
   */
- int
- pci_save_state(struct pci_dev *dev)
+ int pci_save_state(struct pci_dev *dev)
  {
        int i;
        /* XXX: 100% dword access ok here? */
                return i;
        return 0;
  }
+ EXPORT_SYMBOL(pci_save_state);
  
  static void pci_restore_config_dword(struct pci_dev *pdev, int offset,
                                     u32 saved_val, int retry)
                return;
  
        for (;;) {
-               dev_dbg(&pdev->dev, "restoring config space at offset "
-                       "%#x (was %#x, writing %#x)\n", offset, val, saved_val);
+               dev_dbg(&pdev->dev, "restoring config space at offset %#x (was %#x, writing %#x)\n",
+                       offset, val, saved_val);
                pci_write_config_dword(pdev, offset, saved_val);
                if (retry-- <= 0)
                        return;
@@@ -1087,6 -1088,7 +1088,7 @@@ void pci_restore_state(struct pci_dev *
  
        dev->state_saved = false;
  }
+ EXPORT_SYMBOL(pci_restore_state);
  
  struct pci_saved_state {
        u32 config_space[16];
@@@ -1231,6 -1233,7 +1233,7 @@@ int pci_reenable_device(struct pci_dev 
                return do_pci_enable_device(dev, (1 << PCI_NUM_RESOURCES) - 1);
        return 0;
  }
+ EXPORT_SYMBOL(pci_reenable_device);
  
  static void pci_enable_bridge(struct pci_dev *dev)
  {
@@@ -1305,6 -1308,7 +1308,7 @@@ int pci_enable_device_io(struct pci_de
  {
        return pci_enable_device_flags(dev, IORESOURCE_IO);
  }
+ EXPORT_SYMBOL(pci_enable_device_io);
  
  /**
   * pci_enable_device_mem - Initialize a device for use with Memory space
@@@ -1318,6 -1322,7 +1322,7 @@@ int pci_enable_device_mem(struct pci_de
  {
        return pci_enable_device_flags(dev, IORESOURCE_MEM);
  }
+ EXPORT_SYMBOL(pci_enable_device_mem);
  
  /**
   * pci_enable_device - Initialize device before it's used by a driver.
@@@ -1334,6 -1339,7 +1339,7 @@@ int pci_enable_device(struct pci_dev *d
  {
        return pci_enable_device_flags(dev, IORESOURCE_MEM | IORESOURCE_IO);
  }
+ EXPORT_SYMBOL(pci_enable_device);
  
  /*
   * Managed PCI resources.  This manages device on/off, intx/msi/msix
@@@ -1416,6 -1422,7 +1422,7 @@@ int pcim_enable_device(struct pci_dev *
        }
        return rc;
  }
+ EXPORT_SYMBOL(pcim_enable_device);
  
  /**
   * pcim_pin_device - Pin managed PCI device
@@@ -1434,6 -1441,7 +1441,7 @@@ void pcim_pin_device(struct pci_dev *pd
        if (dr)
                dr->pinned = 1;
  }
+ EXPORT_SYMBOL(pcim_pin_device);
  
  /*
   * pcibios_add_device - provide arch specific hooks when adding device dev
   * devices are added. This is the default implementation. Architecture
   * implementations can override this.
   */
- int __weak pcibios_add_device (struct pci_dev *dev)
+ int __weak pcibios_add_device(struct pci_dev *dev)
  {
        return 0;
  }
@@@ -1515,8 -1523,7 +1523,7 @@@ void pci_disable_enabled_device(struct 
   * Note we don't actually disable the device until all callers of
   * pci_enable_device() have called pci_disable_device().
   */
- void
- pci_disable_device(struct pci_dev *dev)
+ void pci_disable_device(struct pci_dev *dev)
  {
        struct pci_devres *dr;
  
  
        dev->is_busmaster = 0;
  }
+ EXPORT_SYMBOL(pci_disable_device);
  
  /**
   * pcibios_set_pcie_reset_state - set reset state for device dev
@@@ -1562,6 -1570,7 +1570,7 @@@ int pci_set_pcie_reset_state(struct pci
  {
        return pcibios_set_pcie_reset_state(dev, state);
  }
+ EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);
  
  /**
   * pci_check_pme_status - Check if given device has generated PME.
@@@ -1641,6 -1650,7 +1650,7 @@@ bool pci_pme_capable(struct pci_dev *de
  
        return !!(dev->pme_support & (1 << state));
  }
+ EXPORT_SYMBOL(pci_pme_capable);
  
  static void pci_pme_list_scan(struct work_struct *work)
  {
@@@ -1745,6 -1755,7 +1755,7 @@@ void pci_pme_active(struct pci_dev *dev
  
        dev_dbg(&dev->dev, "PME# %s\n", enable ? "enabled" : "disabled");
  }
+ EXPORT_SYMBOL(pci_pme_active);
  
  /**
   * __pci_enable_wake - enable PCI device as wakeup event source
@@@ -1830,6 -1841,7 +1841,7 @@@ int pci_wake_from_d3(struct pci_dev *de
                        pci_enable_wake(dev, PCI_D3cold, enable) :
                        pci_enable_wake(dev, PCI_D3hot, enable);
  }
+ EXPORT_SYMBOL(pci_wake_from_d3);
  
  /**
   * pci_target_state - find an appropriate low power state for a given PCI dev
@@@ -1908,6 -1920,7 +1920,7 @@@ int pci_prepare_to_sleep(struct pci_de
  
        return error;
  }
+ EXPORT_SYMBOL(pci_prepare_to_sleep);
  
  /**
   * pci_back_from_sleep - turn PCI device on during system-wide transition into working state
@@@ -1920,6 -1933,7 +1933,7 @@@ int pci_back_from_sleep(struct pci_dev 
        pci_enable_wake(dev, PCI_D0, false);
        return pci_set_power_state(dev, PCI_D0);
  }
+ EXPORT_SYMBOL(pci_back_from_sleep);
  
  /**
   * pci_finish_runtime_suspend - Carry out PCI-specific part of runtime suspend.
@@@ -2415,8 -2429,7 +2429,7 @@@ u8 pci_swizzle_interrupt_pin(const stru
        return (((pin - 1) + slot) % 4) + 1;
  }
  
- int
- pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge)
+ int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge)
  {
        u8 pin;
  
@@@ -2478,6 -2491,7 +2491,7 @@@ void pci_release_region(struct pci_dev 
        if (dr)
                dr->region_mask &= ~(1 << bar);
  }
+ EXPORT_SYMBOL(pci_release_region);
  
  /**
   *    __pci_request_region - Reserved PCI I/O and memory resource
   *    Returns 0 on success, or %EBUSY on error.  A warning
   *    message is also printed on failure.
   */
- static int __pci_request_region(struct pci_dev *pdev, int bar, const char *res_name,
-                                                                       int exclusive)
+ static int __pci_request_region(struct pci_dev *pdev, int bar,
+                               const char *res_name, int exclusive)
  {
        struct pci_devres *dr;
  
                if (!request_region(pci_resource_start(pdev, bar),
                            pci_resource_len(pdev, bar), res_name))
                        goto err_out;
-       }
-       else if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) {
+       } else if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) {
                if (!__request_mem_region(pci_resource_start(pdev, bar),
                                        pci_resource_len(pdev, bar), res_name,
                                        exclusive))
@@@ -2548,6 -2561,7 +2561,7 @@@ int pci_request_region(struct pci_dev *
  {
        return __pci_request_region(pdev, bar, res_name, 0);
  }
+ EXPORT_SYMBOL(pci_request_region);
  
  /**
   *    pci_request_region_exclusive - Reserved PCI I/O and memory resource
   *    explicitly not allowed to map the resource via /dev/mem or
   *    sysfs.
   */
- int pci_request_region_exclusive(struct pci_dev *pdev, int bar, const char *res_name)
+ int pci_request_region_exclusive(struct pci_dev *pdev, int bar,
+                                const char *res_name)
  {
        return __pci_request_region(pdev, bar, res_name, IORESOURCE_EXCLUSIVE);
  }
+ EXPORT_SYMBOL(pci_request_region_exclusive);
  /**
   * pci_release_selected_regions - Release selected PCI I/O and memory resources
   * @pdev: PCI device whose resources were previously reserved
@@@ -2587,9 -2604,10 +2604,10 @@@ void pci_release_selected_regions(struc
                if (bars & (1 << i))
                        pci_release_region(pdev, i);
  }
+ EXPORT_SYMBOL(pci_release_selected_regions);
  
  static int __pci_request_selected_regions(struct pci_dev *pdev, int bars,
-                                const char *res_name, int excl)
+                                         const char *res_name, int excl)
  {
        int i;
  
        return 0;
  
  err_out:
-       while(--i >= 0)
+       while (--i >= 0)
                if (bars & (1 << i))
                        pci_release_region(pdev, i);
  
@@@ -2619,13 -2637,15 +2637,15 @@@ int pci_request_selected_regions(struc
  {
        return __pci_request_selected_regions(pdev, bars, res_name, 0);
  }
+ EXPORT_SYMBOL(pci_request_selected_regions);
  
- int pci_request_selected_regions_exclusive(struct pci_dev *pdev,
-                                int bars, const char *res_name)
+ int pci_request_selected_regions_exclusive(struct pci_dev *pdev, int bars,
+                                          const char *res_name)
  {
        return __pci_request_selected_regions(pdev, bars, res_name,
                        IORESOURCE_EXCLUSIVE);
  }
+ EXPORT_SYMBOL(pci_request_selected_regions_exclusive);
  
  /**
   *    pci_release_regions - Release reserved PCI I/O and memory resources
@@@ -2640,6 -2660,7 +2660,7 @@@ void pci_release_regions(struct pci_de
  {
        pci_release_selected_regions(pdev, (1 << 6) - 1);
  }
+ EXPORT_SYMBOL(pci_release_regions);
  
  /**
   *    pci_request_regions - Reserved PCI I/O and memory resources
@@@ -2658,6 -2679,7 +2679,7 @@@ int pci_request_regions(struct pci_dev 
  {
        return pci_request_selected_regions(pdev, ((1 << 6) - 1), res_name);
  }
+ EXPORT_SYMBOL(pci_request_regions);
  
  /**
   *    pci_request_regions_exclusive - Reserved PCI I/O and memory resources
@@@ -2680,6 -2702,7 +2702,7 @@@ int pci_request_regions_exclusive(struc
        return pci_request_selected_regions_exclusive(pdev,
                                        ((1 << 6) - 1), res_name);
  }
+ EXPORT_SYMBOL(pci_request_regions_exclusive);
  
  static void __pci_set_master(struct pci_dev *dev, bool enable)
  {
@@@ -2749,6 -2772,7 +2772,7 @@@ void pci_set_master(struct pci_dev *dev
        __pci_set_master(dev, true);
        pcibios_set_master(dev);
  }
+ EXPORT_SYMBOL(pci_set_master);
  
  /**
   * pci_clear_master - disables bus-mastering for device dev
@@@ -2758,6 -2782,7 +2782,7 @@@ void pci_clear_master(struct pci_dev *d
  {
        __pci_set_master(dev, false);
  }
+ EXPORT_SYMBOL(pci_clear_master);
  
  /**
   * pci_set_cacheline_size - ensure the CACHE_LINE_SIZE register is programmed
@@@ -2790,30 -2815,13 +2815,13 @@@ int pci_set_cacheline_size(struct pci_d
        if (cacheline_size == pci_cache_line_size)
                return 0;
  
-       dev_printk(KERN_DEBUG, &dev->dev, "cache line size of %d is not "
-                  "supported\n", pci_cache_line_size << 2);
+       dev_printk(KERN_DEBUG, &dev->dev, "cache line size of %d is not supported\n",
+                  pci_cache_line_size << 2);
  
        return -EINVAL;
  }
  EXPORT_SYMBOL_GPL(pci_set_cacheline_size);
  
- #ifdef PCI_DISABLE_MWI
- int pci_set_mwi(struct pci_dev *dev)
- {
-       return 0;
- }
- int pci_try_set_mwi(struct pci_dev *dev)
- {
-       return 0;
- }
- void pci_clear_mwi(struct pci_dev *dev)
- {
- }
- #else
  /**
   * pci_set_mwi - enables memory-write-invalidate PCI transaction
   * @dev: the PCI device for which MWI is enabled
   *
   * RETURNS: An appropriate -ERRNO error value on error, or zero for success.
   */
- int
- pci_set_mwi(struct pci_dev *dev)
+ int pci_set_mwi(struct pci_dev *dev)
  {
+ #ifdef PCI_DISABLE_MWI
+       return 0;
+ #else
        int rc;
        u16 cmd;
  
                return rc;
  
        pci_read_config_word(dev, PCI_COMMAND, &cmd);
-       if (! (cmd & PCI_COMMAND_INVALIDATE)) {
+       if (!(cmd & PCI_COMMAND_INVALIDATE)) {
                dev_dbg(&dev->dev, "enabling Mem-Wr-Inval\n");
                cmd |= PCI_COMMAND_INVALIDATE;
                pci_write_config_word(dev, PCI_COMMAND, cmd);
        }
        return 0;
+ #endif
  }
+ EXPORT_SYMBOL(pci_set_mwi);
  
  /**
   * pci_try_set_mwi - enables memory-write-invalidate PCI transaction
   */
  int pci_try_set_mwi(struct pci_dev *dev)
  {
-       int rc = pci_set_mwi(dev);
-       return rc;
+ #ifdef PCI_DISABLE_MWI
+       return 0;
+ #else
+       return pci_set_mwi(dev);
+ #endif
  }
+ EXPORT_SYMBOL(pci_try_set_mwi);
  
  /**
   * pci_clear_mwi - disables Memory-Write-Invalidate for device dev
   *
   * Disables PCI Memory-Write-Invalidate transaction on the device
   */
- void
- pci_clear_mwi(struct pci_dev *dev)
+ void pci_clear_mwi(struct pci_dev *dev)
  {
+ #ifndef PCI_DISABLE_MWI
        u16 cmd;
  
        pci_read_config_word(dev, PCI_COMMAND, &cmd);
                cmd &= ~PCI_COMMAND_INVALIDATE;
                pci_write_config_word(dev, PCI_COMMAND, cmd);
        }
+ #endif
  }
- #endif /* ! PCI_DISABLE_MWI */
+ EXPORT_SYMBOL(pci_clear_mwi);
  
  /**
   * pci_intx - enables/disables PCI INTx for device dev
   *
   * Enables/disables PCI INTx for device dev
   */
- void
- pci_intx(struct pci_dev *pdev, int enable)
+ void pci_intx(struct pci_dev *pdev, int enable)
  {
        u16 pci_command, new;
  
        pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
  
-       if (enable) {
+       if (enable)
                new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
-       } else {
+       else
                new = pci_command | PCI_COMMAND_INTX_DISABLE;
-       }
  
        if (new != pci_command) {
                struct pci_devres *dr;
                }
        }
  }
+ EXPORT_SYMBOL_GPL(pci_intx);
  
  /**
   * pci_intx_mask_supported - probe for INTx masking support
@@@ -2937,8 -2952,8 +2952,8 @@@ bool pci_intx_mask_supported(struct pci
         * go ahead and check it.
         */
        if ((new ^ orig) & ~PCI_COMMAND_INTX_DISABLE) {
-               dev_err(&dev->dev, "Command register changed from "
-                       "0x%x to 0x%x: driver or hardware bug?\n", orig, new);
+               dev_err(&dev->dev, "Command register changed from 0x%x to 0x%x: driver or hardware bug?\n",
+                       orig, new);
        } else if ((new ^ orig) & PCI_COMMAND_INTX_DISABLE) {
                mask_supported = true;
                pci_write_config_word(dev, PCI_COMMAND, orig);
@@@ -3078,8 -3093,7 +3093,8 @@@ int pci_wait_for_pending_transaction(st
        if (!pci_is_pcie(dev))
                return 1;
  
 -      return pci_wait_for_pending(dev, PCI_EXP_DEVSTA, PCI_EXP_DEVSTA_TRPND);
 +      return pci_wait_for_pending(dev, pci_pcie_cap(dev) + PCI_EXP_DEVSTA,
 +                                  PCI_EXP_DEVSTA_TRPND);
  }
  EXPORT_SYMBOL(pci_wait_for_pending_transaction);
  
@@@ -3121,11 -3135,10 +3136,10 @@@ static int pci_af_flr(struct pci_dev *d
                return 0;
  
        /* Wait for Transaction Pending bit clean */
 -      if (pci_wait_for_pending(dev, PCI_AF_STATUS, PCI_AF_STATUS_TP))
 +      if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
                goto clear;
  
-       dev_err(&dev->dev, "transaction is not cleared; "
-                       "proceeding with reset anyway\n");
+       dev_err(&dev->dev, "transaction is not cleared; proceeding with reset anyway\n");
  
  clear:
        pci_write_config_byte(dev, pos + PCI_AF_CTRL, PCI_AF_CTRL_FLR);
@@@ -3179,7 -3192,14 +3193,7 @@@ static int pci_pm_reset(struct pci_dev 
        return 0;
  }
  
 -/**
 - * pci_reset_bridge_secondary_bus - Reset the secondary bus on a PCI bridge.
 - * @dev: Bridge device
 - *
 - * Use the bridge control register to assert reset on the secondary bus.
 - * Devices on the secondary bus are left in power-on state.
 - */
 -void pci_reset_bridge_secondary_bus(struct pci_dev *dev)
 +void __weak pcibios_reset_secondary_bus(struct pci_dev *dev)
  {
        u16 ctrl;
  
         */
        ssleep(1);
  }
 +
 +/**
 + * pci_reset_bridge_secondary_bus - Reset the secondary bus on a PCI bridge.
 + * @dev: Bridge device
 + *
 + * Use the bridge control register to assert reset on the secondary bus.
 + * Devices on the secondary bus are left in power-on state.
 + */
 +void pci_reset_bridge_secondary_bus(struct pci_dev *dev)
 +{
 +      pcibios_reset_secondary_bus(dev);
 +}
  EXPORT_SYMBOL_GPL(pci_reset_bridge_secondary_bus);
  
  static int pci_parent_bus_reset(struct pci_dev *dev, int probe)
@@@ -4100,6 -4108,7 +4114,7 @@@ int pci_select_bars(struct pci_dev *dev
                        bars |= (1 << i);
        return bars;
  }
+ EXPORT_SYMBOL(pci_select_bars);
  
  /**
   * pci_resource_bar - get position of the BAR associated with a resource
@@@ -4139,7 -4148,7 +4154,7 @@@ void __init pci_register_set_vga_state(
  }
  
  static int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
-                     unsigned int command_bits, u32 flags)
+                                 unsigned int command_bits, u32 flags)
  {
        if (arch_set_vga_state)
                return arch_set_vga_state(dev, decode, command_bits,
@@@ -4251,11 -4260,10 +4266,10 @@@ static resource_size_t pci_specified_re
                        bus == dev->bus->number &&
                        slot == PCI_SLOT(dev->devfn) &&
                        func == PCI_FUNC(dev->devfn)) {
-                       if (align_order == -1) {
+                       if (align_order == -1)
                                align = PAGE_SIZE;
-                       } else {
+                       else
                                align = 1 << align_order;
-                       }
                        /* Found */
                        break;
                }
@@@ -4373,7 -4381,6 +4387,6 @@@ static int __init pci_resource_alignmen
        return bus_create_file(&pci_bus_type,
                                        &bus_attr_resource_alignment);
  }
  late_initcall(pci_resource_alignment_sysfs_init);
  
  static void pci_no_domains(void)
@@@ -4452,41 -4459,3 +4465,3 @@@ static int __init pci_setup(char *str
        return 0;
  }
  early_param("pci", pci_setup);
- EXPORT_SYMBOL(pci_reenable_device);
- EXPORT_SYMBOL(pci_enable_device_io);
- EXPORT_SYMBOL(pci_enable_device_mem);
- EXPORT_SYMBOL(pci_enable_device);
- EXPORT_SYMBOL(pcim_enable_device);
- EXPORT_SYMBOL(pcim_pin_device);
- EXPORT_SYMBOL(pci_disable_device);
- EXPORT_SYMBOL(pci_find_capability);
- EXPORT_SYMBOL(pci_bus_find_capability);
- EXPORT_SYMBOL(pci_release_regions);
- EXPORT_SYMBOL(pci_request_regions);
- EXPORT_SYMBOL(pci_request_regions_exclusive);
- EXPORT_SYMBOL(pci_release_region);
- EXPORT_SYMBOL(pci_request_region);
- EXPORT_SYMBOL(pci_request_region_exclusive);
- EXPORT_SYMBOL(pci_release_selected_regions);
- EXPORT_SYMBOL(pci_request_selected_regions);
- EXPORT_SYMBOL(pci_request_selected_regions_exclusive);
- EXPORT_SYMBOL(pci_set_master);
- EXPORT_SYMBOL(pci_clear_master);
- EXPORT_SYMBOL(pci_set_mwi);
- EXPORT_SYMBOL(pci_try_set_mwi);
- EXPORT_SYMBOL(pci_clear_mwi);
- EXPORT_SYMBOL_GPL(pci_intx);
- EXPORT_SYMBOL(pci_assign_resource);
- EXPORT_SYMBOL(pci_find_parent_resource);
- EXPORT_SYMBOL(pci_select_bars);
- EXPORT_SYMBOL(pci_set_power_state);
- EXPORT_SYMBOL(pci_save_state);
- EXPORT_SYMBOL(pci_restore_state);
- EXPORT_SYMBOL(pci_pme_capable);
- EXPORT_SYMBOL(pci_pme_active);
- EXPORT_SYMBOL(pci_wake_from_d3);
- EXPORT_SYMBOL(pci_prepare_to_sleep);
- EXPORT_SYMBOL(pci_back_from_sleep);
- EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);