linux/arch/sparc/include/asm
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
..
agp.h
apb.h
apc.h
asi.h sparc64: Niagara-4 bzero/memset, plus use MRU stores in page copy. 2012-10-05 13:45:26 -07:00
asm-offsets.h
asm.h
asmmacro.h sparc32: add support for run-time patching of leon/sun single instructions 2012-05-27 23:52:43 -07:00
atomic.h
atomic_32.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
atomic_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
auxio.h
auxio_32.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
auxio_64.h
auxvec.h
backoff.h
barrier.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
barrier_32.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
barrier_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
bbc.h
bitext.h
bitops.h
bitops_32.h
bitops_64.h sparc: Use popc when possible for ffs/__ffs/ffz. 2011-08-02 21:28:53 -07:00
bitsperlong.h
btext.h
bug.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
bugs.h
byteorder.h
cache.h sparc32: Remove completely unused code from asm/cache.h 2012-05-19 21:15:37 -07:00
cacheflush.h sparc32: use flushi when run-time patching in per_cpu_patch 2012-05-20 13:33:36 -07:00
cacheflush_32.h sparc32: Move cache and TLB flushes over to method ops. 2012-05-13 20:49:31 -07:00
cacheflush_64.h sparc32: use flushi when run-time patching in per_cpu_patch 2012-05-20 13:33:36 -07:00
cachetlb_32.h sparc32: Move cache and TLB flushes over to method ops. 2012-05-13 20:49:31 -07:00
chafsr.h
checksum.h
checksum_32.h
checksum_64.h
chmctrl.h
clock.h
cmpxchg.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
cmpxchg_32.h sparc32: remove runtime btfix support 2012-05-14 14:05:09 -07:00
cmpxchg_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
compat.h compat: move compat_siginfo_t definition to asm/compat.h 2012-10-06 03:05:16 +09:00
compat_signal.h
contregs.h sparc32: Remove sun4{,c} control reg definitions from contregs.h. 2012-05-11 21:29:17 -07:00
cpu_type.h sparc32: Remove sun4 and sun4c from enum sparc_cpu. 2012-05-12 00:23:23 -07:00
cpudata.h
cpudata_32.h sparc32: generic clockevent support 2012-04-15 10:28:50 -07:00
cpudata_64.h
cputime.h
current.h
dcr.h
dcu.h
delay.h
delay_32.h
delay_64.h
device.h
display7seg.h
dma-mapping.h sparc32,leon: always support leon in ioport 2012-05-27 23:52:53 -07:00
dma.h sparc32: Convert mmu_* interfaces from btfixup to method ops. 2012-05-13 13:57:05 -07:00
ebus_dma.h
ecc.h
eeprom.h
elf.h
elf_32.h cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
elf_64.h sparc64: Add detection for features new in SPARC-T4. 2012-08-18 23:02:36 -07:00
emergency-restart.h
envctrl.h
errno.h
estate.h
exec.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
fb.h
fbio.h
fcntl.h
fhc.h
floppy.h
floppy_32.h sparc: Kill mmu_{un,}lockarea(). 2012-05-13 13:23:16 -07:00
floppy_64.h sparc64: Remove pointless assignment in floppy support. 2012-05-14 20:59:25 -07:00
fpumacro.h
ftrace.h
futex.h
futex_32.h
futex_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
gpio.h gpiolib/arches: Centralise bolierplate asm/gpio.h 2012-05-11 18:00:14 -06:00
hardirq.h
hardirq_32.h
hardirq_64.h
head.h
head_32.h sparc32: Kill unused defines from asm/head_32.h 2012-05-11 21:43:11 -07:00
head_64.h
highmem.h sparc32: move kmap_init() to highmem.c 2012-07-26 16:46:17 -07:00
hugetlb.h mm: hugetlb: add arch hook for clearing page flags before entering pool 2012-10-09 16:22:24 +09:00
hvtramp.h
hw_irq.h
hypervisor.h sparc64: Add hypervisor interfaces for SPARC-T4 perf counter access. 2012-08-18 23:03:53 -07:00
ide.h
idprom.h
intr_queue.h
io-unit.h
io.h sparc: add {read,write}*_be routines 2011-05-12 13:44:29 -07:00
io_32.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
io_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
ioctl.h
ioctls.h
iommu.h
iommu_32.h
iommu_64.h
ipcbuf.h
irq.h
irq_32.h sparc32: genirq support 2011-04-19 22:11:40 -07:00
irq_64.h nmi watchdog: do not use cpp symbol in Kconfig 2012-03-23 16:58:31 -07:00
irqflags.h
irqflags_32.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
irqflags_64.h sparc/irqs: Do not trace arch_local_{*,irq_*} functions 2011-07-06 08:00:29 -07:00
jsflash.h
jump_label.h static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]() 2012-02-24 10:05:59 +01:00
Kbuild word-at-a-time: make the interfaces truly generic 2012-05-26 11:33:40 -07:00
kdebug.h
kdebug_32.h
kdebug_64.h
kgdb.h
kmap_types.h
kprobes.h
kvm_para.h kvmclock: Add functions to check if the host has stopped the vm 2012-04-08 12:48:59 +03:00
ldc.h
leon.h sparc32,leon: drop leon_init() 2012-07-26 16:46:16 -07:00
leon_amba.h sparc32,leon: always include leon_kernel in build 2012-05-27 23:52:46 -07:00
leon_pci.h PCI: Make the struct pci_dev * argument of pci_fixup_irqs const. 2011-07-22 08:26:06 -07:00
linkage.h
lsu.h
machines.h sparc32: Trivial removal of sun4c references in comments. 2012-05-12 00:35:45 -07:00
mbus.h sparc32: Remove cypress cpu support. 2012-05-15 10:22:00 -07:00
mc146818rtc.h
mc146818rtc_32.h
mc146818rtc_64.h
mdesc.h sparc64: Probe cpu page size support more portably. 2012-09-06 19:01:25 -07:00
memctrl.h
mman.h
mmu.h
mmu_32.h
mmu_64.h
mmu_context.h
mmu_context_32.h sparc32: centralize all mmu context handling in srmmu.c 2012-07-26 16:46:16 -07:00
mmu_context_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
mmzone.h Fix node_start/end_pfn() definition for mm/page_cgroup.c 2011-06-27 14:13:09 -07:00
module.h
msgbuf.h
msi.h
mutex.h
mxcc.h
nmi.h
ns87303.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
obio.h sparc32: move smp ipi to method ops 2012-05-14 14:05:07 -07:00
openprom.h
openpromio.h
oplib.h
oplib_32.h sparc: fix format string argument for prom_printf() 2012-10-02 23:20:34 -04:00
oplib_64.h sparc: fix format string argument for prom_printf() 2012-10-02 23:20:34 -04:00
page.h
page_32.h sparc32: drop sparc_unmapped_base 2012-07-26 16:46:16 -07:00
page_64.h
param.h
parport.h
pbm.h
pci.h
pci_32.h PCI: collapse pcibios_resource_to_bus 2012-02-23 20:19:04 -07:00
pci_64.h PCI: collapse pcibios_resource_to_bus 2012-02-23 20:19:04 -07:00
pcic.h sparc32: added CONFIG_PCIC_PCI Kconfig setting 2011-06-02 14:32:37 -07:00
pcr.h sparc64: Add PCR ops for SPARC-T4. 2012-08-18 23:26:19 -07:00
percpu.h
percpu_32.h
percpu_64.h
perf_event.h
perfctr.h sparc64: Abstract away PIC register accesses. 2012-08-18 23:26:14 -07:00
pgalloc.h
pgalloc_32.h sparc32: drop quicklist 2012-07-26 16:46:16 -07:00
pgalloc_64.h sparc64: use RCU page table freeing 2011-07-25 20:57:10 -07:00
pgtable.h
pgtable_32.h sparc32: drop unused BAD_PAGE stuff 2012-07-26 16:46:16 -07:00
pgtable_64.h sparc: Kill mmu_{un,}lockarea(). 2012-05-13 13:23:16 -07:00
pgtsrmmu.h sparc32: srmmu_probe now knows about leon too 2012-05-27 23:52:51 -07:00
pil.h
poll.h
posix_types.h bury __kernel_nlink_t, make internal nlink_t consistent 2012-05-30 21:04:50 -04:00
processor.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
processor_32.h Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-23 10:59:07 -07:00
processor_64.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc 2012-05-24 15:10:28 -07:00
prom.h irq_domain: Centralize definition of irq_dispose_mapping() 2012-02-26 16:48:06 -07:00
psr.h sparc32: handle leon in cpu.c 2012-05-27 23:52:45 -07:00
psrcompat.h
pstate.h sparc64: Fix spelling of CAMELLIA in CFR macro name and comment. 2012-08-28 12:08:48 -07:00
ptrace.h Revert strace hiccups fix. 2012-10-05 20:39:04 -07:00
resource.h
ross.h
rwsem.h
sbi.h
scatterlist.h
scratchpad.h
seccomp.h
sections.h sparc32: add support for run-time patching of leon/sun single instructions 2012-05-27 23:52:43 -07:00
sembuf.h
serial.h
setup.h sparc32: Remove unused empty_bad_page{,_table} declarations. 2012-05-19 21:45:08 -07:00
sfafsr.h
sfp-machine.h
sfp-machine_32.h
sfp-machine_64.h
shmbuf.h
shmparam.h
shmparam_32.h sparc32: Remove sun4 and sun4c from enum sparc_cpu. 2012-05-12 00:23:23 -07:00
shmparam_64.h
sigcontext.h sparc: Allow handling signals when stack is corrupted. 2011-08-20 17:14:54 -07:00
siginfo.h compat: move compat_siginfo_t definition to asm/compat.h 2012-10-06 03:05:16 +09:00
signal.h sparc: make SA_NOMASK a synonym of SA_NODEFER 2012-01-10 16:30:54 -08:00
smp.h
smp_32.h sparc32: Kill unused hard_smp{4m,4d,leon}_processor_id() inlined. 2012-05-14 14:23:57 -07:00
smp_64.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
socket.h net: Add framework to allow sending packets with customized CRC. 2012-02-24 01:37:35 -08:00
sockios.h
sparsemem.h
spinlock.h
spinlock_32.h sparc32: unbreak arch_write_unlock() 2011-08-15 14:35:19 -07:00
spinlock_64.h sparc64: remove unnecessary macros from spinlock_64.h 2011-08-15 14:35:18 -07:00
spinlock_types.h
spitfire.h sparc64: Future proof Niagara cpu detection. 2011-09-16 14:21:33 -07:00
stacktrace.h
starfire.h
stat.h
statfs.h
string.h
string_32.h sparc32: Remove inline strncmp "optimization" for constant counts. 2012-05-11 19:53:29 -07:00
string_64.h
sunbpp.h
swab.h
swift.h
switch_to.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
switch_to_32.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
switch_to_64.h Disintegrate asm/system.h for Sparc 2012-03-28 18:30:03 +01:00
syscall.h
syscalls.h
termbits.h
termios.h sparc: remove several unnecessary module.h include instances 2011-10-31 19:30:54 -04:00
thread_info.h
thread_info_32.h TIF_RESTORE_SIGMASK can be set only when TIF_SIGPENDING is set 2012-06-01 12:58:50 -04:00
thread_info_64.h Revert strace hiccups fix. 2012-10-05 20:39:04 -07:00
timer.h
timer_32.h sparc32: remove runtime btfix support 2012-05-14 14:05:09 -07:00
timer_64.h
timex.h
timex_32.h sparc32: generic clockevent support 2012-04-15 10:28:50 -07:00
timex_64.h
tlb.h
tlb_32.h
tlb_64.h sparc: mmu_gather rework 2011-05-25 08:39:13 -07:00
tlbflush.h
tlbflush_32.h sparc32: Move cache and TLB flushes over to method ops. 2012-05-13 20:49:31 -07:00
tlbflush_64.h sparc: mmu_gather rework 2011-05-25 08:39:13 -07:00
topology.h
topology_32.h
topology_64.h sched/numa: Rewrite the CONFIG_NUMA sched domain support 2012-05-09 15:00:55 +02:00
trap_block.h
traps.h sparc32: Put back SPARC_BRANCH. 2012-05-11 20:57:29 -07:00
tsb.h sparc: Access kernel TSB using physical addressing when possible. 2011-08-05 00:53:57 -07:00
tsunami.h
ttable.h
turbosparc.h
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess.h sparc: Fix user_addr_max() definition. 2012-05-24 13:41:58 -07:00
uaccess_32.h sparc: use the new generic strnlen_user() function 2012-05-26 11:33:54 -07:00
uaccess_64.h sparc: use the new generic strnlen_user() function 2012-05-26 11:33:54 -07:00
uctx.h
unaligned.h
unistd.h compat: fs: Generic compat_sys_sendfile implementation 2012-10-02 21:35:55 -04:00
upa.h
user.h
utrap.h
vaddrs.h sparc32: drop fixmap.h 2012-07-26 16:46:16 -07:00
vga.h BUG: headers with BUG/BUG_ON etc. need linux/bug.h 2012-03-04 17:54:34 -05:00
viking.h
vio.h powerpc+sparc/vio: Modernize driver registration 2012-03-28 11:33:24 +11:00
visasm.h
watchdog.h
winmacro.h sparc32: Implement hard_smp_processor_id() via instruction patching. 2012-05-14 13:31:38 -07:00
xor.h
xor_32.h
xor_64.h sparc64: Future proof Niagara cpu detection. 2011-09-16 14:21:33 -07:00