Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/xen/interface/io/pciif.h
26286 views
1
/* SPDX-License-Identifier: MIT */
2
/*
3
* PCI Backend/Frontend Common Data Structures & Macros
4
*
5
* Author: Ryan Wilson <[email protected]>
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
48
struct xen_msix_entry {
49
uint16_t vector;
50
uint16_t entry;
51
};
52
struct 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*/
77
struct 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
};
88
struct 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
97