projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'gcc-plugins-v4.9-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git]
/
arch
/
mips
/
kernel
/
mips-cpc.c
diff --git
a/arch/mips/kernel/mips-cpc.c
b/arch/mips/kernel/mips-cpc.c
index
566b8d2
..
2a45867
100644
(file)
--- a/
arch/mips/kernel/mips-cpc.c
+++ b/
arch/mips/kernel/mips-cpc.c
@@
-52,7
+52,7
@@
static phys_addr_t mips_cpc_phys_base(void)
int mips_cpc_probe(void)
{
phys_addr_t addr;
int mips_cpc_probe(void)
{
phys_addr_t addr;
- unsigned cpu;
+ unsigned
int
cpu;
for_each_possible_cpu(cpu)
spin_lock_init(&per_cpu(cpc_core_lock, cpu));
for_each_possible_cpu(cpu)
spin_lock_init(&per_cpu(cpc_core_lock, cpu));
@@
-70,7
+70,12
@@
int mips_cpc_probe(void)
void mips_cpc_lock_other(unsigned int core)
{
void mips_cpc_lock_other(unsigned int core)
{
- unsigned curr_core;
+ unsigned int curr_core;
+
+ if (mips_cm_revision() >= CM_REV_CM3)
+ /* Systems with CM >= 3 lock the CPC via mips_cm_lock_other */
+ return;
+
preempt_disable();
curr_core = current_cpu_data.core;
spin_lock_irqsave(&per_cpu(cpc_core_lock, curr_core),
preempt_disable();
curr_core = current_cpu_data.core;
spin_lock_irqsave(&per_cpu(cpc_core_lock, curr_core),
@@
-86,7
+91,13
@@
void mips_cpc_lock_other(unsigned int core)
void mips_cpc_unlock_other(void)
{
void mips_cpc_unlock_other(void)
{
- unsigned curr_core = current_cpu_data.core;
+ unsigned int curr_core;
+
+ if (mips_cm_revision() >= CM_REV_CM3)
+ /* Systems with CM >= 3 lock the CPC via mips_cm_lock_other */
+ return;
+
+ curr_core = current_cpu_data.core;
spin_unlock_irqrestore(&per_cpu(cpc_core_lock, curr_core),
per_cpu(cpc_core_lock_flags, curr_core));
preempt_enable();
spin_unlock_irqrestore(&per_cpu(cpc_core_lock, curr_core),
per_cpu(cpc_core_lock_flags, curr_core));
preempt_enable();