diff options
-rw-r--r-- | arch/arm/kernel/entry-common.S | 4 | ||||
-rw-r--r-- | arch/arm/kernel/perf_event_cpu.c | 9 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 20 |
3 files changed, 18 insertions, 15 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index f8ccc21fa032..4e7f40c577e6 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -33,7 +33,9 @@ ret_fast_syscall: | |||
33 | UNWIND(.fnstart ) | 33 | UNWIND(.fnstart ) |
34 | UNWIND(.cantunwind ) | 34 | UNWIND(.cantunwind ) |
35 | disable_irq @ disable interrupts | 35 | disable_irq @ disable interrupts |
36 | ldr r1, [tsk, #TI_FLAGS] | 36 | ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing |
37 | tst r1, #_TIF_SYSCALL_WORK | ||
38 | bne __sys_trace_return | ||
37 | tst r1, #_TIF_WORK_MASK | 39 | tst r1, #_TIF_WORK_MASK |
38 | bne fast_work_pending | 40 | bne fast_work_pending |
39 | asm_trace_hardirqs_on | 41 | asm_trace_hardirqs_on |
diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index 213919ba326f..3b8c2833c537 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c | |||
@@ -304,16 +304,17 @@ static int probe_current_pmu(struct arm_pmu *pmu) | |||
304 | static int of_pmu_irq_cfg(struct platform_device *pdev) | 304 | static int of_pmu_irq_cfg(struct platform_device *pdev) |
305 | { | 305 | { |
306 | int i, irq; | 306 | int i, irq; |
307 | int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); | 307 | int *irqs; |
308 | |||
309 | if (!irqs) | ||
310 | return -ENOMEM; | ||
311 | 308 | ||
312 | /* Don't bother with PPIs; they're already affine */ | 309 | /* Don't bother with PPIs; they're already affine */ |
313 | irq = platform_get_irq(pdev, 0); | 310 | irq = platform_get_irq(pdev, 0); |
314 | if (irq >= 0 && irq_is_percpu(irq)) | 311 | if (irq >= 0 && irq_is_percpu(irq)) |
315 | return 0; | 312 | return 0; |
316 | 313 | ||
314 | irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); | ||
315 | if (!irqs) | ||
316 | return -ENOMEM; | ||
317 | |||
317 | for (i = 0; i < pdev->num_resources; ++i) { | 318 | for (i = 0; i < pdev->num_resources; ++i) { |
318 | struct device_node *dn; | 319 | struct device_node *dn; |
319 | int cpu; | 320 | int cpu; |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 4e6ef896c619..7186382672b5 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -1112,22 +1112,22 @@ void __init sanity_check_meminfo(void) | |||
1112 | } | 1112 | } |
1113 | 1113 | ||
1114 | /* | 1114 | /* |
1115 | * Find the first non-section-aligned page, and point | 1115 | * Find the first non-pmd-aligned page, and point |
1116 | * memblock_limit at it. This relies on rounding the | 1116 | * memblock_limit at it. This relies on rounding the |
1117 | * limit down to be section-aligned, which happens at | 1117 | * limit down to be pmd-aligned, which happens at the |
1118 | * the end of this function. | 1118 | * end of this function. |
1119 | * | 1119 | * |
1120 | * With this algorithm, the start or end of almost any | 1120 | * With this algorithm, the start or end of almost any |
1121 | * bank can be non-section-aligned. The only exception | 1121 | * bank can be non-pmd-aligned. The only exception is |
1122 | * is that the start of the bank 0 must be section- | 1122 | * that the start of the bank 0 must be section- |
1123 | * aligned, since otherwise memory would need to be | 1123 | * aligned, since otherwise memory would need to be |
1124 | * allocated when mapping the start of bank 0, which | 1124 | * allocated when mapping the start of bank 0, which |
1125 | * occurs before any free memory is mapped. | 1125 | * occurs before any free memory is mapped. |
1126 | */ | 1126 | */ |
1127 | if (!memblock_limit) { | 1127 | if (!memblock_limit) { |
1128 | if (!IS_ALIGNED(block_start, SECTION_SIZE)) | 1128 | if (!IS_ALIGNED(block_start, PMD_SIZE)) |
1129 | memblock_limit = block_start; | 1129 | memblock_limit = block_start; |
1130 | else if (!IS_ALIGNED(block_end, SECTION_SIZE)) | 1130 | else if (!IS_ALIGNED(block_end, PMD_SIZE)) |
1131 | memblock_limit = arm_lowmem_limit; | 1131 | memblock_limit = arm_lowmem_limit; |
1132 | } | 1132 | } |
1133 | 1133 | ||
@@ -1137,12 +1137,12 @@ void __init sanity_check_meminfo(void) | |||
1137 | high_memory = __va(arm_lowmem_limit - 1) + 1; | 1137 | high_memory = __va(arm_lowmem_limit - 1) + 1; |
1138 | 1138 | ||
1139 | /* | 1139 | /* |
1140 | * Round the memblock limit down to a section size. This | 1140 | * Round the memblock limit down to a pmd size. This |
1141 | * helps to ensure that we will allocate memory from the | 1141 | * helps to ensure that we will allocate memory from the |
1142 | * last full section, which should be mapped. | 1142 | * last full pmd, which should be mapped. |
1143 | */ | 1143 | */ |
1144 | if (memblock_limit) | 1144 | if (memblock_limit) |
1145 | memblock_limit = round_down(memblock_limit, SECTION_SIZE); | 1145 | memblock_limit = round_down(memblock_limit, PMD_SIZE); |
1146 | if (!memblock_limit) | 1146 | if (!memblock_limit) |
1147 | memblock_limit = arm_lowmem_limit; | 1147 | memblock_limit = arm_lowmem_limit; |
1148 | 1148 | ||