From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754859AbcFGKEr (ORCPT ); Tue, 7 Jun 2016 06:04:47 -0400 Received: from mga04.intel.com ([192.55.52.120]:37710 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754309AbcFGKEq (ORCPT ); Tue, 7 Jun 2016 06:04:46 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,432,1459839600"; d="scan'208";a="996835347" From: Alexander Shishkin To: Chunyan Zhang , rostedt@goodmis.org, mathieu.poirier@linaro.org, mingo@redhat.com Cc: mike.leach@arm.com, tor@ti.com, maxime.coquelin@st.com, philippe.langlais@st.com, nicolas.guion@st.com, zhang.lyra@gmail.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [RFC PATCH 2/4] trace: Introduce an output interface from ftrace to STM In-Reply-To: <1464779939-24986-3-git-send-email-zhang.chunyan@linaro.org> References: <1464779939-24986-1-git-send-email-zhang.chunyan@linaro.org> <1464779939-24986-3-git-send-email-zhang.chunyan@linaro.org> User-Agent: Notmuch/0.21 (http://notmuchmail.org) Emacs/24.5.1 (x86_64-pc-linux-gnu) Date: Tue, 07 Jun 2016 13:04:41 +0300 Message-ID: <87inxlqpqe.fsf@ashishki-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Chunyan Zhang writes: > This patch is introducing a new function to print Ftrace messages > to STM buffer when the traces happen. In order to reduce the > effect on timing overhead as much as possible, only the current > function and its parent ip address will be recorded into STM in > this patch. This idea was first introduced by Philippe Langlais > at ST-Microelectronics a long time ago[1]. So why is this useful? The value of trace points is in their payload. > +#define STM_FTRACE_CHAN 0 This is why we have the stm master/channel allocation policy, which should already assign a channel to your stm_source device when it is linked to an stm device. Also, why is this a separate compilation unit from the stm_ftrace.o? > + > +void ftrace_stm_func(unsigned long ip, unsigned long parent_ip) > +{ > + unsigned long ip_array[2] = {ip, parent_ip}; > + > + stm_ftrace_write((char *)ip_array, sizeof(unsigned long) * 2, > + STM_FTRACE_CHAN); > +} > +EXPORT_SYMBOL_GPL(ftrace_stm_func); > diff --git a/kernel/trace/trace_output_stm.h b/kernel/trace/trace_output_stm.h > new file mode 100644 > index 0000000..fc3f989 > --- /dev/null > +++ b/kernel/trace/trace_output_stm.h > @@ -0,0 +1,14 @@ > +#ifndef __TRACE_OUTPUT_STM_H > +#define __TRACE_OUTPUT_STM_H > + > +#include > + > +#ifdef CONFIG_STM_FTRACE > +extern void stm_ftrace_write(const char *buf, unsigned int len, > + unsigned int chan); > +extern void ftrace_stm_func(unsigned long ip, unsigned long parent_ip); > +#else > +static inline void ftrace_stm_func(unsigned long ip, unsigned long parent_ip) {} > +#endif > + > +#endif /* __TRACE_OUTPUT_STM_H */ > -- > 1.9.1