My Project
Classes | Macros | Typedefs | Enumerations
mali_base_kernel.h File Reference
#include "mali_base_mem_priv.h"
#include "mali_kbase_profiling_gator_api.h"
#include "mali_midg_coherency.h"
#include "mali_kbase_gpu_id.h"
#include <osu/mali_osu.h>

Go to the source code of this file.

Classes

struct  base_mem_handle
 
union  kbase_pointer
 
struct  base_mem_import_user_buffer
 
struct  base_syncset
 a basic memory operation (sync-set). More...
 
struct  base_import_handle
 
struct  base_stream
 
struct  base_fence
 
struct  base_jd_udata
 Per-job data. More...
 
struct  base_mem_aliasing_info
 Memory aliasing info. More...
 
struct  base_jit_alloc_info
 
struct  base_dependency
 
struct  base_jd_atom_v2
 
struct  base_jd_atom_v2_uk6
 
struct  base_external_resource
 
struct  base_external_resource_list
 
struct  base_jd_debug_copy_buffer
 
struct  base_jd_event_v2
 Event reporting structure. More...
 
struct  base_dump_cpu_gpu_counters
 Structure for BASE_JD_REQ_SOFT_DUMP_CPU_GPU_COUNTERS jobs. More...
 
struct  mali_base_gpu_core_props
 
struct  mali_base_gpu_l2_cache_props
 
struct  mali_base_gpu_tiler_props
 
struct  mali_base_gpu_thread_props
 
struct  mali_base_gpu_coherent_group
 descriptor for a coherent group More...
 
struct  mali_base_gpu_coherent_group_info
 Coherency group information. More...
 
struct  gpu_raw_gpu_props
 
struct  mali_base_gpu_props
 
struct  base_jd_replay_payload
 The payload for a replay job. This must be in GPU memory. More...
 
struct  base_jd_replay_payload_uk10_2
 
struct  base_jd_replay_jc
 An entry in the linked list of job chains to be replayed. This must be in GPU memory. More...
 
struct  base_profiling_controls
 

Macros

#define __user
 
#define BASE_LEGACY_UK6_SUPPORT   1
 
#define BASE_LEGACY_UK7_SUPPORT   1
 
#define BASE_LEGACY_UK8_SUPPORT   1
 
#define BASE_LEGACY_UK9_SUPPORT   1
 
#define BASE_LEGACY_UK10_2_SUPPORT   1
 
#define BASE_LEGACY_UK10_4_SUPPORT   1
 
#define BASE_JD_ATOM_COUNT   256
 
#define BASEP_JD_SEM_PER_WORD_LOG2   5
 
#define BASEP_JD_SEM_PER_WORD   (1 << BASEP_JD_SEM_PER_WORD_LOG2)
 
#define BASEP_JD_SEM_WORD_NR(x)   ((x) >> BASEP_JD_SEM_PER_WORD_LOG2)
 
#define BASEP_JD_SEM_MASK_IN_WORD(x)   (1 << ((x) & (BASEP_JD_SEM_PER_WORD - 1)))
 
#define BASEP_JD_SEM_ARRAY_SIZE   BASEP_JD_SEM_WORD_NR(BASE_JD_ATOM_COUNT)
 
#define BASE_JD_SOFT_EVENT_SET   ((unsigned char)1)
 
#define BASE_JD_SOFT_EVENT_RESET   ((unsigned char)0)
 
#define BASE_GPU_NUM_TEXTURE_FEATURES_REGISTERS   3
 
#define BASE_MAX_COHERENT_GROUPS   16
 
#define BASE_DEBUG_FENCE_TIMEOUT   1
 
#define BASE_MEM_FLAGS_NR_BITS   19
 Number of bits used as flags for base memory management. More...
 
#define BASE_MEM_FLAGS_OUTPUT_MASK   BASE_MEM_NEED_MMAP
 
#define BASE_MEM_FLAGS_INPUT_MASK   (((1 << BASE_MEM_FLAGS_NR_BITS) - 1) & ~BASE_MEM_FLAGS_OUTPUT_MASK)
 
#define BASE_MEM_FLAGS_MODIFIABLE
 
#define BASE_MEM_INVALID_HANDLE   ((base_mem_handle) { {BASEP_MEM_INVALID_HANDLE} })
 Invalid memory handle. More...
 
#define BASE_MEM_WRITE_ALLOC_PAGES_HANDLE   ((base_mem_handle) { {BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE} })
 Special write-alloc memory handle. More...
 
