From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48803) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZX4vj-0006AN-3W for qemu-devel@nongnu.org; Wed, 02 Sep 2015 06:06:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZX4vf-00069G-1a for qemu-devel@nongnu.org; Wed, 02 Sep 2015 06:06:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51427) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZX4ve-000699-SS for qemu-devel@nongnu.org; Wed, 02 Sep 2015 06:06:06 -0400 Date: Wed, 2 Sep 2015 12:06:02 +0200 From: Igor Mammedov Message-ID: <20150902120602.74c57da0@nial.brq.redhat.com> In-Reply-To: <1439563931-12352-3-git-send-email-guangrong.xiao@linux.intel.com> References: <1439563931-12352-1-git-send-email-guangrong.xiao@linux.intel.com> <1439563931-12352-3-git-send-email-guangrong.xiao@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 02/18] i386/acpi-build: allow SSDT to operate on 64 bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Xiao Guangrong Cc: ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com, gleb@kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, pbonzini@redhat.com, rth@twiddle.net On Fri, 14 Aug 2015 22:51:55 +0800 Xiao Guangrong wrote: > Only 512M is left for MMIO below 4G and that are used by PCI, BIOS etc. > Other components also reserve regions from their internal usage, e.g, > [0xFED00000, 0xFED00000 + 0x400) is reserved for HPET > > Switch SSDT to 64 bit to use the huge free room above 4G. In the later > patches, we will dynamical allocate free space within this region which > is used by NVDIMM _DSM method > > Signed-off-by: Xiao Guangrong > --- > hw/i386/acpi-build.c | 4 ++-- > hw/i386/acpi-dsdt.dsl | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > index 46eddb8..8ead1c1 100644 > --- a/hw/i386/acpi-build.c > +++ b/hw/i386/acpi-build.c > @@ -1348,7 +1348,7 @@ build_ssdt(GArray *table_data, GArray *linker, > g_array_append_vals(table_data, ssdt->buf->data, ssdt->buf->len); > build_header(linker, table_data, > (void *)(table_data->data + table_data->len - ssdt->buf->len), > - "SSDT", ssdt->buf->len, 1); > + "SSDT", ssdt->buf->len, 2); That might break Windows XP, since it supports only 1.0b ACPI with some 2.0 extensions. there is 2 way to work around it: - add an additional Rev2 ssdt table if NVDIMMs are present and describe them there - make sure that you use only 32bit arithmetic in AML (and emulate 64bit like it has been done for memory hotplug) > free_aml_allocator(); > } > > @@ -1586,7 +1586,7 @@ build_dsdt(GArray *table_data, GArray *linker, AcpiMiscInfo *misc) > > memset(dsdt, 0, sizeof *dsdt); > build_header(linker, table_data, dsdt, "DSDT", > - misc->dsdt_size, 1); > + misc->dsdt_size, 2); > } > > static GArray * > diff --git a/hw/i386/acpi-dsdt.dsl b/hw/i386/acpi-dsdt.dsl > index a2d84ec..5cd3f0e 100644 > --- a/hw/i386/acpi-dsdt.dsl > +++ b/hw/i386/acpi-dsdt.dsl > @@ -22,7 +22,7 @@ ACPI_EXTRACT_ALL_CODE AcpiDsdtAmlCode > DefinitionBlock ( > "acpi-dsdt.aml", // Output Filename > "DSDT", // Signature > - 0x01, // DSDT Compliance Revision > + 0x02, // DSDT Compliance Revision > "BXPC", // OEMID > "BXDSDT", // TABLE ID > 0x1 // OEM Revision