Re: [RFC/PATCH 1/2] powerpc: unmap_vm_area becomes unmap_kernel_range

2007-05-15 Thread Benjamin Herrenschmidt
On Wed, 2007-05-16 at 13:45 +1000, Benjamin Herrenschmidt wrote:
> This patch renames unmap_vm_area to unmap_kernel_range and make
> it take an explicit range instead of a vm_area struct. This makes
> it more versatile for code that wants to play with kernel page
> tables outside of the standard vmalloc area.
> 
> Signed-off-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]> 

BTW, sorry for the incorrect title, it's not powerpc specific really
(though I want to use the new function from powerpc code)

Ben.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[RFC/PATCH 1/2] powerpc: unmap_vm_area becomes unmap_kernel_range

2007-05-15 Thread Benjamin Herrenschmidt
This patch renames unmap_vm_area to unmap_kernel_range and make
it take an explicit range instead of a vm_area struct. This makes
it more versatile for code that wants to play with kernel page
tables outside of the standard vmalloc area.

Signed-off-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]> 

---

 Documentation/cachetlb.txt   |2 +-
 arch/powerpc/mm/imalloc.c|2 +-
 arch/powerpc/mm/pgtable_64.c |1 -
 include/linux/vmalloc.h  |3 ++-
 mm/vmalloc.c |   10 +-
 5 files changed, 9 insertions(+), 9 deletions(-)

Index: linux-cell/Documentation/cachetlb.txt
===
--- linux-cell.orig/Documentation/cachetlb.txt  2007-05-16 12:56:18.0 
+1000
+++ linux-cell/Documentation/cachetlb.txt   2007-05-16 13:10:00.0 
+1000
@@ -253,7 +253,7 @@ Here are the routines, one by one:
 
The first of these two routines is invoked after map_vm_area()
has installed the page table entries.  The second is invoked
-   before unmap_vm_area() deletes the page table entries.
+   before unmap_kernel_range() deletes the page table entries.
 
 There exists another whole class of cpu cache issues which currently
 require a whole different set of interfaces to handle properly.
Index: linux-cell/arch/powerpc/mm/imalloc.c
===
--- linux-cell.orig/arch/powerpc/mm/imalloc.c   2007-05-16 13:09:52.0 
+1000
+++ linux-cell/arch/powerpc/mm/imalloc.c2007-05-16 13:10:00.0 
+1000
@@ -301,7 +301,7 @@ void im_free(void * addr)
for (p =  ; (tmp = *p) ; p = >next) {
if (tmp->addr == addr) {
*p = tmp->next;
-   unmap_vm_area(tmp);
+   unmap_kernel_range(tmp->addr, tmp->size);
kfree(tmp);
mutex_unlock(_mutex);
return;
Index: linux-cell/arch/powerpc/mm/pgtable_64.c
===
--- linux-cell.orig/arch/powerpc/mm/pgtable_64.c2007-05-16 
13:09:52.0 +1000
+++ linux-cell/arch/powerpc/mm/pgtable_64.c 2007-05-16 13:10:00.0 
+1000
@@ -240,7 +240,6 @@ int __ioremap_explicit(phys_addr_t pa, u
 /*  
  * Unmap an IO region and remove it from imalloc'd list.
  * Access to IO memory should be serialized by driver.
- * This code is modeled after vmalloc code - unmap_vm_area()
  *
  * XXX what about calls before mem_init_done (ie python_countermeasures())
  */
Index: linux-cell/include/linux/vmalloc.h
===
--- linux-cell.orig/include/linux/vmalloc.h 2007-05-16 12:56:18.0 
+1000
+++ linux-cell/include/linux/vmalloc.h  2007-05-16 13:10:00.0 +1000
@@ -65,9 +65,10 @@ extern struct vm_struct *get_vm_area_nod
  unsigned long flags, int node,
  gfp_t gfp_mask);
 extern struct vm_struct *remove_vm_area(void *addr);
+
 extern int map_vm_area(struct vm_struct *area, pgprot_t prot,
struct page ***pages);
-extern void unmap_vm_area(struct vm_struct *area);
+extern void unmap_kernel_range(unsigned long addr, unsigned long size);
 
 /*
  * Internals.  Dont't use..
Index: linux-cell/mm/vmalloc.c
===
--- linux-cell.orig/mm/vmalloc.c2007-05-16 12:56:18.0 +1000
+++ linux-cell/mm/vmalloc.c 2007-05-16 13:14:04.0 +1000
@@ -68,12 +68,12 @@ static inline void vunmap_pud_range(pgd_
} while (pud++, addr = next, addr != end);
 }
 
-void unmap_vm_area(struct vm_struct *area)
+void unmap_kernel_range(unsigned long addr, unsigned long size)
 {
pgd_t *pgd;
unsigned long next;
-   unsigned long addr = (unsigned long) area->addr;
-   unsigned long end = addr + area->size;
+   unsigned long start = addr;
+   unsigned long end = addr + size;
 
BUG_ON(addr >= end);
pgd = pgd_offset_k(addr);
@@ -84,7 +84,7 @@ void unmap_vm_area(struct vm_struct *are
continue;
vunmap_pud_range(pgd, addr, next);
} while (pgd++, addr = next, addr != end);
-   flush_tlb_kernel_range((unsigned long) area->addr, end);
+   flush_tlb_kernel_range(start, end);
 }
 
 static int vmap_pte_range(pmd_t *pmd, unsigned long addr,
@@ -284,7 +284,7 @@ static struct vm_struct *__remove_vm_are
return NULL;
 
 found:
-   unmap_vm_area(tmp);
+   unmap_kernel_range(tmp->addr, tmp->size);
*p = tmp->next;
 
/*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[RFC/PATCH 1/2] powerpc: unmap_vm_area becomes unmap_kernel_range

2007-05-15 Thread Benjamin Herrenschmidt
This patch renames unmap_vm_area to unmap_kernel_range and make
it take an explicit range instead of a vm_area struct. This makes
it more versatile for code that wants to play with kernel page
tables outside of the standard vmalloc area.

Signed-off-by: Benjamin Herrenschmidt [EMAIL PROTECTED] 

---

 Documentation/cachetlb.txt   |2 +-
 arch/powerpc/mm/imalloc.c|2 +-
 arch/powerpc/mm/pgtable_64.c |1 -
 include/linux/vmalloc.h  |3 ++-
 mm/vmalloc.c |   10 +-
 5 files changed, 9 insertions(+), 9 deletions(-)

Index: linux-cell/Documentation/cachetlb.txt
===
--- linux-cell.orig/Documentation/cachetlb.txt  2007-05-16 12:56:18.0 
+1000
+++ linux-cell/Documentation/cachetlb.txt   2007-05-16 13:10:00.0 
+1000
@@ -253,7 +253,7 @@ Here are the routines, one by one:
 
The first of these two routines is invoked after map_vm_area()
has installed the page table entries.  The second is invoked
-   before unmap_vm_area() deletes the page table entries.
+   before unmap_kernel_range() deletes the page table entries.
 
 There exists another whole class of cpu cache issues which currently
 require a whole different set of interfaces to handle properly.
Index: linux-cell/arch/powerpc/mm/imalloc.c
===
--- linux-cell.orig/arch/powerpc/mm/imalloc.c   2007-05-16 13:09:52.0 
+1000
+++ linux-cell/arch/powerpc/mm/imalloc.c2007-05-16 13:10:00.0 
+1000
@@ -301,7 +301,7 @@ void im_free(void * addr)
for (p = imlist ; (tmp = *p) ; p = tmp-next) {
if (tmp-addr == addr) {
*p = tmp-next;
-   unmap_vm_area(tmp);
+   unmap_kernel_range(tmp-addr, tmp-size);
kfree(tmp);
mutex_unlock(imlist_mutex);
return;
Index: linux-cell/arch/powerpc/mm/pgtable_64.c
===
--- linux-cell.orig/arch/powerpc/mm/pgtable_64.c2007-05-16 
13:09:52.0 +1000
+++ linux-cell/arch/powerpc/mm/pgtable_64.c 2007-05-16 13:10:00.0 
+1000
@@ -240,7 +240,6 @@ int __ioremap_explicit(phys_addr_t pa, u
 /*  
  * Unmap an IO region and remove it from imalloc'd list.
  * Access to IO memory should be serialized by driver.
- * This code is modeled after vmalloc code - unmap_vm_area()
  *
  * XXX what about calls before mem_init_done (ie python_countermeasures())
  */
Index: linux-cell/include/linux/vmalloc.h
===
--- linux-cell.orig/include/linux/vmalloc.h 2007-05-16 12:56:18.0 
+1000
+++ linux-cell/include/linux/vmalloc.h  2007-05-16 13:10:00.0 +1000
@@ -65,9 +65,10 @@ extern struct vm_struct *get_vm_area_nod
  unsigned long flags, int node,
  gfp_t gfp_mask);
 extern struct vm_struct *remove_vm_area(void *addr);
+
 extern int map_vm_area(struct vm_struct *area, pgprot_t prot,
struct page ***pages);
-extern void unmap_vm_area(struct vm_struct *area);
+extern void unmap_kernel_range(unsigned long addr, unsigned long size);
 
 /*
  * Internals.  Dont't use..
Index: linux-cell/mm/vmalloc.c
===
--- linux-cell.orig/mm/vmalloc.c2007-05-16 12:56:18.0 +1000
+++ linux-cell/mm/vmalloc.c 2007-05-16 13:14:04.0 +1000
@@ -68,12 +68,12 @@ static inline void vunmap_pud_range(pgd_
} while (pud++, addr = next, addr != end);
 }
 
-void unmap_vm_area(struct vm_struct *area)
+void unmap_kernel_range(unsigned long addr, unsigned long size)
 {
pgd_t *pgd;
unsigned long next;
-   unsigned long addr = (unsigned long) area-addr;
-   unsigned long end = addr + area-size;
+   unsigned long start = addr;
+   unsigned long end = addr + size;
 
BUG_ON(addr = end);
pgd = pgd_offset_k(addr);
@@ -84,7 +84,7 @@ void unmap_vm_area(struct vm_struct *are
continue;
vunmap_pud_range(pgd, addr, next);
} while (pgd++, addr = next, addr != end);
-   flush_tlb_kernel_range((unsigned long) area-addr, end);
+   flush_tlb_kernel_range(start, end);
 }
 
 static int vmap_pte_range(pmd_t *pmd, unsigned long addr,
@@ -284,7 +284,7 @@ static struct vm_struct *__remove_vm_are
return NULL;
 
 found:
-   unmap_vm_area(tmp);
+   unmap_kernel_range(tmp-addr, tmp-size);
*p = tmp-next;
 
/*
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC/PATCH 1/2] powerpc: unmap_vm_area becomes unmap_kernel_range

2007-05-15 Thread Benjamin Herrenschmidt
On Wed, 2007-05-16 at 13:45 +1000, Benjamin Herrenschmidt wrote:
 This patch renames unmap_vm_area to unmap_kernel_range and make
 it take an explicit range instead of a vm_area struct. This makes
 it more versatile for code that wants to play with kernel page
 tables outside of the standard vmalloc area.
 
 Signed-off-by: Benjamin Herrenschmidt [EMAIL PROTECTED] 

BTW, sorry for the incorrect title, it's not powerpc specific really
(though I want to use the new function from powerpc code)

Ben.


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/