mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
util: Introduce vfio helpers
This is a library to manage the host vfio interface, which could be used to implement userspace device driver code in QEMU such as NVMe or net controllers. Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20180116060901.17413-3-famz@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* QEMU VFIO helpers
|
||||
*
|
||||
* Copyright 2016 - 2018 Red Hat, Inc.
|
||||
*
|
||||
* Authors:
|
||||
* Fam Zheng <famz@redhat.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef QEMU_VFIO_HELPERS_H
|
||||
#define QEMU_VFIO_HELPERS_H
|
||||
#include "qemu/typedefs.h"
|
||||
|
||||
typedef struct QEMUVFIOState QEMUVFIOState;
|
||||
|
||||
QEMUVFIOState *qemu_vfio_open_pci(const char *device, Error **errp);
|
||||
void qemu_vfio_close(QEMUVFIOState *s);
|
||||
int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
|
||||
bool temporary, uint64_t *iova_list);
|
||||
int qemu_vfio_dma_reset_temporary(QEMUVFIOState *s);
|
||||
void qemu_vfio_dma_unmap(QEMUVFIOState *s, void *host);
|
||||
void *qemu_vfio_pci_map_bar(QEMUVFIOState *s, int index,
|
||||
uint64_t offset, uint64_t size,
|
||||
Error **errp);
|
||||
void qemu_vfio_pci_unmap_bar(QEMUVFIOState *s, int index, void *bar,
|
||||
uint64_t offset, uint64_t size);
|
||||
int qemu_vfio_pci_init_irq(QEMUVFIOState *s, EventNotifier *e,
|
||||
int irq_type, Error **errp);
|
||||
|
||||
#endif
|
||||
@@ -46,3 +46,4 @@ util-obj-y += qht.o
|
||||
util-obj-y += range.o
|
||||
util-obj-y += stats64.o
|
||||
util-obj-y += systemd.o
|
||||
util-obj-$(CONFIG_LINUX) += vfio-helpers.o
|
||||
|
||||
@@ -60,3 +60,14 @@ lockcnt_futex_wake(const void *lockcnt) "lockcnt %p waking up one waiter"
|
||||
qemu_mutex_lock(void *mutex, const char *file, const int line) "waiting on mutex %p (%s:%d)"
|
||||
qemu_mutex_locked(void *mutex, const char *file, const int line) "taken mutex %p (%s:%d)"
|
||||
qemu_mutex_unlock(void *mutex, const char *file, const int line) "released mutex %p (%s:%d)"
|
||||
|
||||
# util/vfio-helpers.c
|
||||
qemu_vfio_dma_reset_temporary(void *s) "s %p"
|
||||
qemu_vfio_ram_block_added(void *s, void *p, size_t size) "s %p host %p size 0x%zx"
|
||||
qemu_vfio_ram_block_removed(void *s, void *p, size_t size) "s %p host %p size 0x%zx"
|
||||
qemu_vfio_find_mapping(void *s, void *p) "s %p host %p"
|
||||
qemu_vfio_new_mapping(void *s, void *host, size_t size, int index, uint64_t iova) "s %p host %p size %zu index %d iova 0x%"PRIx64
|
||||
qemu_vfio_do_mapping(void *s, void *host, size_t size, uint64_t iova) "s %p host %p size %zu iova 0x%"PRIx64
|
||||
qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64_t *iova) "s %p host %p size %zu temporary %d iova %p"
|
||||
qemu_vfio_dma_map_invalid(void *s, void *mapping_host, size_t mapping_size, void *host, size_t size) "s %p mapping %p %zu requested %p %zu"
|
||||
qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user