mbox series

[v3,00/10] Add SDUC Support

Message ID 20240814072934.2559911-1-avri.altman@wdc.com
Headers show
Series Add SDUC Support | expand

Message

Avri Altman Aug. 14, 2024, 7:29 a.m. UTC
Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those
cards support capacity larger than 2TB and up to including 128TB. Thus,
the address range of the card expands beyond the 32-bit command
argument. To that end, a new command - CMD22 is defined, to carry the
extra 6-bit upper part of the 38-bit block address that enable access to
128TB memory space.

SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II – Same
as SDXC.

The spec defines several extensions/modifications to the current SDXC
cards, which we address in patches 1 - 10.  Otherwise requirements are
out-of-scope of this change.  Specifically, CMDQ (CMD44+CMD45), and
Extension for Video Speed Class (CMD20).

First publication of SDUC was in [1].  This series was developed and
tested separately from [1] and does not borrow from it.

[1] https://lwn.net/Articles/982566/

---
Changes in v3:
 - Some more kernel test robot fixes
 - Fix a typo in a commit log (Ricky WU)
 - Fix ACMD22 returned value
 - Add 'Tested-by' tag for the whole series (Ricky WU)

Changes in v2:
 - Attend kernel test robot warnings

---

Avri Altman (10):
  mmc: sd: SDUC Support Recognition
  mmc: sd: Add SD CSD version 3.0
  mmc: sd: Add Extension memory addressing
  mmc: core: Add open-ended Ext memory addressing
  mmc: host: Always use manual-cmd23 in SDUC
  mmc: core: Add close-ended Ext memory addressing
  mmc: host: Add close-ended Ext memory addressing
  mmc: core: Allow mmc erase to carry large addresses
  mmc: core: Add Ext memory addressing for erase
  mmc: core: Adjust ACMD22 to SDUC

 drivers/mmc/core/block.c  | 62 ++++++++++++++++++++++++++++++++------
 drivers/mmc/core/bus.c    |  4 ++-
 drivers/mmc/core/card.h   |  3 ++
 drivers/mmc/core/core.c   | 63 ++++++++++++++++++++++++++++-----------
 drivers/mmc/core/core.h   | 14 +++++++--
 drivers/mmc/core/queue.h  |  1 +
 drivers/mmc/core/sd.c     | 16 ++++++----
 drivers/mmc/core/sd_ops.c | 34 ++++++++++++++++++---
 drivers/mmc/core/sd_ops.h |  1 +
 drivers/mmc/host/sdhci.c  | 38 +++++++++++++++++++----
 include/linux/mmc/card.h  |  2 +-
 include/linux/mmc/core.h  |  1 +
 include/linux/mmc/host.h  |  6 ++++
 include/linux/mmc/sd.h    |  4 +++
 14 files changed, 204 insertions(+), 45 deletions(-)

Comments

Avri Altman Aug. 19, 2024, 5:46 a.m. UTC | #1
Ulf, could you please take a look at this?
Not sure it will make it to 6.12 merge window, but I was hoping to start making progress.

Thanks,
Avri

