15ef3166eSFrederic Barrat /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 25ef3166eSFrederic Barrat /* Copyright 2017 IBM Corp. */ 35ef3166eSFrederic Barrat #ifndef _UAPI_MISC_OCXL_H 45ef3166eSFrederic Barrat #define _UAPI_MISC_OCXL_H 55ef3166eSFrederic Barrat 65ef3166eSFrederic Barrat #include <linux/types.h> 75ef3166eSFrederic Barrat #include <linux/ioctl.h> 85ef3166eSFrederic Barrat 95ef3166eSFrederic Barrat enum ocxl_event_type { 105ef3166eSFrederic Barrat OCXL_AFU_EVENT_XSL_FAULT_ERROR = 0, 115ef3166eSFrederic Barrat }; 125ef3166eSFrederic Barrat 135ef3166eSFrederic Barrat #define OCXL_KERNEL_EVENT_FLAG_LAST 0x0001 /* This is the last event pending */ 145ef3166eSFrederic Barrat 155ef3166eSFrederic Barrat struct ocxl_kernel_event_header { 165ef3166eSFrederic Barrat __u16 type; 175ef3166eSFrederic Barrat __u16 flags; 185ef3166eSFrederic Barrat __u32 reserved; 195ef3166eSFrederic Barrat }; 205ef3166eSFrederic Barrat 215ef3166eSFrederic Barrat struct ocxl_kernel_event_xsl_fault_error { 225ef3166eSFrederic Barrat __u64 addr; 235ef3166eSFrederic Barrat __u64 dsisr; 245ef3166eSFrederic Barrat __u64 count; 255ef3166eSFrederic Barrat __u64 reserved; 265ef3166eSFrederic Barrat }; 275ef3166eSFrederic Barrat 285ef3166eSFrederic Barrat struct ocxl_ioctl_attach { 295ef3166eSFrederic Barrat __u64 amr; 305ef3166eSFrederic Barrat __u64 reserved1; 315ef3166eSFrederic Barrat __u64 reserved2; 325ef3166eSFrederic Barrat __u64 reserved3; 335ef3166eSFrederic Barrat }; 345ef3166eSFrederic Barrat 3507c5ccd7SAlastair D'Silva struct ocxl_ioctl_metadata { 36*2305ff22SMasahiro Yamada __u16 version; /* struct version, always backwards compatible */ 3707c5ccd7SAlastair D'Silva 38*2305ff22SMasahiro Yamada /* Version 0 fields */ 3907c5ccd7SAlastair D'Silva __u8 afu_version_major; 4007c5ccd7SAlastair D'Silva __u8 afu_version_minor; 41*2305ff22SMasahiro Yamada __u32 pasid; /* PASID assigned to the current context */ 4207c5ccd7SAlastair D'Silva 43*2305ff22SMasahiro Yamada __u64 pp_mmio_size; /* Per PASID MMIO size */ 4407c5ccd7SAlastair D'Silva __u64 global_mmio_size; 4507c5ccd7SAlastair D'Silva 46*2305ff22SMasahiro Yamada /* End version 0 fields */ 4707c5ccd7SAlastair D'Silva 48*2305ff22SMasahiro Yamada __u64 reserved[13]; /* Total of 16*u64 */ 4907c5ccd7SAlastair D'Silva }; 5007c5ccd7SAlastair D'Silva 51e948e06fSAlastair D'Silva struct ocxl_ioctl_p9_wait { 52*2305ff22SMasahiro Yamada __u16 thread_id; /* The thread ID required to wake this thread */ 53e948e06fSAlastair D'Silva __u16 reserved1; 54e948e06fSAlastair D'Silva __u32 reserved2; 55e948e06fSAlastair D'Silva __u64 reserved3[3]; 56e948e06fSAlastair D'Silva }; 57e948e06fSAlastair D'Silva 5802a8e5bcSAlastair D'Silva #define OCXL_IOCTL_FEATURES_FLAGS0_P9_WAIT 0x01 5902a8e5bcSAlastair D'Silva struct ocxl_ioctl_features { 6002a8e5bcSAlastair D'Silva __u64 flags[4]; 6102a8e5bcSAlastair D'Silva }; 6202a8e5bcSAlastair D'Silva 63aeddad17SFrederic Barrat struct ocxl_ioctl_irq_fd { 64aeddad17SFrederic Barrat __u64 irq_offset; 65aeddad17SFrederic Barrat __s32 eventfd; 66aeddad17SFrederic Barrat __u32 reserved; 67aeddad17SFrederic Barrat }; 68aeddad17SFrederic Barrat 695ef3166eSFrederic Barrat /* ioctl numbers */ 705ef3166eSFrederic Barrat #define OCXL_MAGIC 0xCA 715ef3166eSFrederic Barrat /* AFU devices */ 725ef3166eSFrederic Barrat #define OCXL_IOCTL_ATTACH _IOW(OCXL_MAGIC, 0x10, struct ocxl_ioctl_attach) 73aeddad17SFrederic Barrat #define OCXL_IOCTL_IRQ_ALLOC _IOR(OCXL_MAGIC, 0x11, __u64) 74aeddad17SFrederic Barrat #define OCXL_IOCTL_IRQ_FREE _IOW(OCXL_MAGIC, 0x12, __u64) 75aeddad17SFrederic Barrat #define OCXL_IOCTL_IRQ_SET_FD _IOW(OCXL_MAGIC, 0x13, struct ocxl_ioctl_irq_fd) 7607c5ccd7SAlastair D'Silva #define OCXL_IOCTL_GET_METADATA _IOR(OCXL_MAGIC, 0x14, struct ocxl_ioctl_metadata) 77e948e06fSAlastair D'Silva #define OCXL_IOCTL_ENABLE_P9_WAIT _IOR(OCXL_MAGIC, 0x15, struct ocxl_ioctl_p9_wait) 7802a8e5bcSAlastair D'Silva #define OCXL_IOCTL_GET_FEATURES _IOR(OCXL_MAGIC, 0x16, struct ocxl_ioctl_features) 795ef3166eSFrederic Barrat 805ef3166eSFrederic Barrat #endif /* _UAPI_MISC_OCXL_H */ 81