Re: [PATCH v3 23/40] cxl/core: Emit modalias for CXL devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 23 Jan 2022 16:30:41 -0800
Dan Williams <dan.j.williams@xxxxxxxxx> wrote:

> In order to enable libkmod lookups for CXL device objects to their
> corresponding module, add 'modalias' to the base attribute of CXL
> devices.
> 
> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
Looks fine to me.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>

> ---
>  Documentation/ABI/testing/sysfs-bus-cxl |    9 +++++++++
>  drivers/cxl/core/port.c                 |   26 +++++++++++++++++---------
>  2 files changed, 26 insertions(+), 9 deletions(-)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl
> index 0b6a2e6e8fbb..6d8cbf3355b5 100644
> --- a/Documentation/ABI/testing/sysfs-bus-cxl
> +++ b/Documentation/ABI/testing/sysfs-bus-cxl
> @@ -34,6 +34,15 @@ Description:
>  		the same value communicated in the DEVTYPE environment variable
>  		for uevents for devices on the "cxl" bus.
>  
> +What:		/sys/bus/cxl/devices/*/modalias
> +Date:		December, 2021
> +KernelVersion:	v5.18
> +Contact:	linux-cxl@xxxxxxxxxxxxxxx
> +Description:
> +		CXL device objects export the modalias attribute which mirrors
> +		the same value communicated in the MODALIAS environment variable
> +		for uevents for devices on the "cxl" bus.
> +
>  What:		/sys/bus/cxl/devices/portX/uport
>  Date:		June, 2021
>  KernelVersion:	v5.14
> diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
> index 72633865b386..eede0bbe687a 100644
> --- a/drivers/cxl/core/port.c
> +++ b/drivers/cxl/core/port.c
> @@ -34,8 +34,25 @@ static ssize_t devtype_show(struct device *dev, struct device_attribute *attr,
>  }
>  static DEVICE_ATTR_RO(devtype);
>  
> +static int cxl_device_id(struct device *dev)
> +{
> +	if (dev->type == &cxl_nvdimm_bridge_type)
> +		return CXL_DEVICE_NVDIMM_BRIDGE;
> +	if (dev->type == &cxl_nvdimm_type)
> +		return CXL_DEVICE_NVDIMM;
> +	return 0;
> +}
> +
> +static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
> +			     char *buf)
> +{
> +	return sysfs_emit(buf, CXL_MODALIAS_FMT "\n", cxl_device_id(dev));
> +}
> +static DEVICE_ATTR_RO(modalias);
> +
>  static struct attribute *cxl_base_attributes[] = {
>  	&dev_attr_devtype.attr,
> +	&dev_attr_modalias.attr,
>  	NULL,
>  };
>  
> @@ -845,15 +862,6 @@ void cxl_driver_unregister(struct cxl_driver *cxl_drv)
>  }
>  EXPORT_SYMBOL_NS_GPL(cxl_driver_unregister, CXL);
>  
> -static int cxl_device_id(struct device *dev)
> -{
> -	if (dev->type == &cxl_nvdimm_bridge_type)
> -		return CXL_DEVICE_NVDIMM_BRIDGE;
> -	if (dev->type == &cxl_nvdimm_type)
> -		return CXL_DEVICE_NVDIMM;
> -	return 0;
> -}
> -
>  static int cxl_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
>  {
>  	return add_uevent_var(env, "MODALIAS=" CXL_MODALIAS_FMT,
> 




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux