cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

msix.h (2456B)


      1#ifndef QEMU_MSIX_H
      2#define QEMU_MSIX_H
      3
      4#include "hw/pci/pci.h"
      5
      6#define MSIX_CAP_LENGTH 12
      7
      8void msix_set_message(PCIDevice *dev, int vector, MSIMessage msg);
      9MSIMessage msix_get_message(PCIDevice *dev, unsigned int vector);
     10int msix_init(PCIDevice *dev, unsigned short nentries,
     11              MemoryRegion *table_bar, uint8_t table_bar_nr,
     12              unsigned table_offset, MemoryRegion *pba_bar,
     13              uint8_t pba_bar_nr, unsigned pba_offset, uint8_t cap_pos,
     14              Error **errp);
     15int msix_init_exclusive_bar(PCIDevice *dev, unsigned short nentries,
     16                            uint8_t bar_nr, Error **errp);
     17
     18void msix_write_config(PCIDevice *dev, uint32_t address, uint32_t val, int len);
     19
     20void msix_uninit(PCIDevice *dev, MemoryRegion *table_bar,
     21                 MemoryRegion *pba_bar);
     22void msix_uninit_exclusive_bar(PCIDevice *dev);
     23
     24unsigned int msix_nr_vectors_allocated(const PCIDevice *dev);
     25
     26void msix_save(PCIDevice *dev, QEMUFile *f);
     27void msix_load(PCIDevice *dev, QEMUFile *f);
     28
     29int msix_enabled(PCIDevice *dev);
     30int msix_present(PCIDevice *dev);
     31
     32bool msix_is_masked(PCIDevice *dev, unsigned vector);
     33void msix_set_pending(PCIDevice *dev, unsigned vector);
     34void msix_clr_pending(PCIDevice *dev, int vector);
     35
     36int msix_vector_use(PCIDevice *dev, unsigned vector);
     37void msix_vector_unuse(PCIDevice *dev, unsigned vector);
     38void msix_unuse_all_vectors(PCIDevice *dev);
     39
     40void msix_notify(PCIDevice *dev, unsigned vector);
     41
     42void msix_reset(PCIDevice *dev);
     43
     44int msix_set_vector_notifiers(PCIDevice *dev,
     45                              MSIVectorUseNotifier use_notifier,
     46                              MSIVectorReleaseNotifier release_notifier,
     47                              MSIVectorPollNotifier poll_notifier);
     48void msix_unset_vector_notifiers(PCIDevice *dev);
     49
     50extern const VMStateDescription vmstate_msix;
     51
     52#define VMSTATE_MSIX_TEST(_field, _state, _test) {                   \
     53    .name         = (stringify(_field)),                             \
     54    .size         = sizeof(PCIDevice),                               \
     55    .vmsd         = &vmstate_msix,                                   \
     56    .flags        = VMS_STRUCT,                                      \
     57    .offset       = vmstate_offset_value(_state, _field, PCIDevice), \
     58    .field_exists = (_test)                                          \
     59}
     60
     61#define VMSTATE_MSIX(_f, _s)                                         \
     62    VMSTATE_MSIX_TEST(_f, _s, NULL)
     63
     64#endif