All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will.deacon@arm.com>
To: Sunil Kovvuri <sunil.kovvuri@gmail.com>
Cc: Robin Murphy <robin.murphy@arm.com>,
	iommu@lists.linux-foundation.org,
	LKML <linux-kernel@vger.kernel.org>,
	LAKML <linux-arm-kernel@lists.infradead.org>,
	Robert Richter <robert.richter@cavium.com>,
	jcm@redhat.com, Sunil Goutham <sgoutham@cavium.com>,
	Geetha <gakula@cavium.com>
Subject: Re: [PATCH] iommu/arm-smmu-v3: Poll for CMDQ drain completion more effectively
Date: Wed, 3 May 2017 16:59:20 +0100	[thread overview]
Message-ID: <20170503155920.GT8233@arm.com> (raw)
In-Reply-To: <CA+sq2CeU7RN_UEiN1fuRtFpkHwgORHv_qU8yvziHqteLdz+_rw@mail.gmail.com>

On Wed, May 03, 2017 at 09:24:13PM +0530, Sunil Kovvuri wrote:
> On Wed, May 3, 2017 at 9:07 PM, Will Deacon <will.deacon@arm.com> wrote:
> > On Wed, May 03, 2017 at 06:49:09PM +0530, Sunil Kovvuri wrote:
> >> On Thu, Apr 27, 2017 at 4:43 PM,  <sunil.kovvuri@gmail.com> wrote:
> >> > From: Sunil Goutham <sgoutham@cavium.com>
> >> >
> >> > Modified polling on CMDQ consumer similar to how polling is done for TLB SYNC
> >> > completion in SMMUv2 driver. Code changes are done with reference to
> >> >
> >> > 8513c8930069 iommu/arm-smmu: Poll for TLB sync completion more effectively
> >> >
> >> > Poll timeout has been increased which addresses issue of 100us timeout not
> >> > sufficient, when command queue is full with TLB invalidation commands.
> >> >
> >> > Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
> >> > Signed-off-by: Geetha <gakula@cavium.com>
> >> > ---
> >> >  drivers/iommu/arm-smmu-v3.c | 15 ++++++++++++---
> >> >  1 file changed, 12 insertions(+), 3 deletions(-)
> >> >
> >> > diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> >> > index d412bdd..34599d4 100644
> >> > --- a/drivers/iommu/arm-smmu-v3.c
> >> > +++ b/drivers/iommu/arm-smmu-v3.c
> >> > @@ -379,6 +379,9 @@
> >> >  #define CMDQ_SYNC_0_CS_NONE            (0UL << CMDQ_SYNC_0_CS_SHIFT)
> >> >  #define CMDQ_SYNC_0_CS_SEV             (2UL << CMDQ_SYNC_0_CS_SHIFT)
> >> >
> >> > +#define CMDQ_DRAIN_TIMEOUT_US          1000
> >> > +#define CMDQ_SPIN_COUNT                        10
> >> > +
> >> >  /* Event queue */
> >> >  #define EVTQ_ENT_DWORDS                        4
> >> >  #define EVTQ_MAX_SZ_SHIFT              7
> >> > @@ -737,7 +740,8 @@ static void queue_inc_prod(struct arm_smmu_queue *q)
> >> >   */
> >> >  static int queue_poll_cons(struct arm_smmu_queue *q, bool drain, bool wfe)
> >> >  {
> >> > -       ktime_t timeout = ktime_add_us(ktime_get(), ARM_SMMU_POLL_TIMEOUT_US);
> >> > +       ktime_t timeout = ktime_add_us(ktime_get(), CMDQ_DRAIN_TIMEOUT_US);
> >> > +       unsigned int spin_cnt, delay = 1;
> >> >
> >> >         while (queue_sync_cons(q), (drain ? !queue_empty(q) : queue_full(q))) {
> >> >                 if (ktime_compare(ktime_get(), timeout) > 0)
> >> > @@ -746,8 +750,13 @@ static int queue_poll_cons(struct arm_smmu_queue *q, bool drain, bool wfe)
> >> >                 if (wfe) {
> >> >                         wfe();
> >> >                 } else {
> >> > -                       cpu_relax();
> >> > -                       udelay(1);
> >> > +                       for (spin_cnt = 0;
> >> > +                            spin_cnt < CMDQ_SPIN_COUNT; spin_cnt++) {
> >> > +                               cpu_relax();
> >> > +                               continue;
> >> > +                       }
> >> > +                       udelay(delay);
> >> > +                       delay *= 2;
> >> >                 }
> >> >         }
> >> >
> >> > --
> >> > 2.7.4
> >> >
> >>
> >> Sorry for the ignorance.
> >> Is there a patchwork where I can check current status of ARM IOMMU
> >> related patches ?
> >>
> >> And is this patch accepted, if not any comments / feedback ?
> >
> > Please be patient: the merge window is open and it's not been long since you
> > posted the patch, which looks pretty bonkers at first glance.
> >
> > Will
> 
> Look at this
> https://lkml.org/lkml/2017/4/3/605
> The same thing, i pinged after a week and you said you already picked it up.
> All I am asking is how do i know the current status, how many days
> would normally
> be considered being patient ?

At least wait until the merge window is over if it's not a fix, or keep an
eye on the relevant branches (see below).

> Instead of troubling you, is there a patchwork where i can check the status ?

No, but I pick patches up on my iommu/devel branch here:

https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/

and at some point they appear on for-joerg/arm-smmu/updates, which I send
to Joerg (who is the iommu maintainer). He then puts them into linux-next
before they get sent for inclusion in mainline during the next merge window.

Will

WARNING: multiple messages have this Message-ID (diff)
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] iommu/arm-smmu-v3: Poll for CMDQ drain completion more effectively
Date: Wed, 3 May 2017 16:59:20 +0100	[thread overview]
Message-ID: <20170503155920.GT8233@arm.com> (raw)
In-Reply-To: <CA+sq2CeU7RN_UEiN1fuRtFpkHwgORHv_qU8yvziHqteLdz+_rw@mail.gmail.com>

