All of lore.kernel.org
 help / color / mirror / Atom feed
From: Asutosh Das <asutoshd@codeaurora.org>
To: Ziji Hu <huziji@marvell.com>
Cc: "linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH 4/5] mmc: cmdq: support for command queue enabled host
Date: Wed, 10 Dec 2014 12:16:04 +0530	[thread overview]
Message-ID: <5487EC2C.4040300@codeaurora.org> (raw)
In-Reply-To: <89813612683626448B837EE5A0B6A7CB47068B2289@SC-VEXCH4.marvell.com>

Hi Ziji,
Thanks for your comments.

On 12/10/2014 4:37 AM, Ziji Hu wrote:
> Hi Asutosh,
>
>           Could you check me comments please?
>
>      Please correct me if I misunderstand you.
>
>      Thank you.
>
> +irqreturn_t cmdq_irq(struct mmc_host *mmc, u32 intmask)
>
> +{
>
> +       u32 status;
>
> +       unsigned long tag = 0, comp_status;
>
> +       struct cmdq_host *cq_host = (struct cmdq_host
> *)mmc_cmdq_private(mmc);
>
> +
>
> +       spin_lock(&cq_host->cmdq_lock);
>
> +
>
> +       status = cmdq_readl(cq_host, CQIS);
>
> +       cmdq_writel(cq_host, status, CQIS);
>
> +
>
> +       if (status & CQIS_HAC) {
>
> +               /* halt is completed, wakeup waiting thread */
>
> +               complete(&cq_host->halt_comp);
>
> +       } else if (status & CQIS_TCC) {
>
> +               /* read QCTCN and complete the request */
>
> +               comp_status = cmdq_readl(cq_host, CQTCN);
>
> +               if (!comp_status) {
>
> +                       pr_err("%s: bogus comp-stat\n", __func__);
>
> +                       cmdq_dumpregs(cq_host);
>
> +                       WARN_ON(1);
>
> +               }
>
> +               for_each_set_bit(tag, &comp_status, cq_host->num_slots) {
>
> +                       /* complete the corresponding mrq */
>
> +                       cmdq_finish_data(mmc, tag);
>
> According to eMMC 5.1 spec: CQE shall set bit n of this register (at the
> same
>
> time it clears bit n of CQTDBR) when a task execution is completed (with
> success
>
> or error).
>
>       Assume an error and an completion both occur at the same time,
> then two bits
>
> of CQTCN register will be set. One bit presents the completion. The
> other indicates
>
> the error slot.
>
>      Based on your current implementation, host will handle the error with
>
> cmdq_finish_data. Later, mrq->data->error and mrq->cmd->error are used to
>
Agree. I'm planning to change it to:
1. read CQIS
2. first check for errors on all the completed tasks, mark 
success/failure appropriately to the respective mrq
3. invoke cmdq_finish_data on all the completed tasks.

Thoughts ?
> check the error status. However, there is no cmdq source code to set
> those two
I'm working on the error handling part now. Will post the patch when done.
>
> error flag. They are supposed to be setup in legacy eMMC irq handling,
> which is
>
> replace by your cmdq irq handling. Thus actually host will receive the
> error request
>
> with no error flag. As a result, host will treat the error request as a
> successful
>
> completion.
>
>      Thus there will no error handling. Or the error handling will be
> executed after
>
> the error request is finished as a successful one.
>
> +                       /* complete DCMD on tag 31 */
>
> +               }
>
> +               cmdq_writel(cq_host, comp_status, CQTCN);
>
> +       } else if (status & CQIS_RED) {
>
> +               /* task response has an error */
>
> +               pr_err("%s: RED error %d !!!\n", mmc_hostname(mmc), status);
>
> +               cmdq_dumpregs(cq_host);
>
> +               BUG_ON(1);
>
>           Thank you.
>
> Best regards,
>
> Hu Ziji
>


-- 
Sent by a consultant of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

       reply	other threads:[~2014-12-10  6:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <89813612683626448B837EE5A0B6A7CB47068B2289@SC-VEXCH4.marvell.com>
2014-12-10  6:46 ` Asutosh Das [this message]
2014-12-10  7:08   ` [PATCH 4/5] mmc: cmdq: support for command queue enabled host Ziji Hu
2014-12-02 12:01 Asutosh Das
2014-12-09 23:19 ` Hu Ziji

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=5487EC2C.4040300@codeaurora.org \
    --to=asutoshd@codeaurora.org \
    --cc=huziji@marvell.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.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.