From: vinod.koul@intel.com (Vinod Koul)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/6] dma: bcm-sba-raid: Peek mbox when we are left with no free requests
Date: Wed, 26 Jul 2017 22:40:28 +0530 [thread overview]
Message-ID: <20170726171028.GJ3053@localhost> (raw)
In-Reply-To: <1501047404-14456-3-git-send-email-anup.patel@broadcom.com>
On Wed, Jul 26, 2017 at 11:06:40AM +0530, Anup Patel wrote:
> We should peek mbox channels when we are left with no free
> sba_requests in sba_alloc_request()
and why is the world should we do that, how does that help??
>
> Signed-off-by: Anup Patel <anup.patel@broadcom.com>
> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
> ---
> drivers/dma/bcm-sba-raid.c | 25 ++++++++++++++++++++-----
> 1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/dma/bcm-sba-raid.c b/drivers/dma/bcm-sba-raid.c
> index 6d15fed..321420b 100644
> --- a/drivers/dma/bcm-sba-raid.c
> +++ b/drivers/dma/bcm-sba-raid.c
> @@ -199,6 +199,14 @@ static inline u32 __pure sba_cmd_pq_c_mdata(u32 d, u32 b1, u32 b0)
>
> /* ====== General helper routines ===== */
>
> +static void sba_peek_mchans(struct sba_device *sba)
> +{
> + int mchan_idx;
> +
> + for (mchan_idx = 0; mchan_idx < sba->mchans_count; mchan_idx++)
> + mbox_client_peek_data(sba->mchans[mchan_idx]);
> +}
> +
> static struct sba_request *sba_alloc_request(struct sba_device *sba)
> {
> unsigned long flags;
> @@ -210,8 +218,17 @@ static struct sba_request *sba_alloc_request(struct sba_device *sba)
> if (req)
> list_move_tail(&req->node, &sba->reqs_alloc_list);
> spin_unlock_irqrestore(&sba->reqs_lock, flags);
> - if (!req)
> +
> + if (!req) {
> + /*
> + * We have no more free requests so, we peek
> + * mailbox channels hoping few active requests
> + * would have completed which will create more
> + * room for new requests.
> + */
> + sba_peek_mchans(sba);
> return NULL;
> + }
>
> req->flags = SBA_REQUEST_STATE_ALLOCED;
> req->first = req;
> @@ -558,17 +575,15 @@ static enum dma_status sba_tx_status(struct dma_chan *dchan,
> dma_cookie_t cookie,
> struct dma_tx_state *txstate)
> {
> - int mchan_idx;
> enum dma_status ret;
> struct sba_device *sba = to_sba_device(dchan);
>
> - for (mchan_idx = 0; mchan_idx < sba->mchans_count; mchan_idx++)
> - mbox_client_peek_data(sba->mchans[mchan_idx]);
> -
> ret = dma_cookie_status(dchan, cookie, txstate);
> if (ret == DMA_COMPLETE)
> return ret;
>
> + sba_peek_mchans(sba);
> +
> return dma_cookie_status(dchan, cookie, txstate);
> }
>
> --
> 2.7.4
>
--
~Vinod
WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Anup Patel <anup.patel-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Dan Williams
<dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Florian Fainelli
<f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Scott Branden <sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
Ray Jui <rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org
Subject: Re: [PATCH 2/6] dma: bcm-sba-raid: Peek mbox when we are left with no free requests
Date: Wed, 26 Jul 2017 22:40:28 +0530 [thread overview]
Message-ID: <20170726171028.GJ3053@localhost> (raw)
In-Reply-To: <1501047404-14456-3-git-send-email-anup.patel-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
On Wed, Jul 26, 2017 at 11:06:40AM +0530, Anup Patel wrote:
> We should peek mbox channels when we are left with no free
> sba_requests in sba_alloc_request()
and why is the world should we do that, how does that help??
>
> Signed-off-by: Anup Patel <anup.patel-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Reviewed-by: Ray Jui <ray.jui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Reviewed-by: Scott Branden <scott.branden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> ---
> drivers/dma/bcm-sba-raid.c | 25 ++++++++++++++++++++-----
> 1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/dma/bcm-sba-raid.c b/drivers/dma/bcm-sba-raid.c
> index 6d15fed..321420b 100644
> --- a/drivers/dma/bcm-sba-raid.c
> +++ b/drivers/dma/bcm-sba-raid.c
> @@ -199,6 +199,14 @@ static inline u32 __pure sba_cmd_pq_c_mdata(u32 d, u32 b1, u32 b0)
>
> /* ====== General helper routines ===== */
>
> +static void sba_peek_mchans(struct sba_device *sba)
> +{
> + int mchan_idx;
> +
> + for (mchan_idx = 0; mchan_idx < sba->mchans_count; mchan_idx++)
> + mbox_client_peek_data(sba->mchans[mchan_idx]);
> +}
> +
> static struct sba_request *sba_alloc_request(struct sba_device *sba)
> {
> unsigned long flags;
> @@ -210,8 +218,17 @@ static struct sba_request *sba_alloc_request(struct sba_device *sba)
> if (req)
> list_move_tail(&req->node, &sba->reqs_alloc_list);
> spin_unlock_irqrestore(&sba->reqs_lock, flags);
> - if (!req)
> +
> + if (!req) {
> + /*
> + * We have no more free requests so, we peek
> + * mailbox channels hoping few active requests
> + * would have completed which will create more
> + * room for new requests.
> + */
> + sba_peek_mchans(sba);
> return NULL;
> + }
>
> req->flags = SBA_REQUEST_STATE_ALLOCED;
> req->first = req;
> @@ -558,17 +575,15 @@ static enum dma_status sba_tx_status(struct dma_chan *dchan,
> dma_cookie_t cookie,
> struct dma_tx_state *txstate)
> {
> - int mchan_idx;
> enum dma_status ret;
> struct sba_device *sba = to_sba_device(dchan);
>
> - for (mchan_idx = 0; mchan_idx < sba->mchans_count; mchan_idx++)
> - mbox_client_peek_data(sba->mchans[mchan_idx]);
> -
> ret = dma_cookie_status(dchan, cookie, txstate);
> if (ret == DMA_COMPLETE)
> return ret;
>
> + sba_peek_mchans(sba);
> +
> return dma_cookie_status(dchan, cookie, txstate);
> }
>
> --
> 2.7.4
>
--
~Vinod
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vinod.koul@intel.com>
To: Anup Patel <anup.patel@broadcom.com>
Cc: Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Dan Williams <dan.j.williams@intel.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Scott Branden <sbranden@broadcom.com>,
Ray Jui <rjui@broadcom.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
dmaengine@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com
Subject: Re: [PATCH 2/6] dma: bcm-sba-raid: Peek mbox when we are left with no free requests
Date: Wed, 26 Jul 2017 22:40:28 +0530 [thread overview]
Message-ID: <20170726171028.GJ3053@localhost> (raw)
In-Reply-To: <1501047404-14456-3-git-send-email-anup.patel@broadcom.com>
On Wed, Jul 26, 2017 at 11:06:40AM +0530, Anup Patel wrote:
> We should peek mbox channels when we are left with no free
> sba_requests in sba_alloc_request()
and why is the world should we do that, how does that help??
>
> Signed-off-by: Anup Patel <anup.patel@broadcom.com>
> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
> ---
> drivers/dma/bcm-sba-raid.c | 25 ++++++++++++++++++++-----
> 1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/dma/bcm-sba-raid.c b/drivers/dma/bcm-sba-raid.c
> index 6d15fed..321420b 100644
> --- a/drivers/dma/bcm-sba-raid.c
> +++ b/drivers/dma/bcm-sba-raid.c
> @@ -199,6 +199,14 @@ static inline u32 __pure sba_cmd_pq_c_mdata(u32 d, u32 b1, u32 b0)
>
> /* ====== General helper routines ===== */
>
> +static void sba_peek_mchans(struct sba_device *sba)
> +{
> + int mchan_idx;
> +
> + for (mchan_idx = 0; mchan_idx < sba->mchans_count; mchan_idx++)
> + mbox_client_peek_data(sba->mchans[mchan_idx]);
> +}
> +
> static struct sba_request *sba_alloc_request(struct sba_device *sba)
> {
> unsigned long flags;
> @@ -210,8 +218,17 @@ static struct sba_request *sba_alloc_request(struct sba_device *sba)
> if (req)
> list_move_tail(&req->node, &sba->reqs_alloc_list);
> spin_unlock_irqrestore(&sba->reqs_lock, flags);
> - if (!req)
> +
> + if (!req) {
> + /*
> + * We have no more free requests so, we peek
> + * mailbox channels hoping few active requests
> + * would have completed which will create more
> + * room for new requests.
> + */
> + sba_peek_mchans(sba);
> return NULL;
> + }
>
> req->flags = SBA_REQUEST_STATE_ALLOCED;
> req->first = req;
> @@ -558,17 +575,15 @@ static enum dma_status sba_tx_status(struct dma_chan *dchan,
> dma_cookie_t cookie,
> struct dma_tx_state *txstate)
> {
> - int mchan_idx;
> enum dma_status ret;
> struct sba_device *sba = to_sba_device(dchan);
>
> - for (mchan_idx = 0; mchan_idx < sba->mchans_count; mchan_idx++)
> - mbox_client_peek_data(sba->mchans[mchan_idx]);
> -
> ret = dma_cookie_status(dchan, cookie, txstate);
> if (ret == DMA_COMPLETE)
> return ret;
>
> + sba_peek_mchans(sba);
> +
> return dma_cookie_status(dchan, cookie, txstate);
> }
>
> --
> 2.7.4
>
--
~Vinod
next prev parent reply other threads:[~2017-07-26 17:10 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-26 5:36 [PATCH 0/6] Broadcom SBA-RAID driver improvements Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 5:36 ` [PATCH 1/6] dma: bcm-sba-raid: Improve memory allocation in SBA RAID driver Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 17:09 ` Vinod Koul
2017-07-26 17:09 ` Vinod Koul
2017-07-26 17:09 ` Vinod Koul
2017-07-27 4:12 ` Anup Patel
2017-07-27 4:12 ` Anup Patel
2017-07-27 4:12 ` Anup Patel
2017-07-28 3:13 ` Vinod Koul
2017-07-28 3:13 ` Vinod Koul
2017-07-28 3:13 ` Vinod Koul
2017-07-28 3:46 ` Anup Patel
2017-07-28 3:46 ` Anup Patel
2017-07-28 3:46 ` Anup Patel
2017-07-26 5:36 ` [PATCH 2/6] dma: bcm-sba-raid: Peek mbox when we are left with no free requests Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 17:10 ` Vinod Koul [this message]
2017-07-26 17:10 ` Vinod Koul
2017-07-26 17:10 ` Vinod Koul
2017-07-27 4:55 ` Anup Patel
2017-07-27 4:55 ` Anup Patel
2017-07-27 4:55 ` Anup Patel
2017-07-28 3:15 ` Vinod Koul
2017-07-28 3:15 ` Vinod Koul
2017-07-28 3:39 ` Anup Patel
2017-07-28 3:39 ` Anup Patel
2017-07-28 3:39 ` Anup Patel
2017-07-26 5:36 ` [PATCH 3/6] dma: bcm-sba-raid: pre-ack async tx descriptor Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 5:36 ` [PATCH 4/6] dma: bcm-sba-raid: Break sba_process_deferred_requests() into two parts Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 17:15 ` Vinod Koul
2017-07-26 17:15 ` Vinod Koul
2017-07-27 4:58 ` Anup Patel
2017-07-27 4:58 ` Anup Patel
2017-07-27 4:58 ` Anup Patel
2017-07-26 5:36 ` [PATCH 5/6] dma: bcm-sba-raid: Add debugfs support Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 5:36 ` [PATCH 6/6] arm64: dts: Add SBA-RAID DT nodes for Stingray SoC Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 5:36 ` Anup Patel
2017-07-26 17:03 ` [PATCH 0/6] Broadcom SBA-RAID driver improvements Vinod Koul
2017-07-26 17:03 ` Vinod Koul
2017-07-26 17:03 ` Vinod Koul
2017-07-27 4:07 ` Anup Patel
2017-07-27 4:07 ` Anup Patel
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=20170726171028.GJ3053@localhost \
--to=vinod.koul@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.