From f70575805708cabdedea7498aaa3f710fde4d920 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 31 Jan 2024 03:29:01 +0000 Subject: [PATCH] add lvds1024*800 --- 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