Remove legacy kernel load patch - no longer required
authorHamish Guthrie <hcg@openwrt.org>
Thu, 18 Dec 2008 07:41:41 +0000 (07:41 +0000)
committerHamish Guthrie <hcg@openwrt.org>
Thu, 18 Dec 2008 07:41:41 +0000 (07:41 +0000)
SVN-Revision: 13679

package/kexec-tools/patches/0005-ps3-kexec-load-legacy-kernel-hack.patch [deleted file]

diff --git a/package/kexec-tools/patches/0005-ps3-kexec-load-legacy-kernel-hack.patch b/package/kexec-tools/patches/0005-ps3-kexec-load-legacy-kernel-hack.patch
deleted file mode 100644 (file)
index 6b7b376..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-Hack to load PS3 legacy kernels (2.6.16 and fc7 installer) with the 2.6.23
-mainline linux kernel.
-
----
- kexec/arch/ppc64/fs2dt.c           |   47 +++++++++++++++++++++++++++++++++++++
- kexec/arch/ppc64/kexec-elf-ppc64.c |   44 ++++++++++++++++++++++++++++++++++
- kexec/arch/ppc64/kexec-ppc64.c     |    5 +++
- kexec/arch/ppc64/kexec-ppc64.h     |    2 +
- 4 files changed, 98 insertions(+)
-
---- a/kexec/arch/ppc64/fs2dt.c
-+++ b/kexec/arch/ppc64/fs2dt.c
-@@ -262,6 +262,33 @@ static void putprops(char *fn, struct di
-                       die("unrecoverable error: could not read \"%s\": %s\n",
-                           pathname, strerror(errno));
-+              /* ps3 legacy - Add 'PS3PF' to compatible */
-+
-+              if (ps3_legacy && !strcmp(dp->d_name, "compatible")) {
-+                      static const char s[] = "PS3PF";
-+                      char *const tmp = (char *)dt + len;
-+
-+                      memcpy(tmp, s, sizeof(s));
-+                      len += sizeof(s);
-+                      *dt_len = len;
-+
-+                      fprintf(stdout, "ps3 legacy: Changed dt entry "
-+                              "/compatible: <%s> -> <%s %s>\n",
-+                              (char *)dt, (char *)dt, tmp);
-+              }
-+
-+              /* ps3 legacy - force memory.reg to 224 MiB */
-+
-+              if (ps3_legacy && !strcmp(dp->d_name, "reg") && len == 16) {
-+                      uint64_t tmp = *((uint64_t *)dt + 1);
-+
-+                      *((uint64_t *)dt + 1) = 0xe000000ULL;
-+                      fprintf(stdout, "ps3 legacy: Changed dt entry "
-+                              "/memory/reg: <%llx> -> <%llx>\n",
-+                              (unsigned long long)tmp,
-+                              *((unsigned long long *)dt + 1));
-+              }
-+
-               checkprop(fn, dt, len);
-               dt += (len + 3)/4;
-@@ -360,6 +387,26 @@ static void putnode(void)
-               reserve(initrd_base, initrd_size);
-       }
-+      /* ps3 legacy - add entry linux,platform <801> */
-+
-+      if (ps3_legacy && !strcmp(basename,"/chosen/")) {
-+              int len = 4;
-+              static const uint32_t data = 0x801UL;
-+
-+              *dt++ = 3;
-+              *dt++ = len;
-+              *dt++ = propnum("linux,platform");
-+
-+              if ((len >= 8) && ((unsigned long)dt & 0x4))
-+                      dt++;
-+
-+              memcpy(dt,&data,len);
-+              dt += (len + 3)/4;
-+
-+              fprintf(stdout, "ps3 legacy: Added dt entry "
-+                      "/chosen/linux,platform = <801>\n");
-+      }
-+
-       /* Add cmdline to the second kernel.  Check to see if the new
-        * cmdline has a root=.  If not, use the old root= cmdline.  */
-       if (!strcmp(basename,"/chosen/")) {
---- a/kexec/arch/ppc64/kexec-elf-ppc64.c
-+++ b/kexec/arch/ppc64/kexec-elf-ppc64.c
-@@ -45,6 +45,7 @@
- uint64_t initrd_base, initrd_size;
- unsigned char reuse_initrd = 0;
- const char *ramdisk;
-+int ps3_legacy = -1; /* default to probe */
- int create_flatten_tree(struct kexec_info *, unsigned char **, unsigned long *,
-                       char *);
-@@ -76,6 +77,33 @@ void arch_reuse_initrd(void)
-       reuse_initrd = 1;
- }
-+/**
-+ * ps3_legacy_probe - Probe kernel version.
-+ */
-+
-+static int ps3_legacy_probe(const char *p, off_t len)
-+{
-+      static const char d1[] = "linux,platform";    /* legacy 2.6.16 */
-+      static const char d2[] = "2.6.21-1.3194.fc7"; /* fedora 7 installer */
-+      const char *const end = p + len - sizeof(d2);
-+
-+      while(p < end) {
-+              if (p[0] == d1[0] && !memcmp(p, d1, sizeof(d1) - 1)) {
-+                      fprintf(stdout, "ps3 legacy: Legacy kernel found: "
-+                              "'%s'\n", d1);
-+                      break;
-+              }
-+              if (p[0] == d2[0] && !memcmp(p, d2, sizeof(d2) - 1)) {
-+                      fprintf(stdout, "ps3 legacy: Legacy kernel found: "
-+                              "'%s'\n", d2);
-+                      break;
-+              }
-+              p++;
-+      }
-+
-+      return (p != end);
-+}
-+
- int elf_ppc64_load(int argc, char **argv, const char *buf, off_t len,
-                       struct kexec_info *info)
- {
-@@ -102,6 +130,8 @@ int elf_ppc64_load(int argc, char **argv
- #define OPT_RAMDISK     (OPT_ARCH_MAX+1)
- #define OPT_DEVICETREEBLOB     (OPT_ARCH_MAX+2)
- #define OPT_ARGS_IGNORE               (OPT_ARCH_MAX+3)
-+#define OPT_PS3_LEGACY (OPT_ARCH_MAX+4)
-+#define OPT_PS3_LEGACY_NO (OPT_ARCH_MAX+5)
-       static const struct option options[] = {
-               KEXEC_ARCH_OPTIONS
-@@ -111,6 +141,8 @@ int elf_ppc64_load(int argc, char **argv
-               { "initrd",             1, NULL, OPT_RAMDISK },
-               { "devicetreeblob",     1, NULL, OPT_DEVICETREEBLOB },
-               { "args-linux",         0, NULL, OPT_ARGS_IGNORE },
-+              { "ps3-legacy",         0, NULL, OPT_PS3_LEGACY },
-+              { "ps3-no-legacy",      0, NULL, OPT_PS3_LEGACY_NO },
-               { 0,                    0, NULL, 0 },
-       };
-@@ -146,9 +178,18 @@ int elf_ppc64_load(int argc, char **argv
-                       break;
-               case OPT_ARGS_IGNORE:
-                       break;
-+              case OPT_PS3_LEGACY:
-+                      ps3_legacy = 1;
-+                      break;
-+              case OPT_PS3_LEGACY_NO:
-+                      ps3_legacy = 0;
-+                      break;
-               }
-       }
-+      if (ps3_legacy == -1)
-+              ps3_legacy = ps3_legacy_probe(buf, len);
-+
-       cmdline_len = 0;
-       if (cmdline)
-               cmdline_len = strlen(cmdline) + 1;
-@@ -158,6 +199,9 @@ int elf_ppc64_load(int argc, char **argv
-       if (ramdisk && reuse_initrd)
-               die("Can't specify --ramdisk or --initrd with --reuseinitrd\n");
-+      if (ps3_legacy && devicetreeblob)
-+              die("Can't specify --devicetreeblob with --ps3-legacy\n");
-+
-       setup_memory_ranges(info->kexec_flags);
-       /* Need to append some command line parameters internally in case of
---- a/kexec/arch/ppc64/kexec-ppc64.c
-+++ b/kexec/arch/ppc64/kexec-ppc64.c
-@@ -650,6 +650,11 @@ void arch_usage(void)
-       fprintf(stderr, "     --initrd=<filename> same as --ramdisk.\n");
-       fprintf(stderr, "     --devicetreeblob=<filename> Specify device tree blob file.\n");
-       fprintf(stderr, "     --elf64-core-headers Prepare core headers in ELF64 format\n");
-+      fprintf(stderr, "     --ps3-legacy    Make fixups needed to boot PS3 legacy kernels.\n");
-+      fprintf(stderr, "                     The default is to probe the kernel type.\n");
-+      fprintf(stderr, "     --ps3-no-legacy Do not make fixups needed to boot PS3 legacy\n");
-+      fprintf(stderr, "                     kernels. The default is to probe the kernel\n");
-+      fprintf(stderr, "                     type.\n");
- }
- struct arch_options_t arch_options = {
---- a/kexec/arch/ppc64/kexec-ppc64.h
-+++ b/kexec/arch/ppc64/kexec-ppc64.h
-@@ -41,4 +41,6 @@ typedef struct mem_rgns {
- extern mem_rgns_t usablemem_rgns;
-+extern int ps3_legacy;
-+
- #endif /* KEXEC_PPC64_H */