summaryrefslogtreecommitdiff
path: root/include/linux/cache.h
AgeCommit message (Collapse)Author
2010-03-03Rename .data.cacheline_aligned to .data..cacheline_aligned.Tim Abbott
Signed-off-by: Tim Abbott <tabbott@ksplice.com> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> Signed-off-by: Michal Marek <mmarek@suse.cz>
2008-04-28mm: move cache_line_size() to <linux/cache.h>Pekka Enberg
Not all architectures define cache_line_size() so as suggested by Andrew move the private implementations in mm/slab.c and mm/slob.c to <linux/cache.h>. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Reviewed-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2006-04-26Don't include linux/config.h from anywhere else in include/David Woodhouse
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-03-23[PATCH] Move read_mostly definition to asm/cache.hKyle McMartin
Seems like needless clutter having a bunch of #if defined(CONFIG_$ARCH) in include/linux/cache.h. Move the per architecture section definition to asm/cache.h, and keep the if-not-defined dummy case in linux/cache.h to catch architectures which don't implement the section. Verified that symbols still go in .data.read_mostly on parisc, and the compile doesn't break. Signed-off-by: Kyle McMartin <kyle@parisc-linux.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-10[PARISC] Add __read_mostly section for pariscHelge Deller
Flag a whole bunch of things as __read_mostly on parisc. Also flag a few branches as unlikely() and cleanup a bit of code. Signed-off-by: Helge Deller <deller@parisc-linux.org> Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
2006-01-08[PATCH] Change maxaligned_in_smp alignemnt macros to internodealigned_in_smp ↵Ravikiran G Thirumalai
macros ____cacheline_maxaligned_in_smp is currently used to align critical structures and avoid false sharing. It uses per-arch L1_CACHE_SHIFT_MAX and people find L1_CACHE_SHIFT_MAX useless. However, we have been using ____cacheline_maxaligned_in_smp to align structures on the internode cacheline size. As per Andi's suggestion, following patch kills ____cacheline_maxaligned_in_smp and introduces INTERNODE_CACHE_SHIFT, which defaults to L1_CACHE_SHIFT for all arches. Arches needing L3/Internode cacheline alignment can define INTERNODE_CACHE_SHIFT in the arch asm/cache.h. Patch replaces ____cacheline_maxaligned_in_smp with ____cacheline_internodealigned_in_smp With this patch, L1_CACHE_SHIFT_MAX can be killed Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org> Signed-off-by: Shai Fultheim <shai@scalex86.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-12-16[IA64] Add __read_mostly support for IA64Christoph Lameter
sparc64, i386 and x86_64 have support for a special data section dedicated to rarely updated data that is frequently read. The section was created to avoid false sharing of those rarely read data with frequently written kernel data. This patch creates such a data section for ia64 and will group rarely written data into this section. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
2005-07-10[SPARC64]: Add __read_mostly support.David S. Miller
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-07-07[PATCH] mostly_read data sectionChristoph Lameter
Add a new section called ".data.read_mostly" for data items that are read frequently and rarely written to like cpumaps etc. If these maps are placed in the .data section then these frequenly read items may end up in cachelines with data is is frequently updated. In that case all processors in an SMP system must needlessly reload the cachelines again and again containing elements of those frequently used variables. The ability to share these cachelines will allow each cpu in an SMP system to keep local copies of those shared cachelines thereby optimizing performance. Signed-off-by: Alok N Kataria <alokk@calsoftinc.com> Signed-off-by: Shobhit Dayal <shobhit@calsoftinc.com> Signed-off-by: Christoph Lameter <christoph@scalex86.org> Signed-off-by: Shai Fultheim <shai@scalex86.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2004-02-25[PATCH] Always put cache aligned code in own section, even for modulesRusty Russell
We put ____cacheline_aligned things in their own section, simply because we waste less space that way. Otherwise we end up padding innocent variables to the next cacheline to get the required alignment. There's no reason not to do this in modules, too.
2002-12-29[PATCH] promote the ALIGN() macroAndrew Morton
ALIGN() currently has global scope in <linux/cache.h>. This causes a compilation error in the defxx driver. Move ALIGN() to <linux/kernel.h> and change the defxx driver to use the generic macro in place of its own.
2002-08-27[PATCH] add L1_CACHE_SHIFT_MAXAndrew Morton
zone->lock and zone->lru_lock are two of the hottest locks in the kernel. Their usage patterns are quite independent. And they have just been put into the same structure. It is essential that they not fall into the same cacheline. That could be fixed by padding with L1_CACHE_BYTES. But the problem with this is that a kernel which was configured for (say) a PIII will perform poorly on SMP PIV. This will cause problems for kernel vendors. For example, RH currently ship PII and Athlon binaries. To get best SMP performance they will end up needing to ship a lot of differently configured kernels. To solve this we need to know, at compile time, the maximum L1 size which this kernel will ever run on. This patch adds L1_CACHE_SHIFT_MAX to every architecture's cache.h. Of course it'll break when newer chips come out with increased cacheline sizes. Better suggestions are welcome.
2002-03-04[PATCH] per-cpu areasRusty Russell
This is the Richard Henderson-approved, cleaner, brighter per-cpu patch.
2002-02-04v2.5.0.4 -> v2.5.0.5Linus Torvalds
- Patrick Mochel: driver model infrastructure, part 1 - Jens Axboe: more bio fixes, cleanups - Andrew Morton: release locking fixes - Al Viro: superblock/mount handling - Kai Germaschewski: AVM Fritz!Card ISDN driver - Christoph Hellwig: make cramfs SMP-safe.
2002-02-04v2.4.9.10 -> v2.4.9.11Linus Torvalds
- Neil Brown: md cleanups/fixes - Andrew Morton: console locking merge - Andrea Arkangeli: major VM merge
2002-02-04Import changesetLinus Torvalds