aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.mailmap3
-rw-r--r--MAINTAINERS9
-rw-r--r--arch/mips/generic/board-ni169445.its.S2
-rw-r--r--arch/mips/generic/init.c2
-rw-r--r--arch/mips/generic/kexec.c2
-rw-r--r--arch/mips/include/asm/mips-cm.h4
-rw-r--r--arch/mips/include/asm/stackframe.h8
-rw-r--r--arch/mips/kernel/probes-common.h2
-rw-r--r--arch/mips/kernel/smp-cmp.c6
-rw-r--r--arch/mips/kernel/smp-cps.c2
-rw-r--r--arch/mips/kernel/smp.c24
-rw-r--r--arch/mips/mm/uasm-micromips.c2
-rw-r--r--arch/mips/net/ebpf_jit.c2
13 files changed, 40 insertions, 28 deletions
diff --git a/.mailmap b/.mailmap
index a32879a9f970..4757d361fd33 100644
--- a/.mailmap
+++ b/.mailmap
@@ -15,6 +15,7 @@ Adriana Reus <adi.reus@gmail.com> <adriana.reus@intel.com>
15Alan Cox <alan@lxorguk.ukuu.org.uk> 15Alan Cox <alan@lxorguk.ukuu.org.uk>
16Alan Cox <root@hraefn.swansea.linux.org.uk> 16Alan Cox <root@hraefn.swansea.linux.org.uk>
17Aleksey Gorelov <aleksey_gorelov@phoenix.com> 17Aleksey Gorelov <aleksey_gorelov@phoenix.com>
18Aleksandar Markovic <aleksandar.markovic@mips.com> <aleksandar.markovic@imgtec.com>
18Al Viro <viro@ftp.linux.org.uk> 19Al Viro <viro@ftp.linux.org.uk>
19Al Viro <viro@zenIV.linux.org.uk> 20Al Viro <viro@zenIV.linux.org.uk>
20Andreas Herrmann <aherrman@de.ibm.com> 21Andreas Herrmann <aherrman@de.ibm.com>
@@ -101,6 +102,7 @@ Leonid I Ananiev <leonid.i.ananiev@intel.com>
101Linas Vepstas <linas@austin.ibm.com> 102Linas Vepstas <linas@austin.ibm.com>
102Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de> 103Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de>
103Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch> 104Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch>
105Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com>
104Mark Brown <broonie@sirena.org.uk> 106Mark Brown <broonie@sirena.org.uk>
105Martin Kepplinger <martink@posteo.de> <martin.kepplinger@theobroma-systems.com> 107Martin Kepplinger <martink@posteo.de> <martin.kepplinger@theobroma-systems.com>
106Martin Kepplinger <martink@posteo.de> <martin.kepplinger@ginzinger.com> 108Martin Kepplinger <martink@posteo.de> <martin.kepplinger@ginzinger.com>
@@ -119,6 +121,7 @@ Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>
119Mayuresh Janorkar <mayur@ti.com> 121Mayuresh Janorkar <mayur@ti.com>
120Michael Buesch <m@bues.ch> 122Michael Buesch <m@bues.ch>
121Michel Dänzer <michel@tungstengraphics.com> 123Michel Dänzer <michel@tungstengraphics.com>
124Miodrag Dinic <miodrag.dinic@mips.com> <miodrag.dinic@imgtec.com>
122Mitesh shah <mshah@teja.com> 125Mitesh shah <mshah@teja.com>
123Mohit Kumar <mohit.kumar@st.com> <mohit.kumar.dhaka@gmail.com> 126Mohit Kumar <mohit.kumar@st.com> <mohit.kumar.dhaka@gmail.com>
124Morten Welinder <terra@gnome.org> 127Morten Welinder <terra@gnome.org>
diff --git a/MAINTAINERS b/MAINTAINERS
index 00b0fda6c2e1..2f4e462aa4a2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -873,7 +873,7 @@ F: drivers/android/
873F: drivers/staging/android/ 873F: drivers/staging/android/
874 874
875ANDROID GOLDFISH RTC DRIVER 875ANDROID GOLDFISH RTC DRIVER
876M: Miodrag Dinic <miodrag.dinic@imgtec.com> 876M: Miodrag Dinic <miodrag.dinic@mips.com>
877S: Supported 877S: Supported
878F: Documentation/devicetree/bindings/rtc/google,goldfish-rtc.txt 878F: Documentation/devicetree/bindings/rtc/google,goldfish-rtc.txt
879F: drivers/rtc/rtc-goldfish.c 879F: drivers/rtc/rtc-goldfish.c
@@ -9019,7 +9019,7 @@ F: drivers/*/*loongson1*
9019F: drivers/*/*/*loongson1* 9019F: drivers/*/*/*loongson1*
9020 9020
9021MIPS RINT INSTRUCTION EMULATION 9021MIPS RINT INSTRUCTION EMULATION
9022M: Aleksandar Markovic <aleksandar.markovic@imgtec.com> 9022M: Aleksandar Markovic <aleksandar.markovic@mips.com>
9023L: linux-mips@linux-mips.org 9023L: linux-mips@linux-mips.org
9024S: Supported 9024S: Supported
9025F: arch/mips/math-emu/sp_rint.c 9025F: arch/mips/math-emu/sp_rint.c
@@ -10683,10 +10683,9 @@ S: Maintained
10683F: drivers/pinctrl/spear/ 10683F: drivers/pinctrl/spear/
10684 10684
10685PISTACHIO SOC SUPPORT 10685PISTACHIO SOC SUPPORT
10686M: James Hartley <james.hartley@imgtec.com> 10686M: James Hartley <james.hartley@sondrel.com>
10687M: Ionela Voinescu <ionela.voinescu@imgtec.com>
10688L: linux-mips@linux-mips.org 10687L: linux-mips@linux-mips.org
10689S: Maintained 10688S: Odd Fixes
10690F: arch/mips/pistachio/ 10689F: arch/mips/pistachio/
10691F: arch/mips/include/asm/mach-pistachio/ 10690F: arch/mips/include/asm/mach-pistachio/
10692F: arch/mips/boot/dts/img/pistachio* 10691F: arch/mips/boot/dts/img/pistachio*
diff --git a/arch/mips/generic/board-ni169445.its.S b/arch/mips/generic/board-ni169445.its.S
index d12e12fe90be..e4cb4f95a8cc 100644
--- a/arch/mips/generic/board-ni169445.its.S
+++ b/arch/mips/generic/board-ni169445.its.S
@@ -1,4 +1,4 @@
1{ 1/ {
2 images { 2 images {
3 fdt@ni169445 { 3 fdt@ni169445 {
4 description = "NI 169445 device tree"; 4 description = "NI 169445 device tree";
diff --git a/arch/mips/generic/init.c b/arch/mips/generic/init.c
index cf409ba358a1..5ba6fcc26fa7 100644
--- a/arch/mips/generic/init.c
+++ b/arch/mips/generic/init.c
@@ -20,7 +20,7 @@
20#include <asm/fw/fw.h> 20#include <asm/fw/fw.h>
21#include <asm/irq_cpu.h> 21#include <asm/irq_cpu.h>
22#include <asm/machine.h> 22#include <asm/machine.h>
23#include <asm/mips-cpc.h> 23#include <asm/mips-cps.h>
24#include <asm/prom.h> 24#include <asm/prom.h>
25#include <asm/smp-ops.h> 25#include <asm/smp-ops.h>
26#include <asm/time.h> 26#include <asm/time.h>
diff --git a/arch/mips/generic/kexec.c b/arch/mips/generic/kexec.c
index e9fb735299e3..1ca409f58929 100644
--- a/arch/mips/generic/kexec.c
+++ b/arch/mips/generic/kexec.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright (C) 2016 Imagination Technologies 2 * Copyright (C) 2016 Imagination Technologies
3 * Author: Marcin Nowakowski <marcin.nowakowski@imgtec.com> 3 * Author: Marcin Nowakowski <marcin.nowakowski@mips.com>
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify it 5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the 6 * under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/include/asm/mips-cm.h b/arch/mips/include/asm/mips-cm.h
index 3708b8ccc0b4..8bc5df49b0e1 100644
--- a/arch/mips/include/asm/mips-cm.h
+++ b/arch/mips/include/asm/mips-cm.h
@@ -142,8 +142,8 @@ GCR_ACCESSOR_RO(64, 0x000, config)
142GCR_ACCESSOR_RW(64, 0x008, base) 142GCR_ACCESSOR_RW(64, 0x008, base)
143#define CM_GCR_BASE_GCRBASE GENMASK_ULL(47, 15) 143#define CM_GCR_BASE_GCRBASE GENMASK_ULL(47, 15)
144#define CM_GCR_BASE_CMDEFTGT GENMASK(1, 0) 144#define CM_GCR_BASE_CMDEFTGT GENMASK(1, 0)
145#define CM_GCR_BASE_CMDEFTGT_DISABLED 0 145#define CM_GCR_BASE_CMDEFTGT_MEM 0
146#define CM_GCR_BASE_CMDEFTGT_MEM 1 146#define CM_GCR_BASE_CMDEFTGT_RESERVED 1
147#define CM_GCR_BASE_CMDEFTGT_IOCU0 2 147#define CM_GCR_BASE_CMDEFTGT_IOCU0 2
148#define CM_GCR_BASE_CMDEFTGT_IOCU1 3 148#define CM_GCR_BASE_CMDEFTGT_IOCU1 3
149 149
diff --git a/arch/mips/include/asm/stackframe.h b/arch/mips/include/asm/stackframe.h
index 5d3563c55e0c..2161357cc68f 100644
--- a/arch/mips/include/asm/stackframe.h
+++ b/arch/mips/include/asm/stackframe.h
@@ -199,6 +199,10 @@
199 sll k0, 3 /* extract cu0 bit */ 199 sll k0, 3 /* extract cu0 bit */
200 .set noreorder 200 .set noreorder
201 bltz k0, 8f 201 bltz k0, 8f
202 move k0, sp
203 .if \docfi
204 .cfi_register sp, k0
205 .endif
202#ifdef CONFIG_EVA 206#ifdef CONFIG_EVA
203 /* 207 /*
204 * Flush interAptiv's Return Prediction Stack (RPS) by writing 208 * Flush interAptiv's Return Prediction Stack (RPS) by writing
@@ -225,10 +229,6 @@
225 MTC0 k0, CP0_ENTRYHI 229 MTC0 k0, CP0_ENTRYHI
226#endif 230#endif
227 .set reorder 231 .set reorder
228 move k0, sp
229 .if \docfi
230 .cfi_register sp, k0
231 .endif
232 /* Called from user mode, new stack. */ 232 /* Called from user mode, new stack. */
233 get_saved_sp docfi=\docfi tosp=1 233 get_saved_sp docfi=\docfi tosp=1
2348: 2348:
diff --git a/arch/mips/kernel/probes-common.h b/arch/mips/kernel/probes-common.h
index dd08e41134b6..d2bf77b18822 100644
--- a/arch/mips/kernel/probes-common.h
+++ b/arch/mips/kernel/probes-common.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright (C) 2016 Imagination Technologies 2 * Copyright (C) 2016 Imagination Technologies
3 * Author: Marcin Nowakowski <marcin.nowakowski@imgtec.com> 3 * Author: Marcin Nowakowski <marcin.nowakowski@mips.com>
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify it 5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the 6 * under the terms of the GNU General Public License as published by the
diff --git a/arch/mips/kernel/smp-cmp.c b/arch/mips/kernel/smp-cmp.c
index 05295a4909f1..a2322009cac3 100644
--- a/arch/mips/kernel/smp-cmp.c
+++ b/arch/mips/kernel/smp-cmp.c
@@ -19,7 +19,7 @@
19#undef DEBUG 19#undef DEBUG
20 20
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/sched.h> 22#include <linux/sched/task_stack.h>
23#include <linux/smp.h> 23#include <linux/smp.h>
24#include <linux/cpumask.h> 24#include <linux/cpumask.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
@@ -50,8 +50,8 @@ static void cmp_init_secondary(void)
50 50
51#ifdef CONFIG_MIPS_MT_SMP 51#ifdef CONFIG_MIPS_MT_SMP
52 if (cpu_has_mipsmt) 52 if (cpu_has_mipsmt)
53 c->vpe_id = (read_c0_tcbind() >> TCBIND_CURVPE_SHIFT) & 53 cpu_set_vpe_id(c, (read_c0_tcbind() >> TCBIND_CURVPE_SHIFT) &
54 TCBIND_CURVPE; 54 TCBIND_CURVPE);
55#endif 55#endif
56} 56}
57 57
diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index 7d6af41888e8..ecc1a853f48d 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -306,7 +306,7 @@ static int cps_boot_secondary(int cpu, struct task_struct *idle)
306 int err; 306 int err;
307 307
308 /* We don't yet support booting CPUs in other clusters */ 308 /* We don't yet support booting CPUs in other clusters */
309 if (cpu_cluster(&cpu_data[cpu]) != cpu_cluster(&current_cpu_data)) 309 if (cpu_cluster(&cpu_data[cpu]) != cpu_cluster(&raw_current_cpu_data))
310 return -ENOSYS; 310 return -ENOSYS;
311 311
312 vpe_cfg->pc = (unsigned long)&smp_bootstrap; 312 vpe_cfg->pc = (unsigned long)&smp_bootstrap;
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index bbe19b64def5..88be966d3e61 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -42,7 +42,7 @@
42#include <asm/processor.h> 42#include <asm/processor.h>
43#include <asm/idle.h> 43#include <asm/idle.h>
44#include <asm/r4k-timer.h> 44#include <asm/r4k-timer.h>
45#include <asm/mips-cpc.h> 45#include <asm/mips-cps.h>
46#include <asm/mmu_context.h> 46#include <asm/mmu_context.h>
47#include <asm/time.h> 47#include <asm/time.h>
48#include <asm/setup.h> 48#include <asm/setup.h>
@@ -66,6 +66,7 @@ EXPORT_SYMBOL(cpu_sibling_map);
66cpumask_t cpu_core_map[NR_CPUS] __read_mostly; 66cpumask_t cpu_core_map[NR_CPUS] __read_mostly;
67EXPORT_SYMBOL(cpu_core_map); 67EXPORT_SYMBOL(cpu_core_map);
68 68
69static DECLARE_COMPLETION(cpu_starting);
69static DECLARE_COMPLETION(cpu_running); 70static DECLARE_COMPLETION(cpu_running);
70 71
71/* 72/*
@@ -374,6 +375,12 @@ asmlinkage void start_secondary(void)
374 cpumask_set_cpu(cpu, &cpu_coherent_mask); 375 cpumask_set_cpu(cpu, &cpu_coherent_mask);
375 notify_cpu_starting(cpu); 376 notify_cpu_starting(cpu);
376 377
378 /* Notify boot CPU that we're starting & ready to sync counters */
379 complete(&cpu_starting);
380
381 synchronise_count_slave(cpu);
382
383 /* The CPU is running and counters synchronised, now mark it online */
377 set_cpu_online(cpu, true); 384 set_cpu_online(cpu, true);
378 385
379 set_cpu_sibling_map(cpu); 386 set_cpu_sibling_map(cpu);
@@ -381,8 +388,11 @@ asmlinkage void start_secondary(void)
381 388
382 calculate_cpu_foreign_map(); 389 calculate_cpu_foreign_map();
383 390
391 /*
392 * Notify boot CPU that we're up & online and it can safely return
393 * from __cpu_up
394 */
384 complete(&cpu_running); 395 complete(&cpu_running);
385 synchronise_count_slave(cpu);
386 396
387 /* 397 /*
388 * irq will be enabled in ->smp_finish(), enabling it too early 398 * irq will be enabled in ->smp_finish(), enabling it too early
@@ -445,17 +455,17 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
445 if (err) 455 if (err)
446 return err; 456 return err;
447 457
448 /* 458 /* Wait for CPU to start and be ready to sync counters */
449 * We must check for timeout here, as the CPU will not be marked 459 if (!wait_for_completion_timeout(&cpu_starting,
450 * online until the counters are synchronised.
451 */
452 if (!wait_for_completion_timeout(&cpu_running,
453 msecs_to_jiffies(1000))) { 460 msecs_to_jiffies(1000))) {
454 pr_crit("CPU%u: failed to start\n", cpu); 461 pr_crit("CPU%u: failed to start\n", cpu);
455 return -EIO; 462 return -EIO;
456 } 463 }
457 464
458 synchronise_count_master(cpu); 465 synchronise_count_master(cpu);
466
467 /* Wait for CPU to finish startup & mark itself online before return */
468 wait_for_completion(&cpu_running);
459 return 0; 469 return 0;
460} 470}
461 471
diff --git a/arch/mips/mm/uasm-micromips.c b/arch/mips/mm/uasm-micromips.c
index c28ff53c8da0..cdb5a191b9d5 100644
--- a/arch/mips/mm/uasm-micromips.c
+++ b/arch/mips/mm/uasm-micromips.c
@@ -80,7 +80,7 @@ static const struct insn const insn_table_MM[insn_invalid] = {
80 [insn_jr] = {M(mm_pool32a_op, 0, 0, 0, mm_jalr_op, mm_pool32axf_op), RS}, 80 [insn_jr] = {M(mm_pool32a_op, 0, 0, 0, mm_jalr_op, mm_pool32axf_op), RS},
81 [insn_lb] = {M(mm_lb32_op, 0, 0, 0, 0, 0), RT | RS | SIMM}, 81 [insn_lb] = {M(mm_lb32_op, 0, 0, 0, 0, 0), RT | RS | SIMM},
82 [insn_ld] = {0, 0}, 82 [insn_ld] = {0, 0},
83 [insn_lh] = {M(mm_lh32_op, 0, 0, 0, 0, 0), RS | RS | SIMM}, 83 [insn_lh] = {M(mm_lh32_op, 0, 0, 0, 0, 0), RT | RS | SIMM},
84 [insn_ll] = {M(mm_pool32c_op, 0, 0, (mm_ll_func << 1), 0, 0), RS | RT | SIMM}, 84 [insn_ll] = {M(mm_pool32c_op, 0, 0, (mm_ll_func << 1), 0, 0), RS | RT | SIMM},
85 [insn_lld] = {0, 0}, 85 [insn_lld] = {0, 0},
86 [insn_lui] = {M(mm_pool32i_op, mm_lui_op, 0, 0, 0, 0), RS | SIMM}, 86 [insn_lui] = {M(mm_pool32i_op, mm_lui_op, 0, 0, 0, 0), RS | SIMM},
diff --git a/arch/mips/net/ebpf_jit.c b/arch/mips/net/ebpf_jit.c
index 01b7a87ea678..962b0259b4b6 100644
--- a/arch/mips/net/ebpf_jit.c
+++ b/arch/mips/net/ebpf_jit.c
@@ -1513,7 +1513,7 @@ ld_skb_common:
1513 } 1513 }
1514 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp); 1514 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
1515 if (src < 0) 1515 if (src < 0)
1516 return dst; 1516 return src;
1517 if (BPF_MODE(insn->code) == BPF_XADD) { 1517 if (BPF_MODE(insn->code) == BPF_XADD) {
1518 switch (BPF_SIZE(insn->code)) { 1518 switch (BPF_SIZE(insn->code)) {
1519 case BPF_W: 1519 case BPF_W: