android_kernel_xiaomi_sm8350/include/asm-ia64
David Gibson 9da61aef0f [PATCH] hugepage: Fix hugepage logic in free_pgtables()
free_pgtables() has special logic to call hugetlb_free_pgd_range() instead
of the normal free_pgd_range() on hugepage VMAs.  However, the test it uses
to do so is incorrect: it calls is_hugepage_only_range on a hugepage sized
range at the start of the vma.  is_hugepage_only_range() will return true
if the given range has any intersection with a hugepage address region, and
in this case the given region need not be hugepage aligned.  So, for
example, this test can return true if called on, say, a 4k VMA immediately
preceding a (nicely aligned) hugepage VMA.

At present we get away with this because the powerpc version of
hugetlb_free_pgd_range() is just a call to free_pgd_range().  On ia64 (the
only other arch with a non-trivial is_hugepage_only_range()) we get away
with it for a different reason; the hugepage area is not contiguous with
the rest of the user address space, and VMAs are not permitted in between,
so the test can't return a false positive there.

Nonetheless this should be fixed.  We do that in the patch below by
replacing the is_hugepage_only_range() test with an explicit test of the
VMA using is_vm_hugetlb_page().

This in turn changes behaviour for platforms where is_hugepage_only_range()
returns false always (everything except powerpc and ia64).  We address this
by ensuring that hugetlb_free_pgd_range() is defined to be identical to
free_pgd_range() (instead of a no-op) on everything except ia64.  Even so,
it will prevent some otherwise possible coalescing of calls down to
free_pgd_range().  Since this only happens for hugepage VMAs, removing this
small optimization seems unlikely to cause any trouble.

This patch causes no regressions on the libhugetlbfs testsuite - ppc64
POWER5 (8-way), ppc64 G5 (2-way) and i386 Pentium M (UP).

