- Petr Stetiar updated the kexec arm patch. Thanks!
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 20 Dec 2006 16:50:04 +0000 (16:50 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 20 Dec 2006 16:50:04 +0000 (16:50 -0000)
package/kexec/kexec-tools-arm.patch

index 2659dd770fffb1fd751308989542fa0c0885bc7c..6765db7af01c40d28ef4ebb84ae6329dfca56877 100644 (file)
@@ -389,3 +389,78 @@ diff -uNr kexec-tools-1.101.orig/purgatory/arch/arm/include/stdint.h kexec-tools
 +typedef signed long long   int64_t;
 +
 +#endif /* STDINT_H */
+diff -ur kexec-tools-1.101/kexec/arch/arm/kexec-arm.c kexec-tools-1.101.patched/kexec/arch/arm/kexec-arm.c
+--- kexec-tools-1.101.orig/kexec/arch/arm/kexec-arm.c  2006-12-20 16:41:12.000000000 +0100
++++ kexec-tools-1.101/kexec/arch/arm/kexec-arm.c       2006-12-20 16:40:19.000000000 +0100
+@@ -105,7 +105,7 @@
+       return 0;
+ }
+-int arch_compat_trampoline(struct kexec_info *info, unsigned long *flags)
++int arch_compat_trampoline(struct kexec_info *info)
+ {
+       int result;
+       struct utsname utsname;
+@@ -115,11 +115,8 @@
+                       strerror(errno));
+               return -1;
+       }
+-      if (strncmp(utsname.machine, "arm",3) == 0)
++      if (strncmp(utsname.machine, "arm",3) != 0)
+       {
+-              *flags |= KEXEC_ARCH_ARM;
+-      }
+-      else {
+               fprintf(stderr, "Unsupported machine type: %s\n",
+                       utsname.machine);
+               return -1;
+diff -ur kexec-tools-1.101/kexec/kexec.c kexec-tools-1.101.patched/kexec/kexec.c
+--- kexec-tools-1.101.orig/kexec/kexec.c       2006-09-20 04:39:38.000000000 +0200
++++ kexec-tools-1.101/kexec/kexec.c    2006-12-20 16:39:10.000000000 +0100
+@@ -532,8 +532,7 @@
+               kernel_buf, kernel_size);
+ #endif
+-      if (get_memory_ranges(&memory_range, &memory_ranges,
+-              info.kexec_flags) < 0) {
++      if (get_memory_ranges(&memory_range, &memory_ranges) < 0) {
+               fprintf(stderr, "Could not get memory layout\n");
+               return -1;
+       }
+diff -ur kexec-tools-1.101/kexec/kexec.h kexec-tools-1.101.patched/kexec/kexec.h
+--- kexec-tools-1.101.orig/kexec/kexec.h       2006-09-20 04:39:38.000000000 +0200
++++ kexec-tools-1.101/kexec/kexec.h    2006-12-20 16:40:47.000000000 +0100
+@@ -119,8 +119,7 @@
+ };
+ void usage(void);
+-int get_memory_ranges(struct memory_range **range, int *ranges,
+-                                              unsigned long kexec_flags);
++int get_memory_ranges(struct memory_range **range, int *ranges);
+ int valid_memory_range(unsigned long sstart, unsigned long send);
+ int valid_memory_segment(struct kexec_segment *segment);
+ void print_segments(FILE *file, struct kexec_info *info);
+diff -ur kexec-tools-1.101.orig/kexec/kexec.c kexec-tools-1.101/kexec/kexec.c
+--- kexec-tools-1.101.orig/kexec/kexec.c       2006-12-20 17:04:59.000000000 +0100
++++ kexec-tools-1.101/kexec/kexec.c    2006-12-20 17:05:33.000000000 +0100
+@@ -630,16 +630,11 @@
+ static int my_shutdown(void)
+ {
+       char *args[8];
+-      int i = 0;
+-      args[i++] = "shutdown";
+-      args[i++] = "-r";
+-      args[i++] = "now";
+-      args[i++] = NULL;
+-
+-      execv("/sbin/shutdown", args);
+-      execv("/etc/shutdown", args);
+-      execv("/bin/shutdown", args);
++      args[0] = "reboot";
++      args[1] = NULL;
++
++      execv("/sbin/reboot", args);
+       perror("shutdown");
+       return -1;