On Fri, 24 Jun 2016 15:35:44 +0900 Namhyung Kim <namhyung@xxxxxxxxxx> wrote: > > > diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h > > > index dea12a6e413b..35c523ba5c59 100644 > > > --- a/include/linux/ftrace.h > > > +++ b/include/linux/ftrace.h > > > @@ -751,25 +751,33 @@ extern void ftrace_init(void); > > > static inline void ftrace_init(void) { } > > > #endif > > > > > > +#ifndef CONFIG_HAVE_64BIT_ALIGNED_ACCESS > > > +# define FTRACE_ALIGNMENT 4 > > > +#else > > > +# define FTRACE_ALIGNMENT 8 > > > +#endif > > > > Swap the above. Having the #ifndef is more confusing to understand than > > to have a #ifdef. > > Will do. > > > > > > + > > > +#define FTRACE_ALIGN_DATA __attribute__((packed, aligned(FTRACE_ALIGNMENT))) > > > > Do we really need to pack it? I mean, just get rid of the hole (like > > you did with the movement of the overrun) and shouldn't the array be > > aligned normally without holes, if the arch can support it? Doesn't gcc > > take care of that? > > I'm not sure I understood you correctly. AFAIK the size of struct is > a multiple of alignment unit and gcc manual says the aligment > attribute only can be increased unless the 'packed' is used as well.. Ah, I see you are trying to get the recorded size in the array down to a 4 byte alignment (due to the "int depth"), instead of adding the 4 bytes to the buffer. Hmm, I wondering if we need the ifdef above, as the ring buffer itself will force the 8 byte alignment of structures added to the buffer. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html