From: Jonathan Cameron <jic23@kernel.org> To: "Sa, Nuno" <Nuno.Sa@analog.com> Cc: "Ardelean, Alexandru" <alexandru.Ardelean@analog.com>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, "linux-stm32@st-md-mailman.stormreply.com" <linux-stm32@st-md-mailman.stormreply.com>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>, "ludovic.desroches@microchip.com" <ludovic.desroches@microchip.com>, "nicolas.ferre@microchip.com" <nicolas.ferre@microchip.com>, "alexandre.torgue@st.com" <alexandre.torgue@st.com>, "ak@it-klinger.de" <ak@it-klinger.de>, "eugen.hristev@microchip.com" <eugen.hristev@microchip.com>, "mcoquelin.stm32@gmail.com" <mcoquelin.stm32@gmail.com>, "alexandre.belloni@bootlin.com" <alexandre.belloni@bootlin.com> Subject: Re: [PATCH v2 7/8] iio: core: simplify alloc alignment code Date: Sat, 16 May 2020 18:30:41 +0100 [thread overview] Message-ID: <20200516183041.79b4dd74@archlinux> (raw) In-Reply-To: <BN6PR03MB3347D0598B1700D1A5C6974C99BD0@BN6PR03MB3347.namprd03.prod.outlook.com> On Fri, 15 May 2020 12:37:28 +0000 "Sa, Nuno" <Nuno.Sa@analog.com> wrote: > > From: Ardelean, Alexandru <alexandru.Ardelean@analog.com> > > Sent: Freitag, 15. Mai 2020 13:48 > > To: linux-arm-kernel@lists.infradead.org; linux-stm32@st-md- > > mailman.stormreply.com; Sa, Nuno <Nuno.Sa@analog.com>; linux- > > kernel@vger.kernel.org; linux-iio@vger.kernel.org > > Cc: ludovic.desroches@microchip.com; nicolas.ferre@microchip.com; > > alexandre.torgue@st.com; ak@it-klinger.de; jic23@kernel.org; > > eugen.hristev@microchip.com; mcoquelin.stm32@gmail.com; > > alexandre.belloni@bootlin.com > > Subject: Re: [PATCH v2 7/8] iio: core: simplify alloc alignment code > > > > On Fri, 2020-05-15 at 07:12 +0000, Sa, Nuno wrote: > > > Hey Alex, > > > > > > Just a small question... > > > > > > > From: linux-iio-owner@vger.kernel.org <linux-iio- > > owner@vger.kernel.org> > > > > On Behalf Of Alexandru Ardelean > > > > Sent: Donnerstag, 14. Mai 2020 15:17 > > > > To: linux-iio@vger.kernel.org; linux-arm-kernel@lists.infradead.org; > > linux- > > > > stm32@st-md-mailman.stormreply.com; linux-kernel@vger.kernel.org > > > > Cc: ludovic.desroches@microchip.com; eugen.hristev@microchip.com; > > > > jic23@kernel.org; nicolas.ferre@microchip.com; > > > > alexandre.belloni@bootlin.com; alexandre.torgue@st.com; > > > > mcoquelin.stm32@gmail.com; ak@it-klinger.de; Ardelean, Alexandru > > > > <alexandru.Ardelean@analog.com> > > > > Subject: [PATCH v2 7/8] iio: core: simplify alloc alignment code > > > > > > > > There was a recent discussion about this code: > > > > https://urldefense.com/v3/__https://lore.kernel.org/linux- > > > > > > iio/20200322165317.0b1f0674@archlinux/__;!!A3Ni8CS0y2Y!pgdUSayJCfxMiE > > > > w8Fpv0LkEZurCSkX0sEcLnXeDSCLmhpu1xont6-vBQj3ZbCw$ > > > > > > > > This looks like a good time to rework this, since any issues about it > > > > should pop-up under testing, because the iio_dev is having a bit of an > > > > overhaul and stuff being moved to iio_dev_priv. > > > > > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > > --- > > > > drivers/iio/industrialio-core.c | 10 +++------- > > > > 1 file changed, 3 insertions(+), 7 deletions(-) > > > > > > > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio- > > > > core.c > > > > index a1b29e0f8fd6..7671d36efae7 100644 > > > > --- a/drivers/iio/industrialio-core.c > > > > +++ b/drivers/iio/industrialio-core.c > > > > @@ -1514,13 +1514,9 @@ struct iio_dev *iio_device_alloc(int > > sizeof_priv) > > > > struct iio_dev *dev; > > > > size_t alloc_size; > > > > > > > > - alloc_size = sizeof(struct iio_dev_opaque); > > > > - if (sizeof_priv) { > > > > - alloc_size = ALIGN(alloc_size, IIO_ALIGN); > > > > - alloc_size += sizeof_priv; > > > > - } > > > > - /* ensure 32-byte alignment of whole construct ? */ > > > > - alloc_size += IIO_ALIGN - 1; > > > > + alloc_size = ALIGN(sizeof(struct iio_dev_opaque), IIO_ALIGN); > > > > + if (sizeof_priv) > > > > + alloc_size += ALIGN(sizeof_priv, IIO_ALIGN); > > > > > > Do we actually need to do the `ALIGN` again? It seems to me that > > `alloc_size > > > += sizeof_priv` > > > would be enough or am I missing something obvious? > > > > Well, it's not always clear what value 'sizeof_priv' has, and whether it is > > provided already aligned. > > The requirement is usually that this data be cacheline aligned. > > > > So, sizeof(struct iio_dev_opaque) is aligned already a few lines above, but > > the > > private information should also be aligned [given that it's an unknown value > > provided by the driver]. > > I think this is mostly important, if we need to do DMA access to buffers > > allocated on the driver's state-struct, which is allocated here, and which is > > usually provided as sizeof_priv. > > Yes, AFAIU this is to guarantee that the priv struct will start at an address that is > DMA safe (cacheline-aligned). Hence, if there is any data in 'priv' that needs to be DMA > safe, we are fine... > > Well, I was also misreading the code. Still, I think it should look something like: > > ```` > alloc_size = sizeof(struct iio_dev_opaque) > if (sizeof_priv) > alloc_size += ALIGN(alloc_size, IIO_ALIGN); > ```` > > If there is no priv, I think we don't need the padding bytes... Agreed - no need to guarantee alignment of something that doesn't exist :) > > - Nuno Sá >
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <jic23@kernel.org> To: "Sa, Nuno" <Nuno.Sa@analog.com> Cc: "alexandre.belloni@bootlin.com" <alexandre.belloni@bootlin.com>, "alexandre.torgue@st.com" <alexandre.torgue@st.com>, "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "ludovic.desroches@microchip.com" <ludovic.desroches@microchip.com>, "ak@it-klinger.de" <ak@it-klinger.de>, "mcoquelin.stm32@gmail.com" <mcoquelin.stm32@gmail.com>, "eugen.hristev@microchip.com" <eugen.hristev@microchip.com>, "Ardelean, Alexandru" <alexandru.Ardelean@analog.com>, "linux-stm32@st-md-mailman.stormreply.com" <linux-stm32@st-md-mailman.stormreply.com>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v2 7/8] iio: core: simplify alloc alignment code Date: Sat, 16 May 2020 18:30:41 +0100 [thread overview] Message-ID: <20200516183041.79b4dd74@archlinux> (raw) In-Reply-To: <BN6PR03MB3347D0598B1700D1A5C6974C99BD0@BN6PR03MB3347.namprd03.prod.outlook.com> On Fri, 15 May 2020 12:37:28 +0000 "Sa, Nuno" <Nuno.Sa@analog.com> wrote: > > From: Ardelean, Alexandru <alexandru.Ardelean@analog.com> > > Sent: Freitag, 15. Mai 2020 13:48 > > To: linux-arm-kernel@lists.infradead.org; linux-stm32@st-md- > > mailman.stormreply.com; Sa, Nuno <Nuno.Sa@analog.com>; linux- > > kernel@vger.kernel.org; linux-iio@vger.kernel.org > > Cc: ludovic.desroches@microchip.com; nicolas.ferre@microchip.com; > > alexandre.torgue@st.com; ak@it-klinger.de; jic23@kernel.org; > > eugen.hristev@microchip.com; mcoquelin.stm32@gmail.com; > > alexandre.belloni@bootlin.com > > Subject: Re: [PATCH v2 7/8] iio: core: simplify alloc alignment code > > > > On Fri, 2020-05-15 at 07:12 +0000, Sa, Nuno wrote: > > > Hey Alex, > > > > > > Just a small question... > > > > > > > From: linux-iio-owner@vger.kernel.org <linux-iio- > > owner@vger.kernel.org> > > > > On Behalf Of Alexandru Ardelean > > > > Sent: Donnerstag, 14. Mai 2020 15:17 > > > > To: linux-iio@vger.kernel.org; linux-arm-kernel@lists.infradead.org; > > linux- > > > > stm32@st-md-mailman.stormreply.com; linux-kernel@vger.kernel.org > > > > Cc: ludovic.desroches@microchip.com; eugen.hristev@microchip.com; > > > > jic23@kernel.org; nicolas.ferre@microchip.com; > > > > alexandre.belloni@bootlin.com; alexandre.torgue@st.com; > > > > mcoquelin.stm32@gmail.com; ak@it-klinger.de; Ardelean, Alexandru > > > > <alexandru.Ardelean@analog.com> > > > > Subject: [PATCH v2 7/8] iio: core: simplify alloc alignment code > > > > > > > > There was a recent discussion about this code: > > > > https://urldefense.com/v3/__https://lore.kernel.org/linux- > > > > > > iio/20200322165317.0b1f0674@archlinux/__;!!A3Ni8CS0y2Y!pgdUSayJCfxMiE > > > > w8Fpv0LkEZurCSkX0sEcLnXeDSCLmhpu1xont6-vBQj3ZbCw$ > > > > > > > > This looks like a good time to rework this, since any issues about it > > > > should pop-up under testing, because the iio_dev is having a bit of an > > > > overhaul and stuff being moved to iio_dev_priv. > > > > > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > > --- > > > > drivers/iio/industrialio-core.c | 10 +++------- > > > > 1 file changed, 3 insertions(+), 7 deletions(-) > > > > > > > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio- > > > > core.c > > > > index a1b29e0f8fd6..7671d36efae7 100644 > > > > --- a/drivers/iio/industrialio-core.c > > > > +++ b/drivers/iio/industrialio-core.c > > > > @@ -1514,13 +1514,9 @@ struct iio_dev *iio_device_alloc(int > > sizeof_priv) > > > > struct iio_dev *dev; > > > > size_t alloc_size; > > > > > > > > - alloc_size = sizeof(struct iio_dev_opaque); > > > > - if (sizeof_priv) { > > > > - alloc_size = ALIGN(alloc_size, IIO_ALIGN); > > > > - alloc_size += sizeof_priv; > > > > - } > > > > - /* ensure 32-byte alignment of whole construct ? */ > > > > - alloc_size += IIO_ALIGN - 1; > > > > + alloc_size = ALIGN(sizeof(struct iio_dev_opaque), IIO_ALIGN); > > > > + if (sizeof_priv) > > > > + alloc_size += ALIGN(sizeof_priv, IIO_ALIGN); > > > > > > Do we actually need to do the `ALIGN` again? It seems to me that > > `alloc_size > > > += sizeof_priv` > > > would be enough or am I missing something obvious? > > > > Well, it's not always clear what value 'sizeof_priv' has, and whether it is > > provided already aligned. > > The requirement is usually that this data be cacheline aligned. > > > > So, sizeof(struct iio_dev_opaque) is aligned already a few lines above, but > > the > > private information should also be aligned [given that it's an unknown value > > provided by the driver]. > > I think this is mostly important, if we need to do DMA access to buffers > > allocated on the driver's state-struct, which is allocated here, and which is > > usually provided as sizeof_priv. > > Yes, AFAIU this is to guarantee that the priv struct will start at an address that is > DMA safe (cacheline-aligned). Hence, if there is any data in 'priv' that needs to be DMA > safe, we are fine... > > Well, I was also misreading the code. Still, I think it should look something like: > > ```` > alloc_size = sizeof(struct iio_dev_opaque) > if (sizeof_priv) > alloc_size += ALIGN(alloc_size, IIO_ALIGN); > ```` > > If there is no priv, I think we don't need the padding bytes... Agreed - no need to guarantee alignment of something that doesn't exist :) > > - Nuno Sá > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-05-16 17:30 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-14 13:17 [PATCH v2 0/8] iio: core: wrap IIO device into an iio_dev_opaque object Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-14 13:17 ` [PATCH v2 1/8] iio: proximity: ping: pass reference to IIO device via call-stack Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-16 17:12 ` Jonathan Cameron 2020-05-16 17:12 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 2/8] iio: at91-sama5d2_adc: pass ref to IIO device via param for int function Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-16 17:15 ` Jonathan Cameron 2020-05-16 17:15 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 3/8] iio: at91_adc: " Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-16 17:17 ` Jonathan Cameron 2020-05-16 17:17 ` Jonathan Cameron 2020-05-18 8:32 ` Ardelean, Alexandru 2020-05-18 8:32 ` Ardelean, Alexandru 2020-05-21 18:19 ` Jonathan Cameron 2020-05-21 18:19 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 4/8] iio: stm32-dfsdm-adc: pass iio device as arg for the interrupt handler Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-16 17:20 ` Jonathan Cameron 2020-05-16 17:20 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 5/8] iio: stm32-adc: " Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-16 17:21 ` Jonathan Cameron 2020-05-16 17:21 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 6/8] iio: core: wrap IIO device into an iio_dev_opaque object Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-16 17:28 ` Jonathan Cameron 2020-05-16 17:28 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 7/8] iio: core: simplify alloc alignment code Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-15 7:12 ` Sa, Nuno 2020-05-15 7:12 ` Sa, Nuno 2020-05-15 11:47 ` Ardelean, Alexandru 2020-05-15 11:47 ` Ardelean, Alexandru 2020-05-15 12:37 ` Sa, Nuno 2020-05-15 12:37 ` Sa, Nuno 2020-05-16 17:30 ` Jonathan Cameron [this message] 2020-05-16 17:30 ` Jonathan Cameron 2020-05-14 13:17 ` [PATCH v2 8/8] iio: core: move debugfs data on the private iio dev info Alexandru Ardelean 2020-05-14 13:17 ` Alexandru Ardelean 2020-05-22 6:58 ` [PATCH v2 0/8] iio: core: wrap IIO device into an iio_dev_opaque object Ardelean, Alexandru 2020-05-22 6:58 ` Ardelean, Alexandru
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=20200516183041.79b4dd74@archlinux \ --to=jic23@kernel.org \ --cc=Nuno.Sa@analog.com \ --cc=ak@it-klinger.de \ --cc=alexandre.belloni@bootlin.com \ --cc=alexandre.torgue@st.com \ --cc=alexandru.Ardelean@analog.com \ --cc=eugen.hristev@microchip.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-iio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-stm32@st-md-mailman.stormreply.com \ --cc=ludovic.desroches@microchip.com \ --cc=mcoquelin.stm32@gmail.com \ --cc=nicolas.ferre@microchip.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.