]> err.no Git - linux-2.6/commitdiff
[S390] nss: disable kexec.
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 5 Mar 2007 22:35:45 +0000 (23:35 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 5 Mar 2007 22:35:45 +0000 (23:35 +0100)
nss and kexec don't work together since kexec wants to write to the
read-only text section of the shared kernel image.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/Kconfig
arch/s390/kernel/machine_kexec.c

index d9425f59be9156bee38dbb86aa68a1957bfbe8d8..0f293aa7b0fa5fd30f5dd85267267a38dcdbd96a 100644 (file)
@@ -376,6 +376,8 @@ config SHARED_KERNEL
          Select this option, if you want to share the text segment of the
          Linux kernel between different VM guests. This reduces memory
          usage with lots of guests but greatly increases kernel size.
+         Also if a kernel was IPL'ed from a shared segment the kexec system
+         call will not work.
          You should only select this option if you know what you are
          doing and want to exploit this feature.
 
index 52f57af252b443a43418d53ae65f0f59409dc8f9..3c77dd36994cec6b71544a345a670d56353017d5 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/system.h>
 #include <asm/smp.h>
 #include <asm/reset.h>
+#include <asm/ipl.h>
 
 typedef void (*relocate_kernel_t)(kimage_entry_t *, unsigned long);
 
@@ -29,6 +30,10 @@ int machine_kexec_prepare(struct kimage *image)
 {
        void *reboot_code_buffer;
 
+       /* Can't replace kernel image since it is read-only. */
+       if (ipl_flags & IPL_NSS_VALID)
+               return -ENOSYS;
+
        /* We don't support anything but the default image type for now. */
        if (image->type != KEXEC_TYPE_DEFAULT)
                return -EINVAL;