Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp1194280rwe; Sat, 27 Aug 2022 02:52:48 -0700 (PDT) X-Google-Smtp-Source: AA6agR7JP6iU2RLcXlULdizz3kmiLd8deo08yxEiw/wHbLlSs13YdMAvSbVeR/CWgco3hsTni9b2 X-Received: by 2002:a05:6402:3692:b0:448:3d52:8f76 with SMTP id ej18-20020a056402369200b004483d528f76mr94879edb.302.1661593968451; Sat, 27 Aug 2022 02:52:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661593968; cv=none; d=google.com; s=arc-20160816; b=LLi/ISJq52BBetKrwSNvUyFfWe1uGtcwB6ITD3eaIZZqT8sHP5o3dAkxYLMyNktimn a2VVOeBTvGizTeZaWmICB9fdCEgXNPSJSUmmglpr6XdfG0SzuINRXuX3OmtlfWr3EZxQ IbO6j7pnqgq7Xt8MZ+yJaGXexktUAmwUUonxLnLPTVxP7R0coFZW3Epvyo3CTxep6NUo R6v8DqFCjH2PaSKBJPYckwJ32pSPCEnSp5XLzvFV0dqnejGHwwZ/AQD5DaBb8CZ44IID G8k/IhBuS4mOg/1endY/rASvVRtb5SizCcuJDJJwNuPQLEMdTs8hUo2JEruMrmifVOwE zIZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=bh9MjBECNIvBXycUuXZ7tl0AQgQhE32Irx4428+3xKA=; b=gIk56UIlCzIWyXVwZcJnzonSwI1iNjuNW83fhlQn7P4aHS+7gfO0qlsKC09ppQmjNI vhU+GmX7MsctUyPBT1TvVg8a675p52pxxmnLGDjI0FdIUpHKyrxtrZ/SSIxllifD3obQ UWa65zHvpmD38g0tXz8slz6/WIohKdS5rEt7ZgiDSIm//jcl4+J4EoLU3Y4Fxs3KnbEG xI5GovoJMWqt6E+V2lx22AhZVwVVQqMIOrJkPCC73dLIiZvOSqRmQDnx6Jpsyie+Kpy7 5TJs2gGQlxTHB9RwSpT5bUqkDnnc5S/DVGa+OcLWOwaBhnvaoCsKF+FmTY50bT94S+96 84QQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Msp5MKqn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l21-20020a50d6d5000000b0044628c209c3si2657200edj.632.2022.08.27.02.52.23; Sat, 27 Aug 2022 02:52:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Msp5MKqn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234534AbiH0Juo (ORCPT + 99 others); Sat, 27 Aug 2022 05:50:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234460AbiH0Ju0 (ORCPT ); Sat, 27 Aug 2022 05:50:26 -0400 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77E885F107; Sat, 27 Aug 2022 02:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1661593819; x=1693129819; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FZ5hdZT6robo7+uwQVVe3h+/xlMhsTaJHT0t2T4polI=; b=Msp5MKqnMKZoNt2esPDZA38SD0OWPU6Uo74mF+VTe4Onvt3kM3qRUaYa Hk2HHeYBe9fS2Auv9fzgof2843fqWGo7sfwL+aaDSPa1AlWJyFEHouthn s+jMmODROlcJcaYG/SOwrREzh6RzxsMOijw1QZFDxjMf4Zhob4Z2HXWTs W1FUlvkZJ4hzX8ZsvYYpWOkcum4R8IAtNoXdbUcEZz0mbZ3VTQThNuS7c BUMHoJcVNuQVwCbOIsfT/AwSh0HMLDfCz2BuI+mYY0cNkZFrAyf+v7o8d VNsWVxj1+1ykko4uhZanfF+joIQs+LrnZ1aZFHS1XQvvr9OeCdIU7fLt3 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10451"; a="358616811" X-IronPort-AV: E=Sophos;i="5.93,267,1654585200"; d="scan'208";a="358616811" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Aug 2022 02:50:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,267,1654585200"; d="scan'208";a="640353832" Received: from sqa-gate.sh.intel.com (HELO michael.clx.dev.tsp.org) ([10.239.48.212]) by orsmga008.jf.intel.com with ESMTP; 27 Aug 2022 02:50:04 -0700 From: Kevin Tian To: Zhenyu Wang , Zhi Wang , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter , Eric Farman , Matthew Rosato , Halil Pasic , Vineeth Vijayan , Peter Oberparleiter , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , Tony Krowiak , Jason Herne , Harald Freudenberger , Diana Craciun , Alex Williamson , Cornelia Huck , Longfang Liu , Shameer Kolothum , Jason Gunthorpe , Yishai Hadas , Kevin Tian , Eric Auger , Kirti Wankhede , Leon Romanovsky , Abhishek Sahu , 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 Subject: [PATCH 03/15] vfio/mlx5: Use the new device life cycle helpers Date: Sun, 28 Aug 2022 01:10:25 +0800 Message-Id: <20220827171037.30297-4-kevin.tian@intel.com> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20220827171037.30297-1-kevin.tian@intel.com> References: <20220827171037.30297-1-kevin.tian@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yi Liu mlx5 has its own @init/@release for handling migration cap. Signed-off-by: Yi Liu Signed-off-by: Kevin Tian --- drivers/vfio/pci/mlx5/main.c | 49 ++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/drivers/vfio/pci/mlx5/main.c b/drivers/vfio/pci/mlx5/main.c index a9b63d15c5d3..96d1f974f0b5 100644 --- a/drivers/vfio/pci/mlx5/main.c +++ b/drivers/vfio/pci/mlx5/main.c @@ -579,8 +579,35 @@ static const struct vfio_migration_ops mlx5vf_pci_mig_ops = { .migration_get_state = mlx5vf_pci_get_device_state, }; +static int mlx5vf_pci_init_dev(struct vfio_device *core_vdev) +{ + struct mlx5vf_pci_core_device *mvdev = container_of( + core_vdev, struct mlx5vf_pci_core_device, core_device.vdev); + int ret; + + ret = vfio_pci_core_init_dev(core_vdev); + if (ret) + return ret; + + mlx5vf_cmd_set_migratable(mvdev, &mlx5vf_pci_mig_ops); + + return 0; + +} + +static void mlx5vf_pci_release_dev(struct vfio_device *core_vdev) +{ + struct mlx5vf_pci_core_device *mvdev = container_of( + core_vdev, struct mlx5vf_pci_core_device, core_device.vdev); + + mlx5vf_cmd_remove_migratable(mvdev); + vfio_pci_core_release_dev(core_vdev); +} + static const struct vfio_device_ops mlx5vf_pci_ops = { .name = "mlx5-vfio-pci", + .init = mlx5vf_pci_init_dev, + .release = mlx5vf_pci_release_dev, .open_device = mlx5vf_pci_open_device, .close_device = mlx5vf_pci_close_device, .ioctl = vfio_pci_core_ioctl, @@ -598,21 +625,19 @@ static int mlx5vf_pci_probe(struct pci_dev *pdev, struct mlx5vf_pci_core_device *mvdev; int ret; - mvdev = kzalloc(sizeof(*mvdev), GFP_KERNEL); - if (!mvdev) - return -ENOMEM; - vfio_pci_core_init_device(&mvdev->core_device, pdev, &mlx5vf_pci_ops); - mlx5vf_cmd_set_migratable(mvdev, &mlx5vf_pci_mig_ops); + mvdev = vfio_alloc_device(mlx5vf_pci_core_device, core_device.vdev, + &pdev->dev, &mlx5vf_pci_ops); + if (IS_ERR(mvdev)) + return PTR_ERR(mvdev); + dev_set_drvdata(&pdev->dev, &mvdev->core_device); ret = vfio_pci_core_register_device(&mvdev->core_device); if (ret) - goto out_free; + goto out_put_vdev; return 0; -out_free: - mlx5vf_cmd_remove_migratable(mvdev); - vfio_pci_core_uninit_device(&mvdev->core_device); - kfree(mvdev); +out_put_vdev: + vfio_put_device(&mvdev->core_device.vdev); return ret; } @@ -621,9 +646,7 @@ static void mlx5vf_pci_remove(struct pci_dev *pdev) struct mlx5vf_pci_core_device *mvdev = mlx5vf_drvdata(pdev); vfio_pci_core_unregister_device(&mvdev->core_device); - mlx5vf_cmd_remove_migratable(mvdev); - vfio_pci_core_uninit_device(&mvdev->core_device); - kfree(mvdev); + vfio_put_device(&mvdev->core_device.vdev); } static const struct pci_device_id mlx5vf_pci_table[] = { -- 2.21.3