blob: f01fc5486d2c4747f5f736d59e32991bf5ad8d60 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
* (C) COPYRIGHT 2010-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
* Foundation, and any use by you of this program is subject to the terms
* of such GNU license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you can access it online at
* http://www.gnu.org/licenses/gpl-2.0.html.
*
*/
/*
* THIS FILE IS AUTOGENERATED BY generate_tracepoints.py.
* DO NOT EDIT.
*/
#if !defined(_KBASE_TRACEPOINTS_H)
#define _KBASE_TRACEPOINTS_H
/* Tracepoints are abstract callbacks notifying that some important
* software or hardware event has happened.
*
* In this particular implementation, it results into a MIPE
* timeline event and, in some cases, it also fires an ftrace event
* (a.k.a. Gator events, see details below).
*/
#include "mali_kbase.h"
#include "mali_kbase_gator.h"
#include <linux/types.h>
#include <linux/atomic.h>
/* clang-format off */
struct kbase_tlstream;
extern const size_t __obj_stream_offset;
extern const size_t __aux_stream_offset;
/* This macro dispatches a kbase_tlstream from
* a kbase_device instance. Only AUX or OBJ
* streams can be dispatched. It is aware of
* kbase_timeline binary representation and
* relies on offset variables:
* __obj_stream_offset and __aux_stream_offset.
*/
#define __TL_DISPATCH_STREAM(kbdev, stype) \
((struct kbase_tlstream *) \
((u8 *)kbdev->timeline + __ ## stype ## _stream_offset))
struct tp_desc;
/* Descriptors of timeline messages transmitted in object events stream. */
extern const char *obj_desc_header;
extern const size_t obj_desc_header_size;
/* Descriptors of timeline messages transmitted in auxiliary events stream. */
extern const char *aux_desc_header;
extern const size_t aux_desc_header_size;
#define TL_ATOM_STATE_IDLE 0
#define TL_ATOM_STATE_READY 1
#define TL_ATOM_STATE_DONE 2
#define TL_ATOM_STATE_POSTED 3
#define TL_JS_EVENT_START GATOR_JOB_SLOT_START
#define TL_JS_EVENT_STOP GATOR_JOB_SLOT_STOP
#define TL_JS_EVENT_SOFT_STOP GATOR_JOB_SLOT_SOFT_STOPPED
#define TLSTREAM_ENABLED (1 << 31)
void __kbase_tlstream_tl_new_ctx(
struct kbase_tlstream *stream,
const void *ctx,
u32 ctx_nr,
u32 tgid
);
void __kbase_tlstream_tl_new_gpu(
struct kbase_tlstream *stream,
const void *gpu,
u32 gpu_id,
u32 core_count
);
void __kbase_tlstream_tl_new_lpu(
struct kbase_tlstream *stream,
const void *lpu,
u32 lpu_nr,
u32 lpu_fn
);
void __kbase_tlstream_tl_new_atom(
struct kbase_tlstream *stream,
const void *atom,
u32 atom_nr
);
void __kbase_tlstream_tl_new_as(
struct kbase_tlstream *stream,
const void *address_space,
u32 as_nr
);
void __kbase_tlstream_tl_del_ctx(
struct kbase_tlstream *stream,
const void *ctx
);
void __kbase_tlstream_tl_del_atom(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_lifelink_lpu_gpu(
struct kbase_tlstream *stream,
const void *lpu,
const void *gpu
);
void __kbase_tlstream_tl_lifelink_as_gpu(
struct kbase_tlstream *stream,
const void *address_space,
const void *gpu
);
void __kbase_tlstream_tl_ret_ctx_lpu(
struct kbase_tlstream *stream,
const void *ctx,
const void *lpu
);
void __kbase_tlstream_tl_ret_atom_ctx(
struct kbase_tlstream *stream,
const void *atom,
const void *ctx
);
void __kbase_tlstream_tl_ret_atom_lpu(
struct kbase_tlstream *stream,
const void *atom,
const void *lpu,
const char *attrib_match_list
);
void __kbase_tlstream_tl_nret_ctx_lpu(
struct kbase_tlstream *stream,
const void *ctx,
const void *lpu
);
void __kbase_tlstream_tl_nret_atom_ctx(
struct kbase_tlstream *stream,
const void *atom,
const void *ctx
);
void __kbase_tlstream_tl_nret_atom_lpu(
struct kbase_tlstream *stream,
const void *atom,
const void *lpu
);
void __kbase_tlstream_tl_ret_as_ctx(
struct kbase_tlstream *stream,
const void *address_space,
const void *ctx
);
void __kbase_tlstream_tl_nret_as_ctx(
struct kbase_tlstream *stream,
const void *address_space,
const void *ctx
);
void __kbase_tlstream_tl_ret_atom_as(
struct kbase_tlstream *stream,
const void *atom,
const void *address_space
);
void __kbase_tlstream_tl_nret_atom_as(
struct kbase_tlstream *stream,
const void *atom,
const void *address_space
);
void __kbase_tlstream_tl_attrib_atom_config(
struct kbase_tlstream *stream,
const void *atom,
u64 descriptor,
u64 affinity,
u32 config
);
void __kbase_tlstream_tl_jit_usedpages(
struct kbase_tlstream *stream,
u64 used_pages,
u32 j_id
);
void __kbase_tlstream_tl_attrib_atom_jitallocinfo(
struct kbase_tlstream *stream,
const void *atom,
u64 va_pgs,
u64 com_pgs,
u64 extent,
u32 j_id,
u32 bin_id,
u32 max_allocs,
u32 jit_flags,
u32 usg_id
);
void __kbase_tlstream_tl_attrib_atom_jitfreeinfo(
struct kbase_tlstream *stream,
const void *atom,
u32 j_id
);
void __kbase_tlstream_tl_attrib_as_config(
struct kbase_tlstream *stream,
const void *address_space,
u64 transtab,
u64 memattr,
u64 transcfg
);
void __kbase_tlstream_tl_event_lpu_softstop(
struct kbase_tlstream *stream,
const void *lpu
);
void __kbase_tlstream_tl_event_atom_softstop_ex(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_event_atom_softstop_issue(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_event_atom_softjob_start(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_event_atom_softjob_end(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_arbiter_granted(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_tl_arbiter_started(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_tl_arbiter_stop_requested(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_tl_arbiter_stopped(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_tl_arbiter_requested(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_jd_gpu_soft_reset(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_jd_tiler_heap_chunk_alloc(
struct kbase_tlstream *stream,
u32 ctx_nr,
u64 heap_id,
u64 chunk_va
);
void __kbase_tlstream_tl_js_sched_start(
struct kbase_tlstream *stream,
u32 dummy
);
void __kbase_tlstream_tl_js_sched_end(
struct kbase_tlstream *stream,
u32 dummy
);
void __kbase_tlstream_tl_jd_submit_atom_start(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_jd_submit_atom_end(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_jd_done_no_lock_start(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_jd_done_no_lock_end(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_jd_done_start(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_jd_done_end(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_jd_atom_complete(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_run_atom_start(
struct kbase_tlstream *stream,
const void *atom,
u32 atom_nr
);
void __kbase_tlstream_tl_run_atom_end(
struct kbase_tlstream *stream,
const void *atom,
u32 atom_nr
);
void __kbase_tlstream_tl_attrib_atom_priority(
struct kbase_tlstream *stream,
const void *atom,
u32 prio
);
void __kbase_tlstream_tl_attrib_atom_state(
struct kbase_tlstream *stream,
const void *atom,
u32 state
);
void __kbase_tlstream_tl_attrib_atom_prioritized(
struct kbase_tlstream *stream,
const void *atom
);
void __kbase_tlstream_tl_attrib_atom_jit(
struct kbase_tlstream *stream,
const void *atom,
u64 edit_addr,
u64 new_addr,
u32 jit_flags,
u64 mem_flags,
u32 j_id,
u64 com_pgs,
u64 extent,
u64 va_pgs
);
void __kbase_tlstream_tl_kbase_new_device(
struct kbase_tlstream *stream,
u32 kbase_device_id,
u32 kbase_device_gpu_core_count,
u32 kbase_device_max_num_csgs,
u32 kbase_device_as_count,
u32 kbase_device_sb_entry_count,
u32 kbase_device_has_cross_stream_sync,
u32 kbase_device_supports_gpu_sleep
);
void __kbase_tlstream_tl_kbase_device_program_csg(
struct kbase_tlstream *stream,
u32 kbase_device_id,
u32 kernel_ctx_id,
u32 gpu_cmdq_grp_handle,
u32 kbase_device_csg_slot_index,
u32 kbase_device_csg_slot_resumed
);
void __kbase_tlstream_tl_kbase_device_deprogram_csg(
struct kbase_tlstream *stream,
u32 kbase_device_id,
u32 kbase_device_csg_slot_index
);
void __kbase_tlstream_tl_kbase_device_halt_csg(
struct kbase_tlstream *stream,
u32 kbase_device_id,
u32 kbase_device_csg_slot_index
);
void __kbase_tlstream_tl_kbase_new_ctx(
struct kbase_tlstream *stream,
u32 kernel_ctx_id,
u32 kbase_device_id
);
void __kbase_tlstream_tl_kbase_del_ctx(
struct kbase_tlstream *stream,
u32 kernel_ctx_id
);
void __kbase_tlstream_tl_kbase_ctx_assign_as(
struct kbase_tlstream *stream,
u32 kernel_ctx_id,
u32 kbase_device_as_index
);
void __kbase_tlstream_tl_kbase_ctx_unassign_as(
struct kbase_tlstream *stream,
u32 kernel_ctx_id
);
void __kbase_tlstream_tl_kbase_new_kcpuqueue(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 kcpu_queue_id,
u32 kernel_ctx_id,
u32 kcpuq_num_pending_cmds
);
void __kbase_tlstream_tl_kbase_del_kcpuqueue(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_fence_signal(
struct kbase_tlstream *stream,
const void *kcpu_queue,
const void *fence
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_fence_wait(
struct kbase_tlstream *stream,
const void *kcpu_queue,
const void *fence
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_cqs_wait(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u64 cqs_obj_gpu_addr,
u32 cqs_obj_compare_value,
u32 cqs_obj_inherit_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_cqs_set(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u64 cqs_obj_gpu_addr
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_map_import(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u64 map_import_buf_gpu_addr
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_unmap_import(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u64 map_import_buf_gpu_addr
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_unmap_import_force(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u64 map_import_buf_gpu_addr
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_error_barrier(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_enqueue_group_suspend(
struct kbase_tlstream *stream,
const void *kcpu_queue,
const void *group_suspend_buf,
u32 gpu_cmdq_grp_handle
);
void __kbase_tlstream_tl_kbase_array_begin_kcpuqueue_enqueue_jit_alloc(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_item_kcpuqueue_enqueue_jit_alloc(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u64 jit_alloc_gpu_alloc_addr_dest,
u64 jit_alloc_va_pages,
u64 jit_alloc_commit_pages,
u64 jit_alloc_extent,
u32 jit_alloc_jit_id,
u32 jit_alloc_bin_id,
u32 jit_alloc_max_allocations,
u32 jit_alloc_flags,
u32 jit_alloc_usage_id
);
void __kbase_tlstream_tl_kbase_array_end_kcpuqueue_enqueue_jit_alloc(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_begin_kcpuqueue_enqueue_jit_free(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_item_kcpuqueue_enqueue_jit_free(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 jit_alloc_jit_id
);
void __kbase_tlstream_tl_kbase_array_end_kcpuqueue_enqueue_jit_free(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_signal_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_signal_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_wait_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_wait_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_cqs_wait_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_cqs_wait_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_cqs_set(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_map_import_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_map_import_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_force_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_force_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_jit_alloc_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_begin_kcpuqueue_execute_jit_alloc_end(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_item_kcpuqueue_execute_jit_alloc_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error,
u64 jit_alloc_gpu_alloc_addr,
u64 jit_alloc_mmu_flags
);
void __kbase_tlstream_tl_kbase_array_end_kcpuqueue_execute_jit_alloc_end(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_jit_free_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_begin_kcpuqueue_execute_jit_free_end(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_array_item_kcpuqueue_execute_jit_free_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error,
u64 jit_free_pages_used
);
void __kbase_tlstream_tl_kbase_array_end_kcpuqueue_execute_jit_free_end(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_error_barrier(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_group_suspend_start(
struct kbase_tlstream *stream,
const void *kcpu_queue
);
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_group_suspend_end(
struct kbase_tlstream *stream,
const void *kcpu_queue,
u32 execute_error
);
void __kbase_tlstream_tl_kbase_csffw_fw_reloading(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_fw_enabling(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_fw_request_sleep(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_fw_request_wakeup(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_fw_request_halt(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_fw_disabling(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_fw_off(
struct kbase_tlstream *stream,
u64 csffw_cycle
);
void __kbase_tlstream_tl_kbase_csffw_tlstream_overflow(
struct kbase_tlstream *stream,
u64 csffw_timestamp,
u64 csffw_cycle
);
void __kbase_tlstream_aux_pm_state(
struct kbase_tlstream *stream,
u32 core_type,
u64 core_state_bitset
);
void __kbase_tlstream_aux_pagefault(
struct kbase_tlstream *stream,
u32 ctx_nr,
u32 as_nr,
u64 page_cnt_change
);
void __kbase_tlstream_aux_pagesalloc(
struct kbase_tlstream *stream,
u32 ctx_nr,
u64 page_cnt
);
void __kbase_tlstream_aux_devfreq_target(
struct kbase_tlstream *stream,
u64 target_freq
);
void __kbase_tlstream_aux_jit_stats(
struct kbase_tlstream *stream,
u32 ctx_nr,
u32 bid,
u32 max_allocs,
u32 allocs,
u32 va_pages,
u32 ph_pages
);
void __kbase_tlstream_aux_tiler_heap_stats(
struct kbase_tlstream *stream,
u32 ctx_nr,
u64 heap_id,
u32 va_pages,
u32 ph_pages,
u32 max_chunks,
u32 chunk_size,
u32 chunk_count,
u32 target_in_flight,
u32 nr_in_flight
);
void __kbase_tlstream_aux_event_job_slot(
struct kbase_tlstream *stream,
const void *ctx,
u32 slot_nr,
u32 atom_nr,
u32 event
);
void __kbase_tlstream_aux_protected_enter_start(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_aux_protected_enter_end(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_aux_mmu_command(
struct kbase_tlstream *stream,
u32 kernel_ctx_id,
u32 mmu_cmd_id,
u32 mmu_synchronicity,
u64 mmu_lock_addr,
u32 mmu_lock_page_num
);
void __kbase_tlstream_aux_protected_leave_start(
struct kbase_tlstream *stream,
const void *gpu
);
void __kbase_tlstream_aux_protected_leave_end(
struct kbase_tlstream *stream,
const void *gpu
);
struct kbase_tlstream;
/**
* KBASE_TLSTREAM_TL_NEW_CTX - object ctx is created
*
* @kbdev: Kbase device
* @ctx: Name of the context object
* @ctx_nr: Kernel context number
* @tgid: Thread Group Id
*/
#define KBASE_TLSTREAM_TL_NEW_CTX( \
kbdev, \
ctx, \
ctx_nr, \
tgid \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_new_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
ctx, \
ctx_nr, \
tgid \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NEW_GPU - object gpu is created
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
* @gpu_id: Name of the GPU object
* @core_count: Number of cores this GPU hosts
*/
#define KBASE_TLSTREAM_TL_NEW_GPU( \
kbdev, \
gpu, \
gpu_id, \
core_count \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_new_gpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu, \
gpu_id, \
core_count \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NEW_LPU - object lpu is created
*
* @kbdev: Kbase device
* @lpu: Name of the Logical Processing Unit object
* @lpu_nr: Sequential number assigned to the newly created LPU
* @lpu_fn: Property describing functional abilities of this LPU
*/
#define KBASE_TLSTREAM_TL_NEW_LPU( \
kbdev, \
lpu, \
lpu_nr, \
lpu_fn \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_new_lpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
lpu, \
lpu_nr, \
lpu_fn \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NEW_ATOM - object atom is created
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @atom_nr: Sequential number of an atom
*/
#define KBASE_TLSTREAM_TL_NEW_ATOM( \
kbdev, \
atom, \
atom_nr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_new_atom( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
atom_nr \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NEW_AS - address space object is created
*
* @kbdev: Kbase device
* @address_space: Name of the address space object
* @as_nr: Address space number
*/
#define KBASE_TLSTREAM_TL_NEW_AS( \
kbdev, \
address_space, \
as_nr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_new_as( \
__TL_DISPATCH_STREAM(kbdev, obj), \
address_space, \
as_nr \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_DEL_CTX - context is destroyed
*
* @kbdev: Kbase device
* @ctx: Name of the context object
*/
#define KBASE_TLSTREAM_TL_DEL_CTX( \
kbdev, \
ctx \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_del_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
ctx \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_DEL_ATOM - atom is destroyed
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_DEL_ATOM( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_del_atom( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_LIFELINK_LPU_GPU - lpu is deleted with gpu
*
* @kbdev: Kbase device
* @lpu: Name of the Logical Processing Unit object
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_LIFELINK_LPU_GPU( \
kbdev, \
lpu, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_lifelink_lpu_gpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
lpu, \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_LIFELINK_AS_GPU - address space is deleted with gpu
*
* @kbdev: Kbase device
* @address_space: Name of the address space object
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_LIFELINK_AS_GPU( \
kbdev, \
address_space, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_lifelink_as_gpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
address_space, \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RET_CTX_LPU - context is retained by lpu
*
* @kbdev: Kbase device
* @ctx: Name of the context object
* @lpu: Name of the Logical Processing Unit object
*/
#define KBASE_TLSTREAM_TL_RET_CTX_LPU( \
kbdev, \
ctx, \
lpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_ret_ctx_lpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
ctx, \
lpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RET_ATOM_CTX - atom is retained by context
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @ctx: Name of the context object
*/
#define KBASE_TLSTREAM_TL_RET_ATOM_CTX( \
kbdev, \
atom, \
ctx \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_ret_atom_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
ctx \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RET_ATOM_LPU - atom is retained by lpu
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @lpu: Name of the Logical Processing Unit object
* @attrib_match_list: List containing match operator attributes
*/
#define KBASE_TLSTREAM_TL_RET_ATOM_LPU( \
kbdev, \
atom, \
lpu, \
attrib_match_list \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_ret_atom_lpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
lpu, \
attrib_match_list \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NRET_CTX_LPU - context is released by lpu
*
* @kbdev: Kbase device
* @ctx: Name of the context object
* @lpu: Name of the Logical Processing Unit object
*/
#define KBASE_TLSTREAM_TL_NRET_CTX_LPU( \
kbdev, \
ctx, \
lpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_nret_ctx_lpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
ctx, \
lpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NRET_ATOM_CTX - atom is released by context
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @ctx: Name of the context object
*/
#define KBASE_TLSTREAM_TL_NRET_ATOM_CTX( \
kbdev, \
atom, \
ctx \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_nret_atom_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
ctx \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NRET_ATOM_LPU - atom is released by lpu
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @lpu: Name of the Logical Processing Unit object
*/
#define KBASE_TLSTREAM_TL_NRET_ATOM_LPU( \
kbdev, \
atom, \
lpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_nret_atom_lpu( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
lpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RET_AS_CTX - address space is retained by context
*
* @kbdev: Kbase device
* @address_space: Name of the address space object
* @ctx: Name of the context object
*/
#define KBASE_TLSTREAM_TL_RET_AS_CTX( \
kbdev, \
address_space, \
ctx \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_ret_as_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
address_space, \
ctx \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NRET_AS_CTX - address space is released by context
*
* @kbdev: Kbase device
* @address_space: Name of the address space object
* @ctx: Name of the context object
*/
#define KBASE_TLSTREAM_TL_NRET_AS_CTX( \
kbdev, \
address_space, \
ctx \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_nret_as_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
address_space, \
ctx \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RET_ATOM_AS - atom is retained by address space
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @address_space: Name of the address space object
*/
#define KBASE_TLSTREAM_TL_RET_ATOM_AS( \
kbdev, \
atom, \
address_space \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_ret_atom_as( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
address_space \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_NRET_ATOM_AS - atom is released by address space
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @address_space: Name of the address space object
*/
#define KBASE_TLSTREAM_TL_NRET_ATOM_AS( \
kbdev, \
atom, \
address_space \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_nret_atom_as( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
address_space \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_CONFIG - atom job slot attributes
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @descriptor: Job descriptor address
* @affinity: Job affinity
* @config: Job config
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_CONFIG( \
kbdev, \
atom, \
descriptor, \
affinity, \
config \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_attrib_atom_config( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
descriptor, \
affinity, \
config \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JIT_USEDPAGES - used pages for jit
*
* @kbdev: Kbase device
* @used_pages: Number of pages used for jit
* @j_id: Unique ID provided by the caller, this is used to pair allocation and free requests.
*/
#define KBASE_TLSTREAM_TL_JIT_USEDPAGES( \
kbdev, \
used_pages, \
j_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jit_usedpages( \
__TL_DISPATCH_STREAM(kbdev, obj), \
used_pages, \
j_id \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_JITALLOCINFO - Information about JIT allocations
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @va_pgs: The minimum number of virtual pages required
* @com_pgs: The minimum number of physical pages which should back the allocation.
* @extent: Granularity of physical pages to grow the allocation by during a fault.
* @j_id: Unique ID provided by the caller, this is used to pair allocation and free requests.
* @bin_id: The JIT allocation bin, used in conjunction with max_allocations to limit the number of each type of JIT allocation.
* @max_allocs: Maximum allocations allowed in this bin.
* @jit_flags: Flags specifying the special requirements for the JIT allocation.
* @usg_id: A hint about which allocation should be reused.
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_JITALLOCINFO( \
kbdev, \
atom, \
va_pgs, \
com_pgs, \
extent, \
j_id, \
bin_id, \
max_allocs, \
jit_flags, \
usg_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_attrib_atom_jitallocinfo( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
va_pgs, \
com_pgs, \
extent, \
j_id, \
bin_id, \
max_allocs, \
jit_flags, \
usg_id \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_JITFREEINFO - Information about JIT frees
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @j_id: Unique ID provided by the caller, this is used to pair allocation and free requests.
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_JITFREEINFO( \
kbdev, \
atom, \
j_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_attrib_atom_jitfreeinfo( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
j_id \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_AS_CONFIG - address space attributes
*
* @kbdev: Kbase device
* @address_space: Name of the address space object
* @transtab: Configuration of the TRANSTAB register
* @memattr: Configuration of the MEMATTR register
* @transcfg: Configuration of the TRANSCFG register (or zero if not present)
*/
#define KBASE_TLSTREAM_TL_ATTRIB_AS_CONFIG( \
kbdev, \
address_space, \
transtab, \
memattr, \
transcfg \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_attrib_as_config( \
__TL_DISPATCH_STREAM(kbdev, obj), \
address_space, \
transtab, \
memattr, \
transcfg \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_EVENT_LPU_SOFTSTOP - softstop event on given lpu
*
* @kbdev: Kbase device
* @lpu: Name of the Logical Processing Unit object
*/
#define KBASE_TLSTREAM_TL_EVENT_LPU_SOFTSTOP( \
kbdev, \
lpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_event_lpu_softstop( \
__TL_DISPATCH_STREAM(kbdev, obj), \
lpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTSTOP_EX - atom softstopped
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTSTOP_EX( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_event_atom_softstop_ex( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTSTOP_ISSUE - atom softstop issued
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTSTOP_ISSUE( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_event_atom_softstop_issue( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTJOB_START - atom soft job has started
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTJOB_START( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_event_atom_softjob_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTJOB_END - atom soft job has completed
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_EVENT_ATOM_SOFTJOB_END( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_event_atom_softjob_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ARBITER_GRANTED - Arbiter has granted gpu access
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_ARBITER_GRANTED( \
kbdev, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_arbiter_granted( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ARBITER_STARTED - Driver is running again and able to process jobs
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_ARBITER_STARTED( \
kbdev, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_arbiter_started( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ARBITER_STOP_REQUESTED - Arbiter has requested driver to stop using gpu
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_ARBITER_STOP_REQUESTED( \
kbdev, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_arbiter_stop_requested( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ARBITER_STOPPED - Driver has stopped using gpu
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_ARBITER_STOPPED( \
kbdev, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_arbiter_stopped( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ARBITER_REQUESTED - Driver has requested the arbiter for gpu access
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_TL_ARBITER_REQUESTED( \
kbdev, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_arbiter_requested( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_JD_GPU_SOFT_RESET - gpu soft reset
*
* @kbdev: Kbase device
* @gpu: Name of the GPU object
*/
#define KBASE_TLSTREAM_JD_GPU_SOFT_RESET( \
kbdev, \
gpu \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_jd_gpu_soft_reset( \
__TL_DISPATCH_STREAM(kbdev, obj), \
gpu \
); \
} while (0)
/**
* KBASE_TLSTREAM_JD_TILER_HEAP_CHUNK_ALLOC - Tiler Heap Chunk Allocation
*
* @kbdev: Kbase device
* @ctx_nr: Kernel context number
* @heap_id: Unique id used to represent a heap under a context
* @chunk_va: Virtual start address of tiler heap chunk
*/
#define KBASE_TLSTREAM_JD_TILER_HEAP_CHUNK_ALLOC( \
kbdev, \
ctx_nr, \
heap_id, \
chunk_va \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_jd_tiler_heap_chunk_alloc( \
__TL_DISPATCH_STREAM(kbdev, obj), \
ctx_nr, \
heap_id, \
chunk_va \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JS_SCHED_START - Scheduling starts
*
* @kbdev: Kbase device
* @dummy: dummy argument
*/
#define KBASE_TLSTREAM_TL_JS_SCHED_START( \
kbdev, \
dummy \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_js_sched_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
dummy \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JS_SCHED_END - Scheduling ends
*
* @kbdev: Kbase device
* @dummy: dummy argument
*/
#define KBASE_TLSTREAM_TL_JS_SCHED_END( \
kbdev, \
dummy \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_js_sched_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
dummy \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_SUBMIT_ATOM_START - Submitting an atom starts
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_SUBMIT_ATOM_START( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_submit_atom_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_SUBMIT_ATOM_END - Submitting an atom ends
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_SUBMIT_ATOM_END( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_submit_atom_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_DONE_NO_LOCK_START - Within function kbase_jd_done_nolock
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_DONE_NO_LOCK_START( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_done_no_lock_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_DONE_NO_LOCK_END - Within function kbase_jd_done_nolock - end
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_DONE_NO_LOCK_END( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_done_no_lock_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_DONE_START - Start of kbase_jd_done
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_DONE_START( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_done_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_DONE_END - End of kbase_jd_done
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_DONE_END( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_done_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_JD_ATOM_COMPLETE - Atom marked complete
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_JD_ATOM_COMPLETE( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_jd_atom_complete( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RUN_ATOM_START - Running of atom starts
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @atom_nr: Sequential number of an atom
*/
#define KBASE_TLSTREAM_TL_RUN_ATOM_START( \
kbdev, \
atom, \
atom_nr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_run_atom_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
atom_nr \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_RUN_ATOM_END - Running of atom ends
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @atom_nr: Sequential number of an atom
*/
#define KBASE_TLSTREAM_TL_RUN_ATOM_END( \
kbdev, \
atom, \
atom_nr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_tl_run_atom_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
atom_nr \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_PRIORITY - atom priority
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @prio: Atom priority
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_PRIORITY( \
kbdev, \
atom, \
prio \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_LATENCY_TRACEPOINTS) \
__kbase_tlstream_tl_attrib_atom_priority( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
prio \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_STATE - atom state
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @state: Atom state
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_STATE( \
kbdev, \
atom, \
state \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_LATENCY_TRACEPOINTS) \
__kbase_tlstream_tl_attrib_atom_state( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
state \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_PRIORITIZED - atom caused priority change
*
* @kbdev: Kbase device
* @atom: Atom identifier
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_PRIORITIZED( \
kbdev, \
atom \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_LATENCY_TRACEPOINTS) \
__kbase_tlstream_tl_attrib_atom_prioritized( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_ATTRIB_ATOM_JIT - jit done for atom
*
* @kbdev: Kbase device
* @atom: Atom identifier
* @edit_addr: Address edited by jit
* @new_addr: Address placed into the edited location
* @jit_flags: Flags specifying the special requirements for the JIT allocation.
* @mem_flags: Flags defining the properties of a memory region
* @j_id: Unique ID provided by the caller, this is used to pair allocation and free requests.
* @com_pgs: The minimum number of physical pages which should back the allocation.
* @extent: Granularity of physical pages to grow the allocation by during a fault.
* @va_pgs: The minimum number of virtual pages required
*/
#define KBASE_TLSTREAM_TL_ATTRIB_ATOM_JIT( \
kbdev, \
atom, \
edit_addr, \
new_addr, \
jit_flags, \
mem_flags, \
j_id, \
com_pgs, \
extent, \
va_pgs \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_JOB_DUMPING_ENABLED) \
__kbase_tlstream_tl_attrib_atom_jit( \
__TL_DISPATCH_STREAM(kbdev, obj), \
atom, \
edit_addr, \
new_addr, \
jit_flags, \
mem_flags, \
j_id, \
com_pgs, \
extent, \
va_pgs \
); \
} while (0)
/**
* KBASE_TLSTREAM_TL_KBASE_NEW_DEVICE - New KBase Device
*
* @kbdev: Kbase device
* @kbase_device_id: The ID of the physical hardware
* @kbase_device_gpu_core_count: The number of gpu cores in the physical hardware
* @kbase_device_max_num_csgs: The max number of CSGs the physical hardware supports
* @kbase_device_as_count: The number of address spaces the physical hardware has available
* @kbase_device_sb_entry_count: The number of entries each scoreboard set in the physical hardware has available
* @kbase_device_has_cross_stream_sync: Whether cross-stream synchronization is supported
* @kbase_device_supports_gpu_sleep: Whether GPU sleep is supported
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_NEW_DEVICE( \
kbdev, \
kbase_device_id, \
kbase_device_gpu_core_count, \
kbase_device_max_num_csgs, \
kbase_device_as_count, \
kbase_device_sb_entry_count, \
kbase_device_has_cross_stream_sync, \
kbase_device_supports_gpu_sleep \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_new_device( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kbase_device_id, \
kbase_device_gpu_core_count, \
kbase_device_max_num_csgs, \
kbase_device_as_count, \
kbase_device_sb_entry_count, \
kbase_device_has_cross_stream_sync, \
kbase_device_supports_gpu_sleep \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_NEW_DEVICE( \
kbdev, \
kbase_device_id, \
kbase_device_gpu_core_count, \
kbase_device_max_num_csgs, \
kbase_device_as_count, \
kbase_device_sb_entry_count, \
kbase_device_has_cross_stream_sync, \
kbase_device_supports_gpu_sleep \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_DEVICE_PROGRAM_CSG - CSG is programmed to a slot
*
* @kbdev: Kbase device
* @kbase_device_id: The ID of the physical hardware
* @kernel_ctx_id: Unique ID for the KBase Context
* @gpu_cmdq_grp_handle: GPU Command Queue Group handle which will match userspace
* @kbase_device_csg_slot_index: The index of the slot in the scheduler being programmed
* @kbase_device_csg_slot_resumed: Whether the csg is being resumed
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_DEVICE_PROGRAM_CSG( \
kbdev, \
kbase_device_id, \
kernel_ctx_id, \
gpu_cmdq_grp_handle, \
kbase_device_csg_slot_index, \
kbase_device_csg_slot_resumed \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_device_program_csg( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kbase_device_id, \
kernel_ctx_id, \
gpu_cmdq_grp_handle, \
kbase_device_csg_slot_index, \
kbase_device_csg_slot_resumed \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_DEVICE_PROGRAM_CSG( \
kbdev, \
kbase_device_id, \
kernel_ctx_id, \
gpu_cmdq_grp_handle, \
kbase_device_csg_slot_index, \
kbase_device_csg_slot_resumed \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_DEVICE_DEPROGRAM_CSG - CSG is deprogrammed from a slot
*
* @kbdev: Kbase device
* @kbase_device_id: The ID of the physical hardware
* @kbase_device_csg_slot_index: The index of the slot in the scheduler being programmed
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_DEVICE_DEPROGRAM_CSG( \
kbdev, \
kbase_device_id, \
kbase_device_csg_slot_index \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_device_deprogram_csg( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kbase_device_id, \
kbase_device_csg_slot_index \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_DEVICE_DEPROGRAM_CSG( \
kbdev, \
kbase_device_id, \
kbase_device_csg_slot_index \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_DEVICE_HALT_CSG - CSG is halted
*
* @kbdev: Kbase device
* @kbase_device_id: The ID of the physical hardware
* @kbase_device_csg_slot_index: The index of the slot in the scheduler being programmed
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_DEVICE_HALT_CSG( \
kbdev, \
kbase_device_id, \
kbase_device_csg_slot_index \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_device_halt_csg( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kbase_device_id, \
kbase_device_csg_slot_index \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_DEVICE_HALT_CSG( \
kbdev, \
kbase_device_id, \
kbase_device_csg_slot_index \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_NEW_CTX - New KBase Context
*
* @kbdev: Kbase device
* @kernel_ctx_id: Unique ID for the KBase Context
* @kbase_device_id: The ID of the physical hardware
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_NEW_CTX( \
kbdev, \
kernel_ctx_id, \
kbase_device_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_new_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kernel_ctx_id, \
kbase_device_id \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_NEW_CTX( \
kbdev, \
kernel_ctx_id, \
kbase_device_id \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_DEL_CTX - Delete KBase Context
*
* @kbdev: Kbase device
* @kernel_ctx_id: Unique ID for the KBase Context
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_DEL_CTX( \
kbdev, \
kernel_ctx_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_del_ctx( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kernel_ctx_id \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_DEL_CTX( \
kbdev, \
kernel_ctx_id \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CTX_ASSIGN_AS - Address Space is assigned to a KBase context
*
* @kbdev: Kbase device
* @kernel_ctx_id: Unique ID for the KBase Context
* @kbase_device_as_index: The index of the device address space being assigned
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CTX_ASSIGN_AS( \
kbdev, \
kernel_ctx_id, \
kbase_device_as_index \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_ctx_assign_as( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kernel_ctx_id, \
kbase_device_as_index \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_CTX_ASSIGN_AS( \
kbdev, \
kernel_ctx_id, \
kbase_device_as_index \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CTX_UNASSIGN_AS - Address Space is unassigned from a KBase context
*
* @kbdev: Kbase device
* @kernel_ctx_id: Unique ID for the KBase Context
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CTX_UNASSIGN_AS( \
kbdev, \
kernel_ctx_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_ctx_unassign_as( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kernel_ctx_id \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_CTX_UNASSIGN_AS( \
kbdev, \
kernel_ctx_id \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_NEW_KCPUQUEUE - New KCPU Queue
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @kcpu_queue_id: KCPU queue ID
* @kernel_ctx_id: Unique ID for the KBase Context
* @kcpuq_num_pending_cmds: Number of commands already enqueued in the KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_NEW_KCPUQUEUE( \
kbdev, \
kcpu_queue, \
kcpu_queue_id, \
kernel_ctx_id, \
kcpuq_num_pending_cmds \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_new_kcpuqueue( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
kcpu_queue_id, \
kernel_ctx_id, \
kcpuq_num_pending_cmds \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_NEW_KCPUQUEUE( \
kbdev, \
kcpu_queue, \
kcpu_queue_id, \
kernel_ctx_id, \
kcpuq_num_pending_cmds \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_DEL_KCPUQUEUE - Delete KCPU Queue
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_DEL_KCPUQUEUE( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_del_kcpuqueue( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_DEL_KCPUQUEUE( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_SIGNAL - KCPU Queue enqueues Signal on Fence
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @fence: Fence object handle
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_SIGNAL( \
kbdev, \
kcpu_queue, \
fence \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_fence_signal( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
fence \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_SIGNAL( \
kbdev, \
kcpu_queue, \
fence \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_WAIT - KCPU Queue enqueues Wait on Fence
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @fence: Fence object handle
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_WAIT( \
kbdev, \
kcpu_queue, \
fence \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_fence_wait( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
fence \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_WAIT( \
kbdev, \
kcpu_queue, \
fence \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_CQS_WAIT - KCPU Queue enqueues Wait on Cross Queue Sync Object
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @cqs_obj_gpu_addr: CQS Object GPU pointer
* @cqs_obj_compare_value: Semaphore value that should be exceeded for the WAIT to pass
* @cqs_obj_inherit_error: Flag which indicates if the CQS object error state should be inherited by the queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_CQS_WAIT( \
kbdev, \
kcpu_queue, \
cqs_obj_gpu_addr, \
cqs_obj_compare_value, \
cqs_obj_inherit_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_cqs_wait( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
cqs_obj_gpu_addr, \
cqs_obj_compare_value, \
cqs_obj_inherit_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_CQS_WAIT( \
kbdev, \
kcpu_queue, \
cqs_obj_gpu_addr, \
cqs_obj_compare_value, \
cqs_obj_inherit_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_CQS_SET - KCPU Queue enqueues Set on Cross Queue Sync Object
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @cqs_obj_gpu_addr: CQS Object GPU pointer
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_CQS_SET( \
kbdev, \
kcpu_queue, \
cqs_obj_gpu_addr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_cqs_set( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
cqs_obj_gpu_addr \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_CQS_SET( \
kbdev, \
kcpu_queue, \
cqs_obj_gpu_addr \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_MAP_IMPORT - KCPU Queue enqueues Map Import
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @map_import_buf_gpu_addr: Map import buffer GPU pointer
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_MAP_IMPORT( \
kbdev, \
kcpu_queue, \
map_import_buf_gpu_addr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_map_import( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
map_import_buf_gpu_addr \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_MAP_IMPORT( \
kbdev, \
kcpu_queue, \
map_import_buf_gpu_addr \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT - KCPU Queue enqueues Unmap Import
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @map_import_buf_gpu_addr: Map import buffer GPU pointer
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT( \
kbdev, \
kcpu_queue, \
map_import_buf_gpu_addr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_unmap_import( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
map_import_buf_gpu_addr \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT( \
kbdev, \
kcpu_queue, \
map_import_buf_gpu_addr \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT_FORCE - KCPU Queue enqueues Unmap Import ignoring reference count
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @map_import_buf_gpu_addr: Map import buffer GPU pointer
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT_FORCE( \
kbdev, \
kcpu_queue, \
map_import_buf_gpu_addr \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_unmap_import_force( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
map_import_buf_gpu_addr \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT_FORCE( \
kbdev, \
kcpu_queue, \
map_import_buf_gpu_addr \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_ERROR_BARRIER - KCPU Queue enqueues Error Barrier
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_ERROR_BARRIER( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_error_barrier( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_ERROR_BARRIER( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_GROUP_SUSPEND - KCPU Queue enqueues Group Suspend
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @group_suspend_buf: Pointer to the suspend buffer structure
* @gpu_cmdq_grp_handle: GPU Command Queue Group handle which will match userspace
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_GROUP_SUSPEND( \
kbdev, \
kcpu_queue, \
group_suspend_buf, \
gpu_cmdq_grp_handle \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_enqueue_group_suspend( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
group_suspend_buf, \
gpu_cmdq_grp_handle \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_ENQUEUE_GROUP_SUSPEND( \
kbdev, \
kcpu_queue, \
group_suspend_buf, \
gpu_cmdq_grp_handle \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_ALLOC - Begin array of KCPU Queue enqueues JIT Alloc
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_ALLOC( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_begin_kcpuqueue_enqueue_jit_alloc( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_ALLOC( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_ALLOC - Array item of KCPU Queue enqueues JIT Alloc
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @jit_alloc_gpu_alloc_addr_dest: The GPU virtual address to write the JIT allocated GPU virtual address to
* @jit_alloc_va_pages: The minimum number of virtual pages required
* @jit_alloc_commit_pages: The minimum number of physical pages which should back the allocation
* @jit_alloc_extent: Granularity of physical pages to grow the allocation by during a fault
* @jit_alloc_jit_id: Unique ID provided by the caller, this is used to pair allocation and free requests. Zero is not a valid value
* @jit_alloc_bin_id: The JIT allocation bin, used in conjunction with max_allocations to limit the number of each type of JIT allocation
* @jit_alloc_max_allocations: The maximum number of allocations allowed within the bin specified by bin_id. Should be the same for all JIT allocations within the same bin.
* @jit_alloc_flags: Flags specifying the special requirements for the JIT allocation
* @jit_alloc_usage_id: A hint about which allocation should be reused. The kernel should attempt to use a previous allocation with the same usage_id
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_ALLOC( \
kbdev, \
kcpu_queue, \
jit_alloc_gpu_alloc_addr_dest, \
jit_alloc_va_pages, \
jit_alloc_commit_pages, \
jit_alloc_extent, \
jit_alloc_jit_id, \
jit_alloc_bin_id, \
jit_alloc_max_allocations, \
jit_alloc_flags, \
jit_alloc_usage_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_item_kcpuqueue_enqueue_jit_alloc( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
jit_alloc_gpu_alloc_addr_dest, \
jit_alloc_va_pages, \
jit_alloc_commit_pages, \
jit_alloc_extent, \
jit_alloc_jit_id, \
jit_alloc_bin_id, \
jit_alloc_max_allocations, \
jit_alloc_flags, \
jit_alloc_usage_id \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_ALLOC( \
kbdev, \
kcpu_queue, \
jit_alloc_gpu_alloc_addr_dest, \
jit_alloc_va_pages, \
jit_alloc_commit_pages, \
jit_alloc_extent, \
jit_alloc_jit_id, \
jit_alloc_bin_id, \
jit_alloc_max_allocations, \
jit_alloc_flags, \
jit_alloc_usage_id \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_ALLOC - End array of KCPU Queue enqueues JIT Alloc
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_ALLOC( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_end_kcpuqueue_enqueue_jit_alloc( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_ALLOC( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_FREE - Begin array of KCPU Queue enqueues JIT Free
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_FREE( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_begin_kcpuqueue_enqueue_jit_free( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_FREE( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_FREE - Array item of KCPU Queue enqueues JIT Free
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @jit_alloc_jit_id: Unique ID provided by the caller, this is used to pair allocation and free requests. Zero is not a valid value
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_FREE( \
kbdev, \
kcpu_queue, \
jit_alloc_jit_id \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_item_kcpuqueue_enqueue_jit_free( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
jit_alloc_jit_id \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_FREE( \
kbdev, \
kcpu_queue, \
jit_alloc_jit_id \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_FREE - End array of KCPU Queue enqueues JIT Free
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_FREE( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_end_kcpuqueue_enqueue_jit_free( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_FREE( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_START - KCPU Queue starts a Signal on Fence
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_signal_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_END - KCPU Queue ends a Signal on Fence
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_signal_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_START - KCPU Queue starts a Wait on Fence
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_wait_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_END - KCPU Queue ends a Wait on Fence
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_fence_wait_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_START - KCPU Queue starts a Wait on an array of Cross Queue Sync Objects
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_cqs_wait_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_END - KCPU Queue ends a Wait on an array of Cross Queue Sync Objects
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_cqs_wait_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_SET - KCPU Queue executes a Set on an array of Cross Queue Sync Objects
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_SET( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_cqs_set( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_SET( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_START - KCPU Queue starts a Map Import
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_map_import_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_END - KCPU Queue ends a Map Import
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_map_import_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_START - KCPU Queue starts an Unmap Import
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_END - KCPU Queue ends an Unmap Import
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_START - KCPU Queue starts an Unmap Import ignoring reference count
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_force_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_END - KCPU Queue ends an Unmap Import ignoring reference count
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_unmap_import_force_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_ALLOC_START - KCPU Queue starts an array of JIT Allocs
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_ALLOC_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_jit_alloc_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_ALLOC_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_ALLOC_END - Begin array of KCPU Queue ends an array of JIT Allocs
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_ALLOC_END( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_begin_kcpuqueue_execute_jit_alloc_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_ALLOC_END( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_ALLOC_END - Array item of KCPU Queue ends an array of JIT Allocs
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
* @jit_alloc_gpu_alloc_addr: The JIT allocated GPU virtual address
* @jit_alloc_mmu_flags: The MMU flags for the JIT allocation
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_ALLOC_END( \
kbdev, \
kcpu_queue, \
execute_error, \
jit_alloc_gpu_alloc_addr, \
jit_alloc_mmu_flags \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_item_kcpuqueue_execute_jit_alloc_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error, \
jit_alloc_gpu_alloc_addr, \
jit_alloc_mmu_flags \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_ALLOC_END( \
kbdev, \
kcpu_queue, \
execute_error, \
jit_alloc_gpu_alloc_addr, \
jit_alloc_mmu_flags \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_ALLOC_END - End array of KCPU Queue ends an array of JIT Allocs
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_ALLOC_END( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_end_kcpuqueue_execute_jit_alloc_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_ALLOC_END( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_FREE_START - KCPU Queue starts an array of JIT Frees
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_FREE_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_jit_free_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_FREE_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_FREE_END - Begin array of KCPU Queue ends an array of JIT Frees
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_FREE_END( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_begin_kcpuqueue_execute_jit_free_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_FREE_END( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_FREE_END - Array item of KCPU Queue ends an array of JIT Frees
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
* @jit_free_pages_used: The actual number of pages used by the JIT allocation
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_FREE_END( \
kbdev, \
kcpu_queue, \
execute_error, \
jit_free_pages_used \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_item_kcpuqueue_execute_jit_free_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error, \
jit_free_pages_used \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_FREE_END( \
kbdev, \
kcpu_queue, \
execute_error, \
jit_free_pages_used \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_FREE_END - End array of KCPU Queue ends an array of JIT Frees
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_FREE_END( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_array_end_kcpuqueue_execute_jit_free_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_FREE_END( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_ERROR_BARRIER - KCPU Queue executes an Error Barrier
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_ERROR_BARRIER( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_error_barrier( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_ERROR_BARRIER( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_GROUP_SUSPEND_START - KCPU Queue starts a group suspend
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_GROUP_SUSPEND_START( \
kbdev, \
kcpu_queue \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_group_suspend_start( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_GROUP_SUSPEND_START( \
kbdev, \
kcpu_queue \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_GROUP_SUSPEND_END - KCPU Queue ends a group suspend
*
* @kbdev: Kbase device
* @kcpu_queue: KCPU queue
* @execute_error: Non-zero error code if KCPU Queue item completed with error, else zero
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_GROUP_SUSPEND_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSF_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_kcpuqueue_execute_group_suspend_end( \
__TL_DISPATCH_STREAM(kbdev, obj), \
kcpu_queue, \
execute_error \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_KCPUQUEUE_EXECUTE_GROUP_SUSPEND_END( \
kbdev, \
kcpu_queue, \
execute_error \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_RELOADING - CSF FW is being reloaded
*
* @kbdev: Kbase device
* @csffw_cycle: Cycle number of a CSFFW event
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_RELOADING( \
kbdev, \
csffw_cycle \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSFFW_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_csffw_fw_reloading( \
__TL_DISPATCH_STREAM(kbdev, obj), \
csffw_cycle \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_RELOADING( \
kbdev, \
csffw_cycle \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_ENABLING - CSF FW is being enabled
*
* @kbdev: Kbase device
* @csffw_cycle: Cycle number of a CSFFW event
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_ENABLING( \
kbdev, \
csffw_cycle \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSFFW_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_csffw_fw_enabling( \
__TL_DISPATCH_STREAM(kbdev, obj), \
csffw_cycle \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_ENABLING( \
kbdev, \
csffw_cycle \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_SLEEP - CSF FW sleep is requested
*
* @kbdev: Kbase device
* @csffw_cycle: Cycle number of a CSFFW event
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_SLEEP( \
kbdev, \
csffw_cycle \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSFFW_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_csffw_fw_request_sleep( \
__TL_DISPATCH_STREAM(kbdev, obj), \
csffw_cycle \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_SLEEP( \
kbdev, \
csffw_cycle \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_WAKEUP - CSF FW wake up is requested
*
* @kbdev: Kbase device
* @csffw_cycle: Cycle number of a CSFFW event
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_WAKEUP( \
kbdev, \
csffw_cycle \
) \
do { \
int enabled = atomic_read(&kbdev->timeline_flags); \
if (enabled & BASE_TLSTREAM_ENABLE_CSFFW_TRACEPOINTS) \
__kbase_tlstream_tl_kbase_csffw_fw_request_wakeup( \
__TL_DISPATCH_STREAM(kbdev, obj), \
csffw_cycle \
); \
} while (0)
#else
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_WAKEUP( \
kbdev, \
csffw_cycle \
) \
do { } while (0)
#endif /* MALI_USE_CSF */
/**
* KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_HALT - CSF FW halt is requested
*
* @kbdev: Kbase device
* @csffw_cycle: Cycle number of a CSFFW event
*/
#if MALI_USE_CSF
#define KBASE_TLSTREAM_TL_KBASE_CSFFW_FW_REQUEST_HALT( \
kbdev, \
csffw_cycle \