diff options
author | Deepak Saxena <dsaxena@plexity.net> | 2005-08-29 17:54:53 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-08-29 17:54:53 -0400 |
commit | 083bc6b3c9b52b5998cc49d4aa2f8f15c2e84e6b (patch) | |
tree | 935852aa0f2bee2d68d704d8007a2524189a3f4f /arch/arm/mm | |
parent | 3e88a579d05e1bb6c51d88f0936e372895edb8ff (diff) |
[ARM] 2853/1: Make alloc_init_supersection() work with 36-bit mappings
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: Deepak Saxena <dsaxena@plexity.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/mm-armv.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 3c655c54e231..4dae00bf7a56 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -275,11 +275,9 @@ alloc_init_supersection(unsigned long virt, unsigned long phys, int prot) | |||
275 | int i; | 275 | int i; |
276 | 276 | ||
277 | for (i = 0; i < 16; i += 1) { | 277 | for (i = 0; i < 16; i += 1) { |
278 | alloc_init_section(virt, phys & SUPERSECTION_MASK, | 278 | alloc_init_section(virt, phys, prot | PMD_SECT_SUPER); |
279 | prot | PMD_SECT_SUPER); | ||
280 | 279 | ||
281 | virt += (PGDIR_SIZE / 2); | 280 | virt += (PGDIR_SIZE / 2); |
282 | phys += (PGDIR_SIZE / 2); | ||
283 | } | 281 | } |
284 | } | 282 | } |
285 | 283 | ||