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