From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756716AbdKDNZP (ORCPT ); Sat, 4 Nov 2017 09:25:15 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40402 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752103AbdKDNZN (ORCPT ); Sat, 4 Nov 2017 09:25:13 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E9B5DC058EB0 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jolsa@redhat.com Date: Sat, 4 Nov 2017 14:24:59 +0100 From: Jiri Olsa To: Megha Dey Cc: x86@kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, andriy.shevchenko@linux.intel.com, kstewart@linuxfoundation.org, yu-cheng.yu@intel.com, len.brown@intel.com, gregkh@linuxfoundation.org, peterz@infradead.org, acme@kernel.org, alexander.shishkin@linux.intel.com, namhyung@kernel.org, vikas.shivappa@linux.intel.com, pombredanne@nexb.com, me@kylehuey.com, bp@suse.de, grzegorz.andrejczuk@intel.com, tony.luck@intel.com, corbet@lwn.net, ravi.v.shankar@intel.com, megha.dey@intel.com Subject: Re: [PATCH V0 2/3] perf/x86/intel/bm.c: Add Intel Branch Monitoring support Message-ID: <20171104132459.GA8454@krava> References: <1509732006-5917-1-git-send-email-megha.dey@linux.intel.com> <1509732006-5917-3-git-send-email-megha.dey@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1509732006-5917-3-git-send-email-megha.dey@linux.intel.com> User-Agent: Mutt/1.9.1 (2017-09-22) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Sat, 04 Nov 2017 13:25:13 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 03, 2017 at 11:00:05AM -0700, Megha Dey wrote: SNIP > + > +static int intel_bm_event_nmi_handler(unsigned int cmd, struct pt_regs *regs) > +{ > + struct perf_event *event; > + union bm_detect_status stat; > + struct perf_sample_data data; > + int i; > + unsigned long x; > + > + rdmsrl(BR_DETECT_STATUS_MSR, stat.raw); > + > + if (stat.event) { > + wrmsrl(BR_DETECT_STATUS_MSR, 0); > + apic_write(APIC_LVTPC, APIC_DM_NMI); > + /* > + * Issue wake-up to corrresponding polling event > + */ > + x = stat.ctrl_hit; > + for_each_set_bit(i, &x, bm_num_counters) { > + event = bm_counter_owner[i]; > + perf_sample_data_init(&data, 0, event->hw.last_period); > + perf_event_overflow(event, &data, regs); hum, it's non sampling events only right? then you don't need any of the perf_sample_data stuff.. the perf_event_overflow call is basicaly nop > + local64_inc(&event->count); > + atomic_set(&event->hw.bm_poll, POLLIN); > + event->pending_wakeup = 1; > + irq_work_queue(&event->pending); also this is for sampling events only seems like you only want to increment the event->count in here thanks, jirka > + } > + return NMI_HANDLED; > + } > + return NMI_DONE; > +} SNIP