1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * VFIO Region definitions for ZPCI devices 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright IBM Corp. 2020 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Author(s): Pierre Morel <pmorel@linux.ibm.com> 8*4882a593Smuzhiyun * Matthew Rosato <mjrosato@linux.ibm.com> 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef _VFIO_ZDEV_H_ 12*4882a593Smuzhiyun #define _VFIO_ZDEV_H_ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include <linux/types.h> 15*4882a593Smuzhiyun #include <linux/vfio.h> 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /** 18*4882a593Smuzhiyun * VFIO_DEVICE_INFO_CAP_ZPCI_BASE - Base PCI Function information 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * This capability provides a set of descriptive information about the 21*4882a593Smuzhiyun * associated PCI function. 22*4882a593Smuzhiyun */ 23*4882a593Smuzhiyun struct vfio_device_info_cap_zpci_base { 24*4882a593Smuzhiyun struct vfio_info_cap_header header; 25*4882a593Smuzhiyun __u64 start_dma; /* Start of available DMA addresses */ 26*4882a593Smuzhiyun __u64 end_dma; /* End of available DMA addresses */ 27*4882a593Smuzhiyun __u16 pchid; /* Physical Channel ID */ 28*4882a593Smuzhiyun __u16 vfn; /* Virtual function number */ 29*4882a593Smuzhiyun __u16 fmb_length; /* Measurement Block Length (in bytes) */ 30*4882a593Smuzhiyun __u8 pft; /* PCI Function Type */ 31*4882a593Smuzhiyun __u8 gid; /* PCI function group ID */ 32*4882a593Smuzhiyun }; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /** 35*4882a593Smuzhiyun * VFIO_DEVICE_INFO_CAP_ZPCI_GROUP - Base PCI Function Group information 36*4882a593Smuzhiyun * 37*4882a593Smuzhiyun * This capability provides a set of descriptive information about the group of 38*4882a593Smuzhiyun * PCI functions that the associated device belongs to. 39*4882a593Smuzhiyun */ 40*4882a593Smuzhiyun struct vfio_device_info_cap_zpci_group { 41*4882a593Smuzhiyun struct vfio_info_cap_header header; 42*4882a593Smuzhiyun __u64 dasm; /* DMA Address space mask */ 43*4882a593Smuzhiyun __u64 msi_addr; /* MSI address */ 44*4882a593Smuzhiyun __u64 flags; 45*4882a593Smuzhiyun #define VFIO_DEVICE_INFO_ZPCI_FLAG_REFRESH 1 /* Program-specified TLB refresh */ 46*4882a593Smuzhiyun __u16 mui; /* Measurement Block Update Interval */ 47*4882a593Smuzhiyun __u16 noi; /* Maximum number of MSIs */ 48*4882a593Smuzhiyun __u16 maxstbl; /* Maximum Store Block Length */ 49*4882a593Smuzhiyun __u8 version; /* Supported PCI Version */ 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /** 53*4882a593Smuzhiyun * VFIO_DEVICE_INFO_CAP_ZPCI_UTIL - Utility String 54*4882a593Smuzhiyun * 55*4882a593Smuzhiyun * This capability provides the utility string for the associated device, which 56*4882a593Smuzhiyun * is a device identifier string made up of EBCDID characters. 'size' specifies 57*4882a593Smuzhiyun * the length of 'util_str'. 58*4882a593Smuzhiyun */ 59*4882a593Smuzhiyun struct vfio_device_info_cap_zpci_util { 60*4882a593Smuzhiyun struct vfio_info_cap_header header; 61*4882a593Smuzhiyun __u32 size; 62*4882a593Smuzhiyun __u8 util_str[]; 63*4882a593Smuzhiyun }; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /** 66*4882a593Smuzhiyun * VFIO_DEVICE_INFO_CAP_ZPCI_PFIP - PCI Function Path 67*4882a593Smuzhiyun * 68*4882a593Smuzhiyun * This capability provides the PCI function path string, which is an identifier 69*4882a593Smuzhiyun * that describes the internal hardware path of the device. 'size' specifies 70*4882a593Smuzhiyun * the length of 'pfip'. 71*4882a593Smuzhiyun */ 72*4882a593Smuzhiyun struct vfio_device_info_cap_zpci_pfip { 73*4882a593Smuzhiyun struct vfio_info_cap_header header; 74*4882a593Smuzhiyun __u32 size; 75*4882a593Smuzhiyun __u8 pfip[]; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #endif 79