Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755281AbbGFOFL (ORCPT ); Mon, 6 Jul 2015 10:05:11 -0400 Received: from casper.infradead.org ([85.118.1.10]:45467 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751301AbbGFOFJ (ORCPT ); Mon, 6 Jul 2015 10:05:09 -0400 Date: Mon, 6 Jul 2015 16:05:03 +0200 From: Peter Zijlstra To: Max Filippov Cc: "linux-xtensa@linux-xtensa.org" , LKML , Chris Zankel , Marc Gauthier , Paul Mackerras , Ingo Molnar , Arnaldo Carvalho de Melo Subject: Re: [PATCH 7/8] xtensa: implement counting and sampling perf events Message-ID: <20150706140503.GJ3644@twins.programming.kicks-ass.net> References: <1436189569-28802-1-git-send-email-jcmvbkbc@gmail.com> <1436189569-28802-8-git-send-email-jcmvbkbc@gmail.com> <20150706134708.GI3644@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1850 Lines: 43 On Mon, Jul 06, 2015 at 04:56:09PM +0300, Max Filippov wrote: > On Mon, Jul 6, 2015 at 4:47 PM, Peter Zijlstra wrote: > > On Mon, Jul 06, 2015 at 04:32:48PM +0300, Max Filippov wrote: > >> +static int __init xtensa_pmu_init(void) > >> +{ > >> + int ret; > >> + int irq = irq_create_mapping(NULL, XCHAL_PROFILING_INTERRUPT); > > > > Does this platform have interrupt priorities which you can partially > > mask in order to create NMI like behaviour? > > Not sure what you mean by "NMI like". There's a number of archs where we implement NMIs by having local_irq_disable() only disable part of the interrupt priority range and making sure all 'normal' IRQs are mapped in that priority range. We then map our NMI handlers to a priority above the 'normal' range, such that these interrupts can indeed happen when interrupts are 'disabled. See for example: b4f4372f96e0 ("sparc64: Make %pil level 15 a pseudo-NMI.") 0c25e9e6cbe7 ("sparc64: Adjust __raw_local_irq_save() to cooperate in NMIs.") c011f80ba091 ("sparc64: Add some more commentary to __raw_local_irq_save()") > Interrupt priorities are fixed in the current xtensa architecture, and > we can in theory mask certain level and below, but practically we > always mask all low- and medium- level interrupts. > > Also we currently can't have handlers for high priority interrupts written in C. Why not? Surely this can be cured with an assembly stub? The advantage of having NMIs is that profiling information for the kernel becomes much more useful. Without this local_irq_enable() will be a very 'hot' function. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/