Statistics
| Branch: | Revision:

root / include / hw / pci / msix.h @ 340b50c7

History | View | Annotate | Download (2.1 kB)

1
#ifndef QEMU_MSIX_H
2
#define QEMU_MSIX_H
3

    
4
#include "qemu-common.h"
5
#include "hw/pci/pci.h"
6

    
7
void msix_set_message(PCIDevice *dev, int vector, MSIMessage msg);
8
MSIMessage msix_get_message(PCIDevice *dev, unsigned int vector);
9
int msix_init(PCIDevice *dev, unsigned short nentries,
10
              MemoryRegion *table_bar, uint8_t table_bar_nr,
11
              unsigned table_offset, MemoryRegion *pba_bar,
12
              uint8_t pba_bar_nr, unsigned pba_offset, uint8_t cap_pos);
13
int msix_init_exclusive_bar(PCIDevice *dev, unsigned short nentries,
14
                            uint8_t bar_nr);
15

    
16
void msix_write_config(PCIDevice *dev, uint32_t address, uint32_t val, int len);
17

    
18
void msix_uninit(PCIDevice *dev, MemoryRegion *table_bar,
19
                 MemoryRegion *pba_bar);
20
void msix_uninit_exclusive_bar(PCIDevice *dev);
21

    
22
unsigned int msix_nr_vectors_allocated(const PCIDevice *dev);
23

    
24
void msix_save(PCIDevice *dev, QEMUFile *f);
25
void msix_load(PCIDevice *dev, QEMUFile *f);
26

    
27
int msix_enabled(PCIDevice *dev);
28
int msix_present(PCIDevice *dev);
29

    
30
bool msix_is_masked(PCIDevice *dev, unsigned vector);
31
void msix_set_pending(PCIDevice *dev, unsigned vector);
32

    
33
int msix_vector_use(PCIDevice *dev, unsigned vector);
34
void msix_vector_unuse(PCIDevice *dev, unsigned vector);
35
void msix_unuse_all_vectors(PCIDevice *dev);
36

    
37
void msix_notify(PCIDevice *dev, unsigned vector);
38

    
39
void msix_reset(PCIDevice *dev);
40

    
41
int msix_set_vector_notifiers(PCIDevice *dev,
42
                              MSIVectorUseNotifier use_notifier,
43
                              MSIVectorReleaseNotifier release_notifier,
44
                              MSIVectorPollNotifier poll_notifier);
45
void msix_unset_vector_notifiers(PCIDevice *dev);
46

    
47
extern const VMStateDescription vmstate_msix;
48

    
49
#define VMSTATE_MSIX(_field, _state) {                               \
50
    .name       = (stringify(_field)),                               \
51
    .size       = sizeof(PCIDevice),                                 \
52
    .vmsd       = &vmstate_msix,                                     \
53
    .flags      = VMS_STRUCT,                                        \
54
    .offset     = vmstate_offset_value(_state, _field, PCIDevice),   \
55
}
56

    
57
#endif