[PATCH 1/2] ARM: vmlinux.lds.S: do not hardcode cacheline size as 32 bytes

Nicolas Pitre nico at fluxnic.net
Mon Jan 16 14:35:43 EST 2012


On Mon, 16 Jan 2012, Will Deacon wrote:

> On Mon, Jan 16, 2012 at 06:30:23PM +0000, Stephen Boyd wrote:
> > On 01/16/12 10:26, Will Deacon wrote:
> > > On Mon, Jan 16, 2012 at 06:22:34PM +0000, Stephen Boyd wrote:
> > >>
> > >> What do you think about aligning the exception fixup table to the same
> > >> value?
> > > Hmm, I'm not sure I see what that gains us over the current 32-byte
> > > alignment. Are you seeing any measurable performance difference with it being
> > > cacheline-aligned?
> > >
> > 
> > I haven't measured anything yet. I just see that it's another value
> > hard-coded to 32 in the linker script and that tile has decided to use
> > L1_CACHE_BYTES for it.
> 
> Hmm, that's intriguing. The exception table entries are 8 bytes on ARM and
> are aligned as such by things like the USER macro, so I'm not sure why we
> align the section to 32 bytes. I guess it must be for performance reasons,
> but whether that's due to cacheline size, I don't know.
> 
> Nico, can you enlighten us please (it was introduced in 13b1f64c ("[ARM]
> 3008/1: the exception table is not read-only"))?

It probably was due to the fact that the surrounding data was also cache 
line aligned.  I don't think there is any particular reason why it 
should be aligned to a cache line boundary given that the list is 
accessed with a binary search.  The minimum required alignment would be 
__alignof__(struct exception_table_entry).


Nicolas



More information about the linux-arm-kernel mailing list