From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=42838 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pl6I0-00089T-V6 for qemu-devel@nongnu.org; Thu, 03 Feb 2011 16:00:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pl6Hu-0004mQ-TH for qemu-devel@nongnu.org; Thu, 03 Feb 2011 16:00:23 -0500 Received: from mail-px0-f173.google.com ([209.85.212.173]:40096) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pl6Hu-0004mH-Mk for qemu-devel@nongnu.org; Thu, 03 Feb 2011 16:00:22 -0500 Received: by pxi16 with SMTP id 16so356195pxi.4 for ; Thu, 03 Feb 2011 13:00:21 -0800 (PST) MIME-Version: 1.0 From: Blue Swirl Date: Thu, 3 Feb 2011 21:00:01 +0000 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: [Qemu-devel] [PATCH 04/10] x86,MIPS: make vmware_vga optional List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Allow failure with vmware_vga device creation and use standard VGA instead. Signed-off-by: Blue Swirl --- hw/mips_malta.c | 6 +++++- hw/pc.c | 11 ++++++++--- hw/vmware_vga.h | 11 +++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/hw/mips_malta.c b/hw/mips_malta.c index 2d3f242..930c51c 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -957,7 +957,11 @@ void mips_malta_init (ram_addr_t ram_size, if (cirrus_vga_enabled) { pci_cirrus_vga_init(pci_bus); } else if (vmsvga_enabled) { - pci_vmsvga_init(pci_bus); + if (!pci_vmsvga_init(pci_bus)) { + fprintf(stderr, "Warning: vmware_vga not available," + " using standard VGA instead\n"); + pci_vga_init(pci_bus); + } } else if (std_vga_enabled) { pci_vga_init(pci_bus); } diff --git a/hw/pc.c b/hw/pc.c index 4dfdc0b..fcee09a 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1053,10 +1053,15 @@ void pc_vga_init(PCIBus *pci_bus) isa_cirrus_vga_init(); } } else if (vmsvga_enabled) { - if (pci_bus) - pci_vmsvga_init(pci_bus); - else + if (pci_bus) { + if (!pci_vmsvga_init(pci_bus)) { + fprintf(stderr, "Warning: vmware_vga not available," + " using standard VGA instead\n"); + pci_vga_init(pci_bus); + } + } else { fprintf(stderr, "%s: vmware_vga: no PCI bus\n", __FUNCTION__); + } #ifdef CONFIG_SPICE } else if (qxl_enabled) { if (pci_bus) diff --git a/hw/vmware_vga.h b/hw/vmware_vga.h index e7bcb22..5132573 100644 --- a/hw/vmware_vga.h +++ b/hw/vmware_vga.h @@ -4,9 +4,16 @@ #include "qemu-common.h" /* vmware_vga.c */ -static inline void pci_vmsvga_init(PCIBus *bus) +static inline bool pci_vmsvga_init(PCIBus *bus) { - pci_create_simple(bus, -1, "vmware-svga"); + PCIDevice *dev; + + dev = pci_try_create(bus, -1, "vmware-svga"); + if (!dev || qdev_init(&dev->qdev) < 0) { + return false; + } else { + return true; + } } #endif -- 1.6.2.4