tmp_suning_uos_patched/include/asm-mips
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
..
dec zs: move to the serial subsystem 2007-07-18 08:38:22 -07:00
emma2rh [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
fw [MIPS] CFE: Make code remotely resemble Linux code. 2008-01-29 10:14:55 +00:00
ip32 [MIPS] IP32: More interrupt renumbering fixes. 2007-11-26 17:26:13 +00:00
jmr3927 [MIPS] txx9tmr clockevent/clocksource driver 2007-10-29 19:35:35 +00:00
lasat [MIPS] Lasat: Fix overlap of interrupt number ranges. 2007-11-15 23:21:50 +00:00
mach-atlas [MIPS] SNI: Fix mc146818_decode_year 2007-03-04 19:02:31 +00:00
mach-au1x00 au1xxx-ide: use hwif->dev 2008-02-01 23:09:31 +01:00
mach-bcm47xx [MIPS] Deforest the function pointer jungle in the time code. 2007-10-11 23:46:08 +01:00
mach-cobalt [MIPS] remove unneeded button check for reset 2008-01-29 10:15:00 +00:00
mach-db1x00 [MIPS] Alchemy: Renumber interrupts so irq_cpu can work. 2007-10-17 18:28:48 +01:00
mach-dec [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-emma2rh [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-excite include/asm-mips/: Spelling fixes 2008-02-03 16:57:20 +02:00
mach-generic [MIPS] Fix and cleanup the MIPS part of the (ab)use of CLOCK_TICK_RATE. 2007-11-02 16:13:48 +00:00
mach-ip22 [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-ip27 [MIPS] Always do the ARC64_TWIDDLE_PC thing. 2007-10-18 18:11:46 +01:00
mach-ip28 [MIPS] IP28 support 2008-01-29 10:14:58 +00:00
mach-ip32 [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mach-jazz [MIPS] Fix and cleanup the MIPS part of the (ab)use of CLOCK_TICK_RATE. 2007-11-02 16:13:48 +00:00
mach-jmr3927 [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mach-lasat [MIPS] Lasat: Fix overlap of interrupt number ranges. 2007-11-15 23:21:50 +00:00
mach-lemote [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-mips [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-mipssim [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-pb1x00 [MIPS] Alchemy: Renumber interrupts so irq_cpu can work. 2007-10-17 18:28:48 +01:00
mach-pnx8550 [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mach-rm [MIPS] Fix and cleanup the MIPS part of the (ab)use of CLOCK_TICK_RATE. 2007-11-02 16:13:48 +00:00
mach-sibyte [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-tx49xx [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-vr41xx [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mach-wrppmc include/asm-mips/: Spelling fixes 2008-02-03 16:57:20 +02:00
mach-yosemite [MIPS] Split up war.h 2007-10-11 23:46:07 +01:00
mips-boards [MIPS] Malta, Atlas: move an extern function declaration to the header file 2008-01-29 10:15:05 +00:00
pci Fix misspellings of "system", "controller", "interrupt" and "necessary". 2007-10-19 23:10:43 +02:00
pmc-sierra/msp71xx [MIPS] Delete CONFIG_MSP_FPGA 2008-01-29 10:15:01 +00:00
sgi include/asm-mips/: Spelling fixes 2008-02-03 16:57:20 +02:00
sibyte [MIPS] Remove CONFIG_SIBYTE_PT{1120,1125,SWARM} 2008-01-29 10:14:58 +00:00
sn include/asm-mips/: Spelling fixes 2008-02-03 16:57:20 +02:00
tx4927 [MIPS] TXx9 watchdog support for rbhma3100,rbhma4200,rbhma4500 2008-01-29 10:14:58 +00:00
tx4938 [MIPS] txx9tmr clockevent/clocksource driver 2007-10-29 19:35:35 +00:00
vr41xx [MIPS] Separate platform_device registration for VR41xx GPIO 2007-07-12 17:41:15 +01:00
xtalk [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
a.out.h aout: move STACK_TOP[_MAX] to asm/processor.h 2008-02-08 09:22:29 -08:00
abi.h [MIPS] signals: Share even more code. 2007-02-18 21:31:35 +00:00
addrspace.h [MIPS] Put cast inside macro instead of all the callers 2008-01-29 10:14:55 +00:00
asm.h [MIPS] IP28: added cache barrier to assembly routines 2008-01-29 10:14:58 +00:00
asmmacro-32.h [MIPS] Fix fpu_save_double on 64-bit. 2006-06-19 17:39:13 +01:00
asmmacro-64.h [MIPS] Fix fpu_save_double on 64-bit. 2006-06-19 17:39:13 +01:00
asmmacro.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
atomic.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
auxvec.h
barrier.h [MIPS] Make support for weakly ordered LL/SC a config option. 2007-07-20 18:57:39 +01:00
bcache.h [MIPS] SNI: remove unused pcimt_scache.c 2007-08-27 02:16:54 +01:00
bitops.h forbid asm/bitops.h direct inclusion 2007-10-19 11:53:41 -07:00
bootinfo.h [MIPS] RM: Collected changes 2008-01-29 10:14:59 +00:00
branch.h
break.h
bug.h [MIPS] Fix BUG(), BUG_ON() handling 2007-04-20 14:58:37 +01:00
bugs.h [MIPS] R4000/R4400 errata workarounds 2008-01-29 10:14:54 +00:00
byteorder.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
cache.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
cachectl.h
cacheflush.h [MIPS] Remove unused argument from kunmap_coherent(). 2007-04-27 16:20:24 +01:00
cacheops.h [MIPS] Cacheops.h: Fix typo. 2008-01-15 01:04:42 +00:00
checksum.h [MIPS] Fix wrong checksum for split TCP packets on 64-bit MIPS 2007-04-20 14:58:37 +01:00
cmpxchg.h Add cmpxchg64 and cmpxchg64_local to mips 2008-02-07 08:42:30 -08:00
compat-signal.h [MIPS] use compat_siginfo in rt_sigframe_n32 2007-06-26 19:57:33 +02:00
compat.h asm-*/compat.h: fix typo in comment 2008-02-03 16:32:51 +02:00
compiler.h [MIPS] cpu-bugs64.c: GCC 3.3 constraint workaround 2007-09-19 19:33:14 +01:00
cpu-features.h [MIPS] Fix use of smp_processor_id() in preemptible code. 2007-12-01 00:39:37 +00:00
cpu-info.h [MIPS] MT: Scheduler support for SMT 2008-01-29 10:14:57 +00:00
cpu.h [MIPS] Alchemy: Au1210/Au1250 CPU support 2008-01-29 10:14:59 +00:00
cputime.h
current.h
debug.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
delay.h [MIPS] R4000/R4400 daddiu erratum workaround 2008-01-29 10:14:55 +00:00
device.h Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
div64.h [MIPS] Change names of local variables to silence sparse 2007-07-10 17:33:06 +01:00
dma-mapping.h [MIPS] Don't claim we support dma_declare_coherent_memory - we don't. 2007-02-13 22:40:50 +00:00
dma.h [MIPS] IP28 support 2008-01-29 10:14:58 +00:00
ds1286.h
dsp.h
edac.h [MIPS] Polish <asm/edac.h>. 2007-08-27 02:16:59 +01:00
elf.h Cleanup asm/{elf,page,user}.h: #ifdef __KERNEL__ is no longer needed 2008-02-07 08:42:30 -08:00
emergency-restart.h
errno.h
fb.h fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
fcntl.h [MIPS] Fix value of O_TRUNC 2007-10-01 14:17:50 +01:00
fixmap.h [MIPS] fixmap: delete unused __set_fixmap, set_fixmap and set_fixmap_nocache 2008-01-29 10:15:00 +00:00
floppy.h cleanup floppy.h 2007-10-17 08:42:55 -07:00
fpregdef.h
fpu_emulator.h [MIPS] Unify mips_fpu_soft_struct and mips_fpu_hard_structs. 2006-06-19 17:39:18 +01:00
fpu.h remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
futex.h [MIPS] Fix possible hang in LL/SC futex loops. 2007-11-26 17:26:14 +00:00
gdb-stub.h
gpio.h [MIPS] Add generic GPIO support 2007-07-10 17:32:55 +01:00
gt64120.h [MIPS] time: Add GT641xx timer0 clockevent driver 2007-10-22 22:09:00 +01:00
hardirq.h
hazards.h [MIPS] R1: Fix hazard barriers to make kernels work on R2 also. 2007-10-11 23:46:19 +01:00
highmem.h [MIPS] Remove LIMITED_DMA support 2007-05-11 14:28:31 +01:00
hw_irq.h [MIPS] i8295 cleanups. 2007-10-11 23:46:04 +01:00
i8253.h [MIPS] Fix pcspeaker build. 2007-11-26 17:26:13 +00:00
i8259.h [MIPS] i8295 cleanups. 2007-10-11 23:46:04 +01:00
ide.h
inst.h [MIPS] Fix rdhwr_op definition. 2006-07-13 21:26:08 +01:00
inventory.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
io.h Remove dma_cache_(wback|inv|wback_inv) functions 2007-10-17 08:42:57 -07:00
ioctl.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
ioctls.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
ipcbuf.h
irq_cpu.h [MIPS] Define MIPS_CPU_IRQ_BASE in generic header 2007-02-06 16:53:08 +00:00
irq_gt641xx.h [MIPS] Add GT641xx IRQ routines. 2007-10-11 23:46:04 +01:00
irq_regs.h [MIPS] Complete fixes after removal of pt_regs argument to int handlers. 2006-10-08 02:38:28 +01:00
irq.h [MIPS] IRQ Affinity Support for SMTC on Malta Platform 2007-10-11 23:45:57 +01:00
irqflags.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
isadep.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
jazz.h [MIPS] JAZZ fixes 2007-10-11 23:46:00 +01:00
jazzdma.h [MIPS] JAZZ fixes 2007-10-11 23:46:00 +01:00
Kbuild [MIPS] Have headers_install install <asm/cachectl.h> and <asm/sysmips.h>. 2006-09-27 13:37:56 +01:00
kdebug.h move die notifier handling to common code 2007-05-08 11:15:04 -07:00
kexec.h kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
kmap_types.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
kspd.h [MIPS] kpsd and other AP/SP improvements. 2006-04-19 04:14:27 +02:00
linkage.h [MIPS] Sibyte: Replace SB1 cachecode with standard R4000 class cache code. 2007-10-11 23:46:05 +01:00
local.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
m48t35.h
m48t37.h
mc146818-time.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mc146818rtc.h
mips_mt.h [MIPS] MT: Enable coexistence of AP/SP with VSMP and SMTC. 2007-07-31 21:35:24 +01:00
mipsmtregs.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mipsprom.h [MIPS] RM: Collected changes 2008-01-29 10:14:59 +00:00
mipsregs.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
mman.h [PATCH] Remove final references to deprecated "MAP_ANON" page protection flag 2007-02-11 10:51:17 -08:00
mmu_context.h [MIPS] Kill num_online_cpus() loops. 2007-10-11 23:46:18 +01:00
mmu.h
mmzone.h [PATCH] Delete unused definitions of kvaddr_to_nid 2006-06-23 07:42:52 -07:00
module.h [MIPS] define Hit_Invalidate_I to Index_Invalidate_I for loongson2 2007-07-10 17:33:02 +01:00
msc01_ic.h [MIPS] MT: Reenable EIC support and add support for SOCit SC. 2007-05-11 14:28:31 +01:00
msgbuf.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
mutex.h
namei.h
nile4.h [MIPS] Add back support for LASAT platforms 2007-10-11 23:46:00 +01:00
paccess.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
page.h CONFIG_HIGHPTE vs. sub-page page tables. 2008-02-08 09:22:42 -08:00
param.h [MIPS] Make timer interrupt frequency configurable from kconfig. 2006-06-19 17:39:27 +01:00
parport.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
pci.h [MIPS] PCI: Always enable CONFIG_PCI_DOMAINS 2007-10-11 23:46:03 +01:00
percpu.h
pgalloc.h CONFIG_HIGHPTE vs. sub-page page tables. 2008-02-08 09:22:42 -08:00
pgtable-32.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
pgtable-64.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
pgtable-bits.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
pgtable.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
pmon.h [MIPS] PMON: Fix cpustart declaration. 2007-07-31 21:35:32 +01: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
prctl.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
prefetch.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
processor.h aout: move STACK_TOP[_MAX] to asm/processor.h 2008-02-08 09:22:29 -08:00
ptrace.h [MIPS] IP22: Fix warning. 2007-10-16 18:23:47 +01:00
qemu.h [MIPS] Implement clockevents for R4000-style cp0 count/compare interrupt 2007-10-11 23:46:09 +01:00
r4kcache.h [MIPS] Use real cache invalidate 2008-01-29 10:14:57 +00:00
reboot.h
reg.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
regdef.h
resource.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
rm9k-ocd.h [MIPS] Support for the RM9000-based Basler eXcite smart camera platform. 2006-06-19 17:39:26 +01:00
rtlx.h [MIPS] RTLX: Handle copy_*_user return values. 2007-03-17 01:03:29 +00:00
scatterlist.h Add CONFIG_DEBUG_SG sg validation 2007-10-22 21:20:03 +02:00
seccomp.h [MIPS] Fixup secure computing stuff. 2007-07-31 21:35:21 +01:00
sections.h [MIPS] Remove _fdata from asm-mips/sections.h 2007-02-06 16:53:15 +00:00
segment.h
semaphore.h kill DECLARE_MUTEX_LOCKED 2007-10-17 08:42:47 -07:00
sembuf.h
serial.h [MIPS] Put an end to <asm/serial.h>'s long and annyoing existence 2007-07-10 17:33:01 +01:00
setup.h [PATCH] cleanup asm/setup.h userspace visibility 2006-12-07 08:39:46 -08:00
sgialib.h [MIPS] Fix and cleanup the mess that a dozen prom_printf variants are. 2007-03-04 19:02:37 +00:00
sgiarcs.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
sgidefs.h
shmbuf.h
shmparam.h
sigcontext.h [MIPS] Add basic SMARTMIPS ASE support 2007-02-22 00:50:44 +00:00
siginfo.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
signal.h [MIPS] signals: Share even more code. 2007-02-18 21:31:35 +00:00
sim.h [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
smp-ops.h [MIPS] SMP: Call platform methods via ops structure. 2008-01-29 10:14:57 +00:00
smp.h [MIPS] SMP: Call platform methods via ops structure. 2008-01-29 10:14:57 +00:00
smtc_ipi.h [MIPS] SMTC: Fix build error. 2008-01-22 00:35:23 +00:00
smtc_proc.h [MIPS] MT: Improved multithreading support. 2006-04-19 04:14:28 +02:00
smtc.h [MIPS] SMTC: Move MIPS_CPU_IPI_IRQ definition into header. 2007-08-27 02:16:55 +01:00
sni.h [MIPS] RM: Collected changes 2008-01-29 10:14:59 +00: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 [MIPS] Fix sparsemem support. 2006-06-06 00:15:20 +01:00
spinlock_types.h
spinlock.h [MIPS] Make support for weakly ordered LL/SC a config option. 2007-07-20 18:57:39 +01:00
stackframe.h [MIPS] R4000/R4400 daddiu erratum workaround 2008-01-29 10:14:55 +00:00
stacktrace.h [MIPS] unwind_stack should return a value ... 2007-08-27 02:16:55 +01:00
stat.h
statfs.h
string.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
suspend.h
sysmips.h
system.h IP22ZILOG: fix lockup and sysrq 2007-11-29 09:24:53 -08:00
termbits.h [MIPS] tty: add the new ioctls and definitions. 2007-09-10 21:25:27 +01:00
termios.h [MIPS] tty: add the new ioctls and definitions. 2007-09-10 21:25:27 +01:00
thread_info.h Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2007-07-31 20:41:53 -07:00
time.h [MIPS] time: remove unused mips_timer_state() 2008-01-29 10:15:00 +00:00
timex.h [MIPS] Change get_cycles to always return 0. 2007-11-15 23:21:49 +00:00
titan_dep.h
tlb.h
tlbdebug.h [MIPS] Cleanup tlbdebug.h 2007-07-12 17:41:11 +01:00
tlbflush.h remove unused flush_tlb_pgtables 2007-10-19 11:53:34 -07:00
topology.h [MIPS] MT: Scheduler support for SMT 2008-01-29 10:14:57 +00:00
traps.h
txx9irq.h [MIPS] The irq_chip for TX39/TX49 SoCs 2007-08-27 02:16:52 +01:00
txx9tmr.h [MIPS] txx9tmr clockevent/clocksource driver 2007-10-29 19:35:35 +00:00
types.h remove strict ansi check from __u64 in asm/types.h 2007-10-17 08:42:53 -07:00
uaccess.h [MIPS] R4000/R4400 daddiu erratum workaround 2008-01-29 10:14:55 +00:00
ucontext.h
unaligned.h [MIPS] Optimize get_unaligned / put_unaligned implementations. 2007-10-11 23:46:15 +01:00
unistd.h [MIPS] Wire up the fallocate syscall. 2007-07-31 21:35:22 +01:00
user.h Sanitize the type of struct user.u_ar0 2008-02-07 08:42:30 -08:00
vga.h [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
vpe.h [MIPS] kpsd and other AP/SP improvements. 2006-04-19 04:14:27 +02:00
war.h [MIPS] R4000/R4400 errata workarounds 2008-01-29 10:14:54 +00:00
wbflush.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
xor.h