diff mbox

[U-Boot,4/4] x86: qemu: loading ACPI table from QEMU

Message ID 1452827541-10537-5-git-send-email-yanmiaobest@gmail.com
State Superseded
Delegated to: Bin Meng
Headers show

Commit Message

Miao Yan Jan. 15, 2016, 3:12 a.m. UTC
If CONFIG_GENERATE_ACPI_TABLE is not defined, then use ACPI table created
by QEMU.

Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
---
 arch/x86/lib/tables.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Bin Meng Jan. 16, 2016, 1:24 p.m. UTC | #1
Hi Miao,

On Fri, Jan 15, 2016 at 11:12 AM, Miao Yan <yanmiaobest@gmail.com> wrote:
> If CONFIG_GENERATE_ACPI_TABLE is not defined, then use ACPI table created
> by QEMU.
>
> Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
> ---
>  arch/x86/lib/tables.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
> index 14b15cf..1671385 100644
> --- a/arch/x86/lib/tables.c
> +++ b/arch/x86/lib/tables.c
> @@ -10,6 +10,7 @@
>  #include <asm/smbios.h>
>  #include <asm/tables.h>
>  #include <asm/acpi_table.h>
> +#include <asm/fw_cfg.h>
>
>  u8 table_compute_checksum(void *v, int len)
>  {
> @@ -55,8 +56,10 @@ void write_tables(void)
>  #endif
>  #ifdef CONFIG_GENERATE_ACPI_TABLE
>         rom_table_end = write_acpi_tables(rom_table_end);
> -       rom_table_end = ALIGN(rom_table_end, 1024);
> +#else
> +       rom_table_end = qemu_fwcfg_write_acpi_tables(rom_table_end);

This breaks other x86 boards.Can we hide this changes in acpi_table.c
with proper #ifdef and some comments?

For QEMU ACPI, how about:

- GENERATE_ACPI_TABLE is the overall switch to turn on ACPI table by U-Boot
- Introduce another Kconfig option for QEMU to generate ACPI tables
from firmware interface. If this is turned on, the original method
provided in acpi_tables.c will not be used.

>  #endif
> +       rom_table_end = ALIGN(rom_table_end, 1024);
>  #ifdef CONFIG_GENERATE_SMBIOS_TABLE
>         rom_table_end = write_smbios_table(rom_table_end);
>         rom_table_end = ALIGN(rom_table_end, 1024);
> --

Regards,
Bin
Miao Yan Jan. 19, 2016, 2:48 a.m. UTC | #2
Hi Bin,

2016-01-16 21:24 GMT+08:00 Bin Meng <bmeng.cn@gmail.com>:
> Hi Miao,
>
> On Fri, Jan 15, 2016 at 11:12 AM, Miao Yan <yanmiaobest@gmail.com> wrote:
>> If CONFIG_GENERATE_ACPI_TABLE is not defined, then use ACPI table created
>> by QEMU.
>>
>> Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
>> ---
>>  arch/x86/lib/tables.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
>> index 14b15cf..1671385 100644
>> --- a/arch/x86/lib/tables.c
>> +++ b/arch/x86/lib/tables.c
>> @@ -10,6 +10,7 @@
>>  #include <asm/smbios.h>
>>  #include <asm/tables.h>
>>  #include <asm/acpi_table.h>
>> +#include <asm/fw_cfg.h>
>>
>>  u8 table_compute_checksum(void *v, int len)
>>  {
>> @@ -55,8 +56,10 @@ void write_tables(void)
>>  #endif
>>  #ifdef CONFIG_GENERATE_ACPI_TABLE
>>         rom_table_end = write_acpi_tables(rom_table_end);
>> -       rom_table_end = ALIGN(rom_table_end, 1024);
>> +#else
>> +       rom_table_end = qemu_fwcfg_write_acpi_tables(rom_table_end);
>
> This breaks other x86 boards.Can we hide this changes in acpi_table.c
> with proper #ifdef and some comments?
>
> For QEMU ACPI, how about:
>
> - GENERATE_ACPI_TABLE is the overall switch to turn on ACPI table by U-Boot
> - Introduce another Kconfig option for QEMU to generate ACPI tables
> from firmware interface. If this is turned on, the original method
> provided in acpi_tables.c will not be used.

Sounds OK, I'll drop this one. Thanks.

>
>>  #endif
>> +       rom_table_end = ALIGN(rom_table_end, 1024);
>>  #ifdef CONFIG_GENERATE_SMBIOS_TABLE
>>         rom_table_end = write_smbios_table(rom_table_end);
>>         rom_table_end = ALIGN(rom_table_end, 1024);
>> --
>
> Regards,
> Bin
diff mbox

Patch

diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
index 14b15cf..1671385 100644
--- a/arch/x86/lib/tables.c
+++ b/arch/x86/lib/tables.c
@@ -10,6 +10,7 @@ 
 #include <asm/smbios.h>
 #include <asm/tables.h>
 #include <asm/acpi_table.h>
+#include <asm/fw_cfg.h>
 
 u8 table_compute_checksum(void *v, int len)
 {
@@ -55,8 +56,10 @@  void write_tables(void)
 #endif
 #ifdef CONFIG_GENERATE_ACPI_TABLE
 	rom_table_end = write_acpi_tables(rom_table_end);
-	rom_table_end = ALIGN(rom_table_end, 1024);
+#else
+	rom_table_end = qemu_fwcfg_write_acpi_tables(rom_table_end);
 #endif
+	rom_table_end = ALIGN(rom_table_end, 1024);
 #ifdef CONFIG_GENERATE_SMBIOS_TABLE
 	rom_table_end = write_smbios_table(rom_table_end);
 	rom_table_end = ALIGN(rom_table_end, 1024);