@@ -468,12 +468,21 @@ struct vfio_iommu_spapr_tce_info {
* - unfreeze IO/DMA for frozen PE;
* - read PE state;
* - reset PE;
- * - configure PE.
+ * - configure PE;
+ * - inject EEH error.
*/
+struct vfio_eeh_pe_err {
+ __u32 type;
+ __u32 func;
+ __u64 addr;
+ __u64 mask;
+};
+
struct vfio_eeh_pe_op {
__u32 argsz;
__u32 flags;
__u32 op;
+ __u8 data[];
};
#define VFIO_EEH_PE_DISABLE 0 /* Disable EEH functionality */
@@ -490,6 +499,29 @@ struct vfio_eeh_pe_op {
#define VFIO_EEH_PE_RESET_HOT 6 /* Assert hot reset */
#define VFIO_EEH_PE_RESET_FUNDAMENTAL 7 /* Assert fundamental reset */
#define VFIO_EEH_PE_CONFIGURE 8 /* PE configuration */
+#define VFIO_EEH_PE_INJECT_ERR 9 /* Inject EEH error */
+#define VFIO_EEH_ERR_TYPE_32 0 /* 32-bits EEH error type */
+#define VFIO_EEH_ERR_TYPE_64 1 /* 64-bits EEH error type */
+#define VFIO_EEH_ERR_FUNC_LD_MEM_ADDR 0 /* Memory load */
+#define VFIO_EEH_ERR_FUNC_LD_MEM_DATA 1
+#define VFIO_EEH_ERR_FUNC_LD_IO_ADDR 2 /* IO load */
+#define VFIO_EEH_ERR_FUNC_LD_IO_DATA 3
+#define VFIO_EEH_ERR_FUNC_LD_CFG_ADDR 4 /* Config load */
+#define VFIO_EEH_ERR_FUNC_LD_CFG_DATA 5
+#define VFIO_EEH_ERR_FUNC_ST_MEM_ADDR 6 /* Memory store */
+#define VFIO_EEH_ERR_FUNC_ST_MEM_DATA 7
+#define VFIO_EEH_ERR_FUNC_ST_IO_ADDR 8 /* IO store */
+#define VFIO_EEH_ERR_FUNC_ST_IO_DATA 9
+#define VFIO_EEH_ERR_FUNC_ST_CFG_ADDR 10 /* Config store */
+#define VFIO_EEH_ERR_FUNC_ST_CFG_DATA 11
+#define VFIO_EEH_ERR_FUNC_DMA_RD_ADDR 12 /* DMA read */
+#define VFIO_EEH_ERR_FUNC_DMA_RD_DATA 13
+#define VFIO_EEH_ERR_FUNC_DMA_RD_MASTER 14
+#define VFIO_EEH_ERR_FUNC_DMA_RD_TARGET 15
+#define VFIO_EEH_ERR_FUNC_DMA_WR_ADDR 16 /* DMA write */
+#define VFIO_EEH_ERR_FUNC_DMA_WR_DATA 17
+#define VFIO_EEH_ERR_FUNC_DMA_WR_MASTER 18
+#define VFIO_EEH_ERR_FUNC_DMA_WR_TARGET 19
#define VFIO_EEH_PE_OP _IO(VFIO_TYPE, VFIO_BASE + 21)
The patch synchronizes vfio.h with the kernel to support EEH error injection. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> --- linux-headers/linux/vfio.h | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-)