cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pciif.h (2561B)


      1/* SPDX-License-Identifier: MIT */
      2/*
      3 * PCI Backend/Frontend Common Data Structures & Macros
      4 *
      5 *   Author: Ryan Wilson <hap9@epoch.ncsc.mil>
      6 */
      7#ifndef __XEN_PCI_COMMON_H__
      8#define __XEN_PCI_COMMON_H__
      9
     10/* Be sure to bump this number if you change this file */
     11#define XEN_PCI_MAGIC "7"
     12
     13/* xen_pci_sharedinfo flags */
     14#define	_XEN_PCIF_active		(0)
     15#define	XEN_PCIF_active			(1<<_XEN_PCIF_active)
     16#define	_XEN_PCIB_AERHANDLER		(1)
     17#define	XEN_PCIB_AERHANDLER		(1<<_XEN_PCIB_AERHANDLER)
     18#define	_XEN_PCIB_active		(2)
     19#define	XEN_PCIB_active			(1<<_XEN_PCIB_active)
     20
     21/* xen_pci_op commands */
     22#define	XEN_PCI_OP_conf_read		(0)
     23#define	XEN_PCI_OP_conf_write		(1)
     24#define	XEN_PCI_OP_enable_msi		(2)
     25#define	XEN_PCI_OP_disable_msi		(3)
     26#define	XEN_PCI_OP_enable_msix		(4)
     27#define	XEN_PCI_OP_disable_msix		(5)
     28#define	XEN_PCI_OP_aer_detected		(6)
     29#define	XEN_PCI_OP_aer_resume		(7)
     30#define	XEN_PCI_OP_aer_mmio		(8)
     31#define	XEN_PCI_OP_aer_slotreset	(9)
     32
     33/* xen_pci_op error numbers */
     34#define	XEN_PCI_ERR_success		(0)
     35#define	XEN_PCI_ERR_dev_not_found	(-1)
     36#define	XEN_PCI_ERR_invalid_offset	(-2)
     37#define	XEN_PCI_ERR_access_denied	(-3)
     38#define	XEN_PCI_ERR_not_implemented	(-4)
     39/* XEN_PCI_ERR_op_failed - backend failed to complete the operation */
     40#define XEN_PCI_ERR_op_failed		(-5)
     41
     42/*
     43 * it should be PAGE_SIZE-sizeof(struct xen_pci_op))/sizeof(struct msix_entry))
     44 * Should not exceed 128
     45 */
     46#define SH_INFO_MAX_VEC			128
     47
     48struct xen_msix_entry {
     49	uint16_t vector;
     50	uint16_t entry;
     51};
     52struct xen_pci_op {
     53	/* IN: what action to perform: XEN_PCI_OP_* */
     54	uint32_t cmd;
     55
     56	/* OUT: will contain an error number (if any) from errno.h */
     57	int32_t err;
     58
     59	/* IN: which device to touch */
     60	uint32_t domain; /* PCI Domain/Segment */
     61	uint32_t bus;
     62	uint32_t devfn;
     63
     64	/* IN: which configuration registers to touch */
     65	int32_t offset;
     66	int32_t size;
     67
     68	/* IN/OUT: Contains the result after a READ or the value to WRITE */
     69	uint32_t value;
     70	/* IN: Contains extra infor for this operation */
     71	uint32_t info;
     72	/*IN:  param for msi-x */
     73	struct xen_msix_entry msix_entries[SH_INFO_MAX_VEC];
     74};
     75
     76/*used for pcie aer handling*/
     77struct xen_pcie_aer_op {
     78	/* IN: what action to perform: XEN_PCI_OP_* */
     79	uint32_t cmd;
     80	/*IN/OUT: return aer_op result or carry error_detected state as input*/
     81	int32_t err;
     82
     83	/* IN: which device to touch */
     84	uint32_t domain; /* PCI Domain/Segment*/
     85	uint32_t bus;
     86	uint32_t devfn;
     87};
     88struct xen_pci_sharedinfo {
     89	/* flags - XEN_PCIF_* */
     90	uint32_t flags;
     91	struct xen_pci_op op;
     92	struct xen_pcie_aer_op aer_op;
     93};
     94
     95#endif /* __XEN_PCI_COMMON_H__ */