Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2861775pxv; Mon, 12 Jul 2021 03:51:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2DFwtaGQIaHP4t8M3N/hes+XB8xWeAxAY/3VZVQJEndT0W9Pd5TeADrmXGZdNoNQCkYVM X-Received: by 2002:a92:cda5:: with SMTP id g5mr37315914ild.117.1626087060542; Mon, 12 Jul 2021 03:51:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626087060; cv=none; d=google.com; s=arc-20160816; b=uZqTozpbIvSN5ngHrNT2gbJ/5tT3xjbxJsHZYOxuiw84oHadf5M90skPrCubuQDxiQ v5n/kLbGym4az3x1zm/2mdqtcAxbmsxDl13IENa5r+P3ovTmwqVnousea8q4o6yo5VDI vHVGz5BxqMCrJ2e9SoQiWELFmZVfQAEwouUroMmhggxOCuXWdng2HX7A2wKqkNh2sqde icMR9Nmlq+CmGhMjN8J3OTHxCV4hMabGEW0B+aVIQwoyzMYDIUdr+RjQ2AAkGiP5Bd8p Z0pq8mHwQpgQhSTqEPg2xRncVRZlYa4ETFc0z1jJu/xNts0YVbtGehI04bJ85LiF+e0b /wsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=dZWZY69s9ga5yFo0b7io9305/xYgR+OMN0nT0TOn1ik=; b=LtH1RoY/gVyWmnwJyo4IZieb1U7/Yt6IcKbYYO+Hbcb88whWptfuLso/mgLR7MYg4V 6CmCP83GoWq4KLr2tmAogmo/6SAHdTMvPRa6C9genLm4zj7qfKcuwCwnwZ1t9XSnWReJ TUyzi+FkEa1XiD3F+VpVqhFEOVby7iP1f9E/PSYM76zMDqwGaEQFwYRp1Wzb3zFXTEDf fruRpP5w8POcO736Ggf2ryzOeNS65wa9JvSJKPTo7pBOOP290WzXDD+KYEIniQ28pA60 qYu3OhmWc8Uu61aasOGWOJFonq1Ht4p7FqZdXkSu/t3JeIhtQ6GqeHY2W2ornaze07mX AAhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=S5W8OEgg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k11si18429748jav.18.2021.07.12.03.50.49; Mon, 12 Jul 2021 03:51:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=S5W8OEgg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354519AbhGLIPg (ORCPT + 99 others); Mon, 12 Jul 2021 04:15:36 -0400 Received: from mail.kernel.org ([198.145.29.99]:44106 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345426AbhGLH3o (ORCPT ); Mon, 12 Jul 2021 03:29:44 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id B4BAE615FF; Mon, 12 Jul 2021 07:26:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626074787; bh=/VxroMA2G7yoLYO60eNpSoEWAbUlY4V7iTQziGfMdSs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=S5W8OEgg151ERkcQxhVx5ScG9FBhZI2TuT4wJAzKRqtsPTCOG+ZunfBKAEFQHRf6J CvqZU+2mSOjMGaaXW9o3PJYJlEpeJSdTfxB/RTdodLXS8GK8jMF/55udZZUFKeoxVh 5zAwiHRREY9U1n6L9fV9PnH72SKWSsxa+cel3kaQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Brunner , Bean Huo , Adrian Hunter , Ulf Hansson Subject: [PATCH 5.12 697/700] mmc: block: Disable CMDQ on the ioctl path Date: Mon, 12 Jul 2021 08:13:00 +0200 Message-Id: <20210712061050.093517687@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060924.797321836@linuxfoundation.org> References: <20210712060924.797321836@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bean Huo commit 70b52f09080565030a530a784f1c9948a7f48ca3 upstream. According to the eMMC Spec: "When command queuing is enabled (CMDQ Mode En bit in CMDQ_MODE_EN field is set to ‘1’) class 11 commands are the only method through which data transfer tasks can be issued. Existing data transfer commands, namely CMD18/CMD17 and CMD25/CMD24, are not supported when command queuing is enabled." which means if CMDQ is enabled, the FFU commands will not be supported. To fix this issue, just simply disable CMDQ on the ioctl path, and re-enable CMDQ once ioctl request is completed. Tested-by: Michael Brunner Signed-off-by: Bean Huo Acked-by: Adrian Hunter Fixes: 1e8e55b67030 (mmc: block: Add CQE support) Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20210504203209.361597-1-huobean@gmail.com Signed-off-by: Ulf Hansson Signed-off-by: Greg Kroah-Hartman --- drivers/mmc/core/block.c | 8 ++++++++ 1 file changed, 8 insertions(+) --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -1004,6 +1004,12 @@ static void mmc_blk_issue_drv_op(struct switch (mq_rq->drv_op) { case MMC_DRV_OP_IOCTL: + if (card->ext_csd.cmdq_en) { + ret = mmc_cmdq_disable(card); + if (ret) + break; + } + fallthrough; case MMC_DRV_OP_IOCTL_RPMB: idata = mq_rq->drv_op_data; for (i = 0, ret = 0; i < mq_rq->ioc_count; i++) { @@ -1014,6 +1020,8 @@ static void mmc_blk_issue_drv_op(struct /* Always switch back to main area after RPMB access */ if (rpmb_ioctl) mmc_blk_part_switch(card, 0); + else if (card->reenable_cmdq && !card->ext_csd.cmdq_en) + mmc_cmdq_enable(card); break; case MMC_DRV_OP_BOOT_WP: ret = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_WP,