X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/18a076fccdba90cd7bea1dd4cff1b6b0559b75f0..bdb465749d0bc1d806cc3d678b8f5c0766f1a810:/target/linux/lantiq/patches/809-mt-vpe.patch?ds=sidebyside diff --git a/target/linux/lantiq/patches/809-mt-vpe.patch b/target/linux/lantiq/patches/809-mt-vpe.patch index 07312c774..ea5076178 100644 --- a/target/linux/lantiq/patches/809-mt-vpe.patch +++ b/target/linux/lantiq/patches/809-mt-vpe.patch @@ -1,6 +1,6 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1669,6 +1669,28 @@ config MIPS_VPE_LOADER +@@ -1837,6 +1837,28 @@ config MIPS_VPE_LOADER Includes a loader for loading an elf relocatable object onto another VPE and running it. @@ -140,7 +140,7 @@ #define read_tc_gpr_sp() mftgpr(29) --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile -@@ -84,7 +84,8 @@ obj-$(CONFIG_MIPS32_O32) += binfmt_elfo3 +@@ -85,7 +85,8 @@ obj-$(CONFIG_MIPS32_O32) += binfmt_elfo3 obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_PROC_FS) += proc.o @@ -152,7 +152,7 @@ obj-$(CONFIG_I8253) += i8253.o --- a/arch/mips/kernel/mips-mt.c +++ b/arch/mips/kernel/mips-mt.c -@@ -21,26 +21,95 @@ +@@ -21,26 +21,96 @@ #include int vpelimit; @@ -228,7 +228,8 @@ + tlbsiz = (((config1val >> 25) & 0x3f) + 1); + if (tlbsiz > 64) + tlbsiz = 64; -+ cpu_data[0].tlbsize = current_cpu_data.tlbsize = tlbsiz; ++ cpu_data[0].tlbsize = tlbsiz; ++ current_cpu_data.tlbsize = tlbsiz; + } + + } @@ -253,7 +254,7 @@ /* * Dump new MIPS MT state for the core. Does not leave TCs halted. -@@ -78,18 +147,18 @@ void mips_mt_regdump(unsigned long mvpct +@@ -78,18 +148,18 @@ void mips_mt_regdump(unsigned long mvpct if ((read_tc_c0_tcbind() & TCBIND_CURVPE) == i) { printk(" VPE %d\n", i); printk(" VPEControl : %08lx\n", @@ -279,7 +280,7 @@ break; /* Next VPE */ } } -@@ -287,6 +356,9 @@ void mips_mt_set_cpuoptions(void) +@@ -287,6 +357,9 @@ void mips_mt_set_cpuoptions(void) printk("Mapped %ld ITC cells starting at 0x%08x\n", ((itcblkgrn & 0x7fe00000) >> 20), itc_base); } @@ -337,7 +338,7 @@ flush_icache_all(); --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c -@@ -77,6 +77,58 @@ static struct kspd_notifications kspd_ev +@@ -76,6 +76,58 @@ static struct kspd_notifications kspd_ev static int kspd_events_reqd; #endif @@ -396,7 +397,7 @@ /* grab the likely amount of memory we will need. */ #ifdef CONFIG_MIPS_VPE_LOADER_TOM #define P_SIZE (2 * 1024 * 1024) -@@ -269,6 +321,13 @@ static void *alloc_progmem(unsigned long +@@ -268,6 +320,13 @@ static void *alloc_progmem(unsigned long void *addr; #ifdef CONFIG_MIPS_VPE_LOADER_TOM @@ -410,7 +411,7 @@ /* * This means you must tell Linux to use less memory than you * physically have, for example by passing a mem= boot argument. -@@ -747,6 +806,12 @@ static int vpe_run(struct vpe * v) +@@ -746,6 +805,12 @@ static int vpe_run(struct vpe * v) } /* Write the address we want it to start running from in the TCPC register. */ @@ -423,7 +424,7 @@ write_tc_c0_tcrestart((unsigned long)v->__start); write_tc_c0_tccontext((unsigned long)0); -@@ -760,6 +825,20 @@ static int vpe_run(struct vpe * v) +@@ -759,6 +824,20 @@ static int vpe_run(struct vpe * v) write_tc_c0_tchalt(read_tc_c0_tchalt() & ~TCHALT_H); @@ -444,7 +445,7 @@ /* * The sde-kit passes 'memsize' to __start in $a3, so set something * here... Or set $a3 to zero and define DFLT_STACK_SIZE and -@@ -834,6 +913,9 @@ static int find_vpe_symbols(struct vpe * +@@ -833,6 +912,9 @@ static int find_vpe_symbols(struct vpe * if ( (v->__start == 0) || (v->shared_ptr == NULL)) return -1; @@ -454,7 +455,7 @@ return 0; } -@@ -995,6 +1077,15 @@ static int vpe_elfload(struct vpe * v) +@@ -994,6 +1076,15 @@ static int vpe_elfload(struct vpe * v) (unsigned long)v->load_addr + v->len); if ((find_vpe_symbols(v, sechdrs, symindex, strtab, &mod)) < 0) { @@ -470,7 +471,7 @@ if (v->__start == 0) { printk(KERN_WARNING "VPE loader: program does not contain " "a __start symbol\n"); -@@ -1065,6 +1156,9 @@ static int vpe_open(struct inode *inode, +@@ -1064,6 +1155,9 @@ static int vpe_open(struct inode *inode, struct vpe_notifications *not; struct vpe *v; int ret; @@ -480,7 +481,7 @@ if (minor != iminor(inode)) { /* assume only 1 device at the moment. */ -@@ -1091,14 +1185,23 @@ static int vpe_open(struct inode *inode, +@@ -1090,6 +1184,12 @@ static int vpe_open(struct inode *inode, cleanup_tc(get_tc(tclimit)); } @@ -492,11 +493,15 @@ +#else /* this of-course trashes what was there before... */ v->pbuffer = vmalloc(P_SIZE); + if (!v->pbuffer) { +@@ -1097,11 +1197,13 @@ static int vpe_open(struct inode *inode, + return -ENOMEM; + } v->plen = P_SIZE; +#endif v->load_addr = NULL; v->len = 0; - +- +#if 0 v->uid = filp->f_cred->fsuid; v->gid = filp->f_cred->fsgid; @@ -504,7 +509,7 @@ #ifdef CONFIG_MIPS_APSP_KSPD /* get kspd to tell us when a syscall_exit happens */ -@@ -1351,6 +1454,133 @@ static void kspd_sp_exit( int sp_id) +@@ -1349,6 +1451,133 @@ static void kspd_sp_exit( int sp_id) cleanup_tc(get_tc(sp_id)); } #endif @@ -638,7 +643,7 @@ static ssize_t store_kill(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) -@@ -1432,6 +1662,18 @@ static int __init vpe_module_init(void) +@@ -1430,6 +1659,18 @@ static int __init vpe_module_init(void) printk("VPE loader: not a MIPS MT capable processor\n"); return -ENODEV; } @@ -657,7 +662,7 @@ if (vpelimit == 0) { printk(KERN_WARNING "No VPEs reserved for AP/SP, not " -@@ -1476,10 +1718,12 @@ static int __init vpe_module_init(void) +@@ -1474,10 +1715,12 @@ static int __init vpe_module_init(void) mtflags = dmt(); vpflags = dvpe(); @@ -671,7 +676,7 @@ val = read_c0_mvpconf0(); hw_tcs = (val & MVPCONF0_PTC) + 1; -@@ -1491,6 +1735,7 @@ static int __init vpe_module_init(void) +@@ -1489,6 +1732,7 @@ static int __init vpe_module_init(void) * reschedule send IPIs or similar we might hang. */ clear_c0_mvpcontrol(MVPCONTROL_VPC); @@ -679,7 +684,7 @@ evpe(vpflags); emt(mtflags); local_irq_restore(flags); -@@ -1516,6 +1761,7 @@ static int __init vpe_module_init(void) +@@ -1514,6 +1758,7 @@ static int __init vpe_module_init(void) } v->ntcs = hw_tcs - tclimit; @@ -687,7 +692,7 @@ /* add the tc to the list of this vpe's tc's. */ list_add(&t->tc, &v->tc); -@@ -1584,6 +1830,7 @@ static int __init vpe_module_init(void) +@@ -1582,6 +1827,7 @@ static int __init vpe_module_init(void) out_reenable: /* release config state */ clear_c0_mvpcontrol(MVPCONTROL_VPC); @@ -835,7 +840,7 @@ + * Write to perf counter registers based on text input + */ + -+#define TXTBUFSZ 1024 ++#define TXTBUFSZ 100 + +static int proc_write_mtsched(struct file *file, const char *buffer, + unsigned long count, void *data) @@ -1048,7 +1053,7 @@ + * Write to perf counter registers based on text input + */ + -+#define TXTBUFSZ 1024 ++#define TXTBUFSZ 100 + +static int proc_write_perf(struct file *file, const char *buffer, + unsigned long count, void *data)