Commit 5b3fcfed35735af507be36a4c3f3bbeb9bc7bbf6
Exists in
master
and in
6 other branches
Merge branch 'fixes' of git://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-arm
* 'fixes' of git://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-arm: ARM: sa11x0: assabet: fix build warning ARM: Add arm_memblock_steal() to allocate memory away from the kernel ARM: 7275/1: LPAE: Check the CPU support for the long descriptor format ARM: 7274/1: NUC900: Rename nuc900-audio platform device to nuc900-ac97 ARM: 7272/1: S3C24XX: Fix build error for missing <mach/system-reset.h> ARM: 7271/1: Fix typo in conversion of ARCH_NR_GPIOS to Kconfig
Showing 18 changed files Side-by-side Diff
- arch/arm/include/asm/gpio.h
- arch/arm/include/asm/memblock.h
- arch/arm/kernel/head.S
- arch/arm/mach-imx/mach-mx31_3ds.c
- arch/arm/mach-imx/mach-mx31moboard.c
- arch/arm/mach-imx/mach-pcm037.c
- arch/arm/mach-omap2/Kconfig
- arch/arm/mach-omap2/omap-secure.c
- arch/arm/mach-omap2/omap4-common.c
- arch/arm/mach-sa1100/assabet.c
- arch/arm/mach-w90x900/clksel.c
- arch/arm/mach-w90x900/cpu.c
- arch/arm/mach-w90x900/dev.c
- arch/arm/mach-w90x900/mfp.c
- arch/arm/mm/init.c
- arch/arm/plat-omap/devices.c
- arch/arm/plat-s3c24xx/cpu.c
- sound/soc/nuc900/nuc900-ac97.c
arch/arm/include/asm/gpio.h
arch/arm/include/asm/memblock.h
arch/arm/kernel/head.S
... | ... | @@ -99,6 +99,14 @@ |
99 | 99 | THUMB( it eq ) @ force fixup-able long branch encoding |
100 | 100 | beq __error_p @ yes, error 'p' |
101 | 101 | |
102 | +#ifdef CONFIG_ARM_LPAE | |
103 | + mrc p15, 0, r3, c0, c1, 4 @ read ID_MMFR0 | |
104 | + and r3, r3, #0xf @ extract VMSA support | |
105 | + cmp r3, #5 @ long-descriptor translation table format? | |
106 | + THUMB( it lo ) @ force fixup-able long branch encoding | |
107 | + blo __error_p @ only classic page table format | |
108 | +#endif | |
109 | + | |
102 | 110 | #ifndef CONFIG_XIP_KERNEL |
103 | 111 | adr r3, 2f |
104 | 112 | ldmia r3, {r4, r8} |
arch/arm/mach-imx/mach-mx31_3ds.c
... | ... | @@ -36,6 +36,7 @@ |
36 | 36 | #include <asm/mach/time.h> |
37 | 37 | #include <asm/memory.h> |
38 | 38 | #include <asm/mach/map.h> |
39 | +#include <asm/memblock.h> | |
39 | 40 | #include <mach/common.h> |
40 | 41 | #include <mach/iomux-mx3.h> |
41 | 42 | #include <mach/3ds_debugboard.h> |
42 | 43 | |
... | ... | @@ -754,10 +755,8 @@ |
754 | 755 | static void __init mx31_3ds_reserve(void) |
755 | 756 | { |
756 | 757 | /* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ |
757 | - mx3_camera_base = memblock_alloc(MX31_3DS_CAMERA_BUF_SIZE, | |
758 | + mx3_camera_base = arm_memblock_steal(MX31_3DS_CAMERA_BUF_SIZE, | |
758 | 759 | MX31_3DS_CAMERA_BUF_SIZE); |
759 | - memblock_free(mx3_camera_base, MX31_3DS_CAMERA_BUF_SIZE); | |
760 | - memblock_remove(mx3_camera_base, MX31_3DS_CAMERA_BUF_SIZE); | |
761 | 760 | } |
762 | 761 | |
763 | 762 | MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)") |
arch/arm/mach-imx/mach-mx31moboard.c
... | ... | @@ -41,6 +41,7 @@ |
41 | 41 | #include <asm/mach/arch.h> |
42 | 42 | #include <asm/mach/time.h> |
43 | 43 | #include <asm/mach/map.h> |
44 | +#include <asm/memblock.h> | |
44 | 45 | #include <mach/board-mx31moboard.h> |
45 | 46 | #include <mach/common.h> |
46 | 47 | #include <mach/hardware.h> |
47 | 48 | |
... | ... | @@ -584,10 +585,8 @@ |
584 | 585 | static void __init mx31moboard_reserve(void) |
585 | 586 | { |
586 | 587 | /* reserve 4 MiB for mx3-camera */ |
587 | - mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE, | |
588 | + mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE, | |
588 | 589 | MX3_CAMERA_BUF_SIZE); |
589 | - memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | |
590 | - memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | |
591 | 590 | } |
592 | 591 | |
593 | 592 | MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard") |
arch/arm/mach-imx/mach-pcm037.c
... | ... | @@ -39,6 +39,7 @@ |
39 | 39 | #include <asm/mach/arch.h> |
40 | 40 | #include <asm/mach/time.h> |
41 | 41 | #include <asm/mach/map.h> |
42 | +#include <asm/memblock.h> | |
42 | 43 | #include <mach/common.h> |
43 | 44 | #include <mach/hardware.h> |
44 | 45 | #include <mach/iomux-mx3.h> |
45 | 46 | |
... | ... | @@ -680,10 +681,8 @@ |
680 | 681 | static void __init pcm037_reserve(void) |
681 | 682 | { |
682 | 683 | /* reserve 4 MiB for mx3-camera */ |
683 | - mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE, | |
684 | + mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE, | |
684 | 685 | MX3_CAMERA_BUF_SIZE); |
685 | - memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | |
686 | - memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | |
687 | 686 | } |
688 | 687 | |
689 | 688 | MACHINE_START(PCM037, "Phytec Phycore pcm037") |
arch/arm/mach-omap2/Kconfig
... | ... | @@ -366,8 +366,8 @@ |
366 | 366 | going on could result in system crashes; |
367 | 367 | |
368 | 368 | config OMAP4_ERRATA_I688 |
369 | - bool "OMAP4 errata: Async Bridge Corruption" | |
370 | - depends on ARCH_OMAP4 | |
369 | + bool "OMAP4 errata: Async Bridge Corruption (BROKEN)" | |
370 | + depends on ARCH_OMAP4 && BROKEN | |
371 | 371 | select ARCH_HAS_BARRIERS |
372 | 372 | help |
373 | 373 | If a data is stalled inside asynchronous bridge because of back |
arch/arm/mach-omap2/omap-secure.c
... | ... | @@ -16,6 +16,7 @@ |
16 | 16 | #include <linux/memblock.h> |
17 | 17 | |
18 | 18 | #include <asm/cacheflush.h> |
19 | +#include <asm/memblock.h> | |
19 | 20 | |
20 | 21 | #include <mach/omap-secure.h> |
21 | 22 | |
22 | 23 | |
... | ... | @@ -57,20 +58,10 @@ |
57 | 58 | /* Allocate the memory to save secure ram */ |
58 | 59 | int __init omap_secure_ram_reserve_memblock(void) |
59 | 60 | { |
60 | - phys_addr_t paddr; | |
61 | 61 | u32 size = OMAP_SECURE_RAM_STORAGE; |
62 | 62 | |
63 | 63 | size = ALIGN(size, SZ_1M); |
64 | - paddr = memblock_alloc(size, SZ_1M); | |
65 | - if (!paddr) { | |
66 | - pr_err("%s: failed to reserve %x bytes\n", | |
67 | - __func__, size); | |
68 | - return -ENOMEM; | |
69 | - } | |
70 | - memblock_free(paddr, size); | |
71 | - memblock_remove(paddr, size); | |
72 | - | |
73 | - omap_secure_memblock_base = paddr; | |
64 | + omap_secure_memblock_base = arm_memblock_steal(size, SZ_1M); | |
74 | 65 | |
75 | 66 | return 0; |
76 | 67 | } |
arch/arm/mach-omap2/omap4-common.c
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 | #include <asm/hardware/gic.h> |
21 | 21 | #include <asm/hardware/cache-l2x0.h> |
22 | 22 | #include <asm/mach/map.h> |
23 | +#include <asm/memblock.h> | |
23 | 24 | |
24 | 25 | #include <plat/irqs.h> |
25 | 26 | #include <plat/sram.h> |
... | ... | @@ -61,13 +62,8 @@ |
61 | 62 | return -ENODEV; |
62 | 63 | |
63 | 64 | size = ALIGN(PAGE_SIZE, SZ_1M); |
64 | - paddr = memblock_alloc(size, SZ_1M); | |
65 | - if (!paddr) { | |
66 | - pr_err("%s: failed to reserve 4 Kbytes\n", __func__); | |
67 | - return -ENOMEM; | |
68 | - } | |
69 | - memblock_free(paddr, size); | |
70 | - memblock_remove(paddr, size); | |
65 | + paddr = arm_memblock_steal(size, SZ_1M); | |
66 | + | |
71 | 67 | dram_io_desc[0].virtual = OMAP4_DRAM_BARRIER_VA; |
72 | 68 | dram_io_desc[0].pfn = __phys_to_pfn(paddr); |
73 | 69 | dram_io_desc[0].length = size; |
arch/arm/mach-sa1100/assabet.c
... | ... | @@ -280,7 +280,7 @@ |
280 | 280 | int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO); |
281 | 281 | pmd_t *pmd; |
282 | 282 | |
283 | - pmd = pmd_offset(pgd_offset_k(virt), virt); | |
283 | + pmd = pmd_offset(pud_offset(pgd_offset_k(virt), virt), virt); | |
284 | 284 | *pmd = __pmd(phys | prot); |
285 | 285 | flush_pmd_entry(pmd); |
286 | 286 | } |
arch/arm/mach-w90x900/clksel.c
arch/arm/mach-w90x900/cpu.c
... | ... | @@ -79,7 +79,7 @@ |
79 | 79 | |
80 | 80 | static struct clk_lookup nuc900_clkregs[] = { |
81 | 81 | DEF_CLKLOOK(&clk_lcd, "nuc900-lcd", NULL), |
82 | - DEF_CLKLOOK(&clk_audio, "nuc900-audio", NULL), | |
82 | + DEF_CLKLOOK(&clk_audio, "nuc900-ac97", NULL), | |
83 | 83 | DEF_CLKLOOK(&clk_fmi, "nuc900-fmi", NULL), |
84 | 84 | DEF_CLKLOOK(&clk_ms, "nuc900-fmi", "MS"), |
85 | 85 | DEF_CLKLOOK(&clk_sd, "nuc900-fmi", "SD"), |
arch/arm/mach-w90x900/dev.c
... | ... | @@ -501,8 +501,8 @@ |
501 | 501 | |
502 | 502 | }; |
503 | 503 | |
504 | -struct platform_device nuc900_device_audio = { | |
505 | - .name = "nuc900-audio", | |
504 | +struct platform_device nuc900_device_ac97 = { | |
505 | + .name = "nuc900-ac97", | |
506 | 506 | .id = -1, |
507 | 507 | .num_resources = ARRAY_SIZE(nuc900_ac97_resource), |
508 | 508 | .resource = nuc900_ac97_resource, |
... | ... | @@ -523,7 +523,7 @@ |
523 | 523 | &nuc900_device_emc, |
524 | 524 | &nuc900_device_spi, |
525 | 525 | &nuc900_device_wdt, |
526 | - &nuc900_device_audio, | |
526 | + &nuc900_device_ac97, | |
527 | 527 | }; |
528 | 528 | |
529 | 529 | /* Provide adding specific CPU platform devices API */ |
arch/arm/mach-w90x900/mfp.c
... | ... | @@ -155,7 +155,7 @@ |
155 | 155 | } else if (strcmp(dev_id, "nuc900-i2c1") == 0) { |
156 | 156 | mfpen &= ~(GPIOG2TO3); |
157 | 157 | mfpen |= ENI2C1;/*enable i2c1*/ |
158 | - } else if (strcmp(dev_id, "nuc900-audio") == 0) { | |
158 | + } else if (strcmp(dev_id, "nuc900-ac97") == 0) { | |
159 | 159 | mfpen &= ~(GPIOG22TO23); |
160 | 160 | mfpen |= ENAC97;/*enable AC97*/ |
161 | 161 | } else if (strcmp(dev_id, "nuc900-mmc-port1") == 0) { |
arch/arm/mm/init.c
... | ... | @@ -22,6 +22,7 @@ |
22 | 22 | #include <linux/memblock.h> |
23 | 23 | |
24 | 24 | #include <asm/mach-types.h> |
25 | +#include <asm/memblock.h> | |
25 | 26 | #include <asm/prom.h> |
26 | 27 | #include <asm/sections.h> |
27 | 28 | #include <asm/setup.h> |
... | ... | @@ -307,6 +308,21 @@ |
307 | 308 | } |
308 | 309 | #endif |
309 | 310 | |
311 | +static bool arm_memblock_steal_permitted = true; | |
312 | + | |
313 | +phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align) | |
314 | +{ | |
315 | + phys_addr_t phys; | |
316 | + | |
317 | + BUG_ON(!arm_memblock_steal_permitted); | |
318 | + | |
319 | + phys = memblock_alloc(size, align); | |
320 | + memblock_free(phys, size); | |
321 | + memblock_remove(phys, size); | |
322 | + | |
323 | + return phys; | |
324 | +} | |
325 | + | |
310 | 326 | void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc) |
311 | 327 | { |
312 | 328 | int i; |
... | ... | @@ -349,6 +365,7 @@ |
349 | 365 | if (mdesc->reserve) |
350 | 366 | mdesc->reserve(); |
351 | 367 | |
368 | + arm_memblock_steal_permitted = false; | |
352 | 369 | memblock_allow_resize(); |
353 | 370 | memblock_dump_all(); |
354 | 371 | } |
arch/arm/plat-omap/devices.c
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 | #include <mach/hardware.h> |
21 | 21 | #include <asm/mach-types.h> |
22 | 22 | #include <asm/mach/map.h> |
23 | +#include <asm/memblock.h> | |
23 | 24 | |
24 | 25 | #include <plat/tc.h> |
25 | 26 | #include <plat/board.h> |
26 | 27 | |
... | ... | @@ -164,14 +165,12 @@ |
164 | 165 | if (!size) |
165 | 166 | return; |
166 | 167 | |
167 | - paddr = memblock_alloc(size, SZ_1M); | |
168 | + paddr = arm_memblock_steal(size, SZ_1M); | |
168 | 169 | if (!paddr) { |
169 | 170 | pr_err("%s: failed to reserve %x bytes\n", |
170 | 171 | __func__, size); |
171 | 172 | return; |
172 | 173 | } |
173 | - memblock_free(paddr, size); | |
174 | - memblock_remove(paddr, size); | |
175 | 174 | |
176 | 175 | omap_dsp_phys_mempool_base = paddr; |
177 | 176 | } |
arch/arm/plat-s3c24xx/cpu.c
sound/soc/nuc900/nuc900-ac97.c