From c610ea33476e9eb1b283d5c271dd4b88b8874f2c Mon Sep 17 00:00:00 2001 From: kaloz Date: Wed, 17 Feb 2010 23:00:47 +0000 Subject: [sibyte]: upgrade to 2.6.32.8 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19694 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../002-sibyte_remove_standalone_support.patch | 1070 -------------------- 1 file changed, 1070 deletions(-) delete mode 100644 target/linux/sibyte/patches/002-sibyte_remove_standalone_support.patch (limited to 'target/linux/sibyte/patches/002-sibyte_remove_standalone_support.patch') diff --git a/target/linux/sibyte/patches/002-sibyte_remove_standalone_support.patch b/target/linux/sibyte/patches/002-sibyte_remove_standalone_support.patch deleted file mode 100644 index 2c46ccf66..000000000 --- a/target/linux/sibyte/patches/002-sibyte_remove_standalone_support.patch +++ /dev/null @@ -1,1070 +0,0 @@ -CFE is the only supported and used bootloader on the SiByte boards, -the standalone kernel support has been never used outside Broadcom. -Remove it and make the kernel use CFE by default. - -Signed-off-by: Imre Kaloz - ---- a/arch/mips/Makefile -+++ b/arch/mips/Makefile -@@ -167,7 +167,6 @@ libs-$(CONFIG_ARC) += arch/mips/fw/arc/ - libs-$(CONFIG_CFE) += arch/mips/fw/cfe/ - libs-$(CONFIG_SNIPROM) += arch/mips/fw/sni/ - libs-y += arch/mips/fw/lib/ --libs-$(CONFIG_SIBYTE_CFE) += arch/mips/sibyte/cfe/ - - # - # Board-dependent options and extra files ---- a/arch/mips/sibyte/cfe/console.c -+++ /dev/null -@@ -1,79 +0,0 @@ --#include --#include --#include -- --#include -- --#include --#include -- --extern int cfe_cons_handle; -- --static void cfe_console_write(struct console *cons, const char *str, -- unsigned int count) --{ -- int i, last, written; -- -- for (i=0, last=0; i MAX_RAM_SIZE) -- || (initrd_pend > MAX_RAM_SIZE))) { -- panic("initrd out of addressable memory"); -- } -- --#endif /* INITRD */ -- -- for (idx = 0; cfe_enummem(idx, mem_flags, &addr, &size, &type) != CFE_ERR_NOMORE; -- idx++) { -- rd_flag = 0; -- if (type == CFE_MI_AVAILABLE) { -- /* -- * See if this block contains (any portion of) the -- * ramdisk -- */ --#ifdef CONFIG_BLK_DEV_INITRD -- if (initrd_start) { -- if ((initrd_pstart > addr) && -- (initrd_pstart < (addr + size))) { -- add_memory_region(addr, -- initrd_pstart - addr, -- BOOT_MEM_RAM); -- rd_flag = 1; -- } -- if ((initrd_pend > addr) && -- (initrd_pend < (addr + size))) { -- add_memory_region(initrd_pend, -- (addr + size) - initrd_pend, -- BOOT_MEM_RAM); -- rd_flag = 1; -- } -- } --#endif -- if (!rd_flag) { -- if (addr > MAX_RAM_SIZE) -- continue; -- if (addr+size > MAX_RAM_SIZE) -- size = MAX_RAM_SIZE - (addr+size) + 1; -- /* -- * memcpy/__copy_user prefetch, which -- * will cause a bus error for -- * KSEG/KUSEG addrs not backed by RAM. -- * Hence, reserve some padding for the -- * prefetch distance. -- */ -- if (size > 512) -- size -= 512; -- add_memory_region(addr, size, BOOT_MEM_RAM); -- } -- board_mem_region_addrs[board_mem_region_count] = addr; -- board_mem_region_sizes[board_mem_region_count] = size; -- board_mem_region_count++; -- if (board_mem_region_count == -- SIBYTE_MAX_MEM_REGIONS) { -- /* -- * Too many regions. Need to configure more -- */ -- while(1); -- } -- } -- } --#ifdef CONFIG_BLK_DEV_INITRD -- if (initrd_start) { -- add_memory_region(initrd_pstart, initrd_pend - initrd_pstart, -- BOOT_MEM_RESERVED); -- } --#endif --} -- --#ifdef CONFIG_BLK_DEV_INITRD --static int __init initrd_setup(char *str) --{ -- char rdarg[64]; -- int idx; -- char *tmp, *endptr; -- unsigned long initrd_size; -- -- /* Make a copy of the initrd argument so we can smash it up here */ -- for (idx = 0; idx < sizeof(rdarg)-1; idx++) { -- if (!str[idx] || (str[idx] == ' ')) break; -- rdarg[idx] = str[idx]; -- } -- -- rdarg[idx] = 0; -- str = rdarg; -- -- /* -- *Initrd location comes in the form "@" -- * e.g. initrd=3abfd@80010000. This is set up by the loader. -- */ -- for (tmp = str; *tmp != '@'; tmp++) { -- if (!*tmp) { -- goto fail; -- } -- } -- *tmp = 0; -- tmp++; -- if (!*tmp) { -- goto fail; -- } -- initrd_size = simple_strtoul(str, &endptr, 16); -- if (*endptr) { -- *(tmp-1) = '@'; -- goto fail; -- } -- *(tmp-1) = '@'; -- initrd_start = simple_strtoul(tmp, &endptr, 16); -- if (*endptr) { -- goto fail; -- } -- initrd_end = initrd_start + initrd_size; -- printk("Found initrd of %lx@%lx\n", initrd_size, initrd_start); -- return 1; -- fail: -- printk("Bad initrd argument. Disabling initrd\n"); -- initrd_start = 0; -- initrd_end = 0; -- return 1; --} -- --#endif -- --extern struct plat_smp_ops sb_smp_ops; --extern struct plat_smp_ops bcm1480_smp_ops; -- --/* -- * prom_init is called just after the cpu type is determined, from setup_arch() -- */ --void __init prom_init(void) --{ -- uint64_t cfe_ept, cfe_handle; -- unsigned int cfe_eptseal; -- int argc = fw_arg0; -- char **envp = (char **) fw_arg2; -- int *prom_vec = (int *) fw_arg3; -- -- _machine_restart = cfe_linux_restart; -- _machine_halt = cfe_linux_halt; -- pm_power_off = cfe_linux_halt; -- -- /* -- * Check if a loader was used; if NOT, the 4 arguments are -- * what CFE gives us (handle, 0, EPT and EPTSEAL) -- */ -- if (argc < 0) { -- cfe_handle = (uint64_t)(long)argc; -- cfe_ept = (long)envp; -- cfe_eptseal = (uint32_t)(unsigned long)prom_vec; -- } else { -- if ((int32_t)(long)prom_vec < 0) { -- /* -- * Old loader; all it gives us is the handle, -- * so use the "known" entrypoint and assume -- * the seal. -- */ -- cfe_handle = (uint64_t)(long)prom_vec; -- cfe_ept = (uint64_t)((int32_t)0x9fc00500); -- cfe_eptseal = CFE_EPTSEAL; -- } else { -- /* -- * Newer loaders bundle the handle/ept/eptseal -- * Note: prom_vec is in the loader's useg -- * which is still alive in the TLB. -- */ -- cfe_handle = (uint64_t)((int32_t *)prom_vec)[0]; -- cfe_ept = (uint64_t)((int32_t *)prom_vec)[2]; -- cfe_eptseal = (unsigned int)((uint32_t *)prom_vec)[3]; -- } -- } -- if (cfe_eptseal != CFE_EPTSEAL) { -- /* too early for panic to do any good */ -- printk("CFE's entrypoint seal doesn't match. Spinning."); -- while (1) ; -- } -- cfe_init(cfe_handle, cfe_ept); -- /* -- * Get the handle for (at least) prom_putchar, possibly for -- * boot console -- */ -- cfe_cons_handle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE); -- if (cfe_getenv("LINUX_CMDLINE", arcs_cmdline, CL_SIZE) < 0) { -- if (argc >= 0) { -- /* The loader should have set the command line */ -- /* too early for panic to do any good */ -- printk("LINUX_CMDLINE not defined in cfe."); -- while (1) ; -- } -- } -- --#ifdef CONFIG_BLK_DEV_INITRD -- { -- char *ptr; -- /* Need to find out early whether we've got an initrd. So scan -- the list looking now */ -- for (ptr = arcs_cmdline; *ptr; ptr++) { -- while (*ptr == ' ') { -- ptr++; -- } -- if (!strncmp(ptr, "initrd=", 7)) { -- initrd_setup(ptr+7); -- break; -- } else { -- while (*ptr && (*ptr != ' ')) { -- ptr++; -- } -- } -- } -- } --#endif /* CONFIG_BLK_DEV_INITRD */ -- -- /* Not sure this is needed, but it's the safe way. */ -- arcs_cmdline[CL_SIZE-1] = 0; -- -- prom_meminit(); -- --#if defined(CONFIG_SIBYTE_BCM112X) || defined(CONFIG_SIBYTE_SB1250) -- register_smp_ops(&sb_smp_ops); --#endif --#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80) -- register_smp_ops(&bcm1480_smp_ops); --#endif --} -- --void __init prom_free_prom_memory(void) --{ -- /* Not sure what I'm supposed to do here. Nothing, I think */ --} -- --void prom_putchar(char c) --{ -- int ret; -- -- while ((ret = cfe_write(cfe_cons_handle, &c, 1)) == 0) -- ; --} ---- /dev/null -+++ b/arch/mips/sibyte/common/cfe.c -@@ -0,0 +1,350 @@ -+/* -+ * Copyright (C) 2000, 2001, 2002, 2003 Broadcom Corporation -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+/* Max ram addressable in 32-bit segments */ -+#ifdef CONFIG_64BIT -+#define MAX_RAM_SIZE (~0ULL) -+#else -+#ifdef CONFIG_HIGHMEM -+#ifdef CONFIG_64BIT_PHYS_ADDR -+#define MAX_RAM_SIZE (~0ULL) -+#else -+#define MAX_RAM_SIZE (0xffffffffULL) -+#endif -+#else -+#define MAX_RAM_SIZE (0x1fffffffULL) -+#endif -+#endif -+ -+#define SIBYTE_MAX_MEM_REGIONS 8 -+phys_t board_mem_region_addrs[SIBYTE_MAX_MEM_REGIONS]; -+phys_t board_mem_region_sizes[SIBYTE_MAX_MEM_REGIONS]; -+unsigned int board_mem_region_count; -+ -+int cfe_cons_handle; -+ -+#ifdef CONFIG_BLK_DEV_INITRD -+extern unsigned long initrd_start, initrd_end; -+#endif -+ -+static void __noreturn cfe_linux_exit(void *arg) -+{ -+ int warm = *(int *)arg; -+ -+ if (smp_processor_id()) { -+ static int reboot_smp; -+ -+ /* Don't repeat the process from another CPU */ -+ if (!reboot_smp) { -+ /* Get CPU 0 to do the cfe_exit */ -+ reboot_smp = 1; -+ smp_call_function(cfe_linux_exit, arg, 0); -+ } -+ } else { -+ printk("Passing control back to CFE...\n"); -+ cfe_exit(warm, 0); -+ printk("cfe_exit returned??\n"); -+ } -+ while (1); -+} -+ -+static void __noreturn cfe_linux_restart(char *command) -+{ -+ static const int zero; -+ -+ cfe_linux_exit((void *)&zero); -+} -+ -+static void __noreturn cfe_linux_halt(void) -+{ -+ static const int one = 1; -+ -+ cfe_linux_exit((void *)&one); -+} -+ -+static __init void prom_meminit(void) -+{ -+ u64 addr, size, type; /* regardless of 64BIT_PHYS_ADDR */ -+ int mem_flags = 0; -+ unsigned int idx; -+ int rd_flag; -+#ifdef CONFIG_BLK_DEV_INITRD -+ unsigned long initrd_pstart; -+ unsigned long initrd_pend; -+ -+ initrd_pstart = CPHYSADDR(initrd_start); -+ initrd_pend = CPHYSADDR(initrd_end); -+ if (initrd_start && -+ ((initrd_pstart > MAX_RAM_SIZE) -+ || (initrd_pend > MAX_RAM_SIZE))) { -+ panic("initrd out of addressable memory"); -+ } -+ -+#endif /* INITRD */ -+ -+ for (idx = 0; cfe_enummem(idx, mem_flags, &addr, &size, &type) != CFE_ERR_NOMORE; -+ idx++) { -+ rd_flag = 0; -+ if (type == CFE_MI_AVAILABLE) { -+ /* -+ * See if this block contains (any portion of) the -+ * ramdisk -+ */ -+#ifdef CONFIG_BLK_DEV_INITRD -+ if (initrd_start) { -+ if ((initrd_pstart > addr) && -+ (initrd_pstart < (addr + size))) { -+ add_memory_region(addr, -+ initrd_pstart - addr, -+ BOOT_MEM_RAM); -+ rd_flag = 1; -+ } -+ if ((initrd_pend > addr) && -+ (initrd_pend < (addr + size))) { -+ add_memory_region(initrd_pend, -+ (addr + size) - initrd_pend, -+ BOOT_MEM_RAM); -+ rd_flag = 1; -+ } -+ } -+#endif -+ if (!rd_flag) { -+ if (addr > MAX_RAM_SIZE) -+ continue; -+ if (addr+size > MAX_RAM_SIZE) -+ size = MAX_RAM_SIZE - (addr+size) + 1; -+ /* -+ * memcpy/__copy_user prefetch, which -+ * will cause a bus error for -+ * KSEG/KUSEG addrs not backed by RAM. -+ * Hence, reserve some padding for the -+ * prefetch distance. -+ */ -+ if (size > 512) -+ size -= 512; -+ add_memory_region(addr, size, BOOT_MEM_RAM); -+ } -+ board_mem_region_addrs[board_mem_region_count] = addr; -+ board_mem_region_sizes[board_mem_region_count] = size; -+ board_mem_region_count++; -+ if (board_mem_region_count == -+ SIBYTE_MAX_MEM_REGIONS) { -+ /* -+ * Too many regions. Need to configure more -+ */ -+ while(1); -+ } -+ } -+ } -+#ifdef CONFIG_BLK_DEV_INITRD -+ if (initrd_start) { -+ add_memory_region(initrd_pstart, initrd_pend - initrd_pstart, -+ BOOT_MEM_RESERVED); -+ } -+#endif -+} -+ -+#ifdef CONFIG_BLK_DEV_INITRD -+static int __init initrd_setup(char *str) -+{ -+ char rdarg[64]; -+ int idx; -+ char *tmp, *endptr; -+ unsigned long initrd_size; -+ -+ /* Make a copy of the initrd argument so we can smash it up here */ -+ for (idx = 0; idx < sizeof(rdarg)-1; idx++) { -+ if (!str[idx] || (str[idx] == ' ')) break; -+ rdarg[idx] = str[idx]; -+ } -+ -+ rdarg[idx] = 0; -+ str = rdarg; -+ -+ /* -+ *Initrd location comes in the form "@" -+ * e.g. initrd=3abfd@80010000. This is set up by the loader. -+ */ -+ for (tmp = str; *tmp != '@'; tmp++) { -+ if (!*tmp) { -+ goto fail; -+ } -+ } -+ *tmp = 0; -+ tmp++; -+ if (!*tmp) { -+ goto fail; -+ } -+ initrd_size = simple_strtoul(str, &endptr, 16); -+ if (*endptr) { -+ *(tmp-1) = '@'; -+ goto fail; -+ } -+ *(tmp-1) = '@'; -+ initrd_start = simple_strtoul(tmp, &endptr, 16); -+ if (*endptr) { -+ goto fail; -+ } -+ initrd_end = initrd_start + initrd_size; -+ printk("Found initrd of %lx@%lx\n", initrd_size, initrd_start); -+ return 1; -+ fail: -+ printk("Bad initrd argument. Disabling initrd\n"); -+ initrd_start = 0; -+ initrd_end = 0; -+ return 1; -+} -+ -+#endif -+ -+extern struct plat_smp_ops sb_smp_ops; -+extern struct plat_smp_ops bcm1480_smp_ops; -+ -+/* -+ * prom_init is called just after the cpu type is determined, from setup_arch() -+ */ -+void __init prom_init(void) -+{ -+ uint64_t cfe_ept, cfe_handle; -+ unsigned int cfe_eptseal; -+ int argc = fw_arg0; -+ char **envp = (char **) fw_arg2; -+ int *prom_vec = (int *) fw_arg3; -+ -+ _machine_restart = cfe_linux_restart; -+ _machine_halt = cfe_linux_halt; -+ pm_power_off = cfe_linux_halt; -+ -+ /* -+ * Check if a loader was used; if NOT, the 4 arguments are -+ * what CFE gives us (handle, 0, EPT and EPTSEAL) -+ */ -+ if (argc < 0) { -+ cfe_handle = (uint64_t)(long)argc; -+ cfe_ept = (long)envp; -+ cfe_eptseal = (uint32_t)(unsigned long)prom_vec; -+ } else { -+ if ((int32_t)(long)prom_vec < 0) { -+ /* -+ * Old loader; all it gives us is the handle, -+ * so use the "known" entrypoint and assume -+ * the seal. -+ */ -+ cfe_handle = (uint64_t)(long)prom_vec; -+ cfe_ept = (uint64_t)((int32_t)0x9fc00500); -+ cfe_eptseal = CFE_EPTSEAL; -+ } else { -+ /* -+ * Newer loaders bundle the handle/ept/eptseal -+ * Note: prom_vec is in the loader's useg -+ * which is still alive in the TLB. -+ */ -+ cfe_handle = (uint64_t)((int32_t *)prom_vec)[0]; -+ cfe_ept = (uint64_t)((int32_t *)prom_vec)[2]; -+ cfe_eptseal = (unsigned int)((uint32_t *)prom_vec)[3]; -+ } -+ } -+ if (cfe_eptseal != CFE_EPTSEAL) { -+ /* too early for panic to do any good */ -+ printk("CFE's entrypoint seal doesn't match. Spinning."); -+ while (1) ; -+ } -+ cfe_init(cfe_handle, cfe_ept); -+ /* -+ * Get the handle for (at least) prom_putchar, possibly for -+ * boot console -+ */ -+ cfe_cons_handle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE); -+ if (cfe_getenv("LINUX_CMDLINE", arcs_cmdline, CL_SIZE) < 0) { -+ if (argc < 0) { -+ /* -+ * It's OK for direct boot to not provide a -+ * command line -+ */ -+ strcpy(arcs_cmdline, "root=/dev/ram0 "); -+ } else { -+ /* The loader should have set the command line */ -+ /* too early for panic to do any good */ -+ printk("LINUX_CMDLINE not defined in cfe."); -+ while (1) ; -+ } -+ } -+ -+#ifdef CONFIG_BLK_DEV_INITRD -+ { -+ char *ptr; -+ /* Need to find out early whether we've got an initrd. So scan -+ the list looking now */ -+ for (ptr = arcs_cmdline; *ptr; ptr++) { -+ while (*ptr == ' ') { -+ ptr++; -+ } -+ if (!strncmp(ptr, "initrd=", 7)) { -+ initrd_setup(ptr+7); -+ break; -+ } else { -+ while (*ptr && (*ptr != ' ')) { -+ ptr++; -+ } -+ } -+ } -+ } -+#endif /* CONFIG_BLK_DEV_INITRD */ -+ -+ /* Not sure this is needed, but it's the safe way. */ -+ arcs_cmdline[CL_SIZE-1] = 0; -+ -+ prom_meminit(); -+ -+#if defined(CONFIG_SIBYTE_BCM112X) || defined(CONFIG_SIBYTE_SB1250) -+ register_smp_ops(&sb_smp_ops); -+#endif -+#if defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80) -+ register_smp_ops(&bcm1480_smp_ops); -+#endif -+} -+ -+void __init prom_free_prom_memory(void) -+{ -+ /* Not sure what I'm supposed to do here. Nothing, I think */ -+} -+ -+void prom_putchar(char c) -+{ -+ int ret; -+ -+ while ((ret = cfe_write(cfe_cons_handle, &c, 1)) == 0) -+ ; -+} ---- /dev/null -+++ b/arch/mips/sibyte/common/cfe_console.c -@@ -0,0 +1,79 @@ -+#include -+#include -+#include -+ -+#include -+ -+#include -+#include -+ -+extern int cfe_cons_handle; -+ -+static void cfe_console_write(struct console *cons, const char *str, -+ unsigned int count) -+{ -+ int i, last, written; -+ -+ for (i=0, last=0; i --#include --#include --#include --#include --#include --#include --#include -- --#include --#include -- --#define MAX_RAM_SIZE ((CONFIG_SIBYTE_STANDALONE_RAM_SIZE * 1024 * 1024) - 1) -- --static __init void prom_meminit(void) --{ --#ifdef CONFIG_BLK_DEV_INITRD -- unsigned long initrd_pstart; -- unsigned long initrd_pend; -- -- initrd_pstart = __pa(initrd_start); -- initrd_pend = __pa(initrd_end); -- if (initrd_start && -- ((initrd_pstart > MAX_RAM_SIZE) -- || (initrd_pend > MAX_RAM_SIZE))) { -- panic("initrd out of addressable memory"); -- } -- -- add_memory_region(0, initrd_pstart, -- BOOT_MEM_RAM); -- add_memory_region(initrd_pstart, initrd_pend - initrd_pstart, -- BOOT_MEM_RESERVED); -- add_memory_region(initrd_pend, -- (CONFIG_SIBYTE_STANDALONE_RAM_SIZE * 1024 * 1024) - initrd_pend, -- BOOT_MEM_RAM); --#else -- add_memory_region(0, CONFIG_SIBYTE_STANDALONE_RAM_SIZE * 1024 * 1024, -- BOOT_MEM_RAM); --#endif --} -- --void prom_cpu0_exit(void *unused) --{ -- while (1) ; --} -- --static void prom_linux_exit(void) --{ --#ifdef CONFIG_SMP -- if (smp_processor_id()) { -- smp_call_function(prom_cpu0_exit, NULL, 1); -- } --#endif -- while(1); --} -- --/* -- * prom_init is called just after the cpu type is determined, from setup_arch() -- */ --void __init prom_init(void) --{ -- _machine_restart = (void (*)(char *))prom_linux_exit; -- _machine_halt = prom_linux_exit; -- pm_power_off = prom_linux_exit; -- -- strcpy(arcs_cmdline, "root=/dev/ram0 "); -- -- prom_meminit(); --} -- --void __init prom_free_prom_memory(void) --{ -- /* Not sure what I'm supposed to do here. Nothing, I think */ --} -- --void prom_putchar(char c) --{ --} ---- a/arch/mips/sibyte/swarm/setup.c -+++ b/arch/mips/sibyte/swarm/setup.c -@@ -136,16 +136,6 @@ void __init plat_mem_setup(void) - if (m41t81_probe()) - swarm_rtc_type = RTC_M4LT81; - -- printk("This kernel optimized for " -- "board" -- " runs " --#ifdef CONFIG_SIBYTE_CFE -- "with" --#else -- "without" --#endif -- " CFE\n"); -- - #ifdef CONFIG_VT - screen_info = (struct screen_info) { - 0, 0, /* orig-x, orig-y */ -- cgit v1.2.3