mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
vfio: add more VFIOIOMMUClass docs
Add some additional doc comments for these class methods. Signed-off-by: John Levon <john.levon@nutanix.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Link: https://lore.kernel.org/qemu-devel/20250520162530.2194548-1-john.levon@nutanix.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
aca0a50452
commit
493a06a2ed
1 changed files with 72 additions and 3 deletions
|
@ -115,13 +115,56 @@ OBJECT_DECLARE_TYPE(VFIOContainerBase, VFIOIOMMUClass, VFIO_IOMMU)
|
||||||
struct VFIOIOMMUClass {
|
struct VFIOIOMMUClass {
|
||||||
ObjectClass parent_class;
|
ObjectClass parent_class;
|
||||||
|
|
||||||
/* basic feature */
|
/**
|
||||||
|
* @setup
|
||||||
|
*
|
||||||
|
* Perform basic setup of the container, including configuring IOMMU
|
||||||
|
* capabilities, IOVA ranges, supported page sizes, etc.
|
||||||
|
*
|
||||||
|
* @bcontainer: #VFIOContainerBase
|
||||||
|
* @errp: pointer to Error*, to store an error if it happens.
|
||||||
|
*
|
||||||
|
* Returns true to indicate success and false for error.
|
||||||
|
*/
|
||||||
bool (*setup)(VFIOContainerBase *bcontainer, Error **errp);
|
bool (*setup)(VFIOContainerBase *bcontainer, Error **errp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @listener_begin
|
||||||
|
*
|
||||||
|
* Called at the beginning of an address space update transaction.
|
||||||
|
* See #MemoryListener.
|
||||||
|
*
|
||||||
|
* @bcontainer: #VFIOContainerBase
|
||||||
|
*/
|
||||||
void (*listener_begin)(VFIOContainerBase *bcontainer);
|
void (*listener_begin)(VFIOContainerBase *bcontainer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @listener_commit
|
||||||
|
*
|
||||||
|
* Called at the end of an address space update transaction,
|
||||||
|
* See #MemoryListener.
|
||||||
|
*
|
||||||
|
* @bcontainer: #VFIOContainerBase
|
||||||
|
*/
|
||||||
void (*listener_commit)(VFIOContainerBase *bcontainer);
|
void (*listener_commit)(VFIOContainerBase *bcontainer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dma_map
|
||||||
|
*
|
||||||
|
* Map an address range into the container.
|
||||||
|
*
|
||||||
|
* @bcontainer: #VFIOContainerBase to use
|
||||||
|
* @iova: start address to map
|
||||||
|
* @size: size of the range to map
|
||||||
|
* @vaddr: process virtual address of mapping
|
||||||
|
* @readonly: true if mapping should be readonly
|
||||||
|
*
|
||||||
|
* Returns 0 to indicate success and -errno otherwise.
|
||||||
|
*/
|
||||||
int (*dma_map)(const VFIOContainerBase *bcontainer,
|
int (*dma_map)(const VFIOContainerBase *bcontainer,
|
||||||
hwaddr iova, ram_addr_t size,
|
hwaddr iova, ram_addr_t size,
|
||||||
void *vaddr, bool readonly);
|
void *vaddr, bool readonly);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dma_unmap
|
* @dma_unmap
|
||||||
*
|
*
|
||||||
|
@ -132,12 +175,38 @@ struct VFIOIOMMUClass {
|
||||||
* @size: size of the range to unmap
|
* @size: size of the range to unmap
|
||||||
* @iotlb: The IOMMU TLB mapping entry (or NULL)
|
* @iotlb: The IOMMU TLB mapping entry (or NULL)
|
||||||
* @unmap_all: if set, unmap the entire address space
|
* @unmap_all: if set, unmap the entire address space
|
||||||
|
*
|
||||||
|
* Returns 0 to indicate success and -errno otherwise.
|
||||||
*/
|
*/
|
||||||
int (*dma_unmap)(const VFIOContainerBase *bcontainer,
|
int (*dma_unmap)(const VFIOContainerBase *bcontainer,
|
||||||
hwaddr iova, ram_addr_t size,
|
hwaddr iova, ram_addr_t size,
|
||||||
IOMMUTLBEntry *iotlb, bool unmap_all);
|
IOMMUTLBEntry *iotlb, bool unmap_all);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @attach_device
|
||||||
|
*
|
||||||
|
* Associate the given device with a container and do some related
|
||||||
|
* initialization of the device context.
|
||||||
|
*
|
||||||
|
* @name: name of the device
|
||||||
|
* @vbasedev: the device
|
||||||
|
* @as: address space to use
|
||||||
|
* @errp: pointer to Error*, to store an error if it happens.
|
||||||
|
*
|
||||||
|
* Returns true to indicate success and false for error.
|
||||||
|
*/
|
||||||
bool (*attach_device)(const char *name, VFIODevice *vbasedev,
|
bool (*attach_device)(const char *name, VFIODevice *vbasedev,
|
||||||
AddressSpace *as, Error **errp);
|
AddressSpace *as, Error **errp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @detach_device
|
||||||
|
*
|
||||||
|
* Detach the given device from its container and clean up any necessary
|
||||||
|
* state.
|
||||||
|
*
|
||||||
|
* @vbasedev: the device to disassociate
|
||||||
|
*/
|
||||||
void (*detach_device)(VFIODevice *vbasedev);
|
void (*detach_device)(VFIODevice *vbasedev);
|
||||||
|
|
||||||
/* migration feature */
|
/* migration feature */
|
||||||
|
@ -152,7 +221,7 @@ struct VFIOIOMMUClass {
|
||||||
* @start: indicates whether to start or stop dirty pages tracking
|
* @start: indicates whether to start or stop dirty pages tracking
|
||||||
* @errp: pointer to Error*, to store an error if it happens.
|
* @errp: pointer to Error*, to store an error if it happens.
|
||||||
*
|
*
|
||||||
* Returns zero to indicate success and negative for error
|
* Returns zero to indicate success and negative for error.
|
||||||
*/
|
*/
|
||||||
int (*set_dirty_page_tracking)(const VFIOContainerBase *bcontainer,
|
int (*set_dirty_page_tracking)(const VFIOContainerBase *bcontainer,
|
||||||
bool start, Error **errp);
|
bool start, Error **errp);
|
||||||
|
@ -167,7 +236,7 @@ struct VFIOIOMMUClass {
|
||||||
* @size: size of iova range
|
* @size: size of iova range
|
||||||
* @errp: pointer to Error*, to store an error if it happens.
|
* @errp: pointer to Error*, to store an error if it happens.
|
||||||
*
|
*
|
||||||
* Returns zero to indicate success and negative for error
|
* Returns zero to indicate success and negative for error.
|
||||||
*/
|
*/
|
||||||
int (*query_dirty_bitmap)(const VFIOContainerBase *bcontainer,
|
int (*query_dirty_bitmap)(const VFIOContainerBase *bcontainer,
|
||||||
VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
|
VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue