From owner-freebsd-hackers@freebsd.org Mon Mar 11 04:01:08 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B392C152D46E for ; Mon, 11 Mar 2019 04:01:08 +0000 (UTC) (envelope-from darius@dons.net.au) Received: from ipmail01.adl2.internode.on.net (ipmail01.adl2.internode.on.net [150.101.137.133]) by mx1.freebsd.org (Postfix) with ESMTP id F355D77B9B for ; Mon, 11 Mar 2019 04:01:00 +0000 (UTC) (envelope-from darius@dons.net.au) Received: from 124-148-131-52.dyn.iinet.net.au (HELO midget.dons.net.au) ([124.148.131.52]) by ipmail01.adl2.internode.on.net with ESMTP; 11 Mar 2019 14:30:50 +1030 Received: from midget.dons.net.au (localhost [127.0.0.1]) by midget.dons.net.au (8.15.2/8.15.2) with ESMTPS id x2B40hmB064344 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Mon, 11 Mar 2019 14:30:43 +1030 (ACDT) (envelope-from darius@dons.net.au) Received: (from mailnull@localhost) by midget.dons.net.au (8.15.2/8.15.2/Submit) id x2B3vUaI060685 for ; Mon, 11 Mar 2019 14:27:30 +1030 (ACDT) (envelope-from darius@dons.net.au) X-Authentication-Warning: midget.dons.net.au: mailnull set sender to using -f Received: from [10.0.2.26] ([10.0.2.26]) by ns.dons.net.au (envelope-sender ) (MIMEDefang) with ESMTP id x2B3vTJn060679; Mon, 11 Mar 2019 14:27:30 +1030 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.2 \(3445.102.3\)) Subject: Re: USB stack getting confused From: "O'Connor, Daniel" In-Reply-To: <40bf77e0-47a5-6edc-b5d0-58e3c44988ac@selasky.org> Date: Mon, 11 Mar 2019 14:27:29 +1030 Cc: Konstantin Belousov , Warner Losh , FreeBSD Hackers Content-Transfer-Encoding: quoted-printable Message-Id: <030A0C16-4508-4C7C-A87C-72B69B15EDF5@dons.net.au> References: <3B29D870-41F9-46AF-B9F3-03106DEC417D@dons.net.au> <20190309152613.GM2492@kib.kiev.ua> <20190309162640.GN2492@kib.kiev.ua> <20190309192330.GO2492@kib.kiev.ua> <20190310094758.GP2492@kib.kiev.ua> <35f69493-4bbb-4142-b61a-3e90adc8777b@selasky.org> <20190310102629.GQ2492@kib.kiev.ua> <40bf77e0-47a5-6edc-b5d0-58e3c44988ac@selasky.org> To: Hans Petter Selasky X-Mailer: Apple Mail (2.3445.102.3) X-Spam-Score: -1 () No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=unavailable autolearn_force=no version=3.4.1 X-Scanned-By: MIMEDefang 2.83 on 10.0.2.1 X-Rspamd-Queue-Id: F355D77B9B X-Spamd-Bar: ++++ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [4.18 / 15.00]; MV_CASE(0.50)[]; HAS_XAW(0.00)[]; TO_DN_ALL(0.00)[]; MX_GOOD(-0.01)[midget.dons.net.au]; RCVD_NO_TLS_LAST(0.10)[]; RCVD_IN_DNSWL_LOW(-0.10)[133.137.101.150.list.dnswl.org : 127.0.5.1]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; ASN(0.00)[asn:4739, ipnet:150.101.0.0/16, country:AU]; MIME_TRACE(0.00)[0:+]; MID_RHS_MATCH_FROM(0.00)[]; RECEIVED_SPAMHAUS_PBL(0.00)[52.131.148.124.zen.spamhaus.org : 127.0.0.11]; ARC_NA(0.00)[]; RCVD_COUNT_FIVE(0.00)[5]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_SPAM_SHORT(0.76)[0.757,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(0.26)[ipnet: 150.101.0.0/16(1.01), asn: 4739(0.33), country: AU(-0.04)]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; AUTH_NA(1.00)[]; DMARC_NA(0.00)[dons.net.au]; NEURAL_SPAM_MEDIUM(0.93)[0.932,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_SPAM_LONG(0.85)[0.846,0]; R_SPF_NA(0.00)[]; FREEMAIL_CC(0.00)[gmail.com] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Mar 2019 04:01:09 -0000 > On 10 Mar 2019, at 23:40, Hans Petter Selasky wrote: > On 3/10/19 11:26 AM, Konstantin Belousov wrote: >> On Sun, Mar 10, 2019 at 11:18:36AM +0100, Hans Petter Selasky wrote: >>> On 3/10/19 10:47 AM, Konstantin Belousov wrote: >>>>> Yes, I can do that if destroy_dev() ensures that d_close is called = for >>>>> all open file handles once and only once before it returns. I = think this >>>>> is where the problem comes from. >>>> See above. For d_close it is impossible, for cdevpriv dtr it is = already >>>> there by design. >>>>=20 >>>=20 >>> Yes, cdevpriv_dtr will wait for the final close() from user-space >>> unfortunately. Or am I mistaken? >> You are mistaken. Cdevpriv destructors are called either on the file = close >> (not the last close in d_close sense, just file close) OR during = destroy_dev(). >> Each destructor/file pair is called exactly once, regardless of the = cause. >=20 > Can you try the attached patch? I tried it but it didn't help the problem. I put a break point at ugen20_enumerate at libusb20_ugen20.c:149 I can = see it try and open /dev/ugenX.Y but 0.5 (my device) fails with errno = set to 12 (ENOMEM). I can dig into the kernel part if you want but will need some guidance = where to look.. -- Daniel O'Connor "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum