[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v2 05/12] acpi: build static _PRT
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC PATCH v2 05/12] acpi: build static _PRT |
Date: |
Mon, 29 Aug 2016 19:06:40 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 25/08/2016 12:14, Chao Peng wrote:
> ...to reduce the interpretation burden for guest ACPI component.
>
> Signed-off-by: Chao Peng <address@hidden>
> ---
> hw/i386/acpi-build.c | 31 ++++++++++++++++++++++++++++++-
> hw/i386/pc.c | 1 +
> include/hw/i386/pc.h | 2 ++
> 3 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index a26a4bb..60c0896 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -1772,6 +1772,31 @@ static void build_q35_pci0_int(Aml *table)
> aml_append(table, sb_scope);
> }
>
> +static void build_static_q35_pci0_int(Aml *table)
> +{
> + int i, j;
> + Aml *method, *res, *pkg;
> + Aml *sb_scope = aml_scope("_SB");
> + Aml *pci0_scope = aml_scope("PCI0");
> +
> + method = aml_method("_PRT", 0, AML_NOTSERIALIZED);
> + res = aml_package(128);
> + for (i = 0; i < 32; i++) {
> + for (j = 0; j < 4; j++) {
> + pkg = aml_package(4);
> + aml_append(pkg, aml_int((i << 16) | 0xffff));
> + aml_append(pkg, aml_int(j));
> + aml_append(pkg, aml_int(0));
> + aml_append(pkg, aml_int(0x10 + j));
> + aml_append(res, pkg);
> + }
> + }
> +
> + aml_append(method, aml_return(res));
> + aml_append(pci0_scope, method);
> + aml_append(sb_scope, pci0_scope);
> +}
> +
> static void build_q35_isa_bridge(Aml *table)
> {
> Aml *dev;
> @@ -2007,7 +2032,11 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
> build_hpet_aml(dsdt);
> build_q35_isa_bridge(dsdt);
> build_isa_devices_aml(dsdt);
> - build_q35_pci0_int(dsdt);
> + if (pcms->static_prt) {
> + build_static_q35_pci0_int(dsdt);
> + } else {
> + build_q35_pci0_int(dsdt);
> + }
> }
>
> if (pcmc->legacy_cpu_hotplug) {
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 1d62957..f479697 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -2196,6 +2196,7 @@ static void pc_machine_initfn(Object *obj)
> PC_MACHINE_DEFINE_PROP_BOOL(pcms, PC_MACHINE_SATA, sata, true);
> PC_MACHINE_DEFINE_PROP_BOOL(pcms, PC_MACHINE_PIC, pic, true);
> PC_MACHINE_DEFINE_PROP_BOOL(pcms, PC_MACHINE_PIT, pit, true);
> + PC_MACHINE_DEFINE_PROP_BOOL(pcms, PC_MACHINE_STATIC_PRT, static_prt,
> false);
> }
>
> static void pc_machine_reset(void)
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 1dc7954..55ab09a 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -81,6 +81,7 @@ struct PCMachineState {
> bool sata;
> bool pic;
> bool pit;
> + bool static_prt;
> };
>
> #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device"
> @@ -93,6 +94,7 @@ struct PCMachineState {
> #define PC_MACHINE_SATA "sata"
> #define PC_MACHINE_PIC "pic"
> #define PC_MACHINE_PIT "pit"
> +#define PC_MACHINE_STATIC_PRT "static-prt"
>
> /**
> * PCMachineClass:
>
You can do this unconditionally, but it should match the contents of the
q35 PRT.
Paolo
- [Qemu-devel] [RFC PATCH v2 00/12] Guest startup time optimization, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 01/12] pc: make smbus configurable, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 03/12] pc: make pic configurable, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 02/12] pc: make sata configurable, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 05/12] acpi: build static _PRT, Chao Peng, 2016/08/25
- Re: [Qemu-devel] [RFC PATCH v2 05/12] acpi: build static _PRT,
Paolo Bonzini <=
- [Qemu-devel] [RFC PATCH v2 04/12] pc: make pit configurable, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 06/12] acpi: expose data structurs and functions of BIOS linker loader, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 07/12] acpi: expose acpi_checksum(), Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 10/12] q35: initialize MMCFG base when there is no firmware, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 08/12] acpi: patch guest ACPI when there is no firmware, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 09/12] ich9: enable pm registers when there is no firmware, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 11/12] pc: support direct loading protected/long mode kernel, Chao Peng, 2016/08/25
- [Qemu-devel] [RFC PATCH v2 12/12] pc: skip firmware, Chao Peng, 2016/08/25