From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751955AbdGMMEG convert rfc822-to-8bit (ORCPT ); Thu, 13 Jul 2017 08:04:06 -0400 Received: from ozlabs.org ([103.22.144.67]:57519 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751165AbdGMMEE (ORCPT ); Thu, 13 Jul 2017 08:04:04 -0400 From: Michael Ellerman To: Jin Yao , acme@kernel.org, jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com, Jin Yao Subject: Re: [PATCH v8 1/7] perf/core: Define the common branch type classification In-Reply-To: <1499947459-4527-2-git-send-email-yao.jin@linux.intel.com> References: <1499947459-4527-1-git-send-email-yao.jin@linux.intel.com> <1499947459-4527-2-git-send-email-yao.jin@linux.intel.com> User-Agent: Notmuch/0.21 (https://notmuchmail.org) Date: Thu, 13 Jul 2017 22:04:02 +1000 Message-ID: <87fue0k0gd.fsf@concordia.ellerman.id.au> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Jin Yao writes: > It is often useful to know the branch types while analyzing branch > data. For example, a call is very different from a conditional branch. > > Currently we have to look it up in binary while the binary may later > not be available and even the binary is available but user has to take > some time. It is very useful for user to check it directly in perf > report. > > Perf already has support for disassembling the branch instruction > to get the x86 branch type. > > To keep consistent on kernel and userspace and make the classification > more common, the patch adds the common branch type classification > in perf_event.h. > > The patch only defines a minimum but most common set of branch types. > > PERF_BR_UNKNOWN : unknown > PERF_BR_COND :conditional > PERF_BR_UNCOND : unconditional > PERF_BR_IND : indirect > PERF_BR_CALL : function call > PERF_BR_IND_CALL : indirect function call > PERF_BR_RET : function return > PERF_BR_SYSCALL : syscall > PERF_BR_SYSRET : syscall return > PERF_BR_COND_CALL : conditional function call > PERF_BR_COND_RET : conditional function return > > The patch also adds a new field type (4 bits) in perf_branch_entry > to record the branch type. > > Since the disassembling of branch instruction needs some overhead, > a new PERF_SAMPLE_BRANCH_TYPE_SAVE is introduced to indicate if it > needs to disassemble the branch instruction and record the branch > type. Acked-by: Michael Ellerman (powerpc) If you like. cheers