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

iohub.h (1150B)


      1/*
      2 * IO Hub for remote device
      3 *
      4 * Copyright © 2018, 2021 Oracle and/or its affiliates.
      5 *
      6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
      7 * See the COPYING file in the top-level directory.
      8 *
      9 */
     10
     11#ifndef REMOTE_IOHUB_H
     12#define REMOTE_IOHUB_H
     13
     14#include "hw/pci/pci.h"
     15#include "qemu/event_notifier.h"
     16#include "qemu/thread-posix.h"
     17#include "hw/remote/mpqemu-link.h"
     18
     19#define REMOTE_IOHUB_NB_PIRQS    PCI_DEVFN_MAX
     20
     21typedef struct ResampleToken {
     22    void *iohub;
     23    int pirq;
     24} ResampleToken;
     25
     26typedef struct RemoteIOHubState {
     27    PCIDevice d;
     28    EventNotifier irqfds[REMOTE_IOHUB_NB_PIRQS];
     29    EventNotifier resamplefds[REMOTE_IOHUB_NB_PIRQS];
     30    unsigned int irq_level[REMOTE_IOHUB_NB_PIRQS];
     31    ResampleToken token[REMOTE_IOHUB_NB_PIRQS];
     32    QemuMutex irq_level_lock[REMOTE_IOHUB_NB_PIRQS];
     33} RemoteIOHubState;
     34
     35int remote_iohub_map_irq(PCIDevice *pci_dev, int intx);
     36void remote_iohub_set_irq(void *opaque, int pirq, int level);
     37void process_set_irqfd_msg(PCIDevice *pci_dev, MPQemuMsg *msg);
     38
     39void remote_iohub_init(RemoteIOHubState *iohub);
     40void remote_iohub_finalize(RemoteIOHubState *iohub);
     41
     42#endif