57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 | 
						|
/*
 | 
						|
 * Interfaces for vfio-ccw
 | 
						|
 *
 | 
						|
 * Copyright IBM Corp. 2017
 | 
						|
 *
 | 
						|
 * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _VFIO_CCW_H_
 | 
						|
#define _VFIO_CCW_H_
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
/* used for START SUBCHANNEL, always present */
 | 
						|
struct ccw_io_region {
 | 
						|
#define ORB_AREA_SIZE 12
 | 
						|
	__u8	orb_area[ORB_AREA_SIZE];
 | 
						|
#define SCSW_AREA_SIZE 12
 | 
						|
	__u8	scsw_area[SCSW_AREA_SIZE];
 | 
						|
#define IRB_AREA_SIZE 96
 | 
						|
	__u8	irb_area[IRB_AREA_SIZE];
 | 
						|
	__u32	ret_code;
 | 
						|
} __attribute__((packed));
 | 
						|
 | 
						|
/*
 | 
						|
 * used for processing commands that trigger asynchronous actions
 | 
						|
 * Note: this is controlled by a capability
 | 
						|
 */
 | 
						|
#define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 | 
						|
#define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 | 
						|
struct ccw_cmd_region {
 | 
						|
	__u32 command;
 | 
						|
	__u32 ret_code;
 | 
						|
} __attribute__((packed));
 | 
						|
 | 
						|
/*
 | 
						|
 * Used for processing commands that read the subchannel-information block
 | 
						|
 * Reading this region triggers a stsch() to hardware
 | 
						|
 * Note: this is controlled by a capability
 | 
						|
 */
 | 
						|
struct ccw_schib_region {
 | 
						|
#define SCHIB_AREA_SIZE 52
 | 
						|
	__u8 schib_area[SCHIB_AREA_SIZE];
 | 
						|
} __attribute__((packed));
 | 
						|
 | 
						|
/*
 | 
						|
 * Used for returning a Channel Report Word to userspace.
 | 
						|
 * Note: this is controlled by a capability
 | 
						|
 */
 | 
						|
struct ccw_crw_region {
 | 
						|
	__u32 crw;
 | 
						|
	__u32 pad;
 | 
						|
} __attribute__((packed));
 | 
						|
 | 
						|
#endif
 |