lkml.org 
[lkml]   [2012]   [Nov]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v3 3/3] Improve container_notify_cb() to support container hot-remove.
From
On Thu, Nov 1, 2012 at 4:15 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Subject: ACPI: Make seemingly useless check in osl.c more understandable
>
> There is a seemingly useless check in drivers/acpi/osl.c added by
> commit bc73675 (ACPI: fixes a false alarm from lockdep), which really
> is necessary to avoid false positive lockdep complaints. Document
> this and rearrange the code related to it so that it makes fewer
> checks.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> drivers/acpi/osl.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> Index: linux/drivers/acpi/osl.c
> ===================================================================
> --- linux.orig/drivers/acpi/osl.c
> +++ linux/drivers/acpi/osl.c
> @@ -944,17 +944,24 @@ static acpi_status __acpi_os_execute(acp
> * because the hotplug code may call driver .remove() functions,
> * which invoke flush_scheduled_work/acpi_os_wait_events_complete
> * to flush these workqueues.
> + *
> + * To prevent lockdep from complaining unnecessarily, make sure that
> + * there is a different static lockdep key for each workqueue by using
> + * INIT_WORK() for each of them separately.
> */
> - queue = hp ? kacpi_hotplug_wq :
> - (type == OSL_NOTIFY_HANDLER ? kacpi_notify_wq : kacpid_wq);
> - dpc->wait = hp ? 1 : 0;
> -
> - if (queue == kacpi_hotplug_wq)
> + if (hp) {
> + queue = kacpi_hotplug_wq;
> + dpc->wait = 1;
> INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> - else if (queue == kacpi_notify_wq)
> + } else if (type == OSL_NOTIFY_HANDLER) {
> + queue = kacpi_notify_wq;
> + dpc->wait = 0;

yes, much clear.

at the same can you changne
dpc allocation from kmalloc with kzalloc instead.

then we save two lines for dpc->wait = 0

After that

Acked-by: Yinghai Lu <yinghai@kernel.org>

> INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> - else
> + } else {
> + queue = kacpid_wq;
> + dpc->wait = 0;
> INIT_WORK(&dpc->work, acpi_os_execute_deferred);
> + }
>
> /*
> * On some machines, a software-initiated SMI causes corruption unless
>
> --


\
 
 \ /
  Last update: 2012-11-02 01:21    [W:0.258 / U:0.036 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site