linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
@ 2009-04-19 16:53 Alexey Klimov
  2009-04-27 21:35 ` Rafael J. Wysocki
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Klimov @ 2009-04-19 16:53 UTC (permalink / raw)
  To: Linux Kernel Mailing List

Hello all
When testing behaviour of radio-mr800 drvier when doing suspend/resume
to disk, using echo disk > /sys/power/state i have such warning in
dmesg(see below please).
Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.
The code in hrtimer.c is:

void hres_timers_resume(void)
{
        WARN_ONCE(!irqs_disabled(),
                  KERN_INFO "hres_timers_resume() called with IRQs enabled!");



------------[ cut here ]------------
WARNING: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
Hardware name: TravelMate 2350
hres_timers_resume() called with IRQs enabled!Modules linked in:
radio_mr800 v4l2_common videodev snd_intel8x0 nls_utf8 cifs
snd_usb_audio snd_usb_lib snd_rawmidi snd_hwdep nls_iso8859_1
nls_cp437 vfat fat nls_base v4l1_compat i915 drm cpufreq_ondemand
acpi_cpufreq snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq
snd_seq_device snd_pcm_oss snd_mixer_oss usbhid hid snd_ac97_codec
ac97_bus yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core
rtc_cmos snd_timer 8139too libipw ehci_hcd snd lib80211 psmouse
rtc_core uhci_hcd mii soundcore usbcore shpchp sr_mod serio_raw cdrom
ac thermal i2c_i801 battery button rtc_lib pci_hotplug sg
snd_page_alloc [last unloaded: radio_mr800]
Pid: 25506, comm: bash Not tainted 2.6.30-rc2 #43
Call Trace:
 [<c011852d>] ? warn_slowpath+0x80/0xae
 [<c01fd36a>] ? acpi_ns_lookup+0x1fa/0x316
 [<c011452e>] ? wakeup_preempt_entity+0xc3/0xe9
 [<c012aa73>] ? getnstimeofday+0x4c/0xc9
 [<c010d02f>] ? lapic_next_event+0x13/0x16
 [<c012cb79>] ? clockevents_program_event+0xc2/0xd0
 [<c012d687>] ? tick_dev_program_event+0x1e/0x81
 [<c012d729>] ? tick_program_event+0xf/0x11
 [<c01288be>] ? notifier_call_chain+0x2a/0x47
 [<c0127ec6>] ? hres_timers_resume+0x24/0x38
 [<c012a1b5>] ? timekeeping_resume+0xcb/0xd0
 [<c02307f4>] ? __sysdev_resume+0x11/0x34
 [<c0230835>] ? sysdev_resume+0x1e/0x50
 [<c01344e0>] ? hibernation_snapshot+0xd5/0x15b
 [<c01345f2>] ? hibernate+0x8c/0x141
 [<c0133566>] ? state_store+0x0/0x9a
 [<c01335b4>] ? state_store+0x4e/0x9a
 [<c0133566>] ? state_store+0x0/0x9a
 [<c01ca6f7>] ? kobj_attr_store+0x18/0x1c
 [<c018b929>] ? sysfs_write_file+0xb0/0xdd
 [<c018b879>] ? sysfs_write_file+0x0/0xdd
 [<c015a537>] ? vfs_write+0x84/0xf7
 [<c015a642>] ? sys_write+0x3c/0x63
 [<c0102788>] ? sysenter_do_call+0x12/0x26
---[ end trace df0f2ac34650ffc9 ]---

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
  2009-04-19 16:53 [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38() Alexey Klimov
@ 2009-04-27 21:35 ` Rafael J. Wysocki
  2009-04-29 13:21   ` Alexey Klimov
  0 siblings, 1 reply; 7+ messages in thread
From: Rafael J. Wysocki @ 2009-04-27 21:35 UTC (permalink / raw)
  To: Alexey Klimov; +Cc: Linux Kernel Mailing List, Andrew Morton

On Sunday 19 April 2009, Alexey Klimov wrote:
> Hello all
> When testing behaviour of radio-mr800 drvier when doing suspend/resume
> to disk, using echo disk > /sys/power/state i have such warning in
> dmesg(see below please).
> Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.

Can you please retest with the appended patch applied and report back?

> The code in hrtimer.c is:
> 
> void hres_timers_resume(void)
> {
>         WARN_ONCE(!irqs_disabled(),
>                   KERN_INFO "hres_timers_resume() called with IRQs enabled!");
> 
> 
> 
> ------------[ cut here ]------------
> WARNING: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
> Hardware name: TravelMate 2350
> hres_timers_resume() called with IRQs enabled!Modules linked in:
> radio_mr800 v4l2_common videodev snd_intel8x0 nls_utf8 cifs
> snd_usb_audio snd_usb_lib snd_rawmidi snd_hwdep nls_iso8859_1
> nls_cp437 vfat fat nls_base v4l1_compat i915 drm cpufreq_ondemand
> acpi_cpufreq snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq
> snd_seq_device snd_pcm_oss snd_mixer_oss usbhid hid snd_ac97_codec
> ac97_bus yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core
> rtc_cmos snd_timer 8139too libipw ehci_hcd snd lib80211 psmouse
> rtc_core uhci_hcd mii soundcore usbcore shpchp sr_mod serio_raw cdrom
> ac thermal i2c_i801 battery button rtc_lib pci_hotplug sg
> snd_page_alloc [last unloaded: radio_mr800]
> Pid: 25506, comm: bash Not tainted 2.6.30-rc2 #43
> Call Trace:
>  [<c011852d>] ? warn_slowpath+0x80/0xae
>  [<c01fd36a>] ? acpi_ns_lookup+0x1fa/0x316
>  [<c011452e>] ? wakeup_preempt_entity+0xc3/0xe9
>  [<c012aa73>] ? getnstimeofday+0x4c/0xc9
>  [<c010d02f>] ? lapic_next_event+0x13/0x16
>  [<c012cb79>] ? clockevents_program_event+0xc2/0xd0
>  [<c012d687>] ? tick_dev_program_event+0x1e/0x81
>  [<c012d729>] ? tick_program_event+0xf/0x11
>  [<c01288be>] ? notifier_call_chain+0x2a/0x47
>  [<c0127ec6>] ? hres_timers_resume+0x24/0x38
>  [<c012a1b5>] ? timekeeping_resume+0xcb/0xd0
>  [<c02307f4>] ? __sysdev_resume+0x11/0x34
>  [<c0230835>] ? sysdev_resume+0x1e/0x50
>  [<c01344e0>] ? hibernation_snapshot+0xd5/0x15b
>  [<c01345f2>] ? hibernate+0x8c/0x141
>  [<c0133566>] ? state_store+0x0/0x9a
>  [<c01335b4>] ? state_store+0x4e/0x9a
>  [<c0133566>] ? state_store+0x0/0x9a
>  [<c01ca6f7>] ? kobj_attr_store+0x18/0x1c
>  [<c018b929>] ? sysfs_write_file+0xb0/0xdd
>  [<c018b879>] ? sysfs_write_file+0x0/0xdd
>  [<c015a537>] ? vfs_write+0x84/0xf7
>  [<c015a642>] ? sys_write+0x3c/0x63
>  [<c0102788>] ? sysenter_do_call+0x12/0x26
> ---[ end trace df0f2ac34650ffc9 ]---
> --

Best,
Rafael

---

    PM: Warn if interrupts are enabled during suspend-resume of sysdevs
    
    Sysdevs have to be suspended and resumed with interrupts disabled and
    things usually break in a way that's difficult to debug if one of
    sysdev drivers enables interrupts by mistake during suspend or
    resume.  Add extra checks that will generate warnings in such cases.
    
    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

diff --git a/drivers/base/sys.c b/drivers/base/sys.c
index 3236b43..9742a78 100644
--- a/drivers/base/sys.c
+++ b/drivers/base/sys.c
@@ -343,11 +343,15 @@ static void __sysdev_resume(struct sys_device *dev)
 	/* First, call the class-specific one */
 	if (cls->resume)
 		cls->resume(dev);
+	WARN_ONCE(!irqs_disabled(),
+		"Interrupts enabled after %pF\n", cls->resume);
 
 	/* Call auxillary drivers next. */
 	list_for_each_entry(drv, &cls->drivers, entry) {
 		if (drv->resume)
 			drv->resume(dev);
+		WARN_ONCE(!irqs_disabled(),
+			"Interrupts enabled after %pF\n", drv->resume);
 	}
 }
 
@@ -377,6 +381,9 @@ int sysdev_suspend(pm_message_t state)
 	if (ret)
 		return ret;
 
+	WARN_ONCE(!irqs_disabled(),
+		"Interrupts enabled while suspending system devices\n");
+
 	pr_debug("Suspending System Devices\n");
 
 	list_for_each_entry_reverse(cls, &system_kset->list, kset.kobj.entry) {
@@ -393,6 +400,9 @@ int sysdev_suspend(pm_message_t state)
 					if (ret)
 						goto aux_driver;
 				}
+				WARN_ONCE(!irqs_disabled(),
+					"Interrupts enabled after %pF\n",
+					drv->suspend);
 			}
 
 			/* Now call the generic one */
@@ -400,6 +410,9 @@ int sysdev_suspend(pm_message_t state)
 				ret = cls->suspend(sysdev, state);
 				if (ret)
 					goto cls_driver;
+				WARN_ONCE(!irqs_disabled(),
+					"Interrupts enabled after %pF\n",
+					cls->suspend);
 			}
 		}
 	}
@@ -452,6 +465,9 @@ int sysdev_resume(void)
 {
 	struct sysdev_class *cls;
 
+	WARN_ONCE(!irqs_disabled(),
+		"Interrupts enabled while resuming system devices\n");
+
 	pr_debug("Resuming System Devices\n");
 
 	list_for_each_entry(cls, &system_kset->list, kset.kobj.entry) {

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
  2009-04-27 21:35 ` Rafael J. Wysocki
@ 2009-04-29 13:21   ` Alexey Klimov
  2009-04-29 19:47     ` Rafael J. Wysocki
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Klimov @ 2009-04-29 13:21 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Linux Kernel Mailing List, Andrew Morton

Hello,

On Tue, Apr 28, 2009 at 1:35 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Sunday 19 April 2009, Alexey Klimov wrote:
>> Hello all
>> When testing behaviour of radio-mr800 drvier when doing suspend/resume
>> to disk, using echo disk > /sys/power/state i have such warning in
>> dmesg(see below please).
>> Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.
>
> Can you please retest with the appended patch applied and report back?

Of course. I applied your patch against up-to-date sources (30-rc3),
and have more messages after resume:

ACPI: Preparing to enter system sleep state S4
PM: Saving platform NVS memory
------------[ cut here ]------------
WARNING: at drivers/base/sys.c:405 sysdev_suspend+0xb6/0x21c()
Hardware name: TravelMate 2350
Interrupts enabled after cpufreq_suspend+0x0/0x113
Modules linked in: cpufreq_ondemand acpi_cpufreq snd_seq_dummy
snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
snd_mixer_oss usbhid hid snd_intel8x0 snd_ac97_codec ipw2200 libipw
ac97_bus yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core
8139too lib80211 snd_timer mii ehci_hcd shpchp rtc_cmos rtc_core
sr_mod sg psmouse cdrom snd uhci_hcd pci_hotplug rtc_lib usbcore
thermal serio_raw soundcore ac snd_page_alloc i2c_i801 battery button
Pid: 1557, comm: bash Not tainted 2.6.30-rc3 #48
Call Trace:
 [<c011852d>] ? warn_slowpath+0x80/0xae
 [<c0102e0a>] ? apic_timer_interrupt+0x2a/0x30
 [<c01cc9d7>] ? rb_insert_color+0x93/0xb5
 [<c0150c88>] ? __insert_vmap_area+0x5e/0x96
 [<c0150e46>] ? alloc_vmap_area+0x186/0x192
 [<c01e90d9>] ? acpi_os_release_object+0x5/0x8
 [<c01061f5>] ? init_pit_timer+0x56/0xa1
 [<c012cbd1>] ? clockevents_set_mode+0x12/0x3b
 [<f8e071f5>] ? get_cur_val+0x78/0x87 [acpi_cpufreq]
 [<f8e0748e>] ? get_cur_freq_on_cpu+0x6e/0x84 [acpi_cpufreq]
 [<c025e1c8>] ? cpufreq_cpu_put+0x8/0x14
 [<c025eea6>] ? cpufreq_suspend+0x109/0x113
 [<c010d22f>] ? clear_local_APIC+0x18f/0x191
 [<c0230cb2>] ? sysdev_suspend+0xb6/0x21c
 [<c025ed9d>] ? cpufreq_suspend+0x0/0x113
 [<c01344ed>] ? hibernation_snapshot+0x8b/0x15b
 [<c0134649>] ? hibernate+0x8c/0x141
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c0133610>] ? state_store+0x4e/0x9a
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c01ca757>] ? kobj_attr_store+0x18/0x1c
 [<c018b8ed>] ? sysfs_write_file+0xb0/0xdd
 [<c018b83d>] ? sysfs_write_file+0x0/0xdd
 [<c015a5bb>] ? vfs_write+0x84/0xf7
 [<c015a6c6>] ? sys_write+0x3c/0x63
 [<c0102788>] ? sysenter_do_call+0x12/0x26
---[ end trace 723ae552bfab9043 ]---
PM: Creating hibernation image:
PM: Need to copy 14279 pages
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
PM: Restoring platform NVS memory
------------[ cut here ]------------
WARNING: at drivers/base/sys.c:469 sysdev_resume+0x27/0x81()
Hardware name: TravelMate 2350
Interrupts enabled while resuming system devices
Modules linked in: cpufreq_ondemand acpi_cpufreq snd_seq_dummy
snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
snd_mixer_oss usbhid hid snd_intel8x0 snd_ac97_codec ipw2200 libipw
ac97_bus yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core
8139too lib80211 snd_timer mii ehci_hcd shpchp rtc_cmos rtc_core
sr_mod sg psmouse cdrom snd uhci_hcd pci_hotplug rtc_lib usbcore
thermal serio_raw soundcore ac snd_page_alloc i2c_i801 battery button
Pid: 1557, comm: bash Tainted: G        W  2.6.30-rc3 #48
Call Trace:
 [<c011852d>] ? warn_slowpath+0x80/0xae
 [<c01fffe2>] ? acpi_ns_check_predefined_names+0x46e/0x478
 [<c01ce800>] ? vsprintf+0xd/0xf
 [<c0118861>] ? try_acquire_console_sem+0x24/0x42
 [<c01fd3fe>] ? acpi_hw_read_port+0x23/0x71
 [<c01fd382>] ? acpi_hw_write_port+0x11/0x6a
 [<c01fc7c4>] ? acpi_hw_write_pm1_control+0xd/0x31
 [<c01fccbc>] ? acpi_leave_sleep_state_prep+0x8a/0xf7
 [<c01fc92e>] ? acpi_hw_register_read+0x4e/0xb2
 [<c0230ba2>] ? sysdev_resume+0x27/0x81
 [<c0134537>] ? hibernation_snapshot+0xd5/0x15b
 [<c0134649>] ? hibernate+0x8c/0x141
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c0133610>] ? state_store+0x4e/0x9a
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c01ca757>] ? kobj_attr_store+0x18/0x1c
 [<c018b8ed>] ? sysfs_write_file+0xb0/0xdd
 [<c018b83d>] ? sysfs_write_file+0x0/0xdd
 [<c015a5bb>] ? vfs_write+0x84/0xf7
 [<c015a6c6>] ? sys_write+0x3c/0x63
 [<c0102788>] ? sysenter_do_call+0x12/0x26
---[ end trace 723ae552bfab9044 ]---
------------[ cut here ]------------
WARNING: at drivers/base/sys.c:347 __sysdev_resume+0x38/0x9c()
Hardware name: TravelMate 2350
Interrupts enabled after (null)
Modules linked in: cpufreq_ondemand acpi_cpufreq snd_seq_dummy
snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
snd_mixer_oss usbhid hid snd_intel8x0 snd_ac97_codec ipw2200 libipw
ac97_bus yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core
8139too lib80211 snd_timer mii ehci_hcd shpchp rtc_cmos rtc_core
sr_mod sg psmouse cdrom snd uhci_hcd pci_hotplug rtc_lib usbcore
thermal serio_raw soundcore ac snd_page_alloc i2c_i801 battery button
Pid: 1557, comm: bash Tainted: G        W  2.6.30-rc3 #48
Call Trace:
 [<c011852d>] ? warn_slowpath+0x80/0xae
 [<c01fffe2>] ? acpi_ns_check_predefined_names+0x46e/0x478
 [<c01ce800>] ? vsprintf+0xd/0xf
 [<c0118861>] ? try_acquire_console_sem+0x24/0x42
 [<c01fd3fe>] ? acpi_hw_read_port+0x23/0x71
 [<c01fd382>] ? acpi_hw_write_port+0x11/0x6a
 [<c01fc7c4>] ? acpi_hw_write_pm1_control+0xd/0x31
 [<c0230b17>] ? __sysdev_resume+0x38/0x9c
 [<c0230bca>] ? sysdev_resume+0x4f/0x81
 [<c0134537>] ? hibernation_snapshot+0xd5/0x15b
 [<c0134649>] ? hibernate+0x8c/0x141
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c0133610>] ? state_store+0x4e/0x9a
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c01ca757>] ? kobj_attr_store+0x18/0x1c
 [<c018b8ed>] ? sysfs_write_file+0xb0/0xdd
 [<c018b83d>] ? sysfs_write_file+0x0/0xdd
 [<c015a5bb>] ? vfs_write+0x84/0xf7
 [<c015a6c6>] ? sys_write+0x3c/0x63
 [<c0102788>] ? sysenter_do_call+0x12/0x26
---[ end trace 723ae552bfab9045 ]---
------------[ cut here ]------------
WARNING: at drivers/base/sys.c:354 __sysdev_resume+0x7f/0x9c()
Hardware name: TravelMate 2350
Interrupts enabled after cpufreq_resume+0x0/0x115
Modules linked in: cpufreq_ondemand acpi_cpufreq snd_seq_dummy
snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
snd_mixer_oss usbhid hid snd_intel8x0 snd_ac97_codec ipw2200 libipw
ac97_bus yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core
8139too lib80211 snd_timer mii ehci_hcd shpchp rtc_cmos rtc_core
sr_mod sg psmouse cdrom snd uhci_hcd pci_hotplug rtc_lib usbcore
thermal serio_raw soundcore ac snd_page_alloc i2c_i801 battery button
Pid: 1557, comm: bash Tainted: G        W  2.6.30-rc3 #48
Call Trace:
 [<c011852d>] ? warn_slowpath+0x80/0xae
 [<c011452e>] ? wakeup_preempt_entity+0xc3/0xe9
 [<c01145d9>] ? check_preempt_wakeup+0x85/0xab
 [<c0125c00>] ? wake_up_bit+0xc/0x5c
 [<c0114e4d>] ? __wake_up_common+0x2d/0x52
 [<c0114e81>] ? __wake_up+0xf/0x15
 [<c0123370>] ? __queue_work+0x43/0x49
 [<c025e1c8>] ? cpufreq_cpu_put+0x8/0x14
 [<c025ed94>] ? cpufreq_resume+0x10c/0x115
 [<c0230b5e>] ? __sysdev_resume+0x7f/0x9c
 [<c025ec88>] ? cpufreq_resume+0x0/0x115
 [<c0230bca>] ? sysdev_resume+0x4f/0x81
 [<c0134537>] ? hibernation_snapshot+0xd5/0x15b
 [<c0134649>] ? hibernate+0x8c/0x141
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c0133610>] ? state_store+0x4e/0x9a
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c01ca757>] ? kobj_attr_store+0x18/0x1c
 [<c018b8ed>] ? sysfs_write_file+0xb0/0xdd
 [<c018b83d>] ? sysfs_write_file+0x0/0xdd
 [<c015a5bb>] ? vfs_write+0x84/0xf7
 [<c015a6c6>] ? sys_write+0x3c/0x63
 [<c0102788>] ? sysenter_do_call+0x12/0x26
---[ end trace 723ae552bfab9046 ]---
------------[ cut here ]------------
WARNING: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
Hardware name: TravelMate 2350
hres_timers_resume() called with IRQs enabled!Modules linked in:
cpufreq_ondemand acpi_cpufreq snd_seq_dummy snd_seq_oss
snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss
usbhid hid snd_intel8x0 snd_ac97_codec ipw2200 libipw ac97_bus
yenta_socket snd_pcm rsrc_nonstatic 8139cp pcmcia_core 8139too
lib80211 snd_timer mii ehci_hcd shpchp rtc_cmos rtc_core sr_mod sg
psmouse cdrom snd uhci_hcd pci_hotplug rtc_lib usbcore thermal
serio_raw soundcore ac snd_page_alloc i2c_i801 battery button
Pid: 1557, comm: bash Tainted: G        W  2.6.30-rc3 #48
Call Trace:
 [<c011852d>] ? warn_slowpath+0x80/0xae
 [<c011452e>] ? wakeup_preempt_entity+0xc3/0xe9
 [<c0103f7b>] ? handle_irq+0xb/0x64
 [<c011b9f2>] ? irq_exit+0x2c/0x4e
 [<c0103ccb>] ? do_IRQ+0x53/0x63
 [<c012aaa5>] ? getnstimeofday+0x4f/0xcc
 [<c010d023>] ? lapic_next_event+0x13/0x16
 [<c012cbb1>] ? clockevents_program_event+0xc2/0xd0
 [<c012d6bf>] ? tick_dev_program_event+0x1e/0x81
 [<c012d761>] ? tick_program_event+0xf/0x11
 [<c01288ba>] ? notifier_call_chain+0x2a/0x47
 [<c0127ec2>] ? hres_timers_resume+0x24/0x38
 [<c012a1b9>] ? timekeeping_resume+0xcd/0xd2
 [<c0230af0>] ? __sysdev_resume+0x11/0x9c
 [<c0230bca>] ? sysdev_resume+0x4f/0x81
 [<c0134537>] ? hibernation_snapshot+0xd5/0x15b
 [<c0134649>] ? hibernate+0x8c/0x141
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c0133610>] ? state_store+0x4e/0x9a
 [<c01335c2>] ? state_store+0x0/0x9a
 [<c01ca757>] ? kobj_attr_store+0x18/0x1c
 [<c018b8ed>] ? sysfs_write_file+0xb0/0xdd
 [<c018b83d>] ? sysfs_write_file+0x0/0xdd
 [<c015a5bb>] ? vfs_write+0x84/0xf7
 [<c015a6c6>] ? sys_write+0x3c/0x63
 [<c0102788>] ? sysenter_do_call+0x12/0x26
