diff mbox

[U-Boot,1/2] x86: x86-common.h: Add CONFIG_BOOTDELAY

Message ID 1453124997-8927-1-git-send-email-sr@denx.de
State Accepted
Commit f7c3638c9f6a9beb812adcfb7c61e4c65ac1888d
Delegated to: Bin Meng
Headers show

Commit Message

Stefan Roese Jan. 18, 2016, 1:49 p.m. UTC
Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
autoboot_command() from common/* will not get called. So lets define
CONFIG_BOOTDELAY, so that auto-booting works on x86.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Miao Yan <yanmiaobest@gmail.com>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
---
 include/configs/x86-common.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Miao Yan Jan. 19, 2016, 5:20 a.m. UTC | #1
2016-01-18 21:49 GMT+08:00 Stefan Roese <sr@denx.de>:
> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
> autoboot_command() from common/* will not get called. So lets define
> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Miao Yan <yanmiaobest@gmail.com>
> Cc: Bin Meng <bmeng.cn@gmail.com>
> Cc: Simon Glass <sjg@chromium.org>
> ---
>  include/configs/x86-common.h | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/include/configs/x86-common.h b/include/configs/x86-common.h
> index 4182a3b..6e73656 100644
> --- a/include/configs/x86-common.h
> +++ b/include/configs/x86-common.h
> @@ -235,4 +235,6 @@
>         "tftpboot $loadaddr $bootfile;"                 \
>         "zboot $loadaddr"
>
> +#define CONFIG_BOOTDELAY       2
> +
>  #endif /* __CONFIG_H */
> --
> 2.6.5
>

