From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jike Song Subject: Re: [v4 2/3] vfio_register_notifier: also register on the group notifier Date: Wed, 16 Nov 2016 11:01:37 +0800 Message-ID: <582BCC11.80202@intel.com> References: <1479209747-5564-1-git-send-email-jike.song@intel.com> <1479209747-5564-3-git-send-email-jike.song@intel.com> <20161115161125.7d75fb49@t450s.home> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: pbonzini@redhat.com, guangrong.xiao@linux.intel.com, kwankhede@nvidia.com, cjia@nvidia.com, kevin.tian@intel.com, kvm@vger.kernel.org To: Alex Williamson Return-path: Received: from mga09.intel.com ([134.134.136.24]:37960 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752269AbcKPDF1 (ORCPT ); Tue, 15 Nov 2016 22:05:27 -0500 In-Reply-To: <20161115161125.7d75fb49@t450s.home> Sender: kvm-owner@vger.kernel.org List-ID: On 11/16/2016 07:11 AM, Alex Williamson wrote: > On Tue, 15 Nov 2016 19:35:46 +0800 > Jike Song wrote: > >> The user of vfio_register_notifier might care about not only >> iommu events but also vfio_group events, so also register the >> notifier_block on vfio_group. >> >> Cc: Xiao Guangrong >> Cc: Paolo Bonzini >> Cc: Alex Williamson >> Signed-off-by: Jike Song >> --- >> drivers/vfio/vfio.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c >> index b149ced..2c0eedb 100644 >> --- a/drivers/vfio/vfio.c >> +++ b/drivers/vfio/vfio.c >> @@ -2065,6 +2065,8 @@ int vfio_register_notifier(struct device *dev, struct notifier_block *nb) >> else >> ret = -ENOTTY; >> >> + vfio_group_register_notifier(group, nb); >> + >> up_read(&container->group_lock); >> vfio_group_try_dissolve_container(group); >> >> @@ -2102,6 +2104,8 @@ int vfio_unregister_notifier(struct device *dev, struct notifier_block *nb) >> else >> ret = -ENOTTY; >> >> + vfio_group_unregister_notifier(group, nb); >> + >> up_read(&container->group_lock); >> vfio_group_try_dissolve_container(group); >> > > You haven't addressed the error paths, if the iommu driver returns > error and therefore the {un}register returns error, what is the caller > to expect about the group registration? > Will change to: driver = container->iommu_driver; if (likely(driver && driver->ops->register_notifier)) ret = driver->ops->register_notifier(container->iommu_data, nb); else ret = -ENOTTY; if (ret) goto err_register_iommu; ret = vfio_group_register_notifier(group, nb); if (ret) driver->ops->unregister_notifier(container->iommu_data, nb); err_register_iommu: up_read(&container->group_lock); vfio_group_try_dissolve_container(group); err_register_nb: vfio_group_put(group); return ret; -- Thanks, Jike