[PATCH 1/1] ARM: Fix mapping in alloc_init_section for unaligned addresses.
R, Sricharan
r.sricharan at ti.com
Sat Aug 4 06:04:00 EDT 2012
Hi Russell,
On Sat, Aug 4, 2012 at 2:14 PM, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Sat, Aug 04, 2012 at 12:30:22PM +0530, R Sricharan wrote:
>> When either the start address or end address or physical address
>> to be mapped is unaligned, alloc_init_section creates
>> page granularity mappings. alloc_init_section calls
>> alloc_init_pte which populates one pmd entry and sets up
>> the ptes. But if the size is greater than what can be mapped
>> by one pmd entry, then the rest remains unmapped.
>>
>> The issue becomes visible when LPAE is enabled, where we have
>> the 3 levels with seperate pgd and pmd's.
>> When a static mapping for 3MB is requested, only 2MB is mapped
>> and the remaining 1MB is unmapped. Fixing this here, by looping
>> in to map the entire unaligned address range.
>
> This doesn't look like a nice fix. The implication above is that it's
> only alloc_init_pte() which is affected - so why not add a loop there?
>
Ok, will move the loop to alloc_init_pte instead.
> Remember that pte's cover two sections, not one, so you need to use a
> different increment to sections.
Yes, and that varies when LPAE is enabled. Will take care of this
as well in V2 post.
Thanks,
Sricharan
More information about the linux-arm-kernel
mailing list