kernel-ark/include/asm-powerpc
Paul Mackerras bf72aeba2f powerpc: Use 64k pages without needing cache-inhibited large pages
Some POWER5+ machines can do 64k hardware pages for normal memory but
not for cache-inhibited pages.  This patch lets us use 64k hardware
pages for most user processes on such machines (assuming the kernel
has been configured with CONFIG_PPC_64K_PAGES=y).  User processes
start out using 64k pages and get switched to 4k pages if they use any
non-cacheable mappings.

With this, we use 64k pages for the vmalloc region and 4k pages for
the imalloc region.  If anything creates a non-cacheable mapping in
the vmalloc region, the vmalloc region will get switched to 4k pages.
I don't know of any driver other than the DRM that would do this,
though, and these machines don't have AGP.

When a region gets switched from 64k pages to 4k pages, we do not have
to clear out all the 64k HPTEs from the hash table immediately.  We
use the _PAGE_COMBO bit in the Linux PTE to indicate whether the page
was hashed in as a 64k page or a set of 4k pages.  If hash_page is
trying to insert a 4k page for a Linux PTE and it sees that it has
already been inserted as a 64k page, it first invalidates the 64k HPTE
before inserting the 4k HPTE.  The hash invalidation routines also use
the _PAGE_COMBO bit, to determine whether to look for a 64k HPTE or a
set of 4k HPTEs to remove.  With those two changes, we can tolerate a
mix of 4k and 64k HPTEs in the hash table, and they will all get
removed when the address space is torn down.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-06-15 10:45:18 +10:00
..
iseries [PATCH] powerpc: merge the rest of the vio code 2006-04-29 18:02:02 +10:00
8253pit.h
a.out.h
abs_addr.h
agp.h
asm-compat.h
atomic.h [PATCH] powerpc: native atomic_add_unless 2006-02-24 14:06:02 +11:00
auxvec.h
backlight.h
bitops.h [PATCH] remove powerpc bitops in favor of existing generic bitops 2006-05-24 16:08:58 +10:00
bootx.h
btext.h
bug.h [PATCH] git-powerpc: WARN was a dumb idea 2006-03-28 20:48:54 +11:00
bugs.h
byteorder.h
cache.h
cacheflush.h
checksum.h
compat.h
cputable.h [PATCH] powerpc: Implement support for setting little-endian mode via prctl 2006-06-09 21:24:15 +10:00
cputime.h
current.h
dbdma.h
delay.h
div64.h
dma-mapping.h
dma.h
eeh_event.h [PATCH] powerpc/pseries: clear PCI failure counter if no new failures 2006-04-22 18:46:13 +10:00
eeh.h [PATCH] powerpc: remove io_page_mask 2006-04-22 18:45:05 +10:00
elf.h [PATCH] powerpc vdso updates 2006-06-09 21:20:57 +10:00
emergency-restart.h
errno.h
fcntl.h
firmware.h [PATCH] powerpc: Rename and export ppc64_firmware_features 2006-03-28 16:45:20 +11:00
floppy.h [PATCH] powerpc: make ISA floppies work again 2006-03-28 16:45:36 +11:00
futex.h [PATCH] lightweight robust futexes updates 2006-03-27 08:44:49 -08:00
grackle.h
hardirq.h
heathrow.h
hvcall.h [PATCH] powerpc: Extends HCALL interface for InfiniBand usage 2006-04-01 22:37:00 +11:00
hvconsole.h [PATCH] powerpc: hvc_console updates 2006-03-28 16:45:26 +11:00
hvcserver.h
hw_irq.h
i8259.h
ibmebus.h
ide.h
io.h Merge branch 'merge' 2006-04-29 16:15:57 +10:00
ioctl.h
ioctls.h
iommu.h [PATCH] powerpc: node-aware dma allocations 2006-06-09 21:24:01 +10:00
ipc.h
ipcbuf.h
ipic.h
irq.h powerpc: iSeries has only 256 IRQs 2006-04-04 14:49:48 +10:00
kdebug.h [PATCH] Notifier chain update: API changes 2006-03-27 08:44:50 -08:00
kdump.h [PATCH] powerpc: Kdump header cleanup 2006-05-19 15:02:16 +10:00
kexec.h [PATCH] powerpc: Move crashkernel= handling into the kernel. 2006-05-19 15:02:18 +10:00
keylargo.h
kmap_types.h
kprobes.h
linkage.h
lmb.h [PATCH] powerpc: Remove calculation of io hole 2006-03-22 15:04:30 +11:00
local.h
lppaca.h
machdep.h powerpc: Fix define_machine so machine_is() works from modules 2006-04-23 10:42:04 +10:00
macio.h
mc146818rtc.h
mediabay.h
mman.h
mmu_context.h powerpc: Remove unused paca->pgdir field 2006-06-12 18:38:21 +10:00
mmu.h powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
mmzone.h
module.h
mpic.h
msgbuf.h
mutex.h
namei.h
nvram.h
of_device.h
ohare.h
oprofile_impl.h [PATCH] powerpc: Remove oprofile spinlock backtrace code 2006-03-29 13:44:16 +11:00
paca.h powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
page_32.h
page_64.h [PATCH] powerpc: Fix pagetable bloat for hugepages 2006-04-28 15:02:51 +10:00
page.h [PATCH] powerpc vdso updates 2006-06-09 21:20:57 +10:00
param.h
parport.h
pci-bridge.h [PATCH] powerpc: remove LogicalSlot from pci_dn 2006-05-24 16:08:56 +10:00
pci.h
percpu.h [PATCH] for_each_possible_cpu: powerpc 2006-03-29 13:44:15 +11:00
pgalloc.h [PATCH] powerpc: Fix pagetable bloat for hugepages 2006-04-28 15:02:51 +10:00
pgtable-4k.h powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
pgtable-64k.h powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
pgtable.h powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
pmac_feature.h [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
poll.h [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
posix_types.h
ppc_asm.h
ppc-pci.h [PATCH] powerpc: properly configure DDR/P5IOC children devs 2006-03-16 16:55:07 +11:00
processor.h [PATCH] powerpc: Implement PR_[GS]ET_UNALIGN prctls for powerpc 2006-06-09 21:24:16 +10:00
prom.h [PATCH] powerpc: Add of_parse_dma_window() 2006-05-19 15:02:21 +10:00
pSeries_reconfig.h
ptrace.h [PATCH] powerpc: enable PPC_PTRACE_[GS]ETREGS on ppc32 2006-06-09 21:20:51 +10:00
reg_8xx.h
reg.h [PATCH] powerpc: oprofile support for POWER6 2006-06-09 21:24:05 +10:00
resource.h
rtas.h [PATCH] powerpc: reorg RTAS delay code 2006-06-09 21:21:06 +10:00
rtc.h
rwsem.h
scatterlist.h
seccomp.h
sections.h
semaphore.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h [PATCH] powerpc: Allow non zero boot cpuids 2006-03-27 14:48:48 +11:00
smu.h
socket.h
sockios.h
sparsemem.h
spinlock_types.h
spinlock.h
spu_csa.h
spu.h [PATCH] powerpc: cell: Add numa id to struct spu 2006-05-01 18:17:46 -07:00
sstep.h
stat.h
statfs.h
string.h powerpc: fix strncasecmp prototype 2006-03-25 09:41:40 -08:00
synch.h
syscalls.h [PATCH] powerpc: declare arch syscalls in <asm/syscalls.h> 2006-03-27 14:48:22 +11:00
system.h [NET]: Allow skb headroom to be overridden 2006-03-31 02:27:06 -08:00
tce.h [PATCH] powerpc: kill union tce_entry 2006-04-29 18:07:54 +10:00
termbits.h [PATCH] Add CMSPAR to termbits.h for powerpc and alpha 2006-05-26 11:55:46 -07:00
termios.h
thread_info.h powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
time.h
timex.h
tlb.h
tlbflush.h
topology.h [PATCH] powerpc: implement pcibus_to_node and pcibus_to_cpumask 2006-06-09 21:21:08 +10:00
types.h [PATCH] 2TB files: add blkcnt_t 2006-03-26 08:57:00 -08:00
uaccess.h powerpc: Fix incorrect might_sleep in __get_user/__put_user on kernel addresses 2006-05-03 23:06:46 +10:00
ucontext.h
udbg.h [PATCH] powerpc: udbg_printf() formatting attribute 2006-05-19 15:02:19 +10:00
unaligned.h
uninorth.h
unistd.h [PATCH] powerpc: wire up sys_[gs]et_robust_list 2006-05-23 10:35:32 -07:00
user.h
vdso_datapage.h [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
vdso.h
vga.h
vio.h [PATCH] powerpc: merge the rest of the vio code 2006-04-29 18:02:02 +10:00
xmon.h
xor.h