-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
vfio: Introduce base object for VFIOContainer and targeted interface
Introduce a dumb VFIOContainerBase object and its targeted interface. This is willingly not a QOM object because we don't want it to be visible from the user interface. The VFIOContainerBase will be smoothly populated in subsequent patches as well as interfaces. No functional change intended. Signed-off-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com>
- Loading branch information
1 parent
bd00730
commit f61dddd
Showing
2 changed files
with
52 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* | ||
* VFIO BASE CONTAINER | ||
* | ||
* Copyright (C) 2023 Intel Corporation. | ||
* Copyright Red Hat, Inc. 2023 | ||
* | ||
* Authors: Yi Liu <yi.l.liu@intel.com> | ||
* Eric Auger <eric.auger@redhat.com> | ||
* | ||
* SPDX-License-Identifier: GPL-2.0-or-later | ||
*/ | ||
|
||
#ifndef HW_VFIO_VFIO_CONTAINER_BASE_H | ||
#define HW_VFIO_VFIO_CONTAINER_BASE_H | ||
|
||
#include "exec/memory.h" | ||
|
||
typedef struct VFIODevice VFIODevice; | ||
typedef struct VFIOIOMMUOps VFIOIOMMUOps; | ||
|
||
typedef struct { | ||
unsigned long *bitmap; | ||
hwaddr size; | ||
hwaddr pages; | ||
} VFIOBitmap; | ||
|
||
/* | ||
* This is the base object for vfio container backends | ||
*/ | ||
typedef struct VFIOContainerBase { | ||
const VFIOIOMMUOps *ops; | ||
} VFIOContainerBase; | ||
|
||
struct VFIOIOMMUOps { | ||
/* basic feature */ | ||
int (*dma_map)(VFIOContainerBase *bcontainer, | ||
hwaddr iova, ram_addr_t size, | ||
void *vaddr, bool readonly); | ||
int (*dma_unmap)(VFIOContainerBase *bcontainer, | ||
hwaddr iova, ram_addr_t size, | ||
IOMMUTLBEntry *iotlb); | ||
int (*attach_device)(const char *name, VFIODevice *vbasedev, | ||
AddressSpace *as, Error **errp); | ||
void (*detach_device)(VFIODevice *vbasedev); | ||
/* migration feature */ | ||
int (*set_dirty_page_tracking)(VFIOContainerBase *bcontainer, bool start); | ||
int (*query_dirty_bitmap)(VFIOContainerBase *bcontainer, VFIOBitmap *vbmap, | ||
hwaddr iova, hwaddr size); | ||
}; | ||
#endif /* HW_VFIO_VFIO_CONTAINER_BASE_H */ |