From owner-freebsd-current@FreeBSD.ORG Tue Apr 5 12:50:46 2011 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B870310656AC; Tue, 5 Apr 2011 12:50:46 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 9315A8FC1F; Tue, 5 Apr 2011 12:50:45 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id PAA03738; Tue, 05 Apr 2011 15:50:43 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B1023.7020407@FreeBSD.org> Date: Tue, 05 Apr 2011 15:50:43 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Hans Petter Selasky References: <4D985007.4080308@freebsd.org> <4D9AF7AE.9090004@FreeBSD.org> <201104051321.56319.hselasky@freebsd.org> In-Reply-To: <201104051321.56319.hselasky@freebsd.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-current@FreeBSD.org, freebsd-usb@FreeBSD.org Subject: Re: use_generic and usb probing X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 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: Tue, 05 Apr 2011 12:50:46 -0000 on 05/04/2011 14:21 Hans Petter Selasky said the following: > On Tuesday 05 April 2011 13:06:22 Andriy Gapon wrote: >> on 03/04/2011 13:46 Andriy Gapon said the following: >>> Mostly out of curiosity (but not only because of that) I wonder why the >>> use_generic flag and two probing passes are needed in USB driver probing >>> code. That is, why the standard approach of using different probing >>> return values (e.g. BUS_PROBE_DEFAULT, BUS_PROBE_GENERIC, etc) wouldn't >>> work here. >> >> I couldn't find any historic reason for this, so I am assuming that this is >> a kludge to work-around inconsistent return values in various USB "newbus" >> probe routines. >> >> Please see here my attempt at cleaning up the basics: >> http://people.freebsd.org/~avg/usb-use_generic.diff >> >> Reviews and testing are welcome. >> >> P.S. >> A side-effect of this patch is removal of a minor annoyance in a form of >> the following message: >> Unknown USB device: vendor <> product <> bus <> >> The message is produced by devd almost any time anything is connected via >> USB thanks to (1) a nomatch USB entry in the default devd.conf; (2) >> use_generic=0 probing pass in USB. > > Hi, > > In the initial USB stack design drivers are supposed to either report match or > non-match. The reason for this is that sometimes parameters are passed on from > the probe to the attach via the USB attach args. > > See usbd_lookup_id_by_uaa(). > > When multiple drivers are probed and match, the information presented by the > usb_attach_arg's can get messed up with regard to the attaching driver. > > It would be better if the newbus could support a probing priority argument! I believe that newbus already supports ordering of children on a bus. BTW, does USB have to pass anything from probe to attach? Duplicate lookup is of course not very nice, but duplicate probing pass is not nice either. -- Andriy Gapon