lkml.org 
[lkml]   [2010]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 12/35] workqueue: update cwq alignement
On Tue, Jun 29, 2010 at 06:09:35PM +0200, Tejun Heo wrote:
> Hello,
>
> On 06/29/2010 06:01 PM, Frederic Weisbecker wrote:
> > So, imagine you allocate your struct with alloc_percpu(align).
> >
> > The per cpu pointer is 0x400 (purely imagination).
> >
> > Now you have two cpus and they have the following base offsets for
> > per cpu allocations:
> >
> > CPU 0 = 0xf1000000
> > CPU 1 = 0xf2000000
> >
> > So, the true pointers for your cpu workqueue structs will be:
> >
> > CPU 0 = 0xf1000400
> > CPU 1 = 0xf2000400
> >
> > These addresses are aligned like you wanted to, and it seems it is what
> > matters, to store these addresses in the work flags.
>
> Yes.
>
> > So why does the size of the struct need to be aligned too?
>
> Where am I doing that?


Ah well, yesterday there was a BUILD_BUG_ON on init_workqueues that checked
this structure size was well aligned. Now that I check again, it seems to have
disappeared after you updated the patch.



>
> > All you want is that the two above addresses are aligned. Now why
> > the size of the struct itself needs this alignment too. That's the
> > obscure point for me. If it's useless, this could avoid all this
> > alignment maintainance, except during the allocation itself.
>
> What alignment maintenance? Are you talking about the UP code? If
> you're talking about the UP code, the ugliness there is because the
> current UP __alloc_percpu() can't honor the alignment parameter.


Heh no, it's about a leftover in your patchset that you have fixed
now.


> Heh, it seems I'm still lost. Care to give one more shot at it? :-)


My bad, I haven't looked your updated patch in detail... :)



\
 
 \ /
  Last update: 2010-06-29 18:19    [W:0.148 / U:0.208 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site