linux/arch
Andrea Arcangeli 8ee53820ed thp: mmu_notifier_test_young
For GRU and EPT, we need gup-fast to set referenced bit too (this is why
it's correct to return 0 when shadow_access_mask is zero, it requires
gup-fast to set the referenced bit).  qemu-kvm access already sets the
young bit in the pte if it isn't zero-copy, if it's zero copy or a shadow
paging EPT minor fault we relay on gup-fast to signal the page is in
use...

We also need to check the young bits on the secondary pagetables for NPT
and not nested shadow mmu as the data may never get accessed again by the
primary pte.

Without this closer accuracy, we'd have to remove the heuristic that
avoids collapsing hugepages in hugepage virtual regions that have not even
a single subpage in use.

->test_young is full backwards compatible with GRU and other usages that
don't have young bits in pagetables set by the hardware and that should
nuke the secondary mmu mappings when ->clear_flush_young runs just like
EPT does.

Removing the heuristic that checks the young bit in
khugepaged/collapse_huge_page completely isn't so bad either probably but
I thought it was worth it and this makes it reliable.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-01-13 17:32:46 -08:00
..
alpha thp: mm: define MADV_HUGEPAGE 2011-01-13 17:32:38 -08:00
arm thp: pte alloc trans splitting 2011-01-13 17:32:40 -08:00
avr32 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/avr32-2.6 2011-01-13 12:06:58 -08:00
blackfin Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
cris Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
frv BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
h8300 Merge branch 'master' into for-next 2010-12-22 18:57:02 +01:00
ia64 thp: pte alloc trans splitting 2011-01-13 17:32:40 -08:00
m32r Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2010-10-28 16:16:39 -07:00
m68k Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2011-01-13 10:24:52 -08:00
m68knommu m68knommu: Need to check __get_user()/__put_user() result 2011-01-07 14:07:00 +01:00
microblaze Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze 2011-01-11 11:13:46 -08:00
mips thp: mm: define MADV_HUGEPAGE 2011-01-13 17:32:38 -08:00
mn10300 kernel: clean up USE_GENERIC_SMP_HELPERS 2011-01-13 08:03:08 -08:00
parisc thp: mm: define MADV_HUGEPAGE 2011-01-13 17:32:38 -08:00
powerpc thp: alter compound get_page/put_page 2011-01-13 17:32:39 -08:00
s390 Merge branch 'kvm-updates/2.6.38' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2011-01-13 10:14:24 -08:00
score Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2010-10-28 16:16:39 -07:00
sh thp: pte alloc trans splitting 2011-01-13 17:32:40 -08:00
sparc thp: pte alloc trans splitting 2011-01-13 17:32:40 -08:00
tile arch/tile: handle rt_sigreturn() more cleanly 2010-12-17 16:59:29 -05:00
um thp: pte alloc trans splitting 2011-01-13 17:32:40 -08:00
x86 thp: mmu_notifier_test_young 2011-01-13 17:32:46 -08:00
xtensa thp: mm: define MADV_HUGEPAGE 2011-01-13 17:32:38 -08:00
.gitignore
Kconfig [S390] mutex: Introduce arch_mutex_cpu_relax() 2011-01-05 12:47:31 +01:00