diff --git a/drivers/misc/nvscic2c-pcie/comm-channel.c b/drivers/misc/nvscic2c-pcie/comm-channel.c index 5384c182..ecc97efe 100644 --- a/drivers/misc/nvscic2c-pcie/comm-channel.c +++ b/drivers/misc/nvscic2c-pcie/comm-channel.c @@ -1,8 +1,10 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright (c) 2022-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. #define pr_fmt(fmt) "nvscic2c-pcie: comm-channel: " fmt +#include + #include #include #include @@ -215,7 +217,11 @@ send_msg(struct comm_channel_ctx_t *comm_ctx, struct comm_msg *msg) if (peer_cpu == NVCPU_X86_64) { /* comm-channel irq verctor always take from index 0 */ +#if defined(PCI_EPC_IRQ_TYPE_ENUM_PRESENT) /* Dropped from Linux 6.8 */ ret = pci_client_raise_irq(comm_ctx->pci_client_h, PCI_EPC_IRQ_MSI, 0); +#else + ret = pci_client_raise_irq(comm_ctx->pci_client_h, PCI_IRQ_MSI, 0); +#endif } else { /* notify peer for each write.*/ writel(0x1, syncpt->peer_mem.pva); diff --git a/drivers/misc/nvscic2c-pcie/endpoint.c b/drivers/misc/nvscic2c-pcie/endpoint.c index 99e40014..f84f5ff9 100644 --- a/drivers/misc/nvscic2c-pcie/endpoint.c +++ b/drivers/misc/nvscic2c-pcie/endpoint.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright (c) 2022-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. #define pr_fmt(fmt) "nvscic2c-pcie: endpoint: " fmt @@ -501,8 +501,13 @@ ioctl_notify_remote_impl(struct endpoint_t *endpoint) return -ENOLINK; if (peer_cpu == NVCPU_X86_64) { +#if defined(PCI_EPC_IRQ_TYPE_ENUM_PRESENT) /* Dropped from Linux 6.8 */ ret = pci_client_raise_irq(endpoint->pci_client_h, PCI_EPC_IRQ_MSI, endpoint->msi_irq); +#else + ret = pci_client_raise_irq(endpoint->pci_client_h, PCI_IRQ_MSI, + endpoint->msi_irq); +#endif } else { /* * Ordering between message/data and host1x syncpoints is not diff --git a/drivers/misc/nvscic2c-pcie/pci-client.c b/drivers/misc/nvscic2c-pcie/pci-client.c index 307ae89e..2eb0ad51 100644 --- a/drivers/misc/nvscic2c-pcie/pci-client.c +++ b/drivers/misc/nvscic2c-pcie/pci-client.c @@ -800,7 +800,11 @@ pci_client_get_edma_rx_desc_iova(void *pci_client_h) } int +#if defined(PCI_EPC_IRQ_TYPE_ENUM_PRESENT) /* Dropped from Linux 6.8 */ pci_client_raise_irq(void *pci_client_h, enum pci_epc_irq_type type, u16 num) +#else +pci_client_raise_irq(void *pci_client_h, int type, u16 num) +#endif { int ret = 0; struct pci_client_t *pci_client_ctx = (struct pci_client_t *)pci_client_h; diff --git a/drivers/misc/nvscic2c-pcie/pci-client.h b/drivers/misc/nvscic2c-pcie/pci-client.h index b257bb99..4486c758 100644 --- a/drivers/misc/nvscic2c-pcie/pci-client.h +++ b/drivers/misc/nvscic2c-pcie/pci-client.h @@ -4,6 +4,8 @@ #ifndef __PCI_CLIENT_H__ #define __PCI_CLIENT_H__ +#include + #include #include "common.h" @@ -133,5 +135,9 @@ pci_client_get_edma_rx_desc_iova(void *pci_client_h); /* pci client raise irq to rp */ int +#if defined(PCI_EPC_IRQ_TYPE_ENUM_PRESENT) /* Dropped from Linux 6.8 */ pci_client_raise_irq(void *pci_client_h, enum pci_epc_irq_type type, u16 num); +#else +pci_client_raise_irq(void *pci_client_h, int type, u16 num); +#endif #endif // __PCI_CLIENT_H__ diff --git a/drivers/pci/endpoint/functions/pci-epf-dma-test.c b/drivers/pci/endpoint/functions/pci-epf-dma-test.c index 0c8a8b87..5360ba26 100644 --- a/drivers/pci/endpoint/functions/pci-epf-dma-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-dma-test.c @@ -2,7 +2,7 @@ /* * PCIe DMA EPF test framework for Tegra PCIe * - * Copyright (C) 2021-2023 NVIDIA Corporation. All rights reserved. + * Copyright (C) 2021-2024 NVIDIA Corporation. All rights reserved. */ #include @@ -71,7 +71,11 @@ static void edma_lib_test_raise_irq(void *p) { struct pcie_epf_dma *epfnv = (struct pcie_epf_dma *)p; +#if defined(PCI_EPC_IRQ_TYPE_ENUM_PRESENT) /* Dropped from Linux 6.8 */ lpci_epc_raise_irq(epfnv->epc, epfnv->epf->func_no, PCI_EPC_IRQ_MSI, 1); +#else + lpci_epc_raise_irq(epfnv->epc, epfnv->epf->func_no, PCI_IRQ_MSI, 1); +#endif } /* debugfs to perform eDMA lib transfers and do CRC check */ diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index 771072f7..fb6ff49f 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -142,6 +142,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += pwm_ops_struct_has_owner NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_disable_pcie_error_reporting NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_enable_pcie_error_reporting NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_epf_driver_struct_probe_has_id_arg +NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_epc_irq_type_enum_present NV_CONFTEST_FUNCTION_COMPILE_TESTS += register_shrinker_has_fmt_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += shrinker_alloc NV_CONFTEST_FUNCTION_COMPILE_TESTS += slab_mem_spread diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index 50a8ca47..7e9393b0 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7337,7 +7337,20 @@ compile_test() { compile_check_conftest "$CODE" "NV_PCI_EPF_DRIVER_STRUCT_PROBE_HAS_ID_ARG" "" "functions" ;; + pci_epc_irq_type_enum_present) + # + # Determine if the pci_epc_irq_type enum present or not. + # + # In Linux v6.8, the enum pci_epc_irq_type is dropped from + # commit 74955cb8ccc385 ("PCI: endpoint: Drop PCI_EPC_IRQ_XXX definitions") + # + CODE=" + #include + enum pci_epc_irq_type irq_type; + " + compile_check_conftest "$CODE" "PCI_EPC_IRQ_TYPE_ENUM_PRESENT" "" "types" + ;; register_shrinker_has_fmt_arg) # # Determine if the 'register_shrinker' function