From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KTiTL-0002lU-Jm for qemu-devel@nongnu.org; Thu, 14 Aug 2008 15:26:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KTiTK-0002lA-Qx for qemu-devel@nongnu.org; Thu, 14 Aug 2008 15:26:59 -0400 Received: from [199.232.76.173] (port=59270 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KTiTK-0002l7-KW for qemu-devel@nongnu.org; Thu, 14 Aug 2008 15:26:58 -0400 Received: from hera.kernel.org ([140.211.167.34]:56182) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KTiTK-0005ms-FZ for qemu-devel@nongnu.org; Thu, 14 Aug 2008 15:26:58 -0400 Message-ID: <48A486F2.3080804@kernel.org> Date: Thu, 14 Aug 2008 12:26:42 -0700 From: Max Krasnyansky MIME-Version: 1.0 References: <75c6e94e6d567896941e879ef7eddb29ecc3f6fa.1218685608.git.maxk@kernel.org> <48A45D2E.5000704@codemonkey.ws> In-Reply-To: <48A45D2E.5000704@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 1/5] husb: support for USB host device auto disconnect. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org Anthony Liguori wrote: > Max Krasnyansky wrote: >> I got really annoyed by the fact that you have to manually do >> usb_del in the monitor when host device is unplugged and decided >> to fix it :) >> > > Yes, I've felt the same annoyance. > >> Basically we now automatically remove guest USB device >> when the actual host device is disconnected. >> >> At first I've extended set_fd_handlerX() stuff to support checking >> for exceptions on fds. But unfortunately usbfs code does not wake up >> user-space process when device is removed, which means we need a >> timer to periodically check if device is still there. So I removed >> fd exception stuff and implemented it with the timer. >> > > I'm surprised there isn't an EOF when the device is disconnected. There > has to be some sort of userspace notification that a device has been > unplugged. I don't really like the idea of polling but it wouldn't > surprise me if we had to. I just wrote a simple test prog and it turns out that usbfs does wake user process when device is removed. But previously I was select()ing for 'exception' and instead should be checking for 'read' or 'write'. It turns out that async implementation detects the disconnect anyway because we register 'write' handler to collect async completions. Since you're liked the whole patchset I'll just send a delta patch that removes the disconnect timer altogether. >> @@ -230,8 +236,11 @@ static void usb_host_handle_destroy(USBDevice *dev) >> { >> USBHostDevice *s = (USBHostDevice *)dev; >> >> + qemu_del_timer(s->timer); >> + >> > > qemu_del_timer() only removes a pending timer. You need > qemu_free_timer() to actually free the memory associated with it. Makes sense. Since I'm nuking the timer this will go away. Max