Patchwork [U-Boot,05/10] arm: spl: For Falcon Mode, set a default machid of ~0

login
register
mail settings
Submitter Tom Rini
Date Aug. 2, 2013, 8:26 p.m.
Message ID <1375475175-5073-6-git-send-email-trini@ti.com>
Download mbox | patch
Permalink /patch/264336/
State Superseded
Delegated to: Tom Rini
Headers show

Comments

Tom Rini - Aug. 2, 2013, 8:26 p.m.
With device trees, boards do not always set CONFIG_MACH_TYPE now, so we
must not rely on this define being set.  The kernel uses ~0 to see if we
have a valid machine number or not, so set that as the default, invalid
machine, id and only fix if CONFIG_MACH_TYPE is set.

Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
Signed-off-by: Tom Rini <trini@ti.com>
---
 arch/arm/lib/spl.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
Heiko Schocher - Aug. 5, 2013, 3:53 a.m.
Hello Tom,

Am 02.08.2013 22:26, schrieb Tom Rini:
> With device trees, boards do not always set CONFIG_MACH_TYPE now, so we
> must not rely on this define being set.  The kernel uses ~0 to see if we
> have a valid machine number or not, so set that as the default, invalid
> machine, id and only fix if CONFIG_MACH_TYPE is set.
>
> Cc: Albert ARIBAUD<albert.u.boot@aribaud.net>
> Signed-off-by: Tom Rini<trini@ti.com>
> ---
>   arch/arm/lib/spl.c |    7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)

Tested on an upcoming am1808 based board support.

Tested-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
Dan Murphy - Aug. 6, 2013, 6:28 p.m.
On 08/02/2013 03:26 PM, Tom Rini wrote:
> With device trees, boards do not always set CONFIG_MACH_TYPE now, so we
> must not rely on this define being set.  The kernel uses ~0 to see if we
> have a valid machine number or not, so set that as the default, invalid
> machine, id and only fix if CONFIG_MACH_TYPE is set.
>
> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
>  arch/arm/lib/spl.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/lib/spl.c b/arch/arm/lib/spl.c
> index 583bdb3..26d0be4 100644
> --- a/arch/arm/lib/spl.c
> +++ b/arch/arm/lib/spl.c
> @@ -45,12 +45,17 @@ void __weak board_init_f(ulong dummy)
>  #ifdef CONFIG_SPL_OS_BOOT
>  void __noreturn jump_to_image_linux(void *arg)
>  {
> +	unsigned long machid = 0xffffffff;
> +#ifdef CONFIG_MACH_TYPE
> +	machid = CONFIG_MACH_TYPE;
> +#endif
> +
>  	debug("Entering kernel arg pointer: 0x%p\n", arg);
>  	typedef void (*image_entry_arg_t)(int, int, void *)
>  		__attribute__ ((noreturn));
>  	image_entry_arg_t image_entry =
>  		(image_entry_arg_t) spl_image.entry_point;
>  	cleanup_before_linux();
> -	image_entry(0, CONFIG_MACH_TYPE, arg);
> +	image_entry(0, machid, arg);
>  }
>  #endif
The code looks fine just don't see how it is part of the "common" patch set series

otherwise
Acked-by: Dan Murphy <dmurphy@ti.com>
Tom Rini - Aug. 6, 2013, 7:10 p.m.
On Tue, Aug 06, 2013 at 01:28:53PM -0500, Dan Murphy wrote:
> On 08/02/2013 03:26 PM, Tom Rini wrote:
> > With device trees, boards do not always set CONFIG_MACH_TYPE now, so we
> > must not rely on this define being set.  The kernel uses ~0 to see if we
> > have a valid machine number or not, so set that as the default, invalid
> > machine, id and only fix if CONFIG_MACH_TYPE is set.
> >
> > Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
> > Signed-off-by: Tom Rini <trini@ti.com>
> > ---
> >  arch/arm/lib/spl.c |    7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/lib/spl.c b/arch/arm/lib/spl.c
> > index 583bdb3..26d0be4 100644
> > --- a/arch/arm/lib/spl.c
> > +++ b/arch/arm/lib/spl.c
> > @@ -45,12 +45,17 @@ void __weak board_init_f(ulong dummy)
> >  #ifdef CONFIG_SPL_OS_BOOT
> >  void __noreturn jump_to_image_linux(void *arg)
> >  {
> > +	unsigned long machid = 0xffffffff;
> > +#ifdef CONFIG_MACH_TYPE
> > +	machid = CONFIG_MACH_TYPE;
> > +#endif
> > +
> >  	debug("Entering kernel arg pointer: 0x%p\n", arg);
> >  	typedef void (*image_entry_arg_t)(int, int, void *)
> >  		__attribute__ ((noreturn));
> >  	image_entry_arg_t image_entry =
> >  		(image_entry_arg_t) spl_image.entry_point;
> >  	cleanup_before_linux();
> > -	image_entry(0, CONFIG_MACH_TYPE, arg);
> > +	image_entry(0, machid, arg);
> >  }
> >  #endif
> The code looks fine just don't see how it is part of the "common"
> patch set series

Uncovered porting omap5 platforms over as they do not set
CONFIG_MACH_TYPE (and no need to start).
Dan Murphy - Aug. 6, 2013, 8:03 p.m.
Tom
On 08/06/2013 02:10 PM, Tom Rini wrote:
> On Tue, Aug 06, 2013 at 01:28:53PM -0500, Dan Murphy wrote:
>> On 08/02/2013 03:26 PM, Tom Rini wrote:
>>> With device trees, boards do not always set CONFIG_MACH_TYPE now, so we
>>> must not rely on this define being set.  The kernel uses ~0 to see if we
>>> have a valid machine number or not, so set that as the default, invalid
>>> machine, id and only fix if CONFIG_MACH_TYPE is set.
>>>
>>> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
>>> Signed-off-by: Tom Rini <trini@ti.com>
>>> ---
>>>  arch/arm/lib/spl.c |    7 ++++++-
>>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/arch/arm/lib/spl.c b/arch/arm/lib/spl.c
>>> index 583bdb3..26d0be4 100644
>>> --- a/arch/arm/lib/spl.c
>>> +++ b/arch/arm/lib/spl.c
>>> @@ -45,12 +45,17 @@ void __weak board_init_f(ulong dummy)
>>>  #ifdef CONFIG_SPL_OS_BOOT
>>>  void __noreturn jump_to_image_linux(void *arg)
>>>  {
>>> +	unsigned long machid = 0xffffffff;
>>> +#ifdef CONFIG_MACH_TYPE
>>> +	machid = CONFIG_MACH_TYPE;
>>> +#endif
>>> +
>>>  	debug("Entering kernel arg pointer: 0x%p\n", arg);
>>>  	typedef void (*image_entry_arg_t)(int, int, void *)
>>>  		__attribute__ ((noreturn));
>>>  	image_entry_arg_t image_entry =
>>>  		(image_entry_arg_t) spl_image.entry_point;
>>>  	cleanup_before_linux();
>>> -	image_entry(0, CONFIG_MACH_TYPE, arg);
>>> +	image_entry(0, machid, arg);
>>>  }
>>>  #endif
>> The code looks fine just don't see how it is part of the "common"
>> patch set series
> Uncovered porting omap5 platforms over as they do not set
> CONFIG_MACH_TYPE (and no need to start).
>
Good find.

Reviewed-by: Dan Murphy <dmurphy@ti.com>

Patch

diff --git a/arch/arm/lib/spl.c b/arch/arm/lib/spl.c
index 583bdb3..26d0be4 100644
--- a/arch/arm/lib/spl.c
+++ b/arch/arm/lib/spl.c
@@ -45,12 +45,17 @@  void __weak board_init_f(ulong dummy)
 #ifdef CONFIG_SPL_OS_BOOT
 void __noreturn jump_to_image_linux(void *arg)
 {
+	unsigned long machid = 0xffffffff;
+#ifdef CONFIG_MACH_TYPE
+	machid = CONFIG_MACH_TYPE;
+#endif
+
 	debug("Entering kernel arg pointer: 0x%p\n", arg);
 	typedef void (*image_entry_arg_t)(int, int, void *)
 		__attribute__ ((noreturn));
 	image_entry_arg_t image_entry =
 		(image_entry_arg_t) spl_image.entry_point;
 	cleanup_before_linux();
-	image_entry(0, CONFIG_MACH_TYPE, arg);
+	image_entry(0, machid, arg);
 }
 #endif