From: Jonathan Cameron <email@example.com> To: firstname.lastname@example.org, Andy Shevchenko <email@example.com>, Nuno Sa <Nuno.Sa@analog.com> Cc: Linus Walleij <firstname.lastname@example.org>, Jan Kiszka <email@example.com>, Jonathan Cameron <Jonathan.Cameron@huawei.com> Subject: Re: [PATCH v2 0/4] IIO: Alignment fixes part 4 - bounce buffers for the hard cases. Date: Sun, 18 Jul 2021 15:55:59 +0100 [thread overview] Message-ID: <20210718155559.4eb7bf7a@jic23-huawei> (raw) In-Reply-To: <firstname.lastname@example.org> On Sun, 13 Jun 2021 16:10:35 +0100 Jonathan Cameron <email@example.com> wrote: > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> Hi All, If anyone has time to take a look at this, particularly the first patch which does the interesting stuff and patch 3 which I don't think has had any review yet that would be great. Thanks, Jonathan > > Thanks to Andy and Nuno for reviews. > > Chances since V1/RFC: > * Renamed the function to iio_push_to_buffer_with_ts_unaligned() > * Fixed the various bugs people pointed out. > * Used more standard realloc handling to be more 'obviously' correct. > * Added some additional comments on the sizing of the copy to explain why > it is a conservative estimate and may copy more than strictly necessary. > > A few things we discussed I didn't do (for now)... > > I decided against adding explicit bounce buffer allocation calls for now, > though I'm open to doing that in future if we find doing the somewhat hidden > realloc to be a problem. > > I haven't computed a more precise data_sz as I don't thing the benefits > of a more precise copy or not passing the size, make it worth the slight > reduction in complexity for the callers. Again, open to revisiting this > in future! > > I tested it by hacking the dummy driver to shift it's data by one > byte and call iio_push_to_buffers_with_ts_unaligned(). > > Strictly a hack. I definitely don't want to move this driver over to this > new interface as it might encourage inappropriate use. > > diff --git a/drivers/iio/dummy/iio_simple_dummy_buffer.c b/drivers/iio/dummy/iio_simple_dummy_buffer.c > index 59aa60d4ca37..b47af7df8efc 100644 > --- a/drivers/iio/dummy/iio_simple_dummy_buffer.c > +++ b/drivers/iio/dummy/iio_simple_dummy_buffer.c > @@ -19,6 +19,7 @@ > #include <linux/iio/buffer.h> > #include <linux/iio/trigger_consumer.h> > #include <linux/iio/triggered_buffer.h> > +#include <asm/unaligned.h> > > #include "iio_simple_dummy.h" > > @@ -78,12 +79,13 @@ static irqreturn_t iio_simple_dummy_trigger_h(int irq, void *p) > j = find_next_bit(indio_dev->active_scan_mask, > indio_dev->masklength, j); > /* random access read from the 'device' */ > - data[i] = fakedata[j]; > +// data[i] = fakedata[j]; > + put_unaligned_le16(fakedata[j], ((u8 *)(&data[i])) + 1); > len += 2; > } > } > > - iio_push_to_buffers_with_timestamp(indio_dev, data, > + iio_push_to_buffers_with_ts_unaligned(indio_dev, ((u8 *)(data)) + 1, indio_dev->scan_bytes - 8, > iio_get_time_ns(indio_dev)); > > > v1 description: > > I finally got around to do a manual audit of all the calls to > iio_push_to_buffers_with_timestamp() which has the somewhat odd requirements > of: > 1. 8 byte alignment of the provided buffer. > 2. space for an 8 byte naturally aligned timestamp to be inserted at the > end. > > Unfortunately there were rather a lot of these left, but time to bite the bullet > and clean them up. > > As discussed previous in > https://firstname.lastname@example.org/ > it is not easy to fix the alignment issue without requiring a bounce buffer. > This final part of the 4 sets of fixes is concerned with the cases where > bounce buffers are the proposed solutions. > > In these cases we have hardware that reads a prefix that we wish to > drop. That makes it hard to directly read the data into the correct location. > > Rather than implementing bouce buffers in each case, this set provides some > magic in the core to handle them via a new function. > iio_push_to_buffers_with_ts_na() - non aligned > > Note this is totally untested as I don't have suitable hardware or emulation. > I can fake something up in the dummy driver or via QEMU but I definitely want > both eyes and testing on this series! > > Jonathan Cameron (4): > iio: core: Introduce iio_push_to_buffers_with_ts_unaligned() > iio: adc: ti-adc108s102: Fix alignment of buffer pushed to iio > buffers. > iio: gyro: mpu3050: Fix alignment and size issues with buffers. > iio: imu: adis16400: Fix buffer alignment requirements. > > drivers/iio/adc/ti-adc108s102.c | 11 ++++---- > drivers/iio/gyro/mpu3050-core.c | 24 ++++++++-------- > drivers/iio/imu/adis16400.c | 20 ++++++++++---- > drivers/iio/industrialio-buffer.c | 46 +++++++++++++++++++++++++++++++ > include/linux/iio/buffer.h | 4 +++ > include/linux/iio/iio-opaque.h | 4 +++ > 6 files changed, 86 insertions(+), 23 deletions(-) >
next prev parent reply other threads:[~2021-07-18 14:53 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-13 15:10 Jonathan Cameron 2021-06-13 15:10 ` [PATCH v2 1/4] iio: core: Introduce iio_push_to_buffers_with_ts_unaligned() Jonathan Cameron 2021-06-14 8:33 ` Sa, Nuno 2021-06-13 15:10 ` [PATCH v2 2/4] iio: adc: ti-adc108s102: Fix alignment of buffer pushed to iio buffers Jonathan Cameron 2021-06-13 15:10 ` [PATCH v2 3/4] iio: gyro: mpu3050: Fix alignment and size issues with buffers Jonathan Cameron 2021-06-13 15:10 ` [PATCH v2 4/4] iio: imu: adis16400: Fix buffer alignment requirements Jonathan Cameron 2021-06-14 8:25 ` Sa, Nuno 2021-07-18 14:55 ` Jonathan Cameron [this message] 2021-10-03 15:54 ` [PATCH v2 0/4] IIO: Alignment fixes part 4 - bounce buffers for the hard cases Jonathan Cameron
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210718155559.4eb7bf7a@jic23-huawei \ --email@example.com \ --cc=Jonathan.Cameron@huawei.com \ --cc=Nuno.Sa@analog.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH v2 0/4] IIO: Alignment fixes part 4 - bounce buffers for the hard cases.' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.