Message ID | 102d4cdd8493017c104fda0dccc513bce056430c.1230024187.git.michael@ellerman.id.au (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | 5c9a2606bcad101e169012d9f79ab3aed60926aa |
Headers | show |
Hi, Michael Ellerman wrote: > The non-zero return from the prepare callback is returned by sys_kexec_load() > to userspace, indicating that kexec is not supported on the machine. ... > @@ -638,6 +639,13 @@ static int __init iseries_probe(void) > return 1; > } > > +#ifdef CONFIG_KEXEC > +static int iseries_kexec_prepare(struct kimage *image) > +{ > + return -ENOSYS; > +} > +#endif > + > define_machine(iseries) { > .name = "iSeries", > .setup_arch = iSeries_setup_arch, > @@ -658,6 +666,9 @@ define_machine(iseries) { > .probe = iseries_probe, > .ioremap = iseries_ioremap, > .iounmap = iseries_iounmap, > +#ifdef CONFIG_KEXEC > + .machine_kexec_prepare = iseries_kexec_prepare, > +#endif > /* XXX Implement enable_pmcs for iSeries */ > }; But machine_kexec_prepare() already returns -ENOSYS if the platform doesn't have the hook in ppc_md. I must be missing something; what is this patch fixing?
Hi Nathan, On Tue, Dec 23, 2008 at 12:50:51PM -0600, Nathan Lynch wrote: > Hi, > > Michael Ellerman wrote: > > The non-zero return from the prepare callback is returned by sys_kexec_load() > > to userspace, indicating that kexec is not supported on the machine. > > ... > > > @@ -638,6 +639,13 @@ static int __init iseries_probe(void) > > return 1; > > } > > > > +#ifdef CONFIG_KEXEC > > +static int iseries_kexec_prepare(struct kimage *image) > > +{ > > + return -ENOSYS; > > +} > > +#endif > > + > > define_machine(iseries) { > > .name = "iSeries", > > .setup_arch = iSeries_setup_arch, > > @@ -658,6 +666,9 @@ define_machine(iseries) { > > .probe = iseries_probe, > > .ioremap = iseries_ioremap, > > .iounmap = iseries_iounmap, > > +#ifdef CONFIG_KEXEC > > + .machine_kexec_prepare = iseries_kexec_prepare, > > +#endif > > /* XXX Implement enable_pmcs for iSeries */ > > }; > > But machine_kexec_prepare() already returns -ENOSYS if the platform > doesn't have the hook in ppc_md. I must be missing something; Yeah, the kexec discussion, starting from here: http://ozlabs.org/pipermail/linuxppc-dev/2008-December/066321.html The default behaviour has changed.
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index 70b688c..24519b9 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c @@ -23,6 +23,7 @@ #include <linux/string.h> #include <linux/seq_file.h> #include <linux/kdev_t.h> +#include <linux/kexec.h> #include <linux/major.h> #include <linux/root_dev.h> #include <linux/kernel.h> @@ -638,6 +639,13 @@ static int __init iseries_probe(void) return 1; } +#ifdef CONFIG_KEXEC +static int iseries_kexec_prepare(struct kimage *image) +{ + return -ENOSYS; +} +#endif + define_machine(iseries) { .name = "iSeries", .setup_arch = iSeries_setup_arch, @@ -658,6 +666,9 @@ define_machine(iseries) { .probe = iseries_probe, .ioremap = iseries_ioremap, .iounmap = iseries_iounmap, +#ifdef CONFIG_KEXEC + .machine_kexec_prepare = iseries_kexec_prepare, +#endif /* XXX Implement enable_pmcs for iSeries */ };
The non-zero return from the prepare callback is returned by sys_kexec_load() to userspace, indicating that kexec is not supported on the machine. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> --- arch/powerpc/platforms/iseries/setup.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)