diff options
author | qctecmdr <qctecmdr@localhost> | 2023-03-05 22:37:23 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2023-03-05 22:37:23 -0800 |
commit | 78f3fc22cade11341377b961e4574c7af07d671f (patch) | |
tree | 881b012731ab65f1d6e4f534dbc3e6de06d77509 | |
parent | 45af2cf9d6876daff5a62150e13b87a74be7c500 (diff) | |
parent | cf8a01865369183fd85d81c8f60d3050c7d3055f (diff) | |
download | graphics-78f3fc22cade11341377b961e4574c7af07d671f.tar.gz |
Merge "msm: kgsl: Handle return value for rb context switch"
-rw-r--r-- | adreno_a6xx_ringbuffer.c | 11 | ||||
-rw-r--r-- | adreno_gen7_ringbuffer.c | 11 |
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, |