Received: by 10.213.65.68 with SMTP id h4csp820817imn; Tue, 27 Mar 2018 09:22:07 -0700 (PDT) X-Google-Smtp-Source: AIpwx48dnKly2uxctRTti4LFWrkegVu3EQv132i/cZiAz21oghRYvhP7NoZC2v63LCd193vQQi0M X-Received: by 10.101.69.73 with SMTP id x9mr16322pgr.50.1522167727651; Tue, 27 Mar 2018 09:22:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522167727; cv=none; d=google.com; s=arc-20160816; b=Wz4kAn5q0C2mmXGPDMA/yQme1N9MZqnIe/Uti/AA7wl2pZYobeu8LbGjEgejvjh5Kp Xt0lcT9AcUOTyvf8baIc4FTotB+28CH0swMtiky/Iyv4tOP6KAU+UuzhYDbmDZ+BklPP TYfSukNf3yPMLafQ4e1V3WtGE+ohORvM04SU5eJuDScodl401fOf3yEe93+lUEyP344m 7R8pxISJ07wPAolaBoNOU1gwAbk0ypRQAF4tZpJbCVxAAUkSR/3VA3DQFtHZlpRtoq6a 654tngH3WHgS2ftH6qQYVKt7+sT/hR+DSLuwGRu4eY/UJLy4ILWubBw4pfv94r9BcxM7 LUnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:from:cc:references:in-reply-to :message-id:date:subject:dkim-signature:arc-authentication-results; bh=c+KYNG5BmwW8H1sCmQ8Pi7+XQ3jKtU28QBmicWKzER0=; b=MqzJtEuskrO+SuSDV+68ELnP0wdjHYh+ReLirwo3x0aAPg0pe1vOk+joi9m8Z1+CG9 xK09a2HC5JUv6nML6O2n0ikmUxtECK3TQr4K+5kRUr0ICxEK84hyxddSbxyR8v2LXkzO 6w1EAOholRSMY+ZogjGErp5nGMl6PEkqE5gA+8mUc/7Bft11h2sHVr6G+jS1XpxB5l5h 2z4r0xIff3Opp/kU5kL1WMaaizPs4wcS23yCYBqSpGw8d1UUEQGwJ4ZUtyhZUvKJDe+Z 5tbQ7+rSiePeMXcqzBtUqND+Hhmm4xTLCx6TWmP6iOI4fW/hA+xtZ7/4LsNu0eQqHOJm dOFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=OYQCrJnM; 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 a61-v6si1588142pla.271.2018.03.27.09.21.53; Tue, 27 Mar 2018 09:22:07 -0700 (PDT) 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; dkim=pass header.i=@sifive.com header.s=google header.b=OYQCrJnM; 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 S1752043AbeC0QTe (ORCPT + 99 others); Tue, 27 Mar 2018 12:19:34 -0400 Received: from mail-pl0-f67.google.com ([209.85.160.67]:38945 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750965AbeC0QTa (ORCPT ); Tue, 27 Mar 2018 12:19:30 -0400 Received: by mail-pl0-f67.google.com with SMTP id s24-v6so4014250plq.6 for ; Tue, 27 Mar 2018 09:19:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=subject:date:message-id:in-reply-to:references:cc:from:to; bh=c+KYNG5BmwW8H1sCmQ8Pi7+XQ3jKtU28QBmicWKzER0=; b=OYQCrJnMacaE6kgkG7OBDFV0PJ2K3Re8y+CrhvQ5rFPIP9okrLSgQSQFrbC4AwF0P5 eIOQEaBayrcUb4nK+uy3re6JjQxli09o/B0su7RwphuVRPxyC3VKdUR14ZxllDnd+QqA kX+DBBtCQWesZnh921T/yrhQPjzcJMElLAQiY4h6+20I1GMCuv1KnRvFiRmkZUdxgdU5 gqNXDY2kELSi5PATDc6d6pA4wEL7h1RbwOZZC09Vuw/hWbqa/uCmEtqsGTJAhZ/MbV1W r4F5KNcZ9HdiT282BSBgm9QizlExyPNekkoTDaPjGUn8ESoFRdcVWsbSbgwCQyvbtrye m/BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:date:message-id:in-reply-to:references :cc:from:to; bh=c+KYNG5BmwW8H1sCmQ8Pi7+XQ3jKtU28QBmicWKzER0=; b=DkIL02VicBoB2iq1sJKjZNUt4BIUyML/4F9TR+bkrvn4QwB5jKLiB9DejEUUYFefAL Ramf5gyxcHQDSxFOu0zv681F+H1eZZLvrS7+RMap69RCGq3dlrrq6KtWgqNbRJtxHNuS Tq9gqyb6sCIg6LrHv94OPdjxlnDiMrWBxVPwxEXu/hsnynlouwPMZhs4qafZQ9oLHRrm gFcAoOlOB8SqhUwynnjaPyQ4MnvhSXXZbtp+yjd3GJF7uweQeyVVpRixJH+HbOS+rYDD Gud2Q738w/n48TD99+Dije0OR10Tb9U2Zi8kru86StQUpexP6810OqNvSSspDZDYzW28 e9KA== X-Gm-Message-State: AElRT7FpLkgLrYBwxf/cIzsHejzN83ODq75eMTTjlDaf9yNDJd4N4lvG IM1rq4iagvWQoNioVHCr0Y/tcw== X-Received: by 2002:a17:902:51ad:: with SMTP id y42-v6mr42778391plh.314.1522167570318; Tue, 27 Mar 2018 09:19:30 -0700 (PDT) Received: from localhost ([12.206.222.5]) by smtp.gmail.com with ESMTPSA id y18sm3672755pfm.66.2018.03.27.09.19.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Mar 2018 09:19:29 -0700 (PDT) Subject: [PATCH v4 4/8] RISC-V: Move to the new GENERIC_IRQ_MULTI_HANDLER handler Date: Tue, 27 Mar 2018 09:19:07 -0700 Message-Id: <20180327161911.14086-5-palmer@sifive.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180327161911.14086-1-palmer@sifive.com> References: <20180327161911.14086-1-palmer@sifive.com> Cc: Arnd Bergmann , Palmer Dabbelt From: Palmer Dabbelt To: linux@armlinux.org.uk, catalin.marinas@arm.com, Will Deacon , jonas@southpole.se, stefan.kristiansson@saunalahti.fi, shorne@gmail.com, tglx@linutronix.de, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, openrisc@lists.librecores.org, linux-riscv@lists.infradead.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The old mechanism for handling IRQs on RISC-V was pretty ugly: the arch code looked at the Kconfig entry for our first-level irqchip driver and called into it directly. This patch uses the new generic IRQ handling infastructure, which essentially just deletes a bunch of code. This does add an additional load to the interrupt latency, but there's a lot of tuning left to be done there on RISC-V so I think it's OK for now. Reviewed-by: Christoph Hellwig Acked-by: Stafford Horne Signed-off-by: Palmer Dabbelt --- arch/riscv/Kconfig | 1 + arch/riscv/include/asm/Kbuild | 1 + arch/riscv/kernel/entry.S | 7 +++---- arch/riscv/kernel/irq.c | 13 ------------- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 04807c7f64cc..148865de1692 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -33,6 +33,7 @@ config RISCV select MODULES_USE_ELF_RELA if MODULES select THREAD_INFO_IN_TASK select RISCV_TIMER + select GENERIC_IRQ_MULTI_HANDLER config MMU def_bool y diff --git a/arch/riscv/include/asm/Kbuild b/arch/riscv/include/asm/Kbuild index 4286a5f83876..1e5fd280fb4d 100644 --- a/arch/riscv/include/asm/Kbuild +++ b/arch/riscv/include/asm/Kbuild @@ -15,6 +15,7 @@ generic-y += fcntl.h generic-y += futex.h generic-y += hardirq.h generic-y += hash.h +generic-y += handle_irq.h generic-y += hw_irq.h generic-y += ioctl.h generic-y += ioctls.h diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index 56fa592cfa34..9aaf6c986771 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -167,10 +167,9 @@ ENTRY(handle_exception) bge s4, zero, 1f /* Handle interrupts */ - slli a0, s4, 1 - srli a0, a0, 1 - move a1, sp /* pt_regs */ - tail do_IRQ + move a0, sp /* pt_regs */ + REG_L a1, handle_arch_irq + jr a1 1: /* Exceptions run with interrupts enabled */ csrs sstatus, SR_SIE diff --git a/arch/riscv/kernel/irq.c b/arch/riscv/kernel/irq.c index 328718e8026e..b74cbfbce2d0 100644 --- a/arch/riscv/kernel/irq.c +++ b/arch/riscv/kernel/irq.c @@ -24,16 +24,3 @@ void __init init_IRQ(void) { irqchip_init(); } - -asmlinkage void __irq_entry do_IRQ(unsigned int cause, struct pt_regs *regs) -{ -#ifdef CONFIG_RISCV_INTC - /* - * FIXME: We don't want a direct call to riscv_intc_irq here. The plan - * is to put an IRQ domain here and let the interrupt controller - * register with that, but I poked around the arm64 code a bit and - * there might be a better way to do it (ie, something fully generic). - */ - riscv_intc_irq(cause, regs); -#endif -} -- 2.16.1