lkml.org 
[lkml]   [2013]   [Jun]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 1/6] PCI: acpiphp: do not check for SLOT_ENABLED in enable_device()
    On Tue, Jun 25, 2013 at 10:22 AM, Mika Westerberg
    <mika.westerberg@linux.intel.com> wrote:
    > From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    >
    > With Thunderbolt you can chain devices: connect a new devices to plugged
    > one. In this case the slot is already enabled, but we still want to look
    > for new devices behind it.
    >
    > We're going to reuse enable_device() for rescan for new devices on the
    > enabled slot. Let's push the check up by stack.
    >
    > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    > ---
    > drivers/pci/hotplug/acpiphp_glue.c | 5 ++---
    > 1 file changed, 2 insertions(+), 3 deletions(-)
    >
    > diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
    > index 59df857..b983e29 100644
    > --- a/drivers/pci/hotplug/acpiphp_glue.c
    > +++ b/drivers/pci/hotplug/acpiphp_glue.c
    > @@ -688,9 +688,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);
    >
    > @@ -1242,6 +1239,8 @@ int acpiphp_enable_slot(struct acpiphp_slot *slot)
    > goto err_exit;
    >
    > if (get_slot_status(slot) == ACPI_STA_ALL) {
    > + if (slot->flags & SLOT_ENABLED)
    > + goto err_exit;

    Why do we check for SLOT_ENABLED at all? I think we're handling a Bus
    Check notification, which means "re-enumerate on the device tree
    starting from the notification point." It doesn't say anything about
    skipping the re-enumeration if we find a device that's already
    enabled.

    It seems like we ought to just re-enumerate all the way down in case a
    device was added farther down in the tree (which is what it sounds
    like Thunderbolt is doing).

    > /* configure all functions */
    > retval = enable_device(slot);
    > if (retval)
    > --
    > 1.8.3.1
    >


    \
     
     \ /
      Last update: 2013-06-27 02:01    [W:4.124 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site