All of lore.kernel.org
 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 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.