From 82b95758d1ec9894783fda86ae5141511cca3c6e Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Tue, 10 Jan 2023 14:17:10 +0000 Subject: [PATCH] nvgpu: Fix devnode function pointers for Linux v6.2 Upstream Linux kernel commit ff62b8e6588f ("driver core: make struct class.devnode() take a const *") updated the 'devnode' function pointer under the class structure to take a const device struct. This breaks building the NVGPU driver with Linux v6.2. Make the necessary changes to the NVGPU driver to fix the build breakage. Bug 3936429 Bug 3844023 Signed-off-by: Jon Hunter Change-Id: Ia39d7fded8df0e4eb30ebd58b2261e48e1963549 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2841032 (cherry picked from commit 315813beac039bd85d765684485d19d08e188998) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2842397 Reviewed-by: Alex Waterman GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/os/linux/ioctl.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/gpu/nvgpu/os/linux/ioctl.c b/drivers/gpu/nvgpu/os/linux/ioctl.c index 5539d835c..44b61ca08 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl.c @@ -211,7 +211,11 @@ static char *nvgpu_devnode(const char *cdev_name) return kasprintf(GFP_KERNEL, "nvhost-%s-gpu", cdev_name); } +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)) static char *nvgpu_pci_devnode(struct device *dev, umode_t *mode) +#else +static char *nvgpu_pci_devnode(const struct device *dev, umode_t *mode) +#endif { /* Special case to maintain legacy names */ if (strcmp(dev_name(dev), "channel") == 0) { @@ -223,18 +227,30 @@ static char *nvgpu_pci_devnode(struct device *dev, umode_t *mode) dev_name(dev->parent), dev_name(dev)); } +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)) static char *nvgpu_devnode_v2(struct device *dev, umode_t *mode) +#else +static char *nvgpu_devnode_v2(const struct device *dev, umode_t *mode) +#endif { return kasprintf(GFP_KERNEL, "nvgpu/igpu0/%s", dev_name(dev)); } +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)) static char *nvgpu_pci_devnode_v2(struct device *dev, umode_t *mode) +#else +static char *nvgpu_pci_devnode_v2(const struct device *dev, umode_t *mode) +#endif { return kasprintf(GFP_KERNEL, "nvgpu/dgpu-%s/%s", dev_name(dev->parent), dev_name(dev)); } +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)) static char *nvgpu_mig_fgpu_devnode(struct device *dev, umode_t *mode) +#else +static char *nvgpu_mig_fgpu_devnode(const struct device *dev, umode_t *mode) +#endif { struct nvgpu_cdev_class_priv_data *priv_data;