From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44533) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YENps-0003iu-Bj for qemu-devel@nongnu.org; Thu, 22 Jan 2015 14:54:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YENpl-0008EW-V2 for qemu-devel@nongnu.org; Thu, 22 Jan 2015 14:54:36 -0500 From: Marcel Apfelbaum Date: Thu, 22 Jan 2015 21:52:43 +0200 Message-Id: <1421956363-23502-18-git-send-email-marcel@redhat.com> In-Reply-To: <1421956363-23502-1-git-send-email-marcel@redhat.com> References: <1421956363-23502-1-git-send-email-marcel@redhat.com> Subject: [Qemu-devel] [PATCH RFC 17/17] hw/acpi: hack - generate dummy region ranges for first acpi-build (will be removed from the series) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: seabios@seabios.org, kraxel@redhat.com, mst@redhat.com, quintela@redhat.com, agraf@suse.de, alex.williamson@redhat.com, kevin@koconnor.net, qemu-ppc@nongnu.org, hare@suse.de, imammedo@redhat.com, amit.shah@redhat.com, pbonzini@redhat.com, leon.alrae@imgtec.com, aurelien@aurel32.net, rth@twiddle.net The SSDT size is different from the first time is created and the second time because between them the BIOS sets ranges for the other PCI root busses. The OS-es cannot find the rsdt pointer after that, until this problem is solved, this hack can be used for testing. Signed-off-by: Marcel Apfelbaum --- hw/i386/acpi-build.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index d490a1e..c7ab178 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -794,6 +794,9 @@ static AcpiAml build_crs(PcPciInfo *pci, PciInfo *bus_info, bridge_info->bus.io_range->limit - bridge_info->bus.io_range->base + 1)); range = *bridge_info->bus.io_range; + if (!range.base) { + range.base = 0x0D00 + bus_info->bus * 0x100; + } pci_mem_range_insert(io_ranges, range); aml_append(&crs, @@ -806,6 +809,9 @@ static AcpiAml build_crs(PcPciInfo *pci, PciInfo *bus_info, bridge_info->bus.memory_range->limit - bridge_info->bus.memory_range->base + 1)); range = *bridge_info->bus.memory_range; + if (!range.base) { + range.base = pci->w32.begin + bus_info->bus * 0x1000; + } pci_mem_range_insert(mem_ranges, range); aml_append(&crs, acpi_dword_memory(acpi_pos_decode, acpi_min_fixed, @@ -817,6 +823,9 @@ static AcpiAml build_crs(PcPciInfo *pci, PciInfo *bus_info, bridge_info->bus.prefetchable_range->limit - bridge_info->bus.prefetchable_range->base + 1)); range = *bridge_info->bus.prefetchable_range; + if (!range.base) { + range.base = pci->w32.begin + bus_info->bus * 0x2000; + } pci_mem_range_insert(mem_ranges, range); } -- 2.1.0