From 4974a781b64694d01428fd4637a779199c4f28c5 Mon Sep 17 00:00:00 2001 From: Chris Dragan Date: Wed, 15 Jun 2022 04:35:32 -0700 Subject: [PATCH] misc: mods: fix compilation with kernel 5.18 Integrates CL 31407382. Bug 3680536 Change-Id: I5a50dc1c5af1dfcc52aa112269f6802e447206d4 Signed-off-by: Chris Dragan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2729243 Reviewed-by: Sachin Nikam GVS: Gerrit_Virtual_Submit --- drivers/misc/mods/mods_acpi.c | 5 +++++ drivers/misc/mods/mods_config.h | 8 ++++++++ drivers/misc/mods/mods_mem.c | 6 +++--- drivers/misc/mods/mods_pci.c | 6 +++++- include/uapi/misc/mods.h | 2 +- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/drivers/misc/mods/mods_acpi.c b/drivers/misc/mods/mods_acpi.c index f73189ee..7d2b6f64 100644 --- a/drivers/misc/mods/mods_acpi.c +++ b/drivers/misc/mods/mods_acpi.c @@ -100,7 +100,12 @@ static int acpi_get_dev_children(struct mods_client *client, LOG_ENT(); +#ifdef MODS_HAS_ACPI_FETCH + device = acpi_fetch_acpi_dev(dev_handle); + status = device ? 0 : -EINVAL; +#else status = acpi_bus_get_device(dev_handle, &device); +#endif if (ACPI_FAILURE(status) || !device) { cl_error("ACPI: device for fetching device children not found\n"); LOG_EXT(); diff --git a/drivers/misc/mods/mods_config.h b/drivers/misc/mods/mods_config.h index 2b2bffb7..46a8caca 100644 --- a/drivers/misc/mods/mods_config.h +++ b/drivers/misc/mods/mods_config.h @@ -43,6 +43,10 @@ # define MODS_HASNT_NUMA_NO_NODE 1 #endif +#if KERNEL_VERSION(2, 6, 34) <= MODS_KERNEL_VERSION +# define MODS_HAS_SET_COHERENT_MASK 1 +#endif + #if KERNEL_VERSION(2, 6, 38) <= MODS_KERNEL_VERSION # if defined(CONFIG_X86) # define MODS_HAS_CONSOLE_LOCK 1 @@ -100,6 +104,10 @@ # define MODS_HAS_ARM64_READ_FTR_REG 1 #endif +#if KERNEL_VERSION(5, 17, 0) <= MODS_KERNEL_VERSION +# define MODS_HAS_ACPI_FETCH 1 +#endif + #if defined(CONFIG_ARCH_TEGRA) # define MODS_HAS_TEGRA 1 #endif diff --git a/drivers/misc/mods/mods_mem.c b/drivers/misc/mods/mods_mem.c index bf7fee38..2441b2de 100644 --- a/drivers/misc/mods/mods_mem.c +++ b/drivers/misc/mods/mods_mem.c @@ -115,7 +115,7 @@ static void mods_dma_unmap_page(struct mods_client *client, { dev_addr = mods_expand_nvlink_addr(dev, dev_addr); - pci_unmap_page(dev, + dma_unmap_page(&dev->dev, dev_addr, PAGE_SIZE << order, DMA_BIDIRECTIONAL); @@ -187,13 +187,13 @@ static int pci_map_chunk(struct mods_client *client, struct MODS_PHYS_CHUNK *chunk, u64 *out_dev_addr) { - u64 dev_addr = pci_map_page(dev, + u64 dev_addr = dma_map_page(&dev->dev, chunk->p_page, 0, PAGE_SIZE << chunk->order, DMA_BIDIRECTIONAL); - int err = pci_dma_mapping_error(dev, dev_addr); + int err = dma_mapping_error(&dev->dev, dev_addr); if (err) { cl_error( diff --git a/drivers/misc/mods/mods_pci.c b/drivers/misc/mods/mods_pci.c index 9c438105..0b72200b 100644 --- a/drivers/misc/mods/mods_pci.c +++ b/drivers/misc/mods/mods_pci.c @@ -879,7 +879,7 @@ int esc_mods_pci_set_dma_mask(struct mods_client *client, mask = dma_mask->num_bits == 64 ? ~0ULL : (1ULL<num_bits)-1; - err = pci_set_dma_mask(dev, mask); + err = dma_set_mask(&dev->dev, mask); if (err) { cl_error( "failed to set dma mask 0x%llx (%u) for dev %04x:%02x:%02x.%x\n", @@ -895,7 +895,11 @@ int esc_mods_pci_set_dma_mask(struct mods_client *client, err = OK; #endif } else { +#if defined(MODS_HAS_SET_COHERENT_MASK) + err = dma_set_coherent_mask(&dev->dev, mask); +#else err = pci_set_consistent_dma_mask(dev, mask); +#endif if (err) cl_error( "failed to set consistent dma mask 0x%llx (%u) for dev %04x:%02x:%02x.%x\n", diff --git a/include/uapi/misc/mods.h b/include/uapi/misc/mods.h index 6ddba7eb..7489f2b5 100644 --- a/include/uapi/misc/mods.h +++ b/include/uapi/misc/mods.h @@ -25,7 +25,7 @@ /* Driver version */ #define MODS_DRIVER_VERSION_MAJOR 4 -#define MODS_DRIVER_VERSION_MINOR 8 +#define MODS_DRIVER_VERSION_MINOR 9 #define MODS_DRIVER_VERSION ((MODS_DRIVER_VERSION_MAJOR << 8) | \ ((MODS_DRIVER_VERSION_MINOR / 10) << 4) | \ (MODS_DRIVER_VERSION_MINOR % 10))