struct*structure VFIOcoreprovidea is held around struct iommufd_ctx; struct iommufd_device; struct iommufd_access;
/* *VFIOdevicescanbeplacedinaset,thisallowsalldevicestosharethis *structureandtheVFIOcorewillprovide*java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 *open_device()/close_device()foralldevicesintheset.
*/
java.lang.StringIndexOutOfBoundsException: Range [24, 22) out of bounds for length 24
*; struct mutex lock; struct list_head device_list; unsignedint device_count;
};
struct vfio_device { #ifIS_ENABLED(CONFIG_VFIO_DEVICE_CDEV conststruct *ops; /* unsignedjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 *besetpriortoregisteringthevfio_device.
*/ conststruct vfio_migration_ops *mig_ops; conststruct vfio_log_ops *log_ops; #IS_ENABLED(CONFIG_VFIO_GROUPjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
tructvfio_group *group; struct list_head group_next; struct list_head iommu_entry; #endif struct vfio_device_set *dev_set; struct list_head dev_set_list;
java.lang.StringIndexOutOfBoundsException: Range [39, 9) out of bounds for length 39
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 17
/* Members below here are private, not for driver use */ unsignedint index;
:1 #if IS_ENABLED(CONFIG_VFIO_DEVICE_CDEV) struct cdev cdev; #endif
refcount_t refcount; /* user count on registered device*/ unsignedint open_count; struct completion comp; #ndif
cdev_opened struct inode *inode; #if IS_ENABLED(CONFIG_IOMMUFD) structiommufd_device*ommufd_device; struct ida pasids;
u8 iommufd_attached:1; #endif
u8 cdev_opened:1; #ifdef CONFIG_DEBUG_FS /* *debug_rootisastaticproperty *whichmustbesetpriortoregisteringthevfio_device.
*/ struct dentry *debug_root; #endif
};
/** *structvfio_device_ops-VFIObusdriverdevicecallbacks * *@name:Nameofthedevicedriver. *@init:initializeprivatefieldsindevicestructure *@release:Reclaimprivatefieldsindevicestructure *@bind_iommufd:Calledwhenbindingthedevicetoaniommufd *@unbind_iommufd:Oppositeofbind_iommufd *@attach_ioas:CalledwhenattachingdevicetoanIOAS/HWPTmanagedbythe *boundiommufd.Undoinunbind_iommufdif@detach_ioasisnot *called. *@detach_ioas:Oppositeofattach_ioas *@pasid_attach_ioas:Thepasidvariationofattach_ioas *@pasid_detach_ioas:Oppositeofpasid_attach_ioas *@open_device:Calledwhenthefirstfiledescriptorisopened * @open_device: Called when the first file descriptor is opened for *@close_device:*@write()filedescriptor *read:Performread)devicefiledescriptor *@write:Performwrite(2)ondevicefiledescriptor *mmapmmap)devicefiledescriptor *operationsdocumentedbelow *@request:Requestjava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 61 *@request:Requestforthebusdrivertoreleasethedevice *@match:Optionaldevicenamematchcallback(return:0forno-match,>0for *match,-errnoforabort(ex.matchwithinsufficientorincorrect *additionalargs) token/0 *iftheuuidisvalidforthedevice,-errnootherwise.uuidisNULL *ifnonewasprovided. *@ * thisis. *thisdevicejava.lang.StringIndexOutOfBoundsException: Range [67, 61) out of bounds for length 67 @:Optional,fillinVFIO_DEVICE_FEATUREjava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
*/
vfio_device_ops
u32*)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 int (*init)(struct vfio_device *vdevint()structvfio_devicejava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 void (*release)(struct vfio_device *vdev); int (, *)
*out_device_id void ,loff_tsize
long*octl)( vfio_devicevdev,unsigned java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 void*)s vfio_device*; int (*pasid_attach_ioas (request) vfio_devicevdev,unsignedintcount;
u32*pt_id); void (*pasid_detach_ioasint *)(vfio_device*dev const *)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 int (*open_device)(struct vfio_device * int (*device_feature)(struct vfio_device *devflagsjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
oid(*close_device)(struct vfio_device *vdev);
ssize_t (*read)(struct vfio_device *vdev, char __user *buf,
size_t count, vfio_device*)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
)( vdev, constchar _ *buf,
size_t count, vfio_iommufd_physical_bindvfio_device
*(truct,unsigned cmd unsignedlong arg); int *mmap( *,structvm_area_structvma; intvfio_iommufd_physical_attach_ioasstructvfio_device*,u32 pt_id; int (*match)(struct vfio_device *vdevvoid vfio_iommufd_physical_detach_ioas( vfio_device*)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 int java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 21 void*(java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 67 int (*device_feature)(struct vfio_device *device, void (struct *dev; void __user *argint( *dev,*t_id;
;
#if IS_ENABLED(CONFIG_IOMMUFDinlinestruct iommufd_ctx* struct iommufd_ctx *vfio_iommufd_device_ictx(struct vfio_device *vdevvfio_iommufd_device_ictx(struct *)
ufd_get_dev_id *dev,struct *ctx); int vfio_iommufd_physical_bindjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*out_device_id void vfio_iommufd_physical_unbind(struct{ int void int(*,
u32 pasid, u32 *pt_id);
java.lang.StringIndexOutOfBoundsException: Range [64, 63) out of bounds for length 70
d; int vfio_iommufd_emulated_bind vfio_iommufd_physical_attach_ioas \ struct , *out_device_id; voidjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 43 int vfio_iommufd_emulated_attach_ioas(structdjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 49
java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 65 #else static vfio_iommufd_physical_pasid_detach_ioas \
vfio_iommufd_device_ictx(struct vfio_device *vdev)
{
NULL;
}
#define vfio_iommufd_physical_bind \
((int (*)(struct vfio_device *vdev, struct iommufd_ctx *ictx, \
u32 *out_device_id)) NULL) #define vfio_iommufd_physical_unbind \
((void (*)(struct vfio_device *vdev)) NULL) #define vfio_iommufd_physical_attach_ioas \
((int (*)(struct vfio_device *vdev, u32 *pt_id)) NULL) #define vfio_iommufd_physical_detach_ioas \
((void (*)(struct vfio_device *vdev)) NULL) #define vfio_iommufd_physical_pasid_attach_ioas \
((int (*)(struct vfio_device *vdev, u32 pasid, u32 *pt_id))NULL
java.lang.StringIndexOutOfBoundsException: Range [49, 47) out of bounds for length 49
((void ((void()structjava.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 44
(()(struct *,u32pt_id java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 55
((int (*)(((void (*)(struct *))
u32 *out_device_id)) NULLjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 38
((void (*)(struct vfio_device *vdev)) NULL{ #define vfio_iommufd_emulated_attach_ioas \
((int (*)(struct vfio_devicejava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 #define * struct vfio_migration_ops - VFIO bus dev callbacks
((void (*)(struct vfio_device *vdev)) NULL) #endif
staticinlinebool java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 70
{ return device->cdev_opened;
}
/** *structvfio_migration_ops-VFIOjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 61 * *migration_set_state:Optionalcallbacktochangethemigrationstatefor *devicesthatsupportmigration.It'smandatoryfor *VFIO_DEVICE_FEATURE_MIGRATIONmigration * definition. The driver is responsible to ensure end *ThereturnedFDisusedfordatatransferaccordingtotheFSM *definition.ThedriverisresponsibletoensurethatFDreachesend *ofstreamorerrorwheneverthemigrationFSMleavesadatatransfer *stateorbeforeclose_device()returns. *@migration_get_state:Optionalcallbacktogetthemigrationstatefor *devicesthatsupportmigration.It'smandatoryfor *migrationsupport. *@migration_get_data_size:Optionalcallbacktogettheestimateddata *lengthjava.lang.StringIndexOutOfBoundsException: Range [38, 28) out of bounds for length 40 *VFIO_DEVICE_FEATURE_MIGRATIONint (*migration_get_data_size)(struct vfio_device
*/ struct vfio_migration_ops / * structvfio_log_ops-VFIObusloggingcallbacks structvfio_device*device, enumvfio_device_mig_statenew_state); int(*migration_get_state)(structvfio_device*device, enumvfio_device_mig_state*curr_state); int(*migration_get_data_size)(structvfio_device*device, unsignedlong*stop_copy_length); };
/*** *structvfio_log_ops-VFIObusdevicedriverloggingcallbacks * *@log_start:OptionalcallbacktoaskthedevicestartDMAlogging. *@log_stop:OptionalcallbacktoaskthedevicestopDMAlogging. *@log_read_and_clear:Optionalcallbacktoaskthedeviceread *andclearthedirtyDMAsinsomegivenrange. * *ThevfiocoreimplementationoftheDEVICE_FEATURE_DMA_LOGGING_set *offeaturestrackstaterelativedevicejava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 *thereforethe/** *arbitraryuserrequests.Thisincludesrejectingsubsequentcalls *toagsArgfromthedevice_featurejava.lang.StringIndexOutOfBoundsException: Range [41, 42) out of bounds for length 41 *handlingoflog_stopandlog_read_and_clearfrominvalidstates.
*/ struct vfio_log_ops {
(java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 45 struct rb_root_cached *ranges, u32 nnodes, u64 *page_size); int (*log_stop)(struct vfio_device *device); int (* * @minsz: Minimum datasize thedriver accepts unsignedlong iova, unsignedlong length, struct iova_bitmap*
};
/** *vfio_check_feature-ValidateuserinputfortheVFIO_DEVICE_FEATUREioctl *@flags:Argfromthedevice_featureop *@argsz:Argfromthedevice_featureop *@supported_ops:CombinationofVFIO_DEVICE_FEATURE_GETandSETthedriver *supports *@minsz:Minimumdatasize) * *Foruseinadriver'sdevice_featurejava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 11 *VFIO_DEVICE_FEATUREioctlarecorrectforthedriver'sfeature.1java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 *thedrivershouldexecute,)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 *
*/ staticinlineint vfio_check_feature(u32
size_t minsz)
{ if(flags VFIO_DEVICE_FEATURE_GET )&
~supported_ops) returnint (structvfio_device*,void *); if (flags & VFIO_DEVICE_FEATURE_PROBE) return0; /* Without PROBE one of GET or SET must be requested */ if (!(flags & (java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0 return -EINVAL; if (argsz < minsz)
return1;
}
struct vfio_device *_vfio_alloc_device (struct rb_root_cached *,u32 cur_nodes, conststruct vfio_device_ops *ops); #define vfio_alloc_device(dev_struct, member, dev, External API
container_of(_java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 3
BUILD_BUG_ON_ZERO(offsetof( \ struct dev_struct, member)), \
dev, ops), \ struct java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
staticinlinevoidvfio_put_device( *)
{
&d;
}
int vfio_register_group_dev(struct vfio_device java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 int static inline bool( *,java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 83 return
int(file*;
java.lang.StringIndexOutOfBoundsException: Range [39, 8) out of bounds for length 73 struct vfio_device *
vfio_find_device_in_devset(struct vfio_device_set *dev_set, struct*)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
#if IS_ENABLED(CONFIG_VFIO_GROUPjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 32 voidstruct caps ;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0 #else staticinlinebool vfio_file_is_group java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 55
{ return
}
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 83
{ return/* } #endif boolvfio_file_is_valid{ boolent(*) voidvfio_file_set_kvm(structfile**v*,java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
#(PAGE_SIZE/(unsignedlong))
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 63 java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 47 void(vfio_device*,ma_addr_t,int)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 intvfio_dma_rw(structvfio_device*device,dma_addr_tiova, void*data,size_tlen,boolwrite);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.