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_kcpu.h | 86 ++++++++++++++++++++++++++++--------------
1 files changed, 57 insertions(+), 29 deletions(-)
diff --git a/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h b/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h
index 2f6da55..5cad8b2 100644
--- a/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h
+++ b/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_kcpu.h
@@ -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-2023 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
@@ -21,6 +21,9 @@
#ifndef _KBASE_CSF_KCPU_H_
#define _KBASE_CSF_KCPU_H_
+
+#include <mali_kbase_fence.h>
+#include <mali_kbase_sync.h>
#if (KERNEL_VERSION(4, 10, 0) > LINUX_VERSION_CODE)
#include <linux/fence.h>
@@ -44,12 +47,12 @@
};
/**
- * struct kbase_kcpu_command_fence_info - Structure which holds information
- * about the fence object enqueued in the kcpu command queue
+ * struct kbase_kcpu_command_fence_info - Structure which holds information about the
+ * fence object enqueued in the kcpu command queue
*
- * @fence_cb: Fence callback
- * @fence: Fence
- * @kcpu_queue: kcpu command queue
+ * @fence_cb: Fence callback
+ * @fence: Fence
+ * @kcpu_queue: kcpu command queue
*/
struct kbase_kcpu_command_fence_info {
#if (KERNEL_VERSION(4, 10, 0) > LINUX_VERSION_CODE)
@@ -117,6 +120,8 @@
* @signaled: Bit array used to report the status of the CQS wait objects.
* 1 is signaled, 0 otherwise.
* @nr_objs: Number of CQS objects in the array.
+ * @inherit_err_flags: Bit-pattern for CQSs in the array who's error field is to
+ * be used as the source to import into the queue's error-state
*/
struct kbase_kcpu_command_cqs_wait_operation_info {
struct base_cqs_wait_operation_info *objs;
@@ -181,8 +186,9 @@
struct kbase_mem_phy_alloc *cpu_alloc;
};
+#if IS_ENABLED(CONFIG_MALI_VECTOR_DUMP) || MALI_UNIT_TEST
/**
- * struct base_kcpu_command_group_suspend - structure which contains
+ * struct kbase_kcpu_command_group_suspend_info - structure which contains
* suspend buffer data captured for a suspended queue group.
*
* @sus_buf: Pointer to the structure which contains details of the
@@ -193,17 +199,11 @@
struct kbase_suspend_copy_buffer *sus_buf;
u8 group_handle;
};
+#endif
-#if MALI_UNIT_TEST
-struct kbase_kcpu_command_sample_time_info {
- u64 page_addr;
- u64 page_offset;
- struct page **page;
-};
-#endif /* MALI_UNIT_TEST */
/**
- * struct kbase_cpu_command - Command which is to be part of the kernel
+ * struct kbase_kcpu_command - Command which is to be part of the kernel
* command queue
*
* @type: Type of the command.
@@ -211,14 +211,16 @@
* indicates that it has been enqueued earlier.
* @info: Structure which holds information about the command
* dependent on the command type.
- * @info.fence: Fence
- * @info.cqs_wait: CQS wait
- * @info.cqs_set: CQS set
- * @info.import: import
- * @info.jit_alloc: jit allocation
- * @info.jit_free: jit deallocation
- * @info.suspend_buf_copy: suspend buffer copy
- * @info.sample_time: sample time
+ * @info.fence: Fence
+ * @info.cqs_wait: CQS wait
+ * @info.cqs_set: CQS set
+ * @info.cqs_wait_operation: CQS wait operation
+ * @info.cqs_set_operation: CQS set operation
+ * @info.import: import
+ * @info.jit_alloc: JIT allocation
+ * @info.jit_free: JIT deallocation
+ * @info.suspend_buf_copy: suspend buffer copy
+ * @info.sample_time: sample time
*/
struct kbase_kcpu_command {
enum base_kcpu_command_type type;
@@ -232,19 +234,20 @@
struct kbase_kcpu_command_import_info import;
struct kbase_kcpu_command_jit_alloc_info jit_alloc;
struct kbase_kcpu_command_jit_free_info jit_free;
+#if IS_ENABLED(CONFIG_MALI_VECTOR_DUMP) || MALI_UNIT_TEST
struct kbase_kcpu_command_group_suspend_info suspend_buf_copy;
-#if MALI_UNIT_TEST
- struct kbase_kcpu_command_sample_time_info sample_time;
-#endif /* MALI_UNIT_TEST */
+#endif
} info;
};
/**
* struct kbase_kcpu_command_queue - a command queue executed by the kernel
*
+ * @lock: Lock to protect accesses to this queue.
* @kctx: The context to which this command queue belongs.
* @commands: Array of commands which have been successfully
* enqueued to this command queue.
+ * @wq: Dedicated workqueue for processing commands.
* @work: struct work_struct which contains a pointer to
* the function which handles processing of kcpu
* commands enqueued into a kcpu command queue;
@@ -277,10 +280,15 @@
* or without errors since last cleaned.
* @jit_blocked: Used to keep track of command queues blocked
* by a pending JIT allocation command.
+ * @fence_timeout: Timer used to detect the fence wait timeout.
+ * @metadata: Metadata structure containing basic information about
+ * this queue for any fence objects associated with this queue.
*/
struct kbase_kcpu_command_queue {
+ struct mutex lock;
struct kbase_context *kctx;
struct kbase_kcpu_command commands[KBASEP_KCPU_QUEUE_SIZE];
+ struct workqueue_struct *wq;
struct work_struct work;
u8 start_offset;
u8 id;
@@ -293,6 +301,12 @@
bool command_started;
struct list_head jit_blocked;
bool has_error;
+#ifdef CONFIG_MALI_BIFROST_FENCE_DEBUG
+ struct timer_list fence_timeout;
+#endif /* CONFIG_MALI_BIFROST_FENCE_DEBUG */
+#if IS_ENABLED(CONFIG_SYNC_FILE)
+ struct kbase_kcpu_dma_fence_meta *metadata;
+#endif /* CONFIG_SYNC_FILE */
};
/**
@@ -302,6 +316,8 @@
* queue will be created.
* @newq: Pointer to the structure which contains information about
* the new KCPU command queue to be created.
+ *
+ * Return: 0 if successful or a negative error code on failure.
*/
int kbase_csf_kcpu_queue_new(struct kbase_context *kctx,
struct kbase_ioctl_kcpu_queue_new *newq);
@@ -309,12 +325,12 @@
/**
* kbase_csf_kcpu_queue_delete - Delete KCPU command queue.
*
- * Return: 0 if successful, -EINVAL if the queue ID is invalid.
- *
* @kctx: Pointer to the kbase context from which the KCPU command
* queue is to be deleted.
* @del: Pointer to the structure which specifies the KCPU command
* queue to be deleted.
+ *
+ * Return: 0 if successful or a negative error code on failure.
*/
int kbase_csf_kcpu_queue_delete(struct kbase_context *kctx,
struct kbase_ioctl_kcpu_queue_delete *del);
@@ -328,6 +344,8 @@
* @enq: Pointer to the structure which specifies the KCPU command
* as well as the KCPU command queue into which the command
* is to be enqueued.
+ *
+ * Return: 0 if successful or a negative error code on failure.
*/
int kbase_csf_kcpu_queue_enqueue(struct kbase_context *kctx,
struct kbase_ioctl_kcpu_queue_enqueue *enq);
@@ -345,12 +363,22 @@
/**
* kbase_csf_kcpu_queue_context_term - Terminate the kernel CPU queues context
* for a GPU address space
+ * @kctx: Pointer to the kbase context being terminated.
*
* This function deletes any kernel CPU queues that weren't deleted before
* context termination.
*
- * @kctx: Pointer to the kbase context being terminated.
*/
void kbase_csf_kcpu_queue_context_term(struct kbase_context *kctx);
+#if IS_ENABLED(CONFIG_SYNC_FILE)
+/* Test wrappers for dma fence operations. */
+int kbase_kcpu_fence_signal_process(struct kbase_kcpu_command_queue *kcpu_queue,
+ struct kbase_kcpu_command_fence_info *fence_info);
+
+int kbase_kcpu_fence_signal_init(struct kbase_kcpu_command_queue *kcpu_queue,
+ struct kbase_kcpu_command *current_command,
+ struct base_fence *fence, struct sync_file **sync_file, int *fd);
+#endif /* CONFIG_SYNC_FILE */
+
#endif /* _KBASE_CSF_KCPU_H_ */
--
Gitblit v1.6.2