On Wed, May 03, 2017 at 09:24:13PM +0530, Sunil Kovvuri wrote:
> On Wed, May 3, 2017 at 9:07 PM, Will Deacon <will.deacon@arm.com> wrote:
> > On Wed, May 03, 2017 at 06:49:09PM +0530, Sunil Kovvuri wrote:
> >> On Thu, Apr 27, 2017 at 4:43 PM,  <sunil.kovvuri@gmail.com> wrote:
> >> > From: Sunil Goutham <sgoutham@cavium.com>
> >> >
> >> > Modified polling on CMDQ consumer similar to how polling is done for TLB SYNC
> >> > completion in SMMUv2 driver. Code changes are done with reference to
> >> >
> >> > 8513c8930069 iommu/arm-smmu: Poll for TLB sync completion more effectively
> >> >
> >> > Poll timeout has been increased which addresses issue of 100us timeout not
> >> > sufficient, when command queue is full with TLB invalidation commands.
> >> >
> >> > Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
> >> > Signed-off-by: Geetha <gakula@cavium.com>
> >> > ---
> >> >  drivers/iommu/arm-smmu-v3.c | 15 ++++++++++++---
> >> >  1 file changed, 12 insertions(+), 3 deletions(-)
> >> >
> >> > diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> >> > index d412bdd..34599d4 100644
> >> > --- a/drivers/iommu/arm-smmu-v3.c
> >> > +++ b/drivers/iommu/arm-smmu-v3.c
> >> > @@ -379,6 +379,9 @@
> >> >  #define CMDQ_SYNC_0_CS_NONE            (0UL << CMDQ_SYNC_0_CS_SHIFT)
> >> >  #define CMDQ_SYNC_0_CS_SEV             (2UL << CMDQ_SYNC_0_CS_SHIFT)
> >> >
> >> > +#define CMDQ_DRAIN_TIMEOUT_US          1000
> >> > +#define CMDQ_SPIN_COUNT                        10
> >> > +
> >> >  /* Event queue */
> >> >  #define EVTQ_ENT_DWORDS                        4
> >> >  #define EVTQ_MAX_SZ_SHIFT              7
> >> > @@ -737,7 +740,8 @@ static void queue_inc_prod(struct arm_smmu_queue *q)
> >> >   */
> >> >  static int queue_poll_cons(struct arm_smmu_queue *q, bool drain, bool wfe)
> >> >  {
> >> > -       ktime_t timeout = ktime_add_us(ktime_get(), ARM_SMMU_POLL_TIMEOUT_US);
> >> > +       ktime_t timeout = ktime_add_us(ktime_get(), CMDQ_DRAIN_TIMEOUT_US);
> >> > +       unsigned int spin_cnt, delay = 1;
> >> >
> >> >         while (queue_sync_cons(q), (drain ? !queue_empty(q) : queue_full(q))) {
> >> >                 if (ktime_compare(ktime_get(), timeout) > 0)
> >> > @@ -746,8 +750,13 @@ static int queue_poll_cons(struct arm_smmu_queue *q, bool drain, bool wfe)
> >> >                 if (wfe) {
> >> >                         wfe();
> >> >                 } else {
> >> > -                       cpu_relax();
> >> > -                       udelay(1);
> >> > +                       for (spin_cnt = 0;
> >> > +                            spin_cnt < CMDQ_SPIN_COUNT; spin_cnt++) {
> >> > +                               cpu_relax();
> >> > +                               continue;
> >> > +                       }
> >> > +                       udelay(delay);
> >> > +                       delay *= 2;
> >> >                 }
> >> >         }
> >> >
> >> > --
> >> > 2.7.4
> >> >
> >>
> >> Sorry for the ignorance.
> >> Is there a patchwork where I can check current status of ARM IOMMU
> >> related patches ?
> >>
> >> And is this patch accepted, if not any comments / feedback ?
> >
> > Please be patient: the merge window is open and it's not been long since you
> > posted the patch, which looks pretty bonkers at first glance.
> >
> > Will
> 
> Look at this
> https://lkml.org/lkml/2017/4/3/605
> The same thing, i pinged after a week and you said you already picked it up.
> All I am asking is how do i know the current status, how many days
> would normally
> be considered being patient ?

At least wait until the merge window is over if it's not a fix, or keep an
eye on the relevant branches (see below).

> Instead of troubling you, is there a patchwork where i can check the status ?

No, but I pick patches up on my iommu/devel branch here:

https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/

and at some point they appear on for-joerg/arm-smmu/updates, which I send
to Joerg (who is the iommu maintainer). He then puts them into linux-next
before they get sent for inclusion in mainline during the next merge window.

Will

  reply	other threads:[~2017-05-03 15:59 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-27 11:13 [PATCH] iommu/arm-smmu-v3: Poll for CMDQ drain completion more effectively sunil.kovvuri-Re5JQEeQqe8AvxtiuMwx3w
2017-04-27 11:13 ` sunil.kovvuri
2017-04-27 11:13 ` sunil.kovvuri at gmail.com
     [not found] ` <1493291587-23488-1-git-send-email-sunil.kovvuri-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-05-03 13:19   ` Sunil Kovvuri
2017-05-03 13:19     ` Sunil Kovvuri
2017-05-03 13:19     ` Sunil Kovvuri
2017-05-03 15:37     ` Will Deacon
2017-05-03 15:37       ` Will Deacon
2017-05-03 15:54       ` Sunil Kovvuri
2017-05-03 15:54         ` Sunil Kovvuri
2017-05-03 15:59         ` Will Deacon [this message]
2017-05-03 15:59           ` Will Deacon
     [not found]           ` <20170503155920.GT8233-5wv7dgnIgG8@public.gmane.org>
2017-05-03 16:24             ` Sunil Kovvuri
2017-05-03 16:24               ` Sunil Kovvuri
2017-05-03 16:24               ` Sunil Kovvuri
2017-05-03 15:33 ` Robin Murphy
2017-05-03 15:33   ` Robin Murphy
     [not found]   ` <a9d1bb4d-6578-93bb-66cf-5ed55952b85a-5wv7dgnIgG8@public.gmane.org>
2017-05-03 15:40     ` Will Deacon
2017-05-03 15:40       ` Will Deacon
2017-05-03 15:40       ` Will Deacon
     [not found]       ` <20170503154046.GQ8233-5wv7dgnIgG8@public.gmane.org>
2017-05-03 16:23         ` Sunil Kovvuri
2017-05-03 16:23           ` Sunil Kovvuri
2017-05-03 16:23           ` Sunil Kovvuri

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=20170503155920.GT8233@arm.com \
    --to=will.deacon@arm.com \
    --cc=gakula@cavium.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jcm@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robert.richter@cavium.com \
    --cc=robin.murphy@arm.com \
    --cc=sgoutham@cavium.com \
    --cc=sunil.kovvuri@gmail.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.