aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/misc
diff options
context:
space:
mode:
authorChristophe Lombard <clombard@linux.vnet.ibm.com>2016-03-04 06:26:38 -0500
committerMichael Ellerman <mpe@ellerman.id.au>2016-03-09 07:39:56 -0500
commit594ff7d067ca42676e27e2a7b5dcc0ff039d08ca (patch)
tree45824c4fb92c9450b86bfbb9ff19a0dd17cd2c93 /include/uapi/misc
parent4752876c71701b7663a5ded789058ab2c05f7d0f (diff)
cxl: Support to flash a new image on the adapter from a guest
The new flash.c file contains the logic to flash a new image on the adapter, through a hcall. It is an iterative process, with chunks of data of 1M at a time. There are also 2 phases: write and verify. The flash operation itself is driven from a user-land tool. Once flashing is successful, an rtas call is made to update the device tree with the new properties values for the adapter and the AFU(s) Add a new char device for the adapter, so that the flash tool can access the card, even if there is no valid AFU on it. Co-authored-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Signed-off-by: Christophe Lombard <clombard@linux.vnet.ibm.com> Reviewed-by: Manoj Kumar <manoj@linux.vnet.ibm.com> Acked-by: Ian Munsie <imunsie@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'include/uapi/misc')
-rw-r--r--include/uapi/misc/cxl.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/uapi/misc/cxl.h b/include/uapi/misc/cxl.h
index 1e889aa8a36e..8cd334f99ddc 100644
--- a/include/uapi/misc/cxl.h
+++ b/include/uapi/misc/cxl.h
@@ -55,11 +55,35 @@ struct cxl_afu_id {
55 __u64 reserved6; 55 __u64 reserved6;
56}; 56};
57 57
58/* base adapter image header is included in the image */
59#define CXL_AI_NEED_HEADER 0x0000000000000001ULL
60#define CXL_AI_ALL CXL_AI_NEED_HEADER
61
62#define CXL_AI_HEADER_SIZE 128
63#define CXL_AI_BUFFER_SIZE 4096
64#define CXL_AI_MAX_ENTRIES 256
65#define CXL_AI_MAX_CHUNK_SIZE (CXL_AI_BUFFER_SIZE * CXL_AI_MAX_ENTRIES)
66
67struct cxl_adapter_image {
68 __u64 flags;
69 __u64 data;
70 __u64 len_data;
71 __u64 len_image;
72 __u64 reserved1;
73 __u64 reserved2;
74 __u64 reserved3;
75 __u64 reserved4;
76};
77
58/* ioctl numbers */ 78/* ioctl numbers */
59#define CXL_MAGIC 0xCA 79#define CXL_MAGIC 0xCA
80/* AFU devices */
60#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work) 81#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work)
61#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32) 82#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32)
62#define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id) 83#define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id)
84/* adapter devices */
85#define CXL_IOCTL_DOWNLOAD_IMAGE _IOW(CXL_MAGIC, 0x0A, struct cxl_adapter_image)
86#define CXL_IOCTL_VALIDATE_IMAGE _IOW(CXL_MAGIC, 0x0B, struct cxl_adapter_image)
63 87
64#define CXL_READ_MIN_SIZE 0x1000 /* 4K */ 88#define CXL_READ_MIN_SIZE 0x1000 /* 4K */
65 89