summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2023-03-05 22:37:23 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2023-03-05 22:37:23 -0800
commit78f3fc22cade11341377b961e4574c7af07d671f (patch)
tree881b012731ab65f1d6e4f534dbc3e6de06d77509
parent45af2cf9d6876daff5a62150e13b87a74be7c500 (diff)
parentcf8a01865369183fd85d81c8f60d3050c7d3055f (diff)
downloadgraphics-78f3fc22cade11341377b961e4574c7af07d671f.tar.gz
Merge "msm: kgsl: Handle return value for rb context switch"
-rw-r--r--adreno_a6xx_ringbuffer.c11
-rw-r--r--adreno_gen7_ringbuffer.c11
2 files changed, 16 insertions, 6 deletions
diff --git a/adreno_a6xx_ringbuffer.c b/adreno_a6xx_ringbuffer.c
index 3ca6486..a5356fa 100644
--- a/adreno_a6xx_ringbuffer.c
+++ b/adreno_a6xx_ringbuffer.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include "adreno.h"
@@ -411,6 +411,7 @@ static int a6xx_drawctxt_switch(struct adreno_device *adreno_dev,
struct adreno_context *drawctxt)
{
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
+ int ret;
if (rb->drawctxt_active == drawctxt)
return 0;
@@ -421,9 +422,13 @@ static int a6xx_drawctxt_switch(struct adreno_device *adreno_dev,
if (!_kgsl_context_get(&drawctxt->base))
return -ENOENT;
- trace_adreno_drawctxt_switch(rb, drawctxt);
+ ret = a6xx_rb_context_switch(adreno_dev, rb, drawctxt);
+ if (ret) {
+ kgsl_context_put(&drawctxt->base);
+ return ret;
+ }
- a6xx_rb_context_switch(adreno_dev, rb, drawctxt);
+ trace_adreno_drawctxt_switch(rb, drawctxt);
/* Release the current drawctxt as soon as the new one is switched */
adreno_put_drawctxt_on_timestamp(device, rb->drawctxt_active,
diff --git a/adreno_gen7_ringbuffer.c b/adreno_gen7_ringbuffer.c
index 78bebbd..ec1a447 100644
--- a/adreno_gen7_ringbuffer.c
+++ b/adreno_gen7_ringbuffer.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include "adreno.h"
@@ -471,6 +471,7 @@ static int gen7_drawctxt_switch(struct adreno_device *adreno_dev,
struct adreno_context *drawctxt)
{
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
+ int ret;
if (rb->drawctxt_active == drawctxt)
return 0;
@@ -481,9 +482,13 @@ static int gen7_drawctxt_switch(struct adreno_device *adreno_dev,
if (!_kgsl_context_get(&drawctxt->base))
return -ENOENT;
- trace_adreno_drawctxt_switch(rb, drawctxt);
+ ret = gen7_rb_context_switch(adreno_dev, rb, drawctxt);
+ if (ret) {
+ kgsl_context_put(&drawctxt->base);
+ return ret;
+ }
- gen7_rb_context_switch(adreno_dev, rb, drawctxt);
+ trace_adreno_drawctxt_switch(rb, drawctxt);
/* Release the current drawctxt as soon as the new one is switched */
adreno_put_drawctxt_on_timestamp(device, rb->drawctxt_active,