[1/3] mmc: block: ioctl: define rpmb reliable flag

Message ID e41fbab65e164b3788818bae83f0061a@hyperstone.com
State New
Headers
Series mmc: block: ioctl: Enhance userspace err-checking |

Commit Message

Christian Loehle April 5, 2023, 11:57 a.m. UTC
  Give a proper name to BIT 31 which is used as reliable write
for RPMB.

Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
---
 drivers/mmc/core/block.c       | 5 ++++-
 include/uapi/linux/mmc/ioctl.h | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)
  

Comments

Avri Altman April 20, 2023, 12:46 p.m. UTC | #1
> Give a proper name to BIT 31 which is used as reliable write
> for RPMB.
> 
> Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>

Thanks (see nit below),
Avri

> ---
>  drivers/mmc/core/block.c       | 5 ++++-
>  include/uapi/linux/mmc/ioctl.h | 1 +
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> index 672ab90c4b2d..16e262ddc954 100644
> --- a/drivers/mmc/core/block.c
> +++ b/drivers/mmc/core/block.c
> @@ -49,6 +49,8 @@
> 
>  #include <linux/uaccess.h>
> 
> +#include <uapi/linux/mmc/ioctl.h>
> +
>  #include "queue.h"
>  #include "block.h"
>  #include "core.h"
> @@ -538,7 +540,8 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card
> *card, struct mmc_blk_data *md,
>                  * may be increased by a future standard. We just copy the
>                  * 'Reliable Write' bit here.
>                  */
> -               sbc.arg = data.blocks | (idata->ic.write_flag & BIT(31));
> +               sbc.arg = data.blocks |
> +                       (idata->ic.write_flag & MMC_RPMB_RELIABLE_WRITE);
>                 sbc.flags = MMC_RSP_R1 | MMC_CMD_AC;
>                 mrq.sbc = &sbc;
>         }
> diff --git a/include/uapi/linux/mmc/ioctl.h b/include/uapi/linux/mmc/ioctl.h
> index e7401ade6822..b2ff7f5be87b 100644
> --- a/include/uapi/linux/mmc/ioctl.h
> +++ b/include/uapi/linux/mmc/ioctl.h
> @@ -11,6 +11,7 @@ struct mmc_ioc_cmd {
>          * Bit 31 selects 'Reliable Write' for RPMB.
No longer needed.

Thanks,
Avri
>          */
>         int write_flag;
> +#define MMC_RPMB_RELIABLE_WRITE (1 << 31)
> 
>         /* Application-specific command.  true = precede with CMD55 */
>         int is_acmd;
> --
> 2.37.3
> 
> 
> Hyperstone GmbH | Reichenaustr. 39a  | 78467 Konstanz
> Managing Director: Dr. Jan Peter Berns.
> Commercial register of local courts: Freiburg HRB381782
  
Ulf Hansson May 15, 2023, 1:29 p.m. UTC | #2
On Wed, 5 Apr 2023 at 13:57, Christian Löhle <CLoehle@hyperstone.com> wrote:
>
> Give a proper name to BIT 31 which is used as reliable write
> for RPMB.
>
> Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
> ---
>  drivers/mmc/core/block.c       | 5 ++++-
>  include/uapi/linux/mmc/ioctl.h | 1 +
>  2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> index 672ab90c4b2d..16e262ddc954 100644
> --- a/drivers/mmc/core/block.c
> +++ b/drivers/mmc/core/block.c
> @@ -49,6 +49,8 @@
>
>  #include <linux/uaccess.h>
>
> +#include <uapi/linux/mmc/ioctl.h>
> +
>  #include "queue.h"
>  #include "block.h"
>  #include "core.h"
> @@ -538,7 +540,8 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
>                  * may be increased by a future standard. We just copy the
>                  * 'Reliable Write' bit here.
>                  */
> -               sbc.arg = data.blocks | (idata->ic.write_flag & BIT(31));
> +               sbc.arg = data.blocks |
> +                       (idata->ic.write_flag & MMC_RPMB_RELIABLE_WRITE);
>                 sbc.flags = MMC_RSP_R1 | MMC_CMD_AC;
>                 mrq.sbc = &sbc;
>         }
> diff --git a/include/uapi/linux/mmc/ioctl.h b/include/uapi/linux/mmc/ioctl.h
> index e7401ade6822..b2ff7f5be87b 100644
> --- a/include/uapi/linux/mmc/ioctl.h
> +++ b/include/uapi/linux/mmc/ioctl.h
> @@ -11,6 +11,7 @@ struct mmc_ioc_cmd {
>          * Bit 31 selects 'Reliable Write' for RPMB.
>          */
>         int write_flag;
> +#define MMC_RPMB_RELIABLE_WRITE (1 << 31)

I am not sure this is really worth it. Keeping kernel headers for user
space in sync is a bit messy.

The define as such seems reasonable, but isn't it better to have the
define at two places then? One that's part of the MMC subsystem in the
kernel and another that's specific to the mmc-utils userspace tool?

[...]

Kind regards
Uffe
  

Patch

diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 672ab90c4b2d..16e262ddc954 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -49,6 +49,8 @@ 
 
 #include <linux/uaccess.h>
 
+#include <uapi/linux/mmc/ioctl.h>
+
 #include "queue.h"
 #include "block.h"
 #include "core.h"
@@ -538,7 +540,8 @@  static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
 		 * may be increased by a future standard. We just copy the
 		 * 'Reliable Write' bit here.
 		 */
-		sbc.arg = data.blocks | (idata->ic.write_flag & BIT(31));
+		sbc.arg = data.blocks |
+			(idata->ic.write_flag & MMC_RPMB_RELIABLE_WRITE);
 		sbc.flags = MMC_RSP_R1 | MMC_CMD_AC;
 		mrq.sbc = &sbc;
 	}
diff --git a/include/uapi/linux/mmc/ioctl.h b/include/uapi/linux/mmc/ioctl.h
index e7401ade6822..b2ff7f5be87b 100644
--- a/include/uapi/linux/mmc/ioctl.h
+++ b/include/uapi/linux/mmc/ioctl.h
@@ -11,6 +11,7 @@  struct mmc_ioc_cmd {
 	 * Bit 31 selects 'Reliable Write' for RPMB.
 	 */
 	int write_flag;
+#define MMC_RPMB_RELIABLE_WRITE (1 << 31)
 
 	/* Application-specific command.  true = precede with CMD55 */
 	int is_acmd;