From 1543e317f1da31b75942316931e8f491a8920811 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 04 Jan 2024 10:08:02 +0000
Subject: [PATCH] disable FB
---
kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c | 193 +++++++----------------------------------------
1 files changed, 30 insertions(+), 163 deletions(-)
diff --git a/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c b/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c
index a6343c8..46872f9 100644
--- a/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c
+++ b/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_trace_buffer.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
/*
*
- * (C) COPYRIGHT 2018-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2018-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
@@ -29,20 +29,8 @@
#include <linux/list.h>
#include <linux/mman.h>
-#if IS_ENABLED(CONFIG_DEBUG_FS)
-#if (KERNEL_VERSION(4, 7, 0) > LINUX_VERSION_CODE)
-#define DEFINE_DEBUGFS_ATTRIBUTE DEFINE_SIMPLE_ATTRIBUTE
-#endif
-#endif
-
/**
* struct firmware_trace_buffer - Trace Buffer within the MCU firmware
- *
- * The firmware relays information to the host by writing on memory buffers
- * which are allocated and partially configured by the host. These buffers
- * are called Trace Buffers: each of them has a specific purpose and is
- * identified by a name and a set of memory addresses where the host can
- * set pointers to host-allocated structures.
*
* @kbdev: Pointer to the Kbase device.
* @node: List head linking all trace buffers to
@@ -73,6 +61,12 @@
* @num_pages: Size of the data buffer, in pages.
* @trace_enable_init_mask: Initial value for the trace enable bit mask.
* @name: NULL terminated string which contains the name of the trace buffer.
+ *
+ * The firmware relays information to the host by writing on memory buffers
+ * which are allocated and partially configured by the host. These buffers
+ * are called Trace Buffers: each of them has a specific purpose and is
+ * identified by a name and a set of memory addresses where the host can
+ * set pointers to host-allocated structures.
*/
struct firmware_trace_buffer {
struct kbase_device *kbdev;
@@ -100,14 +94,14 @@
/**
* struct firmware_trace_buffer_data - Configuration data for trace buffers
*
- * Describe how to set up a trace buffer interface.
- * Trace buffers are identified by name and they require a data buffer and
- * an initial mask of values for the trace enable bits.
- *
* @name: Name identifier of the trace buffer
* @trace_enable_init_mask: Initial value to assign to the trace enable bits
* @size: Size of the data buffer to allocate for the trace buffer, in pages.
* The size of a data buffer must always be a power of 2.
+ *
+ * Describe how to set up a trace buffer interface.
+ * Trace buffers are identified by name and they require a data buffer and
+ * an initial mask of values for the trace enable bits.
*/
struct firmware_trace_buffer_data {
char name[64];
@@ -121,14 +115,13 @@
* This table contains the configuration data for the trace buffers that are
* expected to be parsed from the firmware.
*/
-static const struct firmware_trace_buffer_data
-trace_buffer_data[] = {
-#ifndef MALI_KBASE_BUILD
- { "fwutf", {0}, 1 },
+static const struct firmware_trace_buffer_data trace_buffer_data[] = {
+#if MALI_UNIT_TEST
+ { "fwutf", { 0 }, 1 },
#endif
- { FW_TRACE_BUF_NAME, {0}, 4 },
- { "benchmark", {0}, 2 },
- { "timeline", {0}, KBASE_CSF_TL_BUFFER_NR_PAGES },
+ { FIRMWARE_LOG_BUF_NAME, { 0 }, 4 },
+ { "benchmark", { 0 }, 2 },
+ { "timeline", { 0 }, KBASE_CSF_TL_BUFFER_NR_PAGES },
};
int kbase_csf_firmware_trace_buffers_init(struct kbase_device *kbdev)
@@ -180,13 +173,13 @@
extract_gpu_va =
(kbdev->csf.firmware_trace_buffers.mcu_rw.va_reg->start_pfn << PAGE_SHIFT) +
mcu_rw_offset;
- extract_cpu_va = (u32*)(
+ extract_cpu_va = (u32 *)(
kbdev->csf.firmware_trace_buffers.mcu_rw.cpu_addr +
mcu_rw_offset);
insert_gpu_va =
(kbdev->csf.firmware_trace_buffers.mcu_write.va_reg->start_pfn << PAGE_SHIFT) +
mcu_write_offset;
- insert_cpu_va = (u32*)(
+ insert_cpu_va = (u32 *)(
kbdev->csf.firmware_trace_buffers.mcu_write.cpu_addr +
mcu_write_offset);
data_buffer_gpu_va =
@@ -324,13 +317,13 @@
extract_gpu_va =
(kbdev->csf.firmware_trace_buffers.mcu_rw.va_reg->start_pfn << PAGE_SHIFT) +
mcu_rw_offset;
- extract_cpu_va = (u32*)(
+ extract_cpu_va = (u32 *)(
kbdev->csf.firmware_trace_buffers.mcu_rw.cpu_addr +
mcu_rw_offset);
insert_gpu_va =
(kbdev->csf.firmware_trace_buffers.mcu_write.va_reg->start_pfn << PAGE_SHIFT) +
mcu_write_offset;
- insert_cpu_va = (u32*)(
+ insert_cpu_va = (u32 *)(
kbdev->csf.firmware_trace_buffers.mcu_write.cpu_addr +
mcu_write_offset);
data_buffer_gpu_va =
@@ -513,10 +506,16 @@
}
EXPORT_SYMBOL(kbase_csf_firmware_trace_buffer_read_data);
-#if IS_ENABLED(CONFIG_DEBUG_FS)
+static void update_trace_buffer_active_mask64(struct firmware_trace_buffer *tb, u64 mask)
+{
+ unsigned int i;
+
+ for (i = 0; i < tb->trace_enable_entry_count; i++)
+ kbasep_csf_firmware_trace_buffer_update_trace_enable_bit(tb, i, (mask >> i) & 1);
+}
#define U32_BITS 32
-static u64 get_trace_buffer_active_mask64(struct firmware_trace_buffer *tb)
+u64 kbase_csf_firmware_trace_buffer_get_active_mask64(struct firmware_trace_buffer *tb)
{
u64 active_mask = tb->trace_enable_init_mask[0];
@@ -526,18 +525,7 @@
return active_mask;
}
-static void update_trace_buffer_active_mask64(struct firmware_trace_buffer *tb,
- u64 mask)
-{
- unsigned int i;
-
- for (i = 0; i < tb->trace_enable_entry_count; i++)
- kbasep_csf_firmware_trace_buffer_update_trace_enable_bit(
- tb, i, (mask >> i) & 1);
-}
-
-static int set_trace_buffer_active_mask64(struct firmware_trace_buffer *tb,
- u64 mask)
+int kbase_csf_firmware_trace_buffer_set_active_mask64(struct firmware_trace_buffer *tb, u64 mask)
{
struct kbase_device *kbdev = tb->kbdev;
unsigned long flags;
@@ -565,124 +553,3 @@
return err;
}
-
-static int kbase_csf_firmware_trace_enable_mask_read(void *data, u64 *val)
-{
- struct kbase_device *kbdev = (struct kbase_device *)data;
- struct firmware_trace_buffer *tb =
- kbase_csf_firmware_get_trace_buffer(kbdev, FW_TRACE_BUF_NAME);
-
- if (tb == NULL) {
- dev_err(kbdev->dev, "Couldn't get the firmware trace buffer");
- return -EIO;
- }
- /* The enabled traces limited to u64 here, regarded practical */
- *val = get_trace_buffer_active_mask64(tb);
- return 0;
-}
-
-static int kbase_csf_firmware_trace_enable_mask_write(void *data, u64 val)
-{
- struct kbase_device *kbdev = (struct kbase_device *)data;
- struct firmware_trace_buffer *tb =
- kbase_csf_firmware_get_trace_buffer(kbdev, FW_TRACE_BUF_NAME);
- u64 new_mask;
- unsigned int enable_bits_count;
-
- if (tb == NULL) {
- dev_err(kbdev->dev, "Couldn't get the firmware trace buffer");
- return -EIO;
- }
-
- /* Ignore unsupported types */
- enable_bits_count =
- kbase_csf_firmware_trace_buffer_get_trace_enable_bits_count(tb);
- if (enable_bits_count > 64) {
- dev_dbg(kbdev->dev, "Limit enabled bits count from %u to 64",
- enable_bits_count);
- enable_bits_count = 64;
- }
- new_mask = val & ((1 << enable_bits_count) - 1);
-
- if (new_mask != get_trace_buffer_active_mask64(tb))
- return set_trace_buffer_active_mask64(tb, new_mask);
- else
- return 0;
-}
-
-static int kbasep_csf_firmware_trace_debugfs_open(struct inode *in,
- struct file *file)
-{
- struct kbase_device *kbdev = in->i_private;
-
- file->private_data = kbdev;
- dev_dbg(kbdev->dev, "Opened firmware trace buffer dump debugfs file");
-
- return 0;
-}
-
-static ssize_t kbasep_csf_firmware_trace_debugfs_read(struct file *file,
- char __user *buf, size_t size, loff_t *ppos)
-{
- struct kbase_device *kbdev = file->private_data;
- u8 *pbyte;
- unsigned int n_read;
- unsigned long not_copied;
- /* Limit the kernel buffer to no more than two pages */
- size_t mem = MIN(size, 2 * PAGE_SIZE);
- unsigned long flags;
-
- struct firmware_trace_buffer *tb =
- kbase_csf_firmware_get_trace_buffer(kbdev, FW_TRACE_BUF_NAME);
-
- if (tb == NULL) {
- dev_err(kbdev->dev, "Couldn't get the firmware trace buffer");
- return -EIO;
- }
-
- pbyte = kmalloc(mem, GFP_KERNEL);
- if (pbyte == NULL) {
- dev_err(kbdev->dev, "Couldn't allocate memory for trace buffer dump");
- return -ENOMEM;
- }
-
- spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
- n_read = kbase_csf_firmware_trace_buffer_read_data(tb, pbyte, mem);
- spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
-
- /* Do the copy, if we have obtained some trace data */
- not_copied = (n_read) ? copy_to_user(buf, pbyte, n_read) : 0;
- kfree(pbyte);
-
- if (!not_copied) {
- *ppos += n_read;
- return n_read;
- }
-
- dev_err(kbdev->dev, "Couldn't copy trace buffer data to user space buffer");
- return -EFAULT;
-}
-
-
-DEFINE_SIMPLE_ATTRIBUTE(kbase_csf_firmware_trace_enable_mask_fops,
- kbase_csf_firmware_trace_enable_mask_read,
- kbase_csf_firmware_trace_enable_mask_write, "%llx\n");
-
-static const struct file_operations kbasep_csf_firmware_trace_debugfs_fops = {
- .owner = THIS_MODULE,
- .open = kbasep_csf_firmware_trace_debugfs_open,
- .read = kbasep_csf_firmware_trace_debugfs_read,
- .llseek = no_llseek,
-};
-
-void kbase_csf_firmware_trace_buffer_debugfs_init(struct kbase_device *kbdev)
-{
- debugfs_create_file("fw_trace_enable_mask", 0644,
- kbdev->mali_debugfs_directory, kbdev,
- &kbase_csf_firmware_trace_enable_mask_fops);
-
- debugfs_create_file("fw_traces", 0444,
- kbdev->mali_debugfs_directory, kbdev,
- &kbasep_csf_firmware_trace_debugfs_fops);
-}
-#endif /* CONFIG_DEBUG_FS */
--
Gitblit v1.6.2