Received: by 10.223.185.116 with SMTP id b49csp5656465wrg; Wed, 7 Mar 2018 15:59:36 -0800 (PST) X-Google-Smtp-Source: AG47ELt78M5NiJsmaQfrXNJUMFxSLm2APdMNgPu8Mix7pQ4k/gAcLVHrFG3rwxGpHnMhRhIi+bI7 X-Received: by 2002:a17:902:e85:: with SMTP id 5-v6mr21986687plx.420.1520467175961; Wed, 07 Mar 2018 15:59:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520467175; cv=none; d=google.com; s=arc-20160816; b=pY0xg7L1Fqaj55/lWi9NOm/W+T1D6jfUqqYNnQLWV5zHSn0nybg1hliAsnE+XZU9Bk IhEOcrUvTV5zyzm2ycJ/TYRzbJtbY0gd6H0aL9bFBuz/fyrepJJ8I3FF031+nFNVJbM2 bhLnokopvGQjUcs+XsetvCcYVVNmuGRv1+GhN2lGjXWPgF8nT5Dn0w+fuX+bk28nw6vT QBB3I1q5rpUo3/jKrZWfDA5JKvKTR6vll0Ka6uScCK5r/J2NTP0vMfbLE3phfoFZWIb+ aJmVrkTJUq2cQwUFEh/xbGEPAxPjjnOZjtTinKZjEYLakHZ9FgvP9b/raGnVuJIEB4Q8 SlJg== 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=nKVTXbn0as24KtAaqAzH5xQHuXUDDLg7Yi+fGlZqNGIGr854EOSdPXS7Wast3eKlL8 3kn8jmkQGcm5hbXYQvz7bp7cfZ79zVKa4eEMLAqOpJloBf4o2eHPqYNlAVMiyfctjXQS 681ie1ahHqreRHCWIbm1lPOK4ArDBOUzUfEXLngiwhmq2yYIctYAy0BRa5b3zaRZ8FQ6 VQ7gNiHHQ01Zm1IxDuDuEl5utpIEckB3ZzIzghUGkSr9VWPlXBkmNwiq+8R7bWNcuAkp 8AAY0/UMqZ9ItUcBeW9FCx9WumzpDa6esOPfBPJaBfZ+cRw0vz2I5G2DfooH1rxzquwo 7m1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=b2BXOftZ; 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 i3-v6si13802267pld.404.2018.03.07.15.59.21; Wed, 07 Mar 2018 15:59:35 -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; dkim=pass header.i=@sifive.com header.s=google header.b=b2BXOftZ; 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 S1755143AbeCGX5o (ORCPT + 99 others); Wed, 7 Mar 2018 18:57:44 -0500 Received: from mail-pf0-f196.google.com ([209.85.192.196]:46521 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755103AbeCGX5l (ORCPT ); Wed, 7 Mar 2018 18:57:41 -0500 Received: by mail-pf0-f196.google.com with SMTP id z10so1610731pfh.13 for ; Wed, 07 Mar 2018 15:57:41 -0800 (PST) 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=b2BXOftZFwhG4eGDFZXGGthkRs40tXUShZU9BciTAW+GstXfpeB0Nnwxycjpkw0buc D84VirczMkul+zLO/ijlguVklt9HJAowBEZiXHh9Uie33PB3AXY3je4zUBBoYHa5P2Gm 0uSFs2C03v5DoAiX9vt8AOT7MTkGUrebzbkIHrhrBakSDCKRK58cY388jYqr3beJnaVa b86biN6Y5acem69Dt/eCwXd5dt3eT5yaUHIQay/hBbuBX0M+KWXDMPFF/S3du2V3mCH3 /9ZLld2yHuvbbH3LQJ51IGj7JtkErXxn5zT/eA/EG555e89uzR06zfbF0+fkujbFkolu qOJw== 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=NKpuKa8j6l+0K1tkqKPIdKDFiYZZmYmdrLpjQ7Ab8TOdAdV/2OBLWbzCM7Rc5ihvnx V+QCwmaDNJjiu5qyYs2qjR32vIXAEspo5V2JxQysfzhBK7B6k3QnoTjoav6ARx1AQ2TY 1QohNXWz1S1Yn/NE7VDDsh5mpy/6x5S6K1QWJDttkVFzOawCAEKyVDBcqemjUBSGwKyV HiTflwfXQT2oNeMxYQiS/1d+UYHl649BZEKNKAxNJrrSKq0Kt+aZJmJp4PQTqlrM9YOg kq946XP/unWk215vqb+rxAyM5ooUUrp1EM1ECFX5Kv6TMiR6+ZENVh1oD4eJHpTHQmcs Q+zw== X-Gm-Message-State: APf1xPC82wPf0ZlhBqRbDB+YFsBHdq+YK3U86EDqdRICbF5bRjtIgsp4 K4g1ZTH0Fjhi6f86kxUBA62EgQ== X-Received: by 10.99.56.11 with SMTP id f11mr19738261pga.63.1520467061248; Wed, 07 Mar 2018 15:57:41 -0800 (PST) Received: from localhost ([12.206.222.5]) by smtp.gmail.com with ESMTPSA id b4sm35682968pfa.3.2018.03.07.15.57.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Mar 2018 15:57:40 -0800 (PST) Subject: [PATCH v3 2/5] RISC-V: Move to the new GENERIC_IRQ_MULTI_HANDLER handler Date: Wed, 7 Mar 2018 15:57:28 -0800 Message-Id: <20180307235731.22627-3-palmer@sifive.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180307235731.22627-1-palmer@sifive.com> References: <20180307235731.22627-1-palmer@sifive.com> Cc: 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