From: Pavel Machek sysdevs should be suspended/resumed with IRQs disabled; if something reenables them by mistake, we want to know early. Signed-off-by: Pavel Machek Cc: "Rafael J. Wysocki" Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/base/sys.c | 3 +++ 1 file changed, 3 insertions(+) diff -puN drivers/base/sys.c~s2ram-warn-when-interrupts-should-be-disabled-but-are-not drivers/base/sys.c --- a/drivers/base/sys.c~s2ram-warn-when-interrupts-should-be-disabled-but-are-not +++ a/drivers/base/sys.c @@ -22,6 +22,7 @@ #include #include #include +#include #include "base.h" @@ -383,6 +384,7 @@ int sysdev_suspend(pm_message_t state) /* Call auxillary drivers first */ list_for_each_entry(drv, &cls->drivers, entry) { if (drv->suspend) { + WARN_ON(!irqs_disabled()); ret = drv->suspend(sysdev, state); if (ret) goto aux_driver; @@ -458,6 +460,7 @@ int sysdev_resume(void) list_for_each_entry(sysdev, &cls->kset.list, kobj.entry) { pr_debug(" %s\n", kobject_name(&sysdev->kobj)); + WARN_ON(!irqs_disabled()); __sysdev_resume(sysdev); } } _