Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2663682ybb; Sun, 5 Apr 2020 13:15:39 -0700 (PDT) X-Google-Smtp-Source: APiQypK2R0CKmXmqWgdNYraR7KA1SWBoztEHopjuW+8r6IkLcx9UsOXp5RQH1Pl4W/34BZTsu8sq X-Received: by 2002:aca:f288:: with SMTP id q130mr10826427oih.33.1586117739219; Sun, 05 Apr 2020 13:15:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586117739; cv=none; d=google.com; s=arc-20160816; b=dEIj9M0nKOZ7+GkAsEWuMpy96cnTujO516Nm56EvsZFdT4au8f79+rPdIKdqbBQQ4c q6pmwaQGZdNCVNQU+r6ycIXQ1yqOu9NXjxWYSpqTPrtNB9hl9tnjfF78QDtnETG8qKV3 3a1gthPJelHJynOHink1Pr2rYwPIWpzQrzhjX9cdRpIXzmkkuqUuGaup59RvQNiWnnGk vjd2kgcsaQdXJhmNBWjn44V/xGsSs9JhxQtxalQ0rhK1CoE7BmR0UZeIZAwaJ1CIxH3P hve/gJH9WohRR2r64xWfMj2yrsI1jDMnlmYqnMMBQYaZcfNB2UV4+1Z0DmW4qNwVMKhf 31Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:organization:references:in-reply-to :message-id:date:subject:cc:to:from:ironport-sdr:ironport-sdr; bh=9tofeRcUViaBQnzo+l77iuvpWJ5tydAMMyCi1UVNakc=; b=r9zpmBxX03LHJwAzad6b+rimfPFtOKw2RZB4714mtTAJ/9o/hc5doEyg6y3fwnsYKk NtKlK3sIEytM1oPyaN8m5OFQ+GG+4R9wU+Yom1czfUwpYZmq2vhPSHnDtPCmBICFQb9x dNy76eNkb/FmXsJ4fMqDF50Uun7gnB2G/ueudU6dzrt+ylzbiSlvazZufRAfWQP0uohx ocSjwhlHQEcg3hQa16jzx1xlL8HNac8GJ63ijlDKH6mlcu8HSHrrrlad8hVl8oNpB2vK lPrn6UqGO8ld3XqDVHq8nhOeQgHDChEno+2eEJkwMp2hUSLWPW6ZGH3T73uPZy/Xm2yC AHAA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p187si6923703oop.28.2020.04.05.13.15.27; Sun, 05 Apr 2020 13:15:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727931AbgDEUOr (ORCPT + 99 others); Sun, 5 Apr 2020 16:14:47 -0400 Received: from mga01.intel.com ([192.55.52.88]:62225 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726887AbgDEUOq (ORCPT ); Sun, 5 Apr 2020 16:14:46 -0400 IronPort-SDR: QQzPGs4RAIt/ZjKnr9bXMcfZRVhD7AXusoE6514rE6dehpCNuGOv2/lvZy4GJAC5R/Zi4y9W0O p22P/f/q1FqQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2020 13:14:46 -0700 IronPort-SDR: XMQuICm0v+92zGuPPnSy57QzteL6l/8dGmledHxPFvtDu2now0KasYefybK/cjRbNQPnQdGk+W O/MnW5/JIjZg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,348,1580803200"; d="scan'208";a="329688414" Received: from ahunter-desktop.fi.intel.com ([10.237.72.87]) by orsmga001.jf.intel.com with ESMTP; 05 Apr 2020 13:14:42 -0700 From: Adrian Hunter To: Peter Zijlstra Cc: Ingo Molnar , Masami Hiramatsu , Steven Rostedt , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Mark Rutland , Alexander Shishkin , Mathieu Poirier , Leo Yan , Arnaldo Carvalho de Melo , Jiri Olsa , linux-kernel@vger.kernel.org Subject: [PATCH V6 07/15] ftrace: Add perf ksymbol events for ftrace trampolines Date: Sun, 5 Apr 2020 23:13:19 +0300 Message-Id: <20200405201327.7332-8-adrian.hunter@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200405201327.7332-1-adrian.hunter@intel.com> References: <20200405201327.7332-1-adrian.hunter@intel.com> Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Symbols are needed for tools to describe instruction addresses. Pages allocated for ftrace's purposes need symbols to be created for them. Add such symbols to be visible via perf ksymbol events. Signed-off-by: Adrian Hunter --- include/uapi/linux/perf_event.h | 2 +- kernel/trace/ftrace.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h index e1a4179144a1..52ca2093831c 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -1051,7 +1051,7 @@ enum perf_record_ksymbol_type { PERF_RECORD_KSYMBOL_TYPE_BPF = 1, /* * Out of line code such as kprobe-replaced instructions or optimized - * kprobes. + * kprobes or ftrace trampolines. */ PERF_RECORD_KSYMBOL_TYPE_OOL = 2, PERF_RECORD_KSYMBOL_TYPE_MAX /* non-ABI */ diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 4e1c2f0bea76..398d58b8ffa5 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -2791,8 +2791,13 @@ static void ftrace_remove_trampoline_from_kallsyms(struct ftrace_ops *ops) static void ftrace_trampoline_free(struct ftrace_ops *ops) { if (ops && (ops->flags & FTRACE_OPS_FL_ALLOC_TRAMP) && - ops->trampoline) + ops->trampoline) { + perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_OOL, + ops->trampoline, ops->trampoline_size, + true, FTRACE_TRAMPOLINE_SYM); + /* Remove from kallsyms after the perf events */ ftrace_remove_trampoline_from_kallsyms(ops); + } arch_ftrace_trampoline_free(ops); } @@ -6805,8 +6810,13 @@ static void ftrace_update_trampoline(struct ftrace_ops *ops) arch_ftrace_update_trampoline(ops); if (ops->trampoline && ops->trampoline != trampoline && - (ops->flags & FTRACE_OPS_FL_ALLOC_TRAMP)) + (ops->flags & FTRACE_OPS_FL_ALLOC_TRAMP)) { + /* Add to kallsyms before the perf events */ ftrace_add_trampoline_to_kallsyms(ops); + perf_event_ksymbol(PERF_RECORD_KSYMBOL_TYPE_OOL, + ops->trampoline, ops->trampoline_size, false, + FTRACE_TRAMPOLINE_SYM); + } } void ftrace_init_trace_array(struct trace_array *tr) -- 2.17.1