linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
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

      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).