[ARM] 3016/1: Replace map_desc.physical with map_desc.pfn
authorDeepak Saxena <dsaxena@plexity.net>
Fri, 28 Oct 2005 14:19:11 +0000 (15:19 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 28 Oct 2005 14:19:11 +0000 (15:19 +0100)
Patch from Deepak Saxena

Convert map_desc.physical to map_desc.pfn. This allows us to add
support for 36-bit addressed physical devices in the static maps
without having to resort to u64 variables.

Signed-off-by: Deepak Saxena <dsaxena@plexity.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/init.c
arch/arm/mm/mm-armv.c
include/asm-arm/mach/map.h

index d1f1ec73500f294ecc610652fa101e3efce11a8d..f4496813615ae01dba12cd8dced1a8ea82173c67 100644 (file)
@@ -262,8 +262,8 @@ bootmem_init_node(int node, int initrd_node, struct meminfo *mi)
                if (end_pfn < end)
                        end_pfn = end;
 
-               map.physical = mi->bank[i].start;
-               map.virtual = __phys_to_virt(map.physical);
+               map.pfn = __phys_to_pfn(mi->bank[i].start);
+               map.virtual = __phys_to_virt(mi->bank[i].start);
                map.length = mi->bank[i].size;
                map.type = MT_MEMORY;
 
@@ -365,7 +365,7 @@ static void __init bootmem_init(struct meminfo *mi)
 
 #ifdef CONFIG_XIP_KERNEL
 #error needs fixing
-       p->physical   = CONFIG_XIP_PHYS_ADDR & PMD_MASK;
+       p->pfn        = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & PMD_MASK);
        p->virtual    = (unsigned long)&_stext & PMD_MASK;
        p->length     = ((unsigned long)&_etext - p->virtual + ~PMD_MASK) & PMD_MASK;
        p->type       = MT_ROM;
@@ -439,14 +439,14 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
         * Map the cache flushing regions.
         */
 #ifdef FLUSH_BASE
-       map.physical = FLUSH_BASE_PHYS;
+       map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS);
        map.virtual = FLUSH_BASE;
        map.length = PGDIR_SIZE;
        map.type = MT_CACHECLEAN;
        create_mapping(&map);
 #endif
 #ifdef FLUSH_BASE_MINICACHE
-       map.physical = FLUSH_BASE_PHYS + PGDIR_SIZE;
+       map.pfn = __phys_to_pfn(FLUSH_BASE_PHYS + PGDIR_SIZE);
        map.virtual = FLUSH_BASE_MINICACHE;
        map.length = PGDIR_SIZE;
        map.type = MT_MINICLEAN;
@@ -464,7 +464,7 @@ static void __init devicemaps_init(struct machine_desc *mdesc)
         * location (0xffff0000).  If we aren't using high-vectors, also
         * create a mapping at the low-vectors virtual address.
         */
-       map.physical = virt_to_phys(vectors);
+       map.pfn = __phys_to_pfn(virt_to_phys(vectors));
        map.virtual = 0xffff0000;
        map.length = PAGE_SIZE;
        map.type = MT_HIGH_VECTORS;
index c626361c0f5e9797d40f8833fec889675eb6f5bd..64db10e806b37dd05641832bff93501dfaf72f52 100644 (file)
@@ -483,7 +483,7 @@ void __init create_mapping(struct map_desc *md)
        if (md->virtual != vectors_base() && md->virtual < TASK_SIZE) {
                printk(KERN_WARNING "BUG: not creating mapping for "
                       "0x%08lx at 0x%08lx in user region\n",
-                      md->physical, md->virtual);
+                      __pfn_to_phys(md->pfn), md->virtual);
                return;
        }
 
@@ -491,7 +491,7 @@ void __init create_mapping(struct map_desc *md)
            md->virtual >= PAGE_OFFSET && md->virtual < VMALLOC_END) {
                printk(KERN_WARNING "BUG: mapping for 0x%08lx at 0x%08lx "
                       "overlaps vmalloc space\n",
-                      md->physical, md->virtual);
+                      __pfn_to_phys(md->pfn), md->virtual);
        }
 
        domain    = mem_types[md->type].domain;
@@ -500,14 +500,14 @@ void __init create_mapping(struct map_desc *md)
        prot_sect = mem_types[md->type].prot_sect | PMD_DOMAIN(domain);
 
        virt   = md->virtual;
-       off    = md->physical - virt;
+       off    = __pfn_to_phys(md->pfn) - virt;
        length = md->length;
 
        if (mem_types[md->type].prot_l1 == 0 &&
            (virt & 0xfffff || (virt + off) & 0xfffff || (virt + length) & 0xfffff)) {
                printk(KERN_WARNING "BUG: map for 0x%08lx at 0x%08lx can not "
                       "be mapped using pages, ignoring.\n",
-                      md->physical, md->virtual);
+                      __pfn_to_phys(md->pfn), md->virtual);
                return;
        }
 
index 9ac47cf8d2e4e8fa416e516b55473b5ce7e2c144..0619522bd92684e599c349e11809ac62403bc349 100644 (file)
@@ -11,7 +11,7 @@
  */
 struct map_desc {
        unsigned long virtual;
-       unsigned long physical;
+       unsigned long pfn;
        unsigned long length;
        unsigned int type;
 };
@@ -27,6 +27,9 @@ struct meminfo;
 #define MT_ROM                 6
 #define MT_IXP2000_DEVICE      7
 
+#define        __phys_to_pfn(paddr)    (paddr >> PAGE_SHIFT)
+#define        __pfn_to_phys(pfn)      (pfn << PAGE_SHIFT)
+
 extern void create_memmap_holes(struct meminfo *);
 extern void memtable_init(struct meminfo *);
 extern void iotable_init(struct map_desc *, int);