Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7b9c7b4d07fd8981193a2c4ecb650566f42d1219
Commit:     7b9c7b4d07fd8981193a2c4ecb650566f42d1219
Parent:     1f750a782c0e9593a8d0981ea972f22334980955
Author:     Russell King <[EMAIL PROTECTED]>
AuthorDate: Wed Jul 4 21:16:33 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Wed Jul 4 21:16:33 2007 +0100

    [ARM] Fix non-page aligned boot time mappings
    
    AT91SAM9260 stopped booting with the recent changes to MM
    initialisation - it was asking for a non-aligned virtual address
    which caused loops to be non-terminal.  Fix this by rounding
    virtual addresses down, but remember to include the offset in
    the length, and round the length up to the following page.
    
    This means that asking for a mapping of 4K starting at 2K into
    a page maps two pages as one would expect.
    
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mm/mmu.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 02e050a..3b5e47d 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -527,9 +527,9 @@ void __init create_mapping(struct map_desc *md)
                return;
        }
 
-       addr = md->virtual;
+       addr = md->virtual & PAGE_MASK;
        phys = (unsigned long)__pfn_to_phys(md->pfn);
-       length = PAGE_ALIGN(md->length);
+       length = PAGE_ALIGN(md->length + (md->virtual & ~PAGE_MASK));
 
        if (type->prot_l1 == 0 && ((addr | phys | length) & ~SECTION_MASK)) {
                printk(KERN_WARNING "BUG: map for 0x%08lx at 0x%08lx can not "
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to