> -----Original Message-----
> From: Avri Altman <avri.altman@wdc.com>
> Sent: Wednesday, August 14, 2024 10:29 AM
> To: Ulf Hansson <ulf.hansson@linaro.org>; linux-mmc@vger.kernel.org
> Cc: Ricky WU <ricky_wu@realtek.com>; Avri Altman <Avri.Altman@wdc.com>
> Subject: [PATCH v3 00/10] Add SDUC Support
> 
> Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those cards
> support capacity larger than 2TB and up to including 128TB. Thus, the address
> range of the card expands beyond the 32-bit command argument. To that end, a
> new command - CMD22 is defined, to carry the extra 6-bit upper part of the 38-
> bit block address that enable access to 128TB memory space.
> 
> SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II – Same as
> SDXC.
> 
> The spec defines several extensions/modifications to the current SDXC cards,
> which we address in patches 1 - 10.  Otherwise requirements are out-of-scope of
> this change.  Specifically, CMDQ (CMD44+CMD45), and Extension for Video Speed
> Class (CMD20).
> 
> First publication of SDUC was in [1].  This series was developed and tested
> separately from [1] and does not borrow from it.
> 
> [1] https://lwn.net/Articles/982566/
> 
> ---
> Changes in v3:
>  - Some more kernel test robot fixes
>  - Fix a typo in a commit log (Ricky WU)
>  - Fix ACMD22 returned value
>  - Add 'Tested-by' tag for the whole series (Ricky WU)
> 
> Changes in v2:
>  - Attend kernel test robot warnings
> 
> ---
> 
> Avri Altman (10):
>   mmc: sd: SDUC Support Recognition
>   mmc: sd: Add SD CSD version 3.0
>   mmc: sd: Add Extension memory addressing
>   mmc: core: Add open-ended Ext memory addressing
>   mmc: host: Always use manual-cmd23 in SDUC
>   mmc: core: Add close-ended Ext memory addressing
>   mmc: host: Add close-ended Ext memory addressing
>   mmc: core: Allow mmc erase to carry large addresses
>   mmc: core: Add Ext memory addressing for erase
>   mmc: core: Adjust ACMD22 to SDUC
> 
>  drivers/mmc/core/block.c  | 62 ++++++++++++++++++++++++++++++++------
>  drivers/mmc/core/bus.c    |  4 ++-
>  drivers/mmc/core/card.h   |  3 ++
>  drivers/mmc/core/core.c   | 63 ++++++++++++++++++++++++++++-----------
>  drivers/mmc/core/core.h   | 14 +++++++--
>  drivers/mmc/core/queue.h  |  1 +
>  drivers/mmc/core/sd.c     | 16 ++++++----
>  drivers/mmc/core/sd_ops.c | 34 ++++++++++++++++++---
> drivers/mmc/core/sd_ops.h |  1 +  drivers/mmc/host/sdhci.c  | 38
> +++++++++++++++++++----  include/linux/mmc/card.h  |  2 +-
> include/linux/mmc/core.h  |  1 +  include/linux/mmc/host.h  |  6 ++++
>  include/linux/mmc/sd.h    |  4 +++
>  14 files changed, 204 insertions(+), 45 deletions(-)
> 
> --
> 2.25.1
Ulf Hansson Aug. 20, 2024, 11:56 a.m. UTC | #2
On Mon, 19 Aug 2024 at 07:46, Avri Altman <Avri.Altman@wdc.com> wrote:
>
> Ulf, could you please take a look at this?
> Not sure it will make it to 6.12 merge window, but I was hoping to start making progress.

Yes, sorry for the delay.

I will look at this and the RPMB series from Jens the next couple of days.

Kind regards
Uffe

>
> Thanks,
> Avri
>
> > -----Original Message-----
> > From: Avri Altman <avri.altman@wdc.com>
> > Sent: Wednesday, August 14, 2024 10:29 AM
> > To: Ulf Hansson <ulf.hansson@linaro.org>; linux-mmc@vger.kernel.org
> > Cc: Ricky WU <ricky_wu@realtek.com>; Avri Altman <Avri.Altman@wdc.com>
> > Subject: [PATCH v3 00/10] Add SDUC Support
> >
> > Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those cards
> > support capacity larger than 2TB and up to including 128TB. Thus, the address
> > range of the card expands beyond the 32-bit command argument. To that end, a
> > new command - CMD22 is defined, to carry the extra 6-bit upper part of the 38-
> > bit block address that enable access to 128TB memory space.
> >
> > SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II – Same as
> > SDXC.
> >
> > The spec defines several extensions/modifications to the current SDXC cards,
> > which we address in patches 1 - 10.  Otherwise requirements are out-of-scope of
> > this change.  Specifically, CMDQ (CMD44+CMD45), and Extension for Video Speed
> > Class (CMD20).
> >
> > First publication of SDUC was in [1].  This series was developed and tested
> > separately from [1] and does not borrow from it.
> >
> > [1] https://lwn.net/Articles/982566/
> >
> > ---
> > Changes in v3:
> >  - Some more kernel test robot fixes
> >  - Fix a typo in a commit log (Ricky WU)
> >  - Fix ACMD22 returned value
> >  - Add 'Tested-by' tag for the whole series (Ricky WU)
> >
> > Changes in v2:
> >  - Attend kernel test robot warnings
> >
> > ---
> >
> > Avri Altman (10):
> >   mmc: sd: SDUC Support Recognition
> >   mmc: sd: Add SD CSD version 3.0
> >   mmc: sd: Add Extension memory addressing
> >   mmc: core: Add open-ended Ext memory addressing
> >   mmc: host: Always use manual-cmd23 in SDUC
> >   mmc: core: Add close-ended Ext memory addressing
> >   mmc: host: Add close-ended Ext memory addressing
> >   mmc: core: Allow mmc erase to carry large addresses
> >   mmc: core: Add Ext memory addressing for erase
> >   mmc: core: Adjust ACMD22 to SDUC
> >
> >  drivers/mmc/core/block.c  | 62 ++++++++++++++++++++++++++++++++------
> >  drivers/mmc/core/bus.c    |  4 ++-
> >  drivers/mmc/core/card.h   |  3 ++
> >  drivers/mmc/core/core.c   | 63 ++++++++++++++++++++++++++++-----------
> >  drivers/mmc/core/core.h   | 14 +++++++--
> >  drivers/mmc/core/queue.h  |  1 +
> >  drivers/mmc/core/sd.c     | 16 ++++++----
> >  drivers/mmc/core/sd_ops.c | 34 ++++++++++++++++++---
> > drivers/mmc/core/sd_ops.h |  1 +  drivers/mmc/host/sdhci.c  | 38
> > +++++++++++++++++++----  include/linux/mmc/card.h  |  2 +-
> > include/linux/mmc/core.h  |  1 +  include/linux/mmc/host.h  |  6 ++++
> >  include/linux/mmc/sd.h    |  4 +++
> >  14 files changed, 204 insertions(+), 45 deletions(-)
> >
> > --
> > 2.25.1
>
Ulf Hansson Aug. 22, 2024, 12:36 p.m. UTC | #3
On Wed, 14 Aug 2024 at 09:31, Avri Altman <avri.altman@wdc.com> wrote:
>
> Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those
> cards support capacity larger than 2TB and up to including 128TB. Thus,
> the address range of the card expands beyond the 32-bit command
> argument. To that end, a new command - CMD22 is defined, to carry the
> extra 6-bit upper part of the 38-bit block address that enable access to
> 128TB memory space.
>
> SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II – Same
> as SDXC.
>
> The spec defines several extensions/modifications to the current SDXC
> cards, which we address in patches 1 - 10.  Otherwise requirements are
> out-of-scope of this change.  Specifically, CMDQ (CMD44+CMD45), and
> Extension for Video Speed Class (CMD20).
>
> First publication of SDUC was in [1].  This series was developed and
> tested separately from [1] and does not borrow from it.
>
> [1] https://lwn.net/Articles/982566/

I realized that you didn't send this to Adrian Hunter. Please re-post
and add him, I am sure he will have some valuable feedback for us.

Kind regards
Uffe

>
> ---
> Changes in v3:
>  - Some more kernel test robot fixes
>  - Fix a typo in a commit log (Ricky WU)
>  - Fix ACMD22 returned value
>  - Add 'Tested-by' tag for the whole series (Ricky WU)
>
> Changes in v2:
>  - Attend kernel test robot warnings
>
> ---
>
> Avri Altman (10):
>   mmc: sd: SDUC Support Recognition
>   mmc: sd: Add SD CSD version 3.0
>   mmc: sd: Add Extension memory addressing
>   mmc: core: Add open-ended Ext memory addressing
>   mmc: host: Always use manual-cmd23 in SDUC
>   mmc: core: Add close-ended Ext memory addressing
>   mmc: host: Add close-ended Ext memory addressing
>   mmc: core: Allow mmc erase to carry large addresses
>   mmc: core: Add Ext memory addressing for erase
>   mmc: core: Adjust ACMD22 to SDUC
>
>  drivers/mmc/core/block.c  | 62 ++++++++++++++++++++++++++++++++------
>  drivers/mmc/core/bus.c    |  4 ++-
>  drivers/mmc/core/card.h   |  3 ++
>  drivers/mmc/core/core.c   | 63 ++++++++++++++++++++++++++++-----------
>  drivers/mmc/core/core.h   | 14 +++++++--
>  drivers/mmc/core/queue.h  |  1 +
>  drivers/mmc/core/sd.c     | 16 ++++++----
>  drivers/mmc/core/sd_ops.c | 34 ++++++++++++++++++---
>  drivers/mmc/core/sd_ops.h |  1 +
>  drivers/mmc/host/sdhci.c  | 38 +++++++++++++++++++----
>  include/linux/mmc/card.h  |  2 +-
>  include/linux/mmc/core.h  |  1 +
>  include/linux/mmc/host.h  |  6 ++++
>  include/linux/mmc/sd.h    |  4 +++
>  14 files changed, 204 insertions(+), 45 deletions(-)
>
> --
> 2.25.1
>
Avri Altman Aug. 22, 2024, 1:20 p.m. UTC | #4
> On Wed, 14 Aug 2024 at 09:31, Avri Altman <avri.altman@wdc.com> wrote:
> >
> > Ultra Capacity SD cards (SDUC) was already introduced in SD7.0.  Those
> > cards support capacity larger than 2TB and up to including 128TB.
> > Thus, the address range of the card expands beyond the 32-bit command
> > argument. To that end, a new command - CMD22 is defined, to carry the
> > extra 6-bit upper part of the 38-bit block address that enable access
> > to 128TB memory space.
> >
> > SDUC capacity is agnostic to the interface mode: UHS-I and UHS-II –
> > Same as SDXC.
> >
> > The spec defines several extensions/modifications to the current SDXC
> > cards, which we address in patches 1 - 10.  Otherwise requirements are
> > out-of-scope of this change.  Specifically, CMDQ (CMD44+CMD45), and
> > Extension for Video Speed Class (CMD20).
> >
> > First publication of SDUC was in [1].  This series was developed and
> > tested separately from [1] and does not borrow from it.
> >
> > [1] https://lwn.net/Articles/982566/
> 
> I realized that you didn't send this to Adrian Hunter. Please re-post and add
> him, I am sure he will have some valuable feedback for us.
Will cc him on the next versions.

Thanks,
Avri

> 
> Kind regards
> Uffe
> 
> >
> > ---
> > Changes in v3:
> >  - Some more kernel test robot fixes
> >  - Fix a typo in a commit log (Ricky WU)
> >  - Fix ACMD22 returned value
> >  - Add 'Tested-by' tag for the whole series (Ricky WU)
> >
> > Changes in v2:
> >  - Attend kernel test robot warnings
> >
> > ---
> >
> > Avri Altman (10):
> >   mmc: sd: SDUC Support Recognition
> >   mmc: sd: Add SD CSD version 3.0
> >   mmc: sd: Add Extension memory addressing
> >   mmc: core: Add open-ended Ext memory addressing
> >   mmc: host: Always use manual-cmd23 in SDUC
> >   mmc: core: Add close-ended Ext memory addressing
> >   mmc: host: Add close-ended Ext memory addressing
> >   mmc: core: Allow mmc erase to carry large addresses
> >   mmc: core: Add Ext memory addressing for erase
> >   mmc: core: Adjust ACMD22 to SDUC
> >
> >  drivers/mmc/core/block.c  | 62 ++++++++++++++++++++++++++++++++--
> ----
> >  drivers/mmc/core/bus.c    |  4 ++-
> >  drivers/mmc/core/card.h   |  3 ++
> >  drivers/mmc/core/core.c   | 63 ++++++++++++++++++++++++++++---------
> --
> >  drivers/mmc/core/core.h   | 14 +++++++--
> >  drivers/mmc/core/queue.h  |  1 +
> >  drivers/mmc/core/sd.c     | 16 ++++++----
> >  drivers/mmc/core/sd_ops.c | 34 ++++++++++++++++++---
> > drivers/mmc/core/sd_ops.h |  1 +  drivers/mmc/host/sdhci.c  | 38
> > +++++++++++++++++++----  include/linux/mmc/card.h  |  2 +-
> > include/linux/mmc/core.h  |  1 +  include/linux/mmc/host.h  |  6 ++++
> >  include/linux/mmc/sd.h    |  4 +++
> >  14 files changed, 204 insertions(+), 45 deletions(-)
> >
> > --
> > 2.25.1
> >