mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
vfio/pci: Share the core device pointer while invoking feature functions
There is no need to share the main device pointer (struct vfio_device *) with all the feature functions as they only need the core device pointer. Therefore, extract the core device pointer once in the caller (vfio_pci_core_ioctl_feature) and share it instead. Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Tested-by: Alex Mastro <amastro@fb.com> Tested-by: Nicolin Chen <nicolinc@nvidia.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Acked-by: Ankit Agrawal <ankita@nvidia.com> Link: https://lore.kernel.org/r/20251120-dmabuf-vfio-v9-8-d7f71607f371@nvidia.com Signed-off-by: Alex Williamson <alex@shazbot.org>
This commit is contained in:
committed by
Alex Williamson
parent
64a5dedcff
commit
47d13c939d
@@ -299,11 +299,9 @@ static int vfio_pci_runtime_pm_entry(struct vfio_pci_core_device *vdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vfio_pci_core_pm_entry(struct vfio_device *device, u32 flags,
|
||||
static int vfio_pci_core_pm_entry(struct vfio_pci_core_device *vdev, u32 flags,
|
||||
void __user *arg, size_t argsz)
|
||||
{
|
||||
struct vfio_pci_core_device *vdev =
|
||||
container_of(device, struct vfio_pci_core_device, vdev);
|
||||
int ret;
|
||||
|
||||
ret = vfio_check_feature(flags, argsz, VFIO_DEVICE_FEATURE_SET, 0);
|
||||
@@ -320,12 +318,10 @@ static int vfio_pci_core_pm_entry(struct vfio_device *device, u32 flags,
|
||||
}
|
||||
|
||||
static int vfio_pci_core_pm_entry_with_wakeup(
|
||||
struct vfio_device *device, u32 flags,
|
||||
struct vfio_pci_core_device *vdev, u32 flags,
|
||||
struct vfio_device_low_power_entry_with_wakeup __user *arg,
|
||||
size_t argsz)
|
||||
{
|
||||
struct vfio_pci_core_device *vdev =
|
||||
container_of(device, struct vfio_pci_core_device, vdev);
|
||||
struct vfio_device_low_power_entry_with_wakeup entry;
|
||||
struct eventfd_ctx *efdctx;
|
||||
int ret;
|
||||
@@ -376,11 +372,9 @@ static void vfio_pci_runtime_pm_exit(struct vfio_pci_core_device *vdev)
|
||||
up_write(&vdev->memory_lock);
|
||||
}
|
||||
|
||||
static int vfio_pci_core_pm_exit(struct vfio_device *device, u32 flags,
|
||||
static int vfio_pci_core_pm_exit(struct vfio_pci_core_device *vdev, u32 flags,
|
||||
void __user *arg, size_t argsz)
|
||||
{
|
||||
struct vfio_pci_core_device *vdev =
|
||||
container_of(device, struct vfio_pci_core_device, vdev);
|
||||
int ret;
|
||||
|
||||
ret = vfio_check_feature(flags, argsz, VFIO_DEVICE_FEATURE_SET, 0);
|
||||
@@ -1473,11 +1467,10 @@ long vfio_pci_core_ioctl(struct vfio_device *core_vdev, unsigned int cmd,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vfio_pci_core_ioctl);
|
||||
|
||||
static int vfio_pci_core_feature_token(struct vfio_device *device, u32 flags,
|
||||
uuid_t __user *arg, size_t argsz)
|
||||
static int vfio_pci_core_feature_token(struct vfio_pci_core_device *vdev,
|
||||
u32 flags, uuid_t __user *arg,
|
||||
size_t argsz)
|
||||
{
|
||||
struct vfio_pci_core_device *vdev =
|
||||
container_of(device, struct vfio_pci_core_device, vdev);
|
||||
uuid_t uuid;
|
||||
int ret;
|
||||
|
||||
@@ -1504,16 +1497,19 @@ static int vfio_pci_core_feature_token(struct vfio_device *device, u32 flags,
|
||||
int vfio_pci_core_ioctl_feature(struct vfio_device *device, u32 flags,
|
||||
void __user *arg, size_t argsz)
|
||||
{
|
||||
struct vfio_pci_core_device *vdev =
|
||||
container_of(device, struct vfio_pci_core_device, vdev);
|
||||
|
||||
switch (flags & VFIO_DEVICE_FEATURE_MASK) {
|
||||
case VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY:
|
||||
return vfio_pci_core_pm_entry(device, flags, arg, argsz);
|
||||
return vfio_pci_core_pm_entry(vdev, flags, arg, argsz);
|
||||
case VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP:
|
||||
return vfio_pci_core_pm_entry_with_wakeup(device, flags,
|
||||
return vfio_pci_core_pm_entry_with_wakeup(vdev, flags,
|
||||
arg, argsz);
|
||||
case VFIO_DEVICE_FEATURE_LOW_POWER_EXIT:
|
||||
return vfio_pci_core_pm_exit(device, flags, arg, argsz);
|
||||
return vfio_pci_core_pm_exit(vdev, flags, arg, argsz);
|
||||
case VFIO_DEVICE_FEATURE_PCI_VF_TOKEN:
|
||||
return vfio_pci_core_feature_token(device, flags, arg, argsz);
|
||||
return vfio_pci_core_feature_token(vdev, flags, arg, argsz);
|
||||
default:
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user