* [U-Boot] [PATCH] spl: spl_mmc: fix getting raw_sect when boot from emmc boot partition
@ 2019-10-23 1:43 Peng Fan
2019-10-23 7:23 ` Lukasz Majewski
0 siblings, 1 reply; 3+ messages in thread
From: Peng Fan @ 2019-10-23 1:43 UTC (permalink / raw)
To: u-boot
On i.MX8, when booting from eMMC boot partition, the whole flash.bin
is stored in boot partition, however SPL switches to user partition
during the init of mmc driver:
spl_mmc_load() -> mmc_init()
Then it tries to load the container image in
spl_mmc_get_uboot_raw_sector(), but here it reads the data from user
partition and the header is not recognized as a valid header.
So we move spl_mmc_get_uboot_raw_sector after eMMC partition switch
to address this issue.
Anyway put spl_mmc_get_uboot_raw_sector before eMMC partition switch
is not correct, so let's move it after eMMC partition switch.
Reported-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
common/spl/spl_mmc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 34e1e73d80..2ede096e61 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -343,8 +343,6 @@ int spl_mmc_load(struct spl_image_info *spl_image,
}
}
- raw_sect = spl_mmc_get_uboot_raw_sector(mmc);
-
boot_mode = spl_boot_mode(bootdev->boot_device);
err = -EINVAL;
switch (boot_mode) {
@@ -383,6 +381,9 @@ int spl_mmc_load(struct spl_image_info *spl_image,
if (!err)
return err;
}
+
+ raw_sect = spl_mmc_get_uboot_raw_sector(mmc);
+
#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
err = mmc_load_image_raw_partition(spl_image, mmc, raw_part,
raw_sect);
--
2.16.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH] spl: spl_mmc: fix getting raw_sect when boot from emmc boot partition
2019-10-23 1:43 [U-Boot] [PATCH] spl: spl_mmc: fix getting raw_sect when boot from emmc boot partition Peng Fan
@ 2019-10-23 7:23 ` Lukasz Majewski
2019-10-23 10:29 ` Peng Fan
0 siblings, 1 reply; 3+ messages in thread
From: Lukasz Majewski @ 2019-10-23 7:23 UTC (permalink / raw)
To: u-boot
Hi Peng,
> On i.MX8, when booting from eMMC boot partition, the whole flash.bin
> is stored in boot partition, however SPL switches to user partition
> during the init of mmc driver:
> spl_mmc_load() -> mmc_init()
>
> Then it tries to load the container image in
> spl_mmc_get_uboot_raw_sector(), but here it reads the data from user
> partition and the header is not recognized as a valid header.
>
> So we move spl_mmc_get_uboot_raw_sector after eMMC partition switch
> to address this issue.
>
> Anyway put spl_mmc_get_uboot_raw_sector before eMMC partition switch
> is not correct, so let's move it after eMMC partition switch.
>
I assume that this change is not causing regressions on other i.MX
boards? (Like i.MX6Q or i.MX53)
> Reported-by: Anatolij Gustschin <agust@denx.de>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> common/spl/spl_mmc.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> index 34e1e73d80..2ede096e61 100644
> --- a/common/spl/spl_mmc.c
> +++ b/common/spl/spl_mmc.c
> @@ -343,8 +343,6 @@ int spl_mmc_load(struct spl_image_info *spl_image,
> }
> }
>
> - raw_sect = spl_mmc_get_uboot_raw_sector(mmc);
> -
> boot_mode = spl_boot_mode(bootdev->boot_device);
> err = -EINVAL;
> switch (boot_mode) {
> @@ -383,6 +381,9 @@ int spl_mmc_load(struct spl_image_info *spl_image,
> if (!err)
> return err;
> }
> +
> + raw_sect = spl_mmc_get_uboot_raw_sector(mmc);
> +
> #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
> err = mmc_load_image_raw_partition(spl_image, mmc,
> raw_part, raw_sect);
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191023/8e4e3617/attachment.sig>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH] spl: spl_mmc: fix getting raw_sect when boot from emmc boot partition
2019-10-23 7:23 ` Lukasz Majewski
@ 2019-10-23 10:29 ` Peng Fan
0 siblings, 0 replies; 3+ messages in thread
From: Peng Fan @ 2019-10-23 10:29 UTC (permalink / raw)
To: u-boot
> Subject: Re: [PATCH] spl: spl_mmc: fix getting raw_sect when boot from
> emmc boot partition
>
> Hi Peng,
>
> > On i.MX8, when booting from eMMC boot partition, the whole flash.bin
> > is stored in boot partition, however SPL switches to user partition
> > during the init of mmc driver:
> > spl_mmc_load() -> mmc_init()
> >
> > Then it tries to load the container image in
> > spl_mmc_get_uboot_raw_sector(), but here it reads the data from user
> > partition and the header is not recognized as a valid header.
> >
> > So we move spl_mmc_get_uboot_raw_sector after eMMC partition switch
> to
> > address this issue.
> >
> > Anyway put spl_mmc_get_uboot_raw_sector before eMMC partition switch
> > is not correct, so let's move it after eMMC partition switch.
> >
>
> I assume that this change is not causing regressions on other i.MX boards?
> (Like i.MX6Q or i.MX53)
No regression on other i.MX boards. Only i.MX8QM/8QXP has this issue currently.
Regards,
Peng.
>
> > Reported-by: Anatolij Gustschin <agust@denx.de>
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> > common/spl/spl_mmc.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c index
> > 34e1e73d80..2ede096e61 100644
> > --- a/common/spl/spl_mmc.c
> > +++ b/common/spl/spl_mmc.c
> > @@ -343,8 +343,6 @@ int spl_mmc_load(struct spl_image_info
> *spl_image,
> > }
> > }
> >
> > - raw_sect = spl_mmc_get_uboot_raw_sector(mmc);
> > -
> > boot_mode = spl_boot_mode(bootdev->boot_device);
> > err = -EINVAL;
> > switch (boot_mode) {
> > @@ -383,6 +381,9 @@ int spl_mmc_load(struct spl_image_info
> *spl_image,
> > if (!err)
> > return err;
> > }
> > +
> > + raw_sect = spl_mmc_get_uboot_raw_sector(mmc);
> > +
> > #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
> > err = mmc_load_image_raw_partition(spl_image, mmc, raw_part,
> > raw_sect);
>
>
>
>
> Best regards,
>
> Lukasz Majewski
>
> --
>
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> lukma at denx.de
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-10-23 10:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-23 1:43 [U-Boot] [PATCH] spl: spl_mmc: fix getting raw_sect when boot from emmc boot partition Peng Fan
2019-10-23 7:23 ` Lukasz Majewski
2019-10-23 10:29 ` Peng Fan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox