2023-04-05 12:14:39

by Christian Loehle

[permalink] [raw]
Subject: [PATCH 1/3] mmc: block: ioctl: define rpmb reliable flag

Give a proper name to BIT 31 which is used as reliable write
for RPMB.

Signed-off-by: Christian Loehle <[email protected]>
---
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)

/* 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


2023-04-20 12:57:09

by Avri Altman

[permalink] [raw]
Subject: RE: [PATCH 1/3] mmc: block: ioctl: define rpmb reliable flag


> Give a proper name to BIT 31 which is used as reliable write
> for RPMB.
>
> Signed-off-by: Christian Loehle <[email protected]>
Reviewed-by: Avri Altman <[email protected]>

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

2023-05-15 13:38:45

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH 1/3] mmc: block: ioctl: define rpmb reliable flag

On Wed, 5 Apr 2023 at 13:57, Christian Löhle <[email protected]> wrote:
>
> Give a proper name to BIT 31 which is used as reliable write
> for RPMB.
>
> Signed-off-by: Christian Loehle <[email protected]>
> ---
> 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