diff options
author | Varad Gautam <varadgautam@google.com> | 2023-04-19 10:39:10 +0000 |
---|---|---|
committer | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2023-06-20 17:33:15 +0000 |
commit | ccdea694f89925f1b7bc130941c6a82aa25b8e00 (patch) | |
tree | 7a54921618c34fabec9c59d1691e7fc76a9f0cd0 | |
parent | a26b51ecfb9ac6fb8fa5b1998c7c1896ab5b1478 (diff) | |
download | gpu-android-gs-lynx-5.10-u-beta4.tar.gz |
kbase: csf: Reboot on failed GPU resetandroid-u-beta-4_r0.4android-u-beta-4_r0.3android-u-beta-4_r0.2android-gs-pantah-5.10-u-beta4android-gs-lynx-5.10-u-beta4android-gs-felix-5.10-u-beta4
If reset failed, both KMD and the hardware are in an unrecoverable
state. Any future attempts to process work or reset the GPU will fail,
and it may take a long time (30mins) for the device to reboot and return
to normal.
Collect a system ramdump and reboot the device immediately when reset
fails.
Bug: 276855700
Test: Simulated failed reset and checked that a ramdump was generated.
Change-Id: Iba901e1654d150b834303e0caa8fba2dc468b5ac
Signed-off-by: Varad Gautam <varadgautam@google.com>
-rw-r--r-- | mali_kbase/csf/mali_kbase_csf_reset_gpu.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mali_kbase/csf/mali_kbase_csf_reset_gpu.c b/mali_kbase/csf/mali_kbase_csf_reset_gpu.c index ef62c0c..b12a3b4 100644 --- a/mali_kbase/csf/mali_kbase_csf_reset_gpu.c +++ b/mali_kbase/csf/mali_kbase_csf_reset_gpu.c @@ -32,6 +32,8 @@ #include <csf/mali_kbase_csf_firmware_log.h> #include "mali_kbase_config_platform.h" +#include <soc/google/debug-snapshot.h> + enum kbasep_soft_reset_status { RESET_SUCCESS = 0, SOFT_RESET_FAILED, @@ -224,6 +226,9 @@ static void kbase_csf_reset_end_hw_access(struct kbase_device *kbdev, } else { dev_err(kbdev->dev, "Reset failed to complete"); atomic_set(&kbdev->csf.reset.state, KBASE_CSF_RESET_GPU_FAILED); + + /* pixel: This is unrecoverable, collect a ramdump and reboot. */ + dbg_snapshot_emergency_reboot("mali: reset failed - unrecoverable GPU"); } kbase_csf_scheduler_spin_unlock(kbdev, scheduler_spin_lock_flags); |