diff mbox

ARM: LPAE: fix access flag setup in mem_type_table

Message ID 1337018097-27308-1-git-send-email-vitalya@ti.com
State Superseded
Headers show

Commit Message

Vitaly Andrianov May 14, 2012, 5:54 p.m. UTC
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(-)

Comments

Russell King - ARM Linux May 15, 2012, 12:22 p.m. UTC | #1
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.
Marek Szyprowski May 15, 2012, 8:51 p.m. UTC | #2
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 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.

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;a=shortlog;h=refs/heads/for-next-cma

Best regards
diff mbox

Patch

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;