xref: /linux/include/uapi/linux/vfio_ccw.h (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2060d2b5aSDong Jia Shi /*
3060d2b5aSDong Jia Shi  * Interfaces for vfio-ccw
4060d2b5aSDong Jia Shi  *
5060d2b5aSDong Jia Shi  * Copyright IBM Corp. 2017
6060d2b5aSDong Jia Shi  *
7060d2b5aSDong Jia Shi  * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
8060d2b5aSDong Jia Shi  */
9060d2b5aSDong Jia Shi 
10060d2b5aSDong Jia Shi #ifndef _VFIO_CCW_H_
11060d2b5aSDong Jia Shi #define _VFIO_CCW_H_
12060d2b5aSDong Jia Shi 
13060d2b5aSDong Jia Shi #include <linux/types.h>
14060d2b5aSDong Jia Shi 
15d5afd5d1SCornelia Huck /* used for START SUBCHANNEL, always present */
16060d2b5aSDong Jia Shi struct ccw_io_region {
17060d2b5aSDong Jia Shi #define ORB_AREA_SIZE 12
18060d2b5aSDong Jia Shi 	__u8	orb_area[ORB_AREA_SIZE];
19060d2b5aSDong Jia Shi #define SCSW_AREA_SIZE 12
20060d2b5aSDong Jia Shi 	__u8	scsw_area[SCSW_AREA_SIZE];
21060d2b5aSDong Jia Shi #define IRB_AREA_SIZE 96
22060d2b5aSDong Jia Shi 	__u8	irb_area[IRB_AREA_SIZE];
23060d2b5aSDong Jia Shi 	__u32	ret_code;
24060d2b5aSDong Jia Shi } __packed;
25060d2b5aSDong Jia Shi 
26d5afd5d1SCornelia Huck /*
27d5afd5d1SCornelia Huck  * used for processing commands that trigger asynchronous actions
28d5afd5d1SCornelia Huck  * Note: this is controlled by a capability
29d5afd5d1SCornelia Huck  */
30d5afd5d1SCornelia Huck #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
31d5afd5d1SCornelia Huck #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
32d5afd5d1SCornelia Huck struct ccw_cmd_region {
33d5afd5d1SCornelia Huck 	__u32 command;
34d5afd5d1SCornelia Huck 	__u32 ret_code;
35d5afd5d1SCornelia Huck } __packed;
36d5afd5d1SCornelia Huck 
3724c98674SFarhan Ali /*
3824c98674SFarhan Ali  * Used for processing commands that read the subchannel-information block
3924c98674SFarhan Ali  * Reading this region triggers a stsch() to hardware
4024c98674SFarhan Ali  * Note: this is controlled by a capability
4124c98674SFarhan Ali  */
4224c98674SFarhan Ali struct ccw_schib_region {
4324c98674SFarhan Ali #define SCHIB_AREA_SIZE 52
4424c98674SFarhan Ali 	__u8 schib_area[SCHIB_AREA_SIZE];
4524c98674SFarhan Ali } __packed;
4624c98674SFarhan Ali 
47*d8cac29bSFarhan Ali /*
48*d8cac29bSFarhan Ali  * Used for returning a Channel Report Word to userspace.
49*d8cac29bSFarhan Ali  * Note: this is controlled by a capability
50*d8cac29bSFarhan Ali  */
51*d8cac29bSFarhan Ali struct ccw_crw_region {
52*d8cac29bSFarhan Ali 	__u32 crw;
53*d8cac29bSFarhan Ali 	__u32 pad;
54*d8cac29bSFarhan Ali } __packed;
55*d8cac29bSFarhan Ali 
56060d2b5aSDong Jia Shi #endif
57