Re: [PATCH v4] usb: dwc3: debugfs: Prevent any register access when devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 04, 2023 at 10:29:31AM -0400, Alan Stern wrote:
> On Tue, Apr 04, 2023 at 02:30:25PM +0200, Johan Hovold wrote:
> > On Tue, Apr 04, 2023 at 02:07:22PM +0200, Oliver Neukum wrote:
> > > On 04.04.23 13:43, Johan Hovold wrote:
> > > 
> > > > The device is being used; by the driver and ultimately by a user telling
> > > 
> > > I am afraid that is just an assumption we cannot make. The user may just as
> > > well be reading a device state before a device is being used as that may matter.
> > 
> > It's a perfectly valid assumption to make, and it is was all drivers do
> > for debugfs (as well as sysfs). You are the one arguing for making an
> > exception, which I don't think is warranted.
> > 
> > > > the driver to do something on their behalf. The fact that the user is
> > > > initiating an action through an interface which intended for debugging
> > > > should not matter (and the user always has the option to check the
> > > > runtime pm state before initiating the action if that matters at all).
> > > 
> > > 1. That is a race condition.
> > 
> > Sure, but you can't have it both ways. Your proposed inverted logic is
> > racy as you may or may not get any data.
> > 
> > > 2. Quite a lot of bugs we are looking at involve power transitions.
> > > You just cannot assume that a device will react the same way if it was
> > > waken up between events.
> > 
> > Then just don't use the interface if you for whatever reason don't want
> > to wake the device up.
> 
> For what it's worth, the ehci-hcd driver tests (under its private 
> spinlock) whether the hardware is accessible -- i.e., not suspended -- 
> before trying to carry out any debugfs operations that would use the 
> device registers.  If not, all you get is something like:
> 
> 	bus <buspath>, device <devname>
> 	<description>
> 	SUSPENDED (no register access)

Thanks, I only grepped the tree for drivers using runtime pm directly in
their debugfs callbacks so I missed this. Apparently, ohci and uhci do
the same. And when resources are not managed using runtime PM, I guess
there is no other good alternative.

The xhci driver on the other hand, do appear to call
pm_runtime_get_sync() before accessing registers through debugfs (e.g.
see debugfs_regset32_show).

Johan



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux