1 #ifndef _PCI_CAP_H 2 #define _PCI_CAP_H 3 4 #include "types.h" 5 6 /* 7 * 8 * QEMU-specific vendor(Red Hat)-specific capability. 9 * It's intended to provide some hints for firmware to init PCI devices. 10 * 11 * Its structure is shown below: 12 * 13 * Header: 14 * 15 * u8 id; Standard PCI Capability Header field 16 * u8 next; Standard PCI Capability Header field 17 * u8 len; Standard PCI Capability Header field 18 * u8 type; Red Hat vendor-specific capability type 19 * Data: 20 * 21 * u32 bus_res; minimum bus number to reserve; 22 * this is necessary for PCI Express Root Ports 23 * to support PCI bridges hotplug 24 * u64 io; IO space to reserve 25 * u32 mem; non-prefetchable memory to reserve 26 * 27 * At most of the following two fields may be set to a value 28 * different from 0xFF...F: 29 * u32 prefetchable_mem_32; prefetchable memory to reserve (32-bit MMIO) 30 * u64 prefetchable_mem_64; prefetchable memory to reserve (64-bit MMIO) 31 * 32 * If any field value in Data section is 0xFF...F, 33 * it means that such kind of reservation is not needed and must be ignored. 34 * 35 */ 36 37 /* Offset of vendor-specific capability type field */ 38 #define PCI_CAP_REDHAT_TYPE_OFFSET 3 39 40 /* List of valid Red Hat vendor-specific capability types */ 41 #define REDHAT_CAP_RESOURCE_RESERVE 1 42 43 44 /* Offsets of RESOURCE_RESERVE capability fields */ 45 #define RES_RESERVE_BUS_RES 4 46 #define RES_RESERVE_IO 8 47 #define RES_RESERVE_MEM 16 48 #define RES_RESERVE_PREF_MEM_32 20 49 #define RES_RESERVE_PREF_MEM_64 24 50 #define RES_RESERVE_CAP_SIZE 32 51 52 #endif /* _PCI_CAP_H */ 53