Message ID | BLU436-SMTP25539E776CA3C8D894E5F51BFEF0@phx.gbl |
---|---|
State | Accepted |
Delegated to: | Simon Glass |
Headers | show |
Hi Bin, On 20 April 2015 at 22:21, Bin Meng <bmeng.cn@gmail.com> wrote: > Create a default e820 table with 3 entries which is enough to boot > a Linux kernel. > > Signed-off-by: Bin Meng <bmeng.cn@gmail.com> > --- > > arch/x86/lib/zimage.c | 29 ++++++++++++++++++++++------- > 1 file changed, 22 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c > index 566b048..c3f8a73 100644 > --- a/arch/x86/lib/zimage.c > +++ b/arch/x86/lib/zimage.c > @@ -25,6 +25,8 @@ > #endif > #include <linux/compiler.h> > > +DECLARE_GLOBAL_DATA_PTR; > + > /* > * Memory lay-out: > * > @@ -40,16 +42,29 @@ > > #define COMMAND_LINE_SIZE 2048 > > -unsigned generic_install_e820_map(unsigned max_entries, > - struct e820entry *entries) > +/* > + * Install a default e820 table with 3 entries as follows: > + * > + * 0x000000-0x0a0000 Useable RAM > + * 0x0a0000-0x100000 Reserved for ISA > + * 0x100000-gd->ram_size Useable RAM > + */ > +__weak unsigned install_e820_map(unsigned max_entries, > + struct e820entry *entries) > { > - return 0; > + entries[0].addr = 0; > + entries[0].size = ISA_START_ADDRESS; > + entries[0].type = E820_RAM; > + entries[1].addr = ISA_START_ADDRESS; > + entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; > + entries[1].type = E820_RESERVED; > + entries[2].addr = ISA_END_ADDRESS; > + entries[2].size = gd->ram_size - ISA_END_ADDRESS; > + entries[2].type = E820_RAM; > + > + return 3; > } > > -unsigned install_e820_map(unsigned max_entries, > - struct e820entry *entries) > - __attribute__((weak, alias("generic_install_e820_map"))); > - > static void build_command_line(char *command_line, int auto_boot) > { > char *env_command_line; > -- > 1.8.2.1 > Why is this code sitting in zimage.c? Should it be used with bootm also? Regards, Simon
Hi Simon, On Tue, Apr 21, 2015 at 9:52 PM, Simon Glass <sjg@chromium.org> wrote: > Hi Bin, > > On 20 April 2015 at 22:21, Bin Meng <bmeng.cn@gmail.com> wrote: >> Create a default e820 table with 3 entries which is enough to boot >> a Linux kernel. >> >> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> >> --- >> >> arch/x86/lib/zimage.c | 29 ++++++++++++++++++++++------- >> 1 file changed, 22 insertions(+), 7 deletions(-) >> >> diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c >> index 566b048..c3f8a73 100644 >> --- a/arch/x86/lib/zimage.c >> +++ b/arch/x86/lib/zimage.c >> @@ -25,6 +25,8 @@ >> #endif >> #include <linux/compiler.h> >> >> +DECLARE_GLOBAL_DATA_PTR; >> + >> /* >> * Memory lay-out: >> * >> @@ -40,16 +42,29 @@ >> >> #define COMMAND_LINE_SIZE 2048 >> >> -unsigned generic_install_e820_map(unsigned max_entries, >> - struct e820entry *entries) >> +/* >> + * Install a default e820 table with 3 entries as follows: >> + * >> + * 0x000000-0x0a0000 Useable RAM >> + * 0x0a0000-0x100000 Reserved for ISA >> + * 0x100000-gd->ram_size Useable RAM >> + */ >> +__weak unsigned install_e820_map(unsigned max_entries, >> + struct e820entry *entries) >> { >> - return 0; >> + entries[0].addr = 0; >> + entries[0].size = ISA_START_ADDRESS; >> + entries[0].type = E820_RAM; >> + entries[1].addr = ISA_START_ADDRESS; >> + entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; >> + entries[1].type = E820_RESERVED; >> + entries[2].addr = ISA_END_ADDRESS; >> + entries[2].size = gd->ram_size - ISA_END_ADDRESS; >> + entries[2].type = E820_RAM; >> + >> + return 3; >> } >> >> -unsigned install_e820_map(unsigned max_entries, >> - struct e820entry *entries) >> - __attribute__((weak, alias("generic_install_e820_map"))); >> - >> static void build_command_line(char *command_line, int auto_boot) >> { >> char *env_command_line; >> -- >> 1.8.2.1 >> > > Why is this code sitting in zimage.c? Should it be used with bootm also? Sorry I am not sure I understand your point. setup_zimage() is called by boot_prep_linux() in bootm.c. Regards Bin
Hi Bin, On 21 April 2015 at 19:01, Bin Meng <bmeng.cn@gmail.com> wrote: > Hi Simon, > > On Tue, Apr 21, 2015 at 9:52 PM, Simon Glass <sjg@chromium.org> wrote: >> Hi Bin, >> >> On 20 April 2015 at 22:21, Bin Meng <bmeng.cn@gmail.com> wrote: >>> Create a default e820 table with 3 entries which is enough to boot >>> a Linux kernel. >>> >>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> >>> --- >>> >>> arch/x86/lib/zimage.c | 29 ++++++++++++++++++++++------- >>> 1 file changed, 22 insertions(+), 7 deletions(-) >>> >>> diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c >>> index 566b048..c3f8a73 100644 >>> --- a/arch/x86/lib/zimage.c >>> +++ b/arch/x86/lib/zimage.c >>> @@ -25,6 +25,8 @@ >>> #endif >>> #include <linux/compiler.h> >>> >>> +DECLARE_GLOBAL_DATA_PTR; >>> + >>> /* >>> * Memory lay-out: >>> * >>> @@ -40,16 +42,29 @@ >>> >>> #define COMMAND_LINE_SIZE 2048 >>> >>> -unsigned generic_install_e820_map(unsigned max_entries, >>> - struct e820entry *entries) >>> +/* >>> + * Install a default e820 table with 3 entries as follows: >>> + * >>> + * 0x000000-0x0a0000 Useable RAM >>> + * 0x0a0000-0x100000 Reserved for ISA >>> + * 0x100000-gd->ram_size Useable RAM >>> + */ >>> +__weak unsigned install_e820_map(unsigned max_entries, >>> + struct e820entry *entries) >>> { >>> - return 0; >>> + entries[0].addr = 0; >>> + entries[0].size = ISA_START_ADDRESS; >>> + entries[0].type = E820_RAM; >>> + entries[1].addr = ISA_START_ADDRESS; >>> + entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; >>> + entries[1].type = E820_RESERVED; >>> + entries[2].addr = ISA_END_ADDRESS; >>> + entries[2].size = gd->ram_size - ISA_END_ADDRESS; >>> + entries[2].type = E820_RAM; >>> + >>> + return 3; >>> } >>> >>> -unsigned install_e820_map(unsigned max_entries, >>> - struct e820entry *entries) >>> - __attribute__((weak, alias("generic_install_e820_map"))); >>> - >>> static void build_command_line(char *command_line, int auto_boot) >>> { >>> char *env_command_line; >>> -- >>> 1.8.2.1 >>> >> >> Why is this code sitting in zimage.c? Should it be used with bootm also? > > Sorry I am not sure I understand your point. setup_zimage() is called > by boot_prep_linux() in bootm.c. I mean that install_e820_map() seems to be unrelated to zimage, and is perhaps better kept in a more generic place, perhaps arch/x86/lib/bootm.c or even arch/x86/lib/e820. Anyway let's apply this and we can figure that out later. Acked-by: Simon Glass <sjg@chromium.org> Regards, Simon
On 23 April 2015 at 20:41, Simon Glass <sjg@chromium.org> wrote: > Hi Bin, > > On 21 April 2015 at 19:01, Bin Meng <bmeng.cn@gmail.com> wrote: >> Hi Simon, >> >> On Tue, Apr 21, 2015 at 9:52 PM, Simon Glass <sjg@chromium.org> wrote: >>> Hi Bin, >>> >>> On 20 April 2015 at 22:21, Bin Meng <bmeng.cn@gmail.com> wrote: >>>> Create a default e820 table with 3 entries which is enough to boot >>>> a Linux kernel. >>>> >>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> >>>> --- >>>> >>>> arch/x86/lib/zimage.c | 29 ++++++++++++++++++++++------- >>>> 1 file changed, 22 insertions(+), 7 deletions(-) >>>> >>>> diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c >>>> index 566b048..c3f8a73 100644 >>>> --- a/arch/x86/lib/zimage.c >>>> +++ b/arch/x86/lib/zimage.c >>>> @@ -25,6 +25,8 @@ >>>> #endif >>>> #include <linux/compiler.h> >>>> >>>> +DECLARE_GLOBAL_DATA_PTR; >>>> + >>>> /* >>>> * Memory lay-out: >>>> * >>>> @@ -40,16 +42,29 @@ >>>> >>>> #define COMMAND_LINE_SIZE 2048 >>>> >>>> -unsigned generic_install_e820_map(unsigned max_entries, >>>> - struct e820entry *entries) >>>> +/* >>>> + * Install a default e820 table with 3 entries as follows: >>>> + * >>>> + * 0x000000-0x0a0000 Useable RAM >>>> + * 0x0a0000-0x100000 Reserved for ISA >>>> + * 0x100000-gd->ram_size Useable RAM >>>> + */ >>>> +__weak unsigned install_e820_map(unsigned max_entries, >>>> + struct e820entry *entries) >>>> { >>>> - return 0; >>>> + entries[0].addr = 0; >>>> + entries[0].size = ISA_START_ADDRESS; >>>> + entries[0].type = E820_RAM; >>>> + entries[1].addr = ISA_START_ADDRESS; >>>> + entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; >>>> + entries[1].type = E820_RESERVED; >>>> + entries[2].addr = ISA_END_ADDRESS; >>>> + entries[2].size = gd->ram_size - ISA_END_ADDRESS; >>>> + entries[2].type = E820_RAM; >>>> + >>>> + return 3; >>>> } >>>> >>>> -unsigned install_e820_map(unsigned max_entries, >>>> - struct e820entry *entries) >>>> - __attribute__((weak, alias("generic_install_e820_map"))); >>>> - >>>> static void build_command_line(char *command_line, int auto_boot) >>>> { >>>> char *env_command_line; >>>> -- >>>> 1.8.2.1 >>>> >>> >>> Why is this code sitting in zimage.c? Should it be used with bootm also? >> >> Sorry I am not sure I understand your point. setup_zimage() is called >> by boot_prep_linux() in bootm.c. > > I mean that install_e820_map() seems to be unrelated to zimage, and is > perhaps better kept in a more generic place, perhaps > arch/x86/lib/bootm.c or even arch/x86/lib/e820. Anyway let's apply > this and we can figure that out later. > > Acked-by: Simon Glass <sjg@chromium.org> > > Regards, > Simon Applied to u-boot-x86, thanks!
diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c index 566b048..c3f8a73 100644 --- a/arch/x86/lib/zimage.c +++ b/arch/x86/lib/zimage.c @@ -25,6 +25,8 @@ #endif #include <linux/compiler.h> +DECLARE_GLOBAL_DATA_PTR; + /* * Memory lay-out: * @@ -40,16 +42,29 @@ #define COMMAND_LINE_SIZE 2048 -unsigned generic_install_e820_map(unsigned max_entries, - struct e820entry *entries) +/* + * Install a default e820 table with 3 entries as follows: + * + * 0x000000-0x0a0000 Useable RAM + * 0x0a0000-0x100000 Reserved for ISA + * 0x100000-gd->ram_size Useable RAM + */ +__weak unsigned install_e820_map(unsigned max_entries, + struct e820entry *entries) { - return 0; + entries[0].addr = 0; + entries[0].size = ISA_START_ADDRESS; + entries[0].type = E820_RAM; + entries[1].addr = ISA_START_ADDRESS; + entries[1].size = ISA_END_ADDRESS - ISA_START_ADDRESS; + entries[1].type = E820_RESERVED; + entries[2].addr = ISA_END_ADDRESS; + entries[2].size = gd->ram_size - ISA_END_ADDRESS; + entries[2].type = E820_RAM; + + return 3; } -unsigned install_e820_map(unsigned max_entries, - struct e820entry *entries) - __attribute__((weak, alias("generic_install_e820_map"))); - static void build_command_line(char *command_line, int auto_boot) { char *env_command_line;
Create a default e820 table with 3 entries which is enough to boot a Linux kernel. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> --- arch/x86/lib/zimage.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-)