Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3106663imu; Mon, 19 Nov 2018 10:42:23 -0800 (PST) X-Google-Smtp-Source: AJdET5fh3GCEm+fTfgVCPvzUj1fQC8r6GC897rQpUVhHP/aD1bgGVRuAxSSmK8kzplbypsOh6QNv X-Received: by 2002:a62:9712:: with SMTP id n18-v6mr777852pfe.69.1542652943170; Mon, 19 Nov 2018 10:42:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542652943; cv=none; d=google.com; s=arc-20160816; b=QDrsf+HXDPdrflAswS8pjTivXJRHNxSr0v6i+IgJ9WRvKe5mhzhbUCjLeQZ1Z+DPGP ETwWk/W7G2h2qPcxJxgh/EJqfeLh0aytfEAS7UG9wQKVUKGqUpW2kRu3ivs1RSKoXctv S6Tzuczj1WP/Egsnc0eSDPXnlcUwJjoU4gCeeG4c5TSv36OdnT93G9CsnQ7z1ifMdIUA 7mKvHWnUk8W1oYgPZATAmb7WOurlWeV8p/uJ7nYpC3Nh1aHyVYAIXobYC1Ofqqgi6fM7 EdH79dL75T9usioljG2j7jZDoGArajN5dEYnzgw66wnCdxrQq5+/3lNZN49CC2/Rag9z ntTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=eIcw0lL3IDo+N9UxlZNIyoRxkg0REfq/sS9FUluCqJI=; b=xTHLteK6vvPJ+dVlkuuG5uler/swJWFN6AUWLVk1+GOOMHnMj8N/3DEV4776p7tE/O PlIZVF+s1Jsg4KWL349i0JZh5YxEn52D9yEV7NwxQKDgo7OinC+eqeALNezXnMbfExBJ 43HpNjgusk4ycO2CZyppbiILh//Qq+4KoRLcysHFVsSw7Dc0jud5lUNRP2bHGyGbThMN CeYyicERM03B1TUwAoHlvO2BArWtDfDeL1i34eCST4D2lf/LApMqwBbC2LwbEzrn+dDK E5em6cUHq3KfmUUNzQ32DugyaOwplB26+1722AtpO6LIUvZJzlufW5BQkn6vWXxUER4I Upgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vWWfGXxj; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r68-v6si39049469pfa.69.2018.11.19.10.42.04; Mon, 19 Nov 2018 10:42:23 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=vWWfGXxj; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731576AbeKTC7Q (ORCPT + 99 others); Mon, 19 Nov 2018 21:59:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:58538 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730350AbeKTC7P (ORCPT ); Mon, 19 Nov 2018 21:59:15 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5EFF6208E3; Mon, 19 Nov 2018 16:35:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542645306; bh=0JiSoeQHW97/MP+IElaBHz57fRuPxx4Al1zSwvOsb4A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vWWfGXxjdo3P/TG+0eQ9MGC5Bw3XkD3THl5g2sWLQicgLwIOMo+ws4pUvOCnDY3dG vAR1NVaXNJXH0LPAXzb4plJuYmpgJ5LB9Xk+3DobyB4XYpbmMixFL5fmkz731w7MRi dPnXiocXC6e878p9cLxesmwIpJzHbMwlVqEbg3Xc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Adrian Hunter , Jiri Olsa , Andi Kleen , "David S. Miller" , Leo Yan , Mathieu Poirier , Arnaldo Carvalho de Melo Subject: [PATCH 4.19 115/205] perf intel-pt/bts: Calculate cpumode for synthesized samples Date: Mon, 19 Nov 2018 17:27:02 +0100 Message-Id: <20181119162635.279260704@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181119162616.586062722@linuxfoundation.org> References: <20181119162616.586062722@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Adrian Hunter commit 5d4f0edaa3ac4f1844ed7c64cd2bae6f1912bac5 upstream. In the absence of a fallback, samples must provide a correct cpumode for the 'ip'. Do that now there is no fallback. Signed-off-by: Adrian Hunter Reviewed-by: Jiri Olsa Cc: Andi Kleen Cc: David S. Miller Cc: Leo Yan Cc: Mathieu Poirier Cc: stable@vger.kernel.org # 4.19 Link: http://lkml.kernel.org/r/20181031091043.23465-6-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Greg Kroah-Hartman --- tools/perf/util/intel-bts.c | 17 ++++++++++++----- tools/perf/util/intel-pt.c | 22 +++++++++++++--------- 2 files changed, 25 insertions(+), 14 deletions(-) --- a/tools/perf/util/intel-bts.c +++ b/tools/perf/util/intel-bts.c @@ -269,6 +269,13 @@ static int intel_bts_do_fix_overlap(stru return 0; } +static inline u8 intel_bts_cpumode(struct intel_bts *bts, uint64_t ip) +{ + return machine__kernel_ip(bts->machine, ip) ? + PERF_RECORD_MISC_KERNEL : + PERF_RECORD_MISC_USER; +} + static int intel_bts_synth_branch_sample(struct intel_bts_queue *btsq, struct branch *branch) { @@ -281,12 +288,8 @@ static int intel_bts_synth_branch_sample bts->num_events++ <= bts->synth_opts.initial_skip) return 0; - event.sample.header.type = PERF_RECORD_SAMPLE; - event.sample.header.misc = PERF_RECORD_MISC_USER; - event.sample.header.size = sizeof(struct perf_event_header); - - sample.cpumode = PERF_RECORD_MISC_USER; sample.ip = le64_to_cpu(branch->from); + sample.cpumode = intel_bts_cpumode(bts, sample.ip); sample.pid = btsq->pid; sample.tid = btsq->tid; sample.addr = le64_to_cpu(branch->to); @@ -298,6 +301,10 @@ static int intel_bts_synth_branch_sample sample.insn_len = btsq->intel_pt_insn.length; memcpy(sample.insn, btsq->intel_pt_insn.buf, INTEL_PT_INSN_BUF_SZ); + event.sample.header.type = PERF_RECORD_SAMPLE; + event.sample.header.misc = sample.cpumode; + event.sample.header.size = sizeof(struct perf_event_header); + if (bts->synth_opts.inject) { event.sample.header.size = bts->branches_event_size; ret = perf_event__synthesize_sample(&event, --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -407,6 +407,13 @@ intel_pt_cache_lookup(struct dso *dso, s return auxtrace_cache__lookup(dso->auxtrace_cache, offset); } +static inline u8 intel_pt_cpumode(struct intel_pt *pt, uint64_t ip) +{ + return ip >= pt->kernel_start ? + PERF_RECORD_MISC_KERNEL : + PERF_RECORD_MISC_USER; +} + static int intel_pt_walk_next_insn(struct intel_pt_insn *intel_pt_insn, uint64_t *insn_cnt_ptr, uint64_t *ip, uint64_t to_ip, uint64_t max_insn_cnt, @@ -429,10 +436,7 @@ static int intel_pt_walk_next_insn(struc if (to_ip && *ip == to_ip) goto out_no_cache; - if (*ip >= ptq->pt->kernel_start) - cpumode = PERF_RECORD_MISC_KERNEL; - else - cpumode = PERF_RECORD_MISC_USER; + cpumode = intel_pt_cpumode(ptq->pt, *ip); thread = ptq->thread; if (!thread) { @@ -1053,15 +1057,11 @@ static void intel_pt_prep_b_sample(struc union perf_event *event, struct perf_sample *sample) { - event->sample.header.type = PERF_RECORD_SAMPLE; - event->sample.header.misc = PERF_RECORD_MISC_USER; - event->sample.header.size = sizeof(struct perf_event_header); - if (!pt->timeless_decoding) sample->time = tsc_to_perf_time(ptq->timestamp, &pt->tc); - sample->cpumode = PERF_RECORD_MISC_USER; sample->ip = ptq->state->from_ip; + sample->cpumode = intel_pt_cpumode(pt, sample->ip); sample->pid = ptq->pid; sample->tid = ptq->tid; sample->addr = ptq->state->to_ip; @@ -1070,6 +1070,10 @@ static void intel_pt_prep_b_sample(struc sample->flags = ptq->flags; sample->insn_len = ptq->insn_len; memcpy(sample->insn, ptq->insn, INTEL_PT_INSN_BUF_SZ); + + event->sample.header.type = PERF_RECORD_SAMPLE; + event->sample.header.misc = sample->cpumode; + event->sample.header.size = sizeof(struct perf_event_header); } static int intel_pt_inject_event(union perf_event *event,