Set a preemptibility command atrribute to MMC commands. This
can be later used by write (multi block), trim etc for
evaluating if a HPI is applicable.

Note the starting time of executing a command so a decision
can be made if it is too late for preemption.

Signed-off-by: Venkatraman S <svenk...@ti.com>
---
 drivers/mmc/core/core.c  |    5 +++++
 include/linux/mmc/core.h |    4 ++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index c4cd6fb..b4152ca 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -258,6 +258,11 @@ static int __mmc_start_req(struct mmc_host *host, struct 
mmc_request *mrq)
                complete(&mrq->completion);
                return -ENOMEDIUM;
        }
+       if (mmc_is_preemptible_command(mrq->cmd))
+               mrq->cmd->cmd_attr |= MMC_CMD_PREEMPTIBLE;
+       else
+               mrq->cmd->cmd_attr &= ~MMC_CMD_PREEMPTIBLE;
+       mrq->cmd->started_time = jiffies;
        mmc_start_request(host, mrq);
        return 0;
 }
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index 680e256..d86144e 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -76,6 +76,10 @@ struct mmc_command {
  */
 #define mmc_cmd_type(cmd)      ((cmd)->flags & MMC_CMD_MASK)
 
+       unsigned int            cmd_attr; /*Runtime attributes of the command */
+#define MMC_CMD_PREEMPTIBLE    BIT(0)
+#define MMC_CMD_PREEMPTED      BIT(1)
+       unsigned long           started_time;
        unsigned int            retries;        /* max number of retries */
        unsigned int            error;          /* command error */
 
-- 
1.7.10.rc2

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to