#define BASEP_MEM_INVALID_HANDLE   (0ull << 12)
 
#define BASE_MEM_MMU_DUMP_HANDLE   (1ull << 12)
 
#define BASE_MEM_TRACE_BUFFER_HANDLE   (2ull << 12)
 
#define BASE_MEM_MAP_TRACKING_HANDLE   (3ull << 12)
 
#define BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE   (4ull << 12)
 
#define BASE_MEM_COOKIE_BASE   (64ul << 12)
 
#define BASE_MEM_FIRST_FREE_ADDRESS
 
#define BASE_MEM_MASK_4GB   0xfffff000UL
 
#define KBASE_COOKIE_MASK   ~1UL /* bit 0 is reserved */
 
#define INVALID_PLATFORM_FENCE   ((platform_fence_type)-1)
 
#define BASE_JD_DEP_TYPE_INVALID   (0)
 
#define BASE_JD_DEP_TYPE_DATA   (1U << 0)
 
#define BASE_JD_DEP_TYPE_ORDER   (1U << 1)
 
#define BASE_JD_REQ_DEP   ((base_jd_core_req)0)
 
#define BASE_JD_REQ_FS   ((base_jd_core_req)1 << 0)
 
#define BASE_JD_REQ_CS   ((base_jd_core_req)1 << 1)
 
#define BASE_JD_REQ_T   ((base_jd_core_req)1 << 2)
 
#define BASE_JD_REQ_CF   ((base_jd_core_req)1 << 3)
 
#define BASE_JD_REQ_V   ((base_jd_core_req)1 << 4)
 
#define BASE_JD_REQ_FS_AFBC   ((base_jd_core_req)1 << 13)
 
#define BASE_JD_REQ_EVENT_COALESCE   ((base_jd_core_req)1 << 5)
 
#define BASE_JD_REQ_COHERENT_GROUP   ((base_jd_core_req)1 << 6)
 
#define BASE_JD_REQ_PERMON   ((base_jd_core_req)1 << 7)
 
#define BASE_JD_REQ_EXTERNAL_RESOURCES   ((base_jd_core_req)1 << 8)
 
#define BASE_JD_REQ_SOFT_JOB   ((base_jd_core_req)1 << 9)
 
#define BASE_JD_REQ_SOFT_DUMP_CPU_GPU_TIME   (BASE_JD_REQ_SOFT_JOB | 0x1)
 
#define BASE_JD_REQ_SOFT_FENCE_TRIGGER   (BASE_JD_REQ_SOFT_JOB | 0x2)
 
#define BASE_JD_REQ_SOFT_FENCE_WAIT   (BASE_JD_REQ_SOFT_JOB | 0x3)
 
#define BASE_JD_REQ_SOFT_REPLAY   (BASE_JD_REQ_SOFT_JOB | 0x4)
 
#define BASE_JD_REQ_SOFT_EVENT_WAIT   (BASE_JD_REQ_SOFT_JOB | 0x5)
 
#define BASE_JD_REQ_SOFT_EVENT_SET   (BASE_JD_REQ_SOFT_JOB | 0x6)
 
#define BASE_JD_REQ_SOFT_EVENT_RESET   (BASE_JD_REQ_SOFT_JOB | 0x7)
 
#define BASE_JD_REQ_SOFT_DEBUG_COPY   (BASE_JD_REQ_SOFT_JOB | 0x8)
 
#define BASE_JD_REQ_SOFT_JIT_ALLOC   (BASE_JD_REQ_SOFT_JOB | 0x9)
 
#define BASE_JD_REQ_SOFT_JIT_FREE   (BASE_JD_REQ_SOFT_JOB | 0xa)
 
#define BASE_JD_REQ_SOFT_EXT_RES_MAP   (BASE_JD_REQ_SOFT_JOB | 0xb)
 
#define BASE_JD_REQ_SOFT_EXT_RES_UNMAP   (BASE_JD_REQ_SOFT_JOB | 0xc)
 
#define BASE_JD_REQ_ONLY_COMPUTE   ((base_jd_core_req)1 << 10)
 
#define BASE_JD_REQ_SPECIFIC_COHERENT_GROUP   ((base_jd_core_req)1 << 11)
 
#define BASE_JD_REQ_EVENT_ONLY_ON_FAILURE   ((base_jd_core_req)1 << 12)
 
#define BASEP_JD_REQ_EVENT_NEVER   ((base_jd_core_req)1 << 14)
 
#define BASE_JD_REQ_SKIP_CACHE_START   ((base_jd_core_req)1 << 15)
 
