All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map()
       [not found] <1429590096-4882-1-git-send-email-bmeng.cn@gmail.com>
@ 2015-04-21  4:21 ` Bin Meng
  2015-04-21 13:52   ` Simon Glass
  0 siblings, 1 reply; 5+ messages in thread
From: Bin Meng @ 2015-04-21  4:21 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map()
  2015-04-21  4:21 ` [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map() Bin Meng
@ 2015-04-21 13:52   ` Simon Glass
  2015-04-22  1:01     ` Bin Meng
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Glass @ 2015-04-21 13:52 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map()
  2015-04-21 13:52   ` Simon Glass
@ 2015-04-22  1:01     ` Bin Meng
  2015-04-24  2:41       ` Simon Glass
  0 siblings, 1 reply; 5+ messages in thread
From: Bin Meng @ 2015-04-22  1:01 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map()
  2015-04-22  1:01     ` Bin Meng
@ 2015-04-24  2:41       ` Simon Glass
  2015-04-25 14:18         ` Simon Glass
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Glass @ 2015-04-24  2:41 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map()
  2015-04-24  2:41       ` Simon Glass
@ 2015-04-25 14:18         ` Simon Glass
  0 siblings, 0 replies; 5+ messages in thread
From: Simon Glass @ 2015-04-25 14:18 UTC (permalink / raw)
  To: u-boot

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!

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-04-25 14:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1429590096-4882-1-git-send-email-bmeng.cn@gmail.com>
2015-04-21  4:21 ` [U-Boot] [PATCH 2/2] x86: Install a default e820 table in the __weak install_e820_map() Bin Meng
2015-04-21 13:52   ` Simon Glass
2015-04-22  1:01     ` Bin Meng
2015-04-24  2:41       ` Simon Glass
2015-04-25 14:18         ` Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.