From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52714) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZX6no-0003JP-K1 for qemu-devel@nongnu.org; Wed, 02 Sep 2015 08:06:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZX6nl-0001Nj-RI for qemu-devel@nongnu.org; Wed, 02 Sep 2015 08:06:08 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53826) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZX6nl-0001Nd-Lx for qemu-devel@nongnu.org; Wed, 02 Sep 2015 08:06:05 -0400 Date: Wed, 2 Sep 2015 15:05:55 +0300 From: "Michael S. Tsirkin" Message-ID: <20150902150458-mutt-send-email-mst@redhat.com> References: <1439563931-12352-1-git-send-email-guangrong.xiao@linux.intel.com> <1439563931-12352-3-git-send-email-guangrong.xiao@linux.intel.com> <20150902120602.74c57da0@nial.brq.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150902120602.74c57da0@nial.brq.redhat.com> 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: Igor Mammedov Cc: Xiao Guangrong , ehabkost@redhat.com, kvm@vger.kernel.org, gleb@kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, pbonzini@redhat.com, rth@twiddle.net On Wed, Sep 02, 2015 at 12:06:02PM +0200, Igor Mammedov wrote: > 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) Add an XSDT and link the 64 bit stuff from there only. This approach will need some work to avoid breaking UEFI. > > 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