qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v13 12/22] vfio: Add notifier callback to parent


From: Dong Jia Shi
Subject: Re: [Qemu-devel] [PATCH v13 12/22] vfio: Add notifier callback to parent's ops structure of mdev
Date: Thu, 17 Nov 2016 09:32:43 +0800
User-agent: Mutt/1.7.0 (2016-08-17)

* Kirti Wankhede <address@hidden> [2016-11-16 20:47:18 +0530]:

> 
> 
> On 11/16/2016 12:07 PM, Dong Jia Shi wrote:
> > * Kirti Wankhede <address@hidden> [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;
>         }
Nod. And we need not call vfio_unregister_notifier once error occurs in
open() in this case.

> 
> Thanks,
> Kirti
> 

-- 
Dong Jia




reply via email to

[Prev in Thread] Current Thread [Next in Thread]