Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp3404908rwb; Mon, 16 Jan 2023 07:36:14 -0800 (PST) X-Google-Smtp-Source: AMrXdXuIPSi2j3To4WJoGZcK2w1OXVAbz+XultTjDGCw0QnRwkiygDzVkMBUscadM6yCfAB7L04i X-Received: by 2002:a17:906:9f07:b0:7c1:6f0a:a2cf with SMTP id fy7-20020a1709069f0700b007c16f0aa2cfmr81895034ejc.32.1673883373796; Mon, 16 Jan 2023 07:36:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673883373; cv=none; d=google.com; s=arc-20160816; b=tavadnLkLzwWCi16YTs5g0DrJ5W3gIw/7qCWcDI/uQUykBBRBgjC7N0SjSSVlO90SI G4NHq17xd+B4CRtCadlfjoU173GAiSKwfkkoxgXWBh8Yf+SmtrunaQmAaWhxymn9dUIX GIs/yW+WUVzqEDOR23YGBP0DHPfXveHP8dMHI9kya9bDgawXu7xK59u+z79Q6xeC0g2S +RJt25FJLHhBfcHBJKh/eonzjF/kCM8McBsfxjLaz8jK8PvwwVWSC046S45710Cl/VYG NqsvUFt7sS9iN3MCeYvYqVoyJjGN2fpUOpJEMQsf6zhYhcEsrtz0I9a/dwMaCTOLArDW Q3Ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=C+Tkm38nALY3Celj+kOBbx2M6NqIC/cxLoCh3hAjiZ8=; b=xQN7+Ad5V/OJzesbN6N5tcaRxBhCTTB8yB764gM0iS3zsoL2dDEdvCSpY4OPpGJPJm pN/1UldjkDTeZoqckacY/3MTmzapnQSFbwIEWiOP5DHyEhdFc3RKH5spqylSYhqQC8gP 92pn980l5FY2BNIFc7nOMW3hBG3NeDvzM3FIJNQWqhtup2xO7byXdTkfZlwQC5I4LQUM MtdqvR4zKI2WOvAYOc0VYvkwIPQtu9ANazEIhpKtq9/cUI5JOxQ8047zqHCS/sH104Qc qFmfabc3bj7ea+dD4sdGyD7K6teeKRr0CvfRImQ4JCmpXVNAEhjL7IPFQqpbtlacShxl J2sg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hyperstone.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qw10-20020a1709066a0a00b008714c52cd14si2162077ejc.37.2023.01.16.07.36.01; Mon, 16 Jan 2023 07:36:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hyperstone.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230293AbjAPOxa convert rfc822-to-8bit (ORCPT + 50 others); Mon, 16 Jan 2023 09:53:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44498 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229543AbjAPOw2 (ORCPT ); Mon, 16 Jan 2023 09:52:28 -0500 Received: from mail5.swissbit.com (mail5.swissbit.com [148.251.244.252]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 754172BF32; Mon, 16 Jan 2023 06:38:56 -0800 (PST) Received: from mail5.swissbit.com (localhost [127.0.0.1]) by DDEI (Postfix) with ESMTP id 49B563A1757; Mon, 16 Jan 2023 15:38:55 +0100 (CET) Received: from mail5.swissbit.com (localhost [127.0.0.1]) by DDEI (Postfix) with ESMTP id 323C63A16BB; Mon, 16 Jan 2023 15:38:55 +0100 (CET) X-TM-AS-ERS: 10.181.10.102-127.5.254.253 X-TM-AS-SMTP: 1.0 bXgyLmRtei5zd2lzc2JpdC5jb20= Y2xvZWhsZUBoeXBlcnN0b25lLmNvb Q== X-DDEI-TLS-USAGE: Used Received: from mx2.dmz.swissbit.com (mx2.dmz.swissbit.com [10.181.10.102]) by mail5.swissbit.com (Postfix) with ESMTPS; Mon, 16 Jan 2023 15:38:55 +0100 (CET) From: =?iso-8859-1?Q?Christian_L=F6hle?= To: "adrian.hunter@intel.com" , Avri Altman , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: "ulf.hansson@linaro.org" Subject: [PATCH] mmc: block: workaround long ioctl busy timeout Thread-Topic: [PATCH] mmc: block: workaround long ioctl busy timeout Thread-Index: Adkpq3tb+gXfT/KXQXawlvtJeLUDVw== Date: Mon, 16 Jan 2023 14:38:53 +0000 Message-ID: <68590206e8b044a2a71457cbbeda0794@hyperstone.com> Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-TMASE-Version: DDEI-5.1-9.0.1002-27390.000 X-TMASE-Result: 10--8.216100-10.000000 X-TMASE-MatchedRID: h20DFeLkM893uQV78MmZxh1kSRHxj+Z5FlIP4ZuPPcgvfU/riSJXkdko t/+2LaVUIvrftAIhWmLy9zcRSkKatfIBX+jDfXGr9k0tWBWiOf9vk3JiXDj4ddgJ+YNQuvvyWRC IX/LXQb6N93YyrucDM39T5imd/2HNDXVj0zMhpTY+EW3T0xru/EsY9G/RZ3FCmyiLZetSf8kTGR upINaDDx9GgLAHOBFiIAcCikR3vq/205AQ33Ah3CSWTvfMopWv4Ut13rPkKW5t8v8Cp/gu40/Ft YU9NC8y X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 X-TMASE-INERTIA: 0-0;;;; X-TMASE-XGENCLOUD: a700dd83-0a62-415b-abe4-eb352c300a78-0-0-200-0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The ioctl interface allowed to set cmd_timeout_ms when polling for busy on R1B commands. This was often limited by the max hw timeout so work around it like for the sanitize command. Signed-off-by: Christian Loehle --- drivers/mmc/core/block.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 20da7ed43e6d..ba3bc9014179 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -472,6 +472,8 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, struct scatterlist sg; int err; unsigned int target_part; + unsigned int busy_timeout = MMC_BLK_TIMEOUT_MS; + int poll_prog = false; if (!card || !md || !idata) return -EINVAL; @@ -493,6 +495,12 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, cmd.opcode = idata->ic.opcode; cmd.arg = idata->ic.arg; cmd.flags = idata->ic.flags; + /* R1B flag might be removed here to work around hw, so save it */ + poll_prog = (idata->rpmb || (cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B); + busy_timeout = idata->ic.cmd_timeout_ms ? : + MMC_BLK_TIMEOUT_MS; + if (poll_prog) + mmc_prepare_busy_cmd(card->host, &cmd, busy_timeout); if (idata->buf_bytes) { data.sg = &sg; @@ -596,7 +604,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, if (idata->ic.postsleep_min_us) usleep_range(idata->ic.postsleep_min_us, idata->ic.postsleep_max_us); - if (idata->rpmb || (cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B) { + if (poll_prog) { /* * Ensure RPMB/R1B command has completed by polling CMD13 "Send Status". Here we * allow to override the default timeout value if a custom timeout is specified. -- 2.37.3 Hyperstone GmbH | Reichenaustr. 39a | 78467 Konstanz Managing Director: Dr. Jan Peter Berns. Commercial register of local courts: Freiburg HRB381782