Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp181786pxx; Mon, 26 Oct 2020 06:20:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzAWRAn3KWWDJwAGlURPjWMnlbazVQFEslD6ZuAhxCZK4IFH4Jr2p2yzuD9iow1U3y+jFTL X-Received: by 2002:a17:906:1a10:: with SMTP id i16mr15343469ejf.162.1603718412723; Mon, 26 Oct 2020 06:20:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603718412; cv=none; d=google.com; s=arc-20160816; b=xpkLxKXaathIKtMozn0twRbNk1jfzjVq2UydNakHQFKkwvsSgq/OUr9kcxx/6ezBVI L4UIh4P5Vi4ojub3ZohAfkc/fBLPWN2yLlQbL9nnnBvDovFq6py39/dUNH51rTGAZ1Cz iP5gYJcZ5Qx9LSzy57hTvlSP+6RV1M0VYeyS9j5L2Ncbv8JTzkdRz1M2tZqCvMsdsLGe sFYtRLNx9EFAsbt16i/PMmy9Ksd3ki1qGvTIO6HtHRl4bNvaMv/Iz82/g3qn/qwzO20d v3R1hUgAjj+OlhldgApjMSg2W7RCc0owpJ/8cmpLuhrpIMd10eQ0cvI9b6La0L++NLWv 0kFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=bCVyxymc+h4ol1nIp+y+E1AA2Iip7/gMdrV0dKCNGeQ=; b=ukz/1y/9xXHppHyuC4lVhlRiSND8XqBSTUto5lFNzJDFUAszqYvMxLjz2LOw+IYxlZ 93Fzmh9RLKs/9WPs/igMyYcTOI9NXWiV7is4iftxixH8dQg8mKmCi1NaTSY2Aw8utyzg bEopnZoz2o+CxrPa9ZFPA4zGOCyi03C+tmn36jHUfgACEIqxwR4JbKZZaSYRmZ6oIcDJ zhmQx5rQ91FW4OeGwk2Oaz6qb72OGc3H/+wv+qAxPYG5/CwxbG1ooPrGvP6M2xSQvgiH mEfUyG+/41aVoNLij7mxJOZ1lmaDuRpyjlkpvWTVca3wW58PdIMWLdF7v6KWVmuNm0wm 4GDw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=sony.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b20si7136259ejq.608.2020.10.26.06.19.50; Mon, 26 Oct 2020 06:20:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=sony.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1772892AbgJZMFW (ORCPT + 99 others); Mon, 26 Oct 2020 08:05:22 -0400 Received: from jptosegrel01.sonyericsson.com ([124.215.201.71]:2659 "EHLO JPTOSEGREL01.sonyericsson.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1770973AbgJZMFV (ORCPT ); Mon, 26 Oct 2020 08:05:21 -0400 Subject: Re: [RFC PATCH 0/6] Sleepable tracepoints To: Michael Jeanson , CC: , Steven Rostedt , Peter Zijlstra , Alexei Starovoitov , Yonghong Song , "Paul E . McKenney" , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Joel Fernandes , References: <20201023195352.26269-1-mjeanson@efficios.com> From: peter enderborg Message-ID: <083f3ffa-3395-d66b-bb8b-d6a3fd7f6177@sony.com> Date: Mon, 26 Oct 2020 13:05:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20201023195352.26269-1-mjeanson@efficios.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Language: en-GB X-SEG-SpamProfiler-Analysis: v=2.3 cv=EbK2v8uC c=1 sm=1 tr=0 a=CGteIMthFL3x4Fb36c5kWA==:117 a=IkcTkHD0fZMA:10 a=afefHYAZSVUA:10 a=meVymXHHAAAA:8 a=JfrnYn6hAAAA:8 a=VwQbUJbxAAAA:8 a=FOH2dFAWAAAA:8 a=20KFwNOVAAAA:8 a=7CQSdrXTAAAA:8 a=QyXUC8HyAAAA:8 a=qqdB56dbAAAA:8 a=3C5PsIaMDjZkp0q5FAMA:9 a=QEXdDO2ut3YA:10 a=2JgSa4NbpEOStq-L5dxp:22 a=1CNFftbPRP8L7MoqJWF3:22 a=AjGcO6oz07-iQ99wixmX:22 a=i3VuKzQdj-NEYjvDI-p3:22 a=a-qgeE7W1pNrGK8U0ZQC:22 a=ccaIO3UgQCpleZvgly2v:22 X-SEG-SpamProfiler-Score: 0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/23/20 9:53 PM, Michael Jeanson wrote: > When invoked from system call enter/exit instrumentation, accessing > user-space data is a common use-case for tracers. However, tracepoints > currently disable preemption around iteration on the registered > tracepoint probes and invocation of the probe callbacks, which prevents > tracers from handling page faults. > > Extend the tracepoint and trace event APIs to allow specific tracer > probes to take page faults. Adapt ftrace, perf, and ebpf to allow being > called from sleepable context, and convert the system call enter/exit > instrumentation to sleepable tracepoints. Will this not be a problem for analyse of the trace? It get two relevant times, one it when it is called and one when it returns. It makes things harder to correlate in what order things happen. And handling of tracing of contexts that already are not preamptable? Eg the same tracepoint are used in different places and contexts. > This series only implements the tracepoint infrastructure required to > allow tracers to handle page faults. Modifying each tracer to handle > those page faults would be a next step after we all agree on this piece > of instrumentation infrastructure. > > This patchset is base on v5.9.1. > > Cc: Steven Rostedt (VMware) > Cc: Peter Zijlstra > Cc: Alexei Starovoitov > Cc: Yonghong Song > Cc: Paul E. McKenney > Cc: Ingo Molnar > Cc: Arnaldo Carvalho de Melo > Cc: Mark Rutland > Cc: Alexander Shishkin > Cc: Jiri Olsa > Cc: Namhyung Kim > Cc: Joel Fernandes (Google) > Cc: bpf@vger.kernel.org > > Mathieu Desnoyers (1): > tracing: use sched-RCU instead of SRCU for rcuidle tracepoints > > Michael Jeanson (5): > tracing: introduce sleepable tracepoints > tracing: ftrace: add support for sleepable tracepoints > tracing: bpf-trace: add support for sleepable tracepoints > tracing: perf: add support for sleepable tracepoints > tracing: convert sys_enter/exit to sleepable tracepoints > > include/linux/tracepoint-defs.h | 11 ++++ > include/linux/tracepoint.h | 104 +++++++++++++++++++++----------- > include/trace/bpf_probe.h | 23 ++++++- > include/trace/define_trace.h | 7 +++ > include/trace/events/syscalls.h | 4 +- > include/trace/perf.h | 26 ++++++-- > include/trace/trace_events.h | 79 ++++++++++++++++++++++-- > init/Kconfig | 1 + > kernel/trace/bpf_trace.c | 5 +- > kernel/trace/trace_events.c | 15 ++++- > kernel/trace/trace_syscalls.c | 68 +++++++++++++-------- > kernel/tracepoint.c | 104 +++++++++++++++++++++++++------- > 12 files changed, 351 insertions(+), 96 deletions(-) >