lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 17 Feb 2020 17:34:53 +0100 From: Boris Brezillon <boris.brezillon@...labora.com> To: Arnd Bergmann <arnd@...db.de> Cc: Vitor Soares <Vitor.Soares@...opsys.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, linux-i3c@...ts.infradead.org, Jose Abreu <Jose.Abreu@...opsys.com>, Joao Pinto <Joao.Pinto@...opsys.com>, Wolfram Sang <wsa@...-dreams.de>, gregkh <gregkh@...uxfoundation.org>, Boris Brezillon <bbrezillon@...nel.org>, Mark Brown <broonie@...nel.org> Subject: Re: [RFC v2 0/4] Introduce i3c device userspace interface On Mon, 17 Feb 2020 17:19:57 +0100 Arnd Bergmann <arnd@...db.de> wrote: > On Mon, Feb 17, 2020 at 4:36 PM Boris Brezillon > <boris.brezillon@...labora.com> wrote: > > On Mon, 17 Feb 2020 16:06:45 +0100 Arnd Bergmann <arnd@...db.de> wrote: > > > On Mon, Feb 17, 2020 at 3:51 PM Boris Brezillon > > > <boris.brezillon@...labora.com> wrote: > > > > Sorry for taking so long to reply, and thanks for working on that topic. > > > > > > > > On Wed, 29 Jan 2020 13:17:31 +0100 > > > > Vitor Soares <Vitor.Soares@...opsys.com> wrote: > > > > > > > > > For today there is no way to use i3c devices from user space and > > > > > the introduction of such API will help developers during the i3c device > > > > > or i3c host controllers development. > > > > > > > > > > The i3cdev module is highly based on i2c-dev and yet I tried to address > > > > > the concerns raised in [1]. > > > > > > > > > > NOTES: > > > > > - The i3cdev dynamically request an unused major number. > > > > > > > > > > - The i3c devices are dynamically exposed/removed from dev/ folder based > > > > > on if they have a device driver bound to it. > > > > > > > > May I ask why you need to automatically bind devices to the i3cdev > > > > driver when they don't have a driver matching the device id > > > > loaded/compiled-in? If we get the i3c subsystem to generate proper > > > > uevents we should be able to load the i3cdev module and bind the device > > > > to this driver using a udev rule. > > > > > > I think that would require manual configuration to ensure that the correct > > > set of devices get bound to either the userspace driver or an in-kernel > > > driver. > > > > Hm, isn't that what udev is supposed to do anyway? Remember that > > I3C devices expose a manufacturer and part-id (which are similar to the > > USB vendor and product ids), so deciding when an I3C device should be > > bound to the i3cdev driver should be fairly easy, and that's a > > per-device decision anyway. > > > > > The method from the current patch series is more complicated, > > > but it means that any device can be accessed by the user space driver > > > as long as it's not already owned by a kernel driver. > > > > Well, I'm more worried about the extra churn this auto-binding logic > > might create for the common 'on-demand driver loading' use case. At > > first, there's no driver matching a specific device, but userspace > > might load one based on the uevents it receives. With the current > > approach, that means we'd first have to unbind the device before > > loading the driver. AFAICT, no other subsystem does that. > > As I understand it, this is handled by the patches: when a new device > shows up, this triggers the creation of the userspace interface and > also the event that leads to the kernel driver to get loaded. If there > is a kernel driver for the device, that should still load and bind to the > device, at which point the user space interface will go away again. Yep, that's what I figured after having a closer look at the code. > > This may waste CPU cycles for first creating and then destroying > the user space interface, but I don't see how it requires extra work. > If it does require manual configuration or unbinding, that would > indeed be a bad design. To be honest, I had something less invasive in mind. Something closer to what spidev provides (a driver that can expose I3C devices to userspace when explicitly requested). I see now that the USB subsystem does something similar to what's done here, but I'm wondering if it's really worth it in the I3C case. As I said in my previous reply, I expect i3cdev to be used when experimenting or when kernel-space driver is not an option (licensing/security issues).
Powered by blists - more mailing lists