From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60697) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIbXl-0002OC-DL for qemu-devel@nongnu.org; Thu, 21 Mar 2013 05:12:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UIbXh-0006s3-CV for qemu-devel@nongnu.org; Thu, 21 Mar 2013 05:12:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:32056) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIbXh-0006rp-4f for qemu-devel@nongnu.org; Thu, 21 Mar 2013 05:12:13 -0400 Message-ID: <514ACEDA.8080506@redhat.com> Date: Thu, 21 Mar 2013 10:11:54 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1363856914-23399-2-git-send-email-hutao@cn.fujitsu.com> In-Reply-To: <1363856914-23399-2-git-send-email-hutao@cn.fujitsu.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v15 2/2] patch dsdt to use passed-in pvpanic ioport List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Hu Tao Cc: Peter Maydell , Gleb Natapov , "Michael S. Tsirkin" , Jan Kiszka , seabios@seabios.org, qemu-devel , Markus Armbruster , Blue Swirl , Orit Wasserman , Juan Quintela , Alexander Graf , Christian Borntraeger , Andrew Jones , Alex Williamson , Sasha Levin , Stefan Hajnoczi , Luiz Capitulino , KAMEZAWA Hiroyuki , Anthony Liguori , Marcelo Tosatti Il 21/03/2013 10:08, Hu Tao ha scritto: > Signed-off-by: Hu Tao > --- > src/acpi-dsdt-isa.dsl | 14 ++++++++++++-- > src/acpi.c | 9 +++++++++ > 2 files changed, 21 insertions(+), 2 deletions(-) > > diff --git a/src/acpi-dsdt-isa.dsl b/src/acpi-dsdt-isa.dsl > index 87a31b9..43fe719 100644 > --- a/src/acpi-dsdt-isa.dsl > +++ b/src/acpi-dsdt-isa.dsl > @@ -102,7 +102,9 @@ Scope(\_SB.PCI0.ISA) { > > Device(PEVT) { > Name(_HID, "QEMU0001") > - OperationRegion(PEOR, SystemIO, 0x0505, 0x01) > + ACPI_EXTRACT_NAME_WORD_CONST dsdt_isa_pest > + Name(PEST, 0x505) > + OperationRegion(PEOR, SystemIO, PEST, 0x01) > Field(PEOR, ByteAcc, NoLock, Preserve) { > PEPT, 8, > } > @@ -126,7 +128,15 @@ Scope(\_SB.PCI0.ISA) { > } > > Name(_CRS, ResourceTemplate() { > - IO(Decode16, 0x0505, 0x0505, 0x01, 0x01) > + IO(Decode16, 0x0505, 0x0505, 0x01, 0x01, IO) > }) > + > + CreateWordField(_CRS, IO._MIN, IOMN) > + CreateWordField(_CRS, IO._MAX, IOMX) > + > + Method(_INI, 0, NotSerialized) { > + Store(PEST, IOMN) > + Store(PEST, IOMX) > + } > } > } > diff --git a/src/acpi.c b/src/acpi.c > index 119d1c1..42fa06e 100644 > --- a/src/acpi.c > +++ b/src/acpi.c > @@ -286,11 +286,20 @@ static const struct pci_device_id fadt_init_tbl[] = { > PCI_DEVICE_END > }; > > +static void patch_dsdt(void *dsdt) > +{ > + u8 *dsdt_ptr = dsdt; > + int pvpanic_port = romfile_loadint("etc/pvpanic-port", 0x505); The default must be 0. Also, here: + + Method(_STA, 0, NotSerialized) { + Store(PEPT, Local0) + If (LEqual(Local0, Zero)) { + Return (0x00) + } Else { + Return (0x0F) + } + } + You must change it to look at PEST instead of PEPT (i.e. do not probe, just see if you have a meaningful address). Just squash the patches, it's simpler that way probably. Paolo > + *(u16 *)(dsdt_ptr + *dsdt_isa_pest) = pvpanic_port; > +} > + > static void fill_dsdt(struct fadt_descriptor_rev1 *fadt, void *dsdt) > { > if (fadt->dsdt) { > free((void *)le32_to_cpu(fadt->dsdt)); > } > + patch_dsdt(dsdt); > fadt->dsdt = cpu_to_le32((u32)dsdt); > fadt->checksum -= checksum(fadt, sizeof(*fadt)); > dprintf(1, "ACPI DSDT=%p\n", dsdt); >