---[ end trace 723ae552bfab9047 ]---
ACPI: Waking up from system sleep state S4

I can do more testing if you need, just ask.

> ---
>
>    PM: Warn if interrupts are enabled during suspend-resume of sysdevs
>
>    Sysdevs have to be suspended and resumed with interrupts disabled and
>    things usually break in a way that's difficult to debug if one of
>    sysdev drivers enables interrupts by mistake during suspend or
>    resume.  Add extra checks that will generate warnings in such cases.
>
>    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
>
> diff --git a/drivers/base/sys.c b/drivers/base/sys.c
> index 3236b43..9742a78 100644
> --- a/drivers/base/sys.c
> +++ b/drivers/base/sys.c
> @@ -343,11 +343,15 @@ static void __sysdev_resume(struct sys_device *dev)
>        /* First, call the class-specific one */
>        if (cls->resume)
>                cls->resume(dev);
> +       WARN_ONCE(!irqs_disabled(),
> +               "Interrupts enabled after %pF\n", cls->resume);
>
>        /* Call auxillary drivers next. */
>        list_for_each_entry(drv, &cls->drivers, entry) {
>                if (drv->resume)
>                        drv->resume(dev);
> +               WARN_ONCE(!irqs_disabled(),
> +                       "Interrupts enabled after %pF\n", drv->resume);
>        }
>  }
>
> @@ -377,6 +381,9 @@ int sysdev_suspend(pm_message_t state)
>        if (ret)
>                return ret;
>
> +       WARN_ONCE(!irqs_disabled(),
> +               "Interrupts enabled while suspending system devices\n");
> +
>        pr_debug("Suspending System Devices\n");
>
>        list_for_each_entry_reverse(cls, &system_kset->list, kset.kobj.entry) {
> @@ -393,6 +400,9 @@ int sysdev_suspend(pm_message_t state)
>                                        if (ret)
>                                                goto aux_driver;
>                                }
> +                               WARN_ONCE(!irqs_disabled(),
> +                                       "Interrupts enabled after %pF\n",
> +                                       drv->suspend);
>                        }
>
>                        /* Now call the generic one */
> @@ -400,6 +410,9 @@ int sysdev_suspend(pm_message_t state)
>                                ret = cls->suspend(sysdev, state);
>                                if (ret)
>                                        goto cls_driver;
> +                               WARN_ONCE(!irqs_disabled(),
> +                                       "Interrupts enabled after %pF\n",
> +                                       cls->suspend);
>                        }
>                }
>        }
> @@ -452,6 +465,9 @@ int sysdev_resume(void)
>  {
>        struct sysdev_class *cls;
>
> +       WARN_ONCE(!irqs_disabled(),
> +               "Interrupts enabled while resuming system devices\n");
> +
>        pr_debug("Resuming System Devices\n");
>
>        list_for_each_entry(cls, &system_kset->list, kset.kobj.entry) {
>

-- 
Best regards, Klimov Alexey

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
  2009-04-29 13:21   ` Alexey Klimov
@ 2009-04-29 19:47     ` Rafael J. Wysocki
  2009-04-30  8:54       ` Alexey Klimov
  0 siblings, 1 reply; 7+ messages in thread
From: Rafael J. Wysocki @ 2009-04-29 19:47 UTC (permalink / raw)
  To: Alexey Klimov; +Cc: Linux Kernel Mailing List, Andrew Morton

On Wednesday 29 April 2009, Alexey Klimov wrote:
> Hello,
> 
> On Tue, Apr 28, 2009 at 1:35 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Sunday 19 April 2009, Alexey Klimov wrote:
> >> Hello all
> >> When testing behaviour of radio-mr800 drvier when doing suspend/resume
> >> to disk, using echo disk > /sys/power/state i have such warning in
> >> dmesg(see below please).
> >> Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.
> >
> > Can you please retest with the appended patch applied and report back?
> 
> Of course. I applied your patch against up-to-date sources (30-rc3),
> and have more messages after resume:

Thanks!
 
> ACPI: Preparing to enter system sleep state S4
> PM: Saving platform NVS memory
> ------------[ cut here ]------------
> WARNING: at drivers/base/sys.c:405 sysdev_suspend+0xb6/0x21c()
> Hardware name: TravelMate 2350
> Interrupts enabled after cpufreq_suspend+0x0/0x113

Well, it looks like cpufreq_suspend() left us with interrupts enabled and
that caused the other warnings to be printed.  Not nice.

What CPU is there in your box?

Rafael

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
  2009-04-29 19:47     ` Rafael J. Wysocki
@ 2009-04-30  8:54       ` Alexey Klimov
  2009-05-04 12:10         ` Fabio Comolli
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Klimov @ 2009-04-30  8:54 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Linux Kernel Mailing List, Andrew Morton

Hello, Rafael

On Wed, Apr 29, 2009 at 11:47 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Wednesday 29 April 2009, Alexey Klimov wrote:
>> Hello,
>>
>> On Tue, Apr 28, 2009 at 1:35 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>> > On Sunday 19 April 2009, Alexey Klimov wrote:
>> >> Hello all
>> >> When testing behaviour of radio-mr800 drvier when doing suspend/resume
>> >> to disk, using echo disk > /sys/power/state i have such warning in
>> >> dmesg(see below please).
>> >> Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.
>> >
>> > Can you please retest with the appended patch applied and report back?
>>
>> Of course. I applied your patch against up-to-date sources (30-rc3),
>> and have more messages after resume:
>
> Thanks!
>
>> ACPI: Preparing to enter system sleep state S4
>> PM: Saving platform NVS memory
>> ------------[ cut here ]------------
>> WARNING: at drivers/base/sys.c:405 sysdev_suspend+0xb6/0x21c()
>> Hardware name: TravelMate 2350
>> Interrupts enabled after cpufreq_suspend+0x0/0x113
>
> Well, it looks like cpufreq_suspend() left us with interrupts enabled and
> that caused the other warnings to be printed.  Not nice.
>
> What CPU is there in your box?
>
> Rafael

Yes, cpufreq_ondemand enabled. It's 1.7 GHz pentium-m. The lowest
frequency is 600 MHz.
Here is my /proc/cpuinfo:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Pentium(R) M processor 1.70GHz
stepping        : 6
cpu MHz         : 600.000
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca
cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2
bogomips        : 1198.79
clflush size    : 64
power management:


-- 
Best regards, Klimov Alexey

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
  2009-04-30  8:54       ` Alexey Klimov
@ 2009-05-04 12:10         ` Fabio Comolli
  2009-06-03 16:43           ` Alexey Klimov
  0 siblings, 1 reply; 7+ messages in thread
From: Fabio Comolli @ 2009-05-04 12:10 UTC (permalink / raw)
  To: Alexey Klimov; +Cc: Rafael J. Wysocki, Linux Kernel Mailing List, Andrew Morton

I see the same message with 2.6.29.2 on a laptop with the same CPU
model also with cpufreq_ondemand.

In my case the first hibernate attempt gives the message and succeeds.
The system resumes ok.

A further hibernation/resume cycle results in a hang (power cycle required).

It' probably a regression wrt 2.6.28.7 (I'm not sure because with the
version upgrade I  also changed my DRI driver from fglrx to radeon and
also the X.org userspace).

Regards,
Fabio

On Thu, Apr 30, 2009 at 10:54 AM, Alexey Klimov <klimov.linux@gmail.com> wrote:
> Hello, Rafael
>
> On Wed, Apr 29, 2009 at 11:47 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>> On Wednesday 29 April 2009, Alexey Klimov wrote:
>>> Hello,
>>>
>>> On Tue, Apr 28, 2009 at 1:35 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>>> > On Sunday 19 April 2009, Alexey Klimov wrote:
>>> >> Hello all
>>> >> When testing behaviour of radio-mr800 drvier when doing suspend/resume
>>> >> to disk, using echo disk > /sys/power/state i have such warning in
>>> >> dmesg(see below please).
>>> >> Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.
>>> >
>>> > Can you please retest with the appended patch applied and report back?
>>>
>>> Of course. I applied your patch against up-to-date sources (30-rc3),
>>> and have more messages after resume:
>>
>> Thanks!
>>
>>> ACPI: Preparing to enter system sleep state S4
>>> PM: Saving platform NVS memory
>>> ------------[ cut here ]------------
>>> WARNING: at drivers/base/sys.c:405 sysdev_suspend+0xb6/0x21c()
>>> Hardware name: TravelMate 2350
>>> Interrupts enabled after cpufreq_suspend+0x0/0x113
>>
>> Well, it looks like cpufreq_suspend() left us with interrupts enabled and
>> that caused the other warnings to be printed.  Not nice.
>>
>> What CPU is there in your box?
>>
>> Rafael
>
> Yes, cpufreq_ondemand enabled. It's 1.7 GHz pentium-m. The lowest
> frequency is 600 MHz.
> Here is my /proc/cpuinfo:
>
> processor       : 0
> vendor_id       : GenuineIntel
> cpu family      : 6
> model           : 13
> model name      : Intel(R) Pentium(R) M processor 1.70GHz
> stepping        : 6
> cpu MHz         : 600.000
> cache size      : 2048 KB
> fdiv_bug        : no
> hlt_bug         : no
> f00f_bug        : no
> coma_bug        : no
> fpu             : yes
> fpu_exception   : yes
> cpuid level     : 2
> wp              : yes
> flags           : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca
> cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2
> bogomips        : 1198.79
> clflush size    : 64
> power management:
>
>
> --
> Best regards, Klimov Alexey
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38()
  2009-05-04 12:10         ` Fabio Comolli
@ 2009-06-03 16:43           ` Alexey Klimov
  0 siblings, 0 replies; 7+ messages in thread
From: Alexey Klimov @ 2009-06-03 16:43 UTC (permalink / raw)
  To: Fabio Comolli; +Cc: Rafael J. Wysocki, Linux Kernel Mailing List, Andrew Morton

Hello,

On Mon, May 4, 2009 at 4:10 PM, Fabio Comolli <fabio.comolli@gmail.com> wrote:
> I see the same message with 2.6.29.2 on a laptop with the same CPU
> model also with cpufreq_ondemand.
>
> In my case the first hibernate attempt gives the message and succeeds.
> The system resumes ok.
>
> A further hibernation/resume cycle results in a hang (power cycle required).
>
> It' probably a regression wrt 2.6.28.7 (I'm not sure because with the
> version upgrade I  also changed my DRI driver from fglrx to radeon and
> also the X.org userspace).
>
> Regards,
> Fabio
>
> On Thu, Apr 30, 2009 at 10:54 AM, Alexey Klimov <klimov.linux@gmail.com> wrote:
>> Hello, Rafael
>>
>> On Wed, Apr 29, 2009 at 11:47 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>>> On Wednesday 29 April 2009, Alexey Klimov wrote:
>>>> Hello,
>>>>
>>>> On Tue, Apr 28, 2009 at 1:35 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>>>> > On Sunday 19 April 2009, Alexey Klimov wrote:
>>>> >> Hello all
>>>> >> When testing behaviour of radio-mr800 drvier when doing suspend/resume
>>>> >> to disk, using echo disk > /sys/power/state i have such warning in
>>>> >> dmesg(see below please).
>>>> >> Kernel is 30-rc2, up-to-date. If you need more information, feel free to ask.
>>>> >
>>>> > Can you please retest with the appended patch applied and report back?
>>>>
>>>> Of course. I applied your patch against up-to-date sources (30-rc3),
>>>> and have more messages after resume:
>>>
>>> Thanks!
>>>
>>>> ACPI: Preparing to enter system sleep state S4
>>>> PM: Saving platform NVS memory
>>>> ------------[ cut here ]------------
>>>> WARNING: at drivers/base/sys.c:405 sysdev_suspend+0xb6/0x21c()
>>>> Hardware name: TravelMate 2350
>>>> Interrupts enabled after cpufreq_suspend+0x0/0x113
>>>
>>> Well, it looks like cpufreq_suspend() left us with interrupts enabled and
>>> that caused the other warnings to be printed.  Not nice.
>>>
>>> What CPU is there in your box?
>>>
>>> Rafael
>>
>> Yes, cpufreq_ondemand enabled. It's 1.7 GHz pentium-m. The lowest
>> frequency is 600 MHz.
>> Here is my /proc/cpuinfo:
>>
>> processor       : 0
>> vendor_id       : GenuineIntel
>> cpu family      : 6
>> model           : 13
>> model name      : Intel(R) Pentium(R) M processor 1.70GHz
>> stepping        : 6
>> cpu MHz         : 600.000
>> cache size      : 2048 KB
>> fdiv_bug        : no
>> hlt_bug         : no
>> f00f_bug        : no
>> coma_bug        : no
>> fpu             : yes
>> fpu_exception   : yes
>> cpuid level     : 2
>> wp              : yes
>> flags           : fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca
>> cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2
>> bogomips        : 1198.79
>> clflush size    : 64
>> power management:

FYI:
This warning still present in latest 2.6.30-rc8. I tried to find the
problem but failed.
Probably, someone experienced developer can help here and find the problem.

-- 
Best regards, Klimov Alexey

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-06-03 16:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-19 16:53 [warn_once] warning: at kernel/hrtimer.c:625 hres_timers_resume+0x24/0x38() Alexey Klimov
2009-04-27 21:35 ` Rafael J. Wysocki
2009-04-29 13:21   ` Alexey Klimov
2009-04-29 19:47     ` Rafael J. Wysocki
2009-04-30  8:54       ` Alexey Klimov
2009-05-04 12:10         ` Fabio Comolli
2009-06-03 16:43           ` Alexey Klimov

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).