From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54678) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2G9w-0000UV-9M for qemu-devel@nongnu.org; Tue, 09 Jun 2015 05:49:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z2G9r-0003TX-T4 for qemu-devel@nongnu.org; Tue, 09 Jun 2015 05:49:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44103) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2G9r-0003Sz-Om for qemu-devel@nongnu.org; Tue, 09 Jun 2015 05:49:23 -0400 Date: Tue, 9 Jun 2015 11:49:20 +0200 From: "Michael S. Tsirkin" Message-ID: <20150609112550-mutt-send-email-mst@redhat.com> References: <1433787255-4372-1-git-send-email-mst@redhat.com> <55762E63.7010606@redhat.com> <20150609072936-mutt-send-email-mst@redhat.com> <964733846.17699064.1433829751766.JavaMail.zimbra@zmail13.collab.prod.int.phx2.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <964733846.17699064.1433829751766.JavaMail.zimbra@zmail13.collab.prod.int.phx2.redhat.com> Subject: Re: [Qemu-devel] [PATCH v2 0/4] acpi: xsdt support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: ghammer@redhat.com, imammedo@redhat.com, lersek@redhat.com, qemu-devel@nongnu.org, shannon.zhao@linaro.org On Tue, Jun 09, 2015 at 02:02:31AM -0400, Paolo Bonzini wrote: > I would just patch OVMF to ignore the RSDT if there is an XSDT. > > Alternatively, can you check for ACPI 2.0 support via _OSI, and load the ACPI 2.0 bits via LoadTable? Hopefully XP does not BSOD if the invalid (for ACPI 1.0) opcodes are in a Then block or in a separate method... Then you can use just an RSDT. > > Paolo So it's even easier. The following doesn't crash XP: Method(ADDR, 0, Serialized) { /* Region is local to method to avoid crashing ACPI 1.0 guests */ DataTableRegion(IDPT, "UEFI", "BXPC", "VMGENI"); Field (IDPT, AnyAcc, NoLock, Preserve) { Offset (54), VGIA, 64 // address of "etc/acpi/vmgenid" blob } Return(Add(VGIA), 40); } Simply because XP doesn't ever call ADDR. Method must be serialized since attempts to create two regions or fields with the same name would crash OSPM. -- MST