From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
To: Tang Chen <tangchen@cn.fujitsu.com>
Cc: yinghai@kernel.org, bhelgaas@google.com, lenb@kernel.org,
jiang.liu@huawei.com, izumi.taku@jp.fujitsu.com,
mihailm@parallels.com, linux-acpi@vger.kernel.org,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] Use kacpi_hotplug_wq to handle container hotplug event.
Date: Wed, 24 Oct 2012 15:54:36 +0900 [thread overview]
Message-ID: <508790AC.5080001@jp.fujitsu.com> (raw)
In-Reply-To: <1351058750-4275-2-git-send-email-tangchen@cn.fujitsu.com>
Hi Tang,
2012/10/24 15:05, Tang Chen wrote:
> As the comments in __acpi_os_execute() said:
>
> We can't run hotplug code in keventd_wq/kacpid_wq/kacpid_notify_wq
> because the hotplug code may call driver .remove() functions,
> which invoke flush_scheduled_work/acpi_os_wait_events_complete
> to flush these workqueues.
>
> we should keep the hotplug code in kacpi_hotplug_wq.
>
> But we have the following call series in kernel now:
> acpi_ev_queue_notify_request()
> |--> acpi_os_execute()
> |--> __acpi_os_execute(type, function, context, 0)
>
> The last parameter 0 makes the container_notify_cb() executed in
> kacpi_notify_wq or kacpid_wq. So, we need to put the real hotplug code
> into kacpi_hotplug_wq.
I cannot understand the purpose of the patch.
Is the patch a bug fix patch? If yes, what problem happens?
Thanks,
Yasuaki Ishimatsu
>
> Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
> ---
> drivers/acpi/container.c | 17 ++++++++++++++++-
> 1 files changed, 16 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c
> index 69e2d6b..d300e03 100644
> --- a/drivers/acpi/container.c
> +++ b/drivers/acpi/container.c
> @@ -35,6 +35,7 @@
> #include <acpi/acpi_bus.h>
> #include <acpi/acpi_drivers.h>
> #include <acpi/container.h>
> +#include <acpi/acpiosxf.h>
>
> #define PREFIX "ACPI: "
>
> @@ -165,14 +166,21 @@ static int container_device_add(struct acpi_device **device, acpi_handle handle)
> return result;
> }
>
> -static void container_notify_cb(acpi_handle handle, u32 type, void *context)
> +static void __container_notify_cb(struct work_struct *work)
> {
> struct acpi_device *device = NULL;
> int result;
> int present;
> acpi_status status;
> + struct acpi_hp_work *hp_work;
> + acpi_handle handle;
> + u32 type;
> u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; /* default */
>
> + hp_work = container_of(work, struct acpi_hp_work, work);
> + handle = hp_work->handle;
> + type = hp_work->type;
> +
> switch (type) {
> case ACPI_NOTIFY_BUS_CHECK:
> /* Fall through */
> @@ -224,6 +232,13 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
> return;
> }
>
> +static void container_notify_cb(acpi_handle handle, u32 type,
> + void *context)
> +{
> + alloc_acpi_hp_work(handle, type, context,
> + __container_notify_cb);
> +}
> +
> static acpi_status
> container_walk_namespace_cb(acpi_handle handle,
> u32 lvl, void *context, void **rv)
>
WARNING: multiple messages have this Message-ID (diff)
From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
To: Tang Chen <tangchen@cn.fujitsu.com>
Cc: <yinghai@kernel.org>, <bhelgaas@google.com>, <lenb@kernel.org>,
<jiang.liu@huawei.com>, <izumi.taku@jp.fujitsu.com>,
<mihailm@parallels.com>, <linux-acpi@vger.kernel.org>,
<linux-pci@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 1/2] Use kacpi_hotplug_wq to handle container hotplug event.
Date: Wed, 24 Oct 2012 15:54:36 +0900 [thread overview]
Message-ID: <508790AC.5080001@jp.fujitsu.com> (raw)
In-Reply-To: <1351058750-4275-2-git-send-email-tangchen@cn.fujitsu.com>
Hi Tang,
2012/10/24 15:05, Tang Chen wrote:
> As the comments in __acpi_os_execute() said:
>
> We can't run hotplug code in keventd_wq/kacpid_wq/kacpid_notify_wq
> because the hotplug code may call driver .remove() functions,
> which invoke flush_scheduled_work/acpi_os_wait_events_complete
> to flush these workqueues.
>
> we should keep the hotplug code in kacpi_hotplug_wq.
>
> But we have the following call series in kernel now:
> acpi_ev_queue_notify_request()
> |--> acpi_os_execute()
> |--> __acpi_os_execute(type, function, context, 0)
>
> The last parameter 0 makes the container_notify_cb() executed in
> kacpi_notify_wq or kacpid_wq. So, we need to put the real hotplug code
> into kacpi_hotplug_wq.
I cannot understand the purpose of the patch.
Is the patch a bug fix patch? If yes, what problem happens?
Thanks,
Yasuaki Ishimatsu
>
> Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
> ---
> drivers/acpi/container.c | 17 ++++++++++++++++-
> 1 files changed, 16 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c
> index 69e2d6b..d300e03 100644
> --- a/drivers/acpi/container.c
> +++ b/drivers/acpi/container.c
> @@ -35,6 +35,7 @@
> #include <acpi/acpi_bus.h>
> #include <acpi/acpi_drivers.h>
> #include <acpi/container.h>
> +#include <acpi/acpiosxf.h>
>
> #define PREFIX "ACPI: "
>
> @@ -165,14 +166,21 @@ static int container_device_add(struct acpi_device **device, acpi_handle handle)
> return result;
> }
>
> -static void container_notify_cb(acpi_handle handle, u32 type, void *context)
> +static void __container_notify_cb(struct work_struct *work)
> {
> struct acpi_device *device = NULL;
> int result;
> int present;
> acpi_status status;
> + struct acpi_hp_work *hp_work;
> + acpi_handle handle;
> + u32 type;
> u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; /* default */
>
> + hp_work = container_of(work, struct acpi_hp_work, work);
> + handle = hp_work->handle;
> + type = hp_work->type;
> +
> switch (type) {
> case ACPI_NOTIFY_BUS_CHECK:
> /* Fall through */
> @@ -224,6 +232,13 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
> return;
> }
>
> +static void container_notify_cb(acpi_handle handle, u32 type,
> + void *context)
> +{
> + alloc_acpi_hp_work(handle, type, context,
> + __container_notify_cb);
> +}
> +
> static acpi_status
> container_walk_namespace_cb(acpi_handle handle,
> u32 lvl, void *context, void **rv)
>
next prev parent reply other threads:[~2012-10-24 6:55 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-24 6:05 [PATCH v2 0/2] ACPI: container hot remove support Tang Chen
2012-10-24 6:05 ` [PATCH v2 1/2] Use kacpi_hotplug_wq to handle container hotplug event Tang Chen
2012-10-24 6:54 ` Yasuaki Ishimatsu [this message]
2012-10-24 6:54 ` Yasuaki Ishimatsu
2012-10-24 7:24 ` Tang Chen
2012-10-24 8:09 ` Yasuaki Ishimatsu
2012-10-24 8:09 ` Yasuaki Ishimatsu
2012-10-24 7:42 ` Tang Chen
2012-10-24 6:05 ` [PATCH v2 2/2] Improve container_notify_cb() to support container hot-remove Tang Chen
2012-10-24 17:14 ` Toshi Kani
2012-10-24 18:02 ` Bjorn Helgaas
2012-10-25 0:53 ` Jiang Liu
2012-10-25 0:53 ` Jiang Liu
2012-10-25 1:31 ` Tang Chen
2012-10-25 1:47 ` Jiang Liu
2012-10-25 1:47 ` Jiang Liu
2012-10-25 17:20 ` Toshi Kani
2012-10-26 5:43 ` Tang Chen
2012-10-26 20:02 ` Toshi Kani
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=508790AC.5080001@jp.fujitsu.com \
--to=isimatu.yasuaki@jp.fujitsu.com \
--cc=bhelgaas@google.com \
--cc=izumi.taku@jp.fujitsu.com \
--cc=jiang.liu@huawei.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mihailm@parallels.com \
--cc=tangchen@cn.fujitsu.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.