From: Michael Neuling <mikey@neuling.org>
To: trigg <mr.triggtrigg@gmail.com>
Cc: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>,
Michael Ellerman <michael@ellerman.id.au>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
Ian Munsie <imunsie@au1.ibm.com>
Subject: Re: [PATCH v3] cxl: Export AFU error buffer via sysfs
Date: Thu, 21 May 2015 13:48:29 +1000 [thread overview]
Message-ID: <1432180109.27130.16.camel@neuling.org> (raw)
In-Reply-To: <DFEFF502-9818-4AC2-ADDC-B5A16A047D71@gmail.com>
On Thu, 2015-05-21 at 09:06 +0530, trigg wrote:
>=20
>=20
> > On 21-May-2015, at 05:16, Michael Neuling <mikey@neuling.org> wrote:
> >=20
> > + */
> > > +ssize_t cxl_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
> > > + loff_t off, size_t count)
> > > +{
> > > + loff_t aligned_off;
> > > + size_t aligned_count;
> > > + const void __iomem *ebuf =3D afu->afu_desc_mmio +
> > > afu->eb_offset;
> > > +
> > > + if (!afu->eb_len || count =3D=3D 0 || off < 0)
> >=20
> > if eb_len =3D=3D 0 we don't even create the sysfs file. So is this
> > check
> > needed?
> This function is non static so it can be potentially called from
> kernel.
What? You mean outside this file?
> Condition check of "if (count =3D=3D 0 || off < 0 || (size_t)off
> >=3D afu->eb_len) "
> should work solving the problem below too.
It makes no sense to call this outside of sysfs reading the error
buffer.
> > > + aligned_off =3D round_down(off, 8);
> > > + aligned_count =3D round_up(off + count, 8) - aligned_off;
> >=20
> > I kinda preferred the start end variables, and length was just end -
> > start.
> >=20
> > I though it was more readable. IMHO
> >=20
> > How about:
> >=20
> > aligned_start =3D round_down(off, 8);
> > aligned_end =3D round_up(off + count, 8);
> > aligned_length =3D aligned_end - aligned_start;
> Agreed on aligned_start and aligned_end but would not
> need aligned_end in rest of the code.
Aligned_end makes it more readable.
> >=20
> > > +
> > > + /* fast path */
> > > + if ((aligned_off =3D=3D off) && (aligned_count =3D=3D count)) {
> > > + /* no need to use the bounce buffer */
> > > + _memcpy_fromio(buf, ebuf + off, count);
> >=20
> > I would drop this, as the other code path should work fine.
> > Premature optimisation.....
> I am inclined to differ on this. Code below uses a bounce buffer
> which needs more than double the amount of loads and stores.
Cacheable vs non-cacheable is important here though.
> If the caller wants to speed up things it can simply ask for aligned
> read that won't have this overhead. This will be especially useful=20
> In large reads.
The overhead will mostly be in the non-cachable/MMIO load/stores rather
than the cacheable load/stores, so there may be little performance
difference anyway.
The only reason this could be useful is if you have a really really
large error buffer. Even then, why do you need to read it that quickly?
Mikey
prev parent reply other threads:[~2015-05-21 3:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-20 17:18 [PATCH v3] cxl: Export AFU error buffer via sysfs Vaibhav Jain
2015-05-20 23:46 ` Michael Neuling
2015-05-21 3:36 ` trigg
2015-05-21 3:48 ` Michael Neuling [this message]
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=1432180109.27130.16.camel@neuling.org \
--to=mikey@neuling.org \
--cc=imunsie@au1.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=michael@ellerman.id.au \
--cc=mr.triggtrigg@gmail.com \
--cc=vaibhav@linux.vnet.ibm.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).