|
|
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.