From: "José Expósito" <jose.exposito89@gmail.com>
To: Louis Chauvet <louis.chauvet@bootlin.com>
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org, "Lyude Paul" <lyude@redhat.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Alexander Lobakin" <aleksander.lobakin@intel.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Lukas Wunner" <lukas@wunner.de>,
"Mark Brown" <broonie@kernel.org>,
"Maíra Canal" <mairacanal@riseup.net>,
"Robin Murphy" <robin.murphy@arm.com>,
"Simona Vetter" <simona.vetter@ffwll.ch>,
"Zijun Hu" <quic_zijuhu@quicinc.com>,
linux-usb@vger.kernel.org, rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v4 0/9] Driver core: Add faux bus devices
Date: Fri, 28 Feb 2025 12:27:54 +0100 [thread overview]
Message-ID: <Z8Gduj1cDdCYzaBY@fedora> (raw)
In-Reply-To: <7d196a91-220a-41a5-8577-198b436d8440@bootlin.com>
Hi everyone,
Thanks for CCing me Louis,
On Thu, Feb 27, 2025 at 02:06:21PM +0100, Louis Chauvet wrote:
>
>
> Le 10/02/2025 à 13:30, Greg Kroah-Hartman a écrit :
> > For years/decades now, I've been complaining when I see people use
> > platform devices for things that are obviously NOT platform devices.
> > To finally fix this up, here is a "faux bus" that should be used instead
> > of a platform device for these tiny and "fake" devices that people
> > create all over the place.
> >
> > The api is even simpler than the normal platform device api, just two
> > functions, one to create a device and one to remove it. When a device
> > is created, if a probe/release callback is offered, they will be called
> > at the proper time in the device's lifecycle. When finished with the
> > device, just destroy it and all should be good.
> >
> > This simple api should also hopefully provide for a simple rust binding
> > to it given the simple rules and lifecycle of the pointer passed back
> > from the creation function (i.e. it is alive and valid for as long as
> > you have not called destroy on it.)
> >
> > I've also converted four different examples of platform device abuse, the
> > dummy regulator driver, the USB phy code, the x86 microcode dvice, and
> > the "regulator" device that wifi uses to load the firmware tables, to
> > use this api. In all cases, the logic either was identical, or became
> > simpler, than before, a good sign (side note, a bug was fixed in the usb
> > phy code that no one ever noticed before).
> >
> > Note, unless there are major objections, I'm leaning toward getting
> > patch 1 and 2 of this series merged during this -rc cycle so that all of
> > the individual driver subsystem cleanups can go through those subsystems
> > as needed, as well as allowing the rust developers to create a binding
> > and get that merged easier. Having patch 1 merged on its own isn't
> > going to cause any changes if no one uses it, so that should be fine.
>
> Hi all,
>
> I have a maybe dumb question regarding the patches 3..9: do they break the
> UAPI?
I made a quick test with drm_info [1] and VKMS is not listed after moving
it to the faux bus. As far as I can tell, the reason is that drmGetDevices()
doesn't return the devices in the faux bus.
However, as drm_info is designed to list information as close as it is provided
by libdrm, I'm not sure if this should be considered a regressions or not.
Just for reference, Mutter handles the bus change correctly, and it uses
udev [2]. I think I should do something similar in my IGT tests and use udev
instead of drmGetDevices().
[1] https://gitlab.freedesktop.org/emersion/drm_info
[2] https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/backends/meta-udev.c?ref_type=heads#L174
> With a platform device, the drivers appear under /sys/bus/platform, but with
> faux device, they appear under /sys/bus/faux.
>
> I ask because I found out that one (see my reply to [2]) of the main drm
> library expects to find all the devices under pci, usb, platform, virtio and
> host1x buses [1], so at least for the vgem and vkms driver, this library
> will be broken (it will not crash, but previously detected devices will
> suddenly disappear).
>
> I don't know what are the rules for /sys/bus, but changing a device from one
> bus to another seems to break userspace programs. How should we handle this
> situation? Should we fix the existing drivers? Or only new drivers should
> use it?
>
> +CC: José Expósito
>
> Thanks,
> Louis Chauvet
>
> [1]:https://gitlab.freedesktop.org/mesa/drm/-/blob/main/xf86drm.c#L4460-4515
> [2]:https://lore.kernel.org/all/20250218165011.9123-21-jose.exposito89@gmail.com/
>
> > Changes from v4:
> > - really dropped the internal name structure, remanants were left over
> > from the last patch series
> > - added the rust binding patch from Lyude (is this one of the first
> > patch series that adds a new kernel api AND the rust binding at the
> > same time?)
> > - added a parent pointer to the api so the devices can be in the tree
> > if the caller wants them
> > - made probe synchronous to prevent race when using the api (when the
> > create call returns the device is fully ready to go.) Thanks to
> > testing of the drm driver change to find this issue.
> > - documentation tweaks
> > - #include <linux/container_of.h> finally added to faux.h
> >
> >
> > Changes from v3:
> > - Dropped the USB phy porting, turned out to be incorrect, it really
> > did need a platform device
> > - converted more drivers to the faux_device api (tlclk, lis3lv02d,
> > vgem, and vkms)
> > - collected some reviewed-by
> > - lots of minor tweaks of the faux.c api, and documentation based on
> > review, see the changelog in patch 1 for details.
> >
> > Changes from v2:
> > - lots of cleanups to faux.c based on reviews, see patch 1 for details
> > - actually tested the destroy device path, it worked first try!
> > - added 3 more example drivers
> >
> >
> >
> > Greg Kroah-Hartman (8):
> > driver core: add a faux bus for use when a simple device/bus is needed
> > regulator: dummy: convert to use the faux device interface
> > x86/microcode: move away from using a fake platform device
> > wifi: cfg80211: move away from using a fake platform device
> > tlclk: convert to use faux_device
> > misc: lis3lv02d: convert to use faux_device
> > drm/vgem/vgem_drv convert to use faux_device
> > drm/vkms: convert to use faux_device
In regard of the VKMS patch, in Documentation/gpu/vkms.rst, "IGT_DEVICE" needs
to be updated to point to the new path. It can be done in this series or I can
send a follow up patch.
Best wishes,
Jose
> >
> > Lyude Paul (1):
> > rust/kernel: Add faux device bindings
> >
> > Documentation/driver-api/infrastructure.rst | 6 +
> > MAINTAINERS | 2 +
> > arch/x86/kernel/cpu/microcode/core.c | 14 +-
> > drivers/base/Makefile | 2 +-
> > drivers/base/base.h | 1 +
> > drivers/base/faux.c | 232 ++++++++++++++++++++
> > drivers/base/init.c | 1 +
> > drivers/char/tlclk.c | 32 +--
> > drivers/gpu/drm/vgem/vgem_drv.c | 30 +--
> > drivers/gpu/drm/vkms/vkms_drv.c | 28 +--
> > drivers/gpu/drm/vkms/vkms_drv.h | 4 +-
> > drivers/misc/lis3lv02d/lis3lv02d.c | 26 +--
> > drivers/misc/lis3lv02d/lis3lv02d.h | 4 +-
> > drivers/regulator/dummy.c | 37 +---
> > include/linux/device/faux.h | 69 ++++++
> > net/wireless/reg.c | 28 +--
> > rust/bindings/bindings_helper.h | 1 +
> > rust/kernel/faux.rs | 67 ++++++
> > rust/kernel/lib.rs | 1 +
> > samples/rust/Kconfig | 10 +
> > samples/rust/Makefile | 1 +
> > samples/rust/rust_driver_faux.rs | 29 +++
> > 22 files changed, 502 insertions(+), 123 deletions(-)
> > create mode 100644 drivers/base/faux.c
> > create mode 100644 include/linux/device/faux.h
> > create mode 100644 rust/kernel/faux.rs
> > create mode 100644 samples/rust/rust_driver_faux.rs
> >
>
> --
> Louis Chauvet, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
prev parent reply other threads:[~2025-02-28 11:27 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-10 12:30 [PATCH v4 0/9] Driver core: Add faux bus devices Greg Kroah-Hartman
2025-02-10 12:30 ` [PATCH v4 1/9] driver core: add a faux bus for use when a simple device/bus is needed Greg Kroah-Hartman
2025-02-10 14:29 ` Kurt Borja
2025-02-10 14:45 ` Greg Kroah-Hartman
2025-02-10 14:58 ` Kurt Borja
2025-02-10 15:36 ` Greg Kroah-Hartman
2025-02-10 15:52 ` Kurt Borja
2025-02-11 5:50 ` Greg Kroah-Hartman
2025-02-11 20:06 ` Lyude Paul
2025-02-11 21:57 ` Kurt Borja
2025-02-11 15:29 ` Zijun Hu
2025-02-11 15:49 ` Kurt Borja
2025-02-12 7:39 ` Greg Kroah-Hartman
2025-02-10 17:56 ` Kurt Borja
2025-02-11 7:27 ` Greg Kroah-Hartman
2025-02-11 7:33 ` Greg Kroah-Hartman
2025-02-11 7:43 ` Kurt Borja
2025-02-11 8:17 ` Greg Kroah-Hartman
2025-02-11 8:36 ` Kurt Borja
2025-02-11 2:49 ` Zijun Hu
2025-02-10 12:30 ` [PATCH v4 2/9] rust/kernel: Add faux device bindings Greg Kroah-Hartman
2025-02-10 16:32 ` Benno Lossin
2025-02-10 18:18 ` Danilo Krummrich
2025-02-11 5:52 ` Greg Kroah-Hartman
2025-02-10 18:41 ` Lyude Paul
2025-02-10 21:31 ` Danilo Krummrich
2025-02-12 14:58 ` Gary Guo
2025-02-10 12:30 ` [PATCH v4 3/9] regulator: dummy: convert to use the faux device interface Greg Kroah-Hartman
2025-02-10 12:30 ` [PATCH v4 4/9] x86/microcode: move away from using a fake platform device Greg Kroah-Hartman
2025-02-10 12:30 ` [PATCH v4 5/9] wifi: cfg80211: " Greg Kroah-Hartman
2025-02-10 12:30 ` [PATCH v4 6/9] tlclk: convert to use faux_device Greg Kroah-Hartman
2025-02-10 12:30 ` [PATCH v4 7/9] misc: lis3lv02d: " Greg Kroah-Hartman
2025-02-10 12:30 ` [PATCH v4 8/9] drm/vgem/vgem_drv " Greg Kroah-Hartman
2025-02-25 11:38 ` Thomas Zimmermann
2025-02-26 8:18 ` Thomas Zimmermann
2025-02-10 12:30 ` [PATCH v4 9/9] drm/vkms: " Greg Kroah-Hartman
2025-02-10 14:37 ` Louis Chauvet
2025-02-10 14:49 ` Greg Kroah-Hartman
2025-02-25 11:41 ` Thomas Zimmermann
2025-02-25 13:51 ` Louis Chauvet
2025-02-26 10:07 ` Greg Kroah-Hartman
2025-03-11 17:20 ` José Expósito
2025-03-11 17:24 ` José Expósito
2025-03-12 6:22 ` Greg KH
2025-03-13 14:22 ` Simona Vetter
2025-03-13 17:20 ` José Expósito
2025-06-13 8:15 ` Thomas Zimmermann
2025-06-13 11:55 ` José Expósito
2025-06-13 12:33 ` Thomas Zimmermann
2025-06-13 15:28 ` José Expósito
2025-06-13 15:39 ` Thomas Zimmermann
2025-02-27 13:06 ` [PATCH v4 0/9] Driver core: Add faux bus devices Louis Chauvet
2025-02-27 15:18 ` Andy Shevchenko
2025-02-27 15:30 ` Greg Kroah-Hartman
2025-02-28 10:38 ` Simona Vetter
2025-02-28 11:27 ` José Expósito [this message]
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=Z8Gduj1cDdCYzaBY@fedora \
--to=jose.exposito89@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=aleksander.lobakin@intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=broonie@kernel.org \
--cc=dakr@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=louis.chauvet@bootlin.com \
--cc=lukas@wunner.de \
--cc=lyude@redhat.com \
--cc=mairacanal@riseup.net \
--cc=quic_zijuhu@quicinc.com \
--cc=rafael@kernel.org \
--cc=robin.murphy@arm.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona.vetter@ffwll.ch \
/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: link
Be 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.