[head tinderbox] failure on sparc64/sun4v
Robert Watson
rwatson at FreeBSD.org
Wed Jun 3 23:35:38 UTC 2009
On Wed, 3 Jun 2009, Marcel Moolenaar wrote:
>> Is there a reason not just to use __aligned(64) or the like on the first
>> entry of the MD PCPU structure for sun4v to avoid future MI pcpu changes
>> from causing similar discomfort for the MD pcpu parts? Also, do we know
>> why these alignment/sizing requirements exist for struct pcpu on sun4v but
>> not other platforms? If this is about packing pcpu structures into
>> properly aligned cache lines, again __aligned() might be the right approach
>> to take...
>
> Adding __aligned(xx) doesn't make it aligned. For example, malloc(3) only
> aligns at 16-byte boundaries, so any user-space structure that has
> __aligned(x>16) must manually make sure that this is actually the case by
> over-allocating and then adjusting the pointer to an x>16 aligned address.
> Likewise for the kernel, though it's easier in the kernel to get something
> that's page-aligned... FYI,
I wan't sure if that was the problem that caused the alignment code in this
case. However, I agree that malloc(9)'s lack of alignment support is a
problem, and one that should be pretty easy to resolve by simply putting a bit
of over-allocation code in malloc(9), and adding a malloc_aligned(9)
variation, or perhaps just an M_CACHEALIGN flag.
Robert N M Watson
Computer Laboratory
University of Cambridge
More information about the freebsd-current
mailing list