Rafael J. Wysocki
2011-Mar-26 11:29 UTC
[Xen-devel] [PATCH] PM / Hibernate: Introduce CONFIG_HIBERNATE_INTERFACE
From: Rafael J. Wysocki <rjw@sisk.pl> Xen save/restore is going to use hibernate device callbacks for quiescing devices and putting them back to normal operations and it would need to select CONFIG_HIBERNATION for this purpose. However, that also would cause the hibernate interfaces for user space to be enabled, which might confuse user space, because the Xen kernels don''t support hibernation. Moreover, it would be wasteful, as it would make the Xen kernels include a substantial amount of code that they would never use. To address this issue introduce new power management Kconfig option CONFIG_HIBERNATE_INTERFACE, such that the hibernate interfaces for user space and the image-handling code will depend on it and it will select CONFIG_HIBERNATION. Then, Xen save/restore will be able to select CONFIG_HIBERNATION without dragging the entire hibernate code along with it. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Tested-by: Shriram Rajagopalan <rshriram@cs.ubc.ca> --- arch/x86/power/Makefile | 3 ++- include/linux/suspend.h | 15 +++++---------- kernel/power/Kconfig | 4 ++++ kernel/power/Makefile | 4 ++-- kernel/power/main.c | 2 +- kernel/power/power.h | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) Index: linux-2.6/kernel/power/Kconfig ==================================================================--- linux-2.6.orig/kernel/power/Kconfig +++ linux-2.6/kernel/power/Kconfig @@ -19,8 +19,12 @@ config SUSPEND_FREEZER Turning OFF this setting is NOT recommended! If in doubt, say Y. config HIBERNATION + bool + +config HIBERNATE_INTERFACE bool "Hibernation (aka ''suspend to disk'')" depends on SWAP && ARCH_HIBERNATION_POSSIBLE + select HIBERNATION select LZO_COMPRESS select LZO_DECOMPRESS ---help--- Index: linux-2.6/kernel/power/Makefile ==================================================================--- linux-2.6.orig/kernel/power/Makefile +++ linux-2.6/kernel/power/Makefile @@ -6,7 +6,7 @@ obj-$(CONFIG_PM_SLEEP) += console.o obj-$(CONFIG_FREEZER) += process.o obj-$(CONFIG_SUSPEND) += suspend.o obj-$(CONFIG_PM_TEST_SUSPEND) += suspend_test.o -obj-$(CONFIG_HIBERNATION) += hibernate.o snapshot.o swap.o user.o \ - block_io.o +obj-$(CONFIG_HIBERNATE_INTERFACE) += hibernate.o snapshot.o swap.o \ + user.o block_io.o obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o Index: linux-2.6/include/linux/suspend.h ==================================================================--- linux-2.6.orig/include/linux/suspend.h +++ linux-2.6/include/linux/suspend.h @@ -229,7 +229,7 @@ struct platform_hibernation_ops { void (*recover)(void); }; -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_INTERFACE /* kernel/power/snapshot.c */ extern void __register_nosave_region(unsigned long b, unsigned long e, int km); static inline void __init register_nosave_region(unsigned long b, unsigned long e) @@ -248,7 +248,9 @@ extern unsigned long get_safe_page(gfp_t extern void hibernation_set_ops(const struct platform_hibernation_ops *ops); extern int hibernate(void); extern bool system_entering_hibernation(void); -#else /* CONFIG_HIBERNATION */ +#else /* !CONFIG_HIBERNATE_INTERFACE */ +static inline void register_nosave_region(unsigned long b, unsigned long e) {} +static inline void register_nosave_region_late(unsigned long b, unsigned long e) {} static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } static inline void swsusp_set_page_free(struct page *p) {} static inline void swsusp_unset_page_free(struct page *p) {} @@ -256,7 +258,7 @@ static inline void swsusp_unset_page_fre static inline void hibernation_set_ops(const struct platform_hibernation_ops *ops) {} static inline int hibernate(void) { return -ENOSYS; } static inline bool system_entering_hibernation(void) { return false; } -#endif /* CONFIG_HIBERNATION */ +#endif /* !CONFIG_HIBERNATE_INTERFACE */ #ifdef CONFIG_PM_SLEEP void save_processor_state(void); @@ -298,13 +300,6 @@ static inline bool pm_wakeup_pending(voi extern struct mutex pm_mutex; #ifndef CONFIG_HIBERNATION -static inline void register_nosave_region(unsigned long b, unsigned long e) -{ -} -static inline void register_nosave_region_late(unsigned long b, unsigned long e) -{ -} - static inline void lock_system_sleep(void) {} static inline void unlock_system_sleep(void) {} Index: linux-2.6/arch/x86/power/Makefile ==================================================================--- linux-2.6.orig/arch/x86/power/Makefile +++ linux-2.6/arch/x86/power/Makefile @@ -4,4 +4,5 @@ nostackp := $(call cc-option, -fno-stack CFLAGS_cpu.o := $(nostackp) obj-$(CONFIG_PM_SLEEP) += cpu.o -obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o hibernate_asm_$(BITS).o +obj-$(CONFIG_HIBERNATE_INTERFACE) += hibernate_$(BITS).o \ + hibernate_asm_$(BITS).o Index: linux-2.6/kernel/power/main.c ==================================================================--- linux-2.6.orig/kernel/power/main.c +++ linux-2.6/kernel/power/main.c @@ -156,7 +156,7 @@ static ssize_t state_show(struct kobject s += sprintf(s,"%s ", pm_states[i]); } #endif -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_INTERFACE s += sprintf(s, "%s\n", "disk"); #else if (s != buf) Index: linux-2.6/kernel/power/power.h ==================================================================--- linux-2.6.orig/kernel/power/power.h +++ linux-2.6/kernel/power/power.h @@ -13,7 +13,7 @@ struct swsusp_info { unsigned long size; } __attribute__((aligned(PAGE_SIZE))); -#ifdef CONFIG_HIBERNATION +#ifdef CONFIG_HIBERNATE_INTERFACE /* kernel/power/snapshot.c */ extern void __init hibernate_image_size_init(void); @@ -53,10 +53,10 @@ extern int hibernation_snapshot(int plat extern int hibernation_restore(int platform_mode); extern int hibernation_platform_enter(void); -#else /* !CONFIG_HIBERNATION */ +#else /* !CONFIG_HIBERNATE_INTERFACE */ static inline void hibernate_image_size_init(void) {} -#endif /* !CONFIG_HIBERNATION */ +#endif /* !CONFIG_HIBERNATE_INTERFACE */ extern int pfn_is_nosave(unsigned long); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Campbell
2011-Mar-29 15:53 UTC
Re: [Xen-devel] [PATCH] PM / Hibernate: Introduce CONFIG_HIBERNATE_INTERFACE
Hi Rafael, On Sat, 2011-03-26 at 11:29 +0000, Rafael J. Wysocki wrote:> From: Rafael J. Wysocki <rjw@sisk.pl> > > Xen save/restore is going to use hibernate device callbacks for > quiescing devices and putting them back to normal operations and it > would need to select CONFIG_HIBERNATION for this purpose. However, > that also would cause the hibernate interfaces for user space to be > enabled, which might confuse user space, because the Xen kernels > don''t support hibernation. Moreover, it would be wasteful, as it > would make the Xen kernels include a substantial amount of code that > they would never use. > > To address this issue introduce new power management Kconfig option > CONFIG_HIBERNATE_INTERFACE, such that the hibernate interfaces for > user space and the image-handling code will depend on it and it will > select CONFIG_HIBERNATION. Then, Xen save/restore will be able to > select CONFIG_HIBERNATION without dragging the entire hibernate code > along with it. > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>Were you planning to put this forward for 2.6.39 or are you waiting for 2.6.40?> Tested-by: Shriram Rajagopalan <rshriram@cs.ubc.ca>Shriram, Is the additional Xen side patch still the same as in <1299906483-31053-1-git-send-email-rshriram@cs.ubc.ca> ? Is there anything else which isn''t already in upstream? Ian.> --- > arch/x86/power/Makefile | 3 ++- > include/linux/suspend.h | 15 +++++---------- > kernel/power/Kconfig | 4 ++++ > kernel/power/Makefile | 4 ++-- > kernel/power/main.c | 2 +- > kernel/power/power.h | 6 +++--- > 6 files changed, 17 insertions(+), 17 deletions(-) > > Index: linux-2.6/kernel/power/Kconfig > ==================================================================> --- linux-2.6.orig/kernel/power/Kconfig > +++ linux-2.6/kernel/power/Kconfig > @@ -19,8 +19,12 @@ config SUSPEND_FREEZER > Turning OFF this setting is NOT recommended! If in doubt, say Y. > > config HIBERNATION > + bool > + > +config HIBERNATE_INTERFACE > bool "Hibernation (aka ''suspend to disk'')" > depends on SWAP && ARCH_HIBERNATION_POSSIBLE > + select HIBERNATION > select LZO_COMPRESS > select LZO_DECOMPRESS > ---help--- > Index: linux-2.6/kernel/power/Makefile > ==================================================================> --- linux-2.6.orig/kernel/power/Makefile > +++ linux-2.6/kernel/power/Makefile > @@ -6,7 +6,7 @@ obj-$(CONFIG_PM_SLEEP) += console.o > obj-$(CONFIG_FREEZER) += process.o > obj-$(CONFIG_SUSPEND) += suspend.o > obj-$(CONFIG_PM_TEST_SUSPEND) += suspend_test.o > -obj-$(CONFIG_HIBERNATION) += hibernate.o snapshot.o swap.o user.o \ > - block_io.o > +obj-$(CONFIG_HIBERNATE_INTERFACE) += hibernate.o snapshot.o swap.o \ > + user.o block_io.o > > obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o > Index: linux-2.6/include/linux/suspend.h > ==================================================================> --- linux-2.6.orig/include/linux/suspend.h > +++ linux-2.6/include/linux/suspend.h > @@ -229,7 +229,7 @@ struct platform_hibernation_ops { > void (*recover)(void); > }; > > -#ifdef CONFIG_HIBERNATION > +#ifdef CONFIG_HIBERNATE_INTERFACE > /* kernel/power/snapshot.c */ > extern void __register_nosave_region(unsigned long b, unsigned long e, int km); > static inline void __init register_nosave_region(unsigned long b, unsigned long e) > @@ -248,7 +248,9 @@ extern unsigned long get_safe_page(gfp_t > extern void hibernation_set_ops(const struct platform_hibernation_ops *ops); > extern int hibernate(void); > extern bool system_entering_hibernation(void); > -#else /* CONFIG_HIBERNATION */ > +#else /* !CONFIG_HIBERNATE_INTERFACE */ > +static inline void register_nosave_region(unsigned long b, unsigned long e) {} > +static inline void register_nosave_region_late(unsigned long b, unsigned long e) {} > static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } > static inline void swsusp_set_page_free(struct page *p) {} > static inline void swsusp_unset_page_free(struct page *p) {} > @@ -256,7 +258,7 @@ static inline void swsusp_unset_page_fre > static inline void hibernation_set_ops(const struct platform_hibernation_ops *ops) {} > static inline int hibernate(void) { return -ENOSYS; } > static inline bool system_entering_hibernation(void) { return false; } > -#endif /* CONFIG_HIBERNATION */ > +#endif /* !CONFIG_HIBERNATE_INTERFACE */ > > #ifdef CONFIG_PM_SLEEP > void save_processor_state(void); > @@ -298,13 +300,6 @@ static inline bool pm_wakeup_pending(voi > extern struct mutex pm_mutex; > > #ifndef CONFIG_HIBERNATION > -static inline void register_nosave_region(unsigned long b, unsigned long e) > -{ > -} > -static inline void register_nosave_region_late(unsigned long b, unsigned long e) > -{ > -} > - > static inline void lock_system_sleep(void) {} > static inline void unlock_system_sleep(void) {} > > Index: linux-2.6/arch/x86/power/Makefile > ==================================================================> --- linux-2.6.orig/arch/x86/power/Makefile > +++ linux-2.6/arch/x86/power/Makefile > @@ -4,4 +4,5 @@ nostackp := $(call cc-option, -fno-stack > CFLAGS_cpu.o := $(nostackp) > > obj-$(CONFIG_PM_SLEEP) += cpu.o > -obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o hibernate_asm_$(BITS).o > +obj-$(CONFIG_HIBERNATE_INTERFACE) += hibernate_$(BITS).o \ > + hibernate_asm_$(BITS).o > Index: linux-2.6/kernel/power/main.c > ==================================================================> --- linux-2.6.orig/kernel/power/main.c > +++ linux-2.6/kernel/power/main.c > @@ -156,7 +156,7 @@ static ssize_t state_show(struct kobject > s += sprintf(s,"%s ", pm_states[i]); > } > #endif > -#ifdef CONFIG_HIBERNATION > +#ifdef CONFIG_HIBERNATE_INTERFACE > s += sprintf(s, "%s\n", "disk"); > #else > if (s != buf) > Index: linux-2.6/kernel/power/power.h > ==================================================================> --- linux-2.6.orig/kernel/power/power.h > +++ linux-2.6/kernel/power/power.h > @@ -13,7 +13,7 @@ struct swsusp_info { > unsigned long size; > } __attribute__((aligned(PAGE_SIZE))); > > -#ifdef CONFIG_HIBERNATION > +#ifdef CONFIG_HIBERNATE_INTERFACE > /* kernel/power/snapshot.c */ > extern void __init hibernate_image_size_init(void); > > @@ -53,10 +53,10 @@ extern int hibernation_snapshot(int plat > extern int hibernation_restore(int platform_mode); > extern int hibernation_platform_enter(void); > > -#else /* !CONFIG_HIBERNATION */ > +#else /* !CONFIG_HIBERNATE_INTERFACE */ > > static inline void hibernate_image_size_init(void) {} > -#endif /* !CONFIG_HIBERNATION */ > +#endif /* !CONFIG_HIBERNATE_INTERFACE */ > > extern int pfn_is_nosave(unsigned long); > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Shriram Rajagopalan
2011-Mar-29 16:45 UTC
Re: [Xen-devel] [PATCH] PM / Hibernate: Introduce CONFIG_HIBERNATE_INTERFACE
On Tue, Mar 29, 2011 at 8:53 AM, Ian Campbell <Ian.Campbell@citrix.com>wrote:> Hi Rafael, > > On Sat, 2011-03-26 at 11:29 +0000, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki <rjw@sisk.pl> > > > > Xen save/restore is going to use hibernate device callbacks for > > quiescing devices and putting them back to normal operations and it > > would need to select CONFIG_HIBERNATION for this purpose. However, > > that also would cause the hibernate interfaces for user space to be > > enabled, which might confuse user space, because the Xen kernels > > don''t support hibernation. Moreover, it would be wasteful, as it > > would make the Xen kernels include a substantial amount of code that > > they would never use. > > > > To address this issue introduce new power management Kconfig option > > CONFIG_HIBERNATE_INTERFACE, such that the hibernate interfaces for > > user space and the image-handling code will depend on it and it will > > select CONFIG_HIBERNATION. Then, Xen save/restore will be able to > > select CONFIG_HIBERNATION without dragging the entire hibernate code > > along with it. > > > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> > > Were you planning to put this forward for 2.6.39 or are you waiting for > 2.6.40? > > > Tested-by: Shriram Rajagopalan <rshriram@cs.ubc.ca> > > Shriram, > > Is the additional Xen side patch still the same as in > <1299906483-31053-1-git-send-email-rshriram@cs.ubc.ca> ? Is there > anything else which isn''t already in upstream? > > Ah. I knew I was missing something.Yes. That patch remains the same. thanks shriram> Ian. > > > --- > > arch/x86/power/Makefile | 3 ++- > > include/linux/suspend.h | 15 +++++---------- > > kernel/power/Kconfig | 4 ++++ > > kernel/power/Makefile | 4 ++-- > > kernel/power/main.c | 2 +- > > kernel/power/power.h | 6 +++--- > > 6 files changed, 17 insertions(+), 17 deletions(-) > > > > Index: linux-2.6/kernel/power/Kconfig > > ==================================================================> > --- linux-2.6.orig/kernel/power/Kconfig > > +++ linux-2.6/kernel/power/Kconfig > > @@ -19,8 +19,12 @@ config SUSPEND_FREEZER > > Turning OFF this setting is NOT recommended! If in doubt, say Y. > > > > config HIBERNATION > > + bool > > + > > +config HIBERNATE_INTERFACE > > bool "Hibernation (aka ''suspend to disk'')" > > depends on SWAP && ARCH_HIBERNATION_POSSIBLE > > + select HIBERNATION > > select LZO_COMPRESS > > select LZO_DECOMPRESS > > ---help--- > > Index: linux-2.6/kernel/power/Makefile > > ==================================================================> > --- linux-2.6.orig/kernel/power/Makefile > > +++ linux-2.6/kernel/power/Makefile > > @@ -6,7 +6,7 @@ obj-$(CONFIG_PM_SLEEP) += console.o > > obj-$(CONFIG_FREEZER) += process.o > > obj-$(CONFIG_SUSPEND) += suspend.o > > obj-$(CONFIG_PM_TEST_SUSPEND) += suspend_test.o > > -obj-$(CONFIG_HIBERNATION) += hibernate.o snapshot.o swap.o user.o \ > > - block_io.o > > +obj-$(CONFIG_HIBERNATE_INTERFACE) += hibernate.o snapshot.o swap.o \ > > + user.o block_io.o > > > > obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o > > Index: linux-2.6/include/linux/suspend.h > > ==================================================================> > --- linux-2.6.orig/include/linux/suspend.h > > +++ linux-2.6/include/linux/suspend.h > > @@ -229,7 +229,7 @@ struct platform_hibernation_ops { > > void (*recover)(void); > > }; > > > > -#ifdef CONFIG_HIBERNATION > > +#ifdef CONFIG_HIBERNATE_INTERFACE > > /* kernel/power/snapshot.c */ > > extern void __register_nosave_region(unsigned long b, unsigned long e, > int km); > > static inline void __init register_nosave_region(unsigned long b, > unsigned long e) > > @@ -248,7 +248,9 @@ extern unsigned long get_safe_page(gfp_t > > extern void hibernation_set_ops(const struct platform_hibernation_ops > *ops); > > extern int hibernate(void); > > extern bool system_entering_hibernation(void); > > -#else /* CONFIG_HIBERNATION */ > > +#else /* !CONFIG_HIBERNATE_INTERFACE */ > > +static inline void register_nosave_region(unsigned long b, unsigned long > e) {} > > +static inline void register_nosave_region_late(unsigned long b, unsigned > long e) {} > > static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } > > static inline void swsusp_set_page_free(struct page *p) {} > > static inline void swsusp_unset_page_free(struct page *p) {} > > @@ -256,7 +258,7 @@ static inline void swsusp_unset_page_fre > > static inline void hibernation_set_ops(const struct > platform_hibernation_ops *ops) {} > > static inline int hibernate(void) { return -ENOSYS; } > > static inline bool system_entering_hibernation(void) { return false; } > > -#endif /* CONFIG_HIBERNATION */ > > +#endif /* !CONFIG_HIBERNATE_INTERFACE */ > > > > #ifdef CONFIG_PM_SLEEP > > void save_processor_state(void); > > @@ -298,13 +300,6 @@ static inline bool pm_wakeup_pending(voi > > extern struct mutex pm_mutex; > > > > #ifndef CONFIG_HIBERNATION > > -static inline void register_nosave_region(unsigned long b, unsigned long > e) > > -{ > > -} > > -static inline void register_nosave_region_late(unsigned long b, unsigned > long e) > > -{ > > -} > > - > > static inline void lock_system_sleep(void) {} > > static inline void unlock_system_sleep(void) {} > > > > Index: linux-2.6/arch/x86/power/Makefile > > ==================================================================> > --- linux-2.6.orig/arch/x86/power/Makefile > > +++ linux-2.6/arch/x86/power/Makefile > > @@ -4,4 +4,5 @@ nostackp := $(call cc-option, -fno-stack > > CFLAGS_cpu.o := $(nostackp) > > > > obj-$(CONFIG_PM_SLEEP) += cpu.o > > -obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o > hibernate_asm_$(BITS).o > > +obj-$(CONFIG_HIBERNATE_INTERFACE) += hibernate_$(BITS).o \ > > + hibernate_asm_$(BITS).o > > Index: linux-2.6/kernel/power/main.c > > ==================================================================> > --- linux-2.6.orig/kernel/power/main.c > > +++ linux-2.6/kernel/power/main.c > > @@ -156,7 +156,7 @@ static ssize_t state_show(struct kobject > > s += sprintf(s,"%s ", pm_states[i]); > > } > > #endif > > -#ifdef CONFIG_HIBERNATION > > +#ifdef CONFIG_HIBERNATE_INTERFACE > > s += sprintf(s, "%s\n", "disk"); > > #else > > if (s != buf) > > Index: linux-2.6/kernel/power/power.h > > ==================================================================> > --- linux-2.6.orig/kernel/power/power.h > > +++ linux-2.6/kernel/power/power.h > > @@ -13,7 +13,7 @@ struct swsusp_info { > > unsigned long size; > > } __attribute__((aligned(PAGE_SIZE))); > > > > -#ifdef CONFIG_HIBERNATION > > +#ifdef CONFIG_HIBERNATE_INTERFACE > > /* kernel/power/snapshot.c */ > > extern void __init hibernate_image_size_init(void); > > > > @@ -53,10 +53,10 @@ extern int hibernation_snapshot(int plat > > extern int hibernation_restore(int platform_mode); > > extern int hibernation_platform_enter(void); > > > > -#else /* !CONFIG_HIBERNATION */ > > +#else /* !CONFIG_HIBERNATE_INTERFACE */ > > > > static inline void hibernate_image_size_init(void) {} > > -#endif /* !CONFIG_HIBERNATION */ > > +#endif /* !CONFIG_HIBERNATE_INTERFACE */ > > > > extern int pfn_is_nosave(unsigned long); > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xensource.com > > http://lists.xensource.com/xen-devel > > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Rafael J. Wysocki
2011-Mar-29 19:39 UTC
Re: [Xen-devel] [PATCH] PM / Hibernate: Introduce CONFIG_HIBERNATE_INTERFACE
On Tuesday, March 29, 2011, Ian Campbell wrote:> Hi Rafael, > > On Sat, 2011-03-26 at 11:29 +0000, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki <rjw@sisk.pl> > > > > Xen save/restore is going to use hibernate device callbacks for > > quiescing devices and putting them back to normal operations and it > > would need to select CONFIG_HIBERNATION for this purpose. However, > > that also would cause the hibernate interfaces for user space to be > > enabled, which might confuse user space, because the Xen kernels > > don''t support hibernation. Moreover, it would be wasteful, as it > > would make the Xen kernels include a substantial amount of code that > > they would never use. > > > > To address this issue introduce new power management Kconfig option > > CONFIG_HIBERNATE_INTERFACE, such that the hibernate interfaces for > > user space and the image-handling code will depend on it and it will > > select CONFIG_HIBERNATION. Then, Xen save/restore will be able to > > select CONFIG_HIBERNATION without dragging the entire hibernate code > > along with it. > > > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> > > Were you planning to put this forward for 2.6.39 or are you waiting for > 2.6.40?I''m goint to push it for 2.6.39. In fact, I''m going to send the pull request shortly. Thanks, Rafael _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Rafael J. Wysocki
2011-Mar-30 21:10 UTC
Re: [Xen-devel] [PATCH] PM / Hibernate: Introduce CONFIG_HIBERNATE_INTERFACE
On Tuesday, March 29, 2011, Rafael J. Wysocki wrote:> On Tuesday, March 29, 2011, Ian Campbell wrote: > > Hi Rafael, > > > > On Sat, 2011-03-26 at 11:29 +0000, Rafael J. Wysocki wrote: > > > From: Rafael J. Wysocki <rjw@sisk.pl> > > > > > > Xen save/restore is going to use hibernate device callbacks for > > > quiescing devices and putting them back to normal operations and it > > > would need to select CONFIG_HIBERNATION for this purpose. However, > > > that also would cause the hibernate interfaces for user space to be > > > enabled, which might confuse user space, because the Xen kernels > > > don''t support hibernation. Moreover, it would be wasteful, as it > > > would make the Xen kernels include a substantial amount of code that > > > they would never use. > > > > > > To address this issue introduce new power management Kconfig option > > > CONFIG_HIBERNATE_INTERFACE, such that the hibernate interfaces for > > > user space and the image-handling code will depend on it and it will > > > select CONFIG_HIBERNATION. Then, Xen save/restore will be able to > > > select CONFIG_HIBERNATION without dragging the entire hibernate code > > > along with it. > > > > > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> > > > > Were you planning to put this forward for 2.6.39 or are you waiting for > > 2.6.40? > > I''m goint to push it for 2.6.39. In fact, I''m going to send the pull request > shortly.Unfortunately Linus didn''t like it, so I need to rework it to make him happy. As a result the patch is not going to go into 2.6.39. Thanks, Rafael _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel