From: "Sa, Nuno" <Nuno.Sa@analog.com>
To: "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>
Cc: "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>,
"jic23@kernel.org" <jic23@kernel.org>,
"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: Fri, 15 May 2020 12:37:28 +0000 [thread overview]
Message-ID: <BN6PR03MB3347D0598B1700D1A5C6974C99BD0@BN6PR03MB3347.namprd03.prod.outlook.com> (raw)
In-Reply-To: <1d89df334b08486e73ca181cf9035d9af8fbccf2.camel@analog.com>
> 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...
- Nuno Sá
next prev parent reply other threads:[~2020-05-15 12:37 UTC|newest]
Thread overview: 22+ 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 ` [PATCH v2 1/8] iio: proximity: ping: pass reference to IIO device via call-stack Alexandru Ardelean
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-16 17:15 ` Jonathan Cameron
2020-05-14 13:17 ` [PATCH v2 3/8] iio: at91_adc: " Alexandru Ardelean
2020-05-16 17:17 ` Jonathan Cameron
2020-05-18 8:32 ` Ardelean, Alexandru
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-16 17:20 ` Jonathan Cameron
2020-05-14 13:17 ` [PATCH v2 5/8] iio: stm32-adc: " Alexandru Ardelean
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-16 17:28 ` Jonathan Cameron
2020-05-14 13:17 ` [PATCH v2 7/8] iio: core: simplify alloc alignment code Alexandru Ardelean
2020-05-15 7:12 ` Sa, Nuno
2020-05-15 11:47 ` Ardelean, Alexandru
2020-05-15 12:37 ` Sa, Nuno [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-22 6:58 ` [PATCH v2 0/8] iio: core: wrap IIO device into an iio_dev_opaque object 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=BN6PR03MB3347D0598B1700D1A5C6974C99BD0@BN6PR03MB3347.namprd03.prod.outlook.com \
--to=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=jic23@kernel.org \
--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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).