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:
John Levon 2025-05-20 17:25:30 +01:00 committed by Cédric Le Goater
parent aca0a50452
commit 493a06a2ed

View file

@ -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);