linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Mel Gorman <mgorman@suse.de>,
	Matthew Wilcox <matthew.r.wilcox@intel.com>,
	Minchan Kim <minchan@kernel.org>,
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"arc-linux-dev@synopsys.com" <arc-linux-dev@synopsys.com>
Subject: Re: [PATCH 04/11] ARCv2: mm: THP support
Date: Fri, 28 Aug 2015 06:09:37 +0000	[thread overview]
Message-ID: <C2D7FE5348E1B147BCA15975FBA23075CFB86BEE@IN01WEMBXB.internal.synopsys.com> (raw)
In-Reply-To: <20150827153254.GA21103@node.dhcp.inet.fi>

On Thursday 27 August 2015 09:03 PM, Kirill A. Shutemov wrote:
> On Thu, Aug 27, 2015 at 02:33:07PM +0530, Vineet Gupta wrote:
>> +pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
>> +{
>> +	struct list_head *lh;
>> +	pgtable_t pgtable;
>> +	pte_t *ptep;
>> +
>> +	assert_spin_locked(&mm->page_table_lock);
>> +
>> +	pgtable = pmd_huge_pte(mm, pmdp);
>> +	lh = (struct list_head *) pgtable;
>> +	if (list_empty(lh))
>> +		pmd_huge_pte(mm, pmdp) = (pgtable_t) NULL;
>> +	else {
>> +		pmd_huge_pte(mm, pmdp) = (pgtable_t) lh->next;
>> +		list_del(lh);
>> +	}
> Side question: why pgtable_t is unsigned long on ARC and not struct page *
> or pte_t *, like on other archs? We could avoid these casts.

Well we avoid some and add some, but I agree that it is better as pte_t *

-------------->
>From 7170a998bd4d5014ade94f4e5ba979c929d1ee18 Mon Sep 17 00:00:00 2001
From: Vineet Gupta <vgupta@synopsys.com>
Date: Fri, 28 Aug 2015 08:39:57 +0530
Subject: [PATCH] ARC: mm: switch pgtable_to to pte_t *

ARC is the only arch with unsigned long type (vs. struct page *).
Historically this was done to avoid the page_address() calls in various
arch hooks which need to get the virtual/logical address of the table.

Some arches alternately define it as pte_t *, and is as efficient as
unsigned long (generated code doesn't change)

Suggested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 arch/arc/include/asm/page.h    | 4 ++--
 arch/arc/include/asm/pgalloc.h | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
index 9c8aa41e45c2..2994cac1069e 100644
--- a/arch/arc/include/asm/page.h
+++ b/arch/arc/include/asm/page.h
@@ -43,7 +43,6 @@ typedef struct {
 typedef struct {
     unsigned long pgprot;
 } pgprot_t;
-typedef unsigned long pgtable_t;
 
 #define pte_val(x)      ((x).pte)
 #define pgd_val(x)      ((x).pgd)
@@ -60,7 +59,6 @@ typedef unsigned long pgtable_t;
 typedef unsigned long pte_t;
 typedef unsigned long pgd_t;
 typedef unsigned long pgprot_t;
-typedef unsigned long pgtable_t;
 
 #define pte_val(x)    (x)
 #define pgd_val(x)    (x)
@@ -71,6 +69,8 @@ typedef unsigned long pgtable_t;
 
 #endif
 
+typedef pte_t * pgtable_t;
+
 #define ARCH_PFN_OFFSET     (CONFIG_LINUX_LINK_BASE >> PAGE_SHIFT)
 
 #define pfn_valid(pfn)      (((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
diff --git a/arch/arc/include/asm/pgalloc.h b/arch/arc/include/asm/pgalloc.h
index 81208bfd9dcb..9149b5ca26d7 100644
--- a/arch/arc/include/asm/pgalloc.h
+++ b/arch/arc/include/asm/pgalloc.h
@@ -107,7 +107,7 @@ pte_alloc_one(struct mm_struct *mm, unsigned long address)
     pgtable_t pte_pg;
     struct page *page;
 
-    pte_pg = __get_free_pages(GFP_KERNEL | __GFP_REPEAT, __get_order_pte());
+    pte_pg = (pgtable_t)__get_free_pages(GFP_KERNEL | __GFP_REPEAT,
__get_order_pte());
     if (!pte_pg)
         return 0;
     memzero((void *)pte_pg, PTRS_PER_PTE * 4);
@@ -128,12 +128,12 @@ static inline void pte_free_kernel(struct mm_struct *mm,
pte_t *pte)
 static inline void pte_free(struct mm_struct *mm, pgtable_t ptep)
 {
     pgtable_page_dtor(virt_to_page(ptep));
-    free_pages(ptep, __get_order_pte());
+    free_pages((unsigned long)ptep, __get_order_pte());
 }
 
 #define __pte_free_tlb(tlb, pte, addr)  pte_free((tlb)->mm, pte)
 
 #define check_pgt_cache()   do { } while (0)
-#define pmd_pgtable(pmd) pmd_page_vaddr(pmd)
+#define pmd_pgtable(pmd)    ((pgtable_t) pmd_page_vaddr(pmd))
 
 #endif /* _ASM_ARC_PGALLOC_H */
-- 
1.9.1



--
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>

  parent reply	other threads:[~2015-08-28  6:09 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-27  9:03 [PATCH 00/11] THP support for ARC Vineet Gupta
2015-08-27  9:03 ` [PATCH 01/11] ARC: mm: pte flags comsetic cleanups, comments Vineet Gupta
2015-08-27  9:03 ` [PATCH 02/11] ARC: mm: Introduce PTE_SPECIAL Vineet Gupta
2015-08-27  9:03 ` [PATCH 03/11] Documentation/features/vm: pte_special now supported by ARC Vineet Gupta
2015-08-27  9:03 ` [PATCH 04/11] ARCv2: mm: THP support Vineet Gupta
2015-08-27 15:32   ` Kirill A. Shutemov
2015-08-27 16:56     ` Vineet Gupta
2015-08-28  6:09     ` Vineet Gupta [this message]
2015-08-27  9:03 ` [PATCH 05/11] ARCv2: mm: THP: boot validation/reporting Vineet Gupta
2015-08-27  9:03 ` [PATCH 06/11] Documentation/features/vm: THP now supported by ARC Vineet Gupta
2015-08-27  9:03 ` [PATCH 07/11] mm: move some code around Vineet Gupta
2015-08-27  9:03 ` [PATCH 08/11] mm,thp: reduce ifdef'ery for THP in generic code Vineet Gupta
2015-09-16 22:25   ` Andrew Morton
2015-09-16 23:45     ` Vineet Gupta
2015-08-27  9:03 ` [PATCH 09/11] mm,thp: introduce flush_pmd_tlb_range Vineet Gupta
2015-09-16 22:26   ` Andrew Morton
2015-09-16 23:57     ` Vineet Gupta
2015-08-27  9:03 ` [PATCH 10/11] ARCv2: mm: THP: Implement flush_pmd_tlb_range() optimization Vineet Gupta
2015-08-27  9:03 ` [PATCH 11/11] ARCv2: Add a DT which enables THP Vineet Gupta
2015-09-03  8:46 ` [PATCH 00/11] THP support for ARC Vineet Gupta
2015-09-16 22:27 ` Andrew Morton

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=C2D7FE5348E1B147BCA15975FBA23075CFB86BEE@IN01WEMBXB.internal.synopsys.com \
    --to=vineet.gupta1@synopsys.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=arc-linux-dev@synopsys.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kirill@shutemov.name \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=matthew.r.wilcox@intel.com \
    --cc=mgorman@suse.de \
    --cc=minchan@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox