kernel-ark/arch/powerpc/kernel
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
..
vdso32 [PATCH] Mark unwind info for signal trampolines in vDSOs 2006-03-31 12:18:52 -08:00
vdso64 [PATCH] Mark unwind info for signal trampolines in vDSOs 2006-03-31 12:18:52 -08:00
align.c [PATCH] powerpc: Implement support for setting little-endian mode via prctl 2006-06-09 21:24:15 +10:00
asm-offsets.c powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
binfmt_elf32.c
btext.c
cpu_setup_6xx.S powerpc: Move cpu_setup_6xx.S and temp.c over to arch/powerpc 2006-03-27 19:15:26 +11:00
cpu_setup_power4.S [PATCH] powerpc: remove do-nothing cpu setup routines 2006-05-19 14:24:18 +10:00
cputable.c [PATCH] powerpc: Implement support for setting little-endian mode via prctl 2006-06-09 21:24:15 +10:00
crash_dump.c [PATCH] powerpc: Kdump header cleanup 2006-05-19 15:02:16 +10:00
crash.c [PATCH] powerpc: Disable and EOI interrupts in machine_crash_shutdown() 2006-04-22 18:44:25 +10:00
dma_64.c
entry_32.S powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
entry_64.S [PATCH] powerpc: Workaround for pSeries RTAS bug 2006-03-28 16:45:33 +11:00
firmware.c [PATCH] powerpc: Rename and export ppc64_firmware_features 2006-03-28 16:45:20 +11:00
fpu.S powerpc/64: Fix bug in setting floating-point exception mode 2006-02-07 13:55:30 +11:00
head_4xx.S
head_8xx.S [PATCH] powerpc: trivial: modify comments to refer to new location of files 2006-02-10 16:53:51 +11:00
head_32.S [PATCH] powerpc: fix altivec_unavailable_exception Oopses 2006-02-24 11:36:23 +11:00
head_44x.S [PATCH] powerpc: trivial: modify comments to refer to new location of files 2006-02-10 16:53:51 +11:00
head_64.S powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
head_booke.h [PATCH] powerpc: Fix Kernel FP unavail exception for BookE 2006-02-10 16:51:50 +11:00
head_fsl_booke.S [PATCH] powerpc: trivial: modify comments to refer to new location of files 2006-02-10 16:53:51 +11:00
ibmebus.c
idle_6xx.S powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
idle_power4.S powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
idle.c [PATCH] powerpc: Ensure runlatch is off in the idle loop 2006-04-13 09:27:22 -07:00
init_task.c
iomap.c [PATCH] powerpc: remove io_page_mask 2006-04-22 18:45:05 +10:00
iommu.c powerpc: Fix bug in iommu_alloc_coherent causing hang during boot 2006-06-10 18:17:35 +10:00
irq.c powerpc: iSeries has only 256 IRQs 2006-04-04 14:49:48 +10:00
kprobes.c [PATCH] powerpc/kprobes: fix singlestep out-of-line 2006-05-03 23:06:41 +10:00
l2cr_6xx.S powerpc: Move l2cr.S over to arch/powerpc 2006-03-27 15:22:28 +11:00
legacy_serial.c [PATCH] powerpc: legacy_serial loop cleanup 2006-03-27 14:48:54 +11:00
lparcfg.c [PATCH] powerpc: udbg_printf() formatting attribute 2006-05-19 15:02:19 +10:00
lparmap.c
machine_kexec_32.c
machine_kexec_64.c [PATCH] powerpc: Move crashkernel= handling into the kernel. 2006-05-19 15:02:18 +10:00
machine_kexec.c
Makefile powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
misc_32.S [PATCH] powerpc: remove do-nothing cpu setup routines 2006-05-19 14:24:18 +10:00
misc_64.S [PATCH] powerpc: remove do-nothing cpu setup routines 2006-05-19 14:24:18 +10:00
module_32.c powerpc: Move module.c over to arch/powerpc 2006-03-27 19:28:58 +11:00
module_64.c [PATCH] powerpc64: Fix loading of modules without a .toc section 2006-04-28 21:04:49 +10:00
nvram_64.c [PATCH] nvram_print_partitions cosmetic fixup 2006-04-29 18:08:05 +10:00
of_device.c [PATCH] powerpc: tidy-up of_register_driver()/driver_register() return values 2006-03-23 14:40:54 +11:00
paca.c [PATCH] powerpc: Allow non zero boot cpuids 2006-03-27 14:48:48 +11:00
pci_32.c [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
pci_64.c [PATCH] powerpc: iSeries PCI devices can now have a devpsec attribute 2006-05-24 16:08:56 +10:00
pci_direct_iommu.c
pci_dn.c [PATCH] powerpc: clean up iSeries PCI probe 2006-05-24 16:08:57 +10:00
pci_iommu.c [PATCH] powerpc: node-aware dma allocations 2006-06-09 21:24:01 +10:00
perfmon_fsl_booke.c powerpc: Move perfmon_fsl_booke.c over to arch/powerpc 2006-03-27 20:09:04 +11:00
pmc.c
ppc32.h
ppc_ksyms.c powerpc/ppc: export strncasecmp 2006-04-02 16:01:58 -05:00
proc_ppc64.c [PATCH] powerpc: Create /proc/rtas, /proc/ppc64/rtas if RTAS exists. 2006-05-19 14:35:32 +10:00
process.c [PATCH] powerpc: Implement PR_[GS]ET_UNALIGN prctls for powerpc 2006-06-09 21:24:16 +10:00
prom_init.c Merge branch 'merge' 2006-06-12 17:53:34 +10:00
prom_parse.c [PATCH] powerpc: fix of_parse_dma_window 2006-06-09 21:21:02 +10:00
prom.c powerpc: Use 64k pages without needing cache-inhibited large pages 2006-06-15 10:45:18 +10:00
ptrace32.c
ptrace-common.h [PATCH] powerpc: trivial: modify comments to refer to new location of files 2006-02-10 16:53:51 +11:00
ptrace.c [PATCH] powerpc: enable PPC_PTRACE_[GS]ETREGS on ppc32 2006-06-09 21:20:51 +10:00
rtas_flash.c [PATCH] powerpc: reorg RTAS delay code 2006-06-09 21:21:06 +10:00
rtas_pci.c Merge ../linux-2.6 2006-03-17 12:01:19 +11:00
rtas-proc.c [PATCH] powerpc: Avoid __initcall warnings 2006-04-13 09:27:26 -07:00
rtas-rtc.c [PATCH] powerpc: reorg RTAS delay code 2006-06-09 21:21:06 +10:00
rtas.c [PATCH] powerpc: reorg RTAS delay code 2006-06-09 21:21:06 +10:00
semaphore.c
setup_32.c [PATCH] powerpc: Parse early parameters earlier 2006-05-19 15:02:13 +10:00
setup_64.c [PATCH] powerpc: Kdump header cleanup 2006-05-19 15:02:16 +10:00
setup-common.c [PATCH] powerpc: Make early xmon logic immune to location of early parsing 2006-05-19 15:02:12 +10:00
setup.h [PATCH] powerpc: Make early xmon logic immune to location of early parsing 2006-05-19 15:02:12 +10:00
signal_32.c Merge branch 'merge' 2006-06-12 17:53:34 +10:00
signal_64.c Merge branch 'merge' 2006-06-12 17:53:34 +10:00
smp-tbsync.c
smp.c [PATCH] for_each_possible_cpu: powerpc 2006-03-29 13:44:15 +11:00
swsusp_32.S powerpc: Move swsusp.S over to arch/powerpc 2006-03-27 19:21:46 +11:00
sys_ppc32.c [PATCH] consolidate sys32/compat_adjtimex 2006-03-26 08:56:57 -08:00
syscalls.c [PATCH] powerpc: declare arch syscalls in <asm/syscalls.h> 2006-03-27 14:48:22 +11:00
sysfs.c [PATCH] powerpc: Allow devices to register with numa topology 2006-05-01 18:17:46 -07:00
systbl.S [PATCH] powerpc: wire up sys_[gs]et_robust_list 2006-05-23 10:35:32 -07:00
tau_6xx.c powerpc: Move cpu_setup_6xx.S and temp.c over to arch/powerpc 2006-03-27 19:15:26 +11:00
time.c [PATCH] powerpc: Remove stale iseries global 2006-04-22 18:46:11 +10:00
traps.c [PATCH] powerpc: Implement PR_[GS]ET_UNALIGN prctls for powerpc 2006-06-09 21:24:16 +10:00
udbg_16550.c [PATCH] powerpc: fix compile warning in udbg_init_maple_realmode 2006-02-07 21:51:52 +11:00
udbg.c [PATCH] powerpc: Add udbg-immortal kernel option 2006-06-09 21:24:10 +10:00
vdso.c [PATCH] powerpc vdso updates 2006-06-09 21:20:57 +10:00
vecemu.c
vector.S
vio.c [PATCH] powerpc: node-aware dma allocations 2006-06-09 21:24:01 +10:00
vmlinux.lds.S [PATCH] powerpc: make iSeries flattened device tree dynamic 2006-05-24 16:08:57 +10:00