From owner-freebsd-usb@FreeBSD.ORG Tue May 1 07:47:56 2007 Return-Path: X-Original-To: freebsd-usb@FreeBSD.org Delivered-To: freebsd-usb@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 842C816A403; Tue, 1 May 2007 07:47:56 +0000 (UTC) (envelope-from kevlo@FreeBSD.org) Received: from ns.kevlo.org (kevlo.org [220.128.136.52]) by mx1.freebsd.org (Postfix) with ESMTP id 0714513C447; Tue, 1 May 2007 07:47:55 +0000 (UTC) (envelope-from kevlo@FreeBSD.org) Received: from [127.0.0.1] (kevlo.org [220.128.136.52]) by ns.kevlo.org (8.13.8/8.13.8) with ESMTP id l417nTbK013263; Tue, 1 May 2007 15:49:29 +0800 (CST) (envelope-from kevlo@FreeBSD.org) From: Kevin Lo To: Hans Petter Selasky In-Reply-To: <200704301754.53119.hselasky@freebsd.org> References: <200704272330.l3RNU94X078095@freefall.freebsd.org> <1177917188.11361.34.camel@monet> <4635E26F.9090801@chikalov.dp.ua> <200704301754.53119.hselasky@freebsd.org> Content-Type: text/plain; charset=utf-8 Date: Tue, 01 May 2007 15:47:53 +0800 Message-Id: <1178005673.5681.11.camel@monet> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Content-Transfer-Encoding: 8bit Cc: freebsd-usb@FreeBSD.org Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset driver X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 May 2007 07:47:56 -0000 Hans Petter Selasky wrote: > On Monday 30 April 2007 14:34, Valery V.Chikalov wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1 > > > > Kevin Lo пишет: > > > Valery V.Chikalov wrote: > > >> Hans Petter Selasky wrote: > > >>> On Sunday 29 April 2007 15:02, Valery V.Chikalov wrote: > > >>>> Kevin Lo wrote: > > >>>>> Valery V.Chikalov wrote: > > >>>>>> The following reply was made to PR usb/107642; it has been noted by > > >>>>>> GNATS. > > >>>>>> > > >>>>>> From: "Valery V.Chikalov" > > >>>>>> To: bug-followup@FreeBSD.org, valera@chikalov.dp.ua > > >>>>>> Cc: > > >>>>>> Subject: Re: usb/107642: [patch]Ralink Technology > > >>>>>> RT2501USB/RT2601USB chipset driver > > >>>>>> Date: Sun, 22 Apr 2007 11:32:18 +0300 > > >>>>>> > > >>>>>> This is a multi-part message in MIME format. > > >>>>>> --------------030900090303000507070905 > > >>>>>> Content-Type: text/plain; charset=UTF-8 > > >>>>>> Content-Transfer-Encoding: 7bit > > > > > > if_rum(4) for 7.0-CURRENT > > > > > > replaced amrr_* functions by "standard" ones already existed in > > > net80211/ieee80211_amrr.c > > > > > >>>>> Hi Valery, > > >>>>> > > >>>>> I guess you wasn't aware that I've already ported rum(4) to FreeBSD. > > >>>>> The patch is available at: http://people.freebsd.org/~kevlo/patch-rum > > >>>>> Maybe you can test my patch? Thanks. > > >>>>> > > >>>>> Kevin > > >>>> > > >>>> Hi, Kevin, > > >>>> > > >>>> Your driver not working for me. Fortunately, the errors that I see > > >>>> exactly the same which i fight when I made my driver. > > >>>> > > >>>> $ uname -a > > >>>> FreeBSD tiger.novakom.dp.ua 7.0-CURRENT FreeBSD 7.0-CURRENT #6: Sun > > >>>> Apr 29 13:58:48 EEST 2007 > > >>>> root@tiger.novakom.dp.ua:/usr/obj/usr/src/sys/TIGER64 amd64 > > >>>> > > >>>> $ sysctl kern.osreldate > > >>>> kern.osreldate: 700037 > > >>>> > > >>>> cvsup'ed 29.04.2007 > > >>>> > > >>>> kernel with: > > >>>> > > >>>> makeoptions DEBUG=-g > > >>>> > > >>>> options KDB > > >>>> > > >>>> options DDB > > >>>> > > >>>> > > >>>> > > >>>> options INVARIANTS > > >>>> > > >>>> options INVARIANT_SUPPORT > > >>>> > > >>>> options WITNESS > > >>>> > > >>>> At first, when I make kldload if_rum, I get kernel panic. > > >>>> But I cant get saved core, as ddb just hangs during "call doadump" > > >>> > > >>> I have a solution for all of this locking stuff! > > >>> > > >>>> So I add > > >>>> > > >>>> #define RUM_LOCK(sc) do { ((sc) = (sc)); mtx_lock(&Giant); } while > > >>>> (0) > > >>>> #define RUM_UNLOCK(sc) mtx_unlock(&Giant) > > >>>> > > >>>> in if_rumvar.h > > >>>> > > >>>> I spend a lot of time in attempts get rid of Giant ant always got only > > >>>> panics. > > >>> > > >>> You _cannot_ do that with the old USB stack, because you must lock > > >>> Giant before calling into the usbxxx functions. Then in the USB > > >>> callback, Giant is locked, and then you cannot lock RUM_LOCK()! That > > >>> means you will most likely end up with a deadlock pretty soon, if you > > >>> see that. > > >> > > >> Thanks, for explanations. I suspected that thing are like that, and I > > >> have tried make porting by analogue with other drivers which I can find > > >> in dev/usb, but I was not can find the description of doing "right way" > > >> locking before. > > > > > > Firstly, thanks for taking the time to test my patch. > > > I think your issue is related to watchdog timers. The revised patch is > > > at http://people.freebsd.org/~kevlo/patch-rum > > > > > > Besides, I don't get a panic during high load when getting a file about > > > 400MB via ftp. > > > > Sorry, but the error that I see the same, just after inserting dongle, > > or if it was inserted before - after kldload if_rum: > > > > panic: sleeping without a lock > > > > the top of stack: > > at usbd_transfer +0x1fe > > .... > > rum_ioctl > > > > And I cant get saved kernel coredump at the end. > > > > I have not serial console configured so it was just subscribed by hand. > > Of course I can reproduce it again and subscribe what you will ask. > > > > I have SMP kernel and use AMD64 architecture, maybe this are the reasons > > why we are getting different results. > > > > Can you please, explain me in two words(or give a reference) why you are > > dropping mtx_lock(&Giant). Yes I have seen the same in if_ural.c and as > > i have wrote before unsuccessfully have tried repeat it in if_rum. I > > know that current USB stack is not Giant free, and Hans noted that this > > is impossible (if I understand him right). Maybe exists some tunable or > > kernel option or another trick that allows drivers working without the > > Giant under current USB stack, which I must use. > > > > Thank you for your time and patience. > > Sorry for my english. > > > > Valery. > > > > >>>> After that I get hangs, > > >>>> which i resolved by modifying rum_ioctl: > > >>> > > >>> I'm almost finished converting "if_rum.c()" to the new USB stack. > > >>> > > >>> In some hours I will update it with support for "if_rum". > > >>> > > >>> If you can test that and forget about the old USB stack, I will be very > > >>> happy :-) > > >> > > >> I will do it with pleasure. I was almost ready to do it (converting to > > >> new USB stack) by myself, but I was stopped by the fact that I cant make > > >> it compiled under CURRENT. I have seen your mail that your are working > > >> on this. Is new the USB stack ready for CURRENT now? > > >> > > >> Valery. > > >> > > >>> --HPS > > >>> > > >>> http://www.turbocat.net/~hselasky/usb4bsd > > > > > > Kevin > > Hi, Hi, > I have just imported "if_rum.c" to SVN and my P4 tree. > > Just do a SVN update. Build a new USB package install that. > > cp -r i4b/trunk/i4b/src/sys/modules/rum /usr/src/sys/modules/rum > > make -C /usr/src/sys/modules/rum all install > > Hope it works. Tested, it works like a charm. Thanks :-) > > --HPS > > http://www.turbocat.net/~hselasky/usb4bsd Kevin