linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] mmc: card: Skip secure option for MoviNAND.
@ 2012-08-14  4:04 IAN CHEN
  2012-08-14  4:10 ` Kyungmin Park
  0 siblings, 1 reply; 3+ messages in thread
From: IAN CHEN @ 2012-08-14  4:04 UTC (permalink / raw)
  To: cjb, linkinjeon, adrian.hunter, subhashj, linus.walleij,
	linux-mmc, linux-kernel
  Cc: d.j.shin, jongtae22.kim, kyungmin.park, jh80.chung, ian.cy.chen

For several MoviNAND, there are some known issue with secure option.
For these specific MoviNAND device, we skip secure option.

Signed-off-by: Ian Chen <ian.cy.chen@samsung.com>
---
 drivers/mmc/card/block.c |   24 +++++++++++++++++++++++-
 include/linux/mmc/card.h |    1 +
 2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index f1c84de..a01cc14 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -1411,7 +1411,8 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq,
struct request *req)
 		/* complete ongoing async transfer before issuing discard */
 		if (card->host->areq)
 			mmc_blk_issue_rw_rq(mq, NULL);
-		if (req->cmd_flags & REQ_SECURE)
+		if (req->cmd_flags & REQ_SECURE &&
+			!(card->quirks & MMC_QUIRK_SKIP_SECURE))
 			ret = mmc_blk_issue_secdiscard_rq(mq, req);
 		else
 			ret = mmc_blk_issue_discard_rq(mq, req);
@@ -1716,6 +1717,7 @@ force_ro_fail:
 #define CID_MANFID_SANDISK	0x2
 #define CID_MANFID_TOSHIBA	0x11
 #define CID_MANFID_MICRON	0x13
+#define CID_MANFID_SAMSUNG	0x15

 static const struct mmc_fixup blk_fixups[] =
 {
@@ -1752,6 +1754,26 @@ static const struct mmc_fixup blk_fixups[] =
 	MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc,
 		  MMC_QUIRK_LONG_READ_TIME),

+	/*
+	 * Some issue about secure erase/secure trim for Samsung MoviNAND
+	 */
+	MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+	MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
+		  MMC_QUIRK_MOVINAND_SECURE),
+
 	END_FIXUP
 };

diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 111aca5..b639a92 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -239,6 +239,7 @@ struct mmc_card {
 #define MMC_QUIRK_BLK_NO_CMD23	(1<<7)		/* Avoid CMD23 for regular
multiblock */
 #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8)	/* Avoid sending 512
bytes in */
 #define MMC_QUIRK_LONG_READ_TIME (1<<9)		/* Data read time > CSD says */
+#define MMC_QUIRK_SKIP_SECURE (1<<10)		/* Skip secure for erase/trim */
 						/* byte mode */
 	unsigned int    poweroff_notify_state;	/* eMMC4.5 notify feature */
 #define MMC_NO_POWER_NOTIFICATION	0
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] mmc: card: Skip secure option for MoviNAND.
  2012-08-14  4:04 [PATCH v2] mmc: card: Skip secure option for MoviNAND IAN CHEN
@ 2012-08-14  4:10 ` Kyungmin Park
  2012-08-14  4:10   ` Kyungmin Park
  0 siblings, 1 reply; 3+ messages in thread
From: Kyungmin Park @ 2012-08-14  4:10 UTC (permalink / raw)
  To: IAN CHEN
  Cc: cjb, linkinjeon, adrian.hunter, subhashj, linus.walleij,
	linux-mmc, linux-kernel, d.j.shin, jongtae22.kim, jh80.chung

Hi Ian,

"MMC_QUIRK_SKIP_SECURE"? It seems it support secure discard but want
to skip. but it's wrong. it's broken feature at listed MoviNAND.
As linus suggested, SECURE_BROKEN is better.

Thank you,
Kyungmin Park

On 8/14/12, IAN CHEN <ian.cy.chen@samsung.com> wrote:
> For several MoviNAND, there are some known issue with secure option.
> For these specific MoviNAND device, we skip secure option.
>
> Signed-off-by: Ian Chen <ian.cy.chen@samsung.com>
> ---
>  drivers/mmc/card/block.c |   24 +++++++++++++++++++++++-
>  include/linux/mmc/card.h |    1 +
>  2 files changed, 24 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
> index f1c84de..a01cc14 100644
> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -1411,7 +1411,8 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq,
> struct request *req)
>  		/* complete ongoing async transfer before issuing discard */
>  		if (card->host->areq)
>  			mmc_blk_issue_rw_rq(mq, NULL);
> -		if (req->cmd_flags & REQ_SECURE)
> +		if (req->cmd_flags & REQ_SECURE &&
> +			!(card->quirks & MMC_QUIRK_SKIP_SECURE))
>  			ret = mmc_blk_issue_secdiscard_rq(mq, req);
>  		else
>  			ret = mmc_blk_issue_discard_rq(mq, req);
> @@ -1716,6 +1717,7 @@ force_ro_fail:
>  #define CID_MANFID_SANDISK	0x2
>  #define CID_MANFID_TOSHIBA	0x11
>  #define CID_MANFID_MICRON	0x13
> +#define CID_MANFID_SAMSUNG	0x15
>
>  static const struct mmc_fixup blk_fixups[] =
>  {
> @@ -1752,6 +1754,26 @@ static const struct mmc_fixup blk_fixups[] =
>  	MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc,
>  		  MMC_QUIRK_LONG_READ_TIME),
>
> +	/*
> +	 * Some issue about secure erase/secure trim for Samsung MoviNAND
> +	 */
> +	MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +	MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
> +		  MMC_QUIRK_MOVINAND_SECURE),
> +
>  	END_FIXUP
>  };
>
> diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
> index 111aca5..b639a92 100644
> --- a/include/linux/mmc/card.h
> +++ b/include/linux/mmc/card.h
> @@ -239,6 +239,7 @@ struct mmc_card {
>  #define MMC_QUIRK_BLK_NO_CMD23	(1<<7)		/* Avoid CMD23 for regular
> multiblock */
>  #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8)	/* Avoid sending 512
> bytes in */
>  #define MMC_QUIRK_LONG_READ_TIME (1<<9)		/* Data read time > CSD says */
> +#define MMC_QUIRK_SKIP_SECURE (1<<10)		/* Skip secure for erase/trim */
>  						/* byte mode */
>  	unsigned int    poweroff_notify_state;	/* eMMC4.5 notify feature */
>  #define MMC_NO_POWER_NOTIFICATION	0
> --
> 1.7.0.4
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] mmc: card: Skip secure option for MoviNAND.
  2012-08-14  4:10 ` Kyungmin Park
@ 2012-08-14  4:10   ` Kyungmin Park
  0 siblings, 0 replies; 3+ messages in thread
From: Kyungmin Park @ 2012-08-14  4:10 UTC (permalink / raw)
  To: IAN CHEN
  Cc: cjb, linkinjeon, adrian.hunter, subhashj, linus.walleij,
	linux-mmc, linux-kernel, d.j.shin, jongtae22.kim, jh80.chung

and also you should update "MMC_QUIRK_MOVINAND_SECURE" also.

On 8/14/12, Kyungmin Park <kyungmin.park@samsung.com> wrote:
> Hi Ian,
>
> "MMC_QUIRK_SKIP_SECURE"? It seems it support secure discard but want
> to skip. but it's wrong. it's broken feature at listed MoviNAND.
> As linus suggested, SECURE_BROKEN is better.
>
> Thank you,
> Kyungmin Park
>
> On 8/14/12, IAN CHEN <ian.cy.chen@samsung.com> wrote:
>> For several MoviNAND, there are some known issue with secure option.
>> For these specific MoviNAND device, we skip secure option.
>>
>> Signed-off-by: Ian Chen <ian.cy.chen@samsung.com>
>> ---
>>  drivers/mmc/card/block.c |   24 +++++++++++++++++++++++-
>>  include/linux/mmc/card.h |    1 +
>>  2 files changed, 24 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
>> index f1c84de..a01cc14 100644
>> --- a/drivers/mmc/card/block.c
>> +++ b/drivers/mmc/card/block.c
>> @@ -1411,7 +1411,8 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq,
>> struct request *req)
>>  		/* complete ongoing async transfer before issuing discard */
>>  		if (card->host->areq)
>>  			mmc_blk_issue_rw_rq(mq, NULL);
>> -		if (req->cmd_flags & REQ_SECURE)
>> +		if (req->cmd_flags & REQ_SECURE &&
>> +			!(card->quirks & MMC_QUIRK_SKIP_SECURE))
>>  			ret = mmc_blk_issue_secdiscard_rq(mq, req);
>>  		else
>>  			ret = mmc_blk_issue_discard_rq(mq, req);
>> @@ -1716,6 +1717,7 @@ force_ro_fail:
>>  #define CID_MANFID_SANDISK	0x2
>>  #define CID_MANFID_TOSHIBA	0x11
>>  #define CID_MANFID_MICRON	0x13
>> +#define CID_MANFID_SAMSUNG	0x15
>>
>>  static const struct mmc_fixup blk_fixups[] =
>>  {
>> @@ -1752,6 +1754,26 @@ static const struct mmc_fixup blk_fixups[] =
>>  	MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc,
>>  		  MMC_QUIRK_LONG_READ_TIME),
>>
>> +	/*
>> +	 * Some issue about secure erase/secure trim for Samsung MoviNAND
>> +	 */
>> +	MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +	MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc,
>> +		  MMC_QUIRK_MOVINAND_SECURE),
>> +
>>  	END_FIXUP
>>  };
>>
>> diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
>> index 111aca5..b639a92 100644
>> --- a/include/linux/mmc/card.h
>> +++ b/include/linux/mmc/card.h
>> @@ -239,6 +239,7 @@ struct mmc_card {
>>  #define MMC_QUIRK_BLK_NO_CMD23	(1<<7)		/* Avoid CMD23 for regular
>> multiblock */
>>  #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8)	/* Avoid sending 512
>> bytes in */
>>  #define MMC_QUIRK_LONG_READ_TIME (1<<9)		/* Data read time > CSD says */
>> +#define MMC_QUIRK_SKIP_SECURE (1<<10)		/* Skip secure for erase/trim */
>>  						/* byte mode */
>>  	unsigned int    poweroff_notify_state;	/* eMMC4.5 notify feature */
>>  #define MMC_NO_POWER_NOTIFICATION	0
>> --
>> 1.7.0.4
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-08-14  4:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-14  4:04 [PATCH v2] mmc: card: Skip secure option for MoviNAND IAN CHEN
2012-08-14  4:10 ` Kyungmin Park
2012-08-14  4:10   ` Kyungmin Park

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).