On Thu, Sep 11, 2025 at 10:50:23AM -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 ME 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, this patch adds an exported function that the GFX driver
> can call to obtain the list. Locking around the checks, if required,
> is left to the caller.
> 
> 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 | 22 ++++++++++++++++++++++
>  include/linux/mei_me.h    | 20 ++++++++++++++++++++
>  2 files changed, 42 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..147e79b4ae1f 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,27 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
>  
>  MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl);
>  
> +/**
> + * mei_me_get_device_id_table - get the list of ME pci device IDs
> + *
> + * 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 unplugged via 
> the
> + * pci subsystem or hidden by BIOS/coreboot, so those drivers might want to
> + * check if the device is available before initializing those features. This
> + * function offers a way for those drivers to get the list of ME device IDs,
> + * so they can check if one of them is available before attempting to
> + * interface with it. Locking around the availability check, if required,
> + * is left to the caller.
> + *
> + * Return: An array of struct pci_device_id entries containing the IDs of
> + * the ME devices.
> + */
> +const struct pci_device_id *mei_me_get_device_id_table(void)
> +{
> +     return mei_me_pci_tbl;
> +}
> +EXPORT_SYMBOL_GPL(mei_me_get_device_id_table);

Why not just do:

        EXPORT_SYMBOL_GPL(mei_me_pci_tbl);

instead?

Much simpler :)

thanks,

greg k-h

Reply via email to