On Fri, Jun 24, 2016 at 12:04:40PM -0400, Steven Rostedt wrote: > 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. As far as I can see, the ring buffer has following code in ring_buffer.c: #define RB_ALIGNMENT 4U #define RB_MAX_SMALL_DATA (RB_ALIGNMENT * RINGBUF_TYPE_DATA_TYPE_LEN_MAX) #define RB_EVNT_MIN_SIZE 8U /* two 32bit words */ #ifndef CONFIG_HAVE_64BIT_ALIGNED_ACCESS # define RB_FORCE_8BYTE_ALIGNMENT 0 # define RB_ARCH_ALIGNMENT RB_ALIGNMENT #else # define RB_FORCE_8BYTE_ALIGNMENT 1 # define RB_ARCH_ALIGNMENT 8U #endif #define RB_ALIGN_DATA __aligned(RB_ARCH_ALIGNMENT) Thanks, Namhyung -- 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