[PATCH v3 5/9] board_f: Fix corruption of relocaddr

Simon Glass sjg at chromium.org
Fri Aug 4 01:28:31 CEST 2023


Hi Bin,

On Thu, 3 Aug 2023 at 08:19, Bin Meng <bmeng.cn at gmail.com> wrote:
>
> Hi Tom, Simon,
>
> On Thu, Aug 3, 2023 at 9:13 PM Tom Rini <trini at konsulko.com> wrote:
> >
> > On Thu, Aug 03, 2023 at 07:03:47PM +0800, Bin Meng wrote:
> > > On Thu, Aug 3, 2023 at 6:37 PM Bin Meng <bmeng.cn at gmail.com> wrote:
> > > >
> > > > On Tue, Aug 1, 2023 at 12:00 AM Simon Glass <sjg at chromium.org> wrote:
> > > > >
> > > > > When the video framebuffer comes from the bloblist, we should not change
> > > > > relocaddr to this address, since it interfers with the normal memory
> > > >
> > > > typo: interferes
> > > >
> > > > > allocation.
> > > > >
> > > > > This fixes a boot loop in qemu-x86_64
> > > > >
> > > > > Signed-off-by: Simon Glass <sjg at chromium.org>
> > > > > Fixes: 5bc610a7d9d ("common: board_f: Pass frame buffer info from SPL to u-boot")
> > > > > Suggested-by: Nikhil M Jain <n-jain1 at ti.com>
> > > > > ---
> > > > >
> > > > > Changes in v3:
> > > > > - Reword the Kconfig help as suggested
> > > > >
> > > > > Changes in v2:
> > > > > - Add a Kconfig as the suggested conditional did not work
> > > > >
> > > > >  common/board_f.c      | 3 ++-
> > > > >  drivers/video/Kconfig | 9 +++++++++
> > > > >  2 files changed, 11 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/common/board_f.c b/common/board_f.c
> > > > > index 7d2c380e91e..5173d0a0c2d 100644
> > > > > --- a/common/board_f.c
> > > > > +++ b/common/board_f.c
> > > > > @@ -419,7 +419,8 @@ static int reserve_video(void)
> > > > >                 if (!ho)
> > > > >                         return log_msg_ret("blf", -ENOENT);
> > > > >                 video_reserve_from_bloblist(ho);
> > > > > -               gd->relocaddr = ho->fb;
> > > > > +               if (IS_ENABLED(CONFIG_VIDEO_RESERVE_SPL))
> > > > > +                       gd->relocaddr = ho->fb;
> > > > >         } else if (CONFIG_IS_ENABLED(VIDEO)) {
> > > > >                 ulong addr;
> > > > >                 int ret;
> > > > > diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> > > > > index b41dc60cec5..f2e56204d52 100644
> > > > > --- a/drivers/video/Kconfig
> > > > > +++ b/drivers/video/Kconfig
> > > > > @@ -1106,6 +1106,15 @@ config SPL_VIDEO_REMOVE
> > > > >           if this  option is enabled video driver will be removed at the end of
> > > > >           SPL stage, beforeloading the next stage.
> > > > >
> > > > > +config VIDEO_RESERVE_SPL
> > > > > +       bool
> > > > > +       help
> > > > > +         This adjusts reserve_video() to redirect memory reservation when it
> > > > > +         sees a video handoff blob (BLOBLISTT_U_BOOT_VIDEO). This avoids the
> > > > > +         memory used for framebuffer from being allocated by U-Boot proper,
> > > > > +         thus preventing any further memory reservations done by U-Boot proper
> > > > > +         from overwriting the framebuffer.
> > > > > +
> > > > >  if SPL_SPLASH_SCREEN
> > > > >
> > > > >  config SPL_SPLASH_SCREEN_ALIGN
> > > >
> > > > Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
> > >
> > > applied to u-boot-x86, thanks!
> >
> > This isn't the right path, we need to test:
> > https://patchwork.ozlabs.org/project/uboot/patch/20230801140414.76216-1-devarsht@ti.com/
>
> I can drop this commit and apply Devarsh's one, but looks there are
> some arguments.
>
> Let me know which one is the preferred approach.

We can take that one at least for now...I have spent enough time
trying to explain the problem.

Regards,
Simon


More information about the U-Boot mailing list