From: Adam Litke <agl@us.ibm.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Adam Litke <agl@us.ibm.com>, Arjan van de Ven <arjan@infradead.org>, William Lee Irwin III <wli@holomorphy.com>, Christoph Hellwig <hch@infradead.org>, Ken Chen <kenchen@google.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 7/7] hugetlbfs fault handler Date: Mon, 19 Mar 2007 13:06:16 -0700 [thread overview] Message-ID: <20070319200616.17168.62372.stgit@localhost.localdomain> (raw) In-Reply-To: <20070319200502.17168.17175.stgit@localhost.localdomain> Signed-off-by: Adam Litke <agl@us.ibm.com> --- fs/hugetlbfs/inode.c | 1 + mm/hugetlb.c | 4 +++- mm/memory.c | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 823a9e3..29e65c2 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -571,6 +571,7 @@ static const struct pagetable_operations_struct hugetlbfs_pagetable_ops = { .unmap_page_range = unmap_hugepage_range, .change_protection = hugetlb_change_protection, .free_pgtable_range = hugetlb_free_pgd_range, + .fault = hugetlb_fault, }; static const struct inode_operations hugetlbfs_dir_inode_operations = { diff --git a/mm/hugetlb.c b/mm/hugetlb.c index d902fb9..e0f0607 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -590,6 +590,8 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long vaddr = *position; int remainder = *length; + BUG_ON(!has_pt_op(vma, fault)); + spin_lock(&mm->page_table_lock); while (vaddr < vma->vm_end && remainder) { pte_t *pte; @@ -606,7 +608,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, int ret; spin_unlock(&mm->page_table_lock); - ret = hugetlb_fault(mm, vma, vaddr, 0); + ret = pt_op(vma, fault)(mm, vma, vaddr, 0); spin_lock(&mm->page_table_lock); if (ret == VM_FAULT_MINOR) continue; diff --git a/mm/memory.c b/mm/memory.c index d2f28e7..bd7c243 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2499,8 +2499,8 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, count_vm_event(PGFAULT); - if (unlikely(is_vm_hugetlb_page(vma))) - return hugetlb_fault(mm, vma, address, write_access); + if (unlikely(has_pt_op(vma, fault))) + return pt_op(vma, fault)(mm, vma, address, write_access); pgd = pgd_offset(mm, address); pud = pud_alloc(mm, pgd, address);
WARNING: multiple messages have this Message-ID (diff)
From: Adam Litke <agl@us.ibm.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Adam Litke <agl@us.ibm.com>, Arjan van de Ven <arjan@infradead.org>, William Lee Irwin III <wli@holomorphy.com>, Christoph Hellwig <hch@infradead.org>, Ken Chen <kenchen@google.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 7/7] hugetlbfs fault handler Date: Mon, 19 Mar 2007 13:06:16 -0700 [thread overview] Message-ID: <20070319200616.17168.62372.stgit@localhost.localdomain> (raw) In-Reply-To: <20070319200502.17168.17175.stgit@localhost.localdomain> Signed-off-by: Adam Litke <agl@us.ibm.com> --- fs/hugetlbfs/inode.c | 1 + mm/hugetlb.c | 4 +++- mm/memory.c | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 823a9e3..29e65c2 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -571,6 +571,7 @@ static const struct pagetable_operations_struct hugetlbfs_pagetable_ops = { .unmap_page_range = unmap_hugepage_range, .change_protection = hugetlb_change_protection, .free_pgtable_range = hugetlb_free_pgd_range, + .fault = hugetlb_fault, }; static const struct inode_operations hugetlbfs_dir_inode_operations = { diff --git a/mm/hugetlb.c b/mm/hugetlb.c index d902fb9..e0f0607 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -590,6 +590,8 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long vaddr = *position; int remainder = *length; + BUG_ON(!has_pt_op(vma, fault)); + spin_lock(&mm->page_table_lock); while (vaddr < vma->vm_end && remainder) { pte_t *pte; @@ -606,7 +608,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, int ret; spin_unlock(&mm->page_table_lock); - ret = hugetlb_fault(mm, vma, vaddr, 0); + ret = pt_op(vma, fault)(mm, vma, vaddr, 0); spin_lock(&mm->page_table_lock); if (ret == VM_FAULT_MINOR) continue; diff --git a/mm/memory.c b/mm/memory.c index d2f28e7..bd7c243 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2499,8 +2499,8 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, count_vm_event(PGFAULT); - if (unlikely(is_vm_hugetlb_page(vma))) - return hugetlb_fault(mm, vma, address, write_access); + if (unlikely(has_pt_op(vma, fault))) + return pt_op(vma, fault)(mm, vma, address, write_access); pgd = pgd_offset(mm, address); pud = pud_alloc(mm, pgd, address); -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2007-03-19 20:06 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-03-19 20:05 [PATCH 0/7] [RFC] hugetlb: pagetable_operations API (V2) Adam Litke 2007-03-19 20:05 ` Adam Litke 2007-03-19 20:05 ` [PATCH 1/7] Introduce the pagetable_operations and associated helper macros Adam Litke 2007-03-19 20:05 ` Adam Litke 2007-03-20 23:24 ` Dave Hansen 2007-03-20 23:24 ` Dave Hansen 2007-03-21 14:50 ` Adam Litke 2007-03-21 14:50 ` Adam Litke 2007-03-21 15:05 ` Arjan van de Ven 2007-03-21 15:05 ` Arjan van de Ven 2007-03-21 4:18 ` Nick Piggin 2007-03-21 4:18 ` Nick Piggin 2007-03-21 4:52 ` William Lee Irwin III 2007-03-21 4:52 ` William Lee Irwin III 2007-03-21 5:07 ` Nick Piggin 2007-03-21 5:07 ` Nick Piggin 2007-03-21 5:41 ` William Lee Irwin III 2007-03-21 5:41 ` William Lee Irwin III 2007-03-21 6:51 ` Nick Piggin 2007-03-21 6:51 ` Nick Piggin 2007-03-21 7:36 ` Nick Piggin 2007-03-21 7:36 ` Nick Piggin 2007-03-21 10:46 ` William Lee Irwin III 2007-03-21 10:46 ` William Lee Irwin III 2007-03-21 15:17 ` Adam Litke 2007-03-21 15:17 ` Adam Litke 2007-03-21 16:00 ` Christoph Hellwig 2007-03-21 16:00 ` Christoph Hellwig 2007-03-21 23:03 ` Nick Piggin 2007-03-21 23:03 ` Nick Piggin 2007-03-21 23:02 ` Nick Piggin 2007-03-21 23:02 ` Nick Piggin 2007-03-21 23:32 ` William Lee Irwin III 2007-03-21 23:32 ` William Lee Irwin III 2007-03-19 20:05 ` [PATCH 2/7] copy_vma for hugetlbfs Adam Litke 2007-03-19 20:05 ` Adam Litke 2007-03-19 20:05 ` [PATCH 3/7] pin_pages for hugetlb Adam Litke 2007-03-19 20:05 ` Adam Litke 2007-03-19 20:05 ` [PATCH 4/7] unmap_page_range " Adam Litke 2007-03-19 20:05 ` Adam Litke 2007-03-20 23:27 ` Dave Hansen 2007-03-20 23:27 ` Dave Hansen 2007-03-19 20:05 ` [PATCH 5/7] change_protection " Adam Litke 2007-03-19 20:05 ` Adam Litke 2007-03-19 20:06 ` [PATCH 6/7] free_pgtable_range " Adam Litke 2007-03-19 20:06 ` Adam Litke 2007-03-19 20:06 ` Adam Litke [this message] 2007-03-19 20:06 ` [PATCH 7/7] hugetlbfs fault handler Adam Litke 2007-03-20 23:50 ` [PATCH 0/7] [RFC] hugetlb: pagetable_operations API (V2) Dave Hansen 2007-03-20 23:50 ` Dave Hansen 2007-03-21 1:17 ` William Lee Irwin III 2007-03-21 1:17 ` William Lee Irwin III 2007-03-21 15:55 ` Hugh Dickins 2007-03-21 15:55 ` Hugh Dickins 2007-03-21 16:01 ` Christoph Hellwig 2007-03-21 16:01 ` Christoph Hellwig 2007-03-21 16:23 ` William Lee Irwin III 2007-03-21 17:08 ` Hugh Dickins 2007-03-21 17:42 ` William Lee Irwin III 2007-03-21 19:43 ` pagetable_ops: Hugetlb character device example Adam Litke 2007-03-21 19:43 ` Adam Litke 2007-03-21 19:51 ` Valdis.Kletnieks 2007-03-21 20:26 ` Adam Litke 2007-03-21 20:26 ` Adam Litke 2007-03-21 22:26 ` William Lee Irwin III 2007-03-21 22:26 ` William Lee Irwin III 2007-03-21 22:53 ` Matt Mackall 2007-03-21 22:53 ` Matt Mackall 2007-03-21 23:35 ` William Lee Irwin III 2007-03-21 23:35 ` William Lee Irwin III 2007-03-22 0:31 ` Matt Mackall 2007-03-22 0:31 ` Matt Mackall 2007-03-22 10:38 ` Christoph Hellwig 2007-03-22 10:38 ` Christoph Hellwig 2007-03-22 15:42 ` Mel Gorman 2007-03-22 15:42 ` Mel Gorman 2007-03-22 18:15 ` Christoph Hellwig 2007-03-22 18:15 ` Christoph Hellwig 2007-03-23 14:57 ` Mel Gorman 2007-03-23 14:57 ` Mel Gorman -- strict thread matches above, loose matches on Subject: below -- 2007-02-19 18:31 [PATCH 0/7] [RFC] hugetlb: pagetable_operations API Adam Litke 2007-02-19 18:32 ` [PATCH 7/7] hugetlbfs fault handler Adam Litke 2007-02-19 18:32 ` Adam Litke
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20070319200616.17168.62372.stgit@localhost.localdomain \ --to=agl@us.ibm.com \ --cc=akpm@linux-foundation.org \ --cc=arjan@infradead.org \ --cc=hch@infradead.org \ --cc=kenchen@google.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=wli@holomorphy.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.