Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7225299imu; Thu, 31 Jan 2019 07:01:20 -0800 (PST) X-Google-Smtp-Source: ALg8bN6tOXyCUGnv37VhHmPmB7zzQrBkEU3m3KltQFtl2DF0TuQoY4PsWXgcXjFCwQT5DgyWRWyZ X-Received: by 2002:a65:63d3:: with SMTP id n19mr32250693pgv.179.1548946880404; Thu, 31 Jan 2019 07:01:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548946880; cv=none; d=google.com; s=arc-20160816; b=RnU1YdhJGCIUh3rZBZ0NlgSUW+mYlud9RSzbbdaUeerjR304TfqoCvDZGSd3BssIed 5vPmHjXUDU/UVWE3P2sb0ahrmq1JegcAS1a9eN3tmB3yWZbWZ1g9ibMk/deWNiNE/5zh wgENrG69ML5jPknViyjScu4eUUAmGxwb/SDCcbAcrr30c/F7v+n36VYeLZR+HDXfjkgZ mhvVVEz+7jt5ZIUCjxUgDFPCtEcAyc+/MOXVTREl9R3FkjOy/S/H2oYVfZ1P9PIEc4OE N4Uza4Cvt00ORn4P3d83Rj0ISLmu3+wL0ShocxPSA74C2Ht2KXDrvqNCLLuMJIq6lC7g KMBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=371t/mRp9vesw4CINEeobJJCviwXzXd/QW382WmaE2o=; b=Lr54tNjG613nefb1bUTCCBUmOythOEg75q2iB3+bnWfUyI/xSfPEKfft7HLNCh1WbS TGDgypJHJU+d++lvoc9tcUbcMyqzrjmArHU20bBBhL+gnLgu6g3b88rQO9Q4E5+hgv87 E9SDze3C5tRWblKJdBEF9IRwJBl/TGceOrz94Dy5yx4f4G6/UzpG8ziMchsB1jVSqASp 0EJjJhe4QlF12q7R2/TuJjIA46Au6twHlBajOsL4MRjbyMgCAA26fQskxfj83WY557sp z69dATahNzJsjW4+10opDmHXUY0LfeC6K4wemSMna4PpalEDO75wpBmwnFBoKj5XzPYo QdeQ== ARC-Authentication-Results: i=1; mx.google.com; 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 v25si4719150pfg.135.2019.01.31.07.01.03; Thu, 31 Jan 2019 07:01:20 -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; 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 S2387630AbfAaPAP (ORCPT + 99 others); Thu, 31 Jan 2019 10:00:15 -0500 Received: from foss.arm.com ([217.140.101.70]:45782 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387401AbfAaPAN (ORCPT ); Thu, 31 Jan 2019 10:00:13 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0AB1C1688; Thu, 31 Jan 2019 07:00:13 -0800 (PST) Received: from e112298-lin.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 116B83F59C; Thu, 31 Jan 2019 07:00:10 -0800 (PST) From: Julien Thierry To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, daniel.thompson@linaro.org, joel@joelfernandes.org, marc.zyngier@arm.com, christoffer.dall@arm.com, james.morse@arm.com, catalin.marinas@arm.com, will.deacon@arm.com, mark.rutland@arm.com, Julien Thierry Subject: [PATCH v10 24/25] arm64: Skip irqflags tracing for NMI in IRQs disabled context Date: Thu, 31 Jan 2019 14:59:02 +0000 Message-Id: <1548946743-38979-25-git-send-email-julien.thierry@arm.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1548946743-38979-1-git-send-email-julien.thierry@arm.com> References: <1548946743-38979-1-git-send-email-julien.thierry@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When an NMI is raised while interrupts where disabled, the IRQ tracing already is in the correct state (i.e. hardirqs_off) and should be left as such when returning to the interrupted context. Check whether PMR was masking interrupts when the NMI was raised and skip IRQ tracing if necessary. Signed-off-by: Julien Thierry Acked-by: Marc Zyngier Cc: Catalin Marinas Cc: Will Deacon Cc: Marc Zyngier --- arch/arm64/kernel/entry.S | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index acf1250..e2251bb 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -617,7 +617,18 @@ el1_irq: kernel_entry 1 enable_da_f #ifdef CONFIG_TRACE_IRQFLAGS +#ifdef CONFIG_ARM64_PSEUDO_NMI +alternative_if ARM64_HAS_IRQ_PRIO_MASKING + ldr x20, [sp, #S_PMR_SAVE] +alternative_else + mov x20, #GIC_PRIO_IRQON +alternative_endif + cmp x20, #GIC_PRIO_IRQOFF + /* Irqs were disabled, don't trace */ + b.ls 1f +#endif bl trace_hardirqs_off +1: #endif irq_handler @@ -637,8 +648,18 @@ alternative_else_nop_endif 1: #endif #ifdef CONFIG_TRACE_IRQFLAGS +#ifdef CONFIG_ARM64_PSEUDO_NMI + /* + * if IRQs were disabled when we received the interrupt, we have an NMI + * and we are not re-enabling interrupt upon eret. Skip tracing. + */ + cmp x20, #GIC_PRIO_IRQOFF + b.ls 1f +#endif bl trace_hardirqs_on +1: #endif + kernel_exit 1 ENDPROC(el1_irq) -- 1.9.1