|
|
1.1 root 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 <[email protected]>
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_PCI_active)
33:
34: /* xen_pci_op commands */
35: #define XEN_PCI_OP_conf_read (0)
36: #define XEN_PCI_OP_conf_write (1)
37: #define XEN_PCI_OP_enable_msi (2)
38: #define XEN_PCI_OP_disable_msi (3)
39: #define XEN_PCI_OP_enable_msix (4)
40: #define XEN_PCI_OP_disable_msix (5)
41:
42: /* xen_pci_op error numbers */
43: #define XEN_PCI_ERR_success (0)
44: #define XEN_PCI_ERR_dev_not_found (-1)
45: #define XEN_PCI_ERR_invalid_offset (-2)
46: #define XEN_PCI_ERR_access_denied (-3)
47: #define XEN_PCI_ERR_not_implemented (-4)
48: /* XEN_PCI_ERR_op_failed - backend failed to complete the operation */
49: #define XEN_PCI_ERR_op_failed (-5)
50:
51: /*
52: * it should be PAGE_SIZE-sizeof(struct xen_pci_op))/sizeof(struct msix_entry))
53: * Should not exceed 128
54: */
55: #define SH_INFO_MAX_VEC 128
56:
57: struct xen_msix_entry {
58: uint16_t vector;
59: uint16_t entry;
60: };
61: struct xen_pci_op {
62: /* IN: what action to perform: XEN_PCI_OP_* */
63: uint32_t cmd;
64:
65: /* OUT: will contain an error number (if any) from errno.h */
66: int32_t err;
67:
68: /* IN: which device to touch */
69: uint32_t domain; /* PCI Domain/Segment */
70: uint32_t bus;
71: uint32_t devfn;
72:
73: /* IN: which configuration registers to touch */
74: int32_t offset;
75: int32_t size;
76:
77: /* IN/OUT: Contains the result after a READ or the value to WRITE */
78: uint32_t value;
79: /* IN: Contains extra infor for this operation */
80: uint32_t info;
81: /*IN: param for msi-x */
82: struct xen_msix_entry msix_entries[SH_INFO_MAX_VEC];
83: };
84:
85: struct xen_pci_sharedinfo {
86: /* flags - XEN_PCIF_* */
87: uint32_t flags;
88: struct xen_pci_op op;
89: };
90:
91: #endif /* __XEN_PCI_COMMON_H__ */
92:
93: /*
94: * Local variables:
95: * mode: C
96: * c-set-style: "BSD"
97: * c-basic-offset: 4
98: * tab-width: 4
99: * indent-tabs-mode: nil
100: * End:
101: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.