A zero value for prot_sect in the memory types table implies that section mappings should never be created for the memory type in question. This is checked for in alloc_init_section().
With LPAE, we set a bit to mask access flag faults for kernel mappings. This breaks the aforementioned (!prot_sect) check in alloc_init_section().
This patch fixes this bug by first checking for a non-zero prot_sect before setting the PMD_SECT_AF flag.
Signed-off-by: Vitaly Andrianov vitalya@ti.com
Acked-by: Catalin Marinas catalin.marinas@arm.com --- arch/arm/mm/mmu.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index b9fbec2..1e16b20 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -494,7 +494,8 @@ static void __init build_mem_type_table(void) */ for (i = 0; i < ARRAY_SIZE(mem_types); i++) { mem_types[i].prot_pte |= PTE_EXT_AF; - mem_types[i].prot_sect |= PMD_SECT_AF; + if (mem_types[i].prot_sect) + mem_types[i].prot_sect |= PMD_SECT_AF; } kern_pgprot |= PTE_EXT_AF; vecs_pgprot |= PTE_EXT_AF;
On Mon, May 14, 2012 at 01:54:57PM -0400, Vitaly Andrianov wrote:
A zero value for prot_sect in the memory types table implies that section mappings should never be created for the memory type in question. This is checked for in alloc_init_section().
With LPAE, we set a bit to mask access flag faults for kernel mappings. This breaks the aforementioned (!prot_sect) check in alloc_init_section().
This patch fixes this bug by first checking for a non-zero prot_sect before setting the PMD_SECT_AF flag.
Signed-off-by: Vitaly Andrianov vitalya@ti.com
Acked-by: Catalin Marinas catalin.marinas@arm.com
Please put this in the patch system. No blank line is needed between s-off-by and acked-by.
Hello,
On 5/15/2012 2:22 PM, Russell King - ARM Linux wrote:
On Mon, May 14, 2012 at 01:54:57PM -0400, Vitaly Andrianov wrote:
A zero value for prot_sect in the memory types table implies that section mappings should never be created for the memory type in question. This is checked for in alloc_init_section().
With LPAE, we set a bit to mask access flag faults for kernel mappings. This breaks the aforementioned (!prot_sect) check in alloc_init_section().
This patch fixes this bug by first checking for a non-zero prot_sect before setting the PMD_SECT_AF flag.
Signed-off-by: Vitaly Andrianovvitalya@ti.com
Acked-by: Catalin Marinascatalin.marinas@arm.com
Please put this in the patch system. No blank line is needed between s-off-by and acked-by.
This patch fixes the issue introduced by adding CMA to ARM architecture which I've pushed for testing to linux-next. I've added it to my for-next-cma branch:
http://git.linaro.org/gitweb?p=people/mszyprowski/linux-dma-mapping.git%3Ba=...
Best regards
linaro-mm-sig@lists.linaro.org