1 | /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ |
2 | /* Copyright 2017 IBM Corp. */ |
3 | #ifndef _UAPI_MISC_OCXL_H |
4 | #define _UAPI_MISC_OCXL_H |
5 | |
6 | #include <linux/types.h> |
7 | #include <linux/ioctl.h> |
8 | |
9 | enum ocxl_event_type { |
10 | OCXL_AFU_EVENT_XSL_FAULT_ERROR = 0, |
11 | }; |
12 | |
13 | #define OCXL_KERNEL_EVENT_FLAG_LAST 0x0001 /* This is the last event pending */ |
14 | |
15 | struct { |
16 | __u16 ; |
17 | __u16 ; |
18 | __u32 ; |
19 | }; |
20 | |
21 | struct ocxl_kernel_event_xsl_fault_error { |
22 | __u64 addr; |
23 | __u64 dsisr; |
24 | __u64 count; |
25 | __u64 reserved; |
26 | }; |
27 | |
28 | struct ocxl_ioctl_attach { |
29 | __u64 amr; |
30 | __u64 reserved1; |
31 | __u64 reserved2; |
32 | __u64 reserved3; |
33 | }; |
34 | |
35 | struct ocxl_ioctl_metadata { |
36 | __u16 version; /* struct version, always backwards compatible */ |
37 | |
38 | /* Version 0 fields */ |
39 | __u8 afu_version_major; |
40 | __u8 afu_version_minor; |
41 | __u32 pasid; /* PASID assigned to the current context */ |
42 | |
43 | __u64 pp_mmio_size; /* Per PASID MMIO size */ |
44 | __u64 global_mmio_size; |
45 | |
46 | /* End version 0 fields */ |
47 | |
48 | __u64 reserved[13]; /* Total of 16*u64 */ |
49 | }; |
50 | |
51 | struct ocxl_ioctl_p9_wait { |
52 | __u16 thread_id; /* The thread ID required to wake this thread */ |
53 | __u16 reserved1; |
54 | __u32 reserved2; |
55 | __u64 reserved3[3]; |
56 | }; |
57 | |
58 | #define OCXL_IOCTL_FEATURES_FLAGS0_P9_WAIT 0x01 |
59 | struct ocxl_ioctl_features { |
60 | __u64 flags[4]; |
61 | }; |
62 | |
63 | struct ocxl_ioctl_irq_fd { |
64 | __u64 irq_offset; |
65 | __s32 eventfd; |
66 | __u32 reserved; |
67 | }; |
68 | |
69 | /* ioctl numbers */ |
70 | #define OCXL_MAGIC 0xCA |
71 | /* AFU devices */ |
72 | #define OCXL_IOCTL_ATTACH _IOW(OCXL_MAGIC, 0x10, struct ocxl_ioctl_attach) |
73 | #define OCXL_IOCTL_IRQ_ALLOC _IOR(OCXL_MAGIC, 0x11, __u64) |
74 | #define OCXL_IOCTL_IRQ_FREE _IOW(OCXL_MAGIC, 0x12, __u64) |
75 | #define OCXL_IOCTL_IRQ_SET_FD _IOW(OCXL_MAGIC, 0x13, struct ocxl_ioctl_irq_fd) |
76 | #define OCXL_IOCTL_GET_METADATA _IOR(OCXL_MAGIC, 0x14, struct ocxl_ioctl_metadata) |
77 | #define OCXL_IOCTL_ENABLE_P9_WAIT _IOR(OCXL_MAGIC, 0x15, struct ocxl_ioctl_p9_wait) |
78 | #define OCXL_IOCTL_GET_FEATURES _IOR(OCXL_MAGIC, 0x16, struct ocxl_ioctl_features) |
79 | |
80 | #endif /* _UAPI_MISC_OCXL_H */ |
81 | |