From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59578) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIbUF-0006M8-B9 for qemu-devel@nongnu.org; Thu, 21 Mar 2013 05:08:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UIbU9-0005VC-Uh for qemu-devel@nongnu.org; Thu, 21 Mar 2013 05:08:39 -0400 Received: from [222.73.24.84] (port=24281 helo=song.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIbU9-0005Ua-Kl for qemu-devel@nongnu.org; Thu, 21 Mar 2013 05:08:33 -0400 From: Hu Tao Date: Thu, 21 Mar 2013 17:08:34 +0800 Message-Id: <1363856914-23399-2-git-send-email-hutao@cn.fujitsu.com> In-Reply-To: References: Subject: [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: qemu-devel , "Daniel P. Berrange" , KAMEZAWA Hiroyuki , Jan Kiszka , Gleb Natapov , Blue Swirl , Eric Blake , Andrew Jones , Marcelo Tosatti , Sasha Levin , Luiz Capitulino , Anthony Liguori , Markus Armbruster , Paolo Bonzini , Stefan Hajnoczi , Juan Quintela , Orit Wasserman , Wen Congyang , "Michael S. Tsirkin" , Alexander Graf , Alex Williamson , Peter Maydell , Christian Borntraeger , seabios@seabios.org 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); + + *(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); -- 1.8.1.4