Skip to content

Commit

Permalink
vfio: platform: move reset call to a common function
Browse files Browse the repository at this point in the history
The reset call sequence seems to replicate itself multiple times
across the file. Grouping them together for maintenance reasons.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Reviewed-by: Eric Auger <eric.auger@linaro.org>
Reviewed-by: Baptiste Reynal <b.reynal@virtualopensystems.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
  • Loading branch information
Sinan Kaya authored and Alex Williamson committed Jul 19, 2016
1 parent 7aef80c commit f084aa7
Showing 1 changed file with 14 additions and 16 deletions.
30 changes: 14 additions & 16 deletions drivers/vfio/platform/vfio_platform_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,19 +134,25 @@ static void vfio_platform_regions_cleanup(struct vfio_platform_device *vdev)
kfree(vdev->regions);
}

static int vfio_platform_call_reset(struct vfio_platform_device *vdev)
{
if (vdev->of_reset) {
dev_info(vdev->device, "reset\n");
return vdev->of_reset(vdev);
}

dev_warn(vdev->device, "no reset function found!\n");
return -EINVAL;
}

static void vfio_platform_release(void *device_data)
{
struct vfio_platform_device *vdev = device_data;

mutex_lock(&driver_lock);

if (!(--vdev->refcnt)) {
if (vdev->of_reset) {
dev_info(vdev->device, "reset\n");
vdev->of_reset(vdev);
} else {
dev_warn(vdev->device, "no reset function found!\n");
}
vfio_platform_call_reset(vdev);
vfio_platform_regions_cleanup(vdev);
vfio_platform_irq_cleanup(vdev);
}
Expand Down Expand Up @@ -175,12 +181,7 @@ static int vfio_platform_open(void *device_data)
if (ret)
goto err_irq;

if (vdev->of_reset) {
dev_info(vdev->device, "reset\n");
vdev->of_reset(vdev);
} else {
dev_warn(vdev->device, "no reset function found!\n");
}
vfio_platform_call_reset(vdev);
}

vdev->refcnt++;
Expand Down Expand Up @@ -312,10 +313,7 @@ static long vfio_platform_ioctl(void *device_data,
return ret;

} else if (cmd == VFIO_DEVICE_RESET) {
if (vdev->of_reset)
return vdev->of_reset(vdev);
else
return -EINVAL;
return vfio_platform_call_reset(vdev);
}

return -ENOTTY;
Expand Down

0 comments on commit f084aa7

Please sign in to comment.