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_tiler_heap_def.h | 60 +++++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 43 insertions(+), 17 deletions(-)
diff --git a/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h b/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h
index fb439cf..96f2b03 100644
--- a/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h
+++ b/kernel/drivers/gpu/arm/bifrost/csf/mali_kbase_csf_tiler_heap_def.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-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
@@ -56,27 +56,38 @@
((CHUNK_HDR_NEXT_ADDR_MASK >> CHUNK_HDR_NEXT_ADDR_POS) << \
CHUNK_HDR_NEXT_ADDR_ENCODE_SHIFT)
+/* The size of the area needed to be vmapped prior to handing the tiler heap
+ * over to the tiler, so that the shrinker could be invoked.
+ */
+#define NEXT_CHUNK_ADDR_SIZE (sizeof(u64))
+
/**
* struct kbase_csf_tiler_heap_chunk - A tiler heap chunk managed by the kernel
+ *
+ * @link: Link to this chunk in a list of chunks belonging to a
+ * @kbase_csf_tiler_heap.
+ * @region: Pointer to the GPU memory region allocated for the chunk.
+ * @map: Kernel VA mapping so that we would not need to use vmap in the
+ * shrinker callback, which can allocate. This maps only the header
+ * of the chunk, so it could be traversed.
+ * @gpu_va: GPU virtual address of the start of the memory region.
+ * This points to the header of the chunk and not to the low address
+ * of free memory within it.
*
* Chunks are allocated upon initialization of a tiler heap or in response to
* out-of-memory events from the firmware. Chunks are always fully backed by
* physical memory to avoid the overhead of processing GPU page faults. The
* allocated GPU memory regions are linked together independent of the list of
* kernel objects of this type.
- *
- * @link: Link to this chunk in a list of chunks belonging to a
- * @kbase_csf_tiler_heap.
- * @region: Pointer to the GPU memory region allocated for the chunk.
- * @gpu_va: GPU virtual address of the start of the memory region.
- * This points to the header of the chunk and not to the low address
- * of free memory within it.
*/
struct kbase_csf_tiler_heap_chunk {
struct list_head link;
struct kbase_va_region *region;
+ struct kbase_vmap_struct map;
u64 gpu_va;
};
+
+#define HEAP_BUF_DESCRIPTOR_CHECKED (1 << 0)
/**
* struct kbase_csf_tiler_heap - A tiler heap managed by the kernel
@@ -85,6 +96,20 @@
* associated.
* @link: Link to this heap in a list of tiler heaps belonging to
* the @kbase_csf_tiler_heap_context.
+ * @chunks_list: Linked list of allocated chunks.
+ * @gpu_va: The GPU virtual address of the heap context structure that
+ * was allocated for the firmware. This is also used to
+ * uniquely identify the heap.
+ * @heap_id: Unique id representing the heap, assigned during heap
+ * initialization.
+ * @buf_desc_va: Buffer descriptor GPU VA. Can be 0 for backward compatible
+ * to earlier version base interfaces.
+ * @buf_desc_reg: Pointer to the VA region that covers the provided buffer
+ * descriptor memory object pointed to by buf_desc_va.
+ * @gpu_va_map: Kernel VA mapping of the GPU VA region.
+ * @buf_desc_map: Kernel VA mapping of the buffer descriptor, read from
+ * during the tiler heap shrinker. Sync operations may need
+ * to be done before each read.
* @chunk_size: Size of each chunk, in bytes. Must be page-aligned.
* @chunk_count: The number of chunks currently allocated. Must not be
* zero or greater than @max_chunks.
@@ -93,22 +118,23 @@
* @target_in_flight: Number of render-passes that the driver should attempt
* to keep in flight for which allocation of new chunks is
* allowed. Must not be zero.
- * @gpu_va: The GPU virtual address of the heap context structure that
- * was allocated for the firmware. This is also used to
- * uniquely identify the heap.
- * @heap_id: Unique id representing the heap, assigned during heap
- * initialization.
- * @chunks_list: Linked list of allocated chunks.
+ * @buf_desc_checked: Indicates if runtime check on buffer descriptor has been done.
*/
struct kbase_csf_tiler_heap {
struct kbase_context *kctx;
struct list_head link;
+ struct list_head chunks_list;
+ u64 gpu_va;
+ u64 heap_id;
+ u64 buf_desc_va;
+ struct kbase_va_region *buf_desc_reg;
+ struct kbase_vmap_struct buf_desc_map;
+ struct kbase_vmap_struct gpu_va_map;
u32 chunk_size;
u32 chunk_count;
u32 max_chunks;
u16 target_in_flight;
- u64 gpu_va;
- u64 heap_id;
- struct list_head chunks_list;
+ bool buf_desc_checked;
};
+
#endif /* !_KBASE_CSF_TILER_HEAP_DEF_H_ */
--
Gitblit v1.6.2