Prev: linux-next: pci tree build failure
Next: rcu: prevent hangs by simplifying rcu_barrier/CPU-hotplug, fix lockdep complaint
From: Alan Stern on 8 Oct 2009 13:10 On Thu, 8 Oct 2009, Oliver Neukum wrote: > Am Donnerstag, 8. Oktober 2009 16:58:39 schrieb Alan Stern: > > On Thu, 8 Oct 2009, Oliver Neukum wrote: > > > Am Mittwoch, 7. Oktober 2009 23:34:12 schrieb Alan Stern: > > > > > Other schemes could work, but to me it seems simplest to rely on a flag > > > > protected by a spinlock. �The flag would mean "URBs are supposed to be > > > > queued unless we are suspended". �It would be set by open and > > > > unthrottle, and cleared by close and throttle. > > > > > > 1. Why a spinlock? > > > > Because the amount of work involved seems too small for a mutex. But > > you could use a mutex if you wanted, since everything occurs in process > > context. > > We have to submit URBs under that lock. Yes. What's your point? > > > 2. Can we get by with only one flag? > > > > If all you want to do is answer a single question ("Should URBs be > > submitted") then a single flag should be all you need. Why, do you > > think more information will be necessary? You can always add more. > > We have at least three reasons URBs should not be submitted. > - closure > - throttling > - suspension > Resume() should not submit if either closure or throttling are active, > neither should unthrottle() resubmit if closure or suspension are active. True. Nor should open() submit if throttling is active. Feel free to use three separate flags. :-) Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Alan Stern on 8 Oct 2009 16:10 On Thu, 8 Oct 2009, Alan Stern wrote: > > > > 2. Can we get by with only one flag? > > > > > > If all you want to do is answer a single question ("Should URBs be > > > submitted") then a single flag should be all you need. Why, do you > > > think more information will be necessary? You can always add more. > > > > We have at least three reasons URBs should not be submitted. > > - closure > > - throttling > > - suspension > > Resume() should not submit if either closure or throttling are active, > > neither should unthrottle() resubmit if closure or suspension are active. > > True. Nor should open() submit if throttling is active. Feel free to > use three separate flags. :-) On further thought, unthrottle should autoresume if the device is open and autosuspended (but it shouldn't do anything if the device is suspended). After all, the reason for the autosuspend may have been the lack of activity caused by the throttling. In practice this isn't likely to come up. It would be surprising if throttling lasted long enough to cause an autosuspend or if the core decided to throttle while the device was autosuspended and hence idle. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Oliver Neukum on 8 Oct 2009 16:50 Am Donnerstag, 8. Oktober 2009 22:06:10 schrieb Alan Stern: > > On further thought, unthrottle should autoresume if the device is > open and autosuspended (but it shouldn't do anything if the device is > suspended). After all, the reason for the autosuspend may have been > the lack of activity caused by the throttling. > > In practice this isn't likely to come up. It would be surprising if > throttling lasted long enough to cause an autosuspend or if the core > decided to throttle while the device was autosuspended and hence idle. So you say that throttle() should do an autopm_put? Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Alan Cox on 8 Oct 2009 17:20 On Thu, 8 Oct 2009 22:40:36 +0200 Oliver Neukum <oliver(a)neukum.org> wrote: > Am Donnerstag, 8. Oktober 2009 22:06:10 schrieb Alan Stern: > > > > > On further thought, unthrottle should autoresume if the device is > > open and autosuspended (but it shouldn't do anything if the device is > > suspended). After all, the reason for the autosuspend may have been > > the lack of activity caused by the throttling. > > > > In practice this isn't likely to come up. It would be surprising if > > throttling lasted long enough to cause an autosuspend or if the core > > decided to throttle while the device was autosuspended and hence idle. > > So you say that throttle() should do an autopm_put? You need to be very very sure you cannot lose a byte of data or have the modem lines disrupted in any way if you do that. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Alan Stern on 8 Oct 2009 17:40 On Thu, 8 Oct 2009, Oliver Neukum wrote: > Am Donnerstag, 8. Oktober 2009 22:06:10 schrieb Alan Stern: > > > > > On further thought, unthrottle should autoresume if the device is > > open and autosuspended (but it shouldn't do anything if the device is > > suspended). After all, the reason for the autosuspend may have been > > the lack of activity caused by the throttling. > > > > In practice this isn't likely to come up. It would be surprising if > > throttling lasted long enough to cause an autosuspend or if the core > > decided to throttle while the device was autosuspended and hence idle. > > So you say that throttle() should do an autopm_put? The way you've coded the sierra and option drivers, it's not necessary. Those drivers do an autopm_get_async during submission and an autopm_put_async after the completion of every output URB (and they update the last_busy time in the completion of every input URB). When the driver is throttled no URBs will be submitted, so the usage count will remain at 0 with no effort on the part of throttle(). For other drivers that use the simpler "autoresume on tty install, autosuspend on tty cleanup" approach provided by usb-serial.c, the throttle routines obviously don't need to worry about runtime PM. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 4 5 Prev: linux-next: pci tree build failure Next: rcu: prevent hangs by simplifying rcu_barrier/CPU-hotplug, fix lockdep complaint |