qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Shannon Zhao <zhaoshenglong@huawei.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: hangaohuai@huawei.com, "Laszlo Ersek" <lersek@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Alexander Spyridakis" <a.spyridakis@virtualopensystems.com>,
	"Claudio Fontana" <claudio.fontana@huawei.com>,
	"Huangpeng (Peter)" <peter.huangpeng@huawei.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Hanjun Guo" <hanjun.guo@linaro.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Christoffer Dall" <christoffer.dall@linaro.org>,
	"Shannon Zhao" <shannon.zhao@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v6 22/22] hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables
Date: Fri, 8 May 2015 16:21:57 +0800	[thread overview]
Message-ID: <554C7225.1060104@huawei.com> (raw)
In-Reply-To: <CAFEAcA8j4u=gj+Ju__3g7vVKiU6XAQreW47r5ox49QmVGgXdpw@mail.gmail.com>

On 2015/5/8 0:09, Peter Maydell wrote:
> On 7 May 2015 at 10:29, Shannon Zhao <zhaoshenglong@huawei.com> wrote:
>> From: Shannon Zhao <shannon.zhao@linaro.org>
>>
>> Expose the needed device information to the table generation
>> insfrastructure and register a machine_init_done notify to
> 
> "infrastructure".
> 
>> call virt_acpi_build().
>>
>> Add CONFIG_ACPI to arm-softmmu.mak.
>>
>> Signed-off-by: Shannon Zhao <zhaoshenglong@huawei.com>
>> Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
>> ---
>>  default-configs/arm-softmmu.mak      |  1 +
>>  default-configs/i386-softmmu.mak     |  3 ++
>>  default-configs/mips-softmmu.mak     |  3 ++
>>  default-configs/mips64-softmmu.mak   |  3 ++
>>  default-configs/mips64el-softmmu.mak |  3 ++
>>  default-configs/mipsel-softmmu.mak   |  3 ++
>>  default-configs/x86_64-softmmu.mak   |  3 ++
>>  hw/acpi/Makefile.objs                |  5 ++-
>>  hw/arm/virt.c                        | 78 ++++++++++++++++++++++++++++++++----
>>  hw/i2c/Makefile.objs                 |  2 +-
>>  10 files changed, 94 insertions(+), 10 deletions(-)
>>
>> diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
>> index a767e4b..74f1db3 100644
>> --- a/default-configs/arm-softmmu.mak
>> +++ b/default-configs/arm-softmmu.mak
>> @@ -101,3 +101,4 @@ CONFIG_ALLWINNER_A10=y
>>  CONFIG_XIO3130=y
>>  CONFIG_IOH3420=y
>>  CONFIG_I82801B11=y
>> +CONFIG_ACPI=y
>> diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak
>> index 6a74e00..d2de500 100644
>> --- a/default-configs/i386-softmmu.mak
>> +++ b/default-configs/i386-softmmu.mak
>> @@ -15,6 +15,9 @@ CONFIG_PCSPK=y
>>  CONFIG_PCKBD=y
>>  CONFIG_FDC=y
>>  CONFIG_ACPI=y
>> +CONFIG_ACPI_CORE=y
>> +CONFIG_ACPI_MEMORY_HOTPLUG=y
>> +CONFIG_ACPI_CPU_HOTPLUG=y
> 
> This is splitting the basic CONFIG_ACPI into several pieces, right?
> I think that deserves its own patch.
> 

Ok, will split this patch.

> What's the difference now between "CONFIG_ACPI" and "CONFIG_ACPI_CORE" ?
> 

I didn't find a proper name. Maybe we should name it "CONFIG_ACPI_x86"
for "core.o piix4.o ich9.o pcihp.o" as these files are for x86.

