lkml.org 
[lkml]   [2023]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v8 2/5] hisi_acc_vfio_pci: extract public functions for container_of
    From
    Date
    On 2023/3/11 7:40, Alex Williamson wrote:
    > On Fri, 17 Feb 2023 16:48:28 +0800
    > Longfang Liu <liulongfang@huawei.com> wrote:
    >
    >> In the current driver, vdev is obtained from struct
    >> hisi_acc_vf_core_device through the container_of function.
    >> This method is used in many places in the driver. In order to
    >> reduce this repetitive operation, I extracted a public function
    >> to replace it.
    >>
    >> Signed-off-by: Longfang Liu <liulongfang@huawei.com>
    >> ---
    >> .../vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 21 ++++++++++---------
    >> 1 file changed, 11 insertions(+), 10 deletions(-)
    >>
    >> diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
    >> index a117eaf21c14..a1589947e721 100644
    >> --- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
    >> +++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
    >> @@ -630,6 +630,12 @@ static void hisi_acc_vf_disable_fds(struct hisi_acc_vf_core_device *hisi_acc_vde
    >> }
    >> }
    >>
    >> +static struct hisi_acc_vf_core_device *hisi_acc_get_vf_dev(struct vfio_device *vdev)
    >> +{
    >> + return container_of(vdev, struct hisi_acc_vf_core_device,
    >> + core_device.vdev);
    >> +}
    >
    > This type of function is often named to_foo_bar(), ex. to_pci_dev(),
    > and often macros. Perhaps:
    >
    > #define to_hisi_acc_dev(n) container_of(n, \
    > struct hisi_acc_vf_core_device, core_device,vdev)
    >

    First of all, thanks for your suggestion, but I want to keep
    the current way of complete function declaration.

    Thanks,
    Longfang.
    > Thanks,
    > Alex
    >
    >> +
    >> /*
    >> * This function is called in all state_mutex unlock cases to
    >> * handle a 'deferred_reset' if exists.
    >> @@ -1042,8 +1048,7 @@ static struct file *
    >> hisi_acc_vfio_pci_set_device_state(struct vfio_device *vdev,
    >> enum vfio_device_mig_state new_state)
    >> {
    >> - struct hisi_acc_vf_core_device *hisi_acc_vdev = container_of(vdev,
    >> - struct hisi_acc_vf_core_device, core_device.vdev);
    >> + struct hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_get_vf_dev(vdev);
    >> enum vfio_device_mig_state next_state;
    >> struct file *res = NULL;
    >> int ret;
    >> @@ -1084,8 +1089,7 @@ static int
    >> hisi_acc_vfio_pci_get_device_state(struct vfio_device *vdev,
    >> enum vfio_device_mig_state *curr_state)
    >> {
    >> - struct hisi_acc_vf_core_device *hisi_acc_vdev = container_of(vdev,
    >> - struct hisi_acc_vf_core_device, core_device.vdev);
    >> + struct hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_get_vf_dev(vdev);
    >>
    >> mutex_lock(&hisi_acc_vdev->state_mutex);
    >> *curr_state = hisi_acc_vdev->mig_state;
    >> @@ -1301,8 +1305,7 @@ static long hisi_acc_vfio_pci_ioctl(struct vfio_device *core_vdev, unsigned int
    >>
    >> static int hisi_acc_vfio_pci_open_device(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 hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_get_vf_dev(core_vdev);
    >> struct vfio_pci_core_device *vdev = &hisi_acc_vdev->core_device;
    >> int ret;
    >>
    >> @@ -1325,8 +1328,7 @@ static int hisi_acc_vfio_pci_open_device(struct vfio_device *core_vdev)
    >>
    >> static void hisi_acc_vfio_pci_close_device(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 hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_get_vf_dev(core_vdev);
    >> struct hisi_qm *vf_qm = &hisi_acc_vdev->vf_qm;
    >>
    >> iounmap(vf_qm->io_base);
    >> @@ -1341,8 +1343,7 @@ static const struct vfio_migration_ops hisi_acc_vfio_pci_migrn_state_ops = {
    >>
    >> static 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 hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_get_vf_dev(core_vdev);
    >> struct pci_dev *pdev = to_pci_dev(core_vdev->dev);
    >> struct hisi_qm *pf_qm = hisi_acc_get_pf_qm(pdev);
    >>
    >
    > .
    >

    \
     
     \ /
      Last update: 2023-03-27 00:59    [W:4.315 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site