From patchwork Thu May 30 13:20:46 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Stabellini X-Patchwork-Id: 247595 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 719CE2C0084 for ; Thu, 30 May 2013 23:33:56 +1000 (EST) Received: from localhost ([::1]:40054 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ui2zK-0001vC-LV for incoming@patchwork.ozlabs.org; Thu, 30 May 2013 09:33:54 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60923) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ui2yq-0001ok-VN for qemu-devel@nongnu.org; Thu, 30 May 2013 09:33:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ui2yl-000676-MS for qemu-devel@nongnu.org; Thu, 30 May 2013 09:33:24 -0400 Received: from smtp.citrix.com ([66.165.176.89]:9886) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ui2yl-00066R-Ii; Thu, 30 May 2013 09:33:19 -0400 X-IronPort-AV: E=Sophos;i="4.87,770,1363132800"; d="scan'208";a="28236673" Received: from accessns.citrite.net (HELO FTLPEX01CL03.citrite.net) ([10.9.154.239]) by FTLPIPO01.CITRIX.COM with ESMTP/TLS/AES128-SHA; 30 May 2013 13:33:17 +0000 Received: from ukmail1.uk.xensource.com (10.80.16.128) by smtprelay.citrix.com (10.13.107.80) with Microsoft SMTP Server id 14.2.342.3; Thu, 30 May 2013 09:33:17 -0400 Received: from kaball.uk.xensource.com ([10.80.2.59]) by ukmail1.uk.xensource.com with esmtp (Exim 4.69) (envelope-from ) id 1Ui2mu-0007Xx-T8; Thu, 30 May 2013 14:21:04 +0100 From: Stefano Stabellini To: Date: Thu, 30 May 2013 14:20:46 +0100 Message-ID: <1369920046-3165-1-git-send-email-stefano.stabellini@eu.citrix.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 66.165.176.89 Cc: xen-devel@lists.xensource.com, Stefano Stabellini , hanweidong@huawei.com, qemu-stable@nongnu.org, arei.gonglei@huawei.com, anthony.perard@citrix.com, pbonzini@redhat.com, afaerber@suse.de Subject: [Qemu-devel] [PATCH] xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org We are currently setting the PCI hole to start at HVM_BELOW_4G_RAM_END, that is 0xf0000000. Start the PCI hole at 0xe0000000 instead, that is the same value used by pc_init1 and qemu-xen-traditional. This fixes a bug with device assignment of graphic cards with large amount of video memory (http://marc.info/?l=xen-devel&m=136242365010750). Signed-off-by: Stefano Stabellini CC: qemu-stable@nongnu.org CC: pbonzini@redhat.com CC: afaerber@suse.de CC: hanweidong@huawei.com CC: arei.gonglei@huawei.com --- hw/i386/pc_piix.c | 6 +++--- include/hw/i386/pc.h | 3 +++ xen-all.c | 12 ++++++------ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 43ab480..06416ce 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -102,9 +102,9 @@ static void pc_init1(MemoryRegion *system_memory, kvmclock_create(); } - if (ram_size >= 0xe0000000 ) { - above_4g_mem_size = ram_size - 0xe0000000; - below_4g_mem_size = 0xe0000000; + if (ram_size >= QEMU_BELOW_4G_RAM_END ) { + above_4g_mem_size = ram_size - QEMU_BELOW_4G_RAM_END; + below_4g_mem_size = QEMU_BELOW_4G_RAM_END; } else { above_4g_mem_size = 0; below_4g_mem_size = ram_size; diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 663426c..626442b 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -77,6 +77,9 @@ extern int fd_bootchk; void pc_register_ferr_irq(qemu_irq irq); void pc_acpi_smi_interrupt(void *opaque, int irq, int level); +#define QEMU_BELOW_4G_RAM_END 0xe0000000 +#define QEMU_BELOW_4G_MMIO_LENGTH ((1ULL << 32) - QEMU_BELOW_4G_RAM_END) + void pc_cpus_init(const char *cpu_model, DeviceState *icc_bridge); void pc_hot_add_cpu(const int64_t id, Error **errp); void pc_acpi_init(const char *default_dsdt); diff --git a/xen-all.c b/xen-all.c index 539a154..5ca0c26 100644 --- a/xen-all.c +++ b/xen-all.c @@ -161,18 +161,18 @@ static void xen_ram_init(ram_addr_t ram_size) ram_addr_t block_len; block_len = ram_size; - if (ram_size >= HVM_BELOW_4G_RAM_END) { + if (ram_size >= QEMU_BELOW_4G_RAM_END) { /* Xen does not allocate the memory continuously, and keep a hole at - * HVM_BELOW_4G_MMIO_START of HVM_BELOW_4G_MMIO_LENGTH + * QEMU_BELOW_4G_RAM_END of QEMU_BELOW_4G_MMIO_LENGTH */ - block_len += HVM_BELOW_4G_MMIO_LENGTH; + block_len += QEMU_BELOW_4G_MMIO_LENGTH; } memory_region_init_ram(&ram_memory, "xen.ram", block_len); vmstate_register_ram_global(&ram_memory); - if (ram_size >= HVM_BELOW_4G_RAM_END) { - above_4g_mem_size = ram_size - HVM_BELOW_4G_RAM_END; - below_4g_mem_size = HVM_BELOW_4G_RAM_END; + if (ram_size >= QEMU_BELOW_4G_RAM_END) { + above_4g_mem_size = ram_size - QEMU_BELOW_4G_RAM_END; + below_4g_mem_size = QEMU_BELOW_4G_RAM_END; } else { below_4g_mem_size = ram_size; }