From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a5d:6844:0:0:0:0:0 with SMTP id o4-v6csp183563wrw; Thu, 8 Nov 2018 06:17:09 -0800 (PST) X-Google-Smtp-Source: AJdET5eZm1qdkEzD+rjKLrseVPVEa39NQWAhbMFOgfbtUBv8DBGcI4xQye7D4UPT4s/W6rdBr0y5 X-Received: by 2002:ac8:107:: with SMTP id e7mr4366687qtg.221.1541686629284; Thu, 08 Nov 2018 06:17:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541686629; cv=none; d=google.com; s=arc-20160816; b=SuB8OIlBExugvnZV2ecRKmkly24l2aJ5ZWFo99t40wGpvxGRreVBTZ31sMCfa+PGxr FywLOcxjxn8c22isFBu84ZVXKnkxGstxes7R0o4Fdz3JDbwVWTTzNigs4bULyuG0/bqi L7o52ZC1d9Em/g97gHWN36hBKNZLsnNLCzWbCmB+K5dQ8oDL3X8rcQY2jeTtxQmeqGVC AZdNfOgQi9VsdSAP2qgdRqqaxjG1GKjhdS3SWGnEZ5GAKLI5zsYjr1mXboW6xmElSSkB pH2SB/RV2Pw/zsiu6lT4XNOCsR3ty0S17rsRbGE0KP8yNTkMiFYFaNyrYc8nnBDd61IK y00g== 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:to:from:date; bh=0I3WsgTDb1w4fXrO+GxqnxSv+aItqbp0vSvY+QZyPEI=; b=jDRTSpO5T0YXrGKiXGkovNpdQTKxjSsrUGPPq7Iy7/U3bH/gQqPKMULmGSqmUpseza 1HbsA6UpaENSPQ5+jByccw9aJywve0bgcCFL6kAyrtnGF45YMVnGigO0byiaCG9HgS6Z 2I4isU/CtIlDYMbfzIfdgfrGXc9zVTGKeKv0p8x4CK/qG/efC4A9ds9WVnLOHXNao0Nn aphIWSGAFJo2uUpz80hvjDVtIEA+fCCHfvjWgarvuiGkkwbrbqAsAv7BCZgzceps9mRL 4aatjei2hn17y/qEtUBRq06BwFH79fOlBP7Flwt4vVO3cpUO+Ud+8ZtGr+RtCLDgV9oD SLuA== 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=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id t3si263819qto.355.2018.11.08.06.17.09 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 08 Nov 2018 06:17:09 -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=redhat.com Received: from localhost ([::1]:57036 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gKl7M-0001hX-PT for alex.bennee@linaro.org; Thu, 08 Nov 2018 09:17:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51864) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gKl7F-0001h5-0i for qemu-arm@nongnu.org; Thu, 08 Nov 2018 09:17:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gKl7C-0003UT-26 for qemu-arm@nongnu.org; Thu, 08 Nov 2018 09:17:00 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46008) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gKl7B-00037z-Om; Thu, 08 Nov 2018 09:16:57 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7A12A58E59; Thu, 8 Nov 2018 14:16:33 +0000 (UTC) Received: from localhost (unknown [10.43.2.182]) by smtp.corp.redhat.com (Postfix) with ESMTP id 727BA648C4; Thu, 8 Nov 2018 14:16:25 +0000 (UTC) Date: Thu, 8 Nov 2018 15:16:23 +0100 From: Igor Mammedov To: Samuel Ortiz Message-ID: <20181108151623.4de26ecb@redhat.com> In-Reply-To: <20181105014047.26447-6-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> <20181105014047.26447-6-sameo@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 08 Nov 2018 14:16:33 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: Re: [Qemu-arm] [PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP 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" , qemu-devel@nongnu.org, Shannon Zhao , 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: Q+tN+U6x8aBU On Mon, 5 Nov 2018 02:40:28 +0100 Samuel Ortiz wrote: > XSDT is the 64-bit version of the legacy ACPI RSDT (Root System > Description Table). RSDT only allow for 32-bit addressses and have thus > been deprecated. Since ACPI version 2.0, RSDPs should point at XSDTs and > no longer RSDTs, although RSDTs are still supported for backward > compatibility. > > Since version 2.0, RSDPs should add an extended checksum, a complete table > length and a version field to the table. This patch re-implements what arm/virt board already does and fixes checksum bug in the later and at the same time without a user (within the patch). I'd suggest redo it a way similar to FADT refactoring patch 1: fix checksum bug in virt/arm patch 2: update reference tables in test patch 3: introduce AcpiRsdpData similar to commit 937d1b587 (both arm and x86) wich stores all data in hos byte order patch 4: convert arm's impl. to build_append_int_noprefix() API (commit 5d7a334f7) ... move out to aml-build.c patch 5: reuse generalized arm's build_rsdp() for x86, dropping x86 specific one amending it to generate rev1 variant defined by revision in AcpiRsdpData (commit dd1b2037a) 'make check V=1' shouldn't observe any ACPI tables changes after patch 2. > Signed-off-by: Samuel Ortiz > --- > include/hw/acpi/aml-build.h | 3 +++ > hw/acpi/aml-build.c | 37 +++++++++++++++++++++++++++++++++++++ > 2 files changed, 40 insertions(+) > > diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h > index c9bcb32d81..3580d0ce90 100644 > --- a/include/hw/acpi/aml-build.h > +++ b/include/hw/acpi/aml-build.h > @@ -393,6 +393,9 @@ void > build_rsdp(GArray *table_data, > BIOSLinker *linker, unsigned rsdt_tbl_offset); > void > +build_rsdp_xsdt(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); > void > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c > index 51b608432f..a030d40674 100644 > --- a/hw/acpi/aml-build.c > +++ b/hw/acpi/aml-build.c > @@ -1651,6 +1651,43 @@ build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets, > (void *)xsdt, "XSDT", xsdt_len, 1, oem_id, oem_table_id); > } > > +/* RSDP pointing at an XSDT */ > +void > +build_rsdp_xsdt(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; > + unsigned xsdt_offset = > + (char *)&rsdp->length - 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); > + rsdp->length = cpu_to_le32(sizeof(*rsdp)); > + /* version 2, we will use the XSDT pointer */ > + 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); > + > + /* Legacy checksum to be filled by Guest linker */ > + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, > + (char *)rsdp - rsdp_table->data, xsdt_offset, > + (char *)&rsdp->checksum - rsdp_table->data); > + > + /* Extended 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->extended_checksum - rsdp_table->data); > +} > + > void build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base, > uint64_t len, int node, MemoryAffinityFlags flags) > { From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Mammedov Subject: Re: [PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP Date: Thu, 8 Nov 2018 15:16:23 +0100 Message-ID: <20181108151623.4de26ecb@redhat.com> References: <20181105014047.26447-1-sameo@linux.intel.com> <20181105014047.26447-6-sameo@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gKl6q-0006hT-2m for xen-devel@lists.xenproject.org; Thu, 08 Nov 2018 14:16:36 +0000 In-Reply-To: <20181105014047.26447-6-sameo@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Samuel Ortiz Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Shannon Zhao , qemu-arm@nongnu.org, Marcel Apfelbaum , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Richard Henderson List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAgNSBOb3YgMjAxOCAwMjo0MDoyOCArMDEwMApTYW11ZWwgT3J0aXogPHNhbWVvQGxp bnV4LmludGVsLmNvbT4gd3JvdGU6Cgo+IFhTRFQgaXMgdGhlIDY0LWJpdCB2ZXJzaW9uIG9mIHRo ZSBsZWdhY3kgQUNQSSBSU0RUIChSb290IFN5c3RlbQo+IERlc2NyaXB0aW9uIFRhYmxlKS4gUlNE VCBvbmx5IGFsbG93IGZvciAzMi1iaXQgYWRkcmVzc3NlcyBhbmQgaGF2ZSB0aHVzCj4gYmVlbiBk ZXByZWNhdGVkLiBTaW5jZSBBQ1BJIHZlcnNpb24gMi4wLCBSU0RQcyBzaG91bGQgcG9pbnQgYXQg WFNEVHMgYW5kCj4gbm8gbG9uZ2VyIFJTRFRzLCBhbHRob3VnaCBSU0RUcyBhcmUgc3RpbGwgc3Vw cG9ydGVkIGZvciBiYWNrd2FyZAo+IGNvbXBhdGliaWxpdHkuCj4gCj4gU2luY2UgdmVyc2lvbiAy LjAsIFJTRFBzIHNob3VsZCBhZGQgYW4gZXh0ZW5kZWQgY2hlY2tzdW0sIGEgY29tcGxldGUgdGFi bGUKPiBsZW5ndGggYW5kIGEgdmVyc2lvbiBmaWVsZCB0byB0aGUgdGFibGUuCgpUaGlzIHBhdGNo IHJlLWltcGxlbWVudHMgd2hhdCBhcm0vdmlydCBib2FyZCBhbHJlYWR5IGRvZXMKYW5kIGZpeGVz IGNoZWNrc3VtIGJ1ZyBpbiB0aGUgbGF0ZXIgYW5kIGF0IHRoZSBzYW1lIHRpbWUKd2l0aG91dCBh IHVzZXIgKHdpdGhpbiB0aGUgcGF0Y2gpLgoKSSdkIHN1Z2dlc3QgcmVkbyBpdCBhIHdheSBzaW1p bGFyIHRvIEZBRFQgcmVmYWN0b3JpbmcKICBwYXRjaCAxOiBmaXggY2hlY2tzdW0gYnVnIGluIHZp cnQvYXJtCiAgcGF0Y2ggMjogdXBkYXRlIHJlZmVyZW5jZSB0YWJsZXMgaW4gdGVzdAogIHBhdGNo IDM6IGludHJvZHVjZSBBY3BpUnNkcERhdGEgc2ltaWxhciB0byBjb21taXQgOTM3ZDFiNTg3CiAg ICAgICAgICAgICAoYm90aCBhcm0gYW5kIHg4Nikgd2ljaCBzdG9yZXMgYWxsIGRhdGEgaW4gaG9z IGJ5dGUgb3JkZXIKICBwYXRjaCA0OiBjb252ZXJ0IGFybSdzIGltcGwuIHRvIGJ1aWxkX2FwcGVu ZF9pbnRfbm9wcmVmaXgoKSBBUEkgKGNvbW1pdCA1ZDdhMzM0ZjcpCiAgICAgICAgICAgLi4uIG1v dmUgb3V0IHRvIGFtbC1idWlsZC5jCiAgcGF0Y2ggNTogcmV1c2UgZ2VuZXJhbGl6ZWQgYXJtJ3Mg YnVpbGRfcnNkcCgpIGZvciB4ODYsIGRyb3BwaW5nIHg4NiBzcGVjaWZpYyBvbmUKICAgICAgYW1l bmRpbmcgaXQgdG8gZ2VuZXJhdGUgcmV2MSB2YXJpYW50IGRlZmluZWQgYnkgcmV2aXNpb24gaW4g QWNwaVJzZHBEYXRhCiAgICAgIChjb21taXQgZGQxYjIwMzdhKQoKICAnbWFrZSBjaGVjayBWPTEn IHNob3VsZG4ndCBvYnNlcnZlIGFueSBBQ1BJIHRhYmxlcyBjaGFuZ2VzIGFmdGVyIHBhdGNoIDIu Cgo+IFNpZ25lZC1vZmYtYnk6IFNhbXVlbCBPcnRpeiA8c2FtZW9AbGludXguaW50ZWwuY29tPgo+ IC0tLQo+ICBpbmNsdWRlL2h3L2FjcGkvYW1sLWJ1aWxkLmggfCAgMyArKysKPiAgaHcvYWNwaS9h bWwtYnVpbGQuYyAgICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oIGIvaW5jbHVkZS9ody9hY3BpL2FtbC1idWls ZC5oCj4gaW5kZXggYzliY2IzMmQ4MS4uMzU4MGQwY2U5MCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRl L2h3L2FjcGkvYW1sLWJ1aWxkLmgKPiArKysgYi9pbmNsdWRlL2h3L2FjcGkvYW1sLWJ1aWxkLmgK PiBAQCAtMzkzLDYgKzM5Myw5IEBAIHZvaWQKPiAgYnVpbGRfcnNkcChHQXJyYXkgKnRhYmxlX2Rh dGEsCj4gICAgICAgICAgICAgQklPU0xpbmtlciAqbGlua2VyLCB1bnNpZ25lZCByc2R0X3RibF9v ZmZzZXQpOwo+ICB2b2lkCj4gK2J1aWxkX3JzZHBfeHNkdChHQXJyYXkgKnRhYmxlX2RhdGEsCj4g KyAgICAgICAgICAgICAgICBCSU9TTGlua2VyICpsaW5rZXIsIHVuc2lnbmVkIHhzZHRfdGJsX29m ZnNldCk7Cj4gK3ZvaWQKPiAgYnVpbGRfcnNkdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5r ZXIgKmxpbmtlciwgR0FycmF5ICp0YWJsZV9vZmZzZXRzLAo+ICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm9lbV9pZCwgY29uc3QgY2hhciAqb2VtX3RhYmxlX2lkKTsKPiAgdm9pZAo+IGRpZmYgLS1n aXQgYS9ody9hY3BpL2FtbC1idWlsZC5jIGIvaHcvYWNwaS9hbWwtYnVpbGQuYwo+IGluZGV4IDUx YjYwODQzMmYuLmEwMzBkNDA2NzQgMTAwNjQ0Cj4gLS0tIGEvaHcvYWNwaS9hbWwtYnVpbGQuYwo+ ICsrKyBiL2h3L2FjcGkvYW1sLWJ1aWxkLmMKPiBAQCAtMTY1MSw2ICsxNjUxLDQzIEBAIGJ1aWxk X3hzZHQoR0FycmF5ICp0YWJsZV9kYXRhLCBCSU9TTGlua2VyICpsaW5rZXIsIEdBcnJheSAqdGFi bGVfb2Zmc2V0cywKPiAgICAgICAgICAgICAgICAgICAodm9pZCAqKXhzZHQsICJYU0RUIiwgeHNk dF9sZW4sIDEsIG9lbV9pZCwgb2VtX3RhYmxlX2lkKTsKPiAgfQo+ICAKPiArLyogUlNEUCBwb2lu dGluZyBhdCBhbiBYU0RUICovCj4gK3ZvaWQKPiArYnVpbGRfcnNkcF94c2R0KEdBcnJheSAqcnNk cF90YWJsZSwKPiArICAgICAgICAgICAgICAgIEJJT1NMaW5rZXIgKmxpbmtlciwgdW5zaWduZWQg eHNkdF90Ymxfb2Zmc2V0KQo+ICt7Cj4gKyAgICBBY3BpUnNkcERlc2NyaXB0b3IgKnJzZHAgPSBh Y3BpX2RhdGFfcHVzaChyc2RwX3RhYmxlLCBzaXplb2YgKnJzZHApOwo+ICsgICAgdW5zaWduZWQg eHNkdF9wYV9zaXplID0gc2l6ZW9mKHJzZHAtPnhzZHRfcGh5c2ljYWxfYWRkcmVzcyk7Cj4gKyAg ICB1bnNpZ25lZCB4c2R0X3BhX29mZnNldCA9Cj4gKyAgICAgICAgKGNoYXIgKikmcnNkcC0+eHNk dF9waHlzaWNhbF9hZGRyZXNzIC0gcnNkcF90YWJsZS0+ZGF0YTsKPiArICAgIHVuc2lnbmVkIHhz ZHRfb2Zmc2V0ID0KPiArICAgICAgICAoY2hhciAqKSZyc2RwLT5sZW5ndGggLSByc2RwX3RhYmxl LT5kYXRhOwo+ICsKPiArICAgIGJpb3NfbGlua2VyX2xvYWRlcl9hbGxvYyhsaW5rZXIsIEFDUElf QlVJTERfUlNEUF9GSUxFLCByc2RwX3RhYmxlLCAxNiwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0cnVlIC8qIGZzZWcgbWVtb3J5ICovKTsKPiArCj4gKyAgICBtZW1jcHkoJnJzZHAt PnNpZ25hdHVyZSwgIlJTRCBQVFIgIiwgOCk7Cj4gKyAgICBtZW1jcHkocnNkcC0+b2VtX2lkLCBB Q1BJX0JVSUxEX0FQUE5BTUU2LCA2KTsKPiArICAgIHJzZHAtPmxlbmd0aCA9IGNwdV90b19sZTMy KHNpemVvZigqcnNkcCkpOwo+ICsgICAgLyogdmVyc2lvbiAyLCB3ZSB3aWxsIHVzZSB0aGUgWFNE VCBwb2ludGVyICovCj4gKyAgICByc2RwLT5yZXZpc2lvbiA9IDB4MDI7Cj4gKwo+ICsgICAgLyog QWRkcmVzcyB0byBiZSBmaWxsZWQgYnkgR3Vlc3QgbGlua2VyICovCj4gKyAgICBiaW9zX2xpbmtl cl9sb2FkZXJfYWRkX3BvaW50ZXIobGlua2VyLAo+ICsgICAgICAgIEFDUElfQlVJTERfUlNEUF9G SUxFLCB4c2R0X3BhX29mZnNldCwgeHNkdF9wYV9zaXplLAo+ICsgICAgICAgIEFDUElfQlVJTERf VEFCTEVfRklMRSwgeHNkdF90Ymxfb2Zmc2V0KTsKPiArCj4gKyAgICAvKiBMZWdhY3kgY2hlY2tz dW0gdG8gYmUgZmlsbGVkIGJ5IEd1ZXN0IGxpbmtlciAqLwo+ICsgICAgYmlvc19saW5rZXJfbG9h ZGVyX2FkZF9jaGVja3N1bShsaW5rZXIsIEFDUElfQlVJTERfUlNEUF9GSUxFLAo+ICsgICAgICAg IChjaGFyICopcnNkcCAtIHJzZHBfdGFibGUtPmRhdGEsIHhzZHRfb2Zmc2V0LAo+ICsgICAgICAg IChjaGFyICopJnJzZHAtPmNoZWNrc3VtIC0gcnNkcF90YWJsZS0+ZGF0YSk7Cj4gKwo+ICsgICAg LyogRXh0ZW5kZWQgY2hlY2tzdW0gdG8gYmUgZmlsbGVkIGJ5IEd1ZXN0IGxpbmtlciAqLwo+ICsg ICAgYmlvc19saW5rZXJfbG9hZGVyX2FkZF9jaGVja3N1bShsaW5rZXIsIEFDUElfQlVJTERfUlNE UF9GSUxFLAo+ICsgICAgICAgIChjaGFyICopcnNkcCAtIHJzZHBfdGFibGUtPmRhdGEsIHNpemVv ZiAqcnNkcCwKPiArICAgICAgICAoY2hhciAqKSZyc2RwLT5leHRlbmRlZF9jaGVja3N1bSAtIHJz ZHBfdGFibGUtPmRhdGEpOwo+ICt9Cj4gKwo+ICB2b2lkIGJ1aWxkX3NyYXRfbWVtb3J5KEFjcGlT cmF0TWVtb3J5QWZmaW5pdHkgKm51bWFtZW0sIHVpbnQ2NF90IGJhc2UsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3QgbGVuLCBpbnQgbm9kZSwgTWVtb3J5QWZmaW5pdHlGbGFncyBm bGFncykKPiAgewoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gKl7H-0001hV-9I for qemu-devel@nongnu.org; Thu, 08 Nov 2018 09:17:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gKl7G-0003Yb-4A for qemu-devel@nongnu.org; Thu, 08 Nov 2018 09:17:03 -0500 Date: Thu, 8 Nov 2018 15:16:23 +0100 From: Igor Mammedov Message-ID: <20181108151623.4de26ecb@redhat.com> In-Reply-To: <20181105014047.26447-6-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> <20181105014047.26447-6-sameo@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Samuel Ortiz Cc: qemu-devel@nongnu.org, Shannon Zhao , Stefano Stabellini , Anthony Perard , Richard Henderson , Marcel Apfelbaum , xen-devel@lists.xenproject.org, Paolo Bonzini , "Michael S. Tsirkin" , qemu-arm@nongnu.org, Peter Maydell , Eduardo Habkost On Mon, 5 Nov 2018 02:40:28 +0100 Samuel Ortiz wrote: > XSDT is the 64-bit version of the legacy ACPI RSDT (Root System > Description Table). RSDT only allow for 32-bit addressses and have thus > been deprecated. Since ACPI version 2.0, RSDPs should point at XSDTs and > no longer RSDTs, although RSDTs are still supported for backward > compatibility. > > Since version 2.0, RSDPs should add an extended checksum, a complete table > length and a version field to the table. This patch re-implements what arm/virt board already does and fixes checksum bug in the later and at the same time without a user (within the patch). I'd suggest redo it a way similar to FADT refactoring patch 1: fix checksum bug in virt/arm patch 2: update reference tables in test patch 3: introduce AcpiRsdpData similar to commit 937d1b587 (both arm and x86) wich stores all data in hos byte order patch 4: convert arm's impl. to build_append_int_noprefix() API (commit 5d7a334f7) ... move out to aml-build.c patch 5: reuse generalized arm's build_rsdp() for x86, dropping x86 specific one amending it to generate rev1 variant defined by revision in AcpiRsdpData (commit dd1b2037a) 'make check V=1' shouldn't observe any ACPI tables changes after patch 2. > Signed-off-by: Samuel Ortiz > --- > include/hw/acpi/aml-build.h | 3 +++ > hw/acpi/aml-build.c | 37 +++++++++++++++++++++++++++++++++++++ > 2 files changed, 40 insertions(+) > > diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h > index c9bcb32d81..3580d0ce90 100644 > --- a/include/hw/acpi/aml-build.h > +++ b/include/hw/acpi/aml-build.h > @@ -393,6 +393,9 @@ void > build_rsdp(GArray *table_data, > BIOSLinker *linker, unsigned rsdt_tbl_offset); > void > +build_rsdp_xsdt(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); > void > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c > index 51b608432f..a030d40674 100644 > --- a/hw/acpi/aml-build.c > +++ b/hw/acpi/aml-build.c > @@ -1651,6 +1651,43 @@ build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets, > (void *)xsdt, "XSDT", xsdt_len, 1, oem_id, oem_table_id); > } > > +/* RSDP pointing at an XSDT */ > +void > +build_rsdp_xsdt(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; > + unsigned xsdt_offset = > + (char *)&rsdp->length - 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); > + rsdp->length = cpu_to_le32(sizeof(*rsdp)); > + /* version 2, we will use the XSDT pointer */ > + 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); > + > + /* Legacy checksum to be filled by Guest linker */ > + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE, > + (char *)rsdp - rsdp_table->data, xsdt_offset, > + (char *)&rsdp->checksum - rsdp_table->data); > + > + /* Extended 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->extended_checksum - rsdp_table->data); > +} > + > void build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base, > uint64_t len, int node, MemoryAffinityFlags flags) > {