• Deepak Saxena's avatar
    [ARM] 2853/1: Make alloc_init_supersection() work with 36-bit mappings · 083bc6b3
    Deepak Saxena authored
    Patch from Deepak Saxena
    
    Working on adding support for 36-bit static mappings for ARMv6 and
    Intel's XSC3 core and noticed that alloc_init_supersection currently
    increments the phys addr by 1MB on each of the 16 iterations and then
    forces alignment to supersection size (16MB).  This is really uneeded
    b/c we have already forced the phys address to be 16MB aligned in
    create_mapping(). Furthermore, this breaks 36-bit addressing b/c bits
    [23:20] of the PMD contain bits [35:32] of the physical address and
    the masking causes us to loose those bits thus ending up with an
    incorrect virt -> phys translation.  The other option is to have an
    alloc_init_supersection36.
    Tested on Intel IXP2350 CPU with 36-bit static I/O mappings.
    Signed-off-by: default avatarDeepak Saxena <dsaxena@plexity.net>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    083bc6b3
mm-armv.c 17.1 KB