提交 9d37e667 编写于 作者: L Linus Torvalds

Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:
 "A small set of ARM fixes for -rc3, most of them not far off
  one-liners, with the exception of fixing the V7 cache invalidation for
  incoming SMP processors which was causing problems for SoCFPGA
  devices"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
  ARM: fix __virt_to_idmap build error on !MMU
  ARM: invalidate L1 before enabling coherency
  ARM: 8404/1: dma-mapping: fix off-by-one error in bitmap size check
  ARM: 8402/1: perf: Don't use of_node after putting it
  ARM: 8400/1: use virt_to_idmap to get phys_reset address
...@@ -286,7 +286,7 @@ extern phys_addr_t (*arch_virt_to_idmap)(unsigned long x); ...@@ -286,7 +286,7 @@ extern phys_addr_t (*arch_virt_to_idmap)(unsigned long x);
*/ */
static inline phys_addr_t __virt_to_idmap(unsigned long x) static inline phys_addr_t __virt_to_idmap(unsigned long x)
{ {
if (arch_virt_to_idmap) if (IS_ENABLED(CONFIG_MMU) && arch_virt_to_idmap)
return arch_virt_to_idmap(x); return arch_virt_to_idmap(x);
else else
return __virt_to_phys(x); return __virt_to_phys(x);
......
...@@ -818,12 +818,13 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu) ...@@ -818,12 +818,13 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu)
if (arch_find_n_match_cpu_physical_id(dn, cpu, NULL)) if (arch_find_n_match_cpu_physical_id(dn, cpu, NULL))
break; break;
of_node_put(dn);
if (cpu >= nr_cpu_ids) { if (cpu >= nr_cpu_ids) {
pr_warn("Failed to find logical CPU for %s\n", pr_warn("Failed to find logical CPU for %s\n",
dn->name); dn->name);
of_node_put(dn);
break; break;
} }
of_node_put(dn);
irqs[i] = cpu; irqs[i] = cpu;
cpumask_set_cpu(cpu, &pmu->supported_cpus); cpumask_set_cpu(cpu, &pmu->supported_cpus);
......
...@@ -50,7 +50,7 @@ static void __soft_restart(void *addr) ...@@ -50,7 +50,7 @@ static void __soft_restart(void *addr)
flush_cache_all(); flush_cache_all();
/* Switch to the identity mapping. */ /* Switch to the identity mapping. */
phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset); phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset);
phys_reset((unsigned long)addr); phys_reset((unsigned long)addr);
/* Should never get here. */ /* Should never get here. */
......
...@@ -1971,7 +1971,7 @@ static int extend_iommu_mapping(struct dma_iommu_mapping *mapping) ...@@ -1971,7 +1971,7 @@ static int extend_iommu_mapping(struct dma_iommu_mapping *mapping)
{ {
int next_bitmap; int next_bitmap;
if (mapping->nr_bitmaps > mapping->extensions) if (mapping->nr_bitmaps >= mapping->extensions)
return -EINVAL; return -EINVAL;
next_bitmap = mapping->nr_bitmaps; next_bitmap = mapping->nr_bitmaps;
......
...@@ -274,7 +274,10 @@ __v7_ca15mp_setup: ...@@ -274,7 +274,10 @@ __v7_ca15mp_setup:
__v7_b15mp_setup: __v7_b15mp_setup:
__v7_ca17mp_setup: __v7_ca17mp_setup:
mov r10, #0 mov r10, #0
1: 1: adr r12, __v7_setup_stack @ the local stack
stmia r12, {r0-r5, lr} @ v7_invalidate_l1 touches r0-r6
bl v7_invalidate_l1
ldmia r12, {r0-r5, lr}
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
ALT_SMP(mrc p15, 0, r0, c1, c0, 1) ALT_SMP(mrc p15, 0, r0, c1, c0, 1)
ALT_UP(mov r0, #(1 << 6)) @ fake it for UP ALT_UP(mov r0, #(1 << 6)) @ fake it for UP
...@@ -283,7 +286,7 @@ __v7_ca17mp_setup: ...@@ -283,7 +286,7 @@ __v7_ca17mp_setup:
orreq r0, r0, r10 @ Enable CPU-specific SMP bits orreq r0, r0, r10 @ Enable CPU-specific SMP bits
mcreq p15, 0, r0, c1, c0, 1 mcreq p15, 0, r0, c1, c0, 1
#endif #endif
b __v7_setup b __v7_setup_cont
/* /*
* Errata: * Errata:
...@@ -413,10 +416,11 @@ __v7_pj4b_setup: ...@@ -413,10 +416,11 @@ __v7_pj4b_setup:
__v7_setup: __v7_setup:
adr r12, __v7_setup_stack @ the local stack adr r12, __v7_setup_stack @ the local stack
stmia r12, {r0-r5, r7, r9, r11, lr} stmia r12, {r0-r5, lr} @ v7_invalidate_l1 touches r0-r6
bl v7_invalidate_l1 bl v7_invalidate_l1
ldmia r12, {r0-r5, r7, r9, r11, lr} ldmia r12, {r0-r5, lr}
__v7_setup_cont:
and r0, r9, #0xff000000 @ ARM? and r0, r9, #0xff000000 @ ARM?
teq r0, #0x41000000 teq r0, #0x41000000
bne __errata_finish bne __errata_finish
...@@ -480,7 +484,7 @@ ENDPROC(__v7_setup) ...@@ -480,7 +484,7 @@ ENDPROC(__v7_setup)
.align 2 .align 2
__v7_setup_stack: __v7_setup_stack:
.space 4 * 11 @ 11 registers .space 4 * 7 @ 12 registers
__INITDATA __INITDATA
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册