summaryrefslogtreecommitdiff
path: root/mali_kbase/debug
diff options
context:
space:
mode:
authorVamsidhar reddy Gaddam <gvamsi@google.com>2023-12-20 12:42:26 +0000
committerVamsidhar reddy Gaddam <gvamsi@google.com>2024-01-05 09:19:17 +0000
commit11473542814286e59a89a70c969fb50a25ba921f (patch)
treebd4aa60e7d3dc895d82a36fcea0026569e3a04aa /mali_kbase/debug
parent8768eedce66a4373c96f35c8dfb73d4668703180 (diff)
parent049a542207ed694271316782397b78b2e202086a (diff)
downloadgpu-11473542814286e59a89a70c969fb50a25ba921f.tar.gz
Merge branch 'upstream' into HEAD
Update KMD to R47P0 Bug: 315267052 Test: Outlined in go/pixel-gpu-kmd-r47p0 Change-Id: I89454c4c862033fe330b260a9bc6cc777a3ca231 Signed-off-by: Vamsidhar reddy Gaddam <gvamsi@google.com>
Diffstat (limited to 'mali_kbase/debug')
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_coresight_csf.c27
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_csf.h24
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_jm.h19
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.c79
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.h129
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_csf.h11
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_jm.h11
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.c64
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.h254
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_csf.h159
-rw-r--r--mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_jm.h105
-rw-r--r--mali_kbase/debug/mali_kbase_debug_ktrace.c96
-rw-r--r--mali_kbase/debug/mali_kbase_debug_ktrace.h89
-rw-r--r--mali_kbase/debug/mali_kbase_debug_ktrace_codes.h34
-rw-r--r--mali_kbase/debug/mali_kbase_debug_ktrace_defs.h33
-rw-r--r--mali_kbase/debug/mali_kbase_debug_ktrace_internal.h14
-rw-r--r--mali_kbase/debug/mali_kbase_debug_linux_ktrace.h36
17 files changed, 541 insertions, 643 deletions
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_coresight_csf.c b/mali_kbase/debug/backend/mali_kbase_debug_coresight_csf.c
index ff5f947..fe8201f 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_coresight_csf.c
+++ b/mali_kbase/debug/backend/mali_kbase_debug_coresight_csf.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
/*
*
- * (C) COPYRIGHT 2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2022-2023 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
@@ -219,10 +219,16 @@ static int execute_op(struct kbase_device *kbdev, struct kbase_debug_coresight_c
static int coresight_config_enable(struct kbase_device *kbdev,
struct kbase_debug_coresight_csf_config *config)
{
+ bool glb_init_request_pending;
+ unsigned long flags;
int ret = 0;
int i;
- if (!config)
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
+ glb_init_request_pending = kbdev->csf.glb_init_request_pending;
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
+
+ if (!config || glb_init_request_pending)
return -EINVAL;
if (config->state == KBASE_DEBUG_CORESIGHT_CSF_ENABLED)
@@ -249,10 +255,16 @@ static int coresight_config_enable(struct kbase_device *kbdev,
static int coresight_config_disable(struct kbase_device *kbdev,
struct kbase_debug_coresight_csf_config *config)
{
+ bool glb_init_request_pending;
+ unsigned long flags;
int ret = 0;
int i;
- if (!config)
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
+ glb_init_request_pending = kbdev->csf.glb_init_request_pending;
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
+
+ if (!config || glb_init_request_pending)
return -EINVAL;
if (config->state == KBASE_DEBUG_CORESIGHT_CSF_DISABLED)
@@ -766,7 +778,8 @@ KBASE_EXPORT_TEST_API(kbase_debug_coresight_csf_state_check);
bool kbase_debug_coresight_csf_state_wait(struct kbase_device *kbdev,
enum kbase_debug_coresight_csf_state state)
{
- const long wait_timeout = kbase_csf_timeout_in_jiffies(kbdev->csf.fw_timeout_ms);
+ const long wait_timeout =
+ kbase_csf_timeout_in_jiffies(kbase_get_timeout_ms(kbdev, CSF_FIRMWARE_TIMEOUT));
struct kbase_debug_coresight_csf_config *config_entry, *next_config_entry;
unsigned long flags;
bool success = true;
@@ -776,7 +789,7 @@ bool kbase_debug_coresight_csf_state_wait(struct kbase_device *kbdev,
spin_lock_irqsave(&kbdev->csf.coresight.lock, flags);
list_for_each_entry_safe(config_entry, next_config_entry, &kbdev->csf.coresight.configs,
- link) {
+ link) {
const enum kbase_debug_coresight_csf_state prev_state = config_entry->state;
long remaining;
@@ -836,13 +849,13 @@ void kbase_debug_coresight_csf_term(struct kbase_device *kbdev)
spin_lock_irqsave(&kbdev->csf.coresight.lock, flags);
list_for_each_entry_safe(config_entry, next_config_entry, &kbdev->csf.coresight.configs,
- link) {
+ link) {
list_del_init(&config_entry->link);
kfree(config_entry);
}
list_for_each_entry_safe(client_entry, next_client_entry, &kbdev->csf.coresight.clients,
- link) {
+ link) {
list_del_init(&client_entry->link);
kfree(client_entry);
}
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_csf.h b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_csf.h
index 87e13e5..b8999ea 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_csf.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_csf.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -39,11 +39,11 @@
#if 0 /* Dummy section to avoid breaking formatting */
int dummy_array[] = {
#endif
- /*
+/*
* Generic CSF events
*/
- /* info_val = 0 */
- KBASE_KTRACE_CODE_MAKE_CODE(SCHEDULER_EVICT_CTX_SLOTS_START),
+/* info_val = 0 */
+KBASE_KTRACE_CODE_MAKE_CODE(SCHEDULER_EVICT_CTX_SLOTS_START),
/* info_val == number of CSGs supported */
KBASE_KTRACE_CODE_MAKE_CODE(SCHEDULER_EVICT_CTX_SLOTS_END),
/* info_val[0:7] == fw version_minor
@@ -209,13 +209,11 @@ int dummy_array[] = {
KBASE_KTRACE_CODE_MAKE_CODE(PROTM_EVENT_WORKER_END),
/* info_val = scheduler state */
- KBASE_KTRACE_CODE_MAKE_CODE(SCHED_BUSY),
- KBASE_KTRACE_CODE_MAKE_CODE(SCHED_INACTIVE),
- KBASE_KTRACE_CODE_MAKE_CODE(SCHED_SUSPENDED),
- KBASE_KTRACE_CODE_MAKE_CODE(SCHED_SLEEPING),
+ KBASE_KTRACE_CODE_MAKE_CODE(SCHED_BUSY), KBASE_KTRACE_CODE_MAKE_CODE(SCHED_INACTIVE),
+ KBASE_KTRACE_CODE_MAKE_CODE(SCHED_SUSPENDED), KBASE_KTRACE_CODE_MAKE_CODE(SCHED_SLEEPING),
- /* info_val = mcu state */
-#define KBASEP_MCU_STATE(n) KBASE_KTRACE_CODE_MAKE_CODE(PM_MCU_ ## n),
+/* info_val = mcu state */
+#define KBASEP_MCU_STATE(n) KBASE_KTRACE_CODE_MAKE_CODE(PM_MCU_##n),
#include "backend/gpu/mali_kbase_pm_mcu_states.h"
#undef KBASEP_MCU_STATE
@@ -237,8 +235,7 @@ int dummy_array[] = {
/* info_val == queue->enabled */
KBASE_KTRACE_CODE_MAKE_CODE(CSI_START),
/* info_val == queue->enabled before stop */
- KBASE_KTRACE_CODE_MAKE_CODE(CSI_STOP),
- KBASE_KTRACE_CODE_MAKE_CODE(CSI_STOP_REQ),
+ KBASE_KTRACE_CODE_MAKE_CODE(CSI_STOP), KBASE_KTRACE_CODE_MAKE_CODE(CSI_STOP_REQ),
/* info_val == CS_REQ ^ CS_ACK that were not processed due to the group
* being suspended
*/
@@ -252,8 +249,7 @@ int dummy_array[] = {
/* info_val == CS_ACK_PROTM_PEND ^ CS_REQ_PROTM_PEND */
KBASE_KTRACE_CODE_MAKE_CODE(CSI_PROTM_ACK),
/* info_val == group->run_State (for group the queue is bound to) */
- KBASE_KTRACE_CODE_MAKE_CODE(QUEUE_START),
- KBASE_KTRACE_CODE_MAKE_CODE(QUEUE_STOP),
+ KBASE_KTRACE_CODE_MAKE_CODE(QUEUE_START), KBASE_KTRACE_CODE_MAKE_CODE(QUEUE_STOP),
/* info_val == contents of CS_STATUS_WAIT_SYNC_POINTER */
KBASE_KTRACE_CODE_MAKE_CODE(QUEUE_SYNC_UPDATE_EVAL_START),
/* info_val == bool for result of the evaluation */
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_jm.h b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_jm.h
index 6ba98b7..14dcc26 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_jm.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_codes_jm.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2011-2015, 2018-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2011-2023 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
@@ -40,11 +40,11 @@
int dummy_array[] = {
#endif
- /*
+/*
* Job Slot management events
*/
- /* info_val==irq rawstat at start */
- KBASE_KTRACE_CODE_MAKE_CODE(JM_IRQ),
+/* info_val==irq rawstat at start */
+KBASE_KTRACE_CODE_MAKE_CODE(JM_IRQ),
/* info_val==jobs processed */
KBASE_KTRACE_CODE_MAKE_CODE(JM_IRQ_END),
/* In the following:
@@ -73,8 +73,7 @@ int dummy_array[] = {
* JS_HEAD on submit
* - otherwise gpu_addr==0
*/
- KBASE_KTRACE_CODE_MAKE_CODE(JM_SOFTSTOP),
- KBASE_KTRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0),
+ KBASE_KTRACE_CODE_MAKE_CODE(JM_SOFTSTOP), KBASE_KTRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0),
KBASE_KTRACE_CODE_MAKE_CODE(JM_SOFTSTOP_1),
/* gpu_addr==JS_HEAD read */
KBASE_KTRACE_CODE_MAKE_CODE(JM_HARDSTOP),
@@ -89,14 +88,12 @@ int dummy_array[] = {
* - otherwise gpu_addr==0
*/
/* gpu_addr==JS_HEAD read */
- KBASE_KTRACE_CODE_MAKE_CODE(JM_CHECK_HEAD),
- KBASE_KTRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS),
+ KBASE_KTRACE_CODE_MAKE_CODE(JM_CHECK_HEAD), KBASE_KTRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS),
KBASE_KTRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS_DONE),
/* info_val == is_scheduled */
KBASE_KTRACE_CODE_MAKE_CODE(JM_ZAP_NON_SCHEDULED),
/* info_val == is_scheduled */
- KBASE_KTRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED),
- KBASE_KTRACE_CODE_MAKE_CODE(JM_ZAP_DONE),
+ KBASE_KTRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED), KBASE_KTRACE_CODE_MAKE_CODE(JM_ZAP_DONE),
/* info_val == nr jobs submitted */
KBASE_KTRACE_CODE_MAKE_CODE(JM_SLOT_SOFT_OR_HARD_STOP),
/* gpu_addr==JS_HEAD_NEXT last written */
@@ -203,4 +200,4 @@ int dummy_array[] = {
};
#endif
-/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
+ /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.c b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.c
index cff6f89..ec5ca10 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.c
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -27,14 +27,15 @@
void kbasep_ktrace_backend_format_header(char *buffer, int sz, s32 *written)
{
- *written += MAX(snprintf(buffer + *written, MAX(sz - *written, 0),
- "group,slot,prio,csi,kcpu"), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0),
+ "group,slot,prio,csi,kcpu"),
+ 0);
}
-void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg,
- char *buffer, int sz, s32 *written)
+void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg, char *buffer, int sz,
+ s32 *written)
{
- const union kbase_ktrace_backend * const be_msg = &trace_msg->backend;
+ const union kbase_ktrace_backend *const be_msg = &trace_msg->backend;
/* At present, no need to check for KBASE_KTRACE_FLAG_BACKEND, as the
* other backend-specific flags currently imply this anyway
*/
@@ -43,45 +44,39 @@ void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg,
if (be_msg->gpu.flags & KBASE_KTRACE_FLAG_CSF_GROUP) {
const s8 slot = be_msg->gpu.csg_nr;
/* group,slot, */
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "%u,%d,", be_msg->gpu.group_handle, slot), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), "%u,%d,",
+ be_msg->gpu.group_handle, slot),
+ 0);
/* prio */
if (slot >= 0)
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "%u", be_msg->gpu.slot_prio), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0),
+ "%u", be_msg->gpu.slot_prio),
+ 0);
/* , */
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- ","), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), ","), 0);
} else {
/* No group,slot,prio fields, but ensure ending with "," */
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- ",,,"), 0);
+ *written +=
+ MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), ",,,"), 0);
}
/* queue parts: csi */
if (trace_msg->backend.gpu.flags & KBASE_KTRACE_FLAG_CSF_QUEUE)
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "%d", be_msg->gpu.csi_index), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), "%d",
+ be_msg->gpu.csi_index),
+ 0);
/* , */
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- ","), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), ","), 0);
if (be_msg->gpu.flags & KBASE_KTRACE_FLAG_CSF_KCPU) {
/* kcpu data */
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "kcpu %d (0x%llx)",
- be_msg->kcpu.id,
- be_msg->kcpu.extra_info_val), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0),
+ "kcpu %d (0x%llx)", be_msg->kcpu.id,
+ be_msg->kcpu.extra_info_val),
+ 0);
}
/* Don't end with a trailing "," - this is a 'standalone' formatted
@@ -89,10 +84,9 @@ void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg,
*/
}
-void kbasep_ktrace_add_csf(struct kbase_device *kbdev,
- enum kbase_ktrace_code code, struct kbase_queue_group *group,
- struct kbase_queue *queue, kbase_ktrace_flag_t flags,
- u64 info_val)
+void kbasep_ktrace_add_csf(struct kbase_device *kbdev, enum kbase_ktrace_code code,
+ struct kbase_queue_group *group, struct kbase_queue *queue,
+ kbase_ktrace_flag_t flags, u64 info_val)
{
unsigned long irqflags;
struct kbase_ktrace_msg *trace_msg;
@@ -113,8 +107,7 @@ void kbasep_ktrace_add_csf(struct kbase_device *kbdev,
kctx = queue->kctx;
/* Fill the common part of the message (including backend.gpu.flags) */
- kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, flags,
- info_val);
+ kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, flags, info_val);
/* Indicate to the common code that backend-specific parts will be
* valid
@@ -140,11 +133,9 @@ void kbasep_ktrace_add_csf(struct kbase_device *kbdev,
trace_msg->backend.gpu.csg_nr = slot;
if (slot >= 0) {
- struct kbase_csf_csg_slot *csg_slot =
- &kbdev->csf.scheduler.csg_slots[slot];
+ struct kbase_csf_csg_slot *csg_slot = &kbdev->csf.scheduler.csg_slots[slot];
- trace_msg->backend.gpu.slot_prio =
- csg_slot->priority;
+ trace_msg->backend.gpu.slot_prio = csg_slot->priority;
}
/* slot >=0 indicates whether slot_prio valid, so no need to
* initialize in the case where it's invalid
@@ -159,10 +150,9 @@ void kbasep_ktrace_add_csf(struct kbase_device *kbdev,
spin_unlock_irqrestore(&kbdev->ktrace.lock, irqflags);
}
-void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev,
- enum kbase_ktrace_code code,
- struct kbase_kcpu_command_queue *queue,
- u64 info_val1, u64 info_val2)
+void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev, enum kbase_ktrace_code code,
+ struct kbase_kcpu_command_queue *queue, u64 info_val1,
+ u64 info_val2)
{
unsigned long irqflags;
struct kbase_ktrace_msg *trace_msg;
@@ -177,8 +167,7 @@ void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev,
trace_msg = kbasep_ktrace_reserve(&kbdev->ktrace);
/* Fill the common part of the message */
- kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, 0,
- info_val1);
+ kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, 0, info_val1);
/* Indicate to the common code that backend-specific parts will be
* valid
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.h b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.h
index 0593c30..e30aedb 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_csf.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -38,10 +38,9 @@
* PRIVATE: do not use directly. Use KBASE_KTRACE_ADD_CSF() instead.
*/
-void kbasep_ktrace_add_csf(struct kbase_device *kbdev,
- enum kbase_ktrace_code code, struct kbase_queue_group *group,
- struct kbase_queue *queue, kbase_ktrace_flag_t flags,
- u64 info_val);
+void kbasep_ktrace_add_csf(struct kbase_device *kbdev, enum kbase_ktrace_code code,
+ struct kbase_queue_group *group, struct kbase_queue *queue,
+ kbase_ktrace_flag_t flags, u64 info_val);
/**
* kbasep_ktrace_add_csf_kcpu - internal function to add trace about the CSF
@@ -58,39 +57,36 @@ void kbasep_ktrace_add_csf(struct kbase_device *kbdev,
*
* PRIVATE: do not use directly. Use KBASE_KTRACE_ADD_CSF_KCPU() instead.
*/
-void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev,
- enum kbase_ktrace_code code,
- struct kbase_kcpu_command_queue *queue,
- u64 info_val1, u64 info_val2);
+void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev, enum kbase_ktrace_code code,
+ struct kbase_kcpu_command_queue *queue, u64 info_val1,
+ u64 info_val2);
#define KBASE_KTRACE_RBUF_ADD_CSF(kbdev, code, group, queue, flags, info_val) \
- kbasep_ktrace_add_csf(kbdev, KBASE_KTRACE_CODE(code), group, queue, \
- flags, info_val)
+ kbasep_ktrace_add_csf(kbdev, KBASE_KTRACE_CODE(code), group, queue, flags, info_val)
-#define KBASE_KTRACE_RBUF_ADD_CSF_KCPU(kbdev, code, queue, info_val1, \
- info_val2) kbasep_ktrace_add_csf_kcpu(kbdev, KBASE_KTRACE_CODE(code), \
- queue, info_val1, info_val2)
+#define KBASE_KTRACE_RBUF_ADD_CSF_KCPU(kbdev, code, queue, info_val1, info_val2) \
+ kbasep_ktrace_add_csf_kcpu(kbdev, KBASE_KTRACE_CODE(code), queue, info_val1, info_val2)
#else /* KBASE_KTRACE_TARGET_RBUF */
#define KBASE_KTRACE_RBUF_ADD_CSF(kbdev, code, group, queue, flags, info_val) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(group);\
- CSTD_UNUSED(queue);\
- CSTD_UNUSED(flags);\
- CSTD_UNUSED(info_val);\
- CSTD_NOP(0);\
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(group); \
+ CSTD_UNUSED(queue); \
+ CSTD_UNUSED(flags); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
#define KBASE_KTRACE_RBUF_ADD_CSF_KCPU(kbdev, code, queue, info_val1, info_val2) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(queue);\
- CSTD_UNUSED(info_val1);\
- CSTD_UNUSED(info_val2);\
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(queue); \
+ CSTD_UNUSED(info_val1); \
+ CSTD_UNUSED(info_val2); \
} while (0)
#endif /* KBASE_KTRACE_TARGET_RBUF */
@@ -112,21 +108,21 @@ void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev,
#else /* KBASE_KTRACE_TARGET_FTRACE */
#define KBASE_KTRACE_FTRACE_ADD_CSF(kbdev, code, group, queue, info_val) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(group);\
- CSTD_UNUSED(queue);\
- CSTD_UNUSED(info_val);\
- CSTD_NOP(0);\
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(group); \
+ CSTD_UNUSED(queue); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
#define KBASE_KTRACE_FTRACE_ADD_KCPU(code, queue, info_val1, info_val2) \
- do {\
- CSTD_NOP(code);\
- CSTD_UNUSED(queue);\
- CSTD_UNUSED(info_val1);\
- CSTD_UNUSED(info_val2);\
+ do { \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(queue); \
+ CSTD_UNUSED(info_val1); \
+ CSTD_UNUSED(info_val2); \
} while (0)
#endif /* KBASE_KTRACE_TARGET_FTRACE */
@@ -149,15 +145,13 @@ void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_CSF_GRP(kbdev, code, group, info_val) \
- do { \
- /* capture values that could come from non-pure fn calls */ \
- struct kbase_queue_group *__group = group; \
- u64 __info_val = info_val; \
- KBASE_KTRACE_RBUF_ADD_CSF(kbdev, code, __group, NULL, 0u, \
- __info_val); \
- KBASE_KTRACE_FTRACE_ADD_CSF(kbdev, code, __group, NULL, \
- __info_val); \
+#define KBASE_KTRACE_ADD_CSF_GRP(kbdev, code, group, info_val) \
+ do { \
+ /* capture values that could come from non-pure fn calls */ \
+ struct kbase_queue_group *__group = group; \
+ u64 __info_val = info_val; \
+ KBASE_KTRACE_RBUF_ADD_CSF(kbdev, code, __group, NULL, 0u, __info_val); \
+ KBASE_KTRACE_FTRACE_ADD_CSF(kbdev, code, __group, NULL, __info_val); \
} while (0)
/**
@@ -175,29 +169,24 @@ void kbasep_ktrace_add_csf_kcpu(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_CSF_GRP_Q(kbdev, code, group, queue, info_val) \
- do { \
- /* capture values that could come from non-pure fn calls */ \
- struct kbase_queue_group *__group = group; \
- struct kbase_queue *__queue = queue; \
- u64 __info_val = info_val; \
- KBASE_KTRACE_RBUF_ADD_CSF(kbdev, code, __group, __queue, 0u, \
- __info_val); \
- KBASE_KTRACE_FTRACE_ADD_CSF(kbdev, code, __group, \
- __queue, __info_val); \
+#define KBASE_KTRACE_ADD_CSF_GRP_Q(kbdev, code, group, queue, info_val) \
+ do { \
+ /* capture values that could come from non-pure fn calls */ \
+ struct kbase_queue_group *__group = group; \
+ struct kbase_queue *__queue = queue; \
+ u64 __info_val = info_val; \
+ KBASE_KTRACE_RBUF_ADD_CSF(kbdev, code, __group, __queue, 0u, __info_val); \
+ KBASE_KTRACE_FTRACE_ADD_CSF(kbdev, code, __group, __queue, __info_val); \
} while (0)
-
-#define KBASE_KTRACE_ADD_CSF_KCPU(kbdev, code, queue, info_val1, info_val2) \
- do { \
- /* capture values that could come from non-pure fn calls */ \
- struct kbase_kcpu_command_queue *__queue = queue; \
- u64 __info_val1 = info_val1; \
- u64 __info_val2 = info_val2; \
- KBASE_KTRACE_RBUF_ADD_CSF_KCPU(kbdev, code, __queue, \
- __info_val1, __info_val2); \
- KBASE_KTRACE_FTRACE_ADD_KCPU(code, __queue, \
- __info_val1, __info_val2); \
+#define KBASE_KTRACE_ADD_CSF_KCPU(kbdev, code, queue, info_val1, info_val2) \
+ do { \
+ /* capture values that could come from non-pure fn calls */ \
+ struct kbase_kcpu_command_queue *__queue = queue; \
+ u64 __info_val1 = info_val1; \
+ u64 __info_val2 = info_val2; \
+ KBASE_KTRACE_RBUF_ADD_CSF_KCPU(kbdev, code, __queue, __info_val1, __info_val2); \
+ KBASE_KTRACE_FTRACE_ADD_KCPU(code, __queue, __info_val1, __info_val2); \
} while (0)
#endif /* _KBASE_DEBUG_KTRACE_CSF_H_ */
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_csf.h b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_csf.h
index 1896e10..710f120 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_csf.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_csf.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -53,18 +53,17 @@
#define KBASE_KTRACE_VERSION_MINOR 3
/* indicates if the trace message has valid queue-group related info. */
-#define KBASE_KTRACE_FLAG_CSF_GROUP (((kbase_ktrace_flag_t)1) << 0)
+#define KBASE_KTRACE_FLAG_CSF_GROUP (((kbase_ktrace_flag_t)1) << 0)
/* indicates if the trace message has valid queue related info. */
-#define KBASE_KTRACE_FLAG_CSF_QUEUE (((kbase_ktrace_flag_t)1) << 1)
+#define KBASE_KTRACE_FLAG_CSF_QUEUE (((kbase_ktrace_flag_t)1) << 1)
/* indicates if the trace message has valid KCPU-queue related info. */
-#define KBASE_KTRACE_FLAG_CSF_KCPU (((kbase_ktrace_flag_t)1) << 2)
+#define KBASE_KTRACE_FLAG_CSF_KCPU (((kbase_ktrace_flag_t)1) << 2)
/* Collect all the flags together for debug checking */
#define KBASE_KTRACE_FLAG_BACKEND_ALL \
- (KBASE_KTRACE_FLAG_CSF_GROUP | KBASE_KTRACE_FLAG_CSF_QUEUE | \
- KBASE_KTRACE_FLAG_CSF_KCPU)
+ (KBASE_KTRACE_FLAG_CSF_GROUP | KBASE_KTRACE_FLAG_CSF_QUEUE | KBASE_KTRACE_FLAG_CSF_KCPU)
/**
* union kbase_ktrace_backend - backend specific part of a trace message
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_jm.h b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_jm.h
index efa8ab0..9978e49 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_jm.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_defs_jm.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -62,15 +62,14 @@
/* indicates if the trace message has a valid refcount member */
#define KBASE_KTRACE_FLAG_JM_REFCOUNT (((kbase_ktrace_flag_t)1) << 0)
/* indicates if the trace message has a valid jobslot member */
-#define KBASE_KTRACE_FLAG_JM_JOBSLOT (((kbase_ktrace_flag_t)1) << 1)
+#define KBASE_KTRACE_FLAG_JM_JOBSLOT (((kbase_ktrace_flag_t)1) << 1)
/* indicates if the trace message has valid atom related info. */
-#define KBASE_KTRACE_FLAG_JM_ATOM (((kbase_ktrace_flag_t)1) << 2)
+#define KBASE_KTRACE_FLAG_JM_ATOM (((kbase_ktrace_flag_t)1) << 2)
#if KBASE_KTRACE_TARGET_RBUF
/* Collect all the flags together for debug checking */
#define KBASE_KTRACE_FLAG_BACKEND_ALL \
- (KBASE_KTRACE_FLAG_JM_REFCOUNT | KBASE_KTRACE_FLAG_JM_JOBSLOT \
- | KBASE_KTRACE_FLAG_JM_ATOM)
+ (KBASE_KTRACE_FLAG_JM_REFCOUNT | KBASE_KTRACE_FLAG_JM_JOBSLOT | KBASE_KTRACE_FLAG_JM_ATOM)
/**
* union kbase_ktrace_backend - backend specific part of a trace message
@@ -99,7 +98,7 @@ union kbase_ktrace_backend {
* KBASE_KTRACE_FLAG_JM_ATOM
*/
u64 gpu_addr;
- int atom_number; /* Only valid for KBASE_KTRACE_FLAG_JM_ATOM */
+ unsigned int atom_number; /* Only valid for KBASE_KTRACE_FLAG_JM_ATOM */
/* Pack smaller members together */
kbase_ktrace_code_t code;
kbase_ktrace_flag_t flags;
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.c b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.c
index 6597a15..beac074 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.c
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -27,55 +27,51 @@
void kbasep_ktrace_backend_format_header(char *buffer, int sz, s32 *written)
{
- *written += MAX(snprintf(buffer + *written, MAX(sz - *written, 0),
- "katom,gpu_addr,jobslot,refcount"), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0),
+ "katom,gpu_addr,jobslot,refcount"),
+ 0);
}
-void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg,
- char *buffer, int sz, s32 *written)
+void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg, char *buffer, int sz,
+ s32 *written)
{
/* katom */
if (trace_msg->backend.gpu.flags & KBASE_KTRACE_FLAG_JM_ATOM)
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "atom %d (ud: 0x%llx 0x%llx)",
- trace_msg->backend.gpu.atom_number,
- trace_msg->backend.gpu.atom_udata[0],
- trace_msg->backend.gpu.atom_udata[1]), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0),
+ "atom %u (ud: 0x%llx 0x%llx)",
+ trace_msg->backend.gpu.atom_number,
+ trace_msg->backend.gpu.atom_udata[0],
+ trace_msg->backend.gpu.atom_udata[1]),
+ 0);
/* gpu_addr */
if (trace_msg->backend.gpu.flags & KBASE_KTRACE_FLAG_BACKEND)
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- ",%.8llx,", trace_msg->backend.gpu.gpu_addr),
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0),
+ ",%.8llx,", trace_msg->backend.gpu.gpu_addr),
0);
else
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- ",,"), 0);
+ *written +=
+ MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), ",,"), 0);
/* jobslot */
if (trace_msg->backend.gpu.flags & KBASE_KTRACE_FLAG_JM_JOBSLOT)
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "%d", trace_msg->backend.gpu.jobslot), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), "%d",
+ trace_msg->backend.gpu.jobslot),
+ 0);
- *written += MAX(snprintf(buffer + *written, MAX(sz - *written, 0),
- ","), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), ","), 0);
/* refcount */
if (trace_msg->backend.gpu.flags & KBASE_KTRACE_FLAG_JM_REFCOUNT)
- *written += MAX(snprintf(buffer + *written,
- MAX(sz - *written, 0),
- "%d", trace_msg->backend.gpu.refcount), 0);
+ *written += MAX(snprintf(buffer + *written, (size_t)MAX(sz - *written, 0), "%d",
+ trace_msg->backend.gpu.refcount),
+ 0);
}
-void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
- enum kbase_ktrace_code code,
- struct kbase_context *kctx,
- const struct kbase_jd_atom *katom, u64 gpu_addr,
- kbase_ktrace_flag_t flags, int refcount, int jobslot,
- u64 info_val)
+void kbasep_ktrace_add_jm(struct kbase_device *kbdev, enum kbase_ktrace_code code,
+ struct kbase_context *kctx, const struct kbase_jd_atom *katom,
+ u64 gpu_addr, kbase_ktrace_flag_t flags, int refcount,
+ unsigned int jobslot, u64 info_val)
{
unsigned long irqflags;
struct kbase_ktrace_msg *trace_msg;
@@ -89,8 +85,7 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
trace_msg = kbasep_ktrace_reserve(&kbdev->ktrace);
/* Fill the common part of the message (including backend.gpu.flags) */
- kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, flags,
- info_val);
+ kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, flags, info_val);
/* Indicate to the common code that backend-specific parts will be
* valid
@@ -101,8 +96,7 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
if (katom) {
trace_msg->backend.gpu.flags |= KBASE_KTRACE_FLAG_JM_ATOM;
- trace_msg->backend.gpu.atom_number =
- kbase_jd_atom_id(katom->kctx, katom);
+ trace_msg->backend.gpu.atom_number = kbase_jd_atom_id(katom->kctx, katom);
trace_msg->backend.gpu.atom_udata[0] = katom->udata.blob[0];
trace_msg->backend.gpu.atom_udata[1] = katom->udata.blob[1];
}
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.h b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.h
index ffae8d4..71c98b2 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_ktrace_jm.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -40,33 +40,31 @@
*
* PRIVATE: do not use directly. Use KBASE_KTRACE_ADD_JM() instead.
*/
-void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
- enum kbase_ktrace_code code,
- struct kbase_context *kctx,
- const struct kbase_jd_atom *katom, u64 gpu_addr,
- kbase_ktrace_flag_t flags, int refcount, int jobslot,
- u64 info_val);
+void kbasep_ktrace_add_jm(struct kbase_device *kbdev, enum kbase_ktrace_code code,
+ struct kbase_context *kctx, const struct kbase_jd_atom *katom,
+ u64 gpu_addr, kbase_ktrace_flag_t flags, int refcount,
+ unsigned int jobslot, u64 info_val);
-#define KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, gpu_addr, flags, \
- refcount, jobslot, info_val) \
- kbasep_ktrace_add_jm(kbdev, KBASE_KTRACE_CODE(code), kctx, katom, \
- gpu_addr, flags, refcount, jobslot, info_val)
+#define KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, gpu_addr, flags, refcount, jobslot, \
+ info_val) \
+ kbasep_ktrace_add_jm(kbdev, KBASE_KTRACE_CODE(code), kctx, katom, gpu_addr, flags, \
+ refcount, jobslot, info_val)
#else /* KBASE_KTRACE_TARGET_RBUF */
-#define KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, gpu_addr, flags, \
- refcount, jobslot, info_val) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(kctx);\
- CSTD_UNUSED(katom);\
- CSTD_UNUSED(gpu_addr);\
- CSTD_UNUSED(flags);\
- CSTD_UNUSED(refcount);\
- CSTD_UNUSED(jobslot);\
- CSTD_UNUSED(info_val);\
- CSTD_NOP(0);\
+#define KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, gpu_addr, flags, refcount, jobslot, \
+ info_val) \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(katom); \
+ CSTD_UNUSED(gpu_addr); \
+ CSTD_UNUSED(flags); \
+ CSTD_UNUSED(refcount); \
+ CSTD_UNUSED(jobslot); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
#endif /* KBASE_KTRACE_TARGET_RBUF */
@@ -77,85 +75,79 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
* included by the parent header file
*/
#if KBASE_KTRACE_TARGET_FTRACE
-#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, gpu_addr, \
- jobslot) \
+#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, gpu_addr, jobslot) \
trace_mali_##code(kctx, jobslot, 0)
-#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, \
- gpu_addr, jobslot, info_val) \
+#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, gpu_addr, jobslot, \
+ info_val) \
trace_mali_##code(kctx, jobslot, info_val)
-#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, \
- gpu_addr, refcount) \
+#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, gpu_addr, refcount) \
trace_mali_##code(kctx, refcount, 0)
-#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT_INFO(kbdev, code, kctx, katom, \
- gpu_addr, refcount, info_val) \
+#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT_INFO(kbdev, code, kctx, katom, gpu_addr, refcount, \
+ info_val) \
trace_mali_##code(kctx, refcount, info_val)
-#define KBASE_KTRACE_FTRACE_ADD_JM(kbdev, code, kctx, katom, gpu_addr, \
- info_val) \
+#define KBASE_KTRACE_FTRACE_ADD_JM(kbdev, code, kctx, katom, gpu_addr, info_val) \
trace_mali_##code(kctx, gpu_addr, info_val)
#else /* KBASE_KTRACE_TARGET_FTRACE */
-#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, gpu_addr, \
- jobslot) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(kctx);\
- CSTD_UNUSED(katom);\
- CSTD_UNUSED(gpu_addr);\
- CSTD_UNUSED(jobslot);\
- CSTD_NOP(0);\
+#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, gpu_addr, jobslot) \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(katom); \
+ CSTD_UNUSED(gpu_addr); \
+ CSTD_UNUSED(jobslot); \
+ CSTD_NOP(0); \
} while (0)
-#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, \
- gpu_addr, jobslot, info_val) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(kctx);\
- CSTD_UNUSED(katom);\
- CSTD_UNUSED(gpu_addr);\
- CSTD_UNUSED(jobslot);\
- CSTD_UNUSED(info_val);\
- CSTD_NOP(0);\
+#define KBASE_KTRACE_FTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, gpu_addr, jobslot, \
+ info_val) \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(katom); \
+ CSTD_UNUSED(gpu_addr); \
+ CSTD_UNUSED(jobslot); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
-#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, \
- gpu_addr, refcount) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(kctx);\
- CSTD_UNUSED(katom);\
- CSTD_UNUSED(gpu_addr);\
- CSTD_UNUSED(refcount);\
- CSTD_NOP(0);\
+#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, gpu_addr, refcount) \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(katom); \
+ CSTD_UNUSED(gpu_addr); \
+ CSTD_UNUSED(refcount); \
+ CSTD_NOP(0); \
} while (0)
-#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT_INFO(kbdev, code, kctx, katom, \
- gpu_addr, refcount, info_val) \
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(kctx);\
- CSTD_UNUSED(katom);\
- CSTD_UNUSED(gpu_addr);\
- CSTD_UNUSED(info_val);\
- CSTD_NOP(0);\
+#define KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT_INFO(kbdev, code, kctx, katom, gpu_addr, refcount, \
+ info_val) \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(katom); \
+ CSTD_UNUSED(gpu_addr); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
-#define KBASE_KTRACE_FTRACE_ADD_JM(kbdev, code, kctx, katom, gpu_addr, \
- info_val)\
- do {\
- CSTD_UNUSED(kbdev);\
- CSTD_NOP(code);\
- CSTD_UNUSED(kctx);\
- CSTD_UNUSED(katom);\
- CSTD_UNUSED(gpu_addr);\
- CSTD_UNUSED(info_val);\
- CSTD_NOP(0);\
+#define KBASE_KTRACE_FTRACE_ADD_JM(kbdev, code, kctx, katom, gpu_addr, info_val) \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(katom); \
+ CSTD_UNUSED(gpu_addr); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
#endif /* KBASE_KTRACE_TARGET_FTRACE */
@@ -179,15 +171,13 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, gpu_addr, \
- jobslot) \
- do { \
- /* capture values that could come from non-pure function calls */ \
- u64 __gpu_addr = gpu_addr; \
- int __jobslot = jobslot; \
- KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
- KBASE_KTRACE_FLAG_JM_JOBSLOT, 0, __jobslot, \
- 0); \
+#define KBASE_KTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, gpu_addr, jobslot) \
+ do { \
+ /* capture values that could come from non-pure function calls */ \
+ u64 __gpu_addr = gpu_addr; \
+ unsigned int __jobslot = jobslot; \
+ KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
+ KBASE_KTRACE_FLAG_JM_JOBSLOT, 0, __jobslot, 0); \
KBASE_KTRACE_FTRACE_ADD_JM_SLOT(kbdev, code, kctx, katom, __gpu_addr, __jobslot); \
} while (0)
@@ -208,17 +198,16 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, gpu_addr, \
- jobslot, info_val) \
- do { \
- /* capture values that could come from non-pure function calls */ \
- u64 __gpu_addr = gpu_addr; \
- int __jobslot = jobslot; \
- u64 __info_val = info_val; \
- KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
- KBASE_KTRACE_FLAG_JM_JOBSLOT, 0, __jobslot, \
- __info_val); \
- KBASE_KTRACE_FTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, __gpu_addr, __jobslot, __info_val); \
+#define KBASE_KTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, gpu_addr, jobslot, info_val) \
+ do { \
+ /* capture values that could come from non-pure function calls */ \
+ u64 __gpu_addr = gpu_addr; \
+ unsigned int __jobslot = jobslot; \
+ u64 __info_val = info_val; \
+ KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
+ KBASE_KTRACE_FLAG_JM_JOBSLOT, 0, __jobslot, __info_val); \
+ KBASE_KTRACE_FTRACE_ADD_JM_SLOT_INFO(kbdev, code, kctx, katom, __gpu_addr, \
+ __jobslot, __info_val); \
} while (0)
/**
@@ -237,16 +226,15 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, gpu_addr, \
- refcount) \
- do { \
- /* capture values that could come from non-pure function calls */ \
- u64 __gpu_addr = gpu_addr; \
- int __refcount = refcount; \
- KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
- KBASE_KTRACE_FLAG_JM_REFCOUNT, __refcount, 0, \
- 0u); \
- KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, __gpu_addr, __refcount); \
+#define KBASE_KTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, gpu_addr, refcount) \
+ do { \
+ /* capture values that could come from non-pure function calls */ \
+ u64 __gpu_addr = gpu_addr; \
+ int __refcount = refcount; \
+ KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
+ KBASE_KTRACE_FLAG_JM_REFCOUNT, __refcount, 0, 0u); \
+ KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, __gpu_addr, \
+ (unsigned int)__refcount); \
} while (0)
/**
@@ -267,17 +255,17 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_JM_REFCOUNT_INFO(kbdev, code, kctx, katom, \
- gpu_addr, refcount, info_val) \
- do { \
- /* capture values that could come from non-pure function calls */ \
- u64 __gpu_addr = gpu_addr; \
- int __refcount = refcount; \
- u64 __info_val = info_val; \
- KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
- KBASE_KTRACE_FLAG_JM_REFCOUNT, __refcount, 0, \
- __info_val); \
- KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, __gpu_addr, __refcount, __info_val); \
+#define KBASE_KTRACE_ADD_JM_REFCOUNT_INFO(kbdev, code, kctx, katom, gpu_addr, refcount, info_val) \
+ do { \
+ /* capture values that could come from non-pure function calls */ \
+ u64 __gpu_addr = gpu_addr; \
+ int __refcount = refcount; \
+ u64 __info_val = info_val; \
+ KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
+ KBASE_KTRACE_FLAG_JM_REFCOUNT, __refcount, 0, \
+ __info_val); \
+ KBASE_KTRACE_FTRACE_ADD_JM_REFCOUNT(kbdev, code, kctx, katom, __gpu_addr, \
+ (unsigned int)__refcount, __info_val); \
} while (0)
/**
@@ -296,13 +284,13 @@ void kbasep_ktrace_add_jm(struct kbase_device *kbdev,
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD_JM(kbdev, code, kctx, katom, gpu_addr, info_val) \
- do { \
- /* capture values that could come from non-pure function calls */ \
- u64 __gpu_addr = gpu_addr; \
- u64 __info_val = info_val; \
- KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, \
- 0u, 0, 0, __info_val); \
+#define KBASE_KTRACE_ADD_JM(kbdev, code, kctx, katom, gpu_addr, info_val) \
+ do { \
+ /* capture values that could come from non-pure function calls */ \
+ u64 __gpu_addr = gpu_addr; \
+ u64 __info_val = info_val; \
+ KBASE_KTRACE_RBUF_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, 0u, 0, 0, \
+ __info_val); \
KBASE_KTRACE_FTRACE_ADD_JM(kbdev, code, kctx, katom, __gpu_addr, __info_val); \
} while (0)
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_csf.h b/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_csf.h
index e70a498..b77779a 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_csf.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_csf.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -73,77 +73,69 @@ DEFINE_MALI_ADD_EVENT(SCHED_BUSY);
DEFINE_MALI_ADD_EVENT(SCHED_INACTIVE);
DEFINE_MALI_ADD_EVENT(SCHED_SUSPENDED);
DEFINE_MALI_ADD_EVENT(SCHED_SLEEPING);
-#define KBASEP_MCU_STATE(n) DEFINE_MALI_ADD_EVENT(PM_MCU_ ## n);
+#define KBASEP_MCU_STATE(n) DEFINE_MALI_ADD_EVENT(PM_MCU_##n);
#include "backend/gpu/mali_kbase_pm_mcu_states.h"
#undef KBASEP_MCU_STATE
-DECLARE_EVENT_CLASS(mali_csf_grp_q_template,
+DECLARE_EVENT_CLASS(
+ mali_csf_grp_q_template,
TP_PROTO(struct kbase_device *kbdev, struct kbase_queue_group *group,
- struct kbase_queue *queue, u64 info_val),
+ struct kbase_queue *queue, u64 info_val),
TP_ARGS(kbdev, group, queue, info_val),
- TP_STRUCT__entry(
- __field(u64, info_val)
- __field(pid_t, kctx_tgid)
- __field(u32, kctx_id)
- __field(u8, group_handle)
- __field(s8, csg_nr)
- __field(u8, slot_prio)
- __field(s8, csi_index)
- ),
- TP_fast_assign(
- {
- struct kbase_context *kctx = NULL;
+ TP_STRUCT__entry(__field(u64, info_val) __field(pid_t, kctx_tgid) __field(u32, kctx_id)
+ __field(u8, group_handle) __field(s8, csg_nr)
+ __field(u8, slot_prio) __field(s8, csi_index)),
+ TP_fast_assign({
+ struct kbase_context *kctx = NULL;
- __entry->info_val = info_val;
- /* Note: if required in future, we could record some
+ __entry->info_val = info_val;
+ /* Note: if required in future, we could record some
* flags in __entry about whether the group/queue parts
* are valid, and add that to the trace message e.g.
* by using __print_flags()/__print_symbolic()
*/
- if (queue) {
- /* Note: kctx overridden by group->kctx later if group is valid */
- kctx = queue->kctx;
- __entry->csi_index = queue->csi_index;
- } else {
- __entry->csi_index = -1;
- }
+ if (queue) {
+ /* Note: kctx overridden by group->kctx later if group is valid */
+ kctx = queue->kctx;
+ __entry->csi_index = queue->csi_index;
+ } else {
+ __entry->csi_index = -1;
+ }
- if (group) {
- kctx = group->kctx;
- __entry->group_handle = group->handle;
- __entry->csg_nr = group->csg_nr;
- if (group->csg_nr >= 0)
- __entry->slot_prio = kbdev->csf.scheduler.csg_slots[group->csg_nr].priority;
- else
- __entry->slot_prio = 0u;
- } else {
- __entry->group_handle = 0u;
- __entry->csg_nr = -1;
+ if (group) {
+ kctx = group->kctx;
+ __entry->group_handle = group->handle;
+ __entry->csg_nr = group->csg_nr;
+ if (group->csg_nr >= 0)
+ __entry->slot_prio =
+ kbdev->csf.scheduler.csg_slots[group->csg_nr].priority;
+ else
__entry->slot_prio = 0u;
- }
- __entry->kctx_id = (kctx) ? kctx->id : 0u;
- __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
+ } else {
+ __entry->group_handle = 0u;
+ __entry->csg_nr = -1;
+ __entry->slot_prio = 0u;
}
+ __entry->kctx_id = (kctx) ? kctx->id : 0u;
+ __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
+ }
- ),
- TP_printk("kctx=%d_%u group=%u slot=%d prio=%u csi=%d info=0x%llx",
- __entry->kctx_tgid, __entry->kctx_id,
- __entry->group_handle, __entry->csg_nr,
- __entry->slot_prio, __entry->csi_index,
- __entry->info_val)
-);
+ ),
+ TP_printk("kctx=%d_%u group=%u slot=%d prio=%u csi=%d info=0x%llx", __entry->kctx_tgid,
+ __entry->kctx_id, __entry->group_handle, __entry->csg_nr, __entry->slot_prio,
+ __entry->csi_index, __entry->info_val));
/*
* Group events
*/
-#define DEFINE_MALI_CSF_GRP_EVENT(name) \
- DEFINE_EVENT_PRINT(mali_csf_grp_q_template, mali_##name, \
- TP_PROTO(struct kbase_device *kbdev, struct kbase_queue_group *group, \
- struct kbase_queue *queue, u64 info_val), \
- TP_ARGS(kbdev, group, queue, info_val), \
- TP_printk("kctx=%d_%u group=%u slot=%d prio=%u info=0x%llx", \
- __entry->kctx_tgid, __entry->kctx_id, __entry->group_handle, \
- __entry->csg_nr, __entry->slot_prio, __entry->info_val))
+#define DEFINE_MALI_CSF_GRP_EVENT(name) \
+ DEFINE_EVENT_PRINT(mali_csf_grp_q_template, mali_##name, \
+ TP_PROTO(struct kbase_device *kbdev, struct kbase_queue_group *group, \
+ struct kbase_queue *queue, u64 info_val), \
+ TP_ARGS(kbdev, group, queue, info_val), \
+ TP_printk("kctx=%d_%u group=%u slot=%d prio=%u info=0x%llx", \
+ __entry->kctx_tgid, __entry->kctx_id, __entry->group_handle, \
+ __entry->csg_nr, __entry->slot_prio, __entry->info_val))
DEFINE_MALI_CSF_GRP_EVENT(CSG_SLOT_START_REQ);
DEFINE_MALI_CSF_GRP_EVENT(CSG_SLOT_STOP_REQ);
@@ -200,11 +192,11 @@ DEFINE_MALI_CSF_GRP_EVENT(CSF_GROUP_TERMINATED);
/*
* Group + Queue events
*/
-#define DEFINE_MALI_CSF_GRP_Q_EVENT(name) \
- DEFINE_EVENT(mali_csf_grp_q_template, mali_##name, \
- TP_PROTO(struct kbase_device *kbdev, struct kbase_queue_group *group, \
- struct kbase_queue *queue, u64 info_val), \
- TP_ARGS(kbdev, group, queue, info_val))
+#define DEFINE_MALI_CSF_GRP_Q_EVENT(name) \
+ DEFINE_EVENT(mali_csf_grp_q_template, mali_##name, \
+ TP_PROTO(struct kbase_device *kbdev, struct kbase_queue_group *group, \
+ struct kbase_queue *queue, u64 info_val), \
+ TP_ARGS(kbdev, group, queue, info_val))
DEFINE_MALI_CSF_GRP_Q_EVENT(CSI_START);
DEFINE_MALI_CSF_GRP_Q_EVENT(CSI_STOP);
@@ -231,36 +223,29 @@ DEFINE_MALI_CSF_GRP_Q_EVENT(CSI_PROTM_PEND_CLEAR);
* KCPU queue events
*/
DECLARE_EVENT_CLASS(mali_csf_kcpu_queue_template,
- TP_PROTO(struct kbase_kcpu_command_queue *queue,
- u64 info_val1, u64 info_val2),
- TP_ARGS(queue, info_val1, info_val2),
- TP_STRUCT__entry(
- __field(u64, info_val1)
- __field(u64, info_val2)
- __field(pid_t, kctx_tgid)
- __field(u32, kctx_id)
- __field(u8, id)
- ),
- TP_fast_assign(
- {
- __entry->info_val1 = info_val1;
- __entry->info_val2 = info_val2;
- __entry->kctx_id = queue->kctx->id;
- __entry->kctx_tgid = queue->kctx->tgid;
- __entry->id = queue->id;
- }
+ TP_PROTO(struct kbase_kcpu_command_queue *queue, u64 info_val1, u64 info_val2),
+ TP_ARGS(queue, info_val1, info_val2),
+ TP_STRUCT__entry(__field(u64, info_val1) __field(u64, info_val2)
+ __field(pid_t, kctx_tgid) __field(u32, kctx_id)
+ __field(u8, id)),
+ TP_fast_assign({
+ __entry->info_val1 = info_val1;
+ __entry->info_val2 = info_val2;
+ __entry->kctx_id = queue->kctx->id;
+ __entry->kctx_tgid = queue->kctx->tgid;
+ __entry->id = queue->id;
+ }
- ),
- TP_printk("kctx=%d_%u id=%u info_val1=0x%llx info_val2=0x%llx",
- __entry->kctx_tgid, __entry->kctx_id, __entry->id,
- __entry->info_val1, __entry->info_val2)
-);
+ ),
+ TP_printk("kctx=%d_%u id=%u info_val1=0x%llx info_val2=0x%llx",
+ __entry->kctx_tgid, __entry->kctx_id, __entry->id, __entry->info_val1,
+ __entry->info_val2));
-#define DEFINE_MALI_CSF_KCPU_EVENT(name) \
- DEFINE_EVENT(mali_csf_kcpu_queue_template, mali_##name, \
- TP_PROTO(struct kbase_kcpu_command_queue *queue, \
- u64 info_val1, u64 info_val2), \
- TP_ARGS(queue, info_val1, info_val2))
+#define DEFINE_MALI_CSF_KCPU_EVENT(name) \
+ DEFINE_EVENT(mali_csf_kcpu_queue_template, mali_##name, \
+ TP_PROTO(struct kbase_kcpu_command_queue *queue, u64 info_val1, \
+ u64 info_val2), \
+ TP_ARGS(queue, info_val1, info_val2))
DEFINE_MALI_CSF_KCPU_EVENT(KCPU_QUEUE_CREATE);
DEFINE_MALI_CSF_KCPU_EVENT(KCPU_QUEUE_DELETE);
diff --git a/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_jm.h b/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_jm.h
index 8fa4e2a..3e5b0ec 100644
--- a/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_jm.h
+++ b/mali_kbase/debug/backend/mali_kbase_debug_linux_ktrace_jm.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2014, 2018, 2020-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2014-2023 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
@@ -28,28 +28,20 @@
#define _KBASE_DEBUG_LINUX_KTRACE_JM_H_
DECLARE_EVENT_CLASS(mali_jm_slot_template,
- TP_PROTO(struct kbase_context *kctx, int jobslot, u64 info_val),
- TP_ARGS(kctx, jobslot, info_val),
- TP_STRUCT__entry(
- __field(pid_t, kctx_tgid)
- __field(u32, kctx_id)
- __field(unsigned int, jobslot)
- __field(u64, info_val)
- ),
- TP_fast_assign(
- __entry->kctx_id = (kctx) ? kctx->id : 0u;
- __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
- __entry->jobslot = jobslot;
- __entry->info_val = info_val;
- ),
- TP_printk("kctx=%d_%u jobslot=%u info=0x%llx", __entry->kctx_tgid,
- __entry->kctx_id, __entry->jobslot, __entry->info_val)
-);
+ TP_PROTO(struct kbase_context *kctx, unsigned int jobslot, u64 info_val),
+ TP_ARGS(kctx, jobslot, info_val),
+ TP_STRUCT__entry(__field(pid_t, kctx_tgid) __field(u32, kctx_id)
+ __field(unsigned int, jobslot) __field(u64, info_val)),
+ TP_fast_assign(__entry->kctx_id = (kctx) ? kctx->id : 0u;
+ __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
+ __entry->jobslot = jobslot; __entry->info_val = info_val;),
+ TP_printk("kctx=%d_%u jobslot=%u info=0x%llx", __entry->kctx_tgid,
+ __entry->kctx_id, __entry->jobslot, __entry->info_val));
-#define DEFINE_MALI_JM_SLOT_EVENT(name) \
-DEFINE_EVENT(mali_jm_slot_template, mali_##name, \
- TP_PROTO(struct kbase_context *kctx, int jobslot, u64 info_val), \
- TP_ARGS(kctx, jobslot, info_val))
+#define DEFINE_MALI_JM_SLOT_EVENT(name) \
+ DEFINE_EVENT(mali_jm_slot_template, mali_##name, \
+ TP_PROTO(struct kbase_context *kctx, unsigned int jobslot, u64 info_val), \
+ TP_ARGS(kctx, jobslot, info_val))
DEFINE_MALI_JM_SLOT_EVENT(JM_RETURN_ATOM_TO_JS);
DEFINE_MALI_JM_SLOT_EVENT(JM_MARK_FOR_RETURN_TO_JS);
DEFINE_MALI_JM_SLOT_EVENT(JM_SUBMIT);
@@ -86,28 +78,21 @@ DEFINE_MALI_JM_SLOT_EVENT(JS_SLOT_PRIO_IS_BLOCKED);
#undef DEFINE_MALI_JM_SLOT_EVENT
DECLARE_EVENT_CLASS(mali_jm_refcount_template,
- TP_PROTO(struct kbase_context *kctx, int refcount, u64 info_val),
- TP_ARGS(kctx, refcount, info_val),
- TP_STRUCT__entry(
- __field(pid_t, kctx_tgid)
- __field(u32, kctx_id)
- __field(unsigned int, refcount)
- __field(u64, info_val)
- ),
- TP_fast_assign(
- __entry->kctx_id = (kctx) ? kctx->id : 0u;
- __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
- __entry->refcount = refcount;
- __entry->info_val = info_val;
- ),
- TP_printk("kctx=%d_%u refcount=%u info=0x%llx", __entry->kctx_tgid,
- __entry->kctx_id, __entry->refcount, __entry->info_val)
-);
+ TP_PROTO(struct kbase_context *kctx, unsigned int refcount, u64 info_val),
+ TP_ARGS(kctx, refcount, info_val),
+ TP_STRUCT__entry(__field(pid_t, kctx_tgid) __field(u32, kctx_id)
+ __field(unsigned int, refcount)
+ __field(u64, info_val)),
+ TP_fast_assign(__entry->kctx_id = (kctx) ? kctx->id : 0u;
+ __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
+ __entry->refcount = refcount; __entry->info_val = info_val;),
+ TP_printk("kctx=%d_%u refcount=%u info=0x%llx", __entry->kctx_tgid,
+ __entry->kctx_id, __entry->refcount, __entry->info_val));
-#define DEFINE_MALI_JM_REFCOUNT_EVENT(name) \
-DEFINE_EVENT(mali_jm_refcount_template, mali_##name, \
- TP_PROTO(struct kbase_context *kctx, int refcount, u64 info_val), \
- TP_ARGS(kctx, refcount, info_val))
+#define DEFINE_MALI_JM_REFCOUNT_EVENT(name) \
+ DEFINE_EVENT(mali_jm_refcount_template, mali_##name, \
+ TP_PROTO(struct kbase_context *kctx, unsigned int refcount, u64 info_val), \
+ TP_ARGS(kctx, refcount, info_val))
DEFINE_MALI_JM_REFCOUNT_EVENT(JS_ADD_JOB);
DEFINE_MALI_JM_REFCOUNT_EVENT(JS_REMOVE_JOB);
DEFINE_MALI_JM_REFCOUNT_EVENT(JS_TRY_SCHEDULE_HEAD_CTX);
@@ -122,28 +107,20 @@ DEFINE_MALI_JM_REFCOUNT_EVENT(JS_POLICY_FOREACH_CTX_JOBS);
#undef DEFINE_MALI_JM_REFCOUNT_EVENT
DECLARE_EVENT_CLASS(mali_jm_add_template,
- TP_PROTO(struct kbase_context *kctx, u64 gpu_addr, u64 info_val),
- TP_ARGS(kctx, gpu_addr, info_val),
- TP_STRUCT__entry(
- __field(pid_t, kctx_tgid)
- __field(u32, kctx_id)
- __field(u64, gpu_addr)
- __field(u64, info_val)
- ),
- TP_fast_assign(
- __entry->kctx_id = (kctx) ? kctx->id : 0u;
- __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
- __entry->gpu_addr = gpu_addr;
- __entry->info_val = info_val;
- ),
- TP_printk("kctx=%d_%u gpu_addr=0x%llx info=0x%llx", __entry->kctx_tgid,
- __entry->kctx_id, __entry->gpu_addr, __entry->info_val)
-);
+ TP_PROTO(struct kbase_context *kctx, u64 gpu_addr, u64 info_val),
+ TP_ARGS(kctx, gpu_addr, info_val),
+ TP_STRUCT__entry(__field(pid_t, kctx_tgid) __field(u32, kctx_id)
+ __field(u64, gpu_addr) __field(u64, info_val)),
+ TP_fast_assign(__entry->kctx_id = (kctx) ? kctx->id : 0u;
+ __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
+ __entry->gpu_addr = gpu_addr; __entry->info_val = info_val;),
+ TP_printk("kctx=%d_%u gpu_addr=0x%llx info=0x%llx", __entry->kctx_tgid,
+ __entry->kctx_id, __entry->gpu_addr, __entry->info_val));
-#define DEFINE_MALI_JM_ADD_EVENT(name) \
-DEFINE_EVENT(mali_jm_add_template, mali_##name, \
- TP_PROTO(struct kbase_context *kctx, u64 gpu_addr, u64 info_val), \
- TP_ARGS(kctx, gpu_addr, info_val))
+#define DEFINE_MALI_JM_ADD_EVENT(name) \
+ DEFINE_EVENT(mali_jm_add_template, mali_##name, \
+ TP_PROTO(struct kbase_context *kctx, u64 gpu_addr, u64 info_val), \
+ TP_ARGS(kctx, gpu_addr, info_val))
DEFINE_MALI_JM_ADD_EVENT(JD_DONE_WORKER);
DEFINE_MALI_JM_ADD_EVENT(JD_DONE_WORKER_END);
DEFINE_MALI_JM_ADD_EVENT(JD_CANCEL_WORKER);
diff --git a/mali_kbase/debug/mali_kbase_debug_ktrace.c b/mali_kbase/debug/mali_kbase_debug_ktrace.c
index 3cbd2da..1f5019d 100644
--- a/mali_kbase/debug/mali_kbase_debug_ktrace.c
+++ b/mali_kbase/debug/mali_kbase_debug_ktrace.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -34,6 +34,8 @@ int kbase_ktrace_init(struct kbase_device *kbdev)
return -EINVAL;
kbdev->ktrace.rbuf = rbuf;
+#else
+ CSTD_UNUSED(kbdev);
#endif /* KBASE_KTRACE_TARGET_RBUF */
return 0;
}
@@ -43,6 +45,8 @@ void kbase_ktrace_term(struct kbase_device *kbdev)
#if KBASE_KTRACE_TARGET_RBUF
kfree(kbdev->ktrace.rbuf);
kbdev->ktrace.rbuf = NULL;
+#else
+ CSTD_UNUSED(kbdev);
#endif /* KBASE_KTRACE_TARGET_RBUF */
}
@@ -55,33 +59,33 @@ void kbase_ktrace_hook_wrapper(void *param)
#if KBASE_KTRACE_TARGET_RBUF
-static const char * const kbasep_ktrace_code_string[] = {
- /*
+static const char *const kbasep_ktrace_code_string[] = {
+/*
* IMPORTANT: USE OF SPECIAL #INCLUDE OF NON-STANDARD HEADER FILE
* THIS MUST BE USED AT THE START OF THE ARRAY
*/
-#define KBASE_KTRACE_CODE_MAKE_CODE(X) # X
+#define KBASE_KTRACE_CODE_MAKE_CODE(X) #X
#include "debug/mali_kbase_debug_ktrace_codes.h"
-#undef KBASE_KTRACE_CODE_MAKE_CODE
+#undef KBASE_KTRACE_CODE_MAKE_CODE
};
static void kbasep_ktrace_format_header(char *buffer, int sz, s32 written)
{
- written += MAX(snprintf(buffer + written, MAX(sz - written, 0),
- "secs,thread_id,cpu,code,kctx,"), 0);
+ written += MAX(snprintf(buffer + written, (size_t)MAX(sz - written, 0),
+ "secs,thread_id,cpu,code,kctx,"),
+ 0);
kbasep_ktrace_backend_format_header(buffer, sz, &written);
- written += MAX(snprintf(buffer + written, MAX(sz - written, 0),
- ",info_val,ktrace_version=%u.%u",
- KBASE_KTRACE_VERSION_MAJOR,
- KBASE_KTRACE_VERSION_MINOR), 0);
+ written += MAX(snprintf(buffer + written, (size_t)MAX(sz - written, 0),
+ ",info_val,ktrace_version=%u.%u", KBASE_KTRACE_VERSION_MAJOR,
+ KBASE_KTRACE_VERSION_MINOR),
+ 0);
buffer[sz - 1] = 0;
}
-static void kbasep_ktrace_format_msg(struct kbase_ktrace_msg *trace_msg,
- char *buffer, int sz)
+static void kbasep_ktrace_format_msg(struct kbase_ktrace_msg *trace_msg, char *buffer, int sz)
{
s32 written = 0;
@@ -89,27 +93,24 @@ static void kbasep_ktrace_format_msg(struct kbase_ktrace_msg *trace_msg,
*
* secs,thread_id,cpu,code,
*/
- written += MAX(snprintf(buffer + written, MAX(sz - written, 0),
- "%d.%.6d,%d,%d,%s,",
- (int)trace_msg->timestamp.tv_sec,
- (int)(trace_msg->timestamp.tv_nsec / 1000),
- trace_msg->thread_id, trace_msg->cpu,
- kbasep_ktrace_code_string[trace_msg->backend.gpu.code]),
- 0);
+ written += MAX(snprintf(buffer + written, (size_t)MAX(sz - written, 0), "%d.%.6d,%d,%d,%s,",
+ (int)trace_msg->timestamp.tv_sec,
+ (int)(trace_msg->timestamp.tv_nsec / 1000), trace_msg->thread_id,
+ trace_msg->cpu,
+ kbasep_ktrace_code_string[trace_msg->backend.gpu.code]),
+ 0);
/* kctx part: */
if (trace_msg->kctx_tgid) {
- written += MAX(snprintf(buffer + written, MAX(sz - written, 0),
- "%d_%u",
- trace_msg->kctx_tgid, trace_msg->kctx_id), 0);
+ written += MAX(snprintf(buffer + written, (size_t)MAX(sz - written, 0), "%d_%u",
+ trace_msg->kctx_tgid, trace_msg->kctx_id),
+ 0);
}
/* Trailing comma */
- written += MAX(snprintf(buffer + written, MAX(sz - written, 0),
- ","), 0);
+ written += MAX(snprintf(buffer + written, (size_t)MAX(sz - written, 0), ","), 0);
/* Backend parts */
- kbasep_ktrace_backend_format_msg(trace_msg, buffer, sz,
- &written);
+ kbasep_ktrace_backend_format_msg(trace_msg, buffer, sz, &written);
/* Rest of message:
*
@@ -118,14 +119,13 @@ static void kbasep_ktrace_format_msg(struct kbase_ktrace_msg *trace_msg,
* Note that the last column is empty, it's simply to hold the ktrace
* version in the header
*/
- written += MAX(snprintf(buffer + written, MAX(sz - written, 0),
- ",0x%.16llx",
- (unsigned long long)trace_msg->info_val), 0);
+ written += MAX(snprintf(buffer + written, (size_t)MAX(sz - written, 0), ",0x%.16llx",
+ (unsigned long long)trace_msg->info_val),
+ 0);
buffer[sz - 1] = 0;
}
-static void kbasep_ktrace_dump_msg(struct kbase_device *kbdev,
- struct kbase_ktrace_msg *trace_msg)
+static void kbasep_ktrace_dump_msg(struct kbase_device *kbdev, struct kbase_ktrace_msg *trace_msg)
{
char buffer[KTRACE_DUMP_MESSAGE_SIZE];
@@ -150,14 +150,13 @@ struct kbase_ktrace_msg *kbasep_ktrace_reserve(struct kbase_ktrace *ktrace)
return trace_msg;
}
-void kbasep_ktrace_msg_init(struct kbase_ktrace *ktrace,
- struct kbase_ktrace_msg *trace_msg, enum kbase_ktrace_code code,
- struct kbase_context *kctx, kbase_ktrace_flag_t flags,
- u64 info_val)
+void kbasep_ktrace_msg_init(struct kbase_ktrace *ktrace, struct kbase_ktrace_msg *trace_msg,
+ enum kbase_ktrace_code code, struct kbase_context *kctx,
+ kbase_ktrace_flag_t flags, u64 info_val)
{
lockdep_assert_held(&ktrace->lock);
- trace_msg->thread_id = task_pid_nr(current);
+ trace_msg->thread_id = (u32)task_pid_nr(current);
trace_msg->cpu = task_cpu(current);
ktime_get_real_ts64(&trace_msg->timestamp);
@@ -178,8 +177,7 @@ void kbasep_ktrace_msg_init(struct kbase_ktrace *ktrace,
}
void kbasep_ktrace_add(struct kbase_device *kbdev, enum kbase_ktrace_code code,
- struct kbase_context *kctx, kbase_ktrace_flag_t flags,
- u64 info_val)
+ struct kbase_context *kctx, kbase_ktrace_flag_t flags, u64 info_val)
{
unsigned long irqflags;
struct kbase_ktrace_msg *trace_msg;
@@ -195,8 +193,7 @@ void kbasep_ktrace_add(struct kbase_device *kbdev, enum kbase_ktrace_code code,
trace_msg = kbasep_ktrace_reserve(&kbdev->ktrace);
/* Fill the common part of the message (including backend.gpu.flags) */
- kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, flags,
- info_val);
+ kbasep_ktrace_msg_init(&kbdev->ktrace, trace_msg, code, kctx, flags, info_val);
/* Done */
spin_unlock_irqrestore(&kbdev->ktrace.lock, irqflags);
@@ -281,7 +278,7 @@ struct trace_seq_state {
static void *kbasep_ktrace_seq_start(struct seq_file *s, loff_t *pos)
{
struct trace_seq_state *state = s->private;
- int i;
+ unsigned int i;
if (*pos == 0)
/* See Documentation/filesystems/seq_file.txt */
@@ -290,8 +287,7 @@ static void *kbasep_ktrace_seq_start(struct seq_file *s, loff_t *pos)
if (*pos > KBASE_KTRACE_SIZE)
return NULL;
i = state->start + *pos;
- if ((state->end >= state->start && i >= state->end) ||
- i >= state->end + KBASE_KTRACE_SIZE)
+ if ((state->end >= state->start && i >= state->end) || i >= state->end + KBASE_KTRACE_SIZE)
return NULL;
i &= KBASE_KTRACE_MASK;
@@ -301,12 +297,14 @@ static void *kbasep_ktrace_seq_start(struct seq_file *s, loff_t *pos)
static void kbasep_ktrace_seq_stop(struct seq_file *s, void *data)
{
+ CSTD_UNUSED(s);
+ CSTD_UNUSED(data);
}
static void *kbasep_ktrace_seq_next(struct seq_file *s, void *data, loff_t *pos)
{
struct trace_seq_state *state = s->private;
- int i;
+ unsigned int i;
if (data != SEQ_START_TOKEN)
(*pos)++;
@@ -347,8 +345,7 @@ static int kbasep_ktrace_debugfs_open(struct inode *inode, struct file *file)
struct trace_seq_state *state;
- state = __seq_open_private(file, &kbasep_ktrace_seq_ops,
- sizeof(*state));
+ state = __seq_open_private(file, &kbasep_ktrace_seq_ops, sizeof(*state));
if (!state)
return -ENOMEM;
@@ -371,9 +368,8 @@ static const struct file_operations kbasep_ktrace_debugfs_fops = {
void kbase_ktrace_debugfs_init(struct kbase_device *kbdev)
{
- debugfs_create_file("mali_trace", 0444,
- kbdev->mali_debugfs_directory, kbdev,
- &kbasep_ktrace_debugfs_fops);
+ debugfs_create_file("mali_trace", 0444, kbdev->mali_debugfs_directory, kbdev,
+ &kbasep_ktrace_debugfs_fops);
}
#endif /* CONFIG_DEBUG_FS */
diff --git a/mali_kbase/debug/mali_kbase_debug_ktrace.h b/mali_kbase/debug/mali_kbase_debug_ktrace.h
index 7c988f4..22179bf 100644
--- a/mali_kbase/debug/mali_kbase_debug_ktrace.h
+++ b/mali_kbase/debug/mali_kbase_debug_ktrace.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -104,8 +104,7 @@ static inline bool kbasep_ktrace_initialized(struct kbase_ktrace *ktrace)
* PRIVATE: do not use directly. Use KBASE_KTRACE_ADD() instead.
*/
void kbasep_ktrace_add(struct kbase_device *kbdev, enum kbase_ktrace_code code,
- struct kbase_context *kctx, kbase_ktrace_flag_t flags,
- u64 info_val);
+ struct kbase_context *kctx, kbase_ktrace_flag_t flags, u64 info_val);
/**
* kbasep_ktrace_clear - clear the trace ringbuffer
@@ -135,36 +134,33 @@ void kbasep_ktrace_dump(struct kbase_device *kbdev);
*/
u32 kbasep_ktrace_copy(struct kbase_device* kbdev, struct kbase_ktrace_msg* msgs, u32 num_msgs);
-#define KBASE_KTRACE_RBUF_ADD(kbdev, code, kctx, info_val) \
- kbasep_ktrace_add(kbdev, KBASE_KTRACE_CODE(code), kctx, 0, \
- info_val) \
+#define KBASE_KTRACE_RBUF_ADD(kbdev, code, kctx, info_val) \
+ kbasep_ktrace_add(kbdev, KBASE_KTRACE_CODE(code), kctx, 0, info_val)
-#define KBASE_KTRACE_RBUF_CLEAR(kbdev) \
- kbasep_ktrace_clear(kbdev)
+#define KBASE_KTRACE_RBUF_CLEAR(kbdev) kbasep_ktrace_clear(kbdev)
-#define KBASE_KTRACE_RBUF_DUMP(kbdev) \
- kbasep_ktrace_dump(kbdev)
+#define KBASE_KTRACE_RBUF_DUMP(kbdev) kbasep_ktrace_dump(kbdev)
#else /* KBASE_KTRACE_TARGET_RBUF */
#define KBASE_KTRACE_RBUF_ADD(kbdev, code, kctx, info_val) \
- do { \
- CSTD_UNUSED(kbdev); \
- CSTD_NOP(code); \
- CSTD_UNUSED(kctx); \
- CSTD_UNUSED(info_val); \
- CSTD_NOP(0); \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
#define KBASE_KTRACE_RBUF_CLEAR(kbdev) \
- do { \
- CSTD_UNUSED(kbdev); \
- CSTD_NOP(0); \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(0); \
} while (0)
#define KBASE_KTRACE_RBUF_DUMP(kbdev) \
- do { \
- CSTD_UNUSED(kbdev); \
- CSTD_NOP(0); \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(0); \
} while (0)
#endif /* KBASE_KTRACE_TARGET_RBUF */
@@ -173,32 +169,31 @@ void kbasep_ktrace_dump(struct kbase_device *kbdev);
*/
#if KBASE_KTRACE_TARGET_FTRACE
-#define KBASE_KTRACE_FTRACE_ADD(kbdev, code, kctx, info_val) \
- trace_mali_##code(kctx, info_val)
+#define KBASE_KTRACE_FTRACE_ADD(kbdev, code, kctx, info_val) trace_mali_##code(kctx, info_val)
#else /* KBASE_KTRACE_TARGET_FTRACE */
#define KBASE_KTRACE_FTRACE_ADD(kbdev, code, kctx, info_val) \
- do { \
- CSTD_UNUSED(kbdev); \
- CSTD_NOP(code); \
- CSTD_UNUSED(kctx); \
- CSTD_UNUSED(info_val); \
- CSTD_NOP(0); \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(code); \
+ CSTD_UNUSED(kctx); \
+ CSTD_UNUSED(info_val); \
+ CSTD_NOP(0); \
} while (0)
#endif /* KBASE_KTRACE_TARGET_FTRACE */
/* No 'clear' implementation for ftrace yet */
#define KBASE_KTRACE_FTRACE_CLEAR(kbdev) \
- do { \
- CSTD_UNUSED(kbdev); \
- CSTD_NOP(0); \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(0); \
} while (0)
/* No 'dump' implementation for ftrace yet */
#define KBASE_KTRACE_FTRACE_DUMP(kbdev) \
- do { \
- CSTD_UNUSED(kbdev); \
- CSTD_NOP(0); \
+ do { \
+ CSTD_UNUSED(kbdev); \
+ CSTD_NOP(0); \
} while (0)
/*
@@ -219,21 +214,21 @@ void kbasep_ktrace_dump(struct kbase_device *kbdev);
* a) be static or static inline, and
* b) just return 0 and have no other statements present in the body.
*/
-#define KBASE_KTRACE_ADD(kbdev, code, kctx, info_val) \
- do { \
+#define KBASE_KTRACE_ADD(kbdev, code, kctx, info_val) \
+ do { \
/* capture values that could come from non-pure function calls */ \
- u64 __info_val = info_val; \
- KBASE_KTRACE_RBUF_ADD(kbdev, code, kctx, __info_val); \
- KBASE_KTRACE_FTRACE_ADD(kbdev, code, kctx, __info_val); \
+ u64 __info_val = info_val; \
+ KBASE_KTRACE_RBUF_ADD(kbdev, code, kctx, __info_val); \
+ KBASE_KTRACE_FTRACE_ADD(kbdev, code, kctx, __info_val); \
} while (0)
/**
* KBASE_KTRACE_CLEAR - Clear the trace, if applicable to the target(s)
* @kbdev: kbase device
*/
-#define KBASE_KTRACE_CLEAR(kbdev) \
- do { \
- KBASE_KTRACE_RBUF_CLEAR(kbdev); \
+#define KBASE_KTRACE_CLEAR(kbdev) \
+ do { \
+ KBASE_KTRACE_RBUF_CLEAR(kbdev); \
KBASE_KTRACE_FTRACE_CLEAR(kbdev); \
} while (0)
@@ -241,9 +236,9 @@ void kbasep_ktrace_dump(struct kbase_device *kbdev);
* KBASE_KTRACE_DUMP - Dump the trace, if applicable to the target(s)
* @kbdev: kbase device
*/
-#define KBASE_KTRACE_DUMP(kbdev) \
- do { \
- KBASE_KTRACE_RBUF_DUMP(kbdev); \
+#define KBASE_KTRACE_DUMP(kbdev) \
+ do { \
+ KBASE_KTRACE_RBUF_DUMP(kbdev); \
KBASE_KTRACE_FTRACE_DUMP(kbdev); \
} while (0)
diff --git a/mali_kbase/debug/mali_kbase_debug_ktrace_codes.h b/mali_kbase/debug/mali_kbase_debug_ktrace_codes.h
index e2a1e8c..6e81fb8 100644
--- a/mali_kbase/debug/mali_kbase_debug_ktrace_codes.h
+++ b/mali_kbase/debug/mali_kbase_debug_ktrace_codes.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2011-2015, 2018-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2011-2023 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
@@ -42,7 +42,7 @@
* strings
*
* Before #including, the includer MUST #define KBASE_KTRACE_CODE_MAKE_CODE.
- * After #including, the includer MUST #under KBASE_KTRACE_CODE_MAKE_CODE.
+ * After #including, the includer MUST #undef KBASE_KTRACE_CODE_MAKE_CODE.
*
* e.g.:
* #define KBASE_KTRACE_CODE( X ) KBASE_KTRACE_CODE_ ## X
@@ -76,11 +76,11 @@
int dummy_array[] = {
#endif
- /*
+/*
* Core events
*/
- /* no info_val */
- KBASE_KTRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY),
+/* no info_val */
+KBASE_KTRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY),
/* no info_val */
KBASE_KTRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM),
/* info_val == GPU_IRQ_STATUS register */
@@ -101,12 +101,9 @@ int dummy_array[] = {
*/
KBASE_KTRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP),
KBASE_KTRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON_TILER),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON_L2),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF_TILER),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF_L2),
+ KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON), KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON_TILER),
+ KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON_L2), KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF),
+ KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF_TILER), KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF_L2),
KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_POWERED),
KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER),
KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2),
@@ -127,12 +124,10 @@ int dummy_array[] = {
/* info_val == kbdev->pm.active_count*/
KBASE_KTRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE),
/* info_val == kbdev->pm.active_count*/
- KBASE_KTRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_GPU_ON),
+ KBASE_KTRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE), KBASE_KTRACE_CODE_MAKE_CODE(PM_GPU_ON),
KBASE_KTRACE_CODE_MAKE_CODE(PM_GPU_OFF),
/* info_val == policy number, or -1 for "Already changing" */
- KBASE_KTRACE_CODE_MAKE_CODE(PM_SET_POLICY),
- KBASE_KTRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY),
+ KBASE_KTRACE_CODE_MAKE_CODE(PM_SET_POLICY), KBASE_KTRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY),
/* info_val == policy number */
KBASE_KTRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT),
/* info_val == policy number */
@@ -142,8 +137,8 @@ int dummy_array[] = {
KBASE_KTRACE_CODE_MAKE_CODE(PM_RUNTIME_SUSPEND_CALLBACK),
KBASE_KTRACE_CODE_MAKE_CODE(PM_RUNTIME_RESUME_CALLBACK),
- /* info_val = l2 state */
-#define KBASEP_L2_STATE(n) KBASE_KTRACE_CODE_MAKE_CODE(PM_L2_ ## n),
+/* info_val = l2 state */
+#define KBASEP_L2_STATE(n) KBASE_KTRACE_CODE_MAKE_CODE(PM_L2_##n),
#include "backend/gpu/mali_kbase_pm_l2_states.h"
#undef KBASEP_L2_STATE
@@ -158,8 +153,7 @@ int dummy_array[] = {
/*
* Arbitration events
*/
- KBASE_KTRACE_CODE_MAKE_CODE(ARB_GPU_LOST),
- KBASE_KTRACE_CODE_MAKE_CODE(ARB_VM_STATE),
+ KBASE_KTRACE_CODE_MAKE_CODE(ARB_GPU_LOST), KBASE_KTRACE_CODE_MAKE_CODE(ARB_VM_STATE),
KBASE_KTRACE_CODE_MAKE_CODE(ARB_VM_EVT),
#endif
#ifdef CONFIG_MALI_HOST_CONTROLS_SC_RAILS
@@ -182,4 +176,4 @@ int dummy_array[] = {
};
#endif
-/* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
+ /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
diff --git a/mali_kbase/debug/mali_kbase_debug_ktrace_defs.h b/mali_kbase/debug/mali_kbase_debug_ktrace_defs.h
index 8d9e11e..e776e31 100644
--- a/mali_kbase/debug/mali_kbase_debug_ktrace_defs.h
+++ b/mali_kbase/debug/mali_kbase_debug_ktrace_defs.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -105,32 +105,30 @@ union kbase_ktrace_backend;
* - code
* - flags
*/
-#define KBASE_KTRACE_FLAG_BACKEND (((kbase_ktrace_flag_t)1) << 7)
+#define KBASE_KTRACE_FLAG_BACKEND (((kbase_ktrace_flag_t)1) << 7)
/* Collect all the common flags together for debug checking */
-#define KBASE_KTRACE_FLAG_COMMON_ALL \
- (KBASE_KTRACE_FLAG_BACKEND)
+#define KBASE_KTRACE_FLAG_COMMON_ALL (KBASE_KTRACE_FLAG_BACKEND)
-#define KBASE_KTRACE_FLAG_ALL \
- (KBASE_KTRACE_FLAG_COMMON_ALL | KBASE_KTRACE_FLAG_BACKEND_ALL)
+#define KBASE_KTRACE_FLAG_ALL (KBASE_KTRACE_FLAG_COMMON_ALL | KBASE_KTRACE_FLAG_BACKEND_ALL)
#define KBASE_KTRACE_SHIFT (9) /* 512 entries */
#define KBASE_KTRACE_SIZE (1 << KBASE_KTRACE_SHIFT)
-#define KBASE_KTRACE_MASK ((1 << KBASE_KTRACE_SHIFT)-1)
+#define KBASE_KTRACE_MASK ((1 << KBASE_KTRACE_SHIFT) - 1)
-#define KBASE_KTRACE_CODE(X) KBASE_KTRACE_CODE_ ## X
+#define KBASE_KTRACE_CODE(X) KBASE_KTRACE_CODE_##X
/* Note: compiletime_assert() about this against kbase_ktrace_code_t is in
* kbase_ktrace_init()
*/
enum kbase_ktrace_code {
- /*
+/*
* IMPORTANT: USE OF SPECIAL #INCLUDE OF NON-STANDARD HEADER FILE
* THIS MUST BE USED AT THE START OF THE ENUM
*/
#define KBASE_KTRACE_CODE_MAKE_CODE(X) KBASE_KTRACE_CODE(X)
#include <debug/mali_kbase_debug_ktrace_codes.h>
-#undef KBASE_KTRACE_CODE_MAKE_CODE
+#undef KBASE_KTRACE_CODE_MAKE_CODE
/* Comma on its own, to extend the list */
,
/* Must be the last in the enum */
@@ -165,22 +163,21 @@ struct kbase_ktrace_msg {
};
struct kbase_ktrace {
- spinlock_t lock;
- u16 first_out;
- u16 next_in;
+ spinlock_t lock;
+ u16 first_out;
+ u16 next_in;
struct kbase_ktrace_msg *rbuf;
};
-
static inline void kbase_ktrace_compiletime_asserts(void)
{
/* See also documentation of enum kbase_ktrace_code */
compiletime_assert(sizeof(kbase_ktrace_code_t) == sizeof(unsigned long long) ||
- KBASE_KTRACE_CODE_COUNT <= (1ull << (sizeof(kbase_ktrace_code_t) * BITS_PER_BYTE)),
- "kbase_ktrace_code_t not wide enough for KBASE_KTRACE_CODE_COUNT");
+ KBASE_KTRACE_CODE_COUNT <=
+ (1ull << (sizeof(kbase_ktrace_code_t) * BITS_PER_BYTE)),
+ "kbase_ktrace_code_t not wide enough for KBASE_KTRACE_CODE_COUNT");
compiletime_assert((KBASE_KTRACE_FLAG_BACKEND_ALL & KBASE_KTRACE_FLAG_COMMON_ALL) == 0,
- "KTrace backend flags intersect with KTrace common flags");
-
+ "KTrace backend flags intersect with KTrace common flags");
}
#endif /* KBASE_KTRACE_TARGET_RBUF */
diff --git a/mali_kbase/debug/mali_kbase_debug_ktrace_internal.h b/mali_kbase/debug/mali_kbase_debug_ktrace_internal.h
index ba93f29..6c8e0ab 100644
--- a/mali_kbase/debug/mali_kbase_debug_ktrace_internal.h
+++ b/mali_kbase/debug/mali_kbase_debug_ktrace_internal.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2020-2021 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2020-2023 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
@@ -53,9 +53,8 @@ void kbasep_ktrace_backend_format_header(char *buffer, int sz, s32 *written);
* %KBASE_KTRACE_FLAG_BACKEND clear. The backend must handle that setting
* appropriately.
*/
-void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg,
- char *buffer, int sz, s32 *written);
-
+void kbasep_ktrace_backend_format_msg(struct kbase_ktrace_msg *trace_msg, char *buffer, int sz,
+ s32 *written);
/**
* kbasep_ktrace_reserve - internal function to reserve space for a ktrace
@@ -80,10 +79,9 @@ struct kbase_ktrace_msg *kbasep_ktrace_reserve(struct kbase_ktrace *ktrace);
*
* The common part includes the mandatory parts of the backend part
*/
-void kbasep_ktrace_msg_init(struct kbase_ktrace *ktrace,
- struct kbase_ktrace_msg *trace_msg, enum kbase_ktrace_code code,
- struct kbase_context *kctx, kbase_ktrace_flag_t flags,
- u64 info_val);
+void kbasep_ktrace_msg_init(struct kbase_ktrace *ktrace, struct kbase_ktrace_msg *trace_msg,
+ enum kbase_ktrace_code code, struct kbase_context *kctx,
+ kbase_ktrace_flag_t flags, u64 info_val);
#endif /* KBASE_KTRACE_TARGET_RBUF */
diff --git a/mali_kbase/debug/mali_kbase_debug_linux_ktrace.h b/mali_kbase/debug/mali_kbase_debug_linux_ktrace.h
index 1b95306..8128eae 100644
--- a/mali_kbase/debug/mali_kbase_debug_linux_ktrace.h
+++ b/mali_kbase/debug/mali_kbase_debug_linux_ktrace.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
*
- * (C) COPYRIGHT 2014, 2018, 2020-2022 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2014-2023 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
@@ -29,30 +29,22 @@
#if KBASE_KTRACE_TARGET_FTRACE
-DECLARE_EVENT_CLASS(mali_add_template,
- TP_PROTO(struct kbase_context *kctx, u64 info_val),
- TP_ARGS(kctx, info_val),
- TP_STRUCT__entry(
- __field(pid_t, kctx_tgid)
- __field(u32, kctx_id)
- __field(u64, info_val)
- ),
- TP_fast_assign(
- __entry->kctx_id = (kctx) ? kctx->id : 0u;
- __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
- __entry->info_val = info_val;
- ),
- TP_printk("kctx=%d_%u info=0x%llx", __entry->kctx_tgid,
- __entry->kctx_id, __entry->info_val)
-);
+DECLARE_EVENT_CLASS(mali_add_template, TP_PROTO(struct kbase_context *kctx, u64 info_val),
+ TP_ARGS(kctx, info_val),
+ TP_STRUCT__entry(__field(pid_t, kctx_tgid) __field(u32, kctx_id)
+ __field(u64, info_val)),
+ TP_fast_assign(__entry->kctx_id = (kctx) ? kctx->id : 0u;
+ __entry->kctx_tgid = (kctx) ? kctx->tgid : 0;
+ __entry->info_val = info_val;),
+ TP_printk("kctx=%d_%u info=0x%llx", __entry->kctx_tgid, __entry->kctx_id,
+ __entry->info_val));
/* DEFINE_MALI_ADD_EVENT is available also to backends for backend-specific
* simple trace codes
*/
-#define DEFINE_MALI_ADD_EVENT(name) \
-DEFINE_EVENT(mali_add_template, mali_##name, \
- TP_PROTO(struct kbase_context *kctx, u64 info_val), \
- TP_ARGS(kctx, info_val))
+#define DEFINE_MALI_ADD_EVENT(name) \
+ DEFINE_EVENT(mali_add_template, mali_##name, \
+ TP_PROTO(struct kbase_context *kctx, u64 info_val), TP_ARGS(kctx, info_val))
DEFINE_MALI_ADD_EVENT(CORE_CTX_DESTROY);
DEFINE_MALI_ADD_EVENT(CORE_CTX_HWINSTR_TERM);
DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ);
@@ -98,7 +90,7 @@ DEFINE_MALI_ADD_EVENT(PM_WAKE_WAITERS);
DEFINE_MALI_ADD_EVENT(PM_POWEROFF_WAIT_WQ);
DEFINE_MALI_ADD_EVENT(PM_RUNTIME_SUSPEND_CALLBACK);
DEFINE_MALI_ADD_EVENT(PM_RUNTIME_RESUME_CALLBACK);
-#define KBASEP_L2_STATE(n) DEFINE_MALI_ADD_EVENT(PM_L2_ ## n);
+#define KBASEP_L2_STATE(n) DEFINE_MALI_ADD_EVENT(PM_L2_##n);
#include "backend/gpu/mali_kbase_pm_l2_states.h"
#undef KBASEP_L2_STATE
DEFINE_MALI_ADD_EVENT(SCHED_RETAIN_CTX_NOLOCK);