From f40d1ce68ef264b7827092d707db7d554b92e99e Mon Sep 17 00:00:00 2001 From: Sorayukii Date: Fri, 5 Sep 2025 10:06:33 +0000 Subject: [PATCH] Revert "msm: kgsl: Keep postamble packets in a privileged buffer" This reverts commit 47672094a5d266f061107f54cbb3b5df3b3f4b76. Signed-off-by: Sorayukii --- drivers/gpu/msm/adreno.h | 5 ++++- drivers/gpu/msm/adreno_a6xx_preempt.c | 19 +++++++++---------- drivers/gpu/msm/kgsl.h | 6 ------ 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/msm/adreno.h b/drivers/gpu/msm/adreno.h index 49135f92ce6e..ea8ad562234a 100644 --- a/drivers/gpu/msm/adreno.h +++ b/drivers/gpu/msm/adreno.h @@ -1,5 +1,5 @@ /* Copyright (c) 2008-2018,2020, The Linux Foundation. All rights reserved. - * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -35,6 +35,9 @@ #define DEVICE_3D_NAME "kgsl-3d" #define DEVICE_3D0_NAME "kgsl-3d0" +/* Index to preemption scratch buffer to store KMD postamble */ +#define KMD_POSTAMBLE_IDX 100 + /* ADRENO_DEVICE - Given a kgsl_device return the adreno device struct */ #define ADRENO_DEVICE(device) \ container_of(device, struct adreno_device, dev) diff --git a/drivers/gpu/msm/adreno_a6xx_preempt.c b/drivers/gpu/msm/adreno_a6xx_preempt.c index 29f31b5bc714..26ed44666f63 100644 --- a/drivers/gpu/msm/adreno_a6xx_preempt.c +++ b/drivers/gpu/msm/adreno_a6xx_preempt.c @@ -1,5 +1,5 @@ /* Copyright (c) 2017-2018,2020, The Linux Foundation. All rights reserved. - * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -557,8 +557,8 @@ unsigned int a6xx_preemption_pre_ibsubmit( * preemption */ if (!adreno_dev->perfcounter) { - u64 kmd_postamble_addr = SCRATCH_POSTAMBLE_ADDR - (KGSL_DEVICE(adreno_dev)); + u64 kmd_postamble_addr = + PREEMPT_SCRATCH_ADDR(adreno_dev, KMD_POSTAMBLE_IDX); *cmds++ = cp_type7_packet(CP_SET_AMBLE, 3); *cmds++ = lower_32_bits(kmd_postamble_addr); @@ -793,15 +793,14 @@ int a6xx_preemption_init(struct adreno_device *adreno_dev) } /* - * First 28 dwords of the device scratch buffer are used to store - * shadow rb data. Reserve 11 dwords in the device scratch buffer - * from SCRATCH_POSTAMBLE_OFFSET for KMD postamble pm4 packets. - * This should be in *device->scratch* so that userspace cannot - * access it. + * First 8 dwords of the preemption scratch buffer is used to store the + * address for CP to save/restore VPC data. Reserve 11 dwords in the + * preemption scratch buffer from index KMD_POSTAMBLE_IDX for KMD + * postamble pm4 packets */ if (!adreno_dev->perfcounter) { - u32 *postamble = device->scratch.hostptr + - SCRATCH_POSTAMBLE_OFFSET; + u32 *postamble = preempt->scratch.hostptr + + (KMD_POSTAMBLE_IDX * sizeof(u64)); u32 count = 0; postamble[count++] = cp_type7_packet(CP_REG_RMW, 3); diff --git a/drivers/gpu/msm/kgsl.h b/drivers/gpu/msm/kgsl.h index 2d7a5724cbfd..82509a7aa8d7 100644 --- a/drivers/gpu/msm/kgsl.h +++ b/drivers/gpu/msm/kgsl.h @@ -1,5 +1,4 @@ /* Copyright (c) 2008-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -84,11 +83,6 @@ #define SCRATCH_RPTR_GPU_ADDR(dev, id) \ ((dev)->scratch.gpuaddr + SCRATCH_RPTR_OFFSET(id)) -/* OFFSET to KMD postamble packets in scratch buffer */ -#define SCRATCH_POSTAMBLE_OFFSET (100 * sizeof(u64)) -#define SCRATCH_POSTAMBLE_ADDR(dev) \ - ((dev)->scratch.gpuaddr + SCRATCH_POSTAMBLE_OFFSET) - /* Timestamp window used to detect rollovers (half of integer range) */ #define KGSL_TIMESTAMP_WINDOW 0x80000000