From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
LKML <linux-kernel@vger.kernel.org>,
Linux PCI <linux-pci@vger.kernel.org>,
Yinghai Lu <yinghai@kernel.org>, Jiang Liu <liuj97@gmail.com>
Subject: Re: [RFC][PATCH 11/30] ACPI / hotplug / PCI: Register all devices under the given bridge
Date: Fri, 12 Jul 2013 16:01:59 +0300 [thread overview]
Message-ID: <20130712130159.GJ4898@intel.com> (raw)
In-Reply-To: <20130712115420.GH4898@intel.com>
On Fri, Jul 12, 2013 at 02:54:20PM +0300, Mika Westerberg wrote:
> On Fri, Jul 12, 2013 at 01:50:29AM +0200, Rafael J. Wysocki wrote:
> > @@ -1210,6 +1125,35 @@ void acpiphp_enumerate_slots(struct pci_
> > */
> > get_device(&bus->dev);
> >
> > + if (!pci_is_root_bus(bridge->pci_bus)) {
> > + struct acpiphp_context *context;
> > +
> > + /*
> > + * This bridge should have been registered as a hotplug function
> > + * under its parent, so the context has to be there. If not, we
> > + * are in deep goo.
> > + */
> > + mutex_lock(&acpiphp_context_lock);
> > + context = acpiphp_get_context(handle);
> > + if (WARN_ON(!context || !context->func)) {
> > + mutex_unlock(&acpiphp_context_lock);
> > + put_device(&bus->dev);
> > + kfree(bridge);
> > + return;
> > + }
> > + bridge->context = context;
> > + context->bridge = bridge;
> > + /* Get a reference to the parent bridge. */
> > + get_bridge(context->func->slot->bridge);
> > + mutex_unlock(&acpiphp_context_lock);
> > + }
> > +
> > + status = acpi_get_handle(bridge->handle, "_EJ0", &handle);
> > + if (ACPI_SUCCESS(status)) {
> > + dbg("found ejectable p2p bridge\n");
> > + bridge->flags |= BRIDGE_HAS_EJ0;
> > + }
> > +
> > /* must be added to the list prior to calling register_slot */
> > mutex_lock(&bridge_mutex);
> > list_add(&bridge->list, &bridge_list);
> > @@ -1220,34 +1164,9 @@ void acpiphp_enumerate_slots(struct pci_
> > register_slot, NULL, bridge, NULL);
> > if (ACPI_FAILURE(status)) {
> > acpi_handle_err(bridge->handle, "failed to register slots\n");
> > - goto err;
> > - }
> > -
> > - if (pci_is_root_bus(bridge->pci_bus))
> > - return;
> > -
> > - status = acpi_get_handle(bridge->handle, "_EJ0", &handle);
> > - if (ACPI_SUCCESS(status)) {
> > - dbg("found ejectable p2p bridge\n");
> > - bridge->flags |= BRIDGE_HAS_EJ0;
> > - }
> > - if (context->handler_for_func) {
> > - /* Notify handler already installed. */
> > - get_bridge(context->func->slot->bridge);
> > - return;
> > + cleanup_bridge(bridge);
> > + put_bridge(bridge);
> > }
> > -
> > - /* install notify handler for P2P bridges */
> > - status = acpi_install_notify_handler(bridge->handle, ACPI_SYSTEM_NOTIFY,
> > - handle_hotplug_event, NULL);
>
> With this removed we now install notify handlers for the slot objects under
> this bridge but not for the bridge itself.
>
> In case of Thunderbolt the BIOS will send the event for the root port ACPI
> device \_SB_.PCI0.RP05 and with the above change we don't handle it
> anymore.
Actually there was a bug in patch [23/30] that caused this. Once that is
fixed I can see that the notify handlers get correctly installed. I'll
comment on that patch.
next prev parent reply other threads:[~2013-07-12 13:01 UTC|newest]
Thread overview: 135+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-09 0:01 [RFC][PATCH 0/8] ACPI / hotplug / PCI: Consolidation of handling notifications (in progress) Rafael J. Wysocki
2013-07-09 0:14 ` [RFC][PATCH 1/8] ACPI / PCI: Make bus registration and unregistration symmetric Rafael J. Wysocki
2013-07-09 0:16 ` [RFC][PATCH 2/8] ACPI / hotplug / PCI: Consolidate acpiphp_enumerate_slots() Rafael J. Wysocki
2013-07-09 0:17 ` [RFC][PATCH 3/8] ACPI / hotplug / PCI: Always return success after adding a function Rafael J. Wysocki
2013-07-09 0:18 ` [RFC][PATCH 4/8] ACPI / hotplug / PCI: Hotplug context objects for bridges and functions Rafael J. Wysocki
2013-07-09 9:23 ` Mika Westerberg
2013-07-09 23:54 ` [Update][RFC][PATCH " Rafael J. Wysocki
2013-07-09 0:19 ` [RFC][PATCH 5/8] ACPI / hotplug / PCI: Unified notify handler for hotplug events Rafael J. Wysocki
2013-07-09 9:30 ` Mika Westerberg
2013-07-09 23:49 ` Rafael J. Wysocki
2013-07-09 0:20 ` [RFC][PATCH 6/8] ACPI / hotplug / PCI: Drop acpiphp_handle_to_bridge() Rafael J. Wysocki
2013-07-09 9:37 ` Mika Westerberg
2013-07-09 23:46 ` Rafael J. Wysocki
2013-07-09 0:21 ` [RFC][PATCH 7/8] ACPI / hotplug / PCI: Pass hotplug context object to event handlers Rafael J. Wysocki
2013-07-09 0:22 ` [RFC][PATCH 8/8] ACPI / hotplug / PCI: Merge hotplug event handling functions Rafael J. Wysocki
2013-07-11 23:34 ` [RFC][PATCH 0/30] ACPI / hotplug / PCI: Major rework + Thunderbolt workarounds Rafael J. Wysocki
2013-07-11 23:36 ` [RFC][PATCH 1/30] ACPI / PCI: Make bus registration and unregistration symmetric Rafael J. Wysocki
2013-07-11 23:37 ` [RFC][PATCH 2/30] ACPI / hotplug / PCI: Consolidate acpiphp_enumerate_slots() Rafael J. Wysocki
2013-07-11 23:38 ` [RFC][PATCH 3/30] ACPI / hotplug / PCI: Always return success after adding a function Rafael J. Wysocki
2013-07-11 23:39 ` [RFC][PATCH 4/30] ACPI / hotplug / PCI: Hotplug context objects for bridges and functions Rafael J. Wysocki
2013-07-11 23:40 ` [RFC][PATCH 5/30] ACPI / hotplug / PCI: Unified notify handler for hotplug events Rafael J. Wysocki
2013-07-11 23:44 ` [RFC][PATCH 6/30] ACPI / hotplug / PCI: Rework acpiphp_handle_to_bridge() Rafael J. Wysocki
2013-07-11 23:45 ` [RFC][PATCH 7/30] ACPI / hotplug / PCI: Pass hotplug context objects to event handlers Rafael J. Wysocki
2013-07-11 23:47 ` [RFC][PATCH 8/30] ACPI / hotplug / PCI: Merge hotplug event handling functions Rafael J. Wysocki
2013-07-11 23:48 ` [RFC][PATCH 9/30] ACPI / hotplug / PCI: Drop func field from struct acpiphp_bridge Rafael J. Wysocki
2013-07-11 23:49 ` [RFC][PATCH 10/30] ACPI / hotplug / PCI: Refactor slot allocation code in register_slot() Rafael J. Wysocki
2013-07-11 23:50 ` [RFC][PATCH 11/30] ACPI / hotplug / PCI: Register all devices under the given bridge Rafael J. Wysocki
2013-07-12 11:54 ` Mika Westerberg
2013-07-12 13:01 ` Mika Westerberg [this message]
2013-07-11 23:51 ` [RFC][PATCH 12/30] ACPI / hotplug / PCI: Drop sun field from struct acpiphp_slot Rafael J. Wysocki
2013-07-11 23:52 ` [RFC][PATCH 13/30] ACPI / hotplug / PCI: Use common slot count variable in register_slot() Rafael J. Wysocki
2013-07-11 23:54 ` [RFC][PATCH 14/30] ACPI / hotplug / PCI: Drop flags field from struct acpiphp_bridge Rafael J. Wysocki
2013-07-11 23:54 ` [RFC][PATCH 15/30] ACPI / hotplug / PCI: Embed function struct into struct acpiphp_context Rafael J. Wysocki
2013-07-11 23:55 ` [RFC][PATCH 16/30] ACPI / hotplug / PCI: Drop handle field from struct acpiphp_func Rafael J. Wysocki
2013-07-11 23:56 ` [RFC][PATCH 17/30] ACPI / hotplug / PCI: Drop handle field from struct acpiphp_bridge Rafael J. Wysocki
2013-07-11 23:56 ` [RFC][PATCH 18/30] ACPI / hotplug / PCI: Store parent in functions and bus in slots Rafael J. Wysocki
2013-07-11 23:57 ` [RFC][PATCH 19/30] ACPI / hotplug / PCI: Rework namespace scanning and trimming routines Rafael J. Wysocki
2013-07-11 23:58 ` [RFC][PATCH 20/30] ACPI / hotplug / PCI: Drop redundant checks from check_hotplug_bridge() Rafael J. Wysocki
2013-07-11 23:59 ` [RFC][PATCH 21/30] ACPI / hotplug / PCI: Consolidate slot disabling and ejecting Rafael J. Wysocki
2013-07-12 0:00 ` [RFC][PATCH 22/30] ACPI / hotplug / PCI: Do not queue up event handling work items in vain Rafael J. Wysocki
2013-07-12 0:01 ` [RFC][PATCH 23/30] ACPI / hotplug / PCI: Do not exectute _PS0 and _PS3 directly Rafael J. Wysocki
2013-07-12 13:05 ` Mika Westerberg
2013-07-12 21:09 ` Rafael J. Wysocki
2013-07-12 0:02 ` [RFC][PATCH 24/30] ACPI / hotplug / PCI: Do not check SLOT_ENABLED in enable_device() Rafael J. Wysocki
2013-07-12 0:03 ` [RFC][PATCH 25/30] ACPI / hotplug / PCI: Allow slots without new devices to be rescanned Rafael J. Wysocki
2013-07-12 0:04 ` [RFC][PATCH 26/30] ACPI / hotplug / PCI: Check for new devices on enabled slots Rafael J. Wysocki
2013-07-12 0:05 ` [RFC][PATCH 27/30] ACPI / hotplug / PCI: Get rid of unused constants in acpiphp.h Rafael J. Wysocki
2013-07-12 0:06 ` [RFC][PATCH 28/30] ACPI / hotplug / PCI: Sanitize acpiphp_get_(latch)|(adapter)_status() Rafael J. Wysocki
2013-07-12 0:07 ` [RFC][PATCH 29/30] ACPI / hotplug / PCI: Redefine enable_device() and disable_device() Rafael J. Wysocki
2013-07-12 0:07 ` [RFC][PATCH 30/30] ACPI / hotplug / PCI: Clean up bridge_mutex usage Rafael J. Wysocki
2013-07-12 13:18 ` [RFC][PATCH 0/30] ACPI / hotplug / PCI: Major rework + Thunderbolt workarounds Mika Westerberg
2013-07-12 21:04 ` Rafael J. Wysocki
2013-07-17 23:05 ` [PATCH " Rafael J. Wysocki
2013-07-17 23:15 ` [PATCH 1/30] ACPI / PCI: Make bus registration and unregistration symmetric Rafael J. Wysocki
2013-07-18 1:00 ` Yinghai Lu
2013-07-17 23:16 ` [PATCH 2/30] ACPI / hotplug / PCI: Consolidate acpiphp_enumerate_slots() Rafael J. Wysocki
2013-07-18 1:40 ` Yinghai Lu
2013-07-18 19:09 ` Rafael J. Wysocki
2013-07-17 23:17 ` [PATCH 3/30] ACPI / hotplug / PCI: Always return success after adding a function Rafael J. Wysocki
2013-07-17 23:17 ` [PATCH 4/30] ACPI / hotplug / PCI: Hotplug context objects for bridges and functions Rafael J. Wysocki
2013-07-18 2:00 ` Yinghai Lu
2013-07-18 19:04 ` Rafael J. Wysocki
2013-07-18 20:06 ` Rafael J. Wysocki
2013-07-17 23:18 ` [PATCH 5/30] ACPI / hotplug / PCI: Unified notify handler for hotplug events Rafael J. Wysocki
2013-07-18 2:07 ` Yinghai Lu
2013-07-18 18:59 ` Rafael J. Wysocki
2013-07-17 23:19 ` [PATCH 6/30] ACPI / hotplug / PCI: Rework acpiphp_handle_to_bridge() Rafael J. Wysocki
2013-07-17 23:19 ` [PATCH 7/30] ACPI / hotplug / PCI: Pass hotplug context objects to event handlers Rafael J. Wysocki
2013-07-17 23:20 ` [PATCH 8/30] ACPI / hotplug / PCI: Merge hotplug event handling functions Rafael J. Wysocki
2013-07-17 23:21 ` [PATCH 9/30] ACPI / hotplug / PCI: Drop func field from struct acpiphp_bridge Rafael J. Wysocki
2013-07-17 23:22 ` [PATCH 10/30] ACPI / hotplug / PCI: Refactor slot allocation code in register_slot() Rafael J. Wysocki
2013-07-17 23:22 ` [PATCH 11/30] ACPI / hotplug / PCI: Register all devices under the given bridge Rafael J. Wysocki
2013-07-17 23:23 ` [PATCH 12/30] ACPI / hotplug / PCI: Drop sun field from struct acpiphp_slot Rafael J. Wysocki
2013-07-17 23:24 ` [PATCH 13/30] ACPI / hotplug / PCI: Drop flags field from struct acpiphp_bridge Rafael J. Wysocki
2013-07-17 23:24 ` [PATCH 14/30] ACPI / hotplug / PCI: Embed function struct into struct acpiphp_context Rafael J. Wysocki
2013-07-17 23:25 ` [PATCH 15/30] ACPI / hotplug / PCI: Drop handle field from struct acpiphp_func Rafael J. Wysocki
2013-07-17 23:26 ` [PATCH 16/30] ACPI / hotplug / PCI: Drop handle field from struct acpiphp_bridge Rafael J. Wysocki
2013-07-17 23:26 ` [PATCH 17/30] ACPI / hotplug / PCI: Store parent in functions and bus in slots Rafael J. Wysocki
2013-07-17 23:27 ` [PATCH 18/30] ACPI / hotplug / PCI: Rework namespace scanning and trimming routines Rafael J. Wysocki
2013-07-17 23:27 ` [PATCH 19/30] ACPI / hotplug / PCI: Drop redundant checks from check_hotplug_bridge() Rafael J. Wysocki
2013-07-17 23:28 ` [PATCH 20/30] ACPI / hotplug / PCI: Consolidate slot disabling and ejecting Rafael J. Wysocki
2013-07-17 23:29 ` [PATCH 21/30] ACPI / hotplug / PCI: Do not queue up event handling work items in vain Rafael J. Wysocki
2013-07-17 23:30 ` [PATCH 22/30] ACPI / hotplug / PCI: Do not exectute _PS0 and _PS3 directly Rafael J. Wysocki
2013-07-17 23:31 ` [PATCH 23/30] ACPI / hotplug / PCI: Do not check SLOT_ENABLED in enable_device() Rafael J. Wysocki
2013-07-17 23:31 ` [PATCH 24/30] ACPI / hotplug / PCI: Allow slots without new devices to be rescanned Rafael J. Wysocki
2013-07-17 23:32 ` [PATCH 25/30] ACPI / hotplug / PCI: Check for new devices on enabled slots Rafael J. Wysocki
2013-09-04 20:36 ` Alex Williamson
2013-09-04 22:54 ` Rafael J. Wysocki
2013-09-04 23:12 ` Alex Williamson
2013-09-04 23:35 ` Rafael J. Wysocki
2013-09-05 3:37 ` Alex Williamson
2013-09-05 4:06 ` Alex Williamson
2013-09-05 11:54 ` Rafael J. Wysocki
2013-09-05 13:19 ` Alex Williamson
2013-09-05 14:21 ` Alex Williamson
2013-09-05 19:44 ` Excess dmesg output from ACPIPHP on boot (was: Re: [PATCH 25/30] ACPI / hotplug / PCI: Check for new devices on enabled slots) Rafael J. Wysocki
2013-09-05 21:39 ` Rafael J. Wysocki
2013-09-05 21:45 ` Rafael J. Wysocki
2013-09-05 22:17 ` Alex Williamson
2013-09-05 22:40 ` Rafael J. Wysocki
2013-09-05 23:08 ` Alex Williamson
2013-09-05 23:36 ` Rafael J. Wysocki
2013-09-05 23:31 ` Alex Williamson
2013-09-05 23:48 ` Rafael J. Wysocki
2013-09-06 12:19 ` Bjorn Helgaas
2013-09-06 12:40 ` Rafael J. Wysocki
2013-09-06 15:34 ` Alex Williamson
2013-09-07 22:16 ` [PATCH] ACPI / hotplug / PCI: Avoid parent bus rescans on spurious device checks Rafael J. Wysocki
2013-09-09 16:32 ` Alex Williamson
2013-09-09 20:02 ` Rafael J. Wysocki
2013-09-06 13:42 ` [PATCH 0/2] Re: Excess dmesg output from ACPIPHP on boot Rafael J. Wysocki
2013-09-06 13:43 ` [PATCH 1/2] ACPI / hotplug / PCI: Avoid doing too much for spurious notifies Rafael J. Wysocki
2013-09-06 15:46 ` Yinghai Lu
2013-09-06 23:45 ` Rafael J. Wysocki
2013-09-06 13:46 ` [PATCH 2/2] ACPI / hotplug / PCI: Use _OST to notify firmware about notify status Rafael J. Wysocki
2013-09-06 15:36 ` [PATCH 0/2] Re: Excess dmesg output from ACPIPHP on boot Alex Williamson
2013-09-06 23:46 ` Rafael J. Wysocki
2013-09-05 6:17 ` [PATCH 25/30] ACPI / hotplug / PCI: Check for new devices on enabled slots Lan Tianyu
2013-09-05 11:57 ` Rafael J. Wysocki
2013-09-05 13:11 ` Lan Tianyu
2013-09-05 21:43 ` Rafael J. Wysocki
2013-07-17 23:33 ` [PATCH 26/30] ACPI / hotplug / PCI: Get rid of unused constants in acpiphp.h Rafael J. Wysocki
2013-07-17 23:34 ` [PATCH 27/30] ACPI / hotplug / PCI: Sanitize acpiphp_get_(latch)|(adapter)_status() Rafael J. Wysocki
2013-07-17 23:35 ` [PATCH 28/30] ACPI / hotplug / PCI: Redefine enable_device() and disable_device() Rafael J. Wysocki
2013-07-17 23:35 ` [PATCH 29/30] ACPI / hotplug / PCI: Clean up bridge_mutex usage Rafael J. Wysocki
2013-07-17 23:36 ` [PATCH 30/30] ACPI / hotplug / PCI: Get rid of check_sub_bridges() Rafael J. Wysocki
2013-07-23 6:49 ` [PATCH 0/30] ACPI / hotplug / PCI: Major rework + Thunderbolt workarounds Yinghai Lu
2013-07-23 21:39 ` Rafael J. Wysocki
2013-07-24 2:20 ` Yinghai Lu
2013-07-24 12:22 ` Rafael J. Wysocki
2013-07-24 12:58 ` Rafael J. Wysocki
2013-07-24 16:06 ` Bjorn Helgaas
2013-07-24 20:02 ` Rafael J. Wysocki
2013-07-25 13:25 ` Yinghai Lu
2013-07-25 19:57 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130712130159.GJ4898@intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=liuj97@gmail.com \
--cc=rjw@sisk.pl \
--cc=yinghai@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).