>>  CONFIG_APM=y
>>  CONFIG_I8257=y
>>  CONFIG_IDE_ISA=y
>> diff --git a/default-configs/mips-softmmu.mak b/default-configs/mips-softmmu.mak
>> index cce2c81..c96d42d 100644
>> --- a/default-configs/mips-softmmu.mak
>> +++ b/default-configs/mips-softmmu.mak
>> @@ -15,6 +15,9 @@ CONFIG_PCSPK=y
>>  CONFIG_PCKBD=y
>>  CONFIG_FDC=y
>>  CONFIG_ACPI=y
>> +CONFIG_ACPI_CORE=y
>> +CONFIG_ACPI_MEMORY_HOTPLUG=y
>> +CONFIG_ACPI_CPU_HOTPLUG=y
>>  CONFIG_APM=y
>>  CONFIG_I8257=y
>>  CONFIG_PIIX4=y
>> diff --git a/default-configs/mips64-softmmu.mak b/default-configs/mips64-softmmu.mak
>> index 7a88a08..d229f9e 100644
>> --- a/default-configs/mips64-softmmu.mak
>> +++ b/default-configs/mips64-softmmu.mak
>> @@ -15,6 +15,9 @@ CONFIG_PCSPK=y
>>  CONFIG_PCKBD=y
>>  CONFIG_FDC=y
>>  CONFIG_ACPI=y
>> +CONFIG_ACPI_CORE=y
>> +CONFIG_ACPI_MEMORY_HOTPLUG=y
>> +CONFIG_ACPI_CPU_HOTPLUG=y
>>  CONFIG_APM=y
>>  CONFIG_I8257=y
>>  CONFIG_PIIX4=y
>> diff --git a/default-configs/mips64el-softmmu.mak b/default-configs/mips64el-softmmu.mak
>> index 095de43..ea31b8b 100644
>> --- a/default-configs/mips64el-softmmu.mak
>> +++ b/default-configs/mips64el-softmmu.mak
>> @@ -15,6 +15,9 @@ CONFIG_PCSPK=y
>>  CONFIG_PCKBD=y
>>  CONFIG_FDC=y
>>  CONFIG_ACPI=y
>> +CONFIG_ACPI_CORE=y
>> +CONFIG_ACPI_MEMORY_HOTPLUG=y
>> +CONFIG_ACPI_CPU_HOTPLUG=y
>>  CONFIG_APM=y
>>  CONFIG_I8257=y
>>  CONFIG_PIIX4=y
>> diff --git a/default-configs/mipsel-softmmu.mak b/default-configs/mipsel-softmmu.mak
>> index 0e25108..9a4462e 100644
>> --- a/default-configs/mipsel-softmmu.mak
>> +++ b/default-configs/mipsel-softmmu.mak
>> @@ -15,6 +15,9 @@ CONFIG_PCSPK=y
>>  CONFIG_PCKBD=y
>>  CONFIG_FDC=y
>>  CONFIG_ACPI=y
>> +CONFIG_ACPI_CORE=y
>> +CONFIG_ACPI_MEMORY_HOTPLUG=y
>> +CONFIG_ACPI_CPU_HOTPLUG=y
>>  CONFIG_APM=y
>>  CONFIG_I8257=y
>>  CONFIG_PIIX4=y
>> diff --git a/default-configs/x86_64-softmmu.mak b/default-configs/x86_64-softmmu.mak
>> index 46b87dd..11019b6 100644
>> --- a/default-configs/x86_64-softmmu.mak
>> +++ b/default-configs/x86_64-softmmu.mak
>> @@ -15,6 +15,9 @@ CONFIG_PCSPK=y
>>  CONFIG_PCKBD=y
>>  CONFIG_FDC=y
>>  CONFIG_ACPI=y
>> +CONFIG_ACPI_CORE=y
>> +CONFIG_ACPI_MEMORY_HOTPLUG=y
>> +CONFIG_ACPI_CPU_HOTPLUG=y
>>  CONFIG_APM=y
>>  CONFIG_I8257=y
>>  CONFIG_IDE_ISA=y
>> diff --git a/hw/acpi/Makefile.objs b/hw/acpi/Makefile.objs
>> index b9fefa7..511771a 100644
>> --- a/hw/acpi/Makefile.objs
>> +++ b/hw/acpi/Makefile.objs
>> @@ -1,5 +1,6 @@
>> -common-obj-$(CONFIG_ACPI) += core.o piix4.o ich9.o pcihp.o cpu_hotplug.o
>> -common-obj-$(CONFIG_ACPI) += memory_hotplug.o
>> +common-obj-$(CONFIG_ACPI_CORE) += core.o piix4.o ich9.o pcihp.o
> 
> Why is x86 specific stuff like piix4 in the CONFIG_ACPI_CORE set?
> 
>> +common-obj-$(CONFIG_ACPI_CPU_HOTPLUG) += cpu_hotplug.o
>> +common-obj-$(CONFIG_ACPI_MEMORY_HOTPLUG) += memory_hotplug.o
>>  common-obj-$(CONFIG_ACPI) += acpi_interface.o
>>  common-obj-$(CONFIG_ACPI) += bios-linker-loader.o
>>  common-obj-$(CONFIG_ACPI) += aml-build.o
>> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
>> index 565f573..9291045 100644
>> --- a/hw/arm/virt.c
>> +++ b/hw/arm/virt.c
>> @@ -43,6 +43,7 @@
>>  #include "qemu/bitops.h"
>>  #include "qemu/error-report.h"
>>  #include "hw/pci-host/gpex.h"
>> +#include "hw/arm/virt-acpi-build.h"
>>
>>  #define NUM_VIRTIO_TRANSPORTS 32
>>
>> @@ -60,6 +61,11 @@
>>  #define GIC_FDT_IRQ_PPI_CPU_START 8
>>  #define GIC_FDT_IRQ_PPI_CPU_WIDTH 8
>>
>> +#define ARCH_TIMER_VIRT_IRQ   11
>> +#define ARCH_TIMER_S_EL1_IRQ  13
>> +#define ARCH_TIMER_NS_EL1_IRQ 14
>> +#define ARCH_TIMER_NS_EL2_IRQ 10
>> +
>>  enum {
>>      VIRT_FLASH,
>>      VIRT_MEM,
>> @@ -149,6 +155,29 @@ static const int a15irqmap[] = {
>>      [VIRT_MMIO] = 16, /* ...to 16 + NUM_VIRTIO_TRANSPORTS - 1 */
>>  };
>>
>> +static AcpiMadtInfo madt_info = {
>> +    (MemMap *)&a15memmap[VIRT_GIC_CPU],
>> +    (MemMap *)&a15memmap[VIRT_GIC_DIST]
> 
> These casts are really bad. You should just make sure the
> types agree properly so we don't need a cast at all, rather
> than having two different types which we implicitly require
> to have identical structure.
> 

Ok, will fix this.

>> +};
>> +
>> +static AcpiDsdtInfo dsdt_info = {
> 
> "AcpiDsdtInfo" sounds like it ought to be a generic
> ACPI structure, but in fact it's been defined in
> include/hw/arm/virt-acpi-build.h. Is it actually
> generic but in the wrong place? Or if it's not
> generic, 

It's not generic. This structure is used to get the virt borad info.

> why can't the ACPI table building code use
> our existing MemMapEntry[] and irqmap[] arrays to
> get the information it wants, rather than having
> its own data structures that we have to copy everything
> across to? If there's missing info or unhelpful layout
> in the current virt data structures we can always
> improve them.
> 

Ok, will reuse MemMapEntry[] and irqmap[].

>> +    (MemMap *)&a15memmap[VIRT_UART],
>> +    .uart_irq = &a15irqmap[VIRT_UART],
> 
> Please don't mix named-initializer and non-named-initializer
> syntax like this.
> 
>> +    (MemMap *)&a15memmap[VIRT_MMIO],
>> +    .virtio_mmio_irq = &a15irqmap[VIRT_MMIO],
>> +    .virtio_mmio_num = NUM_VIRTIO_TRANSPORTS,
>> +    (MemMap *)&a15memmap[VIRT_RTC],
>> +    .rtc_irq = &a15irqmap[VIRT_RTC],
>> +    (MemMap *)&a15memmap[VIRT_FLASH],
>> +};
> 
> thanks
> -- PMM
> 
> 
> .
> 

-- 
Shannon

  reply	other threads:[~2015-05-08  8:31 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-07  9:29 [Qemu-devel] [PATCH v6 00/22] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 01/22] hw/i386: Move ACPI header definitions in an arch-independent location Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 02/22] hw/i386/acpi-build: move generic acpi building helpers into dedictated file Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 03/22] hw/arm/virt-acpi-build: Basic framework for building ACPI tables on ARM Shannon Zhao
2015-05-07 10:50   ` Alex Bennée
2015-05-08  1:51     ` Shannon Zhao
2015-05-07 15:44   ` Peter Maydell
2015-05-08  1:46     ` Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 04/22] hw/acpi/aml-build: Add aml_memory32_fixed() term Shannon Zhao
2015-05-07 12:18   ` Alex Bennée
2015-05-15 12:15   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 05/22] hw/acpi/aml-build: Add aml_interrupt() term Shannon Zhao
2015-05-07 15:51   ` Peter Maydell
2015-05-08  2:24     ` Shannon Zhao
2015-05-15 12:14     ` Igor Mammedov
2015-05-18  4:05       ` Shannon Zhao
2015-05-18 10:33         ` Michael S. Tsirkin
2015-05-19 12:02           ` Igor Mammedov
2015-05-15 12:45   ` Igor Mammedov
2015-05-18  4:00     ` Shannon Zhao
2015-05-18 10:34       ` Michael S. Tsirkin
2015-05-19 12:09         ` Igor Mammedov
2015-05-20  4:09           ` Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 06/22] hw/arm/virt-acpi-build: Generation of DSDT table for virt devices Shannon Zhao
2015-05-18  8:09   ` Alex Bennée
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 07/22] hw/arm/virt-acpi-build: Generate FADT table and update ACPI headers Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 08/22] hw/arm/virt-acpi-build: Generate MADT table Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 09/22] hw/arm/virt-acpi-build: Generate GTDT table Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 10/22] hw/arm/virt-acpi-build: Generate RSDT table Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 11/22] hw/arm/virt-acpi-build: Generate RSDP table Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 12/22] hw/arm/virt-acpi-build: Add PCIe info and generate MCFG table Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 13/22] hw/acpi/aml-build: Make aml_buffer() definition consistent with the spec Shannon Zhao
2015-05-15 13:08   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 14/22] hw/acpi/aml-build: Add ToUUID macro Shannon Zhao
2015-05-15 13:19   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 15/22] hw/acpi/aml-build: Add aml_or() term Shannon Zhao
2015-05-15 13:23   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 16/22] hw/acpi/aml-build: Add aml_lnot() term Shannon Zhao
2015-05-15 13:24   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 17/22] hw/acpi/aml-build: Add aml_else() term Shannon Zhao
2015-05-15 13:26   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 18/22] hw/acpi/aml-build: Add aml_create_dword_field() term Shannon Zhao
2015-05-15 13:30   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 19/22] hw/acpi/aml-build: Add aml_dword_io() term Shannon Zhao
2015-05-15 13:43   ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 20/22] hw/acpi/aml-build: Add Unicode macro Shannon Zhao
2015-05-15 14:13   ` Igor Mammedov
2015-05-18  6:05     ` Shannon Zhao
2015-05-19 12:19       ` Igor Mammedov
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 21/22] hw/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table Shannon Zhao
2015-05-07  9:29 ` [Qemu-devel] [PATCH v6 22/22] hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables Shannon Zhao
2015-05-07 16:09   ` Peter Maydell
2015-05-08  8:21     ` Shannon Zhao [this message]
2015-05-07 16:34 ` [Qemu-devel] [PATCH v6 00/22] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Peter Maydell
2015-05-08  9:48   ` Shannon Zhao
2015-05-08 15:39     ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=554C7225.1060104@huawei.com \
    --to=zhaoshenglong@huawei.com \
    --cc=a.spyridakis@virtualopensystems.com \
    --cc=alex.bennee@linaro.org \
    --cc=christoffer.dall@linaro.org \
    --cc=claudio.fontana@huawei.com \
    --cc=hangaohuai@huawei.com \
    --cc=hanjun.guo@linaro.org \
    --cc=imammedo@redhat.com \
    --cc=lersek@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.huangpeng@huawei.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=shannon.zhao@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).