From c5f2b6617ee46aaf5ec69f2c85ce7d9fa0aa3829 Mon Sep 17 00:00:00 2001 From: "Matthew D. Fuller" Date: Sat, 9 Nov 2019 14:26:08 -0600 Subject: [PATCH 1/3] Cherrypick 324a27a7347336af267c6e68eaf8f98458808f37 DRM_SYSCTL_PRINT fails without the lock (#170) --- drm/drm_sysctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drm/drm_sysctl.c b/drm/drm_sysctl.c index 60f6a0f919..8dac92308f 100644 --- a/drm/drm_sysctl.c +++ b/drm/drm_sysctl.c @@ -419,8 +419,8 @@ static int drm_vblank_info DRM_SYSCTL_HANDLER_ARGS int retcode; int i; - DRM_SYSCTL_PRINT("\ncrtc ref count last enabled inmodeset\n"); mutex_lock(&dev->struct_mutex); + DRM_SYSCTL_PRINT("\ncrtc ref count last enabled inmodeset\n"); if (dev->vblank == NULL) goto done; for (i = 0 ; i < dev->num_crtcs ; i++) { From 7452c06673b9201871354651740f890ce6e313eb Mon Sep 17 00:00:00 2001 From: "Matthew D. Fuller" Date: Sat, 9 Nov 2019 14:27:12 -0600 Subject: [PATCH 2/3] Cherrypick 9e308e6a707bc29635ee24bba1f0c36f6b4b6b23 Include header to allow building. --- linuxkpi/gplv2/src/linux_compat.c | 1 + 1 file changed, 1 insertion(+) diff --git a/linuxkpi/gplv2/src/linux_compat.c b/linuxkpi/gplv2/src/linux_compat.c index f5cdca4680..78a265ee21 100644 --- a/linuxkpi/gplv2/src/linux_compat.c +++ b/linuxkpi/gplv2/src/linux_compat.c @@ -2,6 +2,7 @@ #include #include +#include #include #include From 26686d90a097b5b5089af6f900cf0341df10ed48 Mon Sep 17 00:00:00 2001 From: "Matthew D. Fuller" Date: Sat, 9 Nov 2019 14:33:04 -0600 Subject: [PATCH 3/3] Cherrypick 148d05832cc127949b4bea9c5d3fdfef80561db4 Enable Message Signaled Interrupts (MSI) (#163) --- amd/amdgpu/amdgpu_irq.c | 4 ++-- i915/i915_drv.c | 10 ++++++++-- radeon/radeon_irq_kms.c | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/amd/amdgpu/amdgpu_irq.c b/amd/amdgpu/amdgpu_irq.c index 72e20ba8f2..abb1efdc08 100644 --- a/amd/amdgpu/amdgpu_irq.c +++ b/amd/amdgpu/amdgpu_irq.c @@ -222,7 +222,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev) adev->irq.msi_enabled = false; if (amdgpu_msi_ok(adev)) { -#ifdef __linux__ +#if defined(__linux__) || defined(pci_enable_msi) int ret = pci_enable_msi(adev->pdev); if (!ret) { adev->irq.msi_enabled = true; @@ -262,7 +262,7 @@ void amdgpu_irq_fini(struct amdgpu_device *adev) if (adev->irq.installed) { drm_irq_uninstall(adev->ddev); adev->irq.installed = false; -#ifdef __linux__ +#if defined(__linux__) || defined(pci_disable_msi) if (adev->irq.msi_enabled) pci_disable_msi(adev->pdev); #endif diff --git a/i915/i915_drv.c b/i915/i915_drv.c index eb037b8d07..8201e2e343 100644 --- a/i915/i915_drv.c +++ b/i915/i915_drv.c @@ -1140,7 +1140,7 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv) i915_gem_load_init_fences(dev_priv); -#ifdef __linux__ +#if defined(__linux__) || defined(pci_enable_msi) /* On the 945G/GM, the chipset reports the MSI capability on the * integrated graphics even though the support isn't actually there * according to the published specs. It doesn't appear to function @@ -1176,9 +1176,15 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv) */ static void i915_driver_cleanup_hw(struct drm_i915_private *dev_priv) { -#ifdef __linux__ +#if defined(__linux__) || defined(pci_disable_msi) struct pci_dev *pdev = dev_priv->drm.pdev; +#endif + +#ifdef CONFIG_I915_PERF + i915_perf_fini(dev_priv); +#endif +#if defined(__linux__) || defined(pci_disable_msi) if (pdev->msi_enabled) pci_disable_msi(pdev); #endif diff --git a/radeon/radeon_irq_kms.c b/radeon/radeon_irq_kms.c index aa18185cfc..0b273e541d 100644 --- a/radeon/radeon_irq_kms.c +++ b/radeon/radeon_irq_kms.c @@ -294,7 +294,7 @@ int radeon_irq_kms_init(struct radeon_device *rdev) rdev->msi_enabled = 0; if (radeon_msi_ok(rdev)) { -#ifdef __linux__ +#if defined(__linux__) || defined(pci_enable_msi) int ret = pci_enable_msi(rdev->pdev); if (!ret) { rdev->msi_enabled = 1; @@ -332,7 +332,7 @@ void radeon_irq_kms_fini(struct radeon_device *rdev) if (rdev->irq.installed) { drm_irq_uninstall(rdev->ddev); rdev->irq.installed = false; -#ifdef __linux__ +#if defined(__linux__) || defined(pci_disable_msi) if (rdev->msi_enabled) pci_disable_msi(rdev->pdev); #endif