linux/arch/powerpc/include/uapi/asm/papr-indices.h
Haren Myneni 43d869ac25 powerpc/pseries: Define papr_indices_io_block for papr-indices ioctls
To issue ibm,get-indices, ibm,set-dynamic-indicator and
ibm,get-dynamic-sensor-state in the user space, the RMO buffer is
allocated for the work area which is restricted under system
lockdown. So instead of user space execution, the kernel will
provide /dev/papr-indices interface to execute these RTAS calls.

The user space assigns data in papr_indices_io_block struct
depends on the specific HCALL and passes to the following ioctls:

PAPR_INDICES_IOC_GET:		Use for ibm,get-indices. Returns a
				get-indices handle fd to read data.
PAPR_DYNAMIC_SENSOR_IOC_GET:	Use for  ibm,get-dynamic-sensor-state.
				Updates the sensor state in
				papr_indices_io_block.dynamic_param.state

PAPR_DYNAMIC_INDICATOR_IOC_SET:	Use for ibm,set-dynamic-indicator.
				Sets the new state for the input
				indicator.

Signed-off-by: Haren Myneni <haren@linux.ibm.com>
Tested-by: Sathvika Vasireddy <sv@linux.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20250416225743.596462-3-haren@linux.ibm.com
2025-04-17 11:42:29 +05:30

41 lines
1.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_PAPR_INDICES_H_
#define _UAPI_PAPR_INDICES_H_
#include <linux/types.h>
#include <asm/ioctl.h>
#include <asm/papr-miscdev.h>
#define LOC_CODE_SIZE 80
#define RTAS_GET_INDICES_BUF_SIZE SZ_4K
struct papr_indices_io_block {
union {
struct {
__u8 is_sensor; /* 0 for indicator and 1 for sensor */
__u32 indice_type;
} indices;
struct {
__u32 token; /* Sensor or indicator token */
__u32 state; /* get / set state */
/*
* PAPR+ 12.3.2.4 Converged Location Code Rules - Length
* Restrictions. 79 characters plus null.
*/
char location_code_str[LOC_CODE_SIZE]; /* location code */
} dynamic_param;
};
};
/*
* ioctls for /dev/papr-indices.
* PAPR_INDICES_IOC_GET: Returns a get-indices handle fd to read data
* PAPR_DYNAMIC_SENSOR_IOC_GET: Gets the state of the input sensor
* PAPR_DYNAMIC_INDICATOR_IOC_SET: Sets the new state for the input indicator
*/
#define PAPR_INDICES_IOC_GET _IOW(PAPR_MISCDEV_IOC_ID, 3, struct papr_indices_io_block)
#define PAPR_DYNAMIC_SENSOR_IOC_GET _IOWR(PAPR_MISCDEV_IOC_ID, 4, struct papr_indices_io_block)
#define PAPR_DYNAMIC_INDICATOR_IOC_SET _IOW(PAPR_MISCDEV_IOC_ID, 5, struct papr_indices_io_block)
#endif /* _UAPI_PAPR_INDICES_H_ */