brintos

brintos / linux-shallow public Read only

0
0
Text · 6.6 KiB · d200465 Raw
201 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Copyright 2015 IBM Corp.4 */5 6#ifndef _HCALLS_H7#define _HCALLS_H8 9#include <linux/types.h>10#include <asm/byteorder.h>11#include <asm/hvcall.h>12#include "cxl.h"13 14#define SG_BUFFER_SIZE 409615#define SG_MAX_ENTRIES 25616 17struct sg_list {18	u64 phys_addr;19	u64 len;20};21 22/*23 * This is straight out of PAPR, but replacing some of the compound fields with24 * a single field, where they were identical to the register layout.25 *26 * The 'flags' parameter regroups the various bit-fields27 */28#define CXL_PE_CSRP_VALID			(1ULL << 63)29#define CXL_PE_PROBLEM_STATE			(1ULL << 62)30#define CXL_PE_SECONDARY_SEGMENT_TBL_SRCH	(1ULL << 61)31#define CXL_PE_TAGS_ACTIVE			(1ULL << 60)32#define CXL_PE_USER_STATE			(1ULL << 59)33#define CXL_PE_TRANSLATION_ENABLED		(1ULL << 58)34#define CXL_PE_64_BIT				(1ULL << 57)35#define CXL_PE_PRIVILEGED_PROCESS		(1ULL << 56)36 37#define CXL_PROCESS_ELEMENT_VERSION 138struct cxl_process_element_hcall {39	__be64 version;40	__be64 flags;41	u8     reserved0[12];42	__be32 pslVirtualIsn;43	u8     applicationVirtualIsnBitmap[256];44	u8     reserved1[144];45	struct cxl_process_element_common common;46	u8     reserved4[12];47} __packed;48 49#define H_STATE_NORMAL              150#define H_STATE_DISABLE             251#define H_STATE_TEMP_UNAVAILABLE    352#define H_STATE_PERM_UNAVAILABLE    453 54/* NOTE: element must be a logical real address, and must be pinned */55long cxl_h_attach_process(u64 unit_address, struct cxl_process_element_hcall *element,56			u64 *process_token, u64 *mmio_addr, u64 *mmio_size);57 58/**59 * cxl_h_detach_process - Detach a process element from a coherent60 *                        platform function.61 */62long cxl_h_detach_process(u64 unit_address, u64 process_token);63 64/**65 * cxl_h_reset_afu - Perform a reset to the coherent platform function.66 */67long cxl_h_reset_afu(u64 unit_address);68 69/**70 * cxl_h_suspend_process - Suspend a process from being executed71 * Parameter1 = process-token as returned from H_ATTACH_CA_PROCESS when72 *              process was attached.73 */74long cxl_h_suspend_process(u64 unit_address, u64 process_token);75 76/**77 * cxl_h_resume_process - Resume a process to be executed78 * Parameter1 = process-token as returned from H_ATTACH_CA_PROCESS when79 *              process was attached.80 */81long cxl_h_resume_process(u64 unit_address, u64 process_token);82 83/**84 * cxl_h_read_error_state - Reads the error state of the coherent85 *                          platform function.86 * R4 contains the error state87 */88long cxl_h_read_error_state(u64 unit_address, u64 *state);89 90/**91 * cxl_h_get_afu_err - collect the AFU error buffer92 * Parameter1 = byte offset into error buffer to retrieve, valid values93 *              are between 0 and (ibm,error-buffer-size - 1)94 * Parameter2 = 4K aligned real address of error buffer, to be filled in95 * Parameter3 = length of error buffer, valid values are 4K or less96 */97long cxl_h_get_afu_err(u64 unit_address, u64 offset, u64 buf_address, u64 len);98 99/**100 * cxl_h_get_config - collect configuration record for the101 *                    coherent platform function102 * Parameter1 = # of configuration record to retrieve, valid values are103 *              between 0 and (ibm,#config-records - 1)104 * Parameter2 = byte offset into configuration record to retrieve,105 *              valid values are between 0 and (ibm,config-record-size - 1)106 * Parameter3 = 4K aligned real address of configuration record buffer,107 *              to be filled in108 * Parameter4 = length of configuration buffer, valid values are 4K or less109 */110long cxl_h_get_config(u64 unit_address, u64 cr_num, u64 offset,111		u64 buf_address, u64 len);112 113/**114 * cxl_h_terminate_process - Terminate the process before completion115 * Parameter1 = process-token as returned from H_ATTACH_CA_PROCESS when116 *              process was attached.117 */118long cxl_h_terminate_process(u64 unit_address, u64 process_token);119 120/**121 * cxl_h_collect_vpd - Collect VPD for the coherent platform function.122 * Parameter1 = # of VPD record to retrieve, valid values are between 0123 *              and (ibm,#config-records - 1).124 * Parameter2 = 4K naturally aligned real buffer containing block125 *              list entries126 * Parameter3 = number of block list entries in the block list, valid127 *              values are between 0 and 256128 */129long cxl_h_collect_vpd(u64 unit_address, u64 record, u64 list_address,130		       u64 num, u64 *out);131 132/**133 * cxl_h_get_fn_error_interrupt - Read the function-wide error data based on an interrupt134 */135long cxl_h_get_fn_error_interrupt(u64 unit_address, u64 *reg);136 137/**138 * cxl_h_ack_fn_error_interrupt - Acknowledge function-wide error data139 *                                based on an interrupt140 * Parameter1 = value to write to the function-wide error interrupt register141 */142long cxl_h_ack_fn_error_interrupt(u64 unit_address, u64 value);143 144/**145 * cxl_h_get_error_log - Retrieve the Platform Log ID (PLID) of146 *                       an error log147 */148long cxl_h_get_error_log(u64 unit_address, u64 value);149 150/**151 * cxl_h_collect_int_info - Collect interrupt info about a coherent152 *                          platform function after an interrupt occurred.153 */154long cxl_h_collect_int_info(u64 unit_address, u64 process_token,155			struct cxl_irq_info *info);156 157/**158 * cxl_h_control_faults - Control the operation of a coherent platform159 *                        function after a fault occurs.160 *161 * Parameters162 *    control-mask: value to control the faults163 *                  looks like PSL_TFC_An shifted >> 32164 *    reset-mask: mask to control reset of function faults165 *                Set reset_mask = 1 to reset PSL errors166 */167long cxl_h_control_faults(u64 unit_address, u64 process_token,168			u64 control_mask, u64 reset_mask);169 170/**171 * cxl_h_reset_adapter - Perform a reset to the coherent platform facility.172 */173long cxl_h_reset_adapter(u64 unit_address);174 175/**176 * cxl_h_collect_vpd - Collect VPD for the coherent platform function.177 * Parameter1 = 4K naturally aligned real buffer containing block178 *              list entries179 * Parameter2 = number of block list entries in the block list, valid180 *              values are between 0 and 256181 */182long cxl_h_collect_vpd_adapter(u64 unit_address, u64 list_address,183			       u64 num, u64 *out);184 185/**186 * cxl_h_download_adapter_image - Download the base image to the coherent187 *                                platform facility.188 */189long cxl_h_download_adapter_image(u64 unit_address,190				  u64 list_address, u64 num,191				  u64 *out);192 193/**194 * cxl_h_validate_adapter_image - Validate the base image in the coherent195 *                                platform facility.196 */197long cxl_h_validate_adapter_image(u64 unit_address,198				  u64 list_address, u64 num,199				  u64 *out);200#endif /* _HCALLS_H */201