From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c | 65 +++++++++++++++----------------- 1 files changed, 31 insertions(+), 34 deletions(-) diff --git a/kernel/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c b/kernel/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c index 11088db..10e92ec 100644 --- a/kernel/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c +++ b/kernel/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_gpuprops_backend.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note /* * - * (C) COPYRIGHT 2014-2021 ARM Limited. All rights reserved. + * (C) COPYRIGHT 2014-2022 ARM Limited. All rights reserved. * * This program is free software and is provided to you under the terms of the * GNU General Public License version 2 as published by the Free Software @@ -26,32 +26,21 @@ #include <mali_kbase.h> #include <device/mali_kbase_device.h> #include <backend/gpu/mali_kbase_pm_internal.h> +#include <backend/gpu/mali_kbase_cache_policy_backend.h> #include <mali_kbase_hwaccess_gpuprops.h> int kbase_backend_gpuprops_get(struct kbase_device *kbdev, struct kbase_gpuprops_regdump *regdump) { int i; - struct kbase_gpuprops_regdump registers; + struct kbase_gpuprops_regdump registers = { 0 }; /* Fill regdump with the content of the relevant registers */ registers.gpu_id = kbase_reg_read(kbdev, GPU_CONTROL_REG(GPU_ID)); registers.l2_features = kbase_reg_read(kbdev, GPU_CONTROL_REG(L2_FEATURES)); - registers.core_features = 0; -#if !MALI_USE_CSF - /* TGOx */ - registers.core_features = kbase_reg_read(kbdev, - GPU_CONTROL_REG(CORE_FEATURES)); -#else /* !MALI_USE_CSF */ - if (((registers.gpu_id & GPU_ID2_PRODUCT_MODEL) == - GPU_ID2_PRODUCT_TGRX) || - ((registers.gpu_id & GPU_ID2_PRODUCT_MODEL) == - GPU_ID2_PRODUCT_TVAX)) - registers.core_features = - kbase_reg_read(kbdev, GPU_CONTROL_REG(CORE_FEATURES)); -#endif /* MALI_USE_CSF */ + registers.tiler_features = kbase_reg_read(kbdev, GPU_CONTROL_REG(TILER_FEATURES)); registers.mem_features = kbase_reg_read(kbdev, @@ -146,7 +135,7 @@ curr_config_regdump->l2_present_hi = kbase_reg_read(kbdev, GPU_CONTROL_REG(L2_PRESENT_HI)); - if (WARN_ON(kbase_is_gpu_removed(kbdev))) + if (kbase_is_gpu_removed(kbdev)) return -EIO; return 0; @@ -156,30 +145,27 @@ int kbase_backend_gpuprops_get_features(struct kbase_device *kbdev, struct kbase_gpuprops_regdump *regdump) { - if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_COHERENCY_REG)) { - u32 coherency_features; + u32 coherency_features; + int error = 0; - /* Ensure we can access the GPU registers */ - kbase_pm_register_access_enable(kbdev); + /* Ensure we can access the GPU registers */ + kbase_pm_register_access_enable(kbdev); - coherency_features = kbase_reg_read(kbdev, - GPU_CONTROL_REG(COHERENCY_FEATURES)); + coherency_features = kbase_cache_get_coherency_features(kbdev); - if (kbase_is_gpu_removed(kbdev)) - return -EIO; + if (kbase_is_gpu_removed(kbdev)) + error = -EIO; - regdump->coherency_features = coherency_features; + regdump->coherency_features = coherency_features; - /* We're done accessing the GPU registers for now. */ - kbase_pm_register_access_disable(kbdev); - } else { - /* Pre COHERENCY_FEATURES we only supported ACE_LITE */ - regdump->coherency_features = - COHERENCY_FEATURE_BIT(COHERENCY_NONE) | - COHERENCY_FEATURE_BIT(COHERENCY_ACE_LITE); - } + if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_CORE_FEATURES)) + regdump->core_features = kbase_reg_read(kbdev, GPU_CONTROL_REG(CORE_FEATURES)); + else + regdump->core_features = 0; - return 0; + kbase_pm_register_access_disable(kbdev); + + return error; } int kbase_backend_gpuprops_get_l2_features(struct kbase_device *kbdev, @@ -190,13 +176,24 @@ GPU_CONTROL_REG(L2_FEATURES)); u32 l2_config = kbase_reg_read(kbdev, GPU_CONTROL_REG(L2_CONFIG)); + u32 asn_hash[ASN_HASH_COUNT] = { + 0, + }; + int i; + if (kbase_hw_has_feature(kbdev, BASE_HW_FEATURE_ASN_HASH)) { + for (i = 0; i < ASN_HASH_COUNT; i++) + asn_hash[i] = kbase_reg_read( + kbdev, GPU_CONTROL_REG(ASN_HASH(i))); + } if (kbase_is_gpu_removed(kbdev)) return -EIO; regdump->l2_features = l2_features; regdump->l2_config = l2_config; + for (i = 0; i < ASN_HASH_COUNT; i++) + regdump->l2_asn_hash[i] = asn_hash[i]; } return 0; -- Gitblit v1.6.2