#define BASE_JD_REQ_SKIP_CACHE_END   ((base_jd_core_req)1 << 16)
 
#define BASEP_JD_REQ_RESERVED
 
#define BASE_JD_REQ_ATOM_TYPE
 
#define BASE_JD_REQ_SOFT_JOB_TYPE   (BASE_JD_REQ_SOFT_JOB | 0x1f)
 
#define BASE_JD_REQ_SOFT_JOB_OR_DEP(core_req)
 
#define BASE_JD_PRIO_MEDIUM   ((base_jd_prio)0)
 
#define BASE_JD_PRIO_HIGH   ((base_jd_prio)1)
 
#define BASE_JD_PRIO_LOW   ((base_jd_prio)2)
 
#define BASE_JD_NR_PRIO_LEVELS   3
 
#define BASE_EXT_RES_COUNT_MAX   10
 
#define BASE_CPU_GPU_CACHE_LINE_PADDING   (36)
 
#define GPU_MAX_JOB_SLOTS   16
 
#define BASE_GPU_NUM_TEXTURE_FEATURES_REGISTERS   3
 
#define BASE_MAX_COHERENT_GROUPS   16
 
#define BASE_CONTEXT_CREATE_ALLOWED_FLAGS
 
#define BASE_CONTEXT_CREATE_KERNEL_FLAGS   ((u32)BASE_CONTEXT_SYSTEM_MONITOR_SUBMIT_DISABLED)
 
#define BASEP_CONTEXT_FLAG_JOB_DUMP_DISABLED   ((u32)(1 << 31))
 
#define BASE_JD_REPLAY_F_CHAIN_JOB_LIMIT   256
 
#define BASE_TLSTREAM_ENABLE_LATENCY_TRACEPOINTS   (1 << 0)
 
#define BASE_TLSTREAM_JOB_DUMPING_ENABLED   (1 << 1)
 
#define BASE_TLSTREAM_FLAGS_MASK
 

Typedefs

typedef struct base_mem_handle base_mem_handle
 
typedef union kbase_pointer kbase_pointer
 
typedef u32 base_mem_alloc_flags
 Memory allocation, access/hint flags. More...
 
typedef enum base_mem_import_type base_mem_import_type
 
typedef enum base_backing_threshold_status base_backing_threshold_status
 Result codes of changing the size of the backing store allocated to a tmem region.
 
typedef struct base_syncset base_syncset
 a basic memory operation (sync-set). More...
 
typedef struct base_import_handle base_import_handle
 
typedef int platform_fence_type
 
typedef struct base_stream base_stream
 
typedef struct base_fence base_fence
 
typedef struct base_jd_udata base_jd_udata
 Per-job data. More...
 
typedef u8 base_jd_dep_type
 Job dependency type. More...
 
typedef u32 base_jd_core_req
 Job chain hardware requirements. More...
 
typedef u8 base_jd_prio
 
typedef u8 base_atom_id
 
typedef struct base_jd_atom_v2 base_jd_atom_v2
 
typedef enum base_external_resource_access base_external_resource_access
 
typedef struct base_external_resource base_external_resource
 
typedef enum base_jd_event_code base_jd_event_code
 Job chain event codes. More...
 
typedef struct base_jd_event_v2 base_jd_event_v2
 Event reporting structure. More...
 
typedef struct base_dump_cpu_gpu_counters base_dump_cpu_gpu_counters
 Structure for BASE_JD_REQ_SOFT_DUMP_CPU_GPU_COUNTERS jobs. More...
 
typedef struct mali_base_gpu_props base_gpu_props
 
typedef struct base_jd_replay_payload base_jd_replay_payload
 The payload for a replay job. This must be in GPU memory.
 
typedef struct base_jd_replay_payload_uk10_2 base_jd_replay_payload_uk10_2
 
typedef struct base_jd_replay_jc base_jd_replay_jc
 An entry in the linked list of job chains to be replayed. This must be in GPU memory.
 
typedef struct base_profiling_controls base_profiling_controls
 

Enumerations

