summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuzanne Candanedo <suzanne.candanedo@arm.com>2023-01-16 18:42:17 +0000
committerSiddharth Kapoor <ksiddharth@google.com>2023-01-21 01:37:35 +0000
commit4c039230e8bdf9f9bb20e0fa804115937d0765a9 (patch)
tree118a0bc6695e56a6a8261c8d0e5b16af1ef04f4f
parent7da6ca11c5deb071ec625314352010bf52626e4d (diff)
downloadgpu-android-gs-bluejay-5.10-android13-qpr3-beta1.tar.gz
Bug: 263689926 Provenance: https://code.ipdelivery.arm.com/c/GPU/mali-ddk/+/4859 Change-Id: I801d9add01ad36764bf4c0a38d858f7228802611 Signed-off-by: Siddharth Kapoor <ksiddharth@google.com> (cherry picked from commit 2951d3516e2e38af8f9aa377c325147e4a9ee9b9)
-rw-r--r--mali_kbase/backend/gpu/mali_kbase_jm_hw.c65
1 files changed, 38 insertions, 27 deletions
diff --git a/mali_kbase/backend/gpu/mali_kbase_jm_hw.c b/mali_kbase/backend/gpu/mali_kbase_jm_hw.c
index 20905f7..07411cf 100644
--- a/mali_kbase/backend/gpu/mali_kbase_jm_hw.c
+++ b/mali_kbase/backend/gpu/mali_kbase_jm_hw.c
@@ -224,36 +224,47 @@ int kbase_job_hw_submit(struct kbase_device *kbdev, struct kbase_jd_atom *katom,
*/
cfg = kctx->as_nr;
- if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_FLUSH_REDUCTION) &&
- !(kbdev->serialize_jobs & KBASE_SERIALIZE_RESET))
- cfg |= JS_CONFIG_ENABLE_FLUSH_REDUCTION;
-
- if (0 != (katom->core_req & BASE_JD_REQ_SKIP_CACHE_START)) {
- /* Force a cache maintenance operation if the newly submitted
- * katom to the slot is from a different kctx. For a JM GPU
- * that has the feature BASE_HW_FEATURE_FLUSH_INV_SHADER_OTHER,
- * applies a FLUSH_INV_SHADER_OTHER. Otherwise, do a
- * FLUSH_CLEAN_INVALIDATE.
- */
- u64 tagged_kctx = ptr_slot_rb->last_kctx_tagged;
-
- if (tagged_kctx != SLOT_RB_NULL_TAG_VAL && tagged_kctx != SLOT_RB_TAG_KCTX(kctx)) {
- if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_FLUSH_INV_SHADER_OTHER))
- cfg |= JS_CONFIG_START_FLUSH_INV_SHADER_OTHER;
- else
- cfg |= JS_CONFIG_START_FLUSH_CLEAN_INVALIDATE;
+ if(!kbase_jd_katom_is_protected(katom)) {
+ if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_FLUSH_REDUCTION) &&
+ !(kbdev->serialize_jobs & KBASE_SERIALIZE_RESET))
+ cfg |= JS_CONFIG_ENABLE_FLUSH_REDUCTION;
+
+ if (0 != (katom->core_req & BASE_JD_REQ_SKIP_CACHE_START)) {
+ /* Force a cache maintenance operation if the newly submitted
+ * katom to the slot is from a different kctx. For a JM GPU
+ * that has the feature BASE_HW_FEATURE_FLUSH_INV_SHADER_OTHER,
+ * applies a FLUSH_INV_SHADER_OTHER. Otherwise, do a
+ * FLUSH_CLEAN_INVALIDATE.
+ */
+ u64 tagged_kctx = ptr_slot_rb->last_kctx_tagged;
+
+ if (tagged_kctx != SLOT_RB_NULL_TAG_VAL &&
+ tagged_kctx != SLOT_RB_TAG_KCTX(kctx)) {
+ if (kbase_hw_has_feature(kbdev,
+ BASE_HW_FEATURE_FLUSH_INV_SHADER_OTHER))
+ cfg |= JS_CONFIG_START_FLUSH_INV_SHADER_OTHER;
+ else
+ cfg |= JS_CONFIG_START_FLUSH_CLEAN_INVALIDATE;
+ } else
+ cfg |= JS_CONFIG_START_FLUSH_NO_ACTION;
} else
- cfg |= JS_CONFIG_START_FLUSH_NO_ACTION;
- } else
- cfg |= JS_CONFIG_START_FLUSH_CLEAN_INVALIDATE;
+ cfg |= JS_CONFIG_START_FLUSH_CLEAN_INVALIDATE;
- if (0 != (katom->core_req & BASE_JD_REQ_SKIP_CACHE_END) &&
- !(kbdev->serialize_jobs & KBASE_SERIALIZE_RESET))
- cfg |= JS_CONFIG_END_FLUSH_NO_ACTION;
- else if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_CLEAN_ONLY_SAFE))
+ if (0 != (katom->core_req & BASE_JD_REQ_SKIP_CACHE_END) &&
+ !(kbdev->serialize_jobs & KBASE_SERIALIZE_RESET))
+ cfg |= JS_CONFIG_END_FLUSH_NO_ACTION;
+ else if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_CLEAN_ONLY_SAFE))
+ cfg |= JS_CONFIG_END_FLUSH_CLEAN;
+ else
+ cfg |= JS_CONFIG_END_FLUSH_CLEAN_INVALIDATE;
+ } else {
+ /* Force cache flush on job chain start/end if katom is protected.
+ * Valhall JM GPUs have BASE_HW_FEATURE_CLEAN_ONLY_SAFE feature,
+ * so DDK set JS_CONFIG_END_FLUSH_CLEAN config
+ */
+ cfg |= JS_CONFIG_START_FLUSH_CLEAN_INVALIDATE;
cfg |= JS_CONFIG_END_FLUSH_CLEAN;
- else
- cfg |= JS_CONFIG_END_FLUSH_CLEAN_INVALIDATE;
+ }
cfg |= JS_CONFIG_THREAD_PRI(8);