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
This commit is contained in:
Коммит
9d37e6679d
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
{
|
{
|
||||||
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:
|
||||||
__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:
|
||||||
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:
|
||||||
|
|
||||||
__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)
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
__v7_setup_stack:
|
__v7_setup_stack:
|
||||||
.space 4 * 11 @ 11 registers
|
.space 4 * 7 @ 12 registers
|
||||||
|
|
||||||
__INITDATA
|
__INITDATA
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче