From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=45769 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PIi3m-00074F-U5 for qemu-devel@nongnu.org; Wed, 17 Nov 2010 08:28:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PIi3l-0006QR-Ip for qemu-devel@nongnu.org; Wed, 17 Nov 2010 08:28:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:29294) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PIi3l-0006Pz-BV for qemu-devel@nongnu.org; Wed, 17 Nov 2010 08:28:25 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oAHDSOfh018033 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 17 Nov 2010 08:28:24 -0500 Message-ID: <4CE3D875.9020701@redhat.com> Date: Wed, 17 Nov 2010 14:28:21 +0100 From: Gerd Hoffmann MIME-Version: 1.0 References: <1288704898-30234-1-git-send-email-kraxel@redhat.com> <20101116174306.GC4077@redhat.com> In-Reply-To: <20101116174306.GC4077@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] spice: add qxl device List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" Cc: qemu-devel@nongnu.org On 11/16/10 18:43, Michael S. Tsirkin wrote: > On Tue, Nov 02, 2010 at 02:34:58PM +0100, Gerd Hoffmann wrote: >> + if (ram_size< 32 * 1024 * 1024) >> + ram_size = 32 * 1024 * 1024; >> + vga_common_init(vga, ram_size); >> + vga_init(vga); >> + register_ioport_write(0x3c0, 16, 1, qxl_vga_ioport_write, vga); >> + register_ioport_write(0x3b4, 2, 1, qxl_vga_ioport_write, vga); >> + register_ioport_write(0x3d4, 2, 1, qxl_vga_ioport_write, vga); >> + register_ioport_write(0x3ba, 1, 1, qxl_vga_ioport_write, vga); >> + register_ioport_write(0x3da, 1, 1, qxl_vga_ioport_write, vga); >> + >> + vga->ds = graphic_console_init(qxl_hw_update, qxl_hw_invalidate, >> + qxl_hw_screen_dump, qxl_hw_text_update, qxl); >> + qxl->ssd.ds = vga->ds; >> + qxl->ssd.bufsize = (16 * 1024 * 1024); >> + qxl->ssd.buf = qemu_malloc(qxl->ssd.bufsize); >> + >> + qxl0 = qxl; > > What happens when this device is then removed? Better don't try ... The primary vga can't be hot-unplugged in qemu. Not only because the qxl0 pointer would point into nowhere in this case, but also because you can't unregister the graphic console. Also having non-pci ressources (legacy vga I/O ports) is a problem. >> + pci_config_set_class(config, PCI_CLASS_DISPLAY_VGA); >> + } else { >> + pci_config_set_class(config, PCI_CLASS_DISPLAY_OTHER); > > So 1st device has device id different from the rest? Yes. > Why? Because the first one actually *is* different. It is the only one which is vga compatible. It serves as primary display. You'll see the boot messages there. >> + device_id++; > > what happens when this wraps around? > Since it's an int probably undefined behaviour ... I doubt you'll see it wrap in any real world scenario. Even with one hotplug + unplug cycle per second you'll need a bunch of years to see it wrap. Beside that at least in windows the device can't be unplugged in the first place, windows will veto the unplug request. cheers, Gerd