Re: [PATCH v3 virtio 2/8] pds_vdpa: Add new vDPA driver for AMD/Pensando DSC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 23, 2023 at 3:11 AM Shannon Nelson <shannon.nelson@xxxxxxx> wrote:
>
> This is the initial auxiliary driver framework for a new vDPA
> device driver, an auxiliary_bus client of the pds_core driver.
> The pds_core driver supplies the PCI services for the VF device
> and for accessing the adminq in the PF device.
>
> This patch adds the very basics of registering for the auxiliary
> device and setting up debugfs entries.
>
> Signed-off-by: Shannon Nelson <shannon.nelson@xxxxxxx>

Acked-by: Jason Wang <jasowang@xxxxxxxxxx>

Thanks

> ---
>  drivers/vdpa/Makefile        |  1 +
>  drivers/vdpa/pds/Makefile    |  8 ++++
>  drivers/vdpa/pds/aux_drv.c   | 84 ++++++++++++++++++++++++++++++++++++
>  drivers/vdpa/pds/aux_drv.h   | 15 +++++++
>  drivers/vdpa/pds/debugfs.c   | 29 +++++++++++++
>  drivers/vdpa/pds/debugfs.h   | 18 ++++++++
>  include/linux/pds/pds_vdpa.h | 10 +++++
>  7 files changed, 165 insertions(+)
>  create mode 100644 drivers/vdpa/pds/Makefile
>  create mode 100644 drivers/vdpa/pds/aux_drv.c
>  create mode 100644 drivers/vdpa/pds/aux_drv.h
>  create mode 100644 drivers/vdpa/pds/debugfs.c
>  create mode 100644 drivers/vdpa/pds/debugfs.h
>  create mode 100644 include/linux/pds/pds_vdpa.h
>
> diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile
> index 59396ff2a318..8f53c6f3cca7 100644
> --- a/drivers/vdpa/Makefile
> +++ b/drivers/vdpa/Makefile
> @@ -7,3 +7,4 @@ obj-$(CONFIG_MLX5_VDPA) += mlx5/
>  obj-$(CONFIG_VP_VDPA)    += virtio_pci/
>  obj-$(CONFIG_ALIBABA_ENI_VDPA) += alibaba/
>  obj-$(CONFIG_SNET_VDPA) += solidrun/
> +obj-$(CONFIG_PDS_VDPA) += pds/
> diff --git a/drivers/vdpa/pds/Makefile b/drivers/vdpa/pds/Makefile
> new file mode 100644
> index 000000000000..a9cd2f450ae1
> --- /dev/null
> +++ b/drivers/vdpa/pds/Makefile
> @@ -0,0 +1,8 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +# Copyright(c) 2023 Advanced Micro Devices, Inc
> +
> +obj-$(CONFIG_PDS_VDPA) := pds_vdpa.o
> +
> +pds_vdpa-y := aux_drv.o
> +
> +pds_vdpa-$(CONFIG_DEBUG_FS) += debugfs.o
> diff --git a/drivers/vdpa/pds/aux_drv.c b/drivers/vdpa/pds/aux_drv.c
> new file mode 100644
> index 000000000000..39c03f067b77
> --- /dev/null
> +++ b/drivers/vdpa/pds/aux_drv.c
> @@ -0,0 +1,84 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/* Copyright(c) 2023 Advanced Micro Devices, Inc */
> +
> +#include <linux/auxiliary_bus.h>
> +#include <linux/pci.h>
> +
> +#include <linux/pds/pds_common.h>
> +#include <linux/pds/pds_core_if.h>
> +#include <linux/pds/pds_adminq.h>
> +#include <linux/pds/pds_auxbus.h>
> +#include <linux/pds/pds_vdpa.h>
> +
> +#include "aux_drv.h"
> +#include "debugfs.h"
> +
> +static const struct auxiliary_device_id pds_vdpa_id_table[] = {
> +       { .name = PDS_VDPA_DEV_NAME, },
> +       {},
> +};
> +
> +static int pds_vdpa_probe(struct auxiliary_device *aux_dev,
> +                         const struct auxiliary_device_id *id)
> +
> +{
> +       struct pds_auxiliary_dev *padev =
> +               container_of(aux_dev, struct pds_auxiliary_dev, aux_dev);
> +       struct pds_vdpa_aux *vdpa_aux;
> +
> +       vdpa_aux = kzalloc(sizeof(*vdpa_aux), GFP_KERNEL);
> +       if (!vdpa_aux)
> +               return -ENOMEM;
> +
> +       vdpa_aux->padev = padev;
> +       auxiliary_set_drvdata(aux_dev, vdpa_aux);
> +
> +       return 0;
> +}
> +
> +static void pds_vdpa_remove(struct auxiliary_device *aux_dev)
> +{
> +       struct pds_vdpa_aux *vdpa_aux = auxiliary_get_drvdata(aux_dev);
> +       struct device *dev = &aux_dev->dev;
> +
> +       kfree(vdpa_aux);
> +       auxiliary_set_drvdata(aux_dev, NULL);
> +
> +       dev_info(dev, "Removed\n");
> +}
> +
> +static struct auxiliary_driver pds_vdpa_driver = {
> +       .name = PDS_DEV_TYPE_VDPA_STR,
> +       .probe = pds_vdpa_probe,
> +       .remove = pds_vdpa_remove,
> +       .id_table = pds_vdpa_id_table,
> +};
> +
> +static void __exit pds_vdpa_cleanup(void)
> +{
> +       auxiliary_driver_unregister(&pds_vdpa_driver);
> +
> +       pds_vdpa_debugfs_destroy();
> +}
> +module_exit(pds_vdpa_cleanup);
> +
> +static int __init pds_vdpa_init(void)
> +{
> +       int err;
> +
> +       pds_vdpa_debugfs_create();
> +
> +       err = auxiliary_driver_register(&pds_vdpa_driver);
> +       if (err) {
> +               pr_err("%s: aux driver register failed: %pe\n",
> +                      PDS_VDPA_DRV_NAME, ERR_PTR(err));
> +               pds_vdpa_debugfs_destroy();
> +       }
> +
> +       return err;
> +}
> +module_init(pds_vdpa_init);
> +
> +MODULE_DESCRIPTION(PDS_VDPA_DRV_DESCRIPTION);
> +MODULE_AUTHOR("Advanced Micro Devices, Inc");
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/vdpa/pds/aux_drv.h b/drivers/vdpa/pds/aux_drv.h
> new file mode 100644
> index 000000000000..14e465944dfd
> --- /dev/null
> +++ b/drivers/vdpa/pds/aux_drv.h
> @@ -0,0 +1,15 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/* Copyright(c) 2023 Advanced Micro Devices, Inc */
> +
> +#ifndef _AUX_DRV_H_
> +#define _AUX_DRV_H_
> +
> +#define PDS_VDPA_DRV_DESCRIPTION    "AMD/Pensando vDPA VF Device Driver"
> +#define PDS_VDPA_DRV_NAME           "pds_vdpa"
> +
> +struct pds_vdpa_aux {
> +       struct pds_auxiliary_dev *padev;
> +
> +       struct dentry *dentry;
> +};
> +#endif /* _AUX_DRV_H_ */
> diff --git a/drivers/vdpa/pds/debugfs.c b/drivers/vdpa/pds/debugfs.c
> new file mode 100644
> index 000000000000..12e844f96ccc
> --- /dev/null
> +++ b/drivers/vdpa/pds/debugfs.c
> @@ -0,0 +1,29 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/* Copyright(c) 2023 Advanced Micro Devices, Inc */
> +
> +#include <linux/pci.h>
> +
> +#include <linux/pds/pds_common.h>
> +#include <linux/pds/pds_core_if.h>
> +#include <linux/pds/pds_adminq.h>
> +#include <linux/pds/pds_auxbus.h>
> +
> +#include "aux_drv.h"
> +#include "debugfs.h"
> +
> +#ifdef CONFIG_DEBUG_FS
> +
> +static struct dentry *dbfs_dir;
> +
> +void pds_vdpa_debugfs_create(void)
> +{
> +       dbfs_dir = debugfs_create_dir(PDS_VDPA_DRV_NAME, NULL);
> +}
> +
> +void pds_vdpa_debugfs_destroy(void)
> +{
> +       debugfs_remove_recursive(dbfs_dir);
> +       dbfs_dir = NULL;
> +}
> +
> +#endif /* CONFIG_DEBUG_FS */
> diff --git a/drivers/vdpa/pds/debugfs.h b/drivers/vdpa/pds/debugfs.h
> new file mode 100644
> index 000000000000..fff078a869e5
> --- /dev/null
> +++ b/drivers/vdpa/pds/debugfs.h
> @@ -0,0 +1,18 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/* Copyright(c) 2023 Advanced Micro Devices, Inc */
> +
> +#ifndef _PDS_VDPA_DEBUGFS_H_
> +#define _PDS_VDPA_DEBUGFS_H_
> +
> +#include <linux/debugfs.h>
> +
> +#ifdef CONFIG_DEBUG_FS
> +
> +void pds_vdpa_debugfs_create(void);
> +void pds_vdpa_debugfs_destroy(void);
> +#else
> +static inline void pds_vdpa_debugfs_create(void) { }
> +static inline void pds_vdpa_debugfs_destroy(void) { }
> +#endif
> +
> +#endif /* _PDS_VDPA_DEBUGFS_H_ */
> diff --git a/include/linux/pds/pds_vdpa.h b/include/linux/pds/pds_vdpa.h
> new file mode 100644
> index 000000000000..d3414536985d
> --- /dev/null
> +++ b/include/linux/pds/pds_vdpa.h
> @@ -0,0 +1,10 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/* Copyright(c) 2023 Advanced Micro Devices, Inc */
> +
> +#ifndef _PDS_VDPA_H_
> +#define _PDS_VDPA_H_
> +
> +#define PDS_DEV_TYPE_VDPA_STR  "vDPA"
> +#define PDS_VDPA_DEV_NAME      PDS_CORE_DRV_NAME "." PDS_DEV_TYPE_VDPA_STR
> +
> +#endif /* _PDS_VDPA_H_ */
> --
> 2.17.1
>

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization




[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux