diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch new file mode 100644 index 00000000..0a035651 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4988-drm-amdgpu-apci-don-t-call-sbios-request-function-if.patch @@ -0,0 +1,101 @@ +From b4d19ebc884437b5d3a93b9da434a0f3a60bb316 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Thu, 19 Jul 2018 09:17:02 -0500 +Subject: [PATCH 4988/5725] drm/amdgpu/apci: don't call sbios request function + if it's not supported + +Check the supported functions mask before calling the bios +requests method. + +Reviewed-by: Jim Qu <Jim.Qu@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 53 +++++++++++++++++--------------- + 1 file changed, 28 insertions(+), 25 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +index 0d8c3fc..4556178 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +@@ -364,7 +364,6 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev, + struct acpi_bus_event *event) + { + struct amdgpu_atif *atif = adev->atif; +- struct atif_sbios_requests req; + int count; + + DRM_DEBUG_DRIVER("event, device_class = %s, type = %#x\n", +@@ -379,42 +378,46 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev, + /* Not our event */ + return NOTIFY_DONE; + +- /* Check pending SBIOS requests */ +- count = amdgpu_atif_get_sbios_requests(atif, &req); ++ if (atif->functions.sbios_requests) { ++ struct atif_sbios_requests req; + +- if (count <= 0) +- return NOTIFY_DONE; ++ /* Check pending SBIOS requests */ ++ count = amdgpu_atif_get_sbios_requests(atif, &req); ++ ++ if (count <= 0) ++ return NOTIFY_DONE; + +- DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count); ++ DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count); + +- if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) { +- struct amdgpu_encoder *enc = atif->encoder_for_bl; ++ if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) { ++ struct amdgpu_encoder *enc = atif->encoder_for_bl; + +- if (enc) { +- struct amdgpu_encoder_atom_dig *dig = enc->enc_priv; ++ if (enc) { ++ struct amdgpu_encoder_atom_dig *dig = enc->enc_priv; + +- DRM_DEBUG_DRIVER("Changing brightness to %d\n", +- req.backlight_level); ++ DRM_DEBUG_DRIVER("Changing brightness to %d\n", ++ req.backlight_level); + +- amdgpu_display_backlight_set_level(adev, enc, req.backlight_level); ++ amdgpu_display_backlight_set_level(adev, enc, req.backlight_level); + + #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) +- backlight_force_update(dig->bl_dev, +- BACKLIGHT_UPDATE_HOTKEY); ++ backlight_force_update(dig->bl_dev, ++ BACKLIGHT_UPDATE_HOTKEY); + #endif ++ } + } +- } +- if (req.pending & ATIF_DGPU_DISPLAY_EVENT) { +- if ((adev->flags & AMD_IS_PX) && +- amdgpu_atpx_dgpu_req_power_for_displays()) { +- pm_runtime_get_sync(adev->ddev->dev); +- /* Just fire off a uevent and let userspace tell us what to do */ +- drm_helper_hpd_irq_event(adev->ddev); +- pm_runtime_mark_last_busy(adev->ddev->dev); +- pm_runtime_put_autosuspend(adev->ddev->dev); ++ if (req.pending & ATIF_DGPU_DISPLAY_EVENT) { ++ if ((adev->flags & AMD_IS_PX) && ++ amdgpu_atpx_dgpu_req_power_for_displays()) { ++ pm_runtime_get_sync(adev->ddev->dev); ++ /* Just fire off a uevent and let userspace tell us what to do */ ++ drm_helper_hpd_irq_event(adev->ddev); ++ pm_runtime_mark_last_busy(adev->ddev->dev); ++ pm_runtime_put_autosuspend(adev->ddev->dev); ++ } + } ++ /* TODO: check other events */ + } +- /* TODO: check other events */ + + /* We've handled the event, stop the notifier chain. The ACPI interface + * overloads ACPI_VIDEO_NOTIFY_PROBE, we don't want to send that to +-- +2.7.4 + |