Re: [V2 4/6] platform/x86: Add Intel Software Defined Silicon driver

From: Leon Romanovsky
Date: Wed Dec 08 2021 - 02:15:03 EST


On Tue, Dec 07, 2021 at 09:14:46AM -0800, David E. Box wrote:
> Intel Software Defined Silicon (SDSi) is a post manufacturing mechanism for
> activating additional silicon features. Features are enabled through a
> license activation process. The SDSi driver provides a per socket, sysfs
> attribute interface for applications to perform 3 main provisioning
> functions:
>
> 1. Provision an Authentication Key Certificate (AKC), a key written to
> internal NVRAM that is used to authenticate a capability specific
> activation payload.
>
> 2. Provision a Capability Activation Payload (CAP), a token authenticated
> using the AKC and applied to the CPU configuration to activate a new
> feature.
>
> 3. Read the SDSi State Certificate, containing the CPU configuration
> state.
>
> The operations perform function specific mailbox commands that forward the
> requests to SDSi hardware to perform authentication of the payloads and
> enable the silicon configuration (to be made available after power
> cycling).
>
> The SDSi device itself is enumerated as an auxiliary device from the
> intel_vsec driver and as such has a build dependency on CONFIG_INTEL_VSEC.
>
> Link: https://github.com/intel/intel-sdsi
> Signed-off-by: David E. Box <david.e.box@xxxxxxxxxxxxxxx>
> Reviewed-by: Mark Gross <markgross@xxxxxxxxxx>
> ---
> V2
> - Use sysfs_emit() in guid_show()
> - Fix language in ABI, suggested by Bjorn
> - Fix wrong directory name in ABI doc

<...>

> @@ -0,0 +1,77 @@
> +What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X

<...>

> +static const struct auxiliary_device_id sdsi_aux_id_table[] = {
> + { .name = "intel_vsec.sdsi" },

Are you sure that this sysfs is correct?

Auxiliary bus set device name as a combination of module name plus suffix.

172 int __auxiliary_device_add(struct auxiliary_device *auxdev, const char *modname)
173 {
174 struct device *dev = &auxdev->dev;
175 int ret;
....
181
182 ret = dev_set_name(dev, "%s.%s.%d", modname, auxdev->name, auxdev->id);

Thanks