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

msi.h (1767B)


      1/*
      2 * msi.h
      3 *
      4 * Copyright (c) 2010 Isaku Yamahata <yamahata at valinux co jp>
      5 *                    VA Linux Systems Japan K.K.
      6 *
      7 * This program is free software; you can redistribute it and/or modify
      8 * it under the terms of the GNU General Public License as published by
      9 * the Free Software Foundation; either version 2 of the License, or
     10 * (at your option) any later version.
     11
     12 * This program is distributed in the hope that it will be useful,
     13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 * GNU General Public License for more details.
     16
     17 * You should have received a copy of the GNU General Public License along
     18 * with this program; if not, see <http://www.gnu.org/licenses/>.
     19 */
     20
     21#ifndef QEMU_MSI_H
     22#define QEMU_MSI_H
     23
     24#include "hw/pci/pci.h"
     25
     26struct MSIMessage {
     27    uint64_t address;
     28    uint32_t data;
     29};
     30
     31extern bool msi_nonbroken;
     32
     33void msi_set_message(PCIDevice *dev, MSIMessage msg);
     34MSIMessage msi_get_message(PCIDevice *dev, unsigned int vector);
     35bool msi_enabled(const PCIDevice *dev);
     36int msi_init(struct PCIDevice *dev, uint8_t offset,
     37             unsigned int nr_vectors, bool msi64bit,
     38             bool msi_per_vector_mask, Error **errp);
     39void msi_uninit(struct PCIDevice *dev);
     40void msi_reset(PCIDevice *dev);
     41bool msi_is_masked(const PCIDevice *dev, unsigned int vector);
     42void msi_notify(PCIDevice *dev, unsigned int vector);
     43void msi_send_message(PCIDevice *dev, MSIMessage msg);
     44void msi_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, int len);
     45unsigned int msi_nr_vectors_allocated(const PCIDevice *dev);
     46
     47static inline bool msi_present(const PCIDevice *dev)
     48{
     49    return dev->cap_present & QEMU_PCI_CAP_MSI;
     50}
     51
     52#endif /* QEMU_MSI_H */