From: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
To: Kevin Tian <kevin.tian@intel.com>,
Zhenyu Wang <zhenyuw@linux.intel.com>,
Zhi Wang <zhi.a.wang@intel.com>,
Jani Nikula <jani.nikula@linux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
Eric Farman <farman@linux.ibm.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Halil Pasic <pasic@linux.ibm.com>,
Vineeth Vijayan <vneethv@linux.ibm.com>,
"Peter Oberparleiter" <oberpar@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Tony Krowiak <akrowiak@linux.ibm.com>,
Jason Herne <jjherne@linux.ibm.com>,
Harald Freudenberger <freude@linux.ibm.com>,
Diana Craciun <diana.craciun@oss.nxp.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
liulongfang <liulongfang@huawei.com>,
Jason Gunthorpe <jgg@ziepe.ca>,
"Yishai Hadas" <yishaih@nvidia.com>,
Eric Auger <eric.auger@redhat.com>,
"Kirti Wankhede" <kwankhede@nvidia.com>,
Leon Romanovsky <leon@kernel.org>,
Abhishek Sahu <abhsahu@nvidia.com>,
"intel-gvt-dev@lists.freedesktop.org"
<intel-gvt-dev@lists.freedesktop.org>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Cc: Yi Liu <yi.l.liu@intel.com>
Subject: RE: [PATCH 04/15] vfio/hisi_acc: Use the new device life cycle helpers
Date: Wed, 31 Aug 2022 07:36:02 +0000 [thread overview]
Message-ID: <fcbcc84a6c1148fa943576522cb906ce@huawei.com> (raw)
In-Reply-To: <20220827171037.30297-5-kevin.tian@intel.com>
> -----Original Message-----
> From: Kevin Tian [mailto:kevin.tian@intel.com]
> Sent: 27 August 2022 18:10
> To: Zhenyu Wang <zhenyuw@linux.intel.com>; Zhi Wang
> <zhi.a.wang@intel.com>; Jani Nikula <jani.nikula@linux.intel.com>; Joonas
> Lahtinen <joonas.lahtinen@linux.intel.com>; Rodrigo Vivi
> <rodrigo.vivi@intel.com>; Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>;
> David Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; Eric Farman
> <farman@linux.ibm.com>; Matthew Rosato <mjrosato@linux.ibm.com>;
> Halil Pasic <pasic@linux.ibm.com>; Vineeth Vijayan
> <vneethv@linux.ibm.com>; Peter Oberparleiter <oberpar@linux.ibm.com>;
> Heiko Carstens <hca@linux.ibm.com>; Vasily Gorbik <gor@linux.ibm.com>;
> Alexander Gordeev <agordeev@linux.ibm.com>; Christian Borntraeger
> <borntraeger@linux.ibm.com>; Sven Schnelle <svens@linux.ibm.com>; Tony
> Krowiak <akrowiak@linux.ibm.com>; Jason Herne <jjherne@linux.ibm.com>;
> Harald Freudenberger <freude@linux.ibm.com>; Diana Craciun
> <diana.craciun@oss.nxp.com>; Alex Williamson
> <alex.williamson@redhat.com>; Cornelia Huck <cohuck@redhat.com>;
> liulongfang <liulongfang@huawei.com>; Shameerali Kolothum Thodi
> <shameerali.kolothum.thodi@huawei.com>; Jason Gunthorpe
> <jgg@ziepe.ca>; Yishai Hadas <yishaih@nvidia.com>; Kevin Tian
> <kevin.tian@intel.com>; Eric Auger <eric.auger@redhat.com>; Kirti
> Wankhede <kwankhede@nvidia.com>; Leon Romanovsky <leon@kernel.org>;
> Abhishek Sahu <abhsahu@nvidia.com>; intel-gvt-dev@lists.freedesktop.org;
> intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org;
> linux-kernel@vger.kernel.org; linux-s390@vger.kernel.org;
> kvm@vger.kernel.org
> Cc: Yi Liu <yi.l.liu@intel.com>
> Subject: [PATCH 04/15] vfio/hisi_acc: Use the new device life cycle helpers
>
> From: Yi Liu <yi.l.liu@intel.com>
>
> Tidy up @probe so all migration specific initialization logic is moved
> to migration specific @init callback.
>
> Remove vfio_pci_core_{un}init_device() given no user now.
This looks fine to me and the probe() is indeed much cleaner now.
Reviewed-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Thanks,
Shameer
> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
> Signed-off-by: Kevin Tian <kevin.tian@intel.com>
> ---
> .../vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 80 +++++++++----------
> drivers/vfio/pci/vfio_pci_core.c | 30 -------
> include/linux/vfio_pci_core.h | 4 -
> 3 files changed, 37 insertions(+), 77 deletions(-)
>
> diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> index ea762e28c1cc..f06f9a799128 100644
> --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
> @@ -1213,8 +1213,28 @@ static const struct vfio_migration_ops
> hisi_acc_vfio_pci_migrn_state_ops = {
> .migration_get_state = hisi_acc_vfio_pci_get_device_state,
> };
>
> +int hisi_acc_vfio_pci_migrn_init_dev(struct vfio_device *core_vdev)
> +{
> + struct hisi_acc_vf_core_device *hisi_acc_vdev =
> container_of(core_vdev,
> + struct hisi_acc_vf_core_device, core_device.vdev);
> + struct pci_dev *pdev = to_pci_dev(core_vdev->dev);
> + struct hisi_qm *pf_qm = hisi_acc_get_pf_qm(pdev);
> +
> + hisi_acc_vdev->vf_id = pci_iov_vf_id(pdev) + 1;
> + hisi_acc_vdev->pf_qm = pf_qm;
> + hisi_acc_vdev->vf_dev = pdev;
> + mutex_init(&hisi_acc_vdev->state_mutex);
> +
> + core_vdev->migration_flags = VFIO_MIGRATION_STOP_COPY;
> + core_vdev->mig_ops = &hisi_acc_vfio_pci_migrn_state_ops;
> +
> + return vfio_pci_core_init_dev(core_vdev);
> +}
> +
> static const struct vfio_device_ops hisi_acc_vfio_pci_migrn_ops = {
> .name = "hisi-acc-vfio-pci-migration",
> + .init = hisi_acc_vfio_pci_migrn_init_dev,
> + .release = vfio_pci_core_release_dev,
> .open_device = hisi_acc_vfio_pci_open_device,
> .close_device = hisi_acc_vfio_pci_close_device,
> .ioctl = hisi_acc_vfio_pci_ioctl,
> @@ -1228,6 +1248,8 @@ static const struct vfio_device_ops
> hisi_acc_vfio_pci_migrn_ops = {
>
> static const struct vfio_device_ops hisi_acc_vfio_pci_ops = {
> .name = "hisi-acc-vfio-pci",
> + .init = vfio_pci_core_init_dev,
> + .release = vfio_pci_core_release_dev,
> .open_device = hisi_acc_vfio_pci_open_device,
> .close_device = vfio_pci_core_close_device,
> .ioctl = vfio_pci_core_ioctl,
> @@ -1239,63 +1261,36 @@ static const struct vfio_device_ops
> hisi_acc_vfio_pci_ops = {
> .match = vfio_pci_core_match,
> };
>
> -static int
> -hisi_acc_vfio_pci_migrn_init(struct hisi_acc_vf_core_device *hisi_acc_vdev,
> - struct pci_dev *pdev, struct hisi_qm *pf_qm)
> -{
> - int vf_id;
> -
> - vf_id = pci_iov_vf_id(pdev);
> - if (vf_id < 0)
> - return vf_id;
> -
> - hisi_acc_vdev->vf_id = vf_id + 1;
> - hisi_acc_vdev->core_device.vdev.migration_flags =
> - VFIO_MIGRATION_STOP_COPY;
> - hisi_acc_vdev->pf_qm = pf_qm;
> - hisi_acc_vdev->vf_dev = pdev;
> - mutex_init(&hisi_acc_vdev->state_mutex);
> -
> - return 0;
> -}
> -
> static int hisi_acc_vfio_pci_probe(struct pci_dev *pdev, const struct
> pci_device_id *id)
> {
> struct hisi_acc_vf_core_device *hisi_acc_vdev;
> + const struct vfio_device_ops *ops = &hisi_acc_vfio_pci_ops;
> struct hisi_qm *pf_qm;
> + int vf_id;
> int ret;
>
> - hisi_acc_vdev = kzalloc(sizeof(*hisi_acc_vdev), GFP_KERNEL);
> - if (!hisi_acc_vdev)
> - return -ENOMEM;
> -
> pf_qm = hisi_acc_get_pf_qm(pdev);
> if (pf_qm && pf_qm->ver >= QM_HW_V3) {
> - ret = hisi_acc_vfio_pci_migrn_init(hisi_acc_vdev, pdev, pf_qm);
> - if (!ret) {
> - vfio_pci_core_init_device(&hisi_acc_vdev->core_device, pdev,
> - &hisi_acc_vfio_pci_migrn_ops);
> - hisi_acc_vdev->core_device.vdev.mig_ops =
> - &hisi_acc_vfio_pci_migrn_state_ops;
> - } else {
> + vf_id = pci_iov_vf_id(pdev);
> + if (vf_id >= 0)
> + ops = &hisi_acc_vfio_pci_migrn_ops;
> + else
> pci_warn(pdev, "migration support failed, continue with
> generic interface\n");
> - vfio_pci_core_init_device(&hisi_acc_vdev->core_device, pdev,
> - &hisi_acc_vfio_pci_ops);
> - }
> - } else {
> - vfio_pci_core_init_device(&hisi_acc_vdev->core_device, pdev,
> - &hisi_acc_vfio_pci_ops);
> }
>
> + hisi_acc_vdev = vfio_alloc_device(hisi_acc_vf_core_device,
> + core_device.vdev, &pdev->dev, ops);
> + if (IS_ERR(hisi_acc_vdev))
> + return PTR_ERR(hisi_acc_vdev);
> +
> dev_set_drvdata(&pdev->dev, &hisi_acc_vdev->core_device);
> ret = vfio_pci_core_register_device(&hisi_acc_vdev->core_device);
> if (ret)
> - goto out_free;
> + goto out_put_vdev;
> return 0;
>
> -out_free:
> - vfio_pci_core_uninit_device(&hisi_acc_vdev->core_device);
> - kfree(hisi_acc_vdev);
> +out_put_vdev:
> + vfio_put_device(&hisi_acc_vdev->core_device.vdev);
> return ret;
> }
>
> @@ -1304,8 +1299,7 @@ static void hisi_acc_vfio_pci_remove(struct
> pci_dev *pdev)
> struct hisi_acc_vf_core_device *hisi_acc_vdev =
> hssi_acc_drvdata(pdev);
>
> vfio_pci_core_unregister_device(&hisi_acc_vdev->core_device);
> - vfio_pci_core_uninit_device(&hisi_acc_vdev->core_device);
> - kfree(hisi_acc_vdev);
> + vfio_put_device(&hisi_acc_vdev->core_device.vdev);
> }
>
> static const struct pci_device_id hisi_acc_vfio_pci_table[] = {
> diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
> index 708b61d1b364..f29d780e327e 100644
> --- a/drivers/vfio/pci/vfio_pci_core.c
> +++ b/drivers/vfio/pci/vfio_pci_core.c
> @@ -1860,36 +1860,6 @@ void vfio_pci_core_release_dev(struct
> vfio_device *core_vdev)
> }
> EXPORT_SYMBOL_GPL(vfio_pci_core_release_dev);
>
> -void vfio_pci_core_init_device(struct vfio_pci_core_device *vdev,
> - struct pci_dev *pdev,
> - const struct vfio_device_ops *vfio_pci_ops)
> -{
> - vfio_init_group_dev(&vdev->vdev, &pdev->dev, vfio_pci_ops);
> - vdev->pdev = pdev;
> - vdev->irq_type = VFIO_PCI_NUM_IRQS;
> - mutex_init(&vdev->igate);
> - spin_lock_init(&vdev->irqlock);
> - mutex_init(&vdev->ioeventfds_lock);
> - INIT_LIST_HEAD(&vdev->dummy_resources_list);
> - INIT_LIST_HEAD(&vdev->ioeventfds_list);
> - mutex_init(&vdev->vma_lock);
> - INIT_LIST_HEAD(&vdev->vma_list);
> - INIT_LIST_HEAD(&vdev->sriov_pfs_item);
> - init_rwsem(&vdev->memory_lock);
> -}
> -EXPORT_SYMBOL_GPL(vfio_pci_core_init_device);
> -
> -void vfio_pci_core_uninit_device(struct vfio_pci_core_device *vdev)
> -{
> - mutex_destroy(&vdev->igate);
> - mutex_destroy(&vdev->ioeventfds_lock);
> - mutex_destroy(&vdev->vma_lock);
> - vfio_uninit_group_dev(&vdev->vdev);
> - kfree(vdev->region);
> - kfree(vdev->pm_save);
> -}
> -EXPORT_SYMBOL_GPL(vfio_pci_core_uninit_device);
> -
> int vfio_pci_core_register_device(struct vfio_pci_core_device *vdev)
> {
> struct pci_dev *pdev = vdev->pdev;
> diff --git a/include/linux/vfio_pci_core.h b/include/linux/vfio_pci_core.h
> index 98c8c66e2400..9f10ff34b2ba 100644
> --- a/include/linux/vfio_pci_core.h
> +++ b/include/linux/vfio_pci_core.h
> @@ -230,13 +230,9 @@ static inline void vfio_pci_zdev_close_device(struct
> vfio_pci_core_device *vdev)
> void vfio_pci_core_set_params(bool nointxmask, bool is_disable_vga,
> bool is_disable_idle_d3);
> void vfio_pci_core_close_device(struct vfio_device *core_vdev);
> -void vfio_pci_core_init_device(struct vfio_pci_core_device *vdev,
> - struct pci_dev *pdev,
> - const struct vfio_device_ops *vfio_pci_ops);
> int vfio_pci_core_init_dev(struct vfio_device *core_vdev);
> void vfio_pci_core_release_dev(struct vfio_device *core_vdev);
> int vfio_pci_core_register_device(struct vfio_pci_core_device *vdev);
> -void vfio_pci_core_uninit_device(struct vfio_pci_core_device *vdev);
> void vfio_pci_core_unregister_device(struct vfio_pci_core_device *vdev);
> extern const struct pci_error_handlers vfio_pci_core_err_handlers;
> int vfio_pci_core_sriov_configure(struct vfio_pci_core_device *vdev,
> --
> 2.21.3
next prev parent reply other threads:[~2022-08-31 7:36 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-27 17:10 [PATCH 00/15] Tidy up vfio_device life cycle Kevin Tian
2022-08-27 17:10 ` [PATCH 01/15] vfio: Add helpers for unifying " Kevin Tian
2022-08-30 13:42 ` Anthony Krowiak
2022-08-30 15:10 ` Jason Gunthorpe
2022-08-30 19:43 ` Anthony Krowiak
2022-08-31 6:03 ` Tian, Kevin
2022-08-27 17:10 ` [PATCH 02/15] vfio/pci: Use the new device life cycle helpers Kevin Tian
2022-08-27 17:10 ` [PATCH 03/15] vfio/mlx5: " Kevin Tian
2022-08-27 17:10 ` [PATCH 04/15] vfio/hisi_acc: " Kevin Tian
2022-08-31 7:36 ` Shameerali Kolothum Thodi [this message]
2022-08-27 17:10 ` [PATCH 05/15] vfio/mdpy: " Kevin Tian
2022-08-27 17:10 ` [PATCH 06/15] vfio/mtty: " Kevin Tian
2022-08-27 17:10 ` [PATCH 07/15] vfio/mbochs: " Kevin Tian
2022-08-27 17:10 ` [PATCH 08/15] drm/i915/gvt: " Kevin Tian
2022-08-27 17:10 ` [PATCH 09/15] vfio/ap: " Kevin Tian
2022-08-30 13:43 ` Anthony Krowiak
2022-08-27 17:10 ` [PATCH 10/15] vfio/fsl-mc: " Kevin Tian
2022-08-31 0:22 ` Jason Gunthorpe
2022-08-31 6:14 ` Tian, Kevin
2022-08-27 17:10 ` [PATCH 11/15] vfio/platform: " Kevin Tian
2022-08-27 17:10 ` [PATCH 12/15] vfio/amba: " Kevin Tian
2022-08-27 17:10 ` [PATCH 13/15] vfio/ccw: " Kevin Tian
2022-08-27 10:39 ` Tian, Kevin
2022-08-27 17:10 ` [PATCH 14/15] vfio: Rename vfio_device_put() and vfio_device_try_get() Kevin Tian
2022-08-27 17:10 ` [PATCH 15/15] vfio: Add struct device to vfio_device Kevin Tian
2022-08-30 22:18 ` Alex Williamson
2022-08-30 23:53 ` Jason Gunthorpe
2022-08-31 6:10 ` Tian, Kevin
2022-08-31 17:15 ` Alex Williamson
2022-09-01 0:46 ` Tian, Kevin
2022-09-01 2:05 ` Alex Williamson
2022-08-31 0:32 ` Jason Gunthorpe
2022-08-31 6:14 ` Tian, Kevin
2022-08-27 22:41 ` [PATCH 00/15] Tidy up vfio_device life cycle Tian, Kevin
2022-08-31 0:34 ` Jason Gunthorpe
2022-08-31 6:14 ` Tian, Kevin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fcbcc84a6c1148fa943576522cb906ce@huawei.com \
--to=shameerali.kolothum.thodi@huawei.com \
--cc=abhsahu@nvidia.com \
--cc=agordeev@linux.ibm.com \
--cc=airlied@linux.ie \
--cc=akrowiak@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=daniel@ffwll.ch \
--cc=diana.craciun@oss.nxp.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=eric.auger@redhat.com \
--cc=farman@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jgg@ziepe.ca \
--cc=jjherne@linux.ibm.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=liulongfang@huawei.com \
--cc=mjrosato@linux.ibm.com \
--cc=oberpar@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=rodrigo.vivi@intel.com \
--cc=svens@linux.ibm.com \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=vneethv@linux.ibm.com \
--cc=yi.l.liu@intel.com \
--cc=yishaih@nvidia.com \
--cc=zhenyuw@linux.intel.com \
--cc=zhi.a.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox