Subject: Re: problems in linux-next (Was: Re: linux-next: Tree for December 1)

From: Tejun Heo <[email-masked]>
Date: Tue, 01 Dec 2009 23:50:10 +0900

Hello,

On 12/01/2009 07:03 PM, Stephen Rothwell wrote:
>> WARNING: at include/linux/percpu.h:157 __create_workqueue_key+0x1c0/0x1d0()
>> Modules linked in:

Argh... The warning is about requested alignment larger than
SMP_CACHE_BYTES.  93fba1c02ec10870a9d41085ef036b6a44cb0234 aligns cwqs
to 8 bytes and later one will push it to 128 bytes so that color codes
for flushes can be put there too.  As the number of cwqs will be
significantly reduced and cwq is supposed to be aligned to cacheline
anyway, 128 byte alignment in itself isn't too bad and percpu
allocator can handle it just fine.

The problem is that on UP configurations.  Percpu memory allocator
becomes a simple wrapper around kmalloc and there's no way to specify
larger alignment when requesting memory from kmalloc.

It would be best if there's a clean way to allocate memory with
alignment larger than SMP_CACHE_BYTES.  If not, I think I'll add a
separate cache for cwqs on UP so that the alignment requirement can be
met.  Is there any way to get better aligned memory without creating a
separate cache or allocating larger memory and aligning by chopping
off?

Thanks.

-- 
tejun