linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/7] Avoid cache trashing on clearing huge/gigantic page
@ 2012-08-16 15:15 Kirill A. Shutemov
  2012-08-16 15:15 ` [PATCH v3 1/7] THP: Use real address for NUMA policy Kirill A. Shutemov
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Kirill A. Shutemov @ 2012-08-16 15:15 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-mips, linux-sh, Jan Beulich, H. Peter Anvin, sparclinux,
	Andrea Arcangeli, Andi Kleen, Robert Richter, x86, Hugh Dickins,
	Ingo Molnar, Mel Gorman, Alex Shi, Thomas Gleixner,
	KAMEZAWA Hiroyuki, Tim Chen, linux-kernel, Andy Lutomirski,
	Johannes Weiner, Andrew Morton, linuxppc-dev, Kirill A. Shutemov

From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>

Clearing a 2MB huge page will typically blow away several levels of CPU
caches.  To avoid this only cache clear the 4K area around the fault
address and use a cache avoiding clears for the rest of the 2MB area.

This patchset implements cache avoiding version of clear_page only for
x86. If an architecture wants to provide cache avoiding version of
clear_page it should to define ARCH_HAS_USER_NOCACHE to 1 and implement
clear_page_nocache() and clear_user_highpage_nocache().

v3:
  - Rebased to current Linus' tree. kmap_atomic() build issue is fixed;
  - Pass fault address to clear_huge_page(). v2 had problem with clearing
    for sizes other than HPAGE_SIZE
  - x86: fix 32bit variant. Fallback version of clear_page_nocache() has
    been added for non-SSE2 systems;
  - x86: clear_page_nocache() moved to clear_page_{32,64}.S;
  - x86: use pushq_cfi/popq_cfi instead of push/pop;
v2:
  - No code change. Only commit messages are updated.
  - RFC mark is dropped.

Andi Kleen (5):
  THP: Use real address for NUMA policy
  THP: Pass fault address to __do_huge_pmd_anonymous_page()
  x86: Add clear_page_nocache
  mm: make clear_huge_page cache clear only around the fault address
  x86: switch the 64bit uncached page clear to SSE/AVX v2

Kirill A. Shutemov (2):
  hugetlb: pass fault address to hugetlb_no_page()
  mm: pass fault address to clear_huge_page()

 arch/x86/include/asm/page.h      |    2 +
 arch/x86/include/asm/string_32.h |    5 ++
 arch/x86/include/asm/string_64.h |    5 ++
 arch/x86/lib/Makefile            |    3 +-
 arch/x86/lib/clear_page_32.S     |   72 +++++++++++++++++++++++++++++++++++
 arch/x86/lib/clear_page_64.S     |   78 ++++++++++++++++++++++++++++++++++++++
 arch/x86/mm/fault.c              |    7 +++
 include/linux/mm.h               |    2 +-
 mm/huge_memory.c                 |   17 ++++----
 mm/hugetlb.c                     |   39 ++++++++++---------
 mm/memory.c                      |   37 +++++++++++++++---
 11 files changed, 232 insertions(+), 35 deletions(-)
 create mode 100644 arch/x86/lib/clear_page_32.S

-- 
1.7.7.6

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-08-16 19:42 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-16 15:15 [PATCH v3 0/7] Avoid cache trashing on clearing huge/gigantic page Kirill A. Shutemov
2012-08-16 15:15 ` [PATCH v3 1/7] THP: Use real address for NUMA policy Kirill A. Shutemov
2012-08-16 15:15 ` [PATCH v3 2/7] THP: Pass fault address to __do_huge_pmd_anonymous_page() Kirill A. Shutemov
2012-08-16 15:15 ` [PATCH v3 3/7] hugetlb: pass fault address to hugetlb_no_page() Kirill A. Shutemov
2012-08-16 15:15 ` [PATCH v3 4/7] mm: pass fault address to clear_huge_page() Kirill A. Shutemov
2012-08-16 15:15 ` [PATCH v3 5/7] x86: Add clear_page_nocache Kirill A. Shutemov
2012-08-16 15:15 ` [PATCH v3 6/7] mm: make clear_huge_page cache clear only around the fault address Kirill A. Shutemov
2012-08-16 16:16   ` Andrea Arcangeli
2012-08-16 16:43     ` Kirill A. Shutemov
2012-08-16 18:29       ` Andrea Arcangeli
2012-08-16 18:37         ` Kirill A. Shutemov
2012-08-16 19:42           ` Andrea Arcangeli
2012-08-16 15:15 ` [PATCH v3 7/7] x86: switch the 64bit uncached page clear to SSE/AVX v2 Kirill A. Shutemov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).