Signed-off-by: David Gibson <dwg@au1.ibm.com>
Cc: William Lee Irwin III <wli@holomorphy.com>
Acked-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-22 07:54:03 -08:00
..
sn Pull sn2-reduce-kmalloc-wrap into release branch 2006-03-21 08:22:56 -08:00
a.out.h
acpi-ext.h
acpi.h [IA64] Count disabled cpus as potential hot-pluggable CPUs 2006-02-14 15:37:58 -08:00
agp.h
asmmacro.h
atomic.h [PATCH] mutex subsystem, add atomic_xchg() to all arches 2006-01-09 15:59:17 -08:00
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bitops.h [FLS64]: generic version 2006-01-03 13:11:06 -08:00
break.h
bug.h [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
bugs.h
byteorder.h
cache.h [PATCH] Kill L1_CACHE_SHIFT_MAX 2006-01-08 20:13:39 -08:00
cacheflush.h
checksum.h
compat.h [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
cpu.h
cputime.h
current.h
cyclone.h
delay.h [IA64] disable preemption in udelay() 2005-12-16 10:00:24 -08:00
div64.h
dma-mapping.h [PATCH] ia64: re-implement dma_get_cache_alignment to avoid EXPORT_SYMBOL 2005-11-07 07:53:23 -08:00
dma.h
elf.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
emergency-restart.h
errno.h
fcntl.h [PATCH] Clean up struct flock definitions 2005-09-07 16:57:38 -07:00
fpswa.h
fpu.h
futex.h [PATCH] consolidate asm/futex.h 2006-01-08 20:13:39 -08:00
gcc_intrin.h
hardirq.h
hw_irq.h [PATCH] x86/x86_64: deferred handling of writes to /proc/irqxx/smp_affinity 2005-09-07 16:57:15 -07:00
ia32.h [IA64] Change SET_PERSONALITY to comply with comment in binfmt_elf.c. 2005-12-06 09:12:34 -08:00
ia64regs.h
ide.h [PATCH] ia64: drop arch-specific IDE MAX_HWIFS definition 2006-02-03 08:32:11 -08:00
intel_intrin.h [IA64] use icc defined constant 2006-02-07 08:49:27 -08:00
intrinsics.h
io.h [PATCH] /dev/mem: validate mmap requests 2006-01-08 20:14:02 -08:00
ioctl.h [PATCH] Generic ioctl.h 2006-01-10 08:01:34 -08:00
ioctls.h
iosapic.h [IA64] Minor cleanups - remove unnecessary function prototype in iosapic.h 2005-09-07 14:00:40 -07:00
ipcbuf.h
irq.h [IA64] Manual merge fix for 3 files 2005-09-08 14:27:13 -07:00
kdebug.h [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
kmap_types.h
kprobes.h [IA64] prevent accidental modification of args in jprobe handler 2006-01-13 14:45:21 -08:00
kregs.h
linkage.h
local.h [IA64] Fix missing parameter for local_add/sub 2005-12-07 11:30:11 -08:00
machvec_dig.h
machvec_hpsim.h
machvec_hpzx1_swiotlb.h [IA64] more robust zx1/sx1000 machvec support 2005-09-14 16:22:11 -07:00
machvec_hpzx1.h [IA64] more robust zx1/sx1000 machvec support 2005-09-14 16:22:11 -07:00
machvec_init.h
machvec_sn2.h Pull sn2-mmio-writes into release branch 2006-03-21 08:21:26 -08:00
machvec.h [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08:00
mc146818rtc.h
mca_asm.h [PATCH] MCA/INIT: use per cpu stacks 2005-09-11 14:08:41 -07:00
mca.h [IA64] support for cpu0 removal 2006-01-05 10:24:20 -08:00
meminit.h Pull sparsemem-v5 into release branch 2005-10-28 14:32:56 -07:00
mman.h [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
mmu_context.h [IA64] make mmu_context.h and tlb.c 80-column friendly 2005-11-03 14:43:50 -08:00
mmu.h
mmzone.h [PATCH] V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM 2005-10-04 13:21:13 -07:00
module.h
msgbuf.h
msi.h [PATCH] PCI: Change MSI to use physical delivery mode always 2005-11-10 16:09:18 -08:00
mutex.h [IA64] implement ia64 specific mutex primitives 2006-01-26 13:10:19 -08:00
namei.h
nodedata.h [PATCH] V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM 2005-10-04 13:21:13 -07:00
numa.h
numnodes.h
page.h [PATCH] hugepage: Fix hugepage logic in free_pgtables() 2006-03-22 07:54:03 -08:00
pal.h [IA64] pal cache flush patch 2006-01-16 15:44:53 -08:00
param.h
parport.h
patch.h
pci.h [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
percpu.h
perfmon_default_smpl.h
perfmon.h
pgalloc.h [IA64] 4-level page tables 2005-11-11 09:37:29 -08:00
pgtable.h [PATCH] Enable mprotect on huge pages 2006-03-22 07:54:03 -08:00
poll.h
posix_types.h
processor.h Pull sn2-mmio-writes into release branch 2006-03-21 08:21:26 -08:00
ptrace_offsets.h
ptrace.h [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
resource.h
rse.h
rwsem.h [PATCH] add sem_is_read/write_locked() 2005-10-29 21:40:35 -07:00
sal.h [IA64] avoid broken SAL_CACHE_FLUSH implementations 2006-02-02 13:25:54 -08:00
scatterlist.h
sections.h
segment.h
semaphore.h [IA64] Fix bug in ia64 specific down() function 2006-01-17 14:04:00 -08:00
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h [IA64] Delete MCA/INIT sigdelayed code 2006-01-26 13:23:27 -08:00
smp.h
socket.h [NET]: Introduce SO_{SND,RCV}BUFFORCE socket options 2005-08-29 15:31:35 -07:00
sockios.h
sparsemem.h [PATCH] V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM 2005-10-04 13:21:13 -07:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
stat.h
statfs.h
string.h
suspend.h
system.h Pull sn2-mmio-writes into release branch 2006-03-21 08:21:26 -08:00
termbits.h
termios.h
thread_info.h Pull sn2-mmio-writes into release branch 2006-03-21 08:21:26 -08:00
timex.h [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
tlb.h [PATCH] mm: tlb_finish_mmu forget rss 2005-10-29 21:40:37 -07:00
tlbflush.h [IA64] Use bitmaps for efficient context allocation/free 2005-10-31 14:36:05 -08:00
topology.h [PATCH] Export cpu topology in sysfs 2006-02-03 08:32:09 -08:00
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h [PATCH] ia64 basic __user annotations 2005-09-29 08:46:27 -07:00
ucontext.h
unaligned.h
uncached.h
unistd.h [IA64] unshare system call registration for ia64 2006-02-08 15:43:38 -08:00
unwind.h [IA64] MCA/INIT: remove obsolete unwind code 2005-09-11 14:09:34 -07:00
user.h
ustack.h
vga.h
xor.h