On Tue, Jul 15, 2025 at 04:00:01PM -0700, Daniele Ceraolo Spurio wrote: > The intel GFX drivers (i915/xe) interface with the ME device for some of > their features (e.g. PXP, HDCP) via the component interface. Given that > the MEI device can be hidden by BIOS/Coreboot, the GFX drivers need a > way to check if the device is available before attempting to bind the > component, otherwise they'll go ahead and initialize features that will > never work. > The simplest way to check if the device is available is to check the > available devices against the PCI ID list of the mei_me driver. To avoid > duplication of the list, the function to do such a check is added to > the mei_me driver and exported so that the GFX driver can call it > directly. > > Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospu...@intel.com> > Cc: Alexander Usyskin <alexander.usys...@intel.com> > Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> > --- > drivers/misc/mei/pci-me.c | 17 +++++++++++++++++ > include/linux/mei_me.h | 20 ++++++++++++++++++++ > 2 files changed, 37 insertions(+) > create mode 100644 include/linux/mei_me.h > > diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c > index 3f9c60b579ae..16e9a11eb286 100644 > --- a/drivers/misc/mei/pci-me.c > +++ b/drivers/misc/mei/pci-me.c > @@ -18,6 +18,7 @@ > #include <linux/pm_runtime.h> > > #include <linux/mei.h> > +#include <linux/mei_me.h> > > #include "mei_dev.h" > #include "client.h" > @@ -133,6 +134,22 @@ static const struct pci_device_id mei_me_pci_tbl[] = { > > MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl); > > +/** > + * mei_me_device_present - check if an ME device is present on the system > + * > + * Other drivers (e.g., i915, xe) interface with the ME device for some of > their > + * features (e.g., PXP, HDCP). However, the ME device can be hidden by > + * BIOS/coreboot, so this function offers a way for those drivers to check if > + * the device is available before attempting to interface with it. > + * > + * Return: true if an ME device is available, false otherwise > + */ > +bool mei_me_device_present(void) > +{ > + return pci_dev_present(mei_me_pci_tbl);
And what happens if the device goes away right after you call this? > +} > +EXPORT_SYMBOL(mei_me_device_present); EXPORT_SYMBOL_GPL()? I have to ask, sorry. And where is patch 2/2? thanks, greg k-h