Re: [PATCH] MIPS: OCTEON: Fix the boot broken when using built-in DTB

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 18, 2021 at 07:24:19PM +0100, Thomas Bogendoerfer wrote:
> On Sat, Jan 09, 2021 at 07:49:58PM +0800, Kevin Hao wrote:
> > For the OCTEON boards, it need to patch the built-in DTB before using
> > it. Previously it judges if it is a built-in DTB by checking
> > fw_passed_dtb. But after commit 37e5c69ffd41 ("MIPS: head.S: Init
> > fw_passed_dtb to builtin DTB", the fw_passed_dtb is initialized even
> > when using built-in DTB. This causes the OCTEON boards boot broken due
> > to an unpatched built-in DTB is used. Add more checks to judge if we
> > really use built-in DTB or not.
> > 
> > Fixed: 37e5c69ffd41 ("MIPS: head.S: Init fw_passed_dtb to builtin DTB")
> > Cc: stable@xxxxxxxxxxxxxxx
> > Signed-off-by: Kevin Hao <haokexin@xxxxxxxxx>
> > ---
> >  arch/mips/cavium-octeon/setup.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c
> > index 982826ba0ef7..41d9c80e9666 100644
> > --- a/arch/mips/cavium-octeon/setup.c
> > +++ b/arch/mips/cavium-octeon/setup.c
> > @@ -1149,7 +1149,8 @@ void __init device_tree_init(void)
> >  	bool do_prune;
> >  	bool fill_mac;
> >  
> > -	if (fw_passed_dtb) {
> > +	if (fw_passed_dtb && (fw_passed_dtb != (ulong)&__dtb_octeon_68xx_begin) &&
> > +	    (fw_passed_dtb != (ulong)&__dtb_octeon_3xxx_begin)) {
> 
> well, if someone add a third dtb do the builtin DTBs, this might fail
> again. Let's fix it for real...
> 
> >  		fdt = (void *)fw_passed_dtb;
> >  		do_prune = false;
> >  		fill_mac = true;
> 
> .... IMHO the real bug is d9df9fb901d2 MIPS: Octeon: Remove special handling
> of CONFIG_MIPS_ELF_APPENDED_DTB=y. I'm tending to simply revert that commit.

Yes, this indeed seem much better. I will send a patch to revert d9df9fb901d2.
Another issue is that the name of fw_passed_dtb seems pretty confusion after the
change of commit 37e5c69ffd41. Could we rename it to something like final_dtb_addr?

Thanks,
Kevin

> A different option would be to not place the two __dtb_octeon dtbs into the
> builtin dtb section, which looks like more work for not much gain...
> 
> Thomas.
> 
> -- 
> Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
> good idea.                                                [ RFC1925, 2.3 ]

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux