libvirt/src/util/virmdev.h
Shalini Chellathurai Saroja 7224144400 qemu: vfio-ccw device address generation
Introduces the vfio-ccw model for mediated devices and prime vfio-ccw
devices such that CCW address will be generated.

Alters the qemuxml2xmltest for testing a basic mdev device using vfio-ccw.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:27:44 -04:00

139 lines
4.0 KiB
C

/*
* virmdev.h: helper APIs for managing host mediated devices
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*/
#ifndef __VIR_MDEV_H__
# define __VIR_MDEV_H__
# include "internal.h"
# include "virobject.h"
# include "virutil.h"
typedef enum {
VIR_MDEV_MODEL_TYPE_VFIO_PCI = 0,
VIR_MDEV_MODEL_TYPE_VFIO_CCW = 1,
VIR_MDEV_MODEL_TYPE_LAST
} virMediatedDeviceModelType;
VIR_ENUM_DECL(virMediatedDeviceModel)
typedef struct _virMediatedDevice virMediatedDevice;
typedef virMediatedDevice *virMediatedDevicePtr;
typedef struct _virMediatedDeviceList virMediatedDeviceList;
typedef virMediatedDeviceList *virMediatedDeviceListPtr;
typedef struct _virMediatedDeviceType virMediatedDeviceType;
typedef virMediatedDeviceType *virMediatedDeviceTypePtr;
struct _virMediatedDeviceType {
char *id;
char *name;
char *device_api;
unsigned int available_instances;
};
typedef int (*virMediatedDeviceCallback)(virMediatedDevicePtr dev,
const char *path, void *opaque);
virMediatedDevicePtr
virMediatedDeviceNew(const char *uuidstr, virMediatedDeviceModelType model);
virMediatedDevicePtr
virMediatedDeviceCopy(virMediatedDevicePtr dev);
void
virMediatedDeviceFree(virMediatedDevicePtr dev);
const char *
virMediatedDeviceGetPath(virMediatedDevicePtr dev);
void
virMediatedDeviceGetUsedBy(virMediatedDevicePtr dev,
const char **drvname, const char **domname);
int
virMediatedDeviceSetUsedBy(virMediatedDevicePtr dev,
const char *drvname,
const char *domname);
char *
virMediatedDeviceGetIOMMUGroupDev(const char *uuidstr);
int
virMediatedDeviceGetIOMMUGroupNum(const char *uuidstr);
char *
virMediatedDeviceGetSysfsPath(const char *uuidstr);
bool
virMediatedDeviceIsUsed(virMediatedDevicePtr dev,
virMediatedDeviceListPtr list);
bool
virMediatedDeviceIsUsed(virMediatedDevicePtr dev,
virMediatedDeviceListPtr list);
virMediatedDeviceListPtr
virMediatedDeviceListNew(void);
int
virMediatedDeviceListAdd(virMediatedDeviceListPtr list,
virMediatedDevicePtr *dev);
virMediatedDevicePtr
virMediatedDeviceListGet(virMediatedDeviceListPtr list,
ssize_t idx);
size_t
virMediatedDeviceListCount(virMediatedDeviceListPtr list);
virMediatedDevicePtr
virMediatedDeviceListSteal(virMediatedDeviceListPtr list,
virMediatedDevicePtr dev);
virMediatedDevicePtr
virMediatedDeviceListStealIndex(virMediatedDeviceListPtr list,
ssize_t idx);
void
virMediatedDeviceListDel(virMediatedDeviceListPtr list,
virMediatedDevicePtr dev);
virMediatedDevicePtr
virMediatedDeviceListFind(virMediatedDeviceListPtr list,
virMediatedDevicePtr dev);
int
virMediatedDeviceListFindIndex(virMediatedDeviceListPtr list,
virMediatedDevicePtr dev);
int
virMediatedDeviceListMarkDevices(virMediatedDeviceListPtr dst,
virMediatedDeviceListPtr src,
const char *drvname,
const char *domname);
void
virMediatedDeviceTypeFree(virMediatedDeviceTypePtr type);
int
virMediatedDeviceTypeReadAttrs(const char *sysfspath,
virMediatedDeviceTypePtr *type);
#endif /* __VIR_MDEV_H__ */