On Thu, May 6, 2010 at 06:37, Oskar Schirmer wrote: > struct ser_req { > + u16 sample; > + char __padalign[L1_CACHE_BYTES - sizeof(u16)]; > + > u16 reset; > u16 ref_on; > u16 command; > - u16 sample; > struct spi_message msg; > struct spi_transfer xfer[6]; > }; are you sure this is necessary ? ser_req is only ever used with spi_sync() and it's allocated/released on the fly, so how could anything be reading that memory between the start of the transmission and the return to adi7877 ? > struct ad7877 { > + u16 conversion_data[AD7877_NR_SENSE]; > + char __padalign[L1_CACHE_BYTES > + - AD7877_NR_SENSE * sizeof(u16)]; > + > struct input_dev *input; > char phys[32]; > > @@ -182,8 +188,6 @@ struct ad7877 { > u8 averaging; > u8 pen_down_acc_interval; > > - u16 conversion_data[AD7877_NR_SENSE]; > - > struct spi_transfer xfer[AD7877_NR_SENSE + 2]; > struct spi_message msg; i can see the spi_message inside of this struct being a problem because the spi transfer is doing asynchronously with spi_async(). however, i would add a comment right above these two fields with a short explanation as to why they're at the start and why the pad exists so someone down the line doesnt move it. -mike ��.n��������+%������w��{.n�����{��)��^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�m