[PATCH 6/7] free_pgtable_range for hugetlb

2007-03-19 Thread Adam Litke

Signed-off-by: Adam Litke <[EMAIL PROTECTED]>
---

 fs/hugetlbfs/inode.c |1 +
 mm/memory.c  |6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 3de5d93..823a9e3 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -570,6 +570,7 @@ static const struct pagetable_operations_struct 
hugetlbfs_pagetable_ops = {
.pin_pages  = follow_hugetlb_page,
.unmap_page_range   = unmap_hugepage_range,
.change_protection  = hugetlb_change_protection,
+   .free_pgtable_range = hugetlb_free_pgd_range,
 };
 
 static const struct inode_operations hugetlbfs_dir_inode_operations = {
diff --git a/mm/memory.c b/mm/memory.c
index a3bcaf3..d2f28e7 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -279,15 +279,15 @@ void free_pgtables(struct mmu_gather **tlb, struct 
vm_area_struct *vma,
anon_vma_unlink(vma);
unlink_file_vma(vma);
 
-   if (is_vm_hugetlb_page(vma)) {
-   hugetlb_free_pgd_range(tlb, addr, vma->vm_end,
+   if (has_pt_op(vma, free_pgtable_range)) {
+   pt_op(vma, free_pgtable_range)(tlb, addr, vma->vm_end,
floor, next? next->vm_start: ceiling);
} else {
/*
 * Optimization: gather nearby vmas into one call down
 */
while (next && next->vm_start <= vma->vm_end + PMD_SIZE
-  && !is_vm_hugetlb_page(next)) {
+  && !has_pt_op(next, free_pgtable_range)) {
vma = next;
next = vma->vm_next;
anon_vma_unlink(vma);
-
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/


[PATCH 6/7] free_pgtable_range for hugetlb

2007-03-19 Thread Adam Litke

Signed-off-by: Adam Litke [EMAIL PROTECTED]
---

 fs/hugetlbfs/inode.c |1 +
 mm/memory.c  |6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 3de5d93..823a9e3 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -570,6 +570,7 @@ static const struct pagetable_operations_struct 
hugetlbfs_pagetable_ops = {
.pin_pages  = follow_hugetlb_page,
.unmap_page_range   = unmap_hugepage_range,
.change_protection  = hugetlb_change_protection,
+   .free_pgtable_range = hugetlb_free_pgd_range,
 };
 
 static const struct inode_operations hugetlbfs_dir_inode_operations = {
diff --git a/mm/memory.c b/mm/memory.c
index a3bcaf3..d2f28e7 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -279,15 +279,15 @@ void free_pgtables(struct mmu_gather **tlb, struct 
vm_area_struct *vma,
anon_vma_unlink(vma);
unlink_file_vma(vma);
 
-   if (is_vm_hugetlb_page(vma)) {
-   hugetlb_free_pgd_range(tlb, addr, vma-vm_end,
+   if (has_pt_op(vma, free_pgtable_range)) {
+   pt_op(vma, free_pgtable_range)(tlb, addr, vma-vm_end,
floor, next? next-vm_start: ceiling);
} else {
/*
 * Optimization: gather nearby vmas into one call down
 */
while (next  next-vm_start = vma-vm_end + PMD_SIZE
-   !is_vm_hugetlb_page(next)) {
+   !has_pt_op(next, free_pgtable_range)) {
vma = next;
next = vma-vm_next;
anon_vma_unlink(vma);
-
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/


[PATCH 6/7] free_pgtable_range for hugetlb

2007-02-19 Thread Adam Litke

Signed-off-by: Adam Litke <[EMAIL PROTECTED]>
---

 fs/hugetlbfs/inode.c |1 +
 mm/memory.c  |6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 1016694..3461f9b 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -567,6 +567,7 @@ static struct pagetable_operations_struct 
hugetlbfs_pagetable_ops = {
.pin_pages  = follow_hugetlb_page,
.unmap_page_range   = unmap_hugepage_range,
.change_protection  = hugetlb_change_protection,
+   .free_pgtable_range = hugetlb_free_pgd_range,
 };
 
 static struct inode_operations hugetlbfs_dir_inode_operations = {
diff --git a/mm/memory.c b/mm/memory.c
index aa6b06e..442e6b2 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -279,15 +279,15 @@ void free_pgtables(struct mmu_gather **tlb, struct 
vm_area_struct *vma,
anon_vma_unlink(vma);
unlink_file_vma(vma);
 
-   if (is_vm_hugetlb_page(vma)) {
-   hugetlb_free_pgd_range(tlb, addr, vma->vm_end,
+   if (has_pt_op(vma, free_pgtable_range)) {
+   pt_op(vma, free_pgtable_range)(tlb, addr, vma->vm_end,
floor, next? next->vm_start: ceiling);
} else {
/*
 * Optimization: gather nearby vmas into one call down
 */
while (next && next->vm_start <= vma->vm_end + PMD_SIZE
-  && !is_vm_hugetlb_page(next)) {
+  && !has_pt_op(next, free_pgtable_range)) {
vma = next;
next = vma->vm_next;
anon_vma_unlink(vma);
-
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/


[PATCH 6/7] free_pgtable_range for hugetlb

2007-02-19 Thread Adam Litke

Signed-off-by: Adam Litke [EMAIL PROTECTED]
---

 fs/hugetlbfs/inode.c |1 +
 mm/memory.c  |6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 1016694..3461f9b 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -567,6 +567,7 @@ static struct pagetable_operations_struct 
hugetlbfs_pagetable_ops = {
.pin_pages  = follow_hugetlb_page,
.unmap_page_range   = unmap_hugepage_range,
.change_protection  = hugetlb_change_protection,
+   .free_pgtable_range = hugetlb_free_pgd_range,
 };
 
 static struct inode_operations hugetlbfs_dir_inode_operations = {
diff --git a/mm/memory.c b/mm/memory.c
index aa6b06e..442e6b2 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -279,15 +279,15 @@ void free_pgtables(struct mmu_gather **tlb, struct 
vm_area_struct *vma,
anon_vma_unlink(vma);
unlink_file_vma(vma);
 
-   if (is_vm_hugetlb_page(vma)) {
-   hugetlb_free_pgd_range(tlb, addr, vma-vm_end,
+   if (has_pt_op(vma, free_pgtable_range)) {
+   pt_op(vma, free_pgtable_range)(tlb, addr, vma-vm_end,
floor, next? next-vm_start: ceiling);
} else {
/*
 * Optimization: gather nearby vmas into one call down
 */
while (next  next-vm_start = vma-vm_end + PMD_SIZE
-   !is_vm_hugetlb_page(next)) {
+   !has_pt_op(next, free_pgtable_range)) {
vma = next;
next = vma-vm_next;
anon_vma_unlink(vma);
-
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/