On Fri, Mar 27, 2015 at 06:11:44AM -0500, Christoph Lameter wrote: > On Fri, 27 Mar 2015, Peter Zijlstra wrote: > > > > We could align the base on 8 bytes to gain an extra bit in the pointer > > > and use that bit to indicate the running state. Then these sites can > > > spin on that bit while we can change the actual base pointer. > > > > Even though tvec_base has ____cacheline_aligned stuck on, most are > > allocated using kzalloc_node() which does not actually respect that but > > already guarantees a minimum u64 alignment, so I think we can use that > > third bit without too much magic. > > Create a new slab cache for this purpose that does the proper aligning? That is certainly a possibility, but we'll only ever allocate nr_cpus-1 entries from it, a whole new slab cache might be overkill. What's not clear to me is why that thing is allocated at all, AFAICT something like: static DEFINE_PER_CPU(struct tvec_base, tvec_bases); Should do the right thing and be much simpler. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>