Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp177627pxu; Tue, 5 Jan 2021 08:02:56 -0800 (PST) X-Google-Smtp-Source: ABdhPJyzfZa+ti138eif48+i3YqhITxEh5TbWvM7IsqGCvDPHkRYsEpWE4u8m4Yetw1AY/+uQr5G X-Received: by 2002:aa7:c886:: with SMTP id p6mr385486eds.207.1609862575894; Tue, 05 Jan 2021 08:02:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609862575; cv=none; d=google.com; s=arc-20160816; b=Lggs4Cq49zX+L+p8J59lBIjtHjor+ZhLNS0yE4Mi7VopHjUvwOneQvUBXoFxPCBO2+ 4W8FOq92F12ZFHaYTDk7ZXKqPAXB8yL91DJhruSBXYFAZpgo3JNeaJpwfNxNmrEFfp4P m9s80Mp+nHdnB1bl8XrO4h4A0hSRMuSlvkDbq/Z7/cpeGYOS3urIKijHiXDSVGsHHtvJ 44W8ciCsLvYe+pSvSjKk4GoNwD1HqiVgTem7lY5NBcqWUxJISIdoCSqA5A93Mky2RGUJ tg+/wkISVMChZyGDo2zto40TCb8UFIaHTIPoC7cTv+0yi7QM7cDJ4ptsQiH+y0AmDqb/ 6loA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:organization :from:references:cc:to:subject:ironport-sdr:ironport-sdr; bh=9fS2Pdl4YdJU03207iBh2pvC+APDRh5nQEDeNVD1FFI=; b=tEZgfZk/HGISw01TLfS4wTxCCmDyNdRY18d3EDhywvM6Bg5HQ1jaB33LZguTnGHGu0 ME2ANhF4oZO9/BC7h8q5UFMap50Yy+Y08n3V6DUKC0a7sfoANewohKK3C7Bx71Wk2xMm l6Fr12+ehZ9ZNz6dh4ul4bB761AaTVjBI+mXuVe9P709s9qiFObDvpXMRQ0Ah0H6tswu z+o/5BgPeuSmpv0yoCyc8AYEa+aBkVItSNpoBuYsD9GDBcMIv+hwpU+XgxId9X7ghrSM VcRol3aHa/qOhFl4GtmMpmARvSAIUPqtdCd4lk1Zl2J5s3hXlC9efA3IRdvx7VhiAMoI AEMg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rp28si28674669ejb.10.2021.01.05.08.02.31; Tue, 05 Jan 2021 08:02:55 -0800 (PST) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727608AbhAEQBA (ORCPT + 99 others); Tue, 5 Jan 2021 11:01:00 -0500 Received: from mga14.intel.com ([192.55.52.115]:35258 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726711AbhAEQBA (ORCPT ); Tue, 5 Jan 2021 11:01:00 -0500 IronPort-SDR: MxEUT6RReoE97PcVL9NtYozZRnpY3EkcrWt3f9kieVPLypCrJeknEyE+OWQsqOUgz0zdWDgdbM slTfMmDI42Lg== X-IronPort-AV: E=McAfee;i="6000,8403,9855"; a="176345447" X-IronPort-AV: E=Sophos;i="5.78,477,1599548400"; d="scan'208";a="176345447" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jan 2021 08:00:18 -0800 IronPort-SDR: yWMIoScZAUAopoUwJJJgG3cKq68FO6y2rDLLIBjmk7KqrwMTpQVT8hKn2b51O6U/W5Zs6y/Sx0 dufWnPbszwtA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,477,1599548400"; d="scan'208";a="421819081" Received: from ahunter-desktop.fi.intel.com (HELO [10.237.72.94]) ([10.237.72.94]) by orsmga001.jf.intel.com with ESMTP; 05 Jan 2021 08:00:16 -0800 Subject: Re: [PATCH] mmc: sdhci-of-dwcmshc: fix rpmb access To: Jisheng Zhang , Ulf Hansson Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org References: <20201229161625.38255233@xhacker.debian> From: Adrian Hunter Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Message-ID: <33a544d0-d911-17dd-6ea6-a847fce42b3c@intel.com> Date: Tue, 5 Jan 2021 18:00:01 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20201229161625.38255233@xhacker.debian> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 29/12/20 10:16 am, Jisheng Zhang wrote: > Commit a44f7cb93732 ("mmc: core: use mrq->sbc when sending CMD23 for > RPMB") began to use ACMD23 for RPMB if the host supports ACMD23. In > RPMB ACM23 case, we need to set bit 31 to CMD23 argument, otherwise > RPMB write operation will return general fail. > > However, no matter V4 is enabled or not, the dwcmshc's ARGUMENT2 > register is 32-bit block count register which doesn't support stuff > bits of CMD23 argument. So let's handle this specific ACMD23 case. > >>From another side, this patch also prepare for future v4 enabling > for dwcmshc, because from the 4.10 spec, the ARGUMENT2 register is > redefined as 32bit block count which doesn't support stuff bits of > CMD23 argument. > > Fixes: a44f7cb93732 ("mmc: core: use mrq->sbc when sending CMD23 for RPMB") > Signed-off-by: Jisheng Zhang Acked-by: Adrian Hunter > --- > drivers/mmc/host/sdhci-of-dwcmshc.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c > index 4b673792b5a4..d90020ed3622 100644 > --- a/drivers/mmc/host/sdhci-of-dwcmshc.c > +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c > @@ -16,6 +16,8 @@ > > #include "sdhci-pltfm.h" > > +#define SDHCI_DWCMSHC_ARG2_STUFF GENMASK(31, 16) > + > /* DWCMSHC specific Mode Select value */ > #define DWCMSHC_CTRL_HS400 0x7 > > @@ -49,6 +51,29 @@ static void dwcmshc_adma_write_desc(struct sdhci_host *host, void **desc, > sdhci_adma_write_desc(host, desc, addr, len, cmd); > } > > +static void dwcmshc_check_auto_cmd23(struct mmc_host *mmc, > + struct mmc_request *mrq) > +{ > + struct sdhci_host *host = mmc_priv(mmc); > + > + /* > + * No matter V4 is enabled or not, ARGUMENT2 register is 32-bit > + * block count register which doesn't support stuff bits of > + * CMD23 argument on dwcmsch host controller. > + */ > + if (mrq->sbc && (mrq->sbc->arg & SDHCI_DWCMSHC_ARG2_STUFF)) > + host->flags &= ~SDHCI_AUTO_CMD23; > + else > + host->flags |= SDHCI_AUTO_CMD23; > +} > + > +static void dwcmshc_request(struct mmc_host *mmc, struct mmc_request *mrq) > +{ > + dwcmshc_check_auto_cmd23(mmc, mrq); > + > + sdhci_request(mmc, mrq); > +} > + > static void dwcmshc_set_uhs_signaling(struct sdhci_host *host, > unsigned int timing) > { > @@ -133,6 +158,8 @@ static int dwcmshc_probe(struct platform_device *pdev) > > sdhci_get_of_property(pdev); > > + host->mmc_host_ops.request = dwcmshc_request; > + > err = sdhci_add_host(host); > if (err) > goto err_clk; >