From owner-freebsd-current@FreeBSD.ORG Mon Jul 19 23:45:11 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 08E4616A4CE; Mon, 19 Jul 2004 23:45:11 +0000 (GMT) Received: from salmon.maths.tcd.ie (salmon.maths.tcd.ie [134.226.81.11]) by mx1.FreeBSD.org (Postfix) with SMTP id D29C243D53; Mon, 19 Jul 2004 23:45:09 +0000 (GMT) (envelope-from iedowse@maths.tcd.ie) Received: from walton.maths.tcd.ie by salmon.maths.tcd.ie with SMTP id ; 20 Jul 2004 00:45:08 +0100 (BST) To: "M. Warner Losh" In-Reply-To: Your message of "Mon, 19 Jul 2004 17:01:32 MDT." <20040719.170132.52458790.imp@bsdimp.com> Date: Tue, 20 Jul 2004 00:45:08 +0100 From: Ian Dowse Message-ID: <200407200045.aa99979@salmon.maths.tcd.ie> cc: scottl@freebsd.org cc: freebsd-current@freebsd.org cc: pjd@freebsd.org cc: mycroft@netbsd.org Subject: Re: Unloading USB driver while device is attached. X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2004 23:45:11 -0000 In message <20040719.170132.52458790.imp@bsdimp.com>, "M. Warner Losh" writes: >In message: <200407191950.aa12733@salmon.maths.tcd.ie> > Ian Dowse writes: >: http://people.freebsd.org/~iedowse/usb.diff >: >: but unfortunately I haven't had time to work on this lately (and >: there are all the problems of divergence from NetBSD etc. if bits >: of this get committed). The (small) uhub.c changes look like they >: might possibly help in your case. With the full patch I was able >: to `kldunload usb' without crashes a while ago, but there were still >: memory leaks. > >I'm going to start merging in some of these changes, if you don't >mind. If you have the time that would be great! FYI, here is a rough summary of the changes in no particular order: o Beginnings of interrupt pipe support for EHCI (very little done) o Support for unloading the usb driver (leaks some memory) o Support for removing cardbus USB controllers (also leaks memory) o Avoid most (but not all) uses of contigmalloc and data buffer copies by using bus_dmamap_load() and a new `struct usb_dma_mapping'. A few places marked `XXX' need to be checked for crossing DMA segment boundaries. This is probably the most important change, as it makes USB work much more reliably on low memory machines. o Attempt to follow the correct procedure for synchronising with the BIOS via SMM to take over control of the EHCI controller. This may fix problems when the BIOS is configured to emulate legacy devices, but is untested on any affected machines. o Try to make transfers reusable from the completion callback (some related changes went into NetBSD recently, but I haven't checked the overlap). There are probably a few other changes in there too - let me know if you find any stuff that doesn't make sense. Ian