On 11/16/2016 12:07 PM, Dong Jia Shi wrote: > * Kirti Wankhede <kwankhede@xxxxxxxxxx> [2016-11-15 20:59:55 +0530]: > > Hi Kirti, > > [...] > >> diff --git a/drivers/vfio/mdev/vfio_mdev.c b/drivers/vfio/mdev/vfio_mdev.c >> index ffc36758cb84..4fc63db38829 100644 >> --- a/drivers/vfio/mdev/vfio_mdev.c >> +++ b/drivers/vfio/mdev/vfio_mdev.c >> @@ -24,6 +24,15 @@ >> #define DRIVER_AUTHOR "NVIDIA Corporation" >> #define DRIVER_DESC "VFIO based driver for Mediated device" >> >> +static int vfio_mdev_notifier(struct notifier_block *nb, unsigned long action, >> + void *data) >> +{ >> + struct mdev_device *mdev = container_of(nb, struct mdev_device, nb); >> + struct parent_device *parent = mdev->parent; >> + >> + return parent->ops->notifier(mdev, action, data); >> +} >> + >> static int vfio_mdev_open(void *device_data) >> { >> struct mdev_device *mdev = device_data; >> @@ -36,9 +45,18 @@ static int vfio_mdev_open(void *device_data) >> if (!try_module_get(THIS_MODULE)) >> return -ENODEV; >> >> + if (likely(parent->ops->notifier)) { >> + mdev->nb.notifier_call = vfio_mdev_notifier; >> + if (vfio_register_notifier(&mdev->dev, &mdev->nb)) >> + pr_err("Failed to register notifier for mdev\n"); > I think we should just return here if the error value is not -ENOTTY. > It might be the case where iommu backend module might not support .register_notifier(). In that case vfio_register_notifier() returns -ENOTTY and that should not fail this open() call Changing it to: ret = vfio_register_notifier(&mdev->dev, &mdev->nb); if (ret && (ret != -ENOTTY)) { pr_err("Failed to register notifier for mdev\n"); module_put(THIS_MODULE); return ret; } Thanks, Kirti -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html