diff options
author | Ryan Wilson <hap9@epoch.ncsc.mil> | 2010-08-02 21:31:05 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2010-10-18 10:49:37 -0400 |
commit | 956a9202cd1220397933a07beda9f96b3df1fa24 (patch) | |
tree | 49d6ac9b43c16a9363b6ceff81ec62ef81aca0a7 /include/xen | |
parent | b78c9512563780d86a178f11b648bcf73b8d87ec (diff) |
xen-pcifront: Xen PCI frontend driver.
This is a port of the 2.6.18 Xen PCI front driver with fixes
to make it build under 2.6.34 and later (for the full list of
changes: git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git
historic/xen-pcifront-0.1). It also includes the fixes
to make it work properly.
[v2: Updated Kconfig, removed crud, added Reviewed-by]
[v3: Added 'static', fixed grant table leak, redid Kconfig]
[v4: Added one more 'static' and removed comments]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Jan Beulich <JBeulich@novell.com>
Diffstat (limited to 'include/xen')
-rw-r--r-- | include/xen/interface/io/pciif.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/include/xen/interface/io/pciif.h b/include/xen/interface/io/pciif.h new file mode 100644 index 000000000000..d9922ae36eb5 --- /dev/null +++ b/include/xen/interface/io/pciif.h | |||
@@ -0,0 +1,112 @@ | |||
1 | /* | ||
2 | * PCI Backend/Frontend Common Data Structures & Macros | ||
3 | * | ||
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
5 | * of this software and associated documentation files (the "Software"), to | ||
6 | * deal in the Software without restriction, including without limitation the | ||
7 | * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||
8 | * sell copies of the Software, and to permit persons to whom the Software is | ||
9 | * furnished to do so, subject to the following conditions: | ||
10 | * | ||
11 | * The above copyright notice and this permission notice shall be included in | ||
12 | * all copies or substantial portions of the Software. | ||
13 | * | ||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
17 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
19 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
20 | * DEALINGS IN THE SOFTWARE. | ||
21 | * | ||
22 | * Author: Ryan Wilson <hap9@epoch.ncsc.mil> | ||
23 | */ | ||
24 | #ifndef __XEN_PCI_COMMON_H__ | ||
25 | #define __XEN_PCI_COMMON_H__ | ||
26 | |||
27 | /* Be sure to bump this number if you change this file */ | ||
28 | #define XEN_PCI_MAGIC "7" | ||
29 | |||
30 | /* xen_pci_sharedinfo flags */ | ||
31 | #define _XEN_PCIF_active (0) | ||
32 | #define XEN_PCIF_active (1<<_XEN_PCIF_active) | ||
33 | #define _XEN_PCIB_AERHANDLER (1) | ||
34 | #define XEN_PCIB_AERHANDLER (1<<_XEN_PCIB_AERHANDLER) | ||
35 | #define _XEN_PCIB_active (2) | ||
36 | #define XEN_PCIB_active (1<<_XEN_PCIB_active) | ||
37 | |||
38 | /* xen_pci_op commands */ | ||
39 | #define XEN_PCI_OP_conf_read (0) | ||
40 | #define XEN_PCI_OP_conf_write (1) | ||
41 | #define XEN_PCI_OP_enable_msi (2) | ||
42 | #define XEN_PCI_OP_disable_msi (3) | ||
43 | #define XEN_PCI_OP_enable_msix (4) | ||
44 | #define XEN_PCI_OP_disable_msix (5) | ||
45 | #define XEN_PCI_OP_aer_detected (6) | ||
46 | #define XEN_PCI_OP_aer_resume (7) | ||
47 | #define XEN_PCI_OP_aer_mmio (8) | ||
48 | #define XEN_PCI_OP_aer_slotreset (9) | ||
49 | |||
50 | /* xen_pci_op error numbers */ | ||
51 | #define XEN_PCI_ERR_success (0) | ||
52 | #define XEN_PCI_ERR_dev_not_found (-1) | ||
53 | #define XEN_PCI_ERR_invalid_offset (-2) | ||
54 | #define XEN_PCI_ERR_access_denied (-3) | ||
55 | #define XEN_PCI_ERR_not_implemented (-4) | ||
56 | /* XEN_PCI_ERR_op_failed - backend failed to complete the operation */ | ||
57 | #define XEN_PCI_ERR_op_failed (-5) | ||
58 | |||
59 | /* | ||
60 | * it should be PAGE_SIZE-sizeof(struct xen_pci_op))/sizeof(struct msix_entry)) | ||
61 | * Should not exceed 128 | ||
62 | */ | ||
63 | #define SH_INFO_MAX_VEC 128 | ||
64 | |||
65 | struct xen_msix_entry { | ||
66 | uint16_t vector; | ||
67 | uint16_t entry; | ||
68 | }; | ||
69 | struct xen_pci_op { | ||
70 | /* IN: what action to perform: XEN_PCI_OP_* */ | ||
71 | uint32_t cmd; | ||
72 | |||
73 | /* OUT: will contain an error number (if any) from errno.h */ | ||
74 | int32_t err; | ||
75 | |||
76 | /* IN: which device to touch */ | ||
77 | uint32_t domain; /* PCI Domain/Segment */ | ||
78 | uint32_t bus; | ||
79 | uint32_t devfn; | ||
80 | |||
81 | /* IN: which configuration registers to touch */ | ||
82 | int32_t offset; | ||
83 | int32_t size; | ||
84 | |||
85 | /* IN/OUT: Contains the result after a READ or the value to WRITE */ | ||
86 | uint32_t value; | ||
87 | /* IN: Contains extra infor for this operation */ | ||
88 | uint32_t info; | ||
89 | /*IN: param for msi-x */ | ||
90 | struct xen_msix_entry msix_entries[SH_INFO_MAX_VEC]; | ||
91 | }; | ||
92 | |||
93 | /*used for pcie aer handling*/ | ||
94 | struct xen_pcie_aer_op { | ||
95 | /* IN: what action to perform: XEN_PCI_OP_* */ | ||
96 | uint32_t cmd; | ||
97 | /*IN/OUT: return aer_op result or carry error_detected state as input*/ | ||
98 | int32_t err; | ||
99 | |||
100 | /* IN: which device to touch */ | ||
101 | uint32_t domain; /* PCI Domain/Segment*/ | ||
102 | uint32_t bus; | ||
103 | uint32_t devfn; | ||
104 | }; | ||
105 | struct xen_pci_sharedinfo { | ||
106 | /* flags - XEN_PCIF_* */ | ||
107 | uint32_t flags; | ||
108 | struct xen_pci_op op; | ||
109 | struct xen_pcie_aer_op aer_op; | ||
110 | }; | ||
111 | |||
112 | #endif /* __XEN_PCI_COMMON_H__ */ | ||