From patchwork Thu Jun 15 12:12:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 105644 Delivered-To: patch@linaro.org Received: by 10.140.91.77 with SMTP id y71csp772154qgd; Thu, 15 Jun 2017 05:13:14 -0700 (PDT) X-Received: by 10.84.137.3 with SMTP id 3mr5832824plm.68.1497528794541; Thu, 15 Jun 2017 05:13:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497528794; cv=none; d=google.com; s=arc-20160816; b=LqDFC4i3/y8ZSOxWE7bL61FPORB7wPiEBSD5ofcyC3SD0KJf3r6SrcJJ4OFpcZzGSj 94IbdfTP2NN92A7Xc8KCMsw6rkmnZtz1A9ezLGmGNPWDjTT6jgjBkQCkIvHjGZCGyH1Z xb66BV0pD8TzVxYmyE7mU1xmLkv9ysbEV3h5zH90eIKLA5Jn82yJ4K6eNwJi7AeWZDLG V7amx/1Afb9lLuox+/GRDkQkAqzDS+W2y2jpZrniCC5waz1+P/vmtQqa1Xcyu4q0xhlI l1XacCjnupHVWqfqA3SCUez96P2q38i2EyNN6xl5xLQAqP18khGhpP0lzf/cNXd9Ul0Z N/HQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=dpbEj9tpANba7R+nROqHNaS4s6BiDzMfTvvMDd4JIh0=; b=Lm4ypjDc4vMnm6qEUUY1nT9MVWY0cizsqMxawAgP02JTA0Eg+4ykWllUzZd7nErK/2 7Co6SBZZp/ZpwrfJm5Z4Ti7albJyEL0WYn+NkahjL/3K9/2SyW3gjirniW5WUckSQkOs 2Khi2NxduPyE00qQj39ye91h9GUMLBT21iTyTkqNXCfAkKRgERs6CKb35nBzUvODh5M0 pUjFBz+ZsdkuS9F6p0dnHwzN/TZWTSxzoksUbFIZ/10XSRyC9wGsjXNFYsvSGiWR/CCB i3DdDgwhxAyqL4jjVjakfFd4BAoShfYO4AuVNvVxnqZlo2uvsfwPPN7XamcIxQGBLCFD ZsRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.b=EjMg9Je7; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y92si2162397plb.230.2017.06.15.05.13.14; Thu, 15 Jun 2017 05:13:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.b=EjMg9Je7; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752507AbdFOMNN (ORCPT + 6 others); Thu, 15 Jun 2017 08:13:13 -0400 Received: from mail-lf0-f42.google.com ([209.85.215.42]:36701 "EHLO mail-lf0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752409AbdFOMNM (ORCPT ); Thu, 15 Jun 2017 08:13:12 -0400 Received: by mail-lf0-f42.google.com with SMTP id o83so7922801lff.3 for ; Thu, 15 Jun 2017 05:13:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=T72D9tBaOA7k78XghoqV4YAVi8fZHCU66BpnG+YE40k=; b=EjMg9Je7Wl0q1eLCKt1GlDIlApUdeYLp9kBxL5wVEGa/NzyllXueySC3JLaieUo7Wc kgjEWmASA2hEG4KEsEe7W4IwyWhERkJEFmHdh3X/6rK/F2MPm3ZQM9ow32Unr1zRgn47 IsmRbn7iYnHAU5WREe6INON5U3jCa/v8E4VwA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=T72D9tBaOA7k78XghoqV4YAVi8fZHCU66BpnG+YE40k=; b=NRHSH94TvqpKIsP/w7O22hzUOPDr8KHK0efUwBjqTouqcDMOdB9G+oVs0sacxnzxVn DFDnMjPaW1iARi4YXOBpimWAa/VJEUFZVsiuzYvyIA1mw/bEqe7co+EmnSHLsFyk20lJ 2uId63HX+Eg/GV/p7whByMved/1mJQx6UbltHJDqRMS2U3jyVWxlNXq+YGJR1HpnUfgL 7fewCtUps96xc2CpbgjULhGHG55FBuf3EsiLcdISqFIDc1VcjMfqjPgXueUAgYnFWz3l XhCbGAqld4tT6gTwqVaP4zJiXPCohivffDNHxELDyyiIGeIBybXZSusJdn52dkox2gTU RaaQ== X-Gm-Message-State: AKS2vOyaHGVeYxF7LguN18NVsJZFnExry0fWVGL/B0AKwjs2KSkecWx9 Ou70MTiDTPKcQ9cPcIvreQ== X-Received: by 10.46.33.164 with SMTP id h36mr1408922lji.86.1497528790836; Thu, 15 Jun 2017 05:13:10 -0700 (PDT) Received: from genomnajs.ideon.se ([85.235.10.227]) by smtp.gmail.com with ESMTPSA id v1sm597574lja.18.2017.06.15.05.13.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Jun 2017 05:13:08 -0700 (PDT) From: Linus Walleij To: linux-mmc@vger.kernel.org, Ulf Hansson Cc: linux-block@vger.kernel.org, Jens Axboe , Christoph Hellwig , Arnd Bergmann , Bartlomiej Zolnierkiewicz , Paolo Valente , Avri Altman , Adrian Hunter , Linus Walleij Subject: [PATCH 2/5] mmc: block: Refactor mmc_blk_part_switch() Date: Thu, 15 Jun 2017 14:12:56 +0200 Message-Id: <20170615121259.8281-3-linus.walleij@linaro.org> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170615121259.8281-1-linus.walleij@linaro.org> References: <20170615121259.8281-1-linus.walleij@linaro.org> Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Instead of passing a struct mmc_blk_data * to mmc_blk_part_switch() let's pass the actual partition type we want to switch to. This is necessary in order not to have a block device with a backing mmc_blk_data and request queue and all for every hardware partition, such as RPMB. Signed-off-by: Linus Walleij --- drivers/mmc/core/block.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) -- 2.9.4 -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index d1b824e65590..94b97f97be1a 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -127,7 +127,7 @@ module_param(perdev_minors, int, 0444); MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device"); static inline int mmc_blk_part_switch(struct mmc_card *card, - struct mmc_blk_data *md); + unsigned int part_type); static struct mmc_blk_data *mmc_blk_get(struct gendisk *disk) { @@ -490,7 +490,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, mrq.cmd = &cmd; - err = mmc_blk_part_switch(card, md); + err = mmc_blk_part_switch(card, md->part_type); if (err) return err; @@ -767,29 +767,29 @@ static int mmc_blk_part_switch_post(struct mmc_card *card, } static inline int mmc_blk_part_switch(struct mmc_card *card, - struct mmc_blk_data *md) + unsigned int part_type) { int ret = 0; struct mmc_blk_data *main_md = dev_get_drvdata(&card->dev); - if (main_md->part_curr == md->part_type) + if (main_md->part_curr == part_type) return 0; if (mmc_card_mmc(card)) { u8 part_config = card->ext_csd.part_config; - ret = mmc_blk_part_switch_pre(card, md->part_type); + ret = mmc_blk_part_switch_pre(card, part_type); if (ret) return ret; part_config &= ~EXT_CSD_PART_CONFIG_ACC_MASK; - part_config |= md->part_type; + part_config |= part_type; ret = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONFIG, part_config, card->ext_csd.part_time); if (ret) { - mmc_blk_part_switch_post(card, md->part_type); + mmc_blk_part_switch_post(card, part_type); return ret; } @@ -798,7 +798,7 @@ static inline int mmc_blk_part_switch(struct mmc_card *card, ret = mmc_blk_part_switch_post(card, main_md->part_curr); } - main_md->part_curr = md->part_type; + main_md->part_curr = part_type; return ret; } @@ -1141,7 +1141,7 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, int part_err; main_md->part_curr = main_md->part_type; - part_err = mmc_blk_part_switch(host->card, md); + part_err = mmc_blk_part_switch(host->card, md->part_type); if (part_err) { /* * We have failed to get back into the correct @@ -1180,6 +1180,7 @@ static void mmc_blk_issue_drv_op(struct mmc_queue *mq, struct request *req) struct mmc_queue_req *mq_rq; struct mmc_card *card = mq->card; struct mmc_blk_data *md = mq->blkdata; + struct mmc_blk_data *main_md = dev_get_drvdata(&card->dev); struct mmc_blk_ioc_data **idata; u8 **ext_csd; u32 status; @@ -1198,7 +1199,7 @@ static void mmc_blk_issue_drv_op(struct mmc_queue *mq, struct request *req) } /* Always switch back to main area after RPMB access */ if (md->area_type & MMC_BLK_DATA_AREA_RPMB) - mmc_blk_part_switch(card, dev_get_drvdata(&card->dev)); + mmc_blk_part_switch(card, main_md->part_type); break; case MMC_DRV_OP_BOOT_WP: ret = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_WP, @@ -1906,7 +1907,7 @@ void mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) /* claim host only for the first request */ mmc_get_card(card); - ret = mmc_blk_part_switch(card, md); + ret = mmc_blk_part_switch(card, md->part_type); if (ret) { if (req) { blk_end_request_all(req, -EIO); @@ -2436,7 +2437,7 @@ static void mmc_blk_remove(struct mmc_card *card) mmc_blk_remove_parts(card, md); pm_runtime_get_sync(&card->dev); mmc_claim_host(card->host); - mmc_blk_part_switch(card, md); + mmc_blk_part_switch(card, md->part_type); mmc_release_host(card->host); if (card->type != MMC_TYPE_SD_COMBO) pm_runtime_disable(&card->dev);