Martin Schwidefsky
2f569afd9c
CONFIG_HIGHPTE vs. sub-page page tables.
...
Background: I've implemented 1K/2K page tables for s390. These sub-page
page tables are required to properly support the s390 virtualization
instruction with KVM. The SIE instruction requires that the page tables
have 256 page table entries (pte) followed by 256 page status table entries
(pgste). The pgstes are only required if the process is using the SIE
instruction. The pgstes are updated by the hardware and by the hypervisor
for a number of reasons, one of them is dirty and reference bit tracking.
To avoid wasting memory the standard pte table allocation should return
1K/2K (31/64 bit) and 2K/4K if the process is using SIE.
Problem: Page size on s390 is 4K, page table size is 1K or 2K. That means
the s390 version for pte_alloc_one cannot return a pointer to a struct
page. Trouble is that with the CONFIG_HIGHPTE feature on x86 pte_alloc_one
cannot return a pointer to a pte either, since that would require more than
32 bit for the return value of pte_alloc_one (and the pte * would not be
accessible since its not kmapped).
Solution: The only solution I found to this dilemma is a new typedef: a
pgtable_t. For s390 pgtable_t will be a (pte *) - to be introduced with a
later patch. For everybody else it will be a (struct page *). The
additional problem with the initialization of the ptl lock and the
NR_PAGETABLE accounting is solved with a constructor pgtable_page_ctor and
a destructor pgtable_page_dtor. The page table allocation and free
functions need to call these two whenever a page table page is allocated or
freed. pmd_populate will get a pgtable_t instead of a struct page pointer.
To get the pgtable_t back from a pmd entry that has been installed with
pmd_populate a new function pmd_pgtable is added. It replaces the pmd_page
call in free_pte_range and apply_to_pte_range.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-08 09:22:42 -08:00
..
iseries
[POWERPC] include/asm-powerpc/: Spelling fixes
2007-12-20 16:17:44 +11:00
8xx_immap.h
[POWERPC] include/asm-powerpc/: Spelling fixes
2007-12-20 16:17:44 +11:00
8253pit.h
a.out.h
aout: move STACK_TOP[_MAX] to asm/processor.h
2008-02-08 09:22:29 -08:00
abs_addr.h
agp.h
x86: remove flush_agp_mappings()
2008-01-30 13:34:07 +01:00
asm-compat.h
[POWERPC] Use mtocrf instruction in asm when CONFIG_POWER4_ONLY=y
2007-04-13 03:55:13 +10:00
atomic.h
[POWERPC] Implement atomic{, 64}_{read, write}() without volatile
2007-08-17 11:01:58 +10:00
auxvec.h
backlight.h
bitops.h
ext4: Add ext4_find_next_bit()
2008-01-28 23:58:27 -05:00
bootx.h
btext.h
bug.h
Fix WARN_ON() on bitfield ops
2007-07-31 21:12:07 -07:00
bugs.h
byteorder.h
cache.h
[POWERPC] Add __read_mostly support for powerpc
2007-07-10 22:00:56 +10:00
cacheflush.h
[POWERPC] DEBUG_PAGEALLOC for 32-bit
2007-04-13 04:09:39 +10:00
cell-pmu.h
[POWERPC] cell: add cbe_node_to_cpu function
2007-04-23 21:44:38 +02:00
cell-regs.h
[POWERPC] cell: Add Cell memory controller register defs and expose it
2007-10-09 21:01:56 +10:00
checksum.h
[NET]: POWERPC checksum annotations and cleanups.
2006-12-02 21:23:20 -08:00
clk_interface.h
[POWERPC] clk.h interface for platforms
2007-10-03 09:11:56 +10:00
compat.h
asm-*/compat.h: fix typo in comment
2008-02-03 16:32:51 +02:00
cpm.h
[POWERPC] CPM: Move definition of buffer descriptor to cpm.h
2008-01-28 08:31:06 -06:00
cpm1.h
[POWERPC] CPM: Move definition of buffer descriptor to cpm.h
2008-01-28 08:31:06 -06:00
cpm2.h
[POWERPC] CPM: Move definition of buffer descriptor to cpm.h
2008-01-28 08:31:06 -06:00
cputable.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
cputhreads.h
[POWERPC] Cleanup SMT thread handling
2007-12-03 13:56:25 +11:00
cputime.h
taskstats scaled time cleanup
2008-02-06 10:41:00 -08:00
current.h
[POWERPC] Include stddef.h in asm-powerpc/current.h to get offsetof
2007-03-09 15:03:24 +11:00
dbdma.h
[POWERPC] Xserve cpu-meter driver
2006-12-04 20:39:30 +11:00
dcr-mmio.h
Use dcr_host_t.base in dcr_unmap()
2007-10-15 14:29:49 -04:00
dcr-native.h
[POWERPC] 4xx: PCIe indirect DCR spinlock fix.
2008-02-06 21:02:57 -06:00
dcr-regs.h
[POWERPC] 4xx: Improve support for 4xx indirect DCRs
2007-12-23 13:12:11 -06:00
dcr.h
[POWERPC] Compile fixes for arch/powerpc dcr code
2007-02-07 14:03:23 +11:00
delay.h
device.h
[POWERPC] Refactor 64 bits DMA operations
2006-12-04 20:38:40 +11:00
div64.h
dma-mapping.h
[POWERPC] Add set_dma_ops() to match get_dma_ops()
2008-01-31 12:11:09 +11:00
dma.h
scheduled OSS driver removal
2008-02-06 10:41:02 -08:00
edac.h
[POWERPC] EDAC ECC software scrubber
2007-03-09 15:03:25 +11:00
eeh.h
[POWERPC] Merge 32 and 64 bits asm-powerpc/io.h
2006-12-04 20:39:05 +11:00
eeh_event.h
[POWERPC] EEH: rm un-needed data
2007-03-22 22:52:55 +11:00
elf.h
[POWERPC] Switch to generic compat_binfmt_elf code
2008-02-07 20:40:18 +11:00
emergency-restart.h
errno.h
exception.h
[POWERPC] Move lowlevel runlatch calls under cpu feature control
2007-09-14 01:33:22 +10:00
fb.h
fbdev: detect primary display device
2007-07-17 10:23:11 -07:00
fcntl.h
firmware.h
[POWERPC] celleb: Add support for native CBE
2007-12-11 13:34:40 +11:00
floppy.h
cleanup floppy.h
2007-10-17 08:42:55 -07:00
fs_pd.h
[POWERPC] 85xx: Killed <asm/mpc85xx.h>
2007-10-11 09:14:31 -05:00
futex.h
[PATCH] mm: pagefault_{disable,enable}()
2006-12-07 08:39:21 -08:00
grackle.h
hardirq.h
heathrow.h
highmem.h
[POWERPC] Copy over headers from arch/ppc to arch/powerpc that we need
2007-08-22 22:43:29 -05:00
hvcall.h
[POWERPC] Add H_ILLAN_ATTRIBUTES hcall number
2007-07-11 13:24:40 +10:00
hvconsole.h
hvcserver.h
hw_irq.h
powerpc: fixup hard_irq_disable semantics
2007-05-11 08:29:34 -07:00
hydra.h
[POWERPC] Copy over headers from arch/ppc to arch/powerpc that we need
2007-08-22 22:43:29 -05:00
i8259.h
[POWERPC] Fix CHRP platforms with only 8259
2006-10-25 13:49:22 +10:00
ibmebus.h
[POWERPC] ibmebus: Move to of_device and of_platform_driver, match eHCA and eHEA drivers
2007-10-17 22:30:08 +10:00
ide.h
ide: remove stale ide.h "configuration options"
2008-01-25 22:17:08 +01:00
immap_86xx.h
[POWERPC] 86xx: fix guts_set_dmacr() and add guts_set_pmuxcr_dma() to immap_86xx.h
2007-12-11 13:57:18 -06:00
immap_cpm2.h
[POWERPC] cpm2: Infrastructure code cleanup.
2007-10-04 11:02:04 -05:00
immap_qe.h
[POWERPC] QE: Add ability to upload QE firmware
2008-01-23 19:34:06 -06:00
io-defs.h
[POWERPC] Merge 32 and 64 bits asm-powerpc/io.h
2006-12-04 20:39:05 +11:00
io.h
[POWERPC] Make isa_mem_base common to 32 and 64 bits
2007-12-11 15:43:34 +11:00
ioctl.h
ioctls.h
iommu.h
iommu sg: powerpc: convert iommu to use the IOMMU helper
2008-02-05 09:44:11 -08:00
ipcbuf.h
ipic.h
[POWERPC] ipic: add new interrupts introduced by new chip
2007-12-11 13:57:18 -06:00
irq.h
[POWERPC] 86xx: Remove unused IRQ defines
2008-01-28 09:19:16 -06:00
irq_regs.h
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
2006-10-05 15:10:12 +01:00
irqflags.h
Kbuild
remove include/asm-*/ipc.h
2007-10-17 08:42:55 -07:00
kdebug.h
x86: optimize page faults like all other achitectures and kill notifier cruft
2007-10-16 09:42:50 -07:00
kdump.h
kexec.h
[POWERPC] kdump shutdown hook support
2008-01-25 22:52:50 +11:00
keylargo.h
kgdb.h
[POWERPC] Copy over headers from arch/ppc to arch/powerpc that we need
2007-08-22 22:43:29 -05:00
kmap_types.h
kprobes.h
kprobes: support kretprobe blacklist
2007-10-16 09:43:10 -07:00
libata-portmap.h
Fix Maple PATA IRQ assignment.
2007-01-26 17:27:40 -05:00
linkage.h
lmb.h
[POWERPC] Fix handling of memreserve if the range lands in highmem
2008-01-23 19:29:08 -06:00
local.h
local_t: powerpc extension
2007-05-08 11:15:20 -07:00
lppaca.h
[POWERPC] Donate idle CPU cycles on dedicated partitions
2007-06-14 22:29:58 +10:00
lv1call.h
[POWERPC] PS3: System-bus rework
2007-06-28 19:16:38 +10:00
machdep.h
[POWERPC] Implement arch disable/enable irq hooks.
2007-12-21 22:13:35 +11:00
macio.h
mc146818rtc.h
mediabay.h
ppc: fix #ifdef-s in mediabay driver (take 2)
2008-02-06 02:57:50 +01:00
mman.h
mmu-8xx.h
[POWERPC] Split out asm-ppc/mmu.h portions for PowerPC 8xx
2007-07-03 03:00:28 -05:00
mmu-40x.h
[POWERPC] 40x MMU
2007-08-20 07:28:48 -05:00
mmu-44x.h
[POWERPC] Remove fixup_bigphys_addr() for arch/powerpc to avoid link error
2007-05-17 21:11:13 +10:00
mmu-fsl-booke.h
[POWERPC] Split out asm-ppc/mmu.h portions for Freescale Book-E
2007-07-03 03:00:16 -05:00
mmu-hash32.h
[POWERPC] Kill typedef-ed structs for hash PTEs and BATs
2007-06-14 22:30:16 +10:00
mmu-hash64.h
[POWERPC] Provide a way to protect 4k subpages when using 64k pages
2008-01-24 10:06:01 +11:00
mmu.h
[POWERPC] 40x MMU
2007-08-20 07:28:48 -05:00
mmu_context.h
remove asm/bitops.h includes
2007-10-19 11:53:41 -07:00
mmzone.h
[POWERPC] We don't define CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
2007-05-10 21:28:13 +10:00
module.h
[POWERPC] Generic BUG for powerpc
2006-12-11 16:35:07 +11:00
mpc8xx.h
[POWERPC] 8xx: Get rid of conditional includes of board specific setup
2008-01-28 08:31:04 -06:00
mpc52xx.h
[POWERPC] Add common clock setting routine mpc52xx_psc_set_clkdiv()
2008-01-26 15:32:18 -07:00
mpc52xx_psc.h
[POWERPC] mpc512x: Add MPC512x PSC support to MPC52xx psc driver
2008-02-06 14:05:40 -07:00
mpc86xx.h
[POWERPC] kill isa_{io,mem}_base definitions for !PCI
2007-06-29 01:56:43 -05:00
mpc512x.h
[POWERPC] mpc512x: Basic platform support
2008-02-06 14:03:10 -07:00
mpc8260.h
[POWERPC] 82xx: Embedded Planet EP8248E support
2008-01-23 19:34:43 -06:00
mpic.h
[POWERPC] pasemi: Distribute interrupts evenly across cpus
2007-12-28 09:22:25 -06:00
msgbuf.h
mutex.h
namei.h
nvram.h
include/asm-powerpc/nvram.h needs list.h
2008-02-05 09:44:08 -08:00
of_device.h
[POWERPC] Move of_device allocation into of_device.[ch]
2007-10-17 22:30:07 +10:00
of_platform.h
[POWERPC] Enable RTC for Ebony and Walnut (v2)
2008-01-25 07:07:26 -06:00
ohare.h
oprofile_impl.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
paca.h
taskstats scaled time cleanup
2008-02-06 10:41:00 -08:00
page.h
CONFIG_HIGHPTE vs. sub-page page tables.
2008-02-08 09:22:42 -08:00
page_32.h
Cleanup asm/{elf,page,user}.h: #ifdef __KERNEL__ is no longer needed
2008-02-07 08:42:30 -08:00
page_64.h
Cleanup asm/{elf,page,user}.h: #ifdef __KERNEL__ is no longer needed
2008-02-07 08:42:30 -08:00
param.h
parport.h
parport->dev driver model support
2007-05-08 11:15:05 -07:00
pasemi_dma.h
pasemi: DMA engine management library
2008-01-28 15:04:21 -08:00
pci-bridge.h
[POWERPC] Remove update_bridge_resource
2008-01-23 19:32:30 -06:00
pci.h
[POWERPC] Merge PCI resource allocation & assignment
2007-12-20 16:18:09 +11:00
percpu.h
POWERPC: use generic per cpu
2008-01-30 23:27:58 +01:00
pgalloc-32.h
CONFIG_HIGHPTE vs. sub-page page tables.
2008-02-08 09:22:42 -08:00
pgalloc-64.h
CONFIG_HIGHPTE vs. sub-page page tables.
2008-02-08 09:22:42 -08:00
pgalloc.h
[POWERPC] Remove arch/powerpc's dependence on asm-ppc/pg{alloc,table}.h
2007-05-02 20:04:30 +10:00
pgtable-4k.h
[POWERPC] Size swapper_pg_dir correctly
2007-09-19 15:25:34 +10:00
pgtable-64k.h
[POWERPC] Provide a way to protect 4k subpages when using 64k pages
2008-01-24 10:06:01 +11:00
pgtable-ppc32.h
[POWERPC] Fix swapper_pg_dir size when CONFIG_PTE_64BIT=y on FSL_BOOKE
2007-12-06 13:11:04 -06:00
pgtable-ppc64.h
ppc64: SPARSEMEM_VMEMMAP support
2007-10-16 09:42:51 -07:00
pgtable.h
[POWERPC] Start factoring pgtable-ppc32.h and pgtable-ppc64.h
2007-06-14 22:30:15 +10:00
pmac_feature.h
[POWERPC] Change include protections to ASM_POWERPC
2007-05-17 21:10:15 +10:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
[POWERPC] pasemi: PA6T oprofile support
2007-04-24 21:31:51 +10:00
pmi.h
[CELL] pmi: remove support for mutiple devices.
2007-07-20 21:41:34 +02:00
poll.h
Consolidate asm/poll.h
2007-05-11 08:29:34 -07:00
posix_types.h
asm-*/posix_types.h: scrub __GLIBC__
2008-02-08 09:22:34 -08:00
ppc-pci.h
[POWERPC] iSeries: Call iSeries_pcibios_init from setup_arch
2007-12-11 13:42:32 +11:00
ppc_asm.h
[POWERPC] Fix modpost warnings from head*.S on ppc32
2007-09-14 08:53:36 -05:00
processor.h
aout: move STACK_TOP[_MAX] to asm/processor.h
2008-02-08 09:22:29 -08:00
prom.h
[POWERPC] Add of_translate_dma_address
2007-12-11 15:43:35 +11:00
ps3.h
[POWERPC] PS3: Add logical performance monitor driver support
2008-01-25 22:52:53 +11:00
ps3av.h
ps3: use symbolic names for video modes
2008-02-06 10:41:17 -08:00
ps3fb.h
[POWERPC] PS3: Frame buffer system-bus rework
2007-06-28 19:16:42 +10:00
ps3stor.h
[POWERPC] PS3: Storage Driver Core
2007-06-28 19:19:20 +10:00
pSeries_reconfig.h
ptrace.h
[POWERPC] Use generic compat_sys_ptrace
2008-02-07 20:40:21 +11:00
qe.h
[POWERPC] QE: Add ability to upload QE firmware
2008-01-23 19:34:06 -06:00
qe_ic.h
[POWERPC] QEIC: Implement pluggable handlers, fix MPIC cascading
2007-10-08 08:38:57 -05:00
reg.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
reg_8xx.h
reg_booke.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
reg_fsl_emb.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
resource.h
rheap.h
[POWERPC] User rheap from arch/powerpc/lib
2007-05-09 23:28:17 -05:00
rtas.h
Revert "[POWERPC] Fix RTAS os-term usage on kernel panic"
2007-12-03 09:39:45 +11:00
rtc.h
rwsem.h
[POWERPC] Prevent direct inclusion of <asm/rwsem.h>.
2007-09-22 14:49:21 +10:00
scatterlist.h
Add CONFIG_DEBUG_SG sg validation
2007-10-22 21:20:03 +02:00
seccomp.h
sections.h
semaphore.h
kill DECLARE_MUTEX_LOCKED
2007-10-17 08:42:47 -07:00
sembuf.h
serial.h
setjmp.h
[POWERPC] Make setjmp/longjmp code usable outside of xmon
2008-01-25 22:52:50 +11:00
setup.h
[PATCH] cleanup asm/setup.h userspace visibility
2006-12-07 08:39:46 -08:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h
Convert cpu_sibling_map to be a per cpu variable
2007-10-16 09:42:50 -07:00
smu.h
[POWERPC] include/asm-powerpc/: Spelling fixes
2007-12-20 16:17:44 +11:00
socket.h
[NET]: Introducing socket mark socket option.
2008-01-31 19:27:19 -08:00
sockios.h
[NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution
2007-04-25 22:24:04 -07:00
sparsemem.h
[POWERPC] PS3: Remove lpar address workaround
2008-01-25 22:52:53 +11:00
spinlock.h
[PATCH] Directed yield: direct yield of spinlocks for powerpc
2006-10-01 00:39:22 -07:00
spinlock_types.h
spu.h
Merge branch 'linux-2.6'
2008-01-24 10:07:21 +11:00
spu_csa.h
[POWERPC] spufs: rework class 0 and 1 interrupt handling
2007-12-21 19:46:20 +11:00
spu_info.h
[POWERPC] spufs: Add /lslr, /dma_info and /proxydma files
2006-12-04 20:39:45 +11:00
spu_priv1.h
[POWERPC] cell: wrap master run control bit
2007-12-21 19:45:05 +11:00
sstep.h
[POWERPC] Added kprobes support to ppc32
2007-02-06 22:55:19 -06:00
stat.h
statfs.h
string.h
[STRING]: Move strcasecmp/strncasecmp to lib/string.c
2007-04-26 01:54:39 -07:00
suspend.h
[POWERPC] Fix suspend states again
2007-05-02 20:04:30 +10:00
synch.h
syscalls.h
[POWERPC] Consolidate sys_sigaltstack
2007-06-14 22:29:57 +10:00
systbl.h
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
system.h
Merge branch 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
2008-02-07 09:02:26 -08:00
tce.h
[POWERPC] Use 4kB iommu pages even on 64kB-page systems
2006-11-01 14:52:48 +11:00
termbits.h
[POWERPC] Enable arbitary speed tty ioctls and split input/output speed
2007-07-10 22:03:29 +10:00
termios.h
[PATCH] consolidate line discipline number definitions
2007-02-11 10:51:26 -08:00
thread_info.h
remove unused TIF_NOTIFY_RESUME flag
2007-07-31 15:39:38 -07:00
time.h
[POWERPC] Fix hardware IRQ time accounting problem.
2007-12-06 16:08:59 +11:00
timex.h
[POWERPC] Cell timebase bug workaround
2006-10-25 11:54:18 +10:00
tlb.h
[POWERPC] Include pagemap.h in asm/powerpc/tlb.h
2007-10-03 12:02:43 +10:00
tlbflush.h
[POWERPC] Fix oops related to 4xx flush_tlb_page modification
2007-11-09 03:51:14 -06:00
topology.h
Convert cpu_sibling_map to be a per cpu variable
2007-10-16 09:42:50 -07:00
tsi108.h
[POWERPC] Generalize tsi108 PCI setup
2007-05-08 11:54:20 +10:00
tsi108_irq.h
[POWERPC] Change include protections to ASM_POWERPC
2007-05-17 21:10:15 +10:00
tsi108_pci.h
[POWERPC] Change include protections to ASM_POWERPC
2007-05-17 21:10:15 +10:00
types.h
remove strict ansi check from __u64 in asm/types.h
2007-10-17 08:42:53 -07:00
uaccess.h
[POWERPC] Add inatomic versions of __get_user and __put_user
2007-04-13 04:09:38 +10:00
ucc.h
[POWERPC] qe: miscellaneous code improvements and fixes to the QE library
2007-10-08 08:38:15 -05:00
ucc_fast.h
ucc_geth: Implement Transmit on Demand support
2007-04-28 11:01:04 -04:00
ucc_slow.h
[POWERPC] qe: miscellaneous code improvements and fixes to the QE library
2007-10-08 08:38:15 -05:00
ucontext.h
udbg.h
[POWERPC] 4xx: Add early udbg support for 40x processors
2007-12-23 13:13:03 -06:00
uic.h
[POWERPC] Add arch/powerpc driver for UIC, PPC4xx interrupt controller
2007-04-24 21:32:01 +10:00
unaligned.h
uninorth.h
unistd.h
[POWERPC] Provide a way to protect 4k subpages when using 64k pages
2008-01-24 10:06:01 +11:00
user.h
Sanitize the type of struct user.u_ar0
2008-02-07 08:42:30 -08:00
vdso.h
[POWERPC] Fix vDSO page count calculation
2007-02-13 15:35:52 +11:00
vdso_datapage.h
[POWERPC] vdso: Fixes for cache block sizes
2007-11-20 13:56:31 +11:00
vga.h
vio.h
[POWERPC] iSeries: Fix section mismatch in viodsasd
2008-02-06 16:30:00 +11:00
xilinx_intc.h
[POWERPC] Virtex: add xilinx interrupt controller driver
2007-10-03 07:23:14 -05:00
xmon.h
[POWERPC] add support for stopping spus from xmon
2006-10-25 14:20:22 +10:00
xor.h