Re: [PATCH] firmware: dmi: Add access to the SKU ID string

From: Vinod Koul
Date: Tue Apr 24 2018 - 22:47:00 EST


On Tue, Apr 24, 2018 at 03:11:11PM -0600, Simon Glass wrote:
> This is used in some systems from user space for determining the identity
> of the device.
>
> Expose this as a file so that that user-space tools don't need to read
> from /sys/firmware/dmi/tables/DMI

sysfs is an ABI and needs to be documented, I don't see that in this patch,
pls add.

>
> Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>
> ---
>
> drivers/firmware/dmi-id.c | 2 ++
> drivers/firmware/dmi_scan.c | 1 +
> include/linux/mod_devicetable.h | 1 +
> 3 files changed, 4 insertions(+)
>
> diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
> index 951b6c79f166a..fe78c7f801163 100644
> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -48,6 +48,7 @@ DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION);
> DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL);
> DEFINE_DMI_ATTR_WITH_SHOW(product_uuid, 0400, DMI_PRODUCT_UUID);
> DEFINE_DMI_ATTR_WITH_SHOW(product_family, 0444, DMI_PRODUCT_FAMILY);
> +DEFINE_DMI_ATTR_WITH_SHOW(product_sku, 0444, DMI_PRODUCT_SKU);
> DEFINE_DMI_ATTR_WITH_SHOW(board_vendor, 0444, DMI_BOARD_VENDOR);
> DEFINE_DMI_ATTR_WITH_SHOW(board_name, 0444, DMI_BOARD_NAME);
> DEFINE_DMI_ATTR_WITH_SHOW(board_version, 0444, DMI_BOARD_VERSION);
> @@ -193,6 +194,7 @@ static void __init dmi_id_init_attr_table(void)
> ADD_DMI_ATTR(product_serial, DMI_PRODUCT_SERIAL);
> ADD_DMI_ATTR(product_uuid, DMI_PRODUCT_UUID);
> ADD_DMI_ATTR(product_family, DMI_PRODUCT_FAMILY);
> + ADD_DMI_ATTR(product_sku, DMI_PRODUCT_SKU);
> ADD_DMI_ATTR(board_vendor, DMI_BOARD_VENDOR);
> ADD_DMI_ATTR(board_name, DMI_BOARD_NAME);
> ADD_DMI_ATTR(board_version, DMI_BOARD_VERSION);
> diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
> index 54e66adef2525..f2483548cde92 100644
> --- a/drivers/firmware/dmi_scan.c
> +++ b/drivers/firmware/dmi_scan.c
> @@ -447,6 +447,7 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy)
> dmi_save_ident(dm, DMI_PRODUCT_VERSION, 6);
> dmi_save_ident(dm, DMI_PRODUCT_SERIAL, 7);
> dmi_save_uuid(dm, DMI_PRODUCT_UUID, 8);
> + dmi_save_ident(dm, DMI_PRODUCT_SKU, 25);
> dmi_save_ident(dm, DMI_PRODUCT_FAMILY, 26);
> break;
> case 2: /* Base Board Information */
> diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
> index 7d361be2e24f4..cb8487e29d3ae 100644
> --- a/include/linux/mod_devicetable.h
> +++ b/include/linux/mod_devicetable.h
> @@ -491,6 +491,7 @@ enum dmi_field {
> DMI_PRODUCT_SERIAL,
> DMI_PRODUCT_UUID,
> DMI_PRODUCT_FAMILY,
> + DMI_PRODUCT_SKU,
> DMI_BOARD_VENDOR,
> DMI_BOARD_NAME,
> DMI_BOARD_VERSION,
> --
> 2.17.0.484.g0c8726318c-goog
>

--
~Vinod