From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:adf:a111:0:0:0:0:0 with SMTP id o17-v6csp2029844wro; Sun, 4 Nov 2018 17:42:44 -0800 (PST) X-Google-Smtp-Source: AJdET5eKh7yqvbQiCtuJeaX5+3WDbpdYpfTx1MouQRk3IiRh/ZCo/LCKSsYRS3vZROZ/4QTha/pA X-Received: by 2002:a37:744:: with SMTP id 65mr18797889qkh.260.1541382164180; Sun, 04 Nov 2018 17:42:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541382164; cv=none; d=google.com; s=arc-20160816; b=H0S6LYhWHIQ46MajSL+RafgXKRSFJwgK6hI8xas4Tb/F9hgEoDfzwDVgJPuuR0uJ00 YFRjtRyx34gFUseKlo7XsVJKIEG4uwC9R3IK7o9zoCxZ/JtPgZWTIaT1hrariS/ZsjOo NboFPDzeUOLVgLiDbjYyV6lqduAIK7W+IBqlWjRttp6EIZUJTntg1mfuFQRmC9pm/7Kr QInpwxfCtU8KCRxnpzUD37SJOXVGzKCUOqnLmHTRCoC5fcGug5SxiseFL+D2lfRLMIfg nQ/grrnHXB3CTYSHROJCY9kxt5Qs+oK0PDFrJura3N5cI0YKymR3ElG6uuaRLcXjdFM8 UVgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from; bh=YjcbkHf1DPqwJsJfD4jghQZiWs4l7JdeT4XangdetJw=; b=VeZvemjTDsfj52TCEkJTc8pBbFOJmHc69i2HjOXaV9G7MFkjQZ5ydjpl7wHXc/ZgBF P0KhGATbddiYyQyU3tlN6vdlygVus/YBl4+QUts4BNIPojZJklUuYq1Gnyv54lSzhiWK 4U71MNIs/Z618xMxWlfIdpghgwVh9OCWptCDrBJCxd6y6cADVw/l84OLvDiYY3/9ckGq itu2BUyw4U2YSKxJVvn1KRPRWIj/glp3P8j2XDqTiAoyHWloTTv/OvDHSThAAak47nLl fFj6nC3PUDedlAW3E4tphw43hsCVDt03UoLzLNmqFhQfTQp07oKig0A1z2D96ets631O XyCQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id a7-v6si7313356qtm.171.2018.11.04.17.42.44 for (version=TLS1 cipher=AES128-SHA bits=128/128); Sun, 04 Nov 2018 17:42:44 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from localhost ([::1]:60848 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJTud-0006Wm-LB for alex.bennee@linaro.org; Sun, 04 Nov 2018 20:42:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJTuK-0006SD-3f for qemu-arm@nongnu.org; Sun, 04 Nov 2018 20:42:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJTuG-0002M7-21 for qemu-arm@nongnu.org; Sun, 04 Nov 2018 20:42:22 -0500 Received: from mga01.intel.com ([192.55.52.88]:6269) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gJTu5-0001uZ-PD; Sun, 04 Nov 2018 20:42:10 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Nov 2018 17:42:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,466,1534834800"; d="scan'208";a="277074305" Received: from emurphy1-mobl1.ger.corp.intel.com (HELO localhost.localdomain) ([10.252.26.250]) by fmsmga005.fm.intel.com with ESMTP; 04 Nov 2018 17:42:03 -0800 From: Samuel Ortiz To: qemu-devel@nongnu.org Date: Mon, 5 Nov 2018 02:40:29 +0100 Message-Id: <20181105014047.26447-7-sameo@linux.intel.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 192.55.52.88 Subject: [Qemu-arm] [PATCH v5 06/24] hw: acpi: Factorize the RSDP build API implementation X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Shannon Zhao , Igor Mammedov , qemu-arm@nongnu.org, Marcel Apfelbaum , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Richard Henderson Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: TZCZelqWylfJ We can now share the RSDP build between the ARM and x86 architectures. Here we make the default RSDP build use XSDT and keep the existing x86 ACPI build implementation using the legacy RSDT version. Signed-off-by: Samuel Ortiz --- include/hw/acpi/aml-build.h | 8 ++++---- hw/acpi/aml-build.c | 28 +++++++++++++++++++++++++--- hw/arm/virt-acpi-build.c | 28 ---------------------------- hw/i386/acpi-build.c | 26 +------------------------- 4 files changed, 30 insertions(+), 60 deletions(-) diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h index 3580d0ce90..a2ef8b6f31 100644 --- a/include/hw/acpi/aml-build.h +++ b/include/hw/acpi/aml-build.h @@ -390,11 +390,11 @@ void acpi_add_table(GArray *table_offsets, GArray *table_data); void acpi_build_tables_init(AcpiBuildTables *tables); void acpi_build_tables_cleanup(AcpiBuildTables *tables, bool mfre); void -build_rsdp(GArray *table_data, - BIOSLinker *linker, unsigned rsdt_tbl_offset); +build_rsdp_rsdt(GArray *table_data, + BIOSLinker *linker, unsigned rsdt_tbl_offset); void -build_rsdp_xsdt(GArray *table_data, - BIOSLinker *linker, unsigned xsdt_tbl_offset); +build_rsdp(GArray *table_data, + BIOSLinker *linker, unsigned xsdt_tbl_offset); void build_rsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets, const char *oem_id, const char *oem_table_id); diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index a030d40674..8c2388274c 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -1651,10 +1651,32 @@ build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets, (void *)xsdt, "XSDT", xsdt_len, 1, oem_id, oem_table_id); } +/* Legacy RSDP pointing at an RSDT. This is deprecated */ +void build_rsdp_rsdt(GArray *rsdp_table, BIOSLinker *linker, unsigned rsdt_tbl_offset) +{ + AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); + unsigned rsdt_pa_size = sizeof(rsdp->rsdt_physical_address); + unsigned rsdt_pa_offset = + (char *)&rsdp->rsdt_physical_address - rsdp_table->data; + + bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16, + true /* fseg memory */); + + memcpy(&rsdp->signature, "RSD PTR ", 8); + memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, 6); + /* Address to be filled by Guest linker */ + bios_linker_loader_add_pointer(linker, + ACPI_BUILD_RSDP_FILE, rsdt_pa_offset, rsdt_pa_size, + ACPI_BUILD_TABLE_FILE, rsdt_tbl_offset); + + /* Checksum to be filled by Guest linker */ + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, + (char *)rsdp - rsdp_table->data, sizeof *rsdp, + (char *)&rsdp->checksum - rsdp_table->data); +} + /* RSDP pointing at an XSDT */ -void -build_rsdp_xsdt(GArray *rsdp_table, - BIOSLinker *linker, unsigned xsdt_tbl_offset) +void build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset) { AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address); diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 623a6c4eac..261363e20c 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -366,34 +366,6 @@ static void acpi_dsdt_add_power_button(Aml *scope) aml_append(scope, dev); } -/* RSDP */ -void -build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset) -{ - AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); - unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address); - unsigned xsdt_pa_offset = - (char *)&rsdp->xsdt_physical_address - rsdp_table->data; - - bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16, - true /* fseg memory */); - - memcpy(&rsdp->signature, "RSD PTR ", sizeof(rsdp->signature)); - memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, sizeof(rsdp->oem_id)); - rsdp->length = cpu_to_le32(sizeof(*rsdp)); - rsdp->revision = 0x02; - - /* Address to be filled by Guest linker */ - bios_linker_loader_add_pointer(linker, - ACPI_BUILD_RSDP_FILE, xsdt_pa_offset, xsdt_pa_size, - ACPI_BUILD_TABLE_FILE, xsdt_tbl_offset); - - /* Checksum to be filled by Guest linker */ - bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, - (char *)rsdp - rsdp_table->data, sizeof *rsdp, - (char *)&rsdp->checksum - rsdp_table->data); -} - static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) { diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index f7a67f5c9c..cfc2444d0d 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2513,30 +2513,6 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker) "IVRS", table_data->len - iommu_start, 1, NULL, NULL); } -void -build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned rsdt_tbl_offset) -{ - AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); - unsigned rsdt_pa_size = sizeof(rsdp->rsdt_physical_address); - unsigned rsdt_pa_offset = - (char *)&rsdp->rsdt_physical_address - rsdp_table->data; - - bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16, - true /* fseg memory */); - - memcpy(&rsdp->signature, "RSD PTR ", 8); - memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, 6); - /* Address to be filled by Guest linker */ - bios_linker_loader_add_pointer(linker, - ACPI_BUILD_RSDP_FILE, rsdt_pa_offset, rsdt_pa_size, - ACPI_BUILD_TABLE_FILE, rsdt_tbl_offset); - - /* Checksum to be filled by Guest linker */ - bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, - (char *)rsdp - rsdp_table->data, sizeof *rsdp, - (char *)&rsdp->checksum - rsdp_table->data); -} - static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg) { Object *pci_host; @@ -2681,7 +2657,7 @@ void acpi_build(AcpiBuildTables *tables, slic_oem.id, slic_oem.table_id); /* RSDP is in FSEG memory, so allocate it separately */ - build_rsdp(tables->rsdp, tables->linker, rsdt); + build_rsdp_rsdt(tables->rsdp, tables->linker, rsdt); /* We'll expose it all to Guest so we want to reduce * chance of size changes. -- 2.19.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Ortiz Subject: [PATCH v5 06/24] hw: acpi: Factorize the RSDP build API implementation Date: Mon, 5 Nov 2018 02:40:29 +0100 Message-ID: <20181105014047.26447-7-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gJTu6-0003bM-Lg for xen-devel@lists.xenproject.org; Mon, 05 Nov 2018 01:42:10 +0000 In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Shannon Zhao , Igor Mammedov , qemu-arm@nongnu.org, Marcel Apfelbaum , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Richard Henderson List-Id: xen-devel@lists.xenproject.org V2UgY2FuIG5vdyBzaGFyZSB0aGUgUlNEUCBidWlsZCBiZXR3ZWVuIHRoZSBBUk0gYW5kIHg4NiBh cmNoaXRlY3R1cmVzLgpIZXJlIHdlIG1ha2UgdGhlIGRlZmF1bHQgUlNEUCBidWlsZCB1c2UgWFNE VCBhbmQga2VlcCB0aGUgZXhpc3RpbmcgeDg2CkFDUEkgYnVpbGQgaW1wbGVtZW50YXRpb24gdXNp bmcgdGhlIGxlZ2FjeSBSU0RUIHZlcnNpb24uCgpTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgT3J0aXog PHNhbWVvQGxpbnV4LmludGVsLmNvbT4KLS0tCiBpbmNsdWRlL2h3L2FjcGkvYW1sLWJ1aWxkLmgg fCAgOCArKysrLS0tLQogaHcvYWNwaS9hbWwtYnVpbGQuYyAgICAgICAgIHwgMjggKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQogaHcvYXJtL3ZpcnQtYWNwaS1idWlsZC5jICAgIHwgMjggLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaHcvaTM4Ni9hY3BpLWJ1aWxkLmMgICAgICAgIHwg MjYgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0 aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9hY3BpL2Ft bC1idWlsZC5oIGIvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oCmluZGV4IDM1ODBkMGNlOTAu LmEyZWY4YjZmMzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcvYWNwaS9hbWwtYnVpbGQuaAorKysg Yi9pbmNsdWRlL2h3L2FjcGkvYW1sLWJ1aWxkLmgKQEAgLTM5MCwxMSArMzkwLDExIEBAIHZvaWQg YWNwaV9hZGRfdGFibGUoR0FycmF5ICp0YWJsZV9vZmZzZXRzLCBHQXJyYXkgKnRhYmxlX2RhdGEp Owogdm9pZCBhY3BpX2J1aWxkX3RhYmxlc19pbml0KEFjcGlCdWlsZFRhYmxlcyAqdGFibGVzKTsK IHZvaWQgYWNwaV9idWlsZF90YWJsZXNfY2xlYW51cChBY3BpQnVpbGRUYWJsZXMgKnRhYmxlcywg Ym9vbCBtZnJlKTsKIHZvaWQKLWJ1aWxkX3JzZHAoR0FycmF5ICp0YWJsZV9kYXRhLAotICAgICAg ICAgICBCSU9TTGlua2VyICpsaW5rZXIsIHVuc2lnbmVkIHJzZHRfdGJsX29mZnNldCk7CitidWls ZF9yc2RwX3JzZHQoR0FycmF5ICp0YWJsZV9kYXRhLAorICAgICAgICAgICAgICAgIEJJT1NMaW5r ZXIgKmxpbmtlciwgdW5zaWduZWQgcnNkdF90Ymxfb2Zmc2V0KTsKIHZvaWQKLWJ1aWxkX3JzZHBf eHNkdChHQXJyYXkgKnRhYmxlX2RhdGEsCi0gICAgICAgICAgICAgICAgQklPU0xpbmtlciAqbGlu a2VyLCB1bnNpZ25lZCB4c2R0X3RibF9vZmZzZXQpOworYnVpbGRfcnNkcChHQXJyYXkgKnRhYmxl X2RhdGEsCisgICAgICAgICAgIEJJT1NMaW5rZXIgKmxpbmtlciwgdW5zaWduZWQgeHNkdF90Ymxf b2Zmc2V0KTsKIHZvaWQKIGJ1aWxkX3JzZHQoR0FycmF5ICp0YWJsZV9kYXRhLCBCSU9TTGlua2Vy ICpsaW5rZXIsIEdBcnJheSAqdGFibGVfb2Zmc2V0cywKICAgICAgICAgICAgY29uc3QgY2hhciAq b2VtX2lkLCBjb25zdCBjaGFyICpvZW1fdGFibGVfaWQpOwpkaWZmIC0tZ2l0IGEvaHcvYWNwaS9h bWwtYnVpbGQuYyBiL2h3L2FjcGkvYW1sLWJ1aWxkLmMKaW5kZXggYTAzMGQ0MDY3NC4uOGMyMzg4 Mjc0YyAxMDA2NDQKLS0tIGEvaHcvYWNwaS9hbWwtYnVpbGQuYworKysgYi9ody9hY3BpL2FtbC1i dWlsZC5jCkBAIC0xNjUxLDEwICsxNjUxLDMyIEBAIGJ1aWxkX3hzZHQoR0FycmF5ICp0YWJsZV9k YXRhLCBCSU9TTGlua2VyICpsaW5rZXIsIEdBcnJheSAqdGFibGVfb2Zmc2V0cywKICAgICAgICAg ICAgICAgICAgKHZvaWQgKil4c2R0LCAiWFNEVCIsIHhzZHRfbGVuLCAxLCBvZW1faWQsIG9lbV90 YWJsZV9pZCk7CiB9CiAKKy8qIExlZ2FjeSBSU0RQIHBvaW50aW5nIGF0IGFuIFJTRFQuIFRoaXMg aXMgZGVwcmVjYXRlZCAqLwordm9pZCBidWlsZF9yc2RwX3JzZHQoR0FycmF5ICpyc2RwX3RhYmxl LCBCSU9TTGlua2VyICpsaW5rZXIsIHVuc2lnbmVkIHJzZHRfdGJsX29mZnNldCkKK3sKKyAgICBB Y3BpUnNkcERlc2NyaXB0b3IgKnJzZHAgPSBhY3BpX2RhdGFfcHVzaChyc2RwX3RhYmxlLCBzaXpl b2YgKnJzZHApOworICAgIHVuc2lnbmVkIHJzZHRfcGFfc2l6ZSA9IHNpemVvZihyc2RwLT5yc2R0 X3BoeXNpY2FsX2FkZHJlc3MpOworICAgIHVuc2lnbmVkIHJzZHRfcGFfb2Zmc2V0ID0KKyAgICAg ICAgKGNoYXIgKikmcnNkcC0+cnNkdF9waHlzaWNhbF9hZGRyZXNzIC0gcnNkcF90YWJsZS0+ZGF0 YTsKKworICAgIGJpb3NfbGlua2VyX2xvYWRlcl9hbGxvYyhsaW5rZXIsIEFDUElfQlVJTERfUlNE UF9GSUxFLCByc2RwX3RhYmxlLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1 ZSAvKiBmc2VnIG1lbW9yeSAqLyk7CisKKyAgICBtZW1jcHkoJnJzZHAtPnNpZ25hdHVyZSwgIlJT RCBQVFIgIiwgOCk7CisgICAgbWVtY3B5KHJzZHAtPm9lbV9pZCwgQUNQSV9CVUlMRF9BUFBOQU1F NiwgNik7CisgICAgLyogQWRkcmVzcyB0byBiZSBmaWxsZWQgYnkgR3Vlc3QgbGlua2VyICovCisg ICAgYmlvc19saW5rZXJfbG9hZGVyX2FkZF9wb2ludGVyKGxpbmtlciwKKyAgICAgICAgQUNQSV9C VUlMRF9SU0RQX0ZJTEUsIHJzZHRfcGFfb2Zmc2V0LCByc2R0X3BhX3NpemUsCisgICAgICAgIEFD UElfQlVJTERfVEFCTEVfRklMRSwgcnNkdF90Ymxfb2Zmc2V0KTsKKworICAgIC8qIENoZWNrc3Vt IHRvIGJlIGZpbGxlZCBieSBHdWVzdCBsaW5rZXIgKi8KKyAgICBiaW9zX2xpbmtlcl9sb2FkZXJf YWRkX2NoZWNrc3VtKGxpbmtlciwgQUNQSV9CVUlMRF9SU0RQX0ZJTEUsCisgICAgICAgIChjaGFy ICopcnNkcCAtIHJzZHBfdGFibGUtPmRhdGEsIHNpemVvZiAqcnNkcCwKKyAgICAgICAgKGNoYXIg KikmcnNkcC0+Y2hlY2tzdW0gLSByc2RwX3RhYmxlLT5kYXRhKTsKK30KKwogLyogUlNEUCBwb2lu dGluZyBhdCBhbiBYU0RUICovCi12b2lkCi1idWlsZF9yc2RwX3hzZHQoR0FycmF5ICpyc2RwX3Rh YmxlLAotICAgICAgICAgICAgICAgIEJJT1NMaW5rZXIgKmxpbmtlciwgdW5zaWduZWQgeHNkdF90 Ymxfb2Zmc2V0KQordm9pZCBidWlsZF9yc2RwKEdBcnJheSAqcnNkcF90YWJsZSwgQklPU0xpbmtl ciAqbGlua2VyLCB1bnNpZ25lZCB4c2R0X3RibF9vZmZzZXQpCiB7CiAgICAgQWNwaVJzZHBEZXNj cmlwdG9yICpyc2RwID0gYWNwaV9kYXRhX3B1c2gocnNkcF90YWJsZSwgc2l6ZW9mICpyc2RwKTsK ICAgICB1bnNpZ25lZCB4c2R0X3BhX3NpemUgPSBzaXplb2YocnNkcC0+eHNkdF9waHlzaWNhbF9h ZGRyZXNzKTsKZGlmZiAtLWdpdCBhL2h3L2FybS92aXJ0LWFjcGktYnVpbGQuYyBiL2h3L2FybS92 aXJ0LWFjcGktYnVpbGQuYwppbmRleCA2MjNhNmM0ZWFjLi4yNjEzNjNlMjBjIDEwMDY0NAotLS0g YS9ody9hcm0vdmlydC1hY3BpLWJ1aWxkLmMKKysrIGIvaHcvYXJtL3ZpcnQtYWNwaS1idWlsZC5j CkBAIC0zNjYsMzQgKzM2Niw2IEBAIHN0YXRpYyB2b2lkIGFjcGlfZHNkdF9hZGRfcG93ZXJfYnV0 dG9uKEFtbCAqc2NvcGUpCiAgICAgYW1sX2FwcGVuZChzY29wZSwgZGV2KTsKIH0KIAotLyogUlNE UCAqLwotdm9pZAotYnVpbGRfcnNkcChHQXJyYXkgKnJzZHBfdGFibGUsIEJJT1NMaW5rZXIgKmxp bmtlciwgdW5zaWduZWQgeHNkdF90Ymxfb2Zmc2V0KQotewotICAgIEFjcGlSc2RwRGVzY3JpcHRv ciAqcnNkcCA9IGFjcGlfZGF0YV9wdXNoKHJzZHBfdGFibGUsIHNpemVvZiAqcnNkcCk7Ci0gICAg dW5zaWduZWQgeHNkdF9wYV9zaXplID0gc2l6ZW9mKHJzZHAtPnhzZHRfcGh5c2ljYWxfYWRkcmVz cyk7Ci0gICAgdW5zaWduZWQgeHNkdF9wYV9vZmZzZXQgPQotICAgICAgICAoY2hhciAqKSZyc2Rw LT54c2R0X3BoeXNpY2FsX2FkZHJlc3MgLSByc2RwX3RhYmxlLT5kYXRhOwotCi0gICAgYmlvc19s aW5rZXJfbG9hZGVyX2FsbG9jKGxpbmtlciwgQUNQSV9CVUlMRF9SU0RQX0ZJTEUsIHJzZHBfdGFi bGUsIDE2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlIC8qIGZzZWcgbWVtb3J5 ICovKTsKLQotICAgIG1lbWNweSgmcnNkcC0+c2lnbmF0dXJlLCAiUlNEIFBUUiAiLCBzaXplb2Yo cnNkcC0+c2lnbmF0dXJlKSk7Ci0gICAgbWVtY3B5KHJzZHAtPm9lbV9pZCwgQUNQSV9CVUlMRF9B UFBOQU1FNiwgc2l6ZW9mKHJzZHAtPm9lbV9pZCkpOwotICAgIHJzZHAtPmxlbmd0aCA9IGNwdV90 b19sZTMyKHNpemVvZigqcnNkcCkpOwotICAgIHJzZHAtPnJldmlzaW9uID0gMHgwMjsKLQotICAg IC8qIEFkZHJlc3MgdG8gYmUgZmlsbGVkIGJ5IEd1ZXN0IGxpbmtlciAqLwotICAgIGJpb3NfbGlu a2VyX2xvYWRlcl9hZGRfcG9pbnRlcihsaW5rZXIsCi0gICAgICAgIEFDUElfQlVJTERfUlNEUF9G SUxFLCB4c2R0X3BhX29mZnNldCwgeHNkdF9wYV9zaXplLAotICAgICAgICBBQ1BJX0JVSUxEX1RB QkxFX0ZJTEUsIHhzZHRfdGJsX29mZnNldCk7Ci0KLSAgICAvKiBDaGVja3N1bSB0byBiZSBmaWxs ZWQgYnkgR3Vlc3QgbGlua2VyICovCi0gICAgYmlvc19saW5rZXJfbG9hZGVyX2FkZF9jaGVja3N1 bShsaW5rZXIsIEFDUElfQlVJTERfUlNEUF9GSUxFLAotICAgICAgICAoY2hhciAqKXJzZHAgLSBy c2RwX3RhYmxlLT5kYXRhLCBzaXplb2YgKnJzZHAsCi0gICAgICAgIChjaGFyICopJnJzZHAtPmNo ZWNrc3VtIC0gcnNkcF90YWJsZS0+ZGF0YSk7Ci19Ci0KIHN0YXRpYyB2b2lkCiBidWlsZF9pb3J0 KEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAqbGlua2VyLCBWaXJ0TWFjaGluZVN0YXRl ICp2bXMpCiB7CmRpZmYgLS1naXQgYS9ody9pMzg2L2FjcGktYnVpbGQuYyBiL2h3L2kzODYvYWNw aS1idWlsZC5jCmluZGV4IGY3YTY3ZjVjOWMuLmNmYzI0NDRkMGQgMTAwNjQ0Ci0tLSBhL2h3L2kz ODYvYWNwaS1idWlsZC5jCisrKyBiL2h3L2kzODYvYWNwaS1idWlsZC5jCkBAIC0yNTEzLDMwICsy NTEzLDYgQEAgYnVpbGRfYW1kX2lvbW11KEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAq bGlua2VyKQogICAgICAgICAgICAgICAgICAiSVZSUyIsIHRhYmxlX2RhdGEtPmxlbiAtIGlvbW11 X3N0YXJ0LCAxLCBOVUxMLCBOVUxMKTsKIH0KIAotdm9pZAotYnVpbGRfcnNkcChHQXJyYXkgKnJz ZHBfdGFibGUsIEJJT1NMaW5rZXIgKmxpbmtlciwgdW5zaWduZWQgcnNkdF90Ymxfb2Zmc2V0KQot ewotICAgIEFjcGlSc2RwRGVzY3JpcHRvciAqcnNkcCA9IGFjcGlfZGF0YV9wdXNoKHJzZHBfdGFi bGUsIHNpemVvZiAqcnNkcCk7Ci0gICAgdW5zaWduZWQgcnNkdF9wYV9zaXplID0gc2l6ZW9mKHJz ZHAtPnJzZHRfcGh5c2ljYWxfYWRkcmVzcyk7Ci0gICAgdW5zaWduZWQgcnNkdF9wYV9vZmZzZXQg PQotICAgICAgICAoY2hhciAqKSZyc2RwLT5yc2R0X3BoeXNpY2FsX2FkZHJlc3MgLSByc2RwX3Rh YmxlLT5kYXRhOwotCi0gICAgYmlvc19saW5rZXJfbG9hZGVyX2FsbG9jKGxpbmtlciwgQUNQSV9C VUlMRF9SU0RQX0ZJTEUsIHJzZHBfdGFibGUsIDE2LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cnVlIC8qIGZzZWcgbWVtb3J5ICovKTsKLQotICAgIG1lbWNweSgmcnNkcC0+c2lnbmF0 dXJlLCAiUlNEIFBUUiAiLCA4KTsKLSAgICBtZW1jcHkocnNkcC0+b2VtX2lkLCBBQ1BJX0JVSUxE X0FQUE5BTUU2LCA2KTsKLSAgICAvKiBBZGRyZXNzIHRvIGJlIGZpbGxlZCBieSBHdWVzdCBsaW5r ZXIgKi8KLSAgICBiaW9zX2xpbmtlcl9sb2FkZXJfYWRkX3BvaW50ZXIobGlua2VyLAotICAgICAg ICBBQ1BJX0JVSUxEX1JTRFBfRklMRSwgcnNkdF9wYV9vZmZzZXQsIHJzZHRfcGFfc2l6ZSwKLSAg ICAgICAgQUNQSV9CVUlMRF9UQUJMRV9GSUxFLCByc2R0X3RibF9vZmZzZXQpOwotCi0gICAgLyog Q2hlY2tzdW0gdG8gYmUgZmlsbGVkIGJ5IEd1ZXN0IGxpbmtlciAqLwotICAgIGJpb3NfbGlua2Vy X2xvYWRlcl9hZGRfY2hlY2tzdW0obGlua2VyLCBBQ1BJX0JVSUxEX1JTRFBfRklMRSwKLSAgICAg ICAgKGNoYXIgKilyc2RwIC0gcnNkcF90YWJsZS0+ZGF0YSwgc2l6ZW9mICpyc2RwLAotICAgICAg ICAoY2hhciAqKSZyc2RwLT5jaGVja3N1bSAtIHJzZHBfdGFibGUtPmRhdGEpOwotfQotCiBzdGF0 aWMgYm9vbCBhY3BpX2dldF9tY2ZnKEFjcGlNY2ZnSW5mbyAqbWNmZykKIHsKICAgICBPYmplY3Qg KnBjaV9ob3N0OwpAQCAtMjY4MSw3ICsyNjU3LDcgQEAgdm9pZCBhY3BpX2J1aWxkKEFjcGlCdWls ZFRhYmxlcyAqdGFibGVzLAogICAgICAgICAgICAgICAgc2xpY19vZW0uaWQsIHNsaWNfb2VtLnRh YmxlX2lkKTsKIAogICAgIC8qIFJTRFAgaXMgaW4gRlNFRyBtZW1vcnksIHNvIGFsbG9jYXRlIGl0 IHNlcGFyYXRlbHkgKi8KLSAgICBidWlsZF9yc2RwKHRhYmxlcy0+cnNkcCwgdGFibGVzLT5saW5r ZXIsIHJzZHQpOworICAgIGJ1aWxkX3JzZHBfcnNkdCh0YWJsZXMtPnJzZHAsIHRhYmxlcy0+bGlu a2VyLCByc2R0KTsKIAogICAgIC8qIFdlJ2xsIGV4cG9zZSBpdCBhbGwgdG8gR3Vlc3Qgc28gd2Ug d2FudCB0byByZWR1Y2UKICAgICAgKiBjaGFuY2Ugb2Ygc2l6ZSBjaGFuZ2VzLgotLSAKMi4xOS4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46897) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gJTuC-0006Oe-QP for qemu-devel@nongnu.org; Sun, 04 Nov 2018 20:42:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gJTu6-00020l-EB for qemu-devel@nongnu.org; Sun, 04 Nov 2018 20:42:16 -0500 From: Samuel Ortiz Date: Mon, 5 Nov 2018 02:40:29 +0100 Message-Id: <20181105014047.26447-7-sameo@linux.intel.com> In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v5 06/24] hw: acpi: Factorize the RSDP build API implementation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Shannon Zhao , Stefano Stabellini , Anthony Perard , Richard Henderson , Marcel Apfelbaum , xen-devel@lists.xenproject.org, Paolo Bonzini , "Michael S. Tsirkin" , Igor Mammedov , qemu-arm@nongnu.org, Peter Maydell , Eduardo Habkost We can now share the RSDP build between the ARM and x86 architectures. Here we make the default RSDP build use XSDT and keep the existing x86 ACPI build implementation using the legacy RSDT version. Signed-off-by: Samuel Ortiz --- include/hw/acpi/aml-build.h | 8 ++++---- hw/acpi/aml-build.c | 28 +++++++++++++++++++++++++--- hw/arm/virt-acpi-build.c | 28 ---------------------------- hw/i386/acpi-build.c | 26 +------------------------- 4 files changed, 30 insertions(+), 60 deletions(-) diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h index 3580d0ce90..a2ef8b6f31 100644 --- a/include/hw/acpi/aml-build.h +++ b/include/hw/acpi/aml-build.h @@ -390,11 +390,11 @@ void acpi_add_table(GArray *table_offsets, GArray *table_data); void acpi_build_tables_init(AcpiBuildTables *tables); void acpi_build_tables_cleanup(AcpiBuildTables *tables, bool mfre); void -build_rsdp(GArray *table_data, - BIOSLinker *linker, unsigned rsdt_tbl_offset); +build_rsdp_rsdt(GArray *table_data, + BIOSLinker *linker, unsigned rsdt_tbl_offset); void -build_rsdp_xsdt(GArray *table_data, - BIOSLinker *linker, unsigned xsdt_tbl_offset); +build_rsdp(GArray *table_data, + BIOSLinker *linker, unsigned xsdt_tbl_offset); void build_rsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets, const char *oem_id, const char *oem_table_id); diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index a030d40674..8c2388274c 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -1651,10 +1651,32 @@ build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets, (void *)xsdt, "XSDT", xsdt_len, 1, oem_id, oem_table_id); } +/* Legacy RSDP pointing at an RSDT. This is deprecated */ +void build_rsdp_rsdt(GArray *rsdp_table, BIOSLinker *linker, unsigned rsdt_tbl_offset) +{ + AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); + unsigned rsdt_pa_size = sizeof(rsdp->rsdt_physical_address); + unsigned rsdt_pa_offset = + (char *)&rsdp->rsdt_physical_address - rsdp_table->data; + + bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16, + true /* fseg memory */); + + memcpy(&rsdp->signature, "RSD PTR ", 8); + memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, 6); + /* Address to be filled by Guest linker */ + bios_linker_loader_add_pointer(linker, + ACPI_BUILD_RSDP_FILE, rsdt_pa_offset, rsdt_pa_size, + ACPI_BUILD_TABLE_FILE, rsdt_tbl_offset); + + /* Checksum to be filled by Guest linker */ + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, + (char *)rsdp - rsdp_table->data, sizeof *rsdp, + (char *)&rsdp->checksum - rsdp_table->data); +} + /* RSDP pointing at an XSDT */ -void -build_rsdp_xsdt(GArray *rsdp_table, - BIOSLinker *linker, unsigned xsdt_tbl_offset) +void build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset) { AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address); diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 623a6c4eac..261363e20c 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -366,34 +366,6 @@ static void acpi_dsdt_add_power_button(Aml *scope) aml_append(scope, dev); } -/* RSDP */ -void -build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset) -{ - AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); - unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address); - unsigned xsdt_pa_offset = - (char *)&rsdp->xsdt_physical_address - rsdp_table->data; - - bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16, - true /* fseg memory */); - - memcpy(&rsdp->signature, "RSD PTR ", sizeof(rsdp->signature)); - memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, sizeof(rsdp->oem_id)); - rsdp->length = cpu_to_le32(sizeof(*rsdp)); - rsdp->revision = 0x02; - - /* Address to be filled by Guest linker */ - bios_linker_loader_add_pointer(linker, - ACPI_BUILD_RSDP_FILE, xsdt_pa_offset, xsdt_pa_size, - ACPI_BUILD_TABLE_FILE, xsdt_tbl_offset); - - /* Checksum to be filled by Guest linker */ - bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, - (char *)rsdp - rsdp_table->data, sizeof *rsdp, - (char *)&rsdp->checksum - rsdp_table->data); -} - static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) { diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index f7a67f5c9c..cfc2444d0d 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2513,30 +2513,6 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker) "IVRS", table_data->len - iommu_start, 1, NULL, NULL); } -void -build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned rsdt_tbl_offset) -{ - AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp); - unsigned rsdt_pa_size = sizeof(rsdp->rsdt_physical_address); - unsigned rsdt_pa_offset = - (char *)&rsdp->rsdt_physical_address - rsdp_table->data; - - bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16, - true /* fseg memory */); - - memcpy(&rsdp->signature, "RSD PTR ", 8); - memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, 6); - /* Address to be filled by Guest linker */ - bios_linker_loader_add_pointer(linker, - ACPI_BUILD_RSDP_FILE, rsdt_pa_offset, rsdt_pa_size, - ACPI_BUILD_TABLE_FILE, rsdt_tbl_offset); - - /* Checksum to be filled by Guest linker */ - bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, - (char *)rsdp - rsdp_table->data, sizeof *rsdp, - (char *)&rsdp->checksum - rsdp_table->data); -} - static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg) { Object *pci_host; @@ -2681,7 +2657,7 @@ void acpi_build(AcpiBuildTables *tables, slic_oem.id, slic_oem.table_id); /* RSDP is in FSEG memory, so allocate it separately */ - build_rsdp(tables->rsdp, tables->linker, rsdt); + build_rsdp_rsdt(tables->rsdp, tables->linker, rsdt); /* We'll expose it all to Guest so we want to reduce * chance of size changes. -- 2.19.1