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
Unified · Split
| @@ -286,7 +286,7 @@ extern phys_addr_t (*arch_virt_to_idmap)(unsigned long x); · 285 unmodified lines | ||
| 286 | 286 | */ |
| 287 | 287 | static inline phys_addr_t __virt_to_idmap(unsigned long x) |
| 288 | 288 | { |
| 289 | − if (arch_virt_to_idmap) | |
| 289 | + if (IS_ENABLED(CONFIG_MMU) && arch_virt_to_idmap) | |
| 290 | 290 | return arch_virt_to_idmap(x); |
| 291 | 291 | else |
| 292 | 292 | return __virt_to_phys(x); |
| @@ -818,12 +818,13 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu) · 817 unmodified lines | ||
| 818 | 818 | if (arch_find_n_match_cpu_physical_id(dn, cpu, NULL)) |
| 819 | 819 | break; |
| 820 | 820 | |
| 821 | − of_node_put(dn); | |
| 822 | 821 | if (cpu >= nr_cpu_ids) { |
| 823 | 822 | pr_warn("Failed to find logical CPU for %s\n", |
| 824 | 823 | dn->name); |
| 824 | + of_node_put(dn); | |
| 825 | 825 | break; |
| 826 | 826 | } |
| 827 | + of_node_put(dn); | |
| 827 | 828 | |
| 828 | 829 | irqs[i] = cpu; |
| 829 | 830 | cpumask_set_cpu(cpu, &pmu->supported_cpus); |
| @@ -50,7 +50,7 @@ static void __soft_restart(void *addr) · 49 unmodified lines | ||
| 50 | 50 | flush_cache_all(); |
| 51 | 51 | |
| 52 | 52 | /* Switch to the identity mapping. */ |
| 53 | − phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset); | |
| 53 | + phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset); | |
| 54 | 54 | phys_reset((unsigned long)addr); |
| 55 | 55 | |
| 56 | 56 | /* Should never get here. */ |
| @@ -1971,7 +1971,7 @@ static int extend_iommu_mapping(struct dma_iommu_mapping *mapping) · 1970 unmodified lines | ||
| 1971 | 1971 | { |
| 1972 | 1972 | int next_bitmap; |
| 1973 | 1973 | |
| 1974 | − if (mapping->nr_bitmaps > mapping->extensions) | |
| 1974 | + if (mapping->nr_bitmaps >= mapping->extensions) | |
| 1975 | 1975 | return -EINVAL; |
| 1976 | 1976 | |
| 1977 | 1977 | next_bitmap = mapping->nr_bitmaps; |
| @@ -274,7 +274,10 @@ __v7_ca15mp_setup: · 273 unmodified lines | ||
| 274 | 274 | __v7_b15mp_setup: |
| 275 | 275 | __v7_ca17mp_setup: |
| 276 | 276 | mov r10, #0 |
| 277 | −1: | |
| 277 | +1: adr r12, __v7_setup_stack @ the local stack | |
| 278 | + stmia r12, {r0-r5, lr} @ v7_invalidate_l1 touches r0-r6 | |
| 279 | + bl v7_invalidate_l1 | |
| 280 | + ldmia r12, {r0-r5, lr} | |
| 278 | 281 | #ifdef CONFIG_SMP |
| 279 | 282 | ALT_SMP(mrc p15, 0, r0, c1, c0, 1) |
| 280 | 283 | ALT_UP(mov r0, #(1 << 6)) @ fake it for UP |
| @@ -283,7 +286,7 @@ __v7_ca17mp_setup: · 2 unmodified lines | ||
| 283 | 286 | orreq r0, r0, r10 @ Enable CPU-specific SMP bits |
| 284 | 287 | mcreq p15, 0, r0, c1, c0, 1 |
| 285 | 288 | #endif |
| 286 | − b __v7_setup | |
| 289 | + b __v7_setup_cont | |
| 287 | 290 | |
| 288 | 291 | /* |
| 289 | 292 | * Errata: |
| @@ -413,10 +416,11 @@ __v7_pj4b_setup: · 123 unmodified lines | ||
| 413 | 416 | |
| 414 | 417 | __v7_setup: |
| 415 | 418 | adr r12, __v7_setup_stack @ the local stack |
| 416 | − stmia r12, {r0-r5, r7, r9, r11, lr} | |
| 419 | + stmia r12, {r0-r5, lr} @ v7_invalidate_l1 touches r0-r6 | |
| 417 | 420 | bl v7_invalidate_l1 |
| 418 | − ldmia r12, {r0-r5, r7, r9, r11, lr} | |
| 421 | + ldmia r12, {r0-r5, lr} | |
| 419 | 422 | |
| 423 | +__v7_setup_cont: | |
| 420 | 424 | and r0, r9, #0xff000000 @ ARM? |
| 421 | 425 | teq r0, #0x41000000 |
| 422 | 426 | bne __errata_finish |
| @@ -480,7 +484,7 @@ ENDPROC(__v7_setup) · 57 unmodified lines | ||
| 480 | 484 | |
| 481 | 485 | .align 2 |
| 482 | 486 | __v7_setup_stack: |
| 483 | − .space 4 * 11 @ 11 registers | |
| 487 | + .space 4 * 7 @ 12 registers | |
| 484 | 488 | |
| 485 | 489 | __INITDATA |
| 486 | 490 | |