[PATCH v9 0/7] Add character devices for indices, platform-dump
Sathvika Vasireddy
sv at linux.ibm.com
Wed Mar 19 19:37:55 AEDT 2025
On 3/15/25 2:57 PM, Haren Myneni wrote:
> Several APIs such as rtas_get_indices(), rtas_get_dynamic_sensor(),
> rtas_set_dynamic_indicator(), rtas_platform_dump() and
> rtas_physical_attestation() provided by librtas library are
> implemented in user space using rtas syscall in combination with
> writable mappings of /dev/mem. But this implementation is not
> compatible with system lockdown which prohibits /dev/mem access.
> The current kernel already provides char based driver interfaces
> for several RTAS calls such as VPD and system parameters to
> support lockdown feature.
>
> This patch series adds new char based drivers, /dev/papr-indices
> for ibm,get-indices, ibm,get-dynamic-sensor-state and
> ibm,set-dynamic-indicator RTAS Calls. /dev/papr-platform-dump
> for ibm,platform-dump and /dev/papr-physical-attestation
> fir ibm,physical-attestation. Providing the similar
> open/ioctl/read interfaces to the user space as in the case of
> VPD and system parameters.
>
> I have made changes to librtas library to use the new kernel
> interfaces if the corresponding device entry is available.
>
> This patch series has the following patches:
> powerpc/pseries: Define common functions for RTAS sequence calls
> - For some of sequence based RTAS calls, the OS should not start
> another sequence with different input until the previous sequence
> is completed. So the sequence should be completed during ioctl()
> and expose the entire buffer during read(). ibm,get-indices is
> sequence based RTAS function similar to ibm,get-vpd and we already
> have the corresponding implementation for VPD driver. So update
> papr_rtas_sequence struct for RTAS call specific functions and move
> the top level sequence functions in to a separate file.
>
> powerpc/pseries: Define papr_indices_io_block for papr-indices ioctls
> - /dev/papr-indices driver supports ibm,get-indices,
> ibm,get-dynamic-sensor-state and ibm,set-dynamic-indicator RTAS Calls.
> papr-indices.h introduces 3 different ioctls for these RTAS calls and
> the corresponding ioctl input buffer.
>
> powerpc/pseries: Add papr-indices char driver for ibm,get-indices
> - Introduce /dev/papr-indices char based driver and add support for
> get-indices RTAS function
>
> powerpc/pseries: Add ibm,set-dynamic-indicator RTAS call support
> - Update /dev/papr-indices for set-dynamic-indicator RTAS function
>
> powerpc/pseries: Add ibm,get-dynamic-sensor-state RTAS call support
> - Update /dev/papr-indices for get-dynamic-sensor-state RTAS function
>
> powerpc/pseries: Add papr-platform-dump character driver for dump
> retrieval
> - Introduce /dev/papr-platform-dump char driver and adds support for
> ibm,platform-dump. Received suggestions from the previous post as a
> separate patch - Updated the patch with invalidating the dump using
> a separate ioctl.
>
> powerpc/pseries: Add a char driver for papr-physical-attestation RTAS
> - Introduce /dev/papr-physical-attestation char driver to provide
> kernel interface for ibm,physical-attestation RTAS function.
>
> Thanks to Sathvika Vasireddy for testing these kernel APIs with various
> tools.
>
> Changelog:
> v9:
> - Fixed syntax issue in papr-rtas-common.c as reported by
> Mukesh Kumar Chaurasiya
>
> v8:
> - Fixed build warnings for the proper function parameter descriptions
> (vpd_sequence_begin(), few papr_rtas_*() functions, and etc) as
> reported by kernel test robot<lkp at intel.com>
>
> v7:
> - Pass the proper next value to the subsequent RTAS calls for the
> get-indices sequence RTAS.
> (Vasireddy Sathvika found this bug).
>
> v6:
> - Define the proper command ID for PAPR_PHY_ATTEST_IOC_HANDLE ioctl
> - Update ioctls description in ioctl-number.rst.
>
> v5:
> - Return with -EINPROGRESS in papr_platform_dump_invalidate_ioctl()
> if the complete dump is not read (Suggested by Michal Suchánek).
>
> v4:
> - Include patch "Add char driver for papr-physical-attestation RTAS"
> in this series. ibm,physical-attestation is sequence based RTAS
> call and the implementation is also similar to ibm,get-vpd and
> ibm,get-indices.
>
> v3:
> - put_unused_fd() only after get_unused_fd() successful for the failure
> case later ("Add papr-platform-dump character driver for dump
> retrieval" patch).
>
> v2:
> - Added unlock rtas_ibm_set_dynamic_indicator_lock and
> rtas_ibm_get_dynamic_sensor_state_lock mutex for failure cases
> as reported by Dan Carpenter
> - Fixed build warnings for the proper function parameter descriptions
> as reported by kernel test robot<lkp at intel.com>
>
> Haren Myneni (7):
> powerpc/pseries: Define common functions for RTAS sequence calls
> powerpc/pseries: Define papr_indices_io_block for papr-indices ioctls
> powerpc/pseries: Add papr-indices char driver for ibm,get-indices
> powerpc/pseries: Add ibm,set-dynamic-indicator RTAS call support
> powerpc/pseries: Add ibm,get-dynamic-sensor-state RTAS call support
> powerpc/pseries: Add papr-platform-dump character driver for dump
> retrieval
> powerpc/pseries: Add a char driver for physical-attestation RTAS
>
> .../userspace-api/ioctl/ioctl-number.rst | 6 +
> arch/powerpc/include/asm/rtas.h | 4 +
> arch/powerpc/include/uapi/asm/papr-indices.h | 41 ++
> .../uapi/asm/papr-physical-attestation.h | 31 ++
> .../include/uapi/asm/papr-platform-dump.h | 15 +
> arch/powerpc/kernel/rtas.c | 8 +-
> arch/powerpc/platforms/pseries/Makefile | 3 +-
> arch/powerpc/platforms/pseries/papr-indices.c | 488 ++++++++++++++++++
> .../platforms/pseries/papr-phy-attest.c | 288 +++++++++++
> .../platforms/pseries/papr-platform-dump.c | 411 +++++++++++++++
> .../platforms/pseries/papr-rtas-common.c | 311 +++++++++++
> .../platforms/pseries/papr-rtas-common.h | 61 +++
> arch/powerpc/platforms/pseries/papr-vpd.c | 351 ++-----------
> 13 files changed, 1706 insertions(+), 312 deletions(-)
> create mode 100644 arch/powerpc/include/uapi/asm/papr-indices.h
> create mode 100644 arch/powerpc/include/uapi/asm/papr-physical-attestation.h
> create mode 100644 arch/powerpc/include/uapi/asm/papr-platform-dump.h
> create mode 100644 arch/powerpc/platforms/pseries/papr-indices.c
> create mode 100644 arch/powerpc/platforms/pseries/papr-phy-attest.c
> create mode 100644 arch/powerpc/platforms/pseries/papr-platform-dump.c
> create mode 100644 arch/powerpc/platforms/pseries/papr-rtas-common.c
> create mode 100644 arch/powerpc/platforms/pseries/papr-rtas-common.h
Userspace tools that use these interfaces are displaying consistent
results across old/new librtas and kernel combinations.
For this series:
Tested-by: Sathvika Vasireddy <sv at linux.ibm.com>
Thanks,
Sathvika
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20250319/d052a3db/attachment.htm>
More information about the Linuxppc-dev
mailing list