1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 #ifndef _ASM_POWERPC_PAPR_SYSPARM_H 3 #define _ASM_POWERPC_PAPR_SYSPARM_H 4 5 #include <uapi/asm/papr-sysparm.h> 6 7 typedef struct { 8 u32 token; 9 } papr_sysparm_t; 10 11 #define mk_papr_sysparm(x_) ((papr_sysparm_t){ .token = x_, }) 12 13 /* 14 * Derived from the "Defined Parameters" table in PAPR 7.3.16 System 15 * Parameters Option. Where the spec says "characteristics", we use 16 * "attrs" in the symbolic names to keep them from getting too 17 * unwieldy. 18 */ 19 #define PAPR_SYSPARM_SHARED_PROC_LPAR_ATTRS mk_papr_sysparm(20) 20 #define PAPR_SYSPARM_PROC_MODULE_INFO mk_papr_sysparm(43) 21 #define PAPR_SYSPARM_COOP_MEM_OVERCOMMIT_ATTRS mk_papr_sysparm(44) 22 #define PAPR_SYSPARM_TLB_BLOCK_INVALIDATE_ATTRS mk_papr_sysparm(50) 23 #define PAPR_SYSPARM_LPAR_NAME mk_papr_sysparm(55) 24 25 /** 26 * struct papr_sysparm_buf - RTAS work area layout for system parameter functions. 27 * 28 * This is the memory layout of the buffers passed to/from 29 * ibm,get-system-parameter and ibm,set-system-parameter. It is 30 * distinct from the papr_sysparm_io_block structure that is passed 31 * between user space and the kernel. 32 */ 33 struct papr_sysparm_buf { 34 __be16 len; 35 u8 val[PAPR_SYSPARM_MAX_OUTPUT]; 36 }; 37 38 struct papr_sysparm_buf *papr_sysparm_buf_alloc(void); 39 void papr_sysparm_buf_free(struct papr_sysparm_buf *buf); 40 int papr_sysparm_set(papr_sysparm_t param, const struct papr_sysparm_buf *buf); 41 int papr_sysparm_get(papr_sysparm_t param, struct papr_sysparm_buf *buf); 42 43 #endif /* _ASM_POWERPC_PAPR_SYSPARM_H */ 44