From patchwork Wed Oct 17 16:18:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgUMOpcm9u?= X-Patchwork-Id: 10645847 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CEB7C112B for ; Wed, 17 Oct 2018 16:18:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BCD8A286BE for ; Wed, 17 Oct 2018 16:18:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id ADC18286DA; Wed, 17 Oct 2018 16:18:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,FROM_EXCESS_BASE64,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4B6D8286BE for ; Wed, 17 Oct 2018 16:18:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727048AbeJRAOl (ORCPT ); Wed, 17 Oct 2018 20:14:41 -0400 Received: from mail-yb1-f195.google.com ([209.85.219.195]:33802 "EHLO mail-yb1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727108AbeJRAOl (ORCPT ); Wed, 17 Oct 2018 20:14:41 -0400 Received: by mail-yb1-f195.google.com with SMTP id 184-v6so10611883ybg.1 for ; Wed, 17 Oct 2018 09:18:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=QHH3/vJNN/QxZcjANiJT3k4KQqolNT3+h+hnUmg9+9E=; b=pgeRjFwtcHC6TfFMtd3zxug0tYq399EWna0S+rb2I/uYdeMGtjMGk/WWAY5Je1m4YD yLpF3I2tu1avBBjTS3e6jauZIEZ7g9mc9HlDslBWo1rTFomxQFXvq2M8t1LnpSCicaxo Gq7r+MbwjAgrn5G0r8hF+EFJpDfbjleAKN6oqLRrVbapgpdRv5swIXxOk3/jc6gG64QZ fBGo+IQbx6tuwAkzYI3uCMSYfDfT3fb/LDS4EThmgBDbY5WIOMoZj4vCY7sQwcpHcXKV T6i7JegswmldQyDjzyyLXbcdY+g7gRjqFACI1XTqTBA+fbuw8aoLeTzkmXWEJOrWQ87Y +7ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=QHH3/vJNN/QxZcjANiJT3k4KQqolNT3+h+hnUmg9+9E=; b=KcOGfG+9xhz4nY+xsqgGfbG8PaNYj0WC49ej1cflL0xwWLlxdZJGNyJzC2cwnurGK1 1O84CEq9tuEgq0KFZYb4/ki7daFK/o/xwQwTgow3hbFkPbpqcNdCPVtCZTpO9gGP2sGu x9jEucQ580w3ml3TU03br6ri6Uq4b8s9ModCsr+sDkuBC1vGVpoqDRSjBJ2Aucow3omW Q0mdXaHsO9EgdGpcZmYCxjngpGUF0Fqnrq+UP3sFPCDDSWnLgQKhyVNTG6RJpJetx160 L5o5PbE2fHNpuRV+S/f1uB6h3feLtDD4W31KgvvRBT89820Pwy2kwf0fGH4/13lnfHf7 2cZg== X-Gm-Message-State: ABuFfoih4wfG18a9ibfU/rTyiYX2G9UDR4pBX++IODdu0b15G7ksoRbk Vs2xKPDq7VYr0H1g/PbBfvmKTiIB3AuBHtOwag0BfaN4 X-Google-Smtp-Source: ACcGV63cldf8OdNtYb0Zeqi9RMEzpxlFjpYIvzpqde9kMuX5bXF70mXnm1xZEaFggYgCPjZrXmZC6XrtJ0wQd50Mzrw= X-Received: by 2002:a25:e481:: with SMTP id b123-v6mr14639144ybh.416.1539793094762; Wed, 17 Oct 2018 09:18:14 -0700 (PDT) MIME-Version: 1.0 From: =?utf-8?b?Q2zDqW1lbnQgUMOpcm9u?= Date: Wed, 17 Oct 2018 18:18:03 +0200 Message-ID: Subject: RPMB operation with auto-cmd12 host controller To: Ulf Hansson Cc: linux-mmc@vger.kernel.org Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hi, I'm using the sdhci-iproc host controller on my board (running linux-4.9). When I try to access to the RPMB partition I get the following message. mmc0: Timeout waiting for hardware interrupt. sdhci: =========== REGISTER DUMP (mmc0)=========== sdhci: Sys addr: 0x7e820000 | Version: 0x0000ac02 sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000000 sdhci: Argument: 0x00000000 | Trn mode: 0x00000027 sdhci: Present: 0x01f70002 | Host ctl: 0x00000017 sdhci: Power: 0x0000000f | Blk gap: 0x00000000 sdhci: Wake-up: 0x00000000 | Clock: 0x00000207 sdhci: Timeout: 0x0000000e | Int stat: 0x00000000 sdhci: Int enab: 0x02ff008b | Sig enab: 0x02ff008b sdhci: AC12 err: 0x00000002 | Slot int: 0x00000000 sdhci: Caps: 0x05e80000 | Caps_1: 0x03002075 sdhci: Cmd: 0x0000193a | Max curr: 0x00000001 sdhci: Host ctl2: 0x0000800c sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x7f30c210 sdhci: =========================================== sdhci-iproc 18041000.sdhci: __mmc_blk_ioctl_cmd: data error -110 RPMB ioctl failed: Connection timed out The controller has the auto-cmd12 feature wich make the RPMB cmd incorrect. Because the cmd23 is sent separately and an incorrect CMD12 is added during the operation (from what I understand). A dirty patch to make it works could be (on top of 4.9) : struct scatterlist sg; @@ -530,10 +531,12 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, } if (is_rpmb) { - err = mmc_set_blockcount(card, data.blocks, - idata->ic.write_flag & (1 << 31)); - if (err) - return err; + sbc.opcode = MMC_SET_BLOCK_COUNT; + sbc.arg = data.blocks & 0x0000FFFF; + if (idata->ic.write_flag & (1 << 31)) + sbc.arg |= 1 << 31; + sbc.flags = MMC_RSP_R1 | MMC_CMD_AC; + mrq.sbc = &sbc; } if ((MMC_EXTRACT_INDEX_FROM_ARG(cmd.arg) == EXT_CSD_SANITIZE_START) && But this patch will break other controller. Do you know a proper way to fix this issue ? Thanks, Clement diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index c411f7a68641..d0d1fd9cfad5 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -464,6 +464,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, struct mmc_blk_ioc_data *idata) { struct mmc_command cmd = {0}; + struct mmc_command sbc = {0}; struct mmc_data data = {0}; struct mmc_request mrq = {NULL};