diff mbox

mmc: core: expose RPMB partition only for CMD23 capable host

Message ID 1359113430-10951-1-git-send-email-balajitk@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Balaji T K Jan. 25, 2013, 11:30 a.m. UTC
SET_BLOCK_COUNT CMD23 is needed for all access to RPMB partition.
If block count is not set by CMD23, all subsequent read/write commands
fail as per eMMC specification. So, If the host does not support CMD23,
do not expose RPMB partition.

Accessing RPMB partition can cause hang / huge delay
for host which do not support CMD23.

Signed-off-by: Balaji T K <balajitk@ti.com>
Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 drivers/mmc/core/mmc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Peter Ujfalusi Jan. 25, 2013, 12:16 p.m. UTC | #1
On 01/25/2013 12:30 PM, Balaji T K wrote:
> SET_BLOCK_COUNT CMD23 is needed for all access to RPMB partition.
> If block count is not set by CMD23, all subsequent read/write commands
> fail as per eMMC specification. So, If the host does not support CMD23,
> do not expose RPMB partition.
> 
> Accessing RPMB partition can cause hang / huge delay
> for host which do not support CMD23.

Can this patch make it's way to 3.8? Without this patch my OMAP4 board's eMMC
is not accessible causing blkid (via udev) to time out and slowing down the
boot process.

Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> 
> Signed-off-by: Balaji T K <balajitk@ti.com>
> Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> ---
>  drivers/mmc/core/mmc.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
> index e6e3911..089e8ea 100644
> --- a/drivers/mmc/core/mmc.c
> +++ b/drivers/mmc/core/mmc.c
> @@ -496,7 +496,7 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
>  		 * RPMB regions are defined in multiples of 128K.
>  		 */
>  		card->ext_csd.raw_rpmb_size_mult = ext_csd[EXT_CSD_RPMB_MULT];
> -		if (ext_csd[EXT_CSD_RPMB_MULT]) {
> +		if (ext_csd[EXT_CSD_RPMB_MULT] && mmc_host_cmd23(card->host)) {
>  			mmc_part_add(card, ext_csd[EXT_CSD_RPMB_MULT] << 17,
>  				EXT_CSD_PART_CONFIG_ACC_RPMB,
>  				"rpmb", 0, false,
>
Chris Ball Jan. 28, 2013, 10:28 p.m. UTC | #2
Hi,

On Fri, Jan 25 2013, Peter Ujfalusi wrote:
> On 01/25/2013 12:30 PM, Balaji T K wrote:
>> SET_BLOCK_COUNT CMD23 is needed for all access to RPMB partition.
>> If block count is not set by CMD23, all subsequent read/write commands
>> fail as per eMMC specification. So, If the host does not support CMD23,
>> do not expose RPMB partition.
>> 
>> Accessing RPMB partition can cause hang / huge delay
>> for host which do not support CMD23.
>
> Can this patch make it's way to 3.8? Without this patch my OMAP4 board's eMMC
> is not accessible causing blkid (via udev) to time out and slowing down the
> boot process.
>
> Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

Thanks, pushed to mmc-next for 3.8.

- Chris.
diff mbox

Patch

diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index e6e3911..089e8ea 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -496,7 +496,7 @@  static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
 		 * RPMB regions are defined in multiples of 128K.
 		 */
 		card->ext_csd.raw_rpmb_size_mult = ext_csd[EXT_CSD_RPMB_MULT];
-		if (ext_csd[EXT_CSD_RPMB_MULT]) {
+		if (ext_csd[EXT_CSD_RPMB_MULT] && mmc_host_cmd23(card->host)) {
 			mmc_part_add(card, ext_csd[EXT_CSD_RPMB_MULT] << 17,
 				EXT_CSD_PART_CONFIG_ACC_RPMB,
 				"rpmb", 0, false,