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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable 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 9937DC433DB for ; Mon, 15 Mar 2021 12:11:34 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 C168264E76 for ; Mon, 15 Mar 2021 12:11:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C168264E76 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com 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=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:MIME-Version:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id: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=Mx2UT5movCGJ/oSpi5+PK4q3Y15I5Z/PCriLH/NQz4g=; b=RORFhQuxVOfGWO5eqlc4Y1TjIo fC2FlXwMXxSq1afaL75RpXsHDAqNnT9Q47+muxw33C0MRo2c9g3MVwKKWOnCsmgF1Tv4NuKYp6dJl NE3AW6wRJHulJlAcTgZk1BlPQybOMSQ4/BD5Q4AlOd2O6EqPJ5OBwo8P0qDuLFai8oRQZOAkCST3H uZo4CmXXf2tujN9syRjsKlWIKObGke6o6Nii1J2n7okceH3imgWXS3pWuOgDQG4DhcHJvyzlnnFQP FRKsr+N2zPixgdsFFXONs9wvwma2HPGsYDUZoHDoRgfxwNbvNI55D6eRTFOeD+jeiKs7KyY+keNci jMfP9RMg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lLm2G-00Fmrn-2v; Mon, 15 Mar 2021 12:09:26 +0000 Received: from foss.arm.com ([217.140.110.172]) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lLlpz-00FjC8-O9 for linux-arm-kernel@lists.infradead.org; Mon, 15 Mar 2021 11:56:51 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8E979D6E; Mon, 15 Mar 2021 04:56:37 -0700 (PDT) Received: from lakrids.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 56EF03F792; Mon, 15 Mar 2021 04:56:36 -0700 (PDT) From: Mark Rutland To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com Cc: james.morse@arm.com, marcan@marcan.st, mark.rutland@arm.com, maz@kernel.org, tglx@linutronix.de Subject: [PATCHv3 0/6] arm64: Support FIQ controller registration Date: Mon, 15 Mar 2021 11:56:23 +0000 Message-Id: <20210315115629.57191-1-mark.rutland@arm.com> X-Mailer: git-send-email 2.11.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210315_115646_346957_A87B77F0 X-CRM114-Status: GOOD ( 15.01 ) 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: , MIME-Version: 1.0 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 Hector's M1 support series [1] shows that some platforms have critical interrupts wired to FIQ, and to support these platforms we need to support handling FIQ exceptions. Other contemporary platforms don't use FIQ (since e.g. this is usually routed to EL3), and as we never expect to take an FIQ, we have the FIQ vector cause a panic. Since the use of FIQ is a platform integration detail (which can differ across bare-metal and virtualized environments), we need be able to explicitly opt-in to handling FIQs while retaining the existing behaviour otherwise. This series adds a new set_handle_fiq() hook so that the FIQ controller can do so, and where no controller is registered the default handler will panic(). For consistency the set_handle_irq() code is made to do the same. The first four patches move arm64 over to a local set_handle_irq() implementation, which is written to share code with a set_handle_fiq() function in the last two patches. This adds a default handler which will directly panic() rather than branching to NULL if an IRQ is taken unexpectedly, and the boot-time panic in the absence of a handler is removed (for consistently with FIQ support added later). The penultimate patch reworks arm64's IRQ masking to always keep DAIF.[IF] in sync, so that we can treat IRQ and FIQ as equals. This is cherry-picked from Hector's reply [2] to the first version of this series. The final patch adds the low-level FIQ exception handling and registration mechanism atop the prior rework. I'm hoping this is ready to be merged into the arm64 tree, given the preparatory cleanup made it into v5.12-rc3. I've pushed the series out to my arm64/fiq branch [3] on kernel.org, also tagged as arm64-fiq-20210315, atop v5.12-rc3. Since v1 [4]: * Rebase to v5.12-rc1 * Pick up Hector's latest DAIF.[IF] patch * Use "root {IRQ,FIQ} handler" rather than "{IRQ,FIQ} controller" * Remove existing panic per Marc's comments * Log registered root handlers * Make default root handlers static * Remove redundant el0_fiq_invalid_compat, per Joey's comments Since v2 [5]: * Fold in Hector's Tested-by tags * Rebase to v5.12-rc3 * Drop patches merged in v5.12-rc3 [1] https://http://lore.kernel.org/r/20210215121713.57687-1-marcan@marcan.st [2] https://lore.kernel.org/r/20210219172530.45805-1-marcan@marcan.st [3] https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=arm64/fiq [4] https://lore.kernel.org/r/20210219113904.41736-1-mark.rutland@arm.com [5] https://lore.kernel.org/r/20210302101211.2328-1-mark.rutland@arm.com Thanks, Mark. Hector Martin (1): arm64: Always keep DAIF.[IF] in sync Marc Zyngier (3): genirq: Allow architectures to override set_handle_irq() fallback arm64: don't use GENERIC_IRQ_MULTI_HANDLER arm64: entry: factor irq triage logic into macros Mark Rutland (2): arm64: irq: rework root IRQ handler registration arm64: irq: allow FIQs to be handled arch/arm64/Kconfig | 1 - arch/arm64/include/asm/arch_gicv3.h | 2 +- arch/arm64/include/asm/assembler.h | 8 +-- arch/arm64/include/asm/daifflags.h | 10 ++-- arch/arm64/include/asm/irq.h | 4 ++ arch/arm64/include/asm/irqflags.h | 16 +++-- arch/arm64/kernel/entry.S | 114 +++++++++++++++++++++--------------- arch/arm64/kernel/irq.c | 35 ++++++++++- arch/arm64/kernel/process.c | 2 +- arch/arm64/kernel/smp.c | 1 + include/linux/irq.h | 2 + 11 files changed, 125 insertions(+), 70 deletions(-) -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel