All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avri Altman <Avri.Altman@wdc.com>
To: "Christian Löhle" <CLoehle@hyperstone.com>,
	"ulf.hansson@linaro.org" <ulf.hansson@linaro.org>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>
Subject: RE: [PATCHv2] mmc-utils: Fix 4k sector size block count in FFU
Date: Fri, 24 Jun 2022 13:53:09 +0000	[thread overview]
Message-ID: <DM6PR04MB6575DE769DA8225F91F31955FCB49@DM6PR04MB6575.namprd04.prod.outlook.com> (raw)
In-Reply-To: <54477cf05b9148109996dd85c9afc30f@hyperstone.com>

> FFU used the wrong assumption, that CMD23 work in
> 4k sector chunks when setting the block count.
> Instead the CMD23 block count argument just needs
> to be a multiple of 8, which the fw_size is anyway.
> 
> Fixes: 89cd01ed865a (mmc_utils: add ffu support)
> Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>

Thanks,
Avri
> ---
>  mmc_cmds.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/mmc_cmds.c b/mmc_cmds.c
> index bb0f022..12b7802 100644
> --- a/mmc_cmds.c
> +++ b/mmc_cmds.c
> @@ -2768,7 +2768,6 @@ int do_ffu(int nargs, char **argv)
>         ssize_t chunk_size;
>         char *device;
>         struct mmc_ioc_multi_cmd *multi_cmd = NULL;
> -       __u32 blocks = 1;
> 
>         if (nargs != 3) {
>                 fprintf(stderr, "Usage: ffu <image name> </path/to/mmcblkX> \n");
> @@ -2826,15 +2825,13 @@ int do_ffu(int nargs, char **argv)
>                 goto out;
>         }
> 
> +       /* ensure fw is multiple of native sector size */
>         sect_size = (ext_csd[EXT_CSD_DATA_SECTOR_SIZE] == 0) ? 512 : 4096;
>         if (fw_size % sect_size) {
>                 fprintf(stderr, "Firmware data size (%jd) is not aligned!\n",
> (intmax_t)fw_size);
>                 goto out;
>         }
> 
> -       /* calculate required fw blocks for CMD25 */
> -       blocks = fw_size / sect_size;
> -
>         /* set CMD ARG */
>         arg = ext_csd[EXT_CSD_FFU_ARG_0] |
>                 ext_csd[EXT_CSD_FFU_ARG_1] << 8 |
> @@ -2857,13 +2854,17 @@ int do_ffu(int nargs, char **argv)
> 
>         /* send block count */
>         multi_cmd->cmds[1].opcode = MMC_SET_BLOCK_COUNT;
> -       multi_cmd->cmds[1].arg = blocks;
> +       multi_cmd->cmds[1].arg = fw_size / 512;
>         multi_cmd->cmds[1].flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 |
> MMC_CMD_AC;
> 
>         /* send image chunk */
>         multi_cmd->cmds[2].opcode = MMC_WRITE_MULTIPLE_BLOCK;
> -       multi_cmd->cmds[2].blksz = sect_size;
> -       multi_cmd->cmds[2].blocks = blocks;
> +       /*
> +        * blksz and blocks essentially do not matter, as long as the product
> +        * is fw_size, but some hosts don't handle larger blksz well.
> +        */
> +       multi_cmd->cmds[2].blksz = 512;
> +       multi_cmd->cmds[2].blocks = fw_size / 512;
>         multi_cmd->cmds[2].arg = arg;
>         multi_cmd->cmds[2].flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 |
> MMC_CMD_ADTC;
>         multi_cmd->cmds[2].write_flag = 1;
> --
> 2.36.1
> 
> Hyperstone GmbH | Reichenaustr. 39a  | 78467 Konstanz
> Managing Director: Dr. Jan Peter Berns.
> Commercial register of local courts: Freiburg HRB381782


  reply	other threads:[~2022-06-24 13:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-24 13:18 [PATCHv2] mmc-utils: Fix 4k sector size block count in FFU Christian Löhle
2022-06-24 13:53 ` Avri Altman [this message]
2022-07-13 11:03 ` Ulf Hansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM6PR04MB6575DE769DA8225F91F31955FCB49@DM6PR04MB6575.namprd04.prod.outlook.com \
    --to=avri.altman@wdc.com \
    --cc=CLoehle@hyperstone.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.