linux/include
Chen, Kenneth W a0776ec8e9 [IA64] remove per-cpu ia64_phys_stacked_size_p8
It's not efficient to use a per-cpu variable just to store
how many physical stack register a cpu has.  Ever since the
incarnation of ia64 up till upcoming Montecito processor, that
variable has "glued" to 96. Having a variable in memory means
that the kernel is burning an extra cacheline access on every
syscall and kernel exit path.  Such "static" value is better
served with the instruction patching utility exists today.
Convert ia64_phys_stacked_size_p8 into dynamic insn patching.

This also has a pleasant side effect of eliminating access to
per-cpu area while psr.ic=0 in the kernel exit path. (fixable
for per-cpu DTC work, but why bother?)

There are some concerns with the default value that the instruc-
tion encoded in the kernel image.  It shouldn't be concerned.
The reasons are:

(1) cpu_init() is called at CPU initialization.  In there, we
    find out physical stack register size from PAL and patch
    two instructions in kernel exit code.  The code in question
    can not be executed before the patching is done.

(2) current implementation stores zero in ia64_phys_stacked_size_p8,
    and that's what the current kernel exit path loads the value with.
    With the new code, it is equivalent that we store reg size 96
    in ia64_phys_stacked_size_p8, thus creating a better safety net.
    Given (1) above can never fail, having (2) is just a bonus.

All in all, this patch allow one less memory reference in the kernel
exit path, thus reducing syscall and interrupt return latency; and
avoid polluting potential useful data in the CPU cache.

Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2007-02-06 15:04:18 -08:00
..
acpi ACPI: increase ACPI_MAX_REFERENCE_COUNT for larger systems 2007-01-02 00:18:52 -05:00
asm-alpha [PATCH] alpha: fix epoll syscall enumerations 2007-02-03 11:26:06 -08:00
asm-arm [ARM] 4111/1: Allow VFP to work with thread migration on SMP 2007-01-25 16:35:29 +00:00
asm-arm26 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-avr32 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-cris [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-frv [PATCH] fix frv headers_check 2007-02-01 16:17:05 -08:00
asm-generic Fix Maple PATA IRQ assignment. 2007-01-26 17:27:40 -05:00
asm-h8300 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-i386 [PATCH] i386 vDSO: use VM_ALWAYSDUMP 2007-01-26 13:50:58 -08:00
asm-ia64 [IA64] remove per-cpu ia64_phys_stacked_size_p8 2007-02-06 15:04:18 -08:00
asm-m32r [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-m68k [PATCH] m68k: uaccess.h needs sched.h 2007-01-30 08:26:45 -08:00
asm-m68knommu [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-mips [PATCH] mm: mremap correct rmap accounting 2007-01-30 08:33:32 -08:00
asm-parisc [ARM] pass vma for flush_anon_page() 2007-01-08 19:49:54 +00:00
asm-powerpc [PATCH] dma-mapping.h stubs fix 2007-01-30 08:39:21 -08:00
asm-ppc Merge branch 'for_paulus' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc 2006-12-11 16:31:42 +11:00
asm-s390 [PATCH] FD_ZERO build fix 2007-01-11 18:18:22 -08:00
asm-sh [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sh64 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sparc [SPARC32]: Fix over-optimization by GCC near ip_fast_csum. 2007-02-01 20:24:35 -08:00
asm-sparc64 [SPARC64]: Fix of_iounmap() region release. 2006-12-31 14:06:05 -08:00
asm-um [PATCH] uml-i386: fix build breakage with CONFIG_HIGHMEM 2007-02-01 16:17:06 -08:00
asm-v850 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-x86_64 [PATCH] x86-64: define dma noncoherent API functions 2007-02-03 11:26:06 -08:00
asm-xtensa [PATCH] FD_ZERO build fix 2007-01-11 18:18:22 -08:00
crypto [CRYPTO] lib: table driven multiplications in GF(2^128) 2006-12-06 18:38:55 -08:00
keys
linux libata: Fix ata_busy_wait() kernel docs 2007-02-02 11:52:05 -05:00
math-emu
media V4L/DVB (5001): Add two required headers on kernel 2.6.20-rc1 2006-12-27 14:20:46 -02:00
mtd
net [TCP]: Restore SKB socket owner setting in tcp_transmit_skb(). 2007-01-26 01:04:55 -08:00
pcmcia [PATCH] pcmcia: multifunction card handling fixes 2006-12-04 20:09:15 -05:00
rdma IB: Fix ib_dma_alloc_coherent() wrapper 2006-12-15 13:57:26 -08:00
rxrpc
scsi [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
sound [PATCH] ALSA: Fix sysfs breakage 2007-01-29 14:32:53 -08:00
video [PATCH] sstfb: add sysfs interface 2006-12-13 09:05:55 -08:00
Kbuild