linux/arch
Will Deacon 5d3a551c28 mm: hugetlb: add arch hook for clearing page flags before entering pool
The core page allocator ensures that page flags are zeroed when freeing
pages via free_pages_check.  A number of architectures (ARM, PPC, MIPS)
rely on this property to treat new pages as dirty with respect to the data
cache and perform the appropriate flushing before mapping the pages into
userspace.

This can lead to cache synchronisation problems when using hugepages,
since the allocator keeps its own pool of pages above the usual page
allocator and does not reset the page flags when freeing a page into the
pool.

This patch adds a new architecture hook, arch_clear_hugepage_flags, so
that architectures which rely on the page flags being in a particular
state for fresh allocations can adjust the flags accordingly when a page
is freed into the pool.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Cc: Michal Hocko <mhocko@suse.cz>
Reviewed-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-10-09 16:22:24 +09:00
..
alpha mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
arm Kconfig: clean up the long arch list for the DEBUG_KMEMLEAK config option 2012-10-09 16:22:14 +09:00
arm64 Kconfig: clean up the "#if defined(arch)" list for exception-trace sysctl entry 2012-10-09 16:22:14 +09:00
avr32 cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
blackfin Kconfig: clean up the long arch list for the UID16 config option 2012-10-09 16:22:13 +09:00
c6x Merge branch 'uapi-prep' of git://git.infradead.org/users/dhowells/linux-headers 2012-10-07 07:55:10 +09:00
cris Kconfig: clean up the long arch list for the UID16 config option 2012-10-09 16:22:13 +09:00
frv Kconfig: clean up the long arch list for the DEBUG_BUGVERBOSE config option 2012-10-09 16:22:14 +09:00
h8300 Kconfig: clean up the long arch list for the UID16 config option 2012-10-09 16:22:13 +09:00
hexagon Merge branch 'uapi-prep' of git://git.infradead.org/users/dhowells/linux-headers 2012-10-07 07:55:10 +09:00
ia64 mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
m32r Kconfig: clean up the long arch list for the DEBUG_BUGVERBOSE config option 2012-10-09 16:22:14 +09:00
m68k Kconfig: clean up the long arch list for the DEBUG_BUGVERBOSE config option 2012-10-09 16:22:14 +09:00
microblaze Kconfig: clean up the long arch list for the DEBUG_KMEMLEAK config option 2012-10-09 16:22:14 +09:00
mips mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
mn10300 cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
openrisc Merge branch 'uapi-prep' of git://git.infradead.org/users/dhowells/linux-headers 2012-10-07 07:55:10 +09:00
parisc compat: move compat_siginfo_t definition to asm/compat.h 2012-10-06 03:05:16 +09:00
powerpc mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
s390 mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
score Merge branch 'uapi-prep' of git://git.infradead.org/users/dhowells/linux-headers 2012-10-07 07:55:10 +09:00
sh mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
sparc mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
tile mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
um Kconfig: clean up the long arch list for the UID16 config option 2012-10-09 16:22:13 +09:00
unicore32 mm: kill vma flag VM_RESERVED and mm->reserved_vm counter 2012-10-09 16:22:19 +09:00
x86 mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
xtensa cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
.gitignore
Kconfig Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-10-01 10:43:39 -07:00