From: Boris Brezillon <boris.brezillon@collabora.com> To: Arnd Bergmann <arnd@arndb.de> Cc: Vitor Soares <Vitor.Soares@synopsys.com>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, linux-i3c@lists.infradead.org, Jose Abreu <Jose.Abreu@synopsys.com>, Joao Pinto <Joao.Pinto@synopsys.com>, Wolfram Sang <wsa@the-dreams.de>, gregkh <gregkh@linuxfoundation.org>, Boris Brezillon <bbrezillon@kernel.org>, Mark Brown <broonie@kernel.org> Subject: Re: [RFC v2 0/4] Introduce i3c device userspace interface Date: Mon, 17 Feb 2020 17:34:53 +0100 [thread overview] Message-ID: <20200217173453.05829f83@collabora.com> (raw) In-Reply-To: <CAK8P3a2EhRyRG20GqMZjYa_-5X2eMiYk20NdsaXe1qVhy5si=A@mail.gmail.com> On Mon, 17 Feb 2020 17:19:57 +0100 Arnd Bergmann <arnd@arndb.de> wrote: > On Mon, Feb 17, 2020 at 4:36 PM Boris Brezillon > <boris.brezillon@collabora.com> wrote: > > On Mon, 17 Feb 2020 16:06:45 +0100 Arnd Bergmann <arnd@arndb.de> wrote: > > > On Mon, Feb 17, 2020 at 3:51 PM Boris Brezillon > > > <boris.brezillon@collabora.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@synopsys.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).
WARNING: multiple messages have this Message-ID (diff)
From: Boris Brezillon <boris.brezillon@collabora.com> To: Arnd Bergmann <arnd@arndb.de> Cc: Jose Abreu <Jose.Abreu@synopsys.com>, Joao Pinto <Joao.Pinto@synopsys.com>, Wolfram Sang <wsa@the-dreams.de>, gregkh <gregkh@linuxfoundation.org>, Boris Brezillon <bbrezillon@kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Vitor Soares <Vitor.Soares@synopsys.com>, Mark Brown <broonie@kernel.org>, linux-i3c@lists.infradead.org Subject: Re: [RFC v2 0/4] Introduce i3c device userspace interface Date: Mon, 17 Feb 2020 17:34:53 +0100 [thread overview] Message-ID: <20200217173453.05829f83@collabora.com> (raw) In-Reply-To: <CAK8P3a2EhRyRG20GqMZjYa_-5X2eMiYk20NdsaXe1qVhy5si=A@mail.gmail.com> On Mon, 17 Feb 2020 17:19:57 +0100 Arnd Bergmann <arnd@arndb.de> wrote: > On Mon, Feb 17, 2020 at 4:36 PM Boris Brezillon > <boris.brezillon@collabora.com> wrote: > > On Mon, 17 Feb 2020 16:06:45 +0100 Arnd Bergmann <arnd@arndb.de> wrote: > > > On Mon, Feb 17, 2020 at 3:51 PM Boris Brezillon > > > <boris.brezillon@collabora.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@synopsys.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). _______________________________________________ linux-i3c mailing list linux-i3c@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-i3c
next prev parent reply other threads:[~2020-02-17 16:35 UTC|newest] Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-29 12:17 [RFC v2 0/4] Introduce i3c device userspace interface Vitor Soares 2020-01-29 12:17 ` Vitor Soares 2020-01-29 12:17 ` [RFC v2 1/4] i3c: master: export i3c_masterdev_type Vitor Soares 2020-01-29 12:17 ` Vitor Soares 2020-02-17 14:56 ` Boris Brezillon 2020-02-17 14:56 ` Boris Brezillon 2020-02-17 14:59 ` Boris Brezillon 2020-02-17 14:59 ` Boris Brezillon 2020-01-29 12:17 ` [RFC v2 2/4] i3c: master: export i3c_bus_type symbol Vitor Soares 2020-01-29 12:17 ` Vitor Soares 2020-01-29 12:17 ` [RFC v2 3/4] i3c: master: add i3c_for_each_dev helper Vitor Soares 2020-01-29 12:17 ` Vitor Soares 2020-01-29 12:17 ` [RFC v2 4/4] i3c: add i3cdev module to expose i3c dev in /dev Vitor Soares 2020-01-29 12:17 ` Vitor Soares 2020-01-29 14:30 ` Arnd Bergmann 2020-01-29 14:30 ` Arnd Bergmann 2020-01-29 17:00 ` Vitor Soares 2020-01-29 17:00 ` Vitor Soares 2020-01-29 19:39 ` Arnd Bergmann 2020-01-29 19:39 ` Arnd Bergmann 2020-02-04 13:19 ` Vitor Soares 2020-02-04 13:19 ` Vitor Soares 2020-02-17 15:26 ` Boris Brezillon 2020-02-17 15:26 ` Boris Brezillon 2020-02-17 14:51 ` [RFC v2 0/4] Introduce i3c device userspace interface Boris Brezillon 2020-02-17 14:51 ` Boris Brezillon 2020-02-17 15:06 ` Arnd Bergmann 2020-02-17 15:06 ` Arnd Bergmann 2020-02-17 15:36 ` Boris Brezillon 2020-02-17 15:36 ` Boris Brezillon 2020-02-17 15:55 ` Vitor Soares 2020-02-17 15:55 ` Vitor Soares 2020-02-17 16:03 ` gregkh 2020-02-17 16:03 ` gregkh 2020-02-17 16:12 ` Vitor Soares 2020-02-17 16:12 ` Vitor Soares 2020-02-17 16:23 ` Boris Brezillon 2020-02-17 16:23 ` Boris Brezillon 2020-02-17 16:31 ` Arnd Bergmann 2020-02-17 16:31 ` Arnd Bergmann 2020-02-17 17:06 ` Boris Brezillon 2020-02-17 17:06 ` Boris Brezillon 2020-02-17 16:19 ` Arnd Bergmann 2020-02-17 16:19 ` Arnd Bergmann 2020-02-17 16:34 ` Boris Brezillon [this message] 2020-02-17 16:34 ` Boris Brezillon 2020-02-17 15:32 ` Vitor Soares 2020-02-17 15:32 ` Vitor Soares 2020-02-17 15:52 ` Boris Brezillon 2020-02-17 15:52 ` Boris Brezillon 2020-02-17 17:37 ` Boris Brezillon 2020-02-17 17:37 ` Boris Brezillon
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200217173453.05829f83@collabora.com \ --to=boris.brezillon@collabora.com \ --cc=Joao.Pinto@synopsys.com \ --cc=Jose.Abreu@synopsys.com \ --cc=Vitor.Soares@synopsys.com \ --cc=arnd@arndb.de \ --cc=bbrezillon@kernel.org \ --cc=broonie@kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=linux-i3c@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=wsa@the-dreams.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.