History

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.

Christophe Lombard committed 10 years ago

Commit 594ff7d1 parent 47528768 files · +653 −5Browse files

Showing the changes to include/uapi (1 of 8 files). Show all

Unified · Split

include/uapi/misc/cxl.h+24−0
@@ -55,11 +55,35 @@ struct cxl_afu_id { · 54 unmodified lines
5555 __u64 reserved6;
5656 };
5757
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+
67+struct 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+
5878 /* ioctl numbers */
5979 #define CXL_MAGIC 0xCA
80+/* AFU devices */
6081 #define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work)
6182 #define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32)
6283 #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)
6387
6488 #define CXL_READ_MIN_SIZE 0x1000 /* 4K */
6589

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t