Commit ed527040 authored by Gwenhael Goavec-Merou's avatar Gwenhael Goavec-Merou Committed by Juan David González Cobas

spec-sw: kernel: spec-pci: use pci_alloc_irq_vectors with kernel > 4.11

since 4.11 pci_enable_msi_exact is no more available and fail with :

spec-sw/kernel/spec-pci.c: In function 'spec_probe':
spec-sw/kernel/spec-pci.c:225:9: error: implicit declaration of function 'pci_enable_msi_exact'; did you mean 'pci_enable_msix_exact'? [-Werror=implicit-function-declaration]
   ret = pci_enable_msi_exact(pdev, 1);
         ^~~~~~~~~~~~~~~~~~~~
         pci_enable_msix_exact
cc1: some warnings being treated as errors
make[5]: *** [/usr/src/linux-headers-4.18.0-2-common/scripts/Makefile.build:323: spec-sw/kernel/spec-pci.o] Error 1
make[4]: *** [/usr/src/linux-headers-4.18.0-2-common/Makefile:1531: _module_spec-sw/kernel] Error 2
make[3]: *** [Makefile:146: sub-make] Error 2
make[2]: *** [Makefile:8: all] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.18.0-2-amd64'
make[1]: *** [Makefile:20: all] Error 2
make[1]: Leaving directory 'spec-sw/kernel'
make: *** [Makefile:28: kernel] Error 2

This patch add preprocessor case to detect kernel version.
For kernel > 4.11 pci_alloc_irq_vectors is use instead of pci_enable_msi_exact
and pci_free_irq_vectors instead of pci_disable_msi.
Signed-off-by: 's avatarGwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
parent b45d71b7
......@@ -222,7 +222,11 @@ static int spec_probe(struct pci_dev *pdev,
#if KERNEL_VERSION(3, 16, 0) > LINUX_VERSION_CODE
ret = pci_enable_msi_block(pdev, 1);
#else
#if KERNEL_VERSION(4,11,0) > LINUX_VERSION_CODE
ret = pci_enable_msi_exact(pdev, 1);
#else
ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
#endif
#endif
if (ret < 0)
dev_err(&pdev->dev, "%s: enable msi block: error %i\n",
......@@ -280,7 +284,11 @@ out_unmap:
}
pci_set_drvdata(pdev, NULL);
if (spec_use_msi)
#if KERNEL_VERSION(4,11,0) > LINUX_VERSION_CODE
pci_disable_msi(pdev);
#else
pci_free_irq_vectors(pdev);
#endif
pci_disable_device(pdev);
kfree(spec);
return ret;
......@@ -303,7 +311,11 @@ static void spec_remove(struct pci_dev *pdev)
}
pci_set_drvdata(pdev, NULL);
kfree(spec);
#if KERNEL_VERSION(4,11,0) > LINUX_VERSION_CODE
//pci_disable_msi(pdev);
#else
pci_free_irq_vectors(pdev);
#endif
pci_disable_device(pdev);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment