From: Prasad Joshi <prasadjoshi124@gmail.com>
To: cmetcalf@tilera.com, linux-kernel@vger.kernel.org,
prasadjoshi124@gmail.com, mitra@kqinfotech.com
Subject: Re: [RFC][PATCH v3 05/22] mm, tile: add gfp flags variant of pmd and pte allocations
Date: Fri, 18 Mar 2011 19:50:35 +0000 [thread overview]
Message-ID: <20110318195035.GF4746@prasad-kvm> (raw)
In-Reply-To: <20110318194929.GE4746@prasad-kvm>
- Added function __pte_alloc_one() which is very similar to pte_alloc_one(),
but also accepts an additional gfp_t allocation flag.
- The pte_alloc_one() function calls __pte_alloc_one().
- Added function __pte_alloc_one_kernel() to accept and then pass the
allocation flag to __pte_alloc_one().
- The function pte_alloc_one_kernel() calls __pte_alloc_one_kernel().
- Added function __pmd_alloc_one to allocation pmd entries using the
specified allocation flag. It works by passing the allocation flag
to __pte_alloc_one().
- changes help in fixing the Bug 30702
Signed-off-by: Prasad Joshi <prasadjoshi124@gmail.com>
Signed-off-by: Anand Mitra <mitra@kqinfotech.com>
---
arch/tile/include/asm/pgalloc.h | 13 ++++++++++++-
arch/tile/mm/pgtable.c | 10 ++++++++--
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/arch/tile/include/asm/pgalloc.h b/arch/tile/include/asm/pgalloc.h
index cf52791..2dcad88 100644
--- a/arch/tile/include/asm/pgalloc.h
+++ b/arch/tile/include/asm/pgalloc.h
@@ -69,14 +69,23 @@ extern pgd_t *pgd_alloc(struct mm_struct *mm);
extern void pgd_free(struct mm_struct *mm, pgd_t *pgd);
extern pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address);
+extern pgtable_t __pte_alloc_one(struct mm_struct *, unsigned long, gfp_t);
+
extern void pte_free(struct mm_struct *mm, struct page *pte);
#define pmd_pgtable(pmd) pmd_page(pmd)
static inline pte_t *
+__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address,
+ gfp_t gfp_mask)
+{
+ return pfn_to_kaddr(page_to_pfn(__pte_alloc_one(mm, address, gfp_mask)));
+}
+
+static inline pte_t *
pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
{
- return pfn_to_kaddr(page_to_pfn(pte_alloc_one(mm, address)));
+ return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT);
}
static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
@@ -108,6 +117,8 @@ void shatter_pmd(pmd_t *pmd);
#define L1_USER_PGTABLE_ORDER L2_USER_PGTABLE_ORDER
#define pud_populate(mm, pud, pmd) \
pmd_populate_kernel((mm), (pmd_t *)(pud), (pte_t *)(pmd))
+#define __pmd_alloc_one(mm, addr, mask) \
+ ((pmd_t *)page_to_virt(__pte_alloc_one((mm), (addr), (mask))))
#define pmd_alloc_one(mm, addr) \
((pmd_t *)page_to_virt(pte_alloc_one((mm), (addr))))
#define pmd_free(mm, pmdp) \
diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c
index 1f5430c..34ee920 100644
--- a/arch/tile/mm/pgtable.c
+++ b/arch/tile/mm/pgtable.c
@@ -218,9 +218,10 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd)
#define L2_USER_PGTABLE_PAGES (1 << L2_USER_PGTABLE_ORDER)
-struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
+struct page *
+__pte_alloc_one(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask)
{
- gfp_t flags = GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO|__GFP_COMP;
+ gfp_t flags = gfp_mask | __GFP_ZERO | __GFP_COMP;
struct page *p;
#ifdef CONFIG_HIGHPTE
@@ -235,6 +236,11 @@ struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
return p;
}
+struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
+{
+ return __pte_alloc_one(mm, address, GFP_KERNEL);
+}
+
/*
* Free page immediately (used in __pte_alloc if we raced with another
* process). We have to correct whatever pte_alloc_one() did before
--
1.7.0.4
next prev parent reply other threads:[~2011-03-18 19:49 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-18 19:41 [RFC][PATCH v3 00/22] __vmalloc: Propagating GFP allocation flag inside __vmalloc() Prasad Joshi
2011-03-18 19:41 ` Prasad Joshi
2011-03-18 19:41 ` Prasad Joshi
2011-03-18 19:41 ` Prasad Joshi
2011-03-18 19:41 ` [RFC][PATCH v3 00/22] __vmalloc: Propagating GFP allocation flag Prasad Joshi
2011-03-18 19:41 ` [RFC][PATCH v3 00/22] __vmalloc: Propagating GFP allocation flag inside __vmalloc() Prasad Joshi
2011-03-18 19:43 ` [RFC][PATCH v3 01/22] mm: " Prasad Joshi
2011-03-18 19:43 ` Prasad Joshi
2011-03-18 19:46 ` [RFC][PATCH v3 02/22] mm, xtensa: add gfp flags variant of pte allocations Prasad Joshi
2011-03-18 19:47 ` [RFC][PATCH v3 03/22] mm, x86: add gfp flags variant of pud, pmd, and " Prasad Joshi
2011-03-18 19:49 ` [RFC][PATCH v3 04/22] mm, um: add gfp flags variant of pmd " Prasad Joshi
2011-03-18 19:50 ` Prasad Joshi [this message]
2011-03-18 19:51 ` [RFC][PATCH v3 06/22] mm, sparc: add gfp flags variant of pmd Prasad Joshi
2011-03-18 19:51 ` [RFC][PATCH v3 06/22] mm, sparc: add gfp flags variant of pmd and pte allocations Prasad Joshi
2011-03-18 19:53 ` [RFC][PATCH v3 07/22] mm, sh: add gfp flags variant of pmd and Prasad Joshi
2011-03-18 19:53 ` [RFC][PATCH v3 07/22] mm, sh: add gfp flags variant of pmd and pte allocations Prasad Joshi
2011-03-18 19:55 ` [RFC][PATCH v3 08/22] mm, score: add gfp flags variant of " Prasad Joshi
2011-03-18 19:56 ` [RFC][PATCH v3 09/22] mm, s390: add gfp flags variant of pud, pte, and " Prasad Joshi
2011-03-18 19:57 ` [RFC][PATCH v3 10/22] mm, powerpc: " Prasad Joshi
2011-03-18 19:59 ` [RFC][PATCH v3 11/22] mm, parisc: add gfp flags variant of pmd " Prasad Joshi
2011-03-18 20:00 ` [RFC][PATCH v3 12/22] mm, mn10300: add gfp flags variant of " Prasad Joshi
2011-03-18 20:01 ` [RFC][PATCH v3 13/22] mm, mips: add gfp flags variant of pmd and " Prasad Joshi
2011-03-18 20:02 ` [RFC][PATCH v3 14/22] mm, microblaze: " Prasad Joshi
2011-03-18 20:04 ` [RFC][PATCH v3 15/22] mm, m68k: " Prasad Joshi
2011-03-18 20:04 ` Prasad Joshi
2011-03-18 20:04 ` [RFC][PATCH v3 16/22] mm, m32r: " Prasad Joshi
2011-03-18 20:05 ` [RFC][PATCH v3 17/22] mm, ia64: add gfp flags variant of pud, Prasad Joshi
2011-03-18 20:05 ` [RFC][PATCH v3 17/22] mm, ia64: add gfp flags variant of pud, pmd and pte allocations Prasad Joshi
2011-03-18 20:06 ` [RFC][PATCH v3 18/22] mm, frv: " Prasad Joshi
2011-03-18 20:07 ` [RFC][PATCH v3 19/22] mm, cris: add gfp flags variant of " Prasad Joshi
2011-03-18 20:08 ` [RFC][PATCH v3 20/22] mm, avr32: " Prasad Joshi
2011-03-18 20:09 ` [RFC][PATCH v3 21/22] mm, arm: add gfp flags variant of pmd and " Prasad Joshi
2011-03-18 20:09 ` Prasad Joshi
2011-03-18 20:10 ` [RFC][PATCH v3 22/22] mm, alpha: " Prasad Joshi
2011-03-21 8:34 ` [RFC][PATCH v3 09/22] mm, s390: add gfp flags variant of pud, pte, " Martin Schwidefsky
2011-03-21 19:02 ` Prasad Joshi
2011-03-22 7:56 ` Martin Schwidefsky
2011-03-22 14:42 ` [RFC][PATCH v3 07/22] mm, sh: add gfp flags variant of pmd " Paul Mundt
2011-03-22 14:42 ` Paul Mundt
[not found] ` <4D83B7F2.4000903@tilera.com>
2011-03-18 20:12 ` [RFC][PATCH v3 05/22] mm, tile: " Prasad Joshi
2011-03-18 22:17 ` [RFC][PATCH v3 03/22] mm, x86: add gfp flags variant of pud, pmd, " David Rientjes
2011-03-21 19:05 ` Prasad Joshi
2011-03-21 20:15 ` David Rientjes
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=20110318195035.GF4746@prasad-kvm \
--to=prasadjoshi124@gmail.com \
--cc=cmetcalf@tilera.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mitra@kqinfotech.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: link
Be 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.