From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757554AbZHQKDE (ORCPT ); Mon, 17 Aug 2009 06:03:04 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750842AbZHQKDD (ORCPT ); Mon, 17 Aug 2009 06:03:03 -0400 Received: from mx2.redhat.com ([66.187.237.31]:51075 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756895AbZHQKDB (ORCPT ); Mon, 17 Aug 2009 06:03:01 -0400 From: Xiaotian Feng To: gregkh@suse.de, rjw@sisk.pl, pavel@ucw.cz, len.brown@intel.com, damm@igel.co.jp, stern@rowland.harvard.edu Cc: linux-pm@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Xiaotian Feng Subject: [PATCH] drivers/base/power: reset transition_started at dpm_resume_noirq Date: Mon, 17 Aug 2009 18:02:03 +0800 Message-Id: <1250503323-15870-1-git-send-email-dfeng@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org transition_started should be set once the preparation of devices for a PM has started, reset before starting to resume devices. When resuming devices, kernel calls dpm_resume_noirq then dpm_resume_end(dpm_resume). Thus we should reset transition_started at dpm_resume_noirq. This patch fixes acpi warning when resuming from suspend/hibernate: ACPI: \_SB_.PCI0.IDE1.PRI1.MAS1 - docking ------------[ cut here ]------------ WARNING: at drivers/base/power/main.c:87 device_pm_add+0x8b/0xcc() Hardware name: OptiPlex 760 Device: acpi Parentless device registered during a PM transaction Modules linked in: fuse sco bridge stp llc bnep l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6 ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_codec_analog radeon ppdev parport_pc snd_hda_intel ttm snd_hda_codec serio_raw snd_hwdep iTCO_wdt drm i2c_i801 parport iTCO_vendor_support pcspkr snd_pcm snd_timer i2c_algo_bit i2c_core snd dcdbas wmi e1000e soundcore snd_page_alloc ata_generic pata_acpi [last unloaded: speedstep_lib] Pid: 33, comm: kacpi_hotplug Not tainted 2.6.31-rc5 #51 Call Trace: [] warn_slowpath_common+0x7c/0x94 [] warn_slowpath_fmt+0x41/0x43 [] device_pm_add+0x8b/0xcc [] device_add+0x36f/0x519 [] device_register+0x1e/0x22 [] acpi_add_single_object+0xb48/0xd68 [] ? trace_hardirqs_on_caller+0x1f/0x159 [] ? trace_hardirqs_on+0xd/0xf [] acpi_bus_add+0x2a/0x40 [] ? acpi_bus_get_device+0x47/0x66 [] hotplug_dock_devices+0x109/0x133 [] ? acpi_os_execute_hp_deferred+0x0/0x43 [] acpi_dock_deferred_cb+0xbf/0x192 [] acpi_os_execute_hp_deferred+0x36/0x43 [] worker_thread+0x215/0x31d [] ? worker_thread+0x1c0/0x31d [] ? thread_return+0x3e/0xaf [] ? lock_release_holdtime+0x2c/0x11d [] ? autoremove_wake_function+0x0/0x39 [] ? worker_thread+0x0/0x31d [] kthread+0x8a/0x92 [] child_rip+0xa/0x20 [] ? restore_args+0x0/0x30 [] ? kthread+0x0/0x92 [] ? child_rip+0x0/0x20 ---[ end trace 6f4892372e7d9f1a ]--- Signed-off-by: Xiaotian Feng --- drivers/base/power/main.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 58a3e57..808fb14 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -355,6 +355,7 @@ void dpm_resume_noirq(pm_message_t state) struct device *dev; mutex_lock(&dpm_list_mtx); + transition_started = false; list_for_each_entry(dev, &dpm_list, power.entry) if (dev->power.status > DPM_OFF) { int error; @@ -433,7 +434,6 @@ static void dpm_resume(pm_message_t state) INIT_LIST_HEAD(&list); mutex_lock(&dpm_list_mtx); - transition_started = false; while (!list_empty(&dpm_list)) { struct device *dev = to_device(dpm_list.next); -- 1.6.2.5