Dear Marek,

> From: Marek Vasut <ma...@denx.de>
> Sent: vendredi 3 avril 2020 23:27
> 
> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> > Add protection in dram_bank_mmu_setup() to avoid access to bd->bi_dram
> > before relocation.
> >
> > This patch allow to use the generic weak function dram_bank_mmu_setup
> > to activate the MMU and the data cache in SPL or in U-Boot before
> > relocation, when bd->bi_dram is not yet initialized.
> >
> > In this cases, the MMU must be initialized explicitly with
> > mmu_set_region_dcache_behaviour function.
> >
> > Signed-off-by: Patrick Delaunay <patrick.delau...@st.com>
> > ---
> >
> >  arch/arm/lib/cache-cp15.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c
> > index f8d20960da..54509f11c3 100644
> > --- a/arch/arm/lib/cache-cp15.c
> > +++ b/arch/arm/lib/cache-cp15.c
> > @@ -91,6 +91,10 @@ __weak void dram_bank_mmu_setup(int bank)
> >     bd_t *bd = gd->bd;
> >     int     i;
> >
> > +   /* bd->bi_dram is available only after relocation */
> > +   if ((gd->flags & GD_FLG_RELOC) == 0)
> > +           return;
> 
> Why not just set the bd->bi_dram correctly before this is called ?

Just set "bd->bi_dram" seens as a hack.

For me the bd struct can be updated only in  common/board_f.c
after reserve_board() for U-Boot 
Or other spl_set_bd() called in board_init_r() for SPL. 

And that can cause issue if CONFIG_NR_DRAM_BANKS > 1
(even it is not the case today for STM32MP1).

But if this kind of protection is not correct here I prefer come back
to overidde of the weak fucntio dram_bank_mmu_setup in stm32mp arch
(it is the reason this weak definition)

Patrick

Reply via email to