From: Ankit Agrawal <ankita@xxxxxxxxxx> Setup dummy auxiliary device ops to be able to get probed by the nvgrace-egm auxiliary driver. Both nvgrace-gpu and the out-of-tree nvidia-vgpu-vfio will make use of the EGM for device assignment and the SRIOV vGPU virtualization solutions respectively. Hence allow auxiliary device probing for both. Signed-off-by: Ankit Agrawal <ankita@xxxxxxxxxx> --- drivers/vfio/pci/nvgrace-gpu/egm.c | 39 +++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/drivers/vfio/pci/nvgrace-gpu/egm.c b/drivers/vfio/pci/nvgrace-gpu/egm.c index 6bab4d94cb99..12d4e6e83fff 100644 --- a/drivers/vfio/pci/nvgrace-gpu/egm.c +++ b/drivers/vfio/pci/nvgrace-gpu/egm.c @@ -11,6 +11,30 @@ static dev_t dev; static struct class *class; +static int egm_driver_probe(struct auxiliary_device *aux_dev, + const struct auxiliary_device_id *id) +{ + return 0; +} + +static void egm_driver_remove(struct auxiliary_device *aux_dev) +{ +} + +static const struct auxiliary_device_id egm_id_table[] = { + { .name = "nvgrace_gpu_vfio_pci.egm" }, + { .name = "nvidia_vgpu_vfio.egm" }, + { }, +}; +MODULE_DEVICE_TABLE(auxiliary, egm_id_table); + +static struct auxiliary_driver egm_driver = { + .name = KBUILD_MODNAME, + .id_table = egm_id_table, + .probe = egm_driver_probe, + .remove = egm_driver_remove, +}; + static char *egm_devnode(const struct device *device, umode_t *mode) { if (mode) @@ -35,19 +59,28 @@ static int __init nvgrace_egm_init(void) class = class_create(NVGRACE_EGM_DEV_NAME); if (IS_ERR(class)) { - unregister_chrdev_region(dev, MAX_EGM_NODES); - return PTR_ERR(class); + ret = PTR_ERR(class); + goto unregister_chrdev; } class->devnode = egm_devnode; - return 0; + ret = auxiliary_driver_register(&egm_driver); + if (!ret) + goto fn_exit; + + class_destroy(class); +unregister_chrdev: + unregister_chrdev_region(dev, MAX_EGM_NODES); +fn_exit: + return ret; } static void __exit nvgrace_egm_cleanup(void) { class_destroy(class); unregister_chrdev_region(dev, MAX_EGM_NODES); + auxiliary_driver_unregister(&egm_driver); } module_init(nvgrace_egm_init); -- 2.34.1