Tested-by: Miao Yan <yanmiaobest@gmail.com>
Bin Meng Jan. 19, 2016, 6:19 a.m. UTC | #2
On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
> autoboot_command() from common/* will not get called. So lets define
> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Miao Yan <yanmiaobest@gmail.com>
> Cc: Bin Meng <bmeng.cn@gmail.com>
> Cc: Simon Glass <sjg@chromium.org>
> ---
>  include/configs/x86-common.h | 2 ++
>  1 file changed, 2 insertions(+)
>

Acked-by: Bin Meng <bmeng.cn@gmail.com>
Tom Rini Jan. 19, 2016, 5:25 p.m. UTC | #3
On Mon, Jan 18, 2016 at 02:49:56PM +0100, Stefan Roese wrote:

> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
> autoboot_command() from common/* will not get called. So lets define
> CONFIG_BOOTDELAY, so that auto-booting works on x86.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Miao Yan <yanmiaobest@gmail.com>
> Cc: Bin Meng <bmeng.cn@gmail.com>
> Cc: Simon Glass <sjg@chromium.org>

I think the right direction (and I haven't had time myself) is to make
x86 use the generic distro framework.  Dennis Gilmore pointed out a
while ago Fedora at least can be easily made to generate the extlinux
file on x86 even so it'll just work there :)
Stefan Roese Jan. 21, 2016, 6:06 a.m. UTC | #4
Hi Tom,

On 19.01.2016 18:25, Tom Rini wrote:
> On Mon, Jan 18, 2016 at 02:49:56PM +0100, Stefan Roese wrote:
>
>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>> autoboot_command() from common/* will not get called. So lets define
>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> Cc: Miao Yan <yanmiaobest@gmail.com>
>> Cc: Bin Meng <bmeng.cn@gmail.com>
>> Cc: Simon Glass <sjg@chromium.org>
>
> I think the right direction (and I haven't had time myself) is to make
> x86 use the generic distro framework.  Dennis Gilmore pointed out a
> while ago Fedora at least can be easily made to generate the extlinux
> file on x86 even so it'll just work there :)

Yes, this is definitely the "right direction". Unfortunately I'm a bit
limited with the time I could spend on this. And frankly, I have not
much experience with the generic distro framework. So I would like
to postpone this distro rework for a bit now. And since x86 does not
support auto-booting at all without CONFIG_BOOTDELAY, I think it
makes sense to apply this patch now. And add the distro stuff a
bit later.

Thanks,
Stefan
Bin Meng Jan. 26, 2016, 6:48 a.m. UTC | #5
Hi Stefan,

On Tue, Jan 19, 2016 at 2:19 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
> On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>> autoboot_command() from common/* will not get called. So lets define
>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> Cc: Miao Yan <yanmiaobest@gmail.com>
>> Cc: Bin Meng <bmeng.cn@gmail.com>
>> Cc: Simon Glass <sjg@chromium.org>
>> ---
>>  include/configs/x86-common.h | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>
> Acked-by: Bin Meng <bmeng.cn@gmail.com>

Sorry, this patch does not build for efi-x86.

       x86:  +   efi-x86
+../common/autoboot.c: In function 'process_fdt_options':
+../common/autoboot.c:296:36: error: 'CONFIG_SYS_TEXT_BASE' undeclared
(first use in this function)
+   setenv_addr("kernaddr", (void *)(CONFIG_SYS_TEXT_BASE + addr));
+                                    ^
+../common/autoboot.c:296:36: note: each undeclared identifier is
reported only once for each function it appears in
+make[2]: *** [common/autoboot.o] Error 1
+make[1]: *** [common] Error 2
+make: *** [sub-make] Error 2

Could you please fix this? Sorry I did not run buildman earlier.

Regards,
Bin
Stefan Roese Jan. 28, 2016, 3:04 p.m. UTC | #6
Hi Bin,

On 26.01.2016 07:48, Bin Meng wrote:
> On Tue, Jan 19, 2016 at 2:19 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>> On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
>>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>>> autoboot_command() from common/* will not get called. So lets define
>>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>>
>>> Signed-off-by: Stefan Roese <sr@denx.de>
>>> Cc: Miao Yan <yanmiaobest@gmail.com>
>>> Cc: Bin Meng <bmeng.cn@gmail.com>
>>> Cc: Simon Glass <sjg@chromium.org>
>>> ---
>>>   include/configs/x86-common.h | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>
>> Acked-by: Bin Meng <bmeng.cn@gmail.com>
>
> Sorry, this patch does not build for efi-x86.
>
>         x86:  +   efi-x86
> +../common/autoboot.c: In function 'process_fdt_options':
> +../common/autoboot.c:296:36: error: 'CONFIG_SYS_TEXT_BASE' undeclared
> (first use in this function)
> +   setenv_addr("kernaddr", (void *)(CONFIG_SYS_TEXT_BASE + addr));
> +                                    ^
> +../common/autoboot.c:296:36: note: each undeclared identifier is
> reported only once for each function it appears in
> +make[2]: *** [common/autoboot.o] Error 1
> +make[1]: *** [common] Error 2
> +make: *** [sub-make] Error 2
>
> Could you please fix this? Sorry I did not run buildman earlier.

No need to be sorry for you. I should have spotted this problem before
submitting. I'll fix this soon and will resubmit.

Thanks,
Stefan
Stefan Roese Jan. 28, 2016, 4:13 p.m. UTC | #7
Hi Bin,

(added Simon to Cc)

On 26.01.2016 07:48, Bin Meng wrote:
> On Tue, Jan 19, 2016 at 2:19 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>> On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
>>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>>> autoboot_command() from common/* will not get called. So lets define
>>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>>
>>> Signed-off-by: Stefan Roese <sr@denx.de>
>>> Cc: Miao Yan <yanmiaobest@gmail.com>
>>> Cc: Bin Meng <bmeng.cn@gmail.com>
>>> Cc: Simon Glass <sjg@chromium.org>
>>> ---
>>>   include/configs/x86-common.h | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>
>> Acked-by: Bin Meng <bmeng.cn@gmail.com>
>
> Sorry, this patch does not build for efi-x86.
>
>         x86:  +   efi-x86
> +../common/autoboot.c: In function 'process_fdt_options':
> +../common/autoboot.c:296:36: error: 'CONFIG_SYS_TEXT_BASE' undeclared
> (first use in this function)
> +   setenv_addr("kernaddr", (void *)(CONFIG_SYS_TEXT_BASE + addr));
> +                                    ^
> +../common/autoboot.c:296:36: note: each undeclared identifier is
> reported only once for each function it appears in
> +make[2]: *** [common/autoboot.o] Error 1
> +make[1]: *** [common] Error 2
> +make: *** [sub-make] Error 2
>
> Could you please fix this? Sorry I did not run buildman earlier.

I'm a bit hesitant on how to fix this. As I don't really know this
"efi-x86" target in detail. Is this code in process_fdt_options()
really needed for this target? To configure the env variables
"kernaddr" and "rootaddr" dynamically from the DT properties
"kernel-offset" and "rootdisk-offset". I can't find any references
to these DT properties anywhere?

Simon, you introduced this env variable handling with the patch
[fdt: Set kernaddr if fdt indicates a kernel is present] (git ID
fcabc24f) in October 2012.

Perhaps its best to assign TEXT_BASE to 0 if its not defined at
all? Or is this in general the correct value for the "efi-x86"
target and should be set specifically for it?

Thanks,
Stefan
Simon Glass Jan. 28, 2016, 4:16 p.m. UTC | #8
Hi Stefan,

On 28 January 2016 at 09:13, Stefan Roese <sr@denx.de> wrote:
>
> Hi Bin,
>
> (added Simon to Cc)
>
> On 26.01.2016 07:48, Bin Meng wrote:
>>
>> On Tue, Jan 19, 2016 at 2:19 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>
>>> On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
>>>>
>>>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>>>> autoboot_command() from common/* will not get called. So lets define
>>>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>>>
>>>> Signed-off-by: Stefan Roese <sr@denx.de>
>>>> Cc: Miao Yan <yanmiaobest@gmail.com>
>>>> Cc: Bin Meng <bmeng.cn@gmail.com>
>>>> Cc: Simon Glass <sjg@chromium.org>
>>>> ---
>>>>   include/configs/x86-common.h | 2 ++
>>>>   1 file changed, 2 insertions(+)
>>>>
>>>
>>> Acked-by: Bin Meng <bmeng.cn@gmail.com>
>>
>>
>> Sorry, this patch does not build for efi-x86.
>>
>>         x86:  +   efi-x86
>> +../common/autoboot.c: In function 'process_fdt_options':
>> +../common/autoboot.c:296:36: error: 'CONFIG_SYS_TEXT_BASE' undeclared
>> (first use in this function)
>> +   setenv_addr("kernaddr", (void *)(CONFIG_SYS_TEXT_BASE + addr));
>> +                                    ^
>> +../common/autoboot.c:296:36: note: each undeclared identifier is
>> reported only once for each function it appears in
>> +make[2]: *** [common/autoboot.o] Error 1
>> +make[1]: *** [common] Error 2
>> +make: *** [sub-make] Error 2
>>
>> Could you please fix this? Sorry I did not run buildman earlier.
>
>
> I'm a bit hesitant on how to fix this. As I don't really know this
> "efi-x86" target in detail. Is this code in process_fdt_options()
> really needed for this target? To configure the env variables
> "kernaddr" and "rootaddr" dynamically from the DT properties
> "kernel-offset" and "rootdisk-offset". I can't find any references
> to these DT properties anywhere?
>
> Simon, you introduced this env variable handling with the patch
> [fdt: Set kernaddr if fdt indicates a kernel is present] (git ID
> fcabc24f) in October 2012.
>
> Perhaps its best to assign TEXT_BASE to 0 if its not defined at
> all? Or is this in general the correct value for the "efi-x86"
> target and should be set specifically for it?

It is a funny target since we actually produce a relocatable ELF. I'd
suggest putting #ifdef CONFIG_SYS_TEXT_BASE around it.

Regards,
Simon
Stefan Roese Jan. 28, 2016, 4:18 p.m. UTC | #9
Hi Simon,

On 28.01.2016 17:16, Simon Glass wrote:
> Hi Stefan,
>
> On 28 January 2016 at 09:13, Stefan Roese <sr@denx.de> wrote:
>>
>> Hi Bin,
>>
>> (added Simon to Cc)
>>
>> On 26.01.2016 07:48, Bin Meng wrote:
>>>
>>> On Tue, Jan 19, 2016 at 2:19 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>>
>>>> On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
>>>>>
>>>>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>>>>> autoboot_command() from common/* will not get called. So lets define
>>>>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>>>>
>>>>> Signed-off-by: Stefan Roese <sr@denx.de>
>>>>> Cc: Miao Yan <yanmiaobest@gmail.com>
>>>>> Cc: Bin Meng <bmeng.cn@gmail.com>
>>>>> Cc: Simon Glass <sjg@chromium.org>
>>>>> ---
>>>>>    include/configs/x86-common.h | 2 ++
>>>>>    1 file changed, 2 insertions(+)
>>>>>
>>>>
>>>> Acked-by: Bin Meng <bmeng.cn@gmail.com>
>>>
>>>
>>> Sorry, this patch does not build for efi-x86.
>>>
>>>          x86:  +   efi-x86
>>> +../common/autoboot.c: In function 'process_fdt_options':
>>> +../common/autoboot.c:296:36: error: 'CONFIG_SYS_TEXT_BASE' undeclared
>>> (first use in this function)
>>> +   setenv_addr("kernaddr", (void *)(CONFIG_SYS_TEXT_BASE + addr));
>>> +                                    ^
>>> +../common/autoboot.c:296:36: note: each undeclared identifier is
>>> reported only once for each function it appears in
>>> +make[2]: *** [common/autoboot.o] Error 1
>>> +make[1]: *** [common] Error 2
>>> +make: *** [sub-make] Error 2
>>>
>>> Could you please fix this? Sorry I did not run buildman earlier.
>>
>>
>> I'm a bit hesitant on how to fix this. As I don't really know this
>> "efi-x86" target in detail. Is this code in process_fdt_options()
>> really needed for this target? To configure the env variables
>> "kernaddr" and "rootaddr" dynamically from the DT properties
>> "kernel-offset" and "rootdisk-offset". I can't find any references
>> to these DT properties anywhere?
>>
>> Simon, you introduced this env variable handling with the patch
>> [fdt: Set kernaddr if fdt indicates a kernel is present] (git ID
>> fcabc24f) in October 2012.
>>
>> Perhaps its best to assign TEXT_BASE to 0 if its not defined at
>> all? Or is this in general the correct value for the "efi-x86"
>> target and should be set specifically for it?
>
> It is a funny target since we actually produce a relocatable ELF. I'd
> suggest putting #ifdef CONFIG_SYS_TEXT_BASE around it.

Okay. I'll "solve" it this way.

Thanks,
Stefan
Bin Meng Jan. 29, 2016, 8:43 a.m. UTC | #10
On Tue, Jan 19, 2016 at 2:19 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
> On Mon, Jan 18, 2016 at 9:49 PM, Stefan Roese <sr@denx.de> wrote:
>> Without this CONFIG_BOOTDELAY, autobooting does not work at all. As
>> autoboot_command() from common/* will not get called. So lets define
>> CONFIG_BOOTDELAY, so that auto-booting works on x86.
>>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> Cc: Miao Yan <yanmiaobest@gmail.com>
>> Cc: Bin Meng <bmeng.cn@gmail.com>
>> Cc: Simon Glass <sjg@chromium.org>
>> ---
>>  include/configs/x86-common.h | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>
> Acked-by: Bin Meng <bmeng.cn@gmail.com>

applied to u-boot-x86/master, thanks!
diff mbox

Patch

diff --git a/include/configs/x86-common.h b/include/configs/x86-common.h
index 4182a3b..6e73656 100644
--- a/include/configs/x86-common.h
+++ b/include/configs/x86-common.h
@@ -235,4 +235,6 @@ 
 	"tftpboot $loadaddr $bootfile;"			\
 	"zboot $loadaddr"
 
+#define CONFIG_BOOTDELAY	2
+
 #endif	/* __CONFIG_H */