From 74bc4bea372d594ff51cfa8201a78116f9775217 Mon Sep 17 00:00:00 2001 From: Karol Trzcinski Date: Fri, 22 May 2020 09:11:02 +0200 Subject: [PATCH] trace: Put global trace context entries to separate section To allow changing trace level of global elements, like system agent or component driver, than it must be possible to find corresponding trace context. It is the first step to allow iterating over the trace context entries and find what we are looking for. Linker variables _trace_ctx_start and _trace_ctx_end will be needed to know this section size in runtime code. Signed-off-by: Karol Trzcinski --- src/include/sof/trace/trace.h | 8 ++++++-- src/platform/apollolake/apollolake.x.in | 3 +++ src/platform/baytrail/baytrail.x.in | 3 +++ src/platform/cannonlake/cannonlake.x.in | 3 +++ src/platform/haswell/haswell.x.in | 3 +++ src/platform/icelake/icelake.x.in | 3 +++ src/platform/imx8/imx8.x.in | 3 +++ src/platform/imx8m/imx8m.x.in | 3 +++ src/platform/suecreek/suecreek.x.in | 3 +++ src/platform/tigerlake/tigerlake.x.in | 3 +++ 10 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/include/sof/trace/trace.h b/src/include/sof/trace/trace.h index bd9d9357bfb5..86e2c7d95983 100644 --- a/src/include/sof/trace/trace.h +++ b/src/include/sof/trace/trace.h @@ -297,7 +297,11 @@ struct tr_ctx { uint32_t level; /**< Default log level */ }; -/* todo: put in a section to iterate over later while cfg log levels */ +#if defined(UNIT_TEST) +#define TRACE_CONTEXT_SECTION +#else +#define TRACE_CONTEXT_SECTION __section(".trace_ctx") +#endif /** * Declares trace context. @@ -306,7 +310,7 @@ struct tr_ctx { * @param default_log_level Default log level. */ #define DECLARE_TR_CTX(ctx_name, uuid, default_log_level) \ - struct tr_ctx ctx_name = { \ + struct tr_ctx ctx_name TRACE_CONTEXT_SECTION = { \ .uuid_p = uuid, \ .level = default_log_level, \ } diff --git a/src/platform/apollolake/apollolake.x.in b/src/platform/apollolake/apollolake.x.in index 1e67806ee737..f78cde4f77fe 100644 --- a/src/platform/apollolake/apollolake.x.in +++ b/src/platform/apollolake/apollolake.x.in @@ -446,6 +446,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_fw :sof_fw_phdr diff --git a/src/platform/baytrail/baytrail.x.in b/src/platform/baytrail/baytrail.x.in index ffdf5599253e..03ba45bd1bf4 100644 --- a/src/platform/baytrail/baytrail.x.in +++ b/src/platform/baytrail/baytrail.x.in @@ -410,6 +410,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_data :sof_data_phdr diff --git a/src/platform/cannonlake/cannonlake.x.in b/src/platform/cannonlake/cannonlake.x.in index 3359a2575ec7..5d5565470530 100644 --- a/src/platform/cannonlake/cannonlake.x.in +++ b/src/platform/cannonlake/cannonlake.x.in @@ -411,6 +411,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_fw :sof_fw_phdr diff --git a/src/platform/haswell/haswell.x.in b/src/platform/haswell/haswell.x.in index cca86c0bc1d6..7d48a1da81be 100644 --- a/src/platform/haswell/haswell.x.in +++ b/src/platform/haswell/haswell.x.in @@ -418,6 +418,9 @@ SECTIONS *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) _data_end = ABSOLUTE(.); + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); } >sof_data :sof_data_phdr .lit4 : ALIGN(4) diff --git a/src/platform/icelake/icelake.x.in b/src/platform/icelake/icelake.x.in index a81dc992daa2..52517d888c58 100644 --- a/src/platform/icelake/icelake.x.in +++ b/src/platform/icelake/icelake.x.in @@ -415,6 +415,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_fw :sof_fw_phdr diff --git a/src/platform/imx8/imx8.x.in b/src/platform/imx8/imx8.x.in index 609794b02d1f..2a1097e1a05e 100644 --- a/src/platform/imx8/imx8.x.in +++ b/src/platform/imx8/imx8.x.in @@ -374,6 +374,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_sdram0 :sof_sdram0_phdr diff --git a/src/platform/imx8m/imx8m.x.in b/src/platform/imx8m/imx8m.x.in index 3b5ebf40eb4f..2da78c628a23 100644 --- a/src/platform/imx8m/imx8m.x.in +++ b/src/platform/imx8m/imx8m.x.in @@ -374,6 +374,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_sdram0 :sof_sdram0_phdr diff --git a/src/platform/suecreek/suecreek.x.in b/src/platform/suecreek/suecreek.x.in index 24ca2e9722f5..e30cdcc73e7b 100644 --- a/src/platform/suecreek/suecreek.x.in +++ b/src/platform/suecreek/suecreek.x.in @@ -413,6 +413,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_fw :sof_fw_phdr diff --git a/src/platform/tigerlake/tigerlake.x.in b/src/platform/tigerlake/tigerlake.x.in index ed423128d805..59cf9d904a05 100644 --- a/src/platform/tigerlake/tigerlake.x.in +++ b/src/platform/tigerlake/tigerlake.x.in @@ -465,6 +465,9 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) KEEP(*(.jcr)) + _trace_ctx_start = ABSOLUTE(.); + *(.trace_ctx) + _trace_ctx_end = ABSOLUTE(.); _data_end = ABSOLUTE(.); } >sof_fw :sof_fw_phdr