1. 17 7月, 2016 1 次提交
    • A
      powerpc/mm: use _raw variant of page table accessors · 66c570f5
      Aneesh Kumar K.V 提交于
      This switch few of the page table accessor to use the __raw variant
      and does the cpu to big endian conversion of constants. This helps in
      generating better code.
      
      For ex: a pgd_none(pgd) check with and without fix is listed below
      
      Without fix:
      ------------
         2240:	20 00 61 eb 	ld      r27,32(r1)
      /* PGD level */
      typedef struct { __be64 pgd; } pgd_t;
      static inline unsigned long pgd_val(pgd_t x)
      {
      	return be64_to_cpu(x.pgd);
      
          2244:	22 00 66 78 	rldicl  r6,r3,32,32
          2248:	3e 40 7d 54 	rotlwi  r29,r3,8
          224c:	0e c0 7d 50 	rlwimi  r29,r3,24,0,7
          2250:	3e 40 c5 54 	rotlwi  r5,r6,8
          2254:	2e c4 7d 50 	rlwimi  r29,r3,24,16,23
          2258:	0e c0 c5 50 	rlwimi  r5,r6,24,0,7
          225c:	2e c4 c5 50 	rlwimi  r5,r6,24,16,23
          2260:	c6 07 bd 7b 	rldicr  r29,r29,32,31
          2264:	78 2b bd 7f 	or      r29,r29,r5
      		if (pgd_none(pgd))
          2268:	00 00 bd 2f 	cmpdi   cr7,r29,0
          226c:	54 03 9e 41 	beq     cr7,25c0 <__get_user_pages_fast+0x500>
      
      With fix:
      ---------
          2370:	20 00 61 eb 	ld      r27,32(r1)
      		if (pgd_none(pgd))
          2374:	00 00 bd 2f 	cmpdi   cr7,r29,0
          2378:	a8 03 9e 41 	beq     cr7,2720 <__get_user_pages_fast+0x530>
      			break;
      Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Acked-by: NBalbir Singh <bsingharora@gmail.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      66c570f5
  2. 30 6月, 2016 1 次提交
  3. 17 6月, 2016 1 次提交
  4. 14 6月, 2016 2 次提交
  5. 10 6月, 2016 1 次提交
    • A
      powerpc/mm/radix: Flush page walk cache when freeing page table · a145abf1
      Aneesh Kumar K.V 提交于
      Even though a tlb_flush() does a flush with invalidate all cache,
      we can end up doing an RCU page table free before calling tlb_flush().
      That means we can have page walk cache entries even after we free the
      page table pages. This can result in us doing wrong page table walk.
      
      Avoid this by doing pwc flush on every page table free. We can't batch
      the pwc flush, because the rcu call back function where we free the
      page table pages doesn't have information of the mmu gather. Thus we
      have to do a pwc on every page table page freed.
      
      Note: I also removed the dummy tlb_flush_pgtable call functions for
      hash 32.
      
      Fixes: 1a472c9d ("powerpc/mm/radix: Add tlbflush routines")
      Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      a145abf1
  6. 20 5月, 2016 1 次提交
    • H
      arch: fix has_transparent_hugepage() · fd8cfd30
      Hugh Dickins 提交于
      I've just discovered that the useful-sounding has_transparent_hugepage()
      is actually an architecture-dependent minefield: on some arches it only
      builds if CONFIG_TRANSPARENT_HUGEPAGE=y, on others it's also there when
      not, but on some of those (arm and arm64) it then gives the wrong
      answer; and on mips alone it's marked __init, which would crash if
      called later (but so far it has not been called later).
      
      Straighten this out: make it available to all configs, with a sensible
      default in asm-generic/pgtable.h, removing its definitions from those
      arches (arc, arm, arm64, sparc, tile) which are served by the default,
      adding #define has_transparent_hugepage has_transparent_hugepage to
      those (mips, powerpc, s390, x86) which need to override the default at
      runtime, and removing the __init from mips (but maybe that kind of code
      should be avoided after init: set a static variable the first time it's
      called).
      Signed-off-by: NHugh Dickins <hughd@google.com>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Andres Lagar-Cavilla <andreslc@google.com>
      Cc: Yang Shi <yang.shi@linaro.org>
      Cc: Ning Qu <quning@gmail.com>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Konstantin Khlebnikov <koct9i@gmail.com>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Acked-by: Vineet Gupta <vgupta@synopsys.com>		[arch/arc]
      Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>	[arch/s390]
      Acked-by: NIngo Molnar <mingo@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fd8cfd30
  7. 11 5月, 2016 16 次提交
  8. 01 5月, 2016 17 次提交