diff -ruN linux-2.6.21.orig/drivers/base/core.c linux-2.6.21/drivers/base/core.c --- linux-2.6.21.orig/drivers/base/core.c 2007-05-15 20:06:32.000000000 +0200 +++ linux-2.6.21/drivers/base/core.c 2007-05-15 20:05:37.000000000 +0200 @@ -645,8 +645,10 @@ if (!((dev->class && dev->class->resume) || (dev->bus && (dev->bus->resume || dev->bus->resume_early))) && !dev->pm_safe) { +#ifdef CONFIG_SUSPEND2_DEBUG printk("Device driver %s lacks bus and class support for " "being resumed.\n", kobject_name(&dev->kobj)); +#endif if (do_dump_stack) dump_stack(); } diff -ruN linux-2.6.21.orig/drivers/pci/pci-driver.c linux-2.6.21/drivers/pci/pci-driver.c --- linux-2.6.21.orig/drivers/pci/pci-driver.c 2007-05-15 20:07:58.000000000 +0200 +++ linux-2.6.21/drivers/pci/pci-driver.c 2007-05-15 20:05:44.000000000 +0200 @@ -452,8 +452,12 @@ driver_unregister(&drv->driver); if (!drv->resume) + { +#ifdef CONFIG_SUSPEND2_DEBUG printk("PCI driver %s lacks driver specific resume support.\n", drv->name); +#endif + } return error; } diff -ruN linux-2.6.21.orig/drivers/usb/core/driver.c linux-2.6.21/drivers/usb/core/driver.c --- linux-2.6.21.orig/drivers/usb/core/driver.c 2007-05-15 20:08:05.000000000 +0200 +++ linux-2.6.21/drivers/usb/core/driver.c 2007-05-15 20:05:51.000000000 +0200 @@ -789,8 +789,12 @@ usbfs_update_special(); usb_create_newid_file(new_driver); if (!new_driver->resume) + { +#ifdef CONFIG_SUSPEND2_DEBUG printk("USB driver %s lacks resume support.\n", new_driver->name); +#endif + } } else { printk(KERN_ERR "%s: error %d registering interface " " driver %s\n", diff -ruN linux-2.6.21.orig/kernel/power/Kconfig linux-2.6.21/kernel/power/Kconfig --- linux-2.6.21.orig/kernel/power/Kconfig 2007-05-15 20:08:58.000000000 +0200 +++ linux-2.6.21/kernel/power/Kconfig 2007-05-15 20:22:32.000000000 +0200 @@ -304,6 +304,15 @@ atomic copy. Should not normally be needed, but here for verification and diagnostic purposes. + config SUSPEND2_DEBUG + bool "Enable suspend2 debugging" + default n + depends on SUSPEND2_CORE + ---help--- + If you have any problems when hibernating, say Y here. This will result in + additional debugging messages to be written to the system log. This is useful + when trying to guess which modules are causing suspend2 to not work properly. + config SUSPEND_SHARED bool depends on SUSPEND2_CORE || SOFTWARE_SUSPEND