From: "Laguna, Lukasz" <lukasz.laguna@intel.com>
To: Kamil Konieczny <kamil.konieczny@linux.intel.com>,
<igt-dev@lists.freedesktop.org>,
<marcin.bernatowicz@linux.intel.com>,
<michal.wajdeczko@intel.com>
Subject: Re: [PATCH i-g-t v7 6/7] lib/igt_sriov_device: add helpers for VF DRM driver bind and unbind
Date: Wed, 13 Dec 2023 22:29:32 +0100 [thread overview]
Message-ID: <37409f77-2fde-47d9-acd8-2dc552167e1a@intel.com> (raw)
In-Reply-To: <20231213150018.iwxxzwaipzrepxm4@kamilkon-desk.igk.intel.com>
On 12/13/2023 16:00, Kamil Konieczny wrote:
> Hi Lukasz,
> On 2023-12-05 at 09:16:17 +0100, Lukasz Laguna wrote:
>> Helpers allow to bind and unbind a DRM driver for specified VF of a
>> given PF device.
>>
>> Cc: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Signed-off-by: Lukasz Laguna <lukasz.laguna@intel.com>
>> ---
>> lib/igt_sriov_device.c | 52 ++++++++++++++++++++++++++++++++++++++++++
>> lib/igt_sriov_device.h | 2 ++
>> 2 files changed, 54 insertions(+)
>>
>> diff --git a/lib/igt_sriov_device.c b/lib/igt_sriov_device.c
>> index c643f47d1..354125974 100644
>> --- a/lib/igt_sriov_device.c
>> +++ b/lib/igt_sriov_device.c
>> @@ -5,9 +5,11 @@
>>
>> #include <dirent.h>
>> #include <errno.h>
>> +#include <pciaccess.h>
>>
>> #include "drmtest.h"
>> #include "igt_core.h"
>> +#include "igt_device.h"
>> #include "igt_sriov_device.h"
>> #include "igt_sysfs.h"
>>
>> @@ -287,3 +289,53 @@ bool igt_sriov_is_vf_drm_driver_probed(int pf, unsigned int vf_num)
>>
>> return ret;
>> }
>> +
>> +static bool __igt_sriov_bind_vf_drm_driver(int pf, unsigned int vf_num, bool bind)
> Why bool here? imho better name would be:
Bool, because it returns only a result from igt_sysfs_set which is bool.
I see that "ret" is int actually, but I can change it to bool.
I can also change return type to int and return -1 in case of false from
igt_sysfs_set(), but it introduces new unnecessary logic and I don't see
any advantage of such approach.
> static bool __igt_sriov_set_vf_pci_slot(int pf, unsigned int vf_num, const char *bind)
It wouldn't be clear to me what's the responsibility of a function with
such name and how to use it. I prefer to leave current name and form of
the implementation.
>> +{
>> + int sysfs, ret;
>> + struct pci_device *pci_dev;
>> + char pci_slot[14];
>> +
>> + igt_assert(vf_num > 0);
>> +
>> + pci_dev = __igt_device_get_pci_device(pf, vf_num);
>> + igt_assert_f(pci_dev, "No PCI device for given VF number: %d\n", vf_num);
>> + sprintf(pci_slot, "%04x:%02x:%02x.%x",
>> + pci_dev->domain_16, pci_dev->bus, pci_dev->dev, pci_dev->func);
>> +
>> + sysfs = igt_sysfs_open(pf);
>> + igt_assert_fd(sysfs);
>> +
>> + igt_debug("vf_num: %u, pci_slot: %s\n", vf_num, pci_slot);
>> + ret = igt_sysfs_set(sysfs, bind ? "device/driver/bind" : "device/driver/unbind", pci_slot);
> So here would be:
> ret = igt_sysfs_set(sysfs, bind, pci_slot);
>
> You could also add bind param into prints.
>
>> +
>> + close(sysfs);
>> +
>> + return ret;
>> +}
>> +
>> +/**
>> + * igt_sriov_bind_vf_drm_driver - Bind DRM driver to VF
>> + * @pf: PF device file descriptor
>> + * @vf_num: VF number (1-based to identify single VF)
>> + *
>> + * Bind the DRM driver to given VF.
>> + * It asserts on failure.
>> + */
>> +void igt_sriov_bind_vf_drm_driver(int pf, unsigned int vf_num)
>> +{
>> + igt_assert(__igt_sriov_bind_vf_drm_driver(pf, vf_num, true));
> imho assert on
> __igt_sriov_set_vf_pci_slot(pf, vf_num, "device/driver/bind");
>
>> +}
>> +
>> +/**
>> + * igt_sriov_unbind_vf_drm_driver - Unbind DRM driver from VF
>> + * @pf: PF device file descriptor
>> + * @vf_num: VF number (1-based to identify single VF)
>> + *
>> + * Unbind the DRM driver from given VF.
>> + * It asserts on failure.
>> + */
>> +void igt_sriov_unbind_vf_drm_driver(int pf, unsigned int vf_num)
>> +{
>> + igt_assert(__igt_sriov_bind_vf_drm_driver(pf, vf_num, false));
> imho assert on
> __igt_sriov_set_vf_pci_slot(pf, vf_num, "device/driver/unbind");
>
> Regards,
> Kamil
>
>> +}
>> diff --git a/lib/igt_sriov_device.h b/lib/igt_sriov_device.h
>> index c442c41a7..a3a08f8e1 100644
>> --- a/lib/igt_sriov_device.h
>> +++ b/lib/igt_sriov_device.h
>> @@ -25,6 +25,8 @@ void igt_sriov_enable_driver_autoprobe(int pf);
>> void igt_sriov_disable_driver_autoprobe(int pf);
>> int igt_sriov_open_vf_drm_device(int pf, unsigned int vf_num);
>> bool igt_sriov_is_vf_drm_driver_probed(int pf, unsigned int vf_num);
>> +void igt_sriov_bind_vf_drm_driver(int pf, unsigned int vf_num);
>> +void igt_sriov_unbind_vf_drm_driver(int pf, unsigned int vf_num);
>>
>> /**
>> * for_each_sriov_vf - Helper for running code on each VF
>> --
>> 2.40.0
>>
next prev parent reply other threads:[~2023-12-13 21:31 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-05 8:16 [igt-dev] [PATCH i-g-t v7 0/7] Initial SR-IOV validation Lukasz Laguna
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 1/7] lib/igt_sriov_device: add core SR-IOV helpers Lukasz Laguna
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 2/7] lib/igt_sriov_device: add helper for opening VF device Lukasz Laguna
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 3/7] lib/igt_sriov_device: add helper for checking if VF DRM driver is probed Lukasz Laguna
2023-12-13 14:25 ` Kamil Konieczny
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 4/7] lib/igt_sriov_device: add helpers for operations in different VFs scenarios Lukasz Laguna
2023-12-13 14:34 ` Kamil Konieczny
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 5/7] tests/sriov_basic: add basic tests for enabling SR-IOV VFs Lukasz Laguna
2023-12-13 14:44 ` Kamil Konieczny
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 6/7] lib/igt_sriov_device: add helpers for VF DRM driver bind and unbind Lukasz Laguna
2023-12-13 15:00 ` Kamil Konieczny
2023-12-13 21:29 ` Laguna, Lukasz [this message]
2023-12-14 12:32 ` Kamil Konieczny
2023-12-05 8:16 ` [igt-dev] [PATCH i-g-t v7 7/7] tests/sriov_basic: validate driver binding to VFs Lukasz Laguna
2023-12-13 15:07 ` Kamil Konieczny
2023-12-05 12:31 ` [igt-dev] ✓ Fi.CI.BAT: success for Initial SR-IOV validation (rev8) Patchwork
2023-12-05 14:25 ` [igt-dev] ✗ CI.xeBAT: failure " Patchwork
2023-12-13 15:11 ` Kamil Konieczny
2023-12-05 19:44 ` [igt-dev] ✗ Fi.CI.IGT: " Patchwork
2023-12-13 15:14 ` Kamil Konieczny
2023-12-14 9:26 ` Illipilli, TejasreeX
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=37409f77-2fde-47d9-acd8-2dc552167e1a@intel.com \
--to=lukasz.laguna@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=kamil.konieczny@linux.intel.com \
--cc=marcin.bernatowicz@linux.intel.com \
--cc=michal.wajdeczko@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