Message ID | 20200723144530.9992-1-mathias.nyman@linux.intel.com (mailing list archive) |
---|---|
Headers | show |
Series | xhci features for usb-next | expand |
On Thu, Jul 23, 2020 at 05:45:03PM +0300, Mathias Nyman wrote: > Hi Greg > > This series for usb-next is almost completely about decoupling and > cleaning up relations between xhci, xhci debug capability (DbC), > and the DbC tty support. > > Real motivation behind this is to later turn DbC into a proper device > allowing us to bind different drivers to it, like dbctty. I don't really understand why you want to do that, but ok :) What is that going to help with? thanks, greg k-h
On 23.7.2020 18.04, Greg KH wrote: > On Thu, Jul 23, 2020 at 05:45:03PM +0300, Mathias Nyman wrote: >> Hi Greg >> >> This series for usb-next is almost completely about decoupling and >> cleaning up relations between xhci, xhci debug capability (DbC), >> and the DbC tty support. >> >> Real motivation behind this is to later turn DbC into a proper device >> allowing us to bind different drivers to it, like dbctty. > > I don't really understand why you want to do that, but ok :) Well to be fair loading different drivers for DbC isn't the only motivation. Just using the Linux device model solves issues we are currently seeing when using DbC on systems with several xHCI controllers. The original DbC implementation didn't take this into account. And as a bigger picture DbC is just one extended capability. xHC controller provides a list of support extended capabilities, each one with an ID and often a mmio region (inside xhci mmio range). We don't handle these consistently in the xhci driver, for example the role switch capability is currently turned into a platform device while the DbC capability support is squashed all into the xhci driver. Long term idea here would be to create a extended capability bus where each capability is a device, (child of xhci device) and drivers for these match based on the capability ID. > > What is that going to help with? The option to load other drivers for the DbC capability will help other developers to write "standard" Linux drivers that provide different interfaces than TTY to send data over DbC. I don't fully understand these TTY limitations myself, but there is a strong push to implement this, and the task to provide the infrastructure for this landed on my table. Thanks -Mathias
On Thu, Jul 23, 2020 at 09:47:14PM +0300, Mathias Nyman wrote: > On 23.7.2020 18.04, Greg KH wrote: > > On Thu, Jul 23, 2020 at 05:45:03PM +0300, Mathias Nyman wrote: > >> Hi Greg > >> > >> This series for usb-next is almost completely about decoupling and > >> cleaning up relations between xhci, xhci debug capability (DbC), > >> and the DbC tty support. > >> > >> Real motivation behind this is to later turn DbC into a proper device > >> allowing us to bind different drivers to it, like dbctty. > > > > I don't really understand why you want to do that, but ok :) > > Well to be fair loading different drivers for DbC isn't the only motivation. > > Just using the Linux device model solves issues we are currently seeing > when using DbC on systems with several xHCI controllers. The original DbC > implementation didn't take this into account. I thought when that was first merged no one cared :) Nice to see that fixed here. > And as a bigger picture DbC is just one extended capability. > xHC controller provides a list of support extended capabilities, each one > with an ID and often a mmio region (inside xhci mmio range). > We don't handle these consistently in the xhci driver, for example > the role switch capability is currently turned into a platform device > while the DbC capability support is squashed all into the xhci driver. > > Long term idea here would be to create a extended capability bus where each > capability is a device, (child of xhci device) and drivers for these match > based on the capability ID. Odd, but ok. > > What is that going to help with? > > The option to load other drivers for the DbC capability will help other > developers to write "standard" Linux drivers that provide different interfaces > than TTY to send data over DbC. > > I don't fully understand these TTY limitations myself, but there is a strong push > to implement this, and the task to provide the infrastructure for this landed > on my table. What other interface is asked for? And yes, I would push back, what is wrong with TTY here? It should be the most "low overhead" interface that works with common userspace tools that we have. thanks, greg k-h
On 24.7.2020 10.06, Greg KH wrote: > On Thu, Jul 23, 2020 at 09:47:14PM +0300, Mathias Nyman wrote: >> On 23.7.2020 18.04, Greg KH wrote: >>> On Thu, Jul 23, 2020 at 05:45:03PM +0300, Mathias Nyman wrote: >>>> Hi Greg >>>> >>>> This series for usb-next is almost completely about decoupling and >>>> cleaning up relations between xhci, xhci debug capability (DbC), >>>> and the DbC tty support. >>>> >>>> Real motivation behind this is to later turn DbC into a proper device >>>> allowing us to bind different drivers to it, like dbctty. >>> >>> I don't really understand why you want to do that, but ok :) >> >> Well to be fair loading different drivers for DbC isn't the only motivation. >> >> Just using the Linux device model solves issues we are currently seeing >> when using DbC on systems with several xHCI controllers. The original DbC >> implementation didn't take this into account. > > I thought when that was first merged no one cared :) > > Nice to see that fixed here. > >> And as a bigger picture DbC is just one extended capability. >> xHC controller provides a list of support extended capabilities, each one >> with an ID and often a mmio region (inside xhci mmio range). >> We don't handle these consistently in the xhci driver, for example >> the role switch capability is currently turned into a platform device >> while the DbC capability support is squashed all into the xhci driver. >> >> Long term idea here would be to create a extended capability bus where each >> capability is a device, (child of xhci device) and drivers for these match >> based on the capability ID. > > Odd, but ok. Suggestions and other approaches are welcome. > >>> What is that going to help with? >> >> The option to load other drivers for the DbC capability will help other >> developers to write "standard" Linux drivers that provide different interfaces >> than TTY to send data over DbC. >> >> I don't fully understand these TTY limitations myself, but there is a strong push >> to implement this, and the task to provide the infrastructure for this landed >> on my table. > > What other interface is asked for? And yes, I would push back, what is > wrong with TTY here? It should be the most "low overhead" interface > that works with common userspace tools that we have. I've been asking the same questions about the TTY limitations. Currently there's a driver providing a character device in development. The developers are aware that they need to clarify and justify the need for a new interface to get the driver upstream. My concerns and suggestions are noted. As I don't understand these TTY limitations I'll have to let people publishing the driver do this part. I expect that the driver will clarify things. Anyway, I rather support them and work on providing the infrastructure needed to write such a driver, and give them the opportunity to implement whatever is needed. Thanks Mathias
On Fri, Jul 24, 2020 at 02:11:44PM +0300, Mathias Nyman wrote: > > What other interface is asked for? And yes, I would push back, what is > > wrong with TTY here? It should be the most "low overhead" interface > > that works with common userspace tools that we have. > > I've been asking the same questions about the TTY limitations. > > Currently there's a driver providing a character device in development. > The developers are aware that they need to clarify and justify the need for a > new interface to get the driver upstream. My concerns and suggestions are noted. > > As I don't understand these TTY limitations I'll have to let people publishing the > driver do this part. I expect that the driver will clarify things. > > Anyway, I rather support them and work on providing the infrastructure needed > to write such a driver, and give them the opportunity to implement whatever is needed. Don't add frameworks for no users. Making this a char driver is not going to fly with me, I think I remember seeing old patches that tried to do this in the past that were submitted to some random Android kernel, and they just did not make any sense. It is easier to hide custom ioctls (i.e. custom syscalls) in a char driver than it is in a tty driver, so don't fall into that trap :) good luck! greg k-h