brintos

brintos / linux-shallow public Read only

0
0
Text · 2.5 KiB · d1a87b6 Raw
96 lines · c
1/* SPDX-License-Identifier: MIT */2/*3 * PCI Backend/Frontend Common Data Structures & Macros4 *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 12845 */46#define SH_INFO_MAX_VEC			12847 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__ */96