From: Toshi Kani <toshi.kani@hp.com>
To: Yinghai Lu <yinghai@kernel.org>
Cc: ZhangRui <rui.zhang@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Len Brown <lenb@kernel.org>, "Rafael J. Wysocki" <rjw@sisk.pl>,
Tang Chen <tangchen@cn.fujitsu.com>,
bhelgaas@google.com, jiang.liu@huawei.com,
izumi.taku@jp.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com,
linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 3/3] Improve container_notify_cb() to support container hot-remove.
Date: Thu, 01 Nov 2012 13:17:58 -0600 [thread overview]
Message-ID: <1351797478.19172.103.camel@misato.fc.hp.com> (raw)
In-Reply-To: <CAE9FiQXxHz_RntOc2gxxDscv8+mDQ2XBL0sHSrptj_arwUb8-A@mail.gmail.com>
On Thu, 2012-11-01 at 11:28 -0700, Yinghai Lu wrote:
> On Thu, Nov 1, 2012 at 9:43 AM, Toshi Kani <toshi.kani@hp.com> wrote:
> >
> > Rafael pointed out in my CPU hot-remove patch that
> > acpi_bus_hot_remove_device() was not exported for modules. Looks like
> > you have the same problem here. FYI, I just sent the following patch
> > that exports acpi_bus_hot_remove_device() and acpi_os_hotplug_execute().
> >
> > https://lkml.org/lkml/2012/11/1/225
>
> acpi_os_hotplug_execute() does not like having good quality yet.
>
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 941) /*
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 942) * We
> can't run hotplug code in keventd_wq/kacpid_wq/kacpid_notify_wq
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 943) *
> because the hotplug code may call driver .remove() functions,
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 944) *
> which invoke flush_scheduled_work/acpi_os_wait_events_complete
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 945) * to
> flush these workqueues.
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 946) */
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 947) queue
> = hp ? kacpi_hotplug_wq :
> c02256be (Zhang Rui 2009-06-23 10:20:29 +0800 948)
> (type == OSL_NOTIFY_HANDLER ? kacpi_notify_wq : kacpid_wq);
> 9ac61856 (Bjorn Helgaas 2009-08-31 22:32:10 +0000 949)
> dpc->wait = hp ? 1 : 0;
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 950)
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 951) if
> (queue == kacpi_hotplug_wq)
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 952)
> INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 953) else
> if (queue == kacpi_notify_wq)
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 954)
> INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 955) else
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 956)
> INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> bc73675b (Zhang Rui 2010-03-22 15:48:54 +0800 957)
>
> really don't know why checking queue and call same code in every branch.
>
> from comm:
>
> commit bc73675b99fd9850dd914be01d71af99c5d2a1ae
> Author: Zhang Rui <rui.zhang@intel.com>
> Date: Mon Mar 22 15:48:54 2010 +0800
>
> ACPI: fixes a false alarm from lockdep
>
> fixes a false alarm from lockdep, as acpi hotplug workqueue waits other
> workqueues.
> http://bugzilla.kernel.org/show_bug.cgi?id=14553
> https://bugzilla.kernel.org/show_bug.cgi?id=15521
>
> Original-patch-from: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Shaohua Li <shaohua.li@intel.com>
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> Signed-off-by: Len Brown <len.brown@intel.com>
>
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 8e6d866..900da68 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -758,7 +758,14 @@ static acpi_status
> __acpi_os_execute(acpi_execute_type type,
> queue = hp ? kacpi_hotplug_wq :
> (type == OSL_NOTIFY_HANDLER ? kacpi_notify_wq : kacpid_wq);
> dpc->wait = hp ? 1 : 0;
> - INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> +
> + if (queue == kacpi_hotplug_wq)
> + INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> + else if (queue == kacpi_notify_wq)
> + INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> + else
> + INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> +
> ret = queue_work(queue, &dpc->work);
>
> if (!ret) {
>
>
> Len or Rafael,
> can you just revert that silly patch?
Hi Yinghai,
Per the following thread, the code seems to be written in this way to
allocate a separate lock_class_key for each work queue. It should have
had some comment to explain this, though.
https://lkml.org/lkml/2009/12/13/304
Thanks,
-Toshi
>
> Yinghai
next prev parent reply other threads:[~2012-11-01 19:25 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-31 7:27 [PATCH v3 0/3] ACPI: container hot remove support Tang Chen
2012-10-31 7:27 ` [PATCH v3 1/3] Use acpi_os_hotplug_execute() instead of alloc_acpi_hp_work() Tang Chen
2012-11-01 3:52 ` Yinghai Lu
2012-11-01 6:07 ` Tang Chen
2012-10-31 7:27 ` [PATCH v3 2/3] Use kacpi_hotplug_wq to handle container hotplug event Tang Chen
2012-10-31 7:27 ` [PATCH v3 3/3] Improve container_notify_cb() to support container hot-remove Tang Chen
2012-11-01 16:43 ` Toshi Kani
2012-11-01 18:28 ` Yinghai Lu
2012-11-01 19:17 ` Toshi Kani [this message]
2012-11-01 20:17 ` Rafael J. Wysocki
2012-11-01 20:16 ` Yinghai Lu
2012-11-01 21:31 ` Rafael J. Wysocki
2012-11-01 21:51 ` Toshi Kani
2012-11-01 22:15 ` Yinghai Lu
2012-11-01 23:15 ` Rafael J. Wysocki
2012-11-01 23:39 ` Yinghai Lu
2012-11-02 1:16 ` Rafael J. Wysocki
2012-11-01 20:16 ` Rafael J. Wysocki
2012-11-02 1:21 ` Tang Chen
2012-10-31 11:09 ` [PATCH v3 0/3] ACPI: container hot remove support Yasuaki Ishimatsu
2012-10-31 11:09 ` Yasuaki Ishimatsu
2012-10-31 16:48 ` Yinghai Lu
2012-11-01 1:48 ` Tang Chen
2012-11-04 16:33 ` Jiang Liu
2012-11-01 1:40 ` Tang Chen
2012-11-26 5:42 ` Hanjun Guo
2012-11-26 5:42 ` Hanjun Guo
2012-11-26 6:06 ` Tang Chen
2012-11-26 13:04 ` Hanjun Guo
2012-11-26 13:04 ` Hanjun Guo
2012-11-27 1:08 ` Hanjun Guo
2012-11-27 1:08 ` Hanjun Guo
2012-11-27 2:38 ` Tang Chen
2012-11-27 11:24 ` Hanjun Guo
2012-11-27 11:24 ` Hanjun Guo
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=1351797478.19172.103.camel@misato.fc.hp.com \
--to=toshi.kani@hp.com \
--cc=akpm@linux-foundation.org \
--cc=bhelgaas@google.com \
--cc=isimatu.yasuaki@jp.fujitsu.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=rjw@sisk.pl \
--cc=rui.zhang@intel.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.