1dd873966SEric Auger /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 274c98e20SCornelia Huck /* 374c98e20SCornelia Huck * Interfaces for vfio-ccw 474c98e20SCornelia Huck * 574c98e20SCornelia Huck * Copyright IBM Corp. 2017 674c98e20SCornelia Huck * 774c98e20SCornelia Huck * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> 874c98e20SCornelia Huck */ 974c98e20SCornelia Huck 1074c98e20SCornelia Huck #ifndef _VFIO_CCW_H_ 1174c98e20SCornelia Huck #define _VFIO_CCW_H_ 1274c98e20SCornelia Huck 1374c98e20SCornelia Huck #include <linux/types.h> 1474c98e20SCornelia Huck 15d9cb4336SCornelia Huck /* used for START SUBCHANNEL, always present */ 1674c98e20SCornelia Huck struct ccw_io_region { 1774c98e20SCornelia Huck #define ORB_AREA_SIZE 12 1874c98e20SCornelia Huck __u8 orb_area[ORB_AREA_SIZE]; 1974c98e20SCornelia Huck #define SCSW_AREA_SIZE 12 2074c98e20SCornelia Huck __u8 scsw_area[SCSW_AREA_SIZE]; 2174c98e20SCornelia Huck #define IRB_AREA_SIZE 96 2274c98e20SCornelia Huck __u8 irb_area[IRB_AREA_SIZE]; 2374c98e20SCornelia Huck __u32 ret_code; 2474c98e20SCornelia Huck } __attribute__((packed)); 2574c98e20SCornelia Huck 26d9cb4336SCornelia Huck /* 27d9cb4336SCornelia Huck * used for processing commands that trigger asynchronous actions 28d9cb4336SCornelia Huck * Note: this is controlled by a capability 29d9cb4336SCornelia Huck */ 30d9cb4336SCornelia Huck #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0) 31d9cb4336SCornelia Huck #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1) 32d9cb4336SCornelia Huck struct ccw_cmd_region { 33d9cb4336SCornelia Huck __u32 command; 34d9cb4336SCornelia Huck __u32 ret_code; 35d9cb4336SCornelia Huck } __attribute__((packed)); 36d9cb4336SCornelia Huck 37*f76b348eSCornelia Huck /* 38*f76b348eSCornelia Huck * Used for processing commands that read the subchannel-information block 39*f76b348eSCornelia Huck * Reading this region triggers a stsch() to hardware 40*f76b348eSCornelia Huck * Note: this is controlled by a capability 41*f76b348eSCornelia Huck */ 42*f76b348eSCornelia Huck struct ccw_schib_region { 43*f76b348eSCornelia Huck #define SCHIB_AREA_SIZE 52 44*f76b348eSCornelia Huck __u8 schib_area[SCHIB_AREA_SIZE]; 45*f76b348eSCornelia Huck } __attribute__((packed)); 46*f76b348eSCornelia Huck 47*f76b348eSCornelia Huck /* 48*f76b348eSCornelia Huck * Used for returning a Channel Report Word to userspace. 49*f76b348eSCornelia Huck * Note: this is controlled by a capability 50*f76b348eSCornelia Huck */ 51*f76b348eSCornelia Huck struct ccw_crw_region { 52*f76b348eSCornelia Huck __u32 crw; 53*f76b348eSCornelia Huck __u32 pad; 54*f76b348eSCornelia Huck } __attribute__((packed)); 55*f76b348eSCornelia Huck 5674c98e20SCornelia Huck #endif 57