enum  {
  BASE_MEM_PROT_CPU_RD = (1U << 0), BASE_MEM_PROT_CPU_WR = (1U << 1), BASE_MEM_PROT_GPU_RD = (1U << 2), BASE_MEM_PROT_GPU_WR = (1U << 3),
  BASE_MEM_PROT_GPU_EX = (1U << 4), BASE_MEM_GROW_ON_GPF = (1U << 9), BASE_MEM_COHERENT_SYSTEM = (1U << 10), BASE_MEM_COHERENT_LOCAL = (1U << 11),
  BASE_MEM_CACHED_CPU = (1U << 12), BASE_MEM_SAME_VA = (1U << 13), BASE_MEM_NEED_MMAP = (1U << 14), BASE_MEM_COHERENT_SYSTEM_REQUIRED = (1U << 15),
  BASE_MEM_SECURE = (1U << 16), BASE_MEM_DONT_NEED = (1U << 17), BASE_MEM_IMPORT_SHARED = (1U << 18)
}
 Memory allocation, access/hint flags. More...
 
enum  base_mem_import_type { BASE_MEM_IMPORT_TYPE_INVALID = 0, BASE_MEM_IMPORT_TYPE_UMP = 1, BASE_MEM_IMPORT_TYPE_UMM = 2, BASE_MEM_IMPORT_TYPE_USER_BUFFER = 3 }
 
enum  base_backing_threshold_status { BASE_BACKING_THRESHOLD_OK = 0, BASE_BACKING_THRESHOLD_ERROR_NOT_GROWABLE = -1, BASE_BACKING_THRESHOLD_ERROR_OOM = -2, BASE_BACKING_THRESHOLD_ERROR_INVALID_ARGUMENTS = -4 }
 Result codes of changing the size of the backing store allocated to a tmem region. More...
 
enum  kbase_atom_coreref_state {
  KBASE_ATOM_COREREF_STATE_NO_CORES_REQUESTED, KBASE_ATOM_COREREF_STATE_WAITING_FOR_REQUESTED_CORES, KBASE_ATOM_COREREF_STATE_RECHECK_AFFINITY, KBASE_ATOM_COREREF_STATE_CHECK_AFFINITY_VIOLATIONS,
  KBASE_ATOM_COREREF_STATE_READY
}
 States to model state machine processed by kbasep_js_job_check_ref_cores(), which handles retaining cores for power management and affinity management. More...
 
enum  kbase_jd_atom_state {
  KBASE_JD_ATOM_STATE_UNUSED, KBASE_JD_ATOM_STATE_QUEUED, KBASE_JD_ATOM_STATE_IN_JS, KBASE_JD_ATOM_STATE_HW_COMPLETED,
  KBASE_JD_ATOM_STATE_COMPLETED
}
 
enum  base_external_resource_access { BASE_EXT_RES_ACCESS_SHARED, BASE_EXT_RES_ACCESS_EXCLUSIVE }
 
enum  {
  BASE_JD_SW_EVENT_KERNEL = (1u << 15), BASE_JD_SW_EVENT = (1u << 14), BASE_JD_SW_EVENT_SUCCESS = (1u << 13), BASE_JD_SW_EVENT_JOB = (0u << 11),
  BASE_JD_SW_EVENT_BAG = (1u << 11), BASE_JD_SW_EVENT_INFO = (2u << 11), BASE_JD_SW_EVENT_RESERVED = (3u << 11), BASE_JD_SW_EVENT_TYPE_MASK = (3u << 11)
}
 Job chain event code bits Defines the bits used to create base_jd_event_code. More...
 
enum  base_jd_event_code {
  BASE_JD_EVENT_RANGE_HW_NONFAULT_START = 0, BASE_JD_EVENT_NOT_STARTED = 0x00, BASE_JD_EVENT_DONE = 0x01, BASE_JD_EVENT_STOPPED = 0x03,
  BASE_JD_EVENT_TERMINATED = 0x04, BASE_JD_EVENT_ACTIVE = 0x08, BASE_JD_EVENT_RANGE_HW_NONFAULT_END = 0x40, BASE_JD_EVENT_RANGE_HW_FAULT_OR_SW_ERROR_START = 0x40,
  BASE_JD_EVENT_JOB_CONFIG_FAULT = 0x40, BASE_JD_EVENT_JOB_POWER_FAULT = 0x41, BASE_JD_EVENT_JOB_READ_FAULT = 0x42, BASE_JD_EVENT_JOB_WRITE_FAULT = 0x43,
  BASE_JD_EVENT_JOB_AFFINITY_FAULT = 0x44, BASE_JD_EVENT_JOB_BUS_FAULT = 0x48, BASE_JD_EVENT_INSTR_INVALID_PC = 0x50, BASE_JD_EVENT_INSTR_INVALID_ENC = 0x51,
  BASE_JD_EVENT_INSTR_TYPE_MISMATCH = 0x52, BASE_JD_EVENT_INSTR_OPERAND_FAULT = 0x53, BASE_JD_EVENT_INSTR_TLS_FAULT = 0x54, BASE_JD_EVENT_INSTR_BARRIER_FAULT = 0x55,
  BASE_JD_EVENT_INSTR_ALIGN_FAULT = 0x56, BASE_JD_EVENT_DATA_INVALID_FAULT = 0x58, BASE_JD_EVENT_TILE_RANGE_FAULT = 0x59, BASE_JD_EVENT_STATE_FAULT = 0x5A,
  BASE_JD_EVENT_OUT_OF_MEMORY = 0x60, BASE_JD_EVENT_UNKNOWN = 0x7F, BASE_JD_EVENT_DELAYED_BUS_FAULT = 0x80, BASE_JD_EVENT_SHAREABILITY_FAULT = 0x88,
  BASE_JD_EVENT_TRANSLATION_FAULT_LEVEL1 = 0xC1, BASE_JD_EVENT_TRANSLATION_FAULT_LEVEL2 = 0xC2, BASE_JD_EVENT_TRANSLATION_FAULT_LEVEL3 = 0xC3, BASE_JD_EVENT_TRANSLATION_FAULT_LEVEL4 = 0xC4,
  BASE_JD_EVENT_PERMISSION_FAULT = 0xC8, BASE_JD_EVENT_TRANSTAB_BUS_FAULT_LEVEL1 = 0xD1, BASE_JD_EVENT_TRANSTAB_BUS_FAULT_LEVEL2 = 0xD2, BASE_JD_EVENT_TRANSTAB_BUS_FAULT_LEVEL3 = 0xD3,
  BASE_JD_EVENT_TRANSTAB_BUS_FAULT_LEVEL4 = 0xD4, BASE_JD_EVENT_ACCESS_FLAG = 0xD8, BASE_JD_EVENT_MEM_GROWTH_FAILED = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_JOB | 0x000, BASE_JD_EVENT_TIMED_OUT = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_JOB | 0x001,
  BASE_JD_EVENT_JOB_CANCELLED = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_JOB | 0x002, BASE_JD_EVENT_JOB_INVALID = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_JOB | 0x003, BASE_JD_EVENT_PM_EVENT = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_JOB | 0x004, BASE_JD_EVENT_FORCE_REPLAY = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_JOB | 0x005,
  BASE_JD_EVENT_BAG_INVALID = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_BAG | 0x003, BASE_JD_EVENT_RANGE_HW_FAULT_OR_SW_ERROR_END = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_RESERVED | 0x3FF, BASE_JD_EVENT_RANGE_SW_SUCCESS_START = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_SUCCESS | 0x000, BASE_JD_EVENT_PROGRESS_REPORT = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_SUCCESS | BASE_JD_SW_EVENT_JOB | 0x000,
  BASE_JD_EVENT_BAG_DONE = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_SUCCESS | BASE_JD_SW_EVENT_BAG | 0x000, BASE_JD_EVENT_DRV_TERMINATED = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_SUCCESS | BASE_JD_SW_EVENT_INFO | 0x000, BASE_JD_EVENT_RANGE_SW_SUCCESS_END = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_SUCCESS | BASE_JD_SW_EVENT_RESERVED | 0x3FF, BASE_JD_EVENT_RANGE_KERNEL_ONLY_START = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_KERNEL | 0x000,
  BASE_JD_EVENT_REMOVED_FROM_NEXT = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_KERNEL | BASE_JD_SW_EVENT_JOB | 0x000, BASE_JD_EVENT_RANGE_KERNEL_ONLY_END = BASE_JD_SW_EVENT | BASE_JD_SW_EVENT_KERNEL | BASE_JD_SW_EVENT_RESERVED | 0x3FF
}
 Job chain event codes. More...
 
enum  base_context_create_flags { BASE_CONTEXT_CREATE_FLAG_NONE = 0, BASE_CONTEXT_CCTX_EMBEDDED = (1u << 0), BASE_CONTEXT_SYSTEM_MONITOR_SUBMIT_DISABLED = (1u << 1) }
 

Detailed Description

Base structures shared with the kernel.

Macro Definition Documentation

◆ BASE_TLSTREAM_FLAGS_MASK

#define BASE_TLSTREAM_FLAGS_MASK
Value:
(BASE_TLSTREAM_ENABLE_LATENCY_TRACEPOINTS | \
BASE_TLSTREAM_JOB_DUMPING_ENABLED)

Typedef Documentation

◆ kbase_pointer

32/64-bit neutral way to represent pointers