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:37:39 +0100 [thread overview]
Message-ID: <20170503153738.GP8233@arm.com> (raw)
In-Reply-To: <CA+sq2CdR0vC76F1m-LvYGfZW32nKbQg9dQsfJ_jtvYgZ7yyt3g@mail.gmail.com>
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
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:37:39 +0100 [thread overview]
Message-ID: <20170503153738.GP8233@arm.com> (raw)
In-Reply-To: <CA+sq2CdR0vC76F1m-LvYGfZW32nKbQg9dQsfJ_jtvYgZ7yyt3g@mail.gmail.com>
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
next prev parent reply other threads:[~2017-05-03 15:37 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 [this message]
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
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=20170503153738.GP8233@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.