From: Russell King Date: Thu, 3 Apr 2014 23:33:32 +0000 (+0100) Subject: Merge branches 'amba', 'fixes', 'misc', 'mmci', 'unstable/omap-dma' and 'unstable... X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=95959e6a06720834fc80a210e37898341c63cb91;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git Merge branches 'amba', 'fixes', 'misc', 'mmci', 'unstable/omap-dma' and 'unstable/sa11x0' into for-next --- 95959e6a06720834fc80a210e37898341c63cb91 diff --cc arch/arm/include/asm/memory.h index 8756e4bcdba0,4afb376d9c7c,2438d72cf4e6,8756e4bcdba0,8756e4bcdba0,9ecccc865046..02fa2558f662 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h @@@@@@@ -104,10 -105,6 -104,10 -104,10 -104,10 -108,10 +105,6 @@@@@@@ #define END_MEM (UL(CONFIG_DRAM_BASE) + CONFIG_DRAM_SIZE) #endif - ----#ifndef PAGE_OFFSET - --- #define PAGE_OFFSET PLAT_PHYS_OFFSET -#define PAGE_OFFSET (PHYS_OFFSET) - ----#endif - ---- /* * The module can be at any place in ram in nommu mode. */ @@@@@@@ -245,8 -242,8 -258,9 -245,8 -245,8 -239,6 +255,9 @@@@@@@ static inline unsigned long __phys_to_v #else +#define PHYS_OFFSET PLAT_PHYS_OFFSET ++ +++#define PHYS_PFN_OFFSET ((unsigned long)(PHYS_OFFSET >> PAGE_SHIFT)) + static inline phys_addr_t __virt_to_phys(unsigned long x) { return (phys_addr_t)x - PAGE_OFFSET + PHYS_OFFSET; @@@@@@@ -257,19 -254,19 -271,12 -257,19 -257,19 -249,30 +268,12 @@@@@@@ static inline unsigned long __phys_to_v return x - PHYS_OFFSET + PAGE_OFFSET; } -- ---#endif -- ---#endif -#endif /* __ASSEMBLY__ */ ++ +++#define virt_to_pfn(kaddr) \ ++ +++ ((((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT) + \ ++ +++ PHYS_PFN_OFFSET) -- -- /* -- -- * PFNs are used to describe any physical page; this means -- -- * PFN 0 == physical address 0. -- -- * -- -- * This is the PFN of the first RAM page in the kernel -- -- * direct-mapped view. We assume this is the first page -- -- * of RAM in the mem_map as well. -- -- */ -- -- #define PHYS_PFN_OFFSET ((unsigned long)(PHYS_OFFSET >> PAGE_SHIFT)) -#ifndef PHYS_OFFSET -#ifdef PLAT_PHYS_OFFSET -#define PHYS_OFFSET PLAT_PHYS_OFFSET -#else -#define PHYS_OFFSET UL(CONFIG_PHYS_OFFSET) -#endif ++ ++ #endif -#ifndef __ASSEMBLY__ - -/* - * PFNs are used to describe any physical page; this means - * PFN 0 == physical address 0. - * - * This is the PFN of the first RAM page in the kernel - * direct-mapped view. We assume this is the first page - * of RAM in the mem_map as well. - */ -#define PHYS_PFN_OFFSET ((unsigned long)(PHYS_OFFSET >> PAGE_SHIFT)) - /* * These are *only* valid on the kernel direct mapped RAM memory. * Note: Drivers should NOT use these. They are the wrong @@@@@@@ -346,9 -343,9 -353,9 -346,9 -346,9 -349,8 +350,9 @@@@@@@ static inline __deprecated void *bus_to */ #define ARCH_PFN_OFFSET PHYS_PFN_OFFSET -- ---#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) -#define virt_addr_valid(kaddr) ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) ++ +++#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr)) +#define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) \ -- -- && pfn_valid(__pa(kaddr) >> PAGE_SHIFT) ) ++ +++ && pfn_valid(virt_to_pfn(kaddr))) #endif diff --cc arch/arm/kernel/setup.c index b0df9761de6d,1e8b030dbefd,0a6c70b0b0f9,b0df9761de6d,b0df9761de6d,6a1b8a81b1ae..50e198c1e9c8 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@@@@@@ -731,7 -731,7 -734,7 -731,7 -731,7 -717,7 +734,7 @@@@@@@ static void __init request_standard_res kernel_data.end = virt_to_phys(_end - 1); for_each_memblock(memory, region) { - --- res = memblock_virt_alloc_low(sizeof(*res), 0); - res = alloc_bootmem_low(sizeof(*res)); + ++++ res = memblock_virt_alloc(sizeof(*res), 0); res->name = "System RAM"; res->start = __pfn_to_phys(memblock_region_memory_base_pfn(region)); res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1; diff --cc arch/arm/mm/mmu.c index 4f08c133cc25,a623cb3ad012,6ec07a84f759,4f08c133cc25,4f08c133cc25,580ef2de82d7..b68c6b22e1c8 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@@@@@@ -508,8 -512,9 -508,18 -508,8 -508,8 -458,8 +512,19 @@@@@@@ static void __init build_mem_type_table cp = &cache_policies[cachepolicy]; vecs_pgprot = kern_pgprot = user_pgprot = cp->pte; s2_pgprot = cp->pte_s2; - ---- hyp_device_pgprot = s2_device_pgprot = mem_types[MT_DEVICE].prot_pte; + ++++ hyp_device_pgprot = mem_types[MT_DEVICE].prot_pte; + ++++ s2_device_pgprot = mem_types[MT_DEVICE].prot_pte_s2; + +++ ++ +++ /* ++ +++ * We don't use domains on ARMv6 (since this causes problems with ++ +++ * v6/v7 kernels), so we must use a separate memory type for user ++ +++ * r/o, kernel r/w to map the vectors page. ++ +++ */ ++ +++#ifndef CONFIG_ARM_LPAE ++ +++ if (cpu_arch == CPU_ARCH_ARMv6) ++ +++ vecs_pgprot |= L_PTE_MT_VECTORS; ++ +++#endif + /* * ARMv6 and above have extended page tables. */