From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F34BC4743E for ; Tue, 8 Jun 2021 17:29:04 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 711F86124C for ; Tue, 8 Jun 2021 17:29:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 711F86124C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=eOrqL9AvWxgTS7OBXLqEI4jEkXeFMCrrTxgTBqzRwkE=; b=JLffQShbU4xqby BaGdD1do1o0LXGjq8PsKjA4rk22nEMhyE9QW/dfIE5wwmD4/1EoXr5SRfMANBJBktHt+2IhSMGr7q Bpw/IkRBh3FOZkFaG3I0afnL07037jpkxlvtLG9NaW8cyu0AWEqjCQ+Xn0o6yDDQPWqp9t8yUYQAy AaMu3yhjtX5k7vRfEK1rGbII4BaQmFuesCgpP1aLxnPiidkf09ca3oIM76Xnv+j3SWZrRlLYTENil Fr+IcRIabq0PtDjjFdG/tZf5VjUvN0+f7yvD9nEN8/rArhIN189MwEePjvAQxSEnu78PpjXqn20w8 KSB7HDMAyj8Mwj8GSmsw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lqfVm-009j9L-Ug; Tue, 08 Jun 2021 17:27:35 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lqfVi-009j7b-Ns for linux-arm-kernel@lists.infradead.org; Tue, 08 Jun 2021 17:27:31 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 195CF6124C; Tue, 8 Jun 2021 17:27:30 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1lqfVf-006Gb4-UX; Tue, 08 Jun 2021 18:27:28 +0100 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org Cc: Lorenzo Pieralisi , Will Deacon , Catalin Marinas , Mark Rutland , Valentin Schneider , Alexandru Elisei , Russell King , kernel-team@android.com Subject: [PATCH 0/3] arm64: Fix cpuidle with pseudo-NMI enabled Date: Tue, 8 Jun 2021 18:27:12 +0100 Message-Id: <20210608172715.2396787-1-maz@kernel.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, lorenzo.pieralisi@arm.com, will@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com, valentin.schneider@arm.com, alexandru.elisei@arm.com, linux@armlinux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210608_102730_824608_034ECB5D X-CRM114-Status: GOOD ( 13.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org It appears that although cpu_do_idle() is correctly dealing with the PMR/DAIF duality, the PSCI cpu-suspend code has been left unaware of it. On a system that uses PSCI for idle (such as the Ampere Altra I have access to), the kernel dies as soon as it enters idle (interrupts are off at the GIC CPU interface level). Boo. Instead of spreading more magic code around, I've elected to provide a pair of helpers (arm_cpuidle_{save,restore}_context()) which do the heavy lifting. With that in place, I can finally boot the above system with irqchip.gicv3_pseudo_nmi=1. I'd welcome feedback from people who may have experienced similar issues in the past (and on different machines). Marc Zyngier (3): arm64: Add cpuidle context save/restore helpers arm64: Convert cpu_do_idle() to using cpuidle context helpers PSCI: Use cpuidle context helpers in psci_cpu_suspend_enter() arch/arm/include/asm/cpuidle.h | 5 ++++ arch/arm64/include/asm/cpuidle.h | 35 +++++++++++++++++++++++++++ arch/arm64/kernel/process.c | 41 +++++++------------------------- drivers/firmware/psci/psci.c | 5 ++++ 4 files changed, 54 insertions(+), 32 deletions(-) -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel