From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcYw0-0004S6-Tn for qemu-devel@nongnu.org; Mon, 30 Mar 2015 08:36:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YcYvw-00025Y-3V for qemu-devel@nongnu.org; Mon, 30 Mar 2015 08:36:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58101) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcYvv-00025O-Rt for qemu-devel@nongnu.org; Mon, 30 Mar 2015 08:36:48 -0400 Date: Mon, 30 Mar 2015 14:36:43 +0200 From: Igor Mammedov Message-ID: <20150330143643.304edf0f@nial.brq.redhat.com> In-Reply-To: <1427554013-3535-1-git-send-email-fishman@saucelabs.com> References: <1427554013-3535-1-git-send-email-fishman@saucelabs.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC] acpi: add reset register to fadt List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Reza Jelveh Cc: qemu-devel@nongnu.org On Sat, 28 Mar 2015 15:46:53 +0100 Reza Jelveh wrote: > Some operating systems such as FreeBSD and Mac OSX need the reset_register > section of the FADT filled to know which port to write to for a system reset. > > What is the right way to set the reset_val and the reset addr in this case? > --- > hw/i386/acpi-build.c | 5 +++++ > hw/i386/acpi-defs.h | 2 ++ > 2 files changed, 7 insertions(+) > > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > index d0a5c85..21c1453 100644 > --- a/hw/i386/acpi-build.c > +++ b/hw/i386/acpi-build.c > @@ -361,6 +361,11 @@ static void fadt_setup(AcpiFadtDescriptorRev1 *fadt, AcpiPmInfo *pm) > (1 << ACPI_FADT_F_SLP_BUTTON) | > (1 << ACPI_FADT_F_RTC_S4)); > fadt->flags |= cpu_to_le32(1 << ACPI_FADT_F_USE_PLATFORM_CLOCK); > + fadt->flags |= cpu_to_le32(1 << ACPI_FADT_F_RESET_REG_SUP); > + fadt->reset_val = 0xf; > + fadt->reset_reg.address_space_id = aml_system_io; > + fadt->reset_reg.register_bit_width = 8; > + fadt->reset_reg.address = ICH9_RST_CNT_IOPORT; > /* APIC destination mode ("Flat Logical") has an upper limit of 8 CPUs > * For more than 8 CPUs, "Clustered Logical" mode has to be used > */ > diff --git a/hw/i386/acpi-defs.h b/hw/i386/acpi-defs.h > index c4468f8..960c833 100644 > --- a/hw/i386/acpi-defs.h > +++ b/hw/i386/acpi-defs.h > @@ -132,6 +132,8 @@ struct AcpiFadtDescriptorRev1 > uint8_t reserved4a; /* Reserved */ > uint8_t reserved4b; /* Reserved */ > uint32_t flags; > + Acpi20GenericAddress reset_reg; > + uint8_t reset_val; you are extending structure beyond of what specified by ACPI 1.0b spec, that might break guests. We probably can't change revision since Windows ACPI implementation is mostly 1.0b based so we are stuck with it. Patch needs to be tested with Windows guests starting with XP. related issue, adding fields without changing major version to a corresponding one doesn't look correct. > } QEMU_PACKED; > typedef struct AcpiFadtDescriptorRev1 AcpiFadtDescriptorRev1; >