diff options
Diffstat (limited to 'arch/arm/kernel/smp.c')
| -rw-r--r-- | arch/arm/kernel/smp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 57162af53dc9..577543f3857f 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
| @@ -99,6 +99,7 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
| 99 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | | 99 | *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | |
| 100 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); | 100 | PMD_TYPE_SECT | PMD_SECT_AP_WRITE); |
| 101 | flush_pmd_entry(pmd); | 101 | flush_pmd_entry(pmd); |
| 102 | outer_clean_range(__pa(pmd), __pa(pmd + 1)); | ||
| 102 | 103 | ||
| 103 | /* | 104 | /* |
| 104 | * We need to tell the secondary core where to find | 105 | * We need to tell the secondary core where to find |
| @@ -106,7 +107,8 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
| 106 | */ | 107 | */ |
| 107 | secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; | 108 | secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; |
| 108 | secondary_data.pgdir = virt_to_phys(pgd); | 109 | secondary_data.pgdir = virt_to_phys(pgd); |
| 109 | wmb(); | 110 | __cpuc_flush_dcache_area(&secondary_data, sizeof(secondary_data)); |
| 111 | outer_clean_range(__pa(&secondary_data), __pa(&secondary_data + 1)); | ||
| 110 | 112 | ||
| 111 | /* | 113 | /* |
| 112 | * Now bring the CPU into our world. | 114 | * Now bring the CPU into our world. |
