]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ACPI / hotplug / PCI: Do not check SLOT_ENABLED in enable_device()
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Sat, 13 Jul 2013 21:27:26 +0000 (23:27 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 23 Jul 2013 02:00:26 +0000 (04:00 +0200)
With Thunderbolt you can daisy chain devices: connect new devices to
an already plugged one.  In that case the "hotplug slot" is already
enabled, but we still want to look for new PCI devices behind it.

Reuse enable_device() to scan for new PCI devices on enabled slots
and push the SLOT_ENABLED check up into acpiphp_enable_slot().

[rjw: Rebased, modified the changelog]
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/pci/hotplug/acpiphp_glue.c

index b6691cc8230ba988a8ac95418c36c6bad7ee8520..c7a668e1fc1254fa3a99ed9dc0095611ffc311d0 100644 (file)
@@ -545,9 +545,6 @@ static int __ref enable_device(struct acpiphp_slot *slot)
        int num, max, pass;
        LIST_HEAD(add_list);
 
-       if (slot->flags & SLOT_ENABLED)
-               goto err_exit;
-
        list_for_each_entry(func, &slot->funcs, sibling)
                acpiphp_bus_add(func_to_handle(func));
 
@@ -1024,11 +1021,14 @@ void acpiphp_remove_slots(struct pci_bus *bus)
  */
 int acpiphp_enable_slot(struct acpiphp_slot *slot)
 {
-       int retval;
+       int retval = 0;
 
        mutex_lock(&slot->crit_sect);
+
        /* configure all functions */
-       retval = enable_device(slot);
+       if (!(slot->flags & SLOT_ENABLED))
+               retval = enable_device(slot);
+
        mutex_unlock(&slot->crit_sect);
        return retval;
 }