> From: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > Sent: Saturday, January 20, 2024 11:00 PM > To: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> > Cc: yuanlinyu 00030184 <yuanlinyu@xxxxxxxxxxx>; Greg Kroah-Hartman > <gregkh@xxxxxxxxxxxxxxxxxxx>; linux-usb@xxxxxxxxxxxxxxx > Subject: Re: [RFC PATCH] usb: udc: run disconnect callback before pull up zero > > On Sat, Jan 20, 2024 at 01:12:04AM +0000, Thinh Nguyen wrote: > > On Fri, Jan 19, 2024, Alan Stern wrote: > > > On Fri, Jan 19, 2024 at 01:48:13PM +0800, yuan linyu wrote: > > > > When write UDC to empty and unbind gadget driver from gadget device, it > is > > > > possible that there are many queue failures for mass storage function. > > > > That's expected right? > > Certainly. And not just for mass storage; for other gadget drivers too. > > > > > The root cause is on platform like dwc3, if pull down called first, the > > > > queue operation from mass storage main thread will fail as it is belong to > > > > another thread context and always try to receive a command from host. > > > > > > > > In order to fix it, call gadget driver disconnect callback first, mass > > > > storage function driver will disable endpoints and clear running flag, > > > > so there will be no request queue to UDC. > > > > > > > > One note is when call disconnect callback first, it mean function will > > > > disable endpoints before stop UDC controller. > > > > > > Exactly. So instead of getting a bunch of errors on the gadget, now > > > you'll get a bunch of errors on the host. I don't think that's any What is host error ? Seem when host do nothing, but mass storage driver try to queue request which want to receive command from host. > > > better. > > > > > > Why don't you change the dwc3 driver instead? If it allowed ep_queue > > > operations to succeed while the pull-up is off then this problem would > > > go away. > > > > > > > I don't think we should do that either. When pullup off occurs, the > > device is disconnected for dwc3. usb_ep_queue() doc noted that we > > should return error on disconnection. > > Oh yes, so it does. Okay, forget that idea. > > > Beside, it will add unnecessary > > complication to dwc3 handling this. > > How about instead just reducing the visibility of these error messages It is already change to dev_dbg() by Wesley Cheng for dwc3. But it also can enable by change log level. Only delete it will not show again. this thread just want to discuss if disable eps first then pull up zero acceptable or good (reduce mode switch time ???) for all UDCs ? > to make them less annoying? They aren't very important, after all -- > they don't indicate that anything has gone seriously wrong. > > Alan Stern