blob: 77fb8183a3d10f7c092cdc2575e2bdd67f431c75 [file] [log] [blame]
/*
*
* (C) COPYRIGHT 2011-2015,2018 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 licence.
*
* 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.
*
* SPDX-License-Identifier: GPL-2.0
*
*/
/* ***** IMPORTANT: THIS IS NOT A NORMAL HEADER FILE *****
* ***** DO NOT INCLUDE DIRECTLY *****
* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
/*
* The purpose of this header file is just to contain a list of trace code idenitifers
*
* Each identifier is wrapped in a macro, so that its string form and enum form can be created
*
* Each macro is separated with a comma, to allow insertion into an array initializer or enum definition block.
*
* This allows automatic creation of an enum and a corresponding array of strings
*
* Before #including, the includer MUST #define KBASE_TRACE_CODE_MAKE_CODE.
* After #including, the includer MUST #under KBASE_TRACE_CODE_MAKE_CODE.
*
* e.g.:
* #define KBASE_TRACE_CODE( X ) KBASE_TRACE_CODE_ ## X
* typedef enum
* {
* #define KBASE_TRACE_CODE_MAKE_CODE( X ) KBASE_TRACE_CODE( X )
* #include "mali_kbase_trace_defs.h"
* #undef KBASE_TRACE_CODE_MAKE_CODE
* } kbase_trace_code;
*
* IMPORTANT: THIS FILE MUST NOT BE USED FOR ANY OTHER PURPOSE OTHER THAN THE ABOVE
*
*
* The use of the macro here is:
* - KBASE_TRACE_CODE_MAKE_CODE( X )
*
* Which produces:
* - For an enum, KBASE_TRACE_CODE_X
* - For a string, "X"
*
*
* For example:
* - KBASE_TRACE_CODE_MAKE_CODE( JM_JOB_COMPLETE ) expands to:
* - KBASE_TRACE_CODE_JM_JOB_COMPLETE for the enum
* - "JM_JOB_COMPLETE" for the string
* - To use it to trace an event, do:
* - KBASE_TRACE_ADD( kbdev, JM_JOB_COMPLETE, subcode, kctx, uatom, val );
*/
#if 0 /* Dummy section to avoid breaking formatting */
int dummy_array[] = {
#endif
/*
* Core events
*/
/* no info_val, no gpu_addr, no atom */
KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY),
/* no info_val, no gpu_addr, no atom */
KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM),
/* info_val == GPU_IRQ_STATUS register */
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ),
/* info_val == bits cleared */
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_CLEAR),
/* info_val == GPU_IRQ_STATUS register */
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_DONE),
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_SOFT_RESET),
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_HARD_RESET),
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_CLEAR),
/* GPU addr==dump address */
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_SAMPLE),
KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_CLEAN_INV_CACHES),
/*
* Job Slot management events
*/
/* info_val==irq rawstat at start */
KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ),
/* info_val==jobs processed */
KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ_END),
/* In the following:
*
* - ctx is set if a corresponding job found (NULL otherwise, e.g. some soft-stop cases)
* - uatom==kernel-side mapped uatom address (for correlation with user-side)
*/
/* info_val==exit code; gpu_addr==chain gpuaddr */
KBASE_TRACE_CODE_MAKE_CODE(JM_JOB_DONE),
/* gpu_addr==JS_HEAD_NEXT written, info_val==lower 32 bits of affinity */
KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT),
/* gpu_addr is as follows:
* - If JS_STATUS active after soft-stop, val==gpu addr written to
* JS_HEAD on submit
* - otherwise gpu_addr==0 */
KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP),
KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0),
KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_1),
/* gpu_addr==JS_HEAD read */
KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP),
/* gpu_addr==JS_HEAD read */
KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_0),
/* gpu_addr==JS_HEAD read */
KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_1),
/* gpu_addr==JS_TAIL read */
KBASE_TRACE_CODE_MAKE_CODE(JM_UPDATE_HEAD),
/* gpu_addr is as follows:
* - If JS_STATUS active before soft-stop, val==JS_HEAD
* - otherwise gpu_addr==0
*/
/* gpu_addr==JS_HEAD read */
KBASE_TRACE_CODE_MAKE_CODE(JM_CHECK_HEAD),
KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS),
KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS_DONE),
/* info_val == is_scheduled */
KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_NON_SCHEDULED),
/* info_val == is_scheduled */
KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED),
KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_DONE),
/* info_val == nr jobs submitted */
KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_SOFT_OR_HARD_STOP),
/* gpu_addr==JS_HEAD_NEXT last written */
KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_EVICT),
KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT_AFTER_RESET),
KBASE_TRACE_CODE_MAKE_CODE(JM_BEGIN_RESET_WORKER),
KBASE_TRACE_CODE_MAKE_CODE(JM_END_RESET_WORKER),
/*
* Job dispatch events
*/
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JD_DONE),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER_END),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_TRY_RUN_NEXT_JOB),
/* gpu_addr==0, info_val==0, uatom==0 */
KBASE_TRACE_CODE_MAKE_CODE(JD_ZAP_CONTEXT),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL_WORKER),
/*
* Scheduler Core events
*/
KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX_NOLOCK),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JS_ADD_JOB),
/* gpu_addr==last value written/would be written to JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JS_REMOVE_JOB),
KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_RELEASE_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_TRY_SCHEDULE_HEAD_CTX),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_TRY_RUN_NEXT_JOB),
/* gpu_addr==value to write into JS_HEAD */
KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_RETRY_NEEDED),
KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_SUBMIT_TO_BLOCKED),
/* info_val == lower 32 bits of affinity */
KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_CURRENT),
/* info_val == lower 32 bits of affinity */
KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_CORES_FAILED),
/* info_val == lower 32 bits of affinity */
KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_INUSE_FAILED),
/* info_val == lower 32 bits of rechecked affinity */
KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED),
/* info_val == lower 32 bits of rechecked affinity */
KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED),
/* info_val == lower 32 bits of affinity */
KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_AFFINITY_WOULD_VIOLATE),
/* info_val == the ctx attribute now on ctx */
KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_CTX),
/* info_val == the ctx attribute now on runpool */
KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_RUNPOOL),
/* info_val == the ctx attribute now off ctx */
KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_CTX),
/* info_val == the ctx attribute now off runpool */
KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_RUNPOOL),
/*
* Scheduler Policy events
*/
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_INIT_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TERM_CTX),
/* info_val == whether it was evicted */
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TRY_EVICT_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_FOREACH_CTX_JOBS),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_HEAD_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_ADD_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_REMOVE_CTX),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB_IRQ),
/* gpu_addr==JS_HEAD to write if the job were run */
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_JOB),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_START),
KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_END),
/*
* Power Management Events
*/
KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP),
KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP),
KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON),
KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_TILER),
KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_L2),
KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF),
KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_TILER),
KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_L2),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED_TILER),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_TILER),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE),
KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE_TILER),
/* PM_DESIRED_REACHED: gpu_addr == pm.gpu_in_desired_state */
KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED),
KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED_TILER),
KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_SHADER_NEEDED),
KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_TILER_NEEDED),
KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_SHADER_NEEDED),
KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_TILER_NEEDED),
KBASE_TRACE_CODE_MAKE_CODE(PM_WAKE_WAITERS),
KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE),
KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE),
KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_ON),
KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_OFF),
/* info_val == policy number, or -1 for "Already changing" */
KBASE_TRACE_CODE_MAKE_CODE(PM_SET_POLICY),
KBASE_TRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY),
/* info_val == policy number */
KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT),
/* info_val == policy number */
KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_TERM),
/* Unused code just to make it easier to not have a comma at the end.
* All other codes MUST come before this */
KBASE_TRACE_CODE_MAKE_CODE(DUMMY)
#if 0 /* Dummy section to avoid breaking formatting */
};
#endif
/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */