Received: by 10.223.148.5 with SMTP id 5csp7701051wrq; Thu, 18 Jan 2018 08:31:00 -0800 (PST) X-Google-Smtp-Source: ACJfBovHBzyKyw3NM5MRZHjAP96mVeSHrtdPeHjFD4rAsmcDjNeAKGUlSRweL3Qd68NGohwL7R32 X-Received: by 10.98.87.2 with SMTP id l2mr5815058pfb.46.1516293060721; Thu, 18 Jan 2018 08:31:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516293060; cv=none; d=google.com; s=arc-20160816; b=Vq/TKpd6l3qttyxZRLkSLbk9jDBjdYbC3ZUKs2cQKqPKFTKLjQz4gnRvZEhXX+IiQ9 2tYE/YibfQVTAddpu4drhIvIq7SB6CXkPQBQ3x40Agvo+3ymmlrNTwl6pEGJpRCvAmkA uTmsp2CRNzlZXLtpW/XtqgqhGnY4oAcsrnKEH28KdSAGhkR7VXH0MqU3F+83LAZRVTpJ JVxGTLavhR+SpJOA8rGrvG2+avW935mI2qGhrVIGZMNaa0jRmOwAnwSB2MBuEHXvEjm0 j4kTt56MazZta4lP+aXBmOSJZL8h4muzIYJmX7vlirNFBROqoW03ZdHDDD5lh07Hd1Y1 g09g== 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=e0axm/Kfdqqo+qxaJrrnVln6DbSswHfYhjWiI721h+I=; b=BBczR93QZATwNfYuE9aA+IOdbLT57stDF2PPvq+aBbeFutV0vxxtfO7WhZOxAWTnuP 6BIsQaQAjRbcC7HzdlziW6xi6fIfZl+Qkq+oTiT2ocFnBOhjyGjvItH+dNg/UCZdWRXQ 9MhkZPmLf1pdtSR3OJkXFebycRxZSaxMKXq19TOgDC9JASK/+iP3ADGei4WfLXXl1pjd eotoixOR2yd1DJv0HIesjOmUBH88XxebcAizQp0RTcxZjR9BrtuGTX+asVL4Aodp7ih5 HEuMFtObKisAQh3A/n/6QvC5eLGvHiSqobzfgmrP5EEfhbGgqL3VvMQcIfbs56QNjMdb n8YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=EgrDslHb; 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 c24-v6si14654plo.608.2018.01.18.08.30.46; Thu, 18 Jan 2018 08:31:00 -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=EgrDslHb; 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 S933255AbeARQKt (ORCPT + 99 others); Thu, 18 Jan 2018 11:10:49 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:33013 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933241AbeARQKn (ORCPT ); Thu, 18 Jan 2018 11:10:43 -0500 Received: by mail-pg0-f67.google.com with SMTP id u1so1192054pgr.0 for ; Thu, 18 Jan 2018 08:10:43 -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=e0axm/Kfdqqo+qxaJrrnVln6DbSswHfYhjWiI721h+I=; b=EgrDslHbsCoUkZYEQneEa5pg5DZoPJyEGe41DUt5j1bbj1TbgItVmW7IgOBRyg0dtv cDO8qIqt7YJYM1wPTQH0AQe3BHCoS+4TCsUn8w2Uu6kAnu9ny/+JkeJS7GimJ+VOOGSC xkujdJZ9lm6OIT1RBotlt8+HP7zXrClp9TEkF+FWCUb9uVLX+xih0tXyrO4p7toTWvUE ItLNQ5krMNgPiYR0SpW/zlcItxTGtwfBf7nY+y+XW5Br0Qggb2v0YCGXnaSjqOB7kf6g 4ulhsSP5Ztp4jX2HXkczbAei7Imh2X6T1jnUY8uERQv0oZScYHQqzHqATJ9TPrxu9MPQ YNWg== 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=e0axm/Kfdqqo+qxaJrrnVln6DbSswHfYhjWiI721h+I=; b=Yo5Je5kQckNXVMB5gcIzgcvFIvFSjqcKgILv40En6IMjjjmRAtbDC8V7dXOKJJexa7 EJEGtWXoN/JypVZSJSW94YFEWUAXQx7YpKzvNFNNl/YrIM14f0ZUGg2ErVaDxNHX7zW0 tcxH1iliveHIihEiWfDVJAnSqHykTOeZzytte8JEsbPEXURsISRIwD0I/y2W0i4iF4Jh c18SbZWwAGaPK87a0fBEzIJCQkjWYDDSaBw0vtmdEuYQcM3YHaBp1X7krlsD0869RhMj 1IpvT4Cg5OntsV/gsr7YHlPaT6bQIfeEqJg7jxeLs7gy3b82jacHuJ6oPXZkpijarNu+ befQ== X-Gm-Message-State: AKwxytfGDuE8p/yiktCh1j8GWoF0LmggL7VRPPcCLuj1Q6/ZdO2YGD/t 6r3fBbx6dC2H2yuDMzER1GLYYHEfuhw= X-Received: by 10.98.202.214 with SMTP id y83mr16131731pfk.49.1516290065585; Thu, 18 Jan 2018 07:41:05 -0800 (PST) Received: from localhost ([12.206.222.5]) by smtp.gmail.com with ESMTPSA id m28sm4595675pgd.49.2018.01.18.07.41.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Jan 2018 07:41:04 -0800 (PST) Subject: [PATCH 2/2] RISC-V: Move to the new asm-generic IRQ handler Date: Thu, 18 Jan 2018 07:40:05 -0800 Message-Id: <20180118154005.24994-3-palmer@sifive.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180118154005.24994-1-palmer@sifive.com> References: <20180118154005.24994-1-palmer@sifive.com> Cc: patches@groups.riscv.org, Palmer Dabbelt From: Palmer Dabbelt To: Arnd Bergmann , Christoph Hellwig , linux-kernel@vger.kernel.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 asm-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. Signed-off-by: Palmer Dabbelt --- arch/riscv/Kconfig | 1 + arch/riscv/include/asm/Kbuild | 1 + arch/riscv/kernel/entry.S | 5 +++-- arch/riscv/kernel/irq.c | 13 ------------- 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 2c6adf12713a..49faed9e8b93 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -35,6 +35,7 @@ config RISCV select THREAD_INFO_IN_TASK select RISCV_IRQ_INTC select RISCV_TIMER + select GENERIC_HANDLE_IRQ config MMU def_bool y diff --git a/arch/riscv/include/asm/Kbuild b/arch/riscv/include/asm/Kbuild index 970460a0b492..e0d0fbe43ca2 100644 --- a/arch/riscv/include/asm/Kbuild +++ b/arch/riscv/include/asm/Kbuild @@ -16,6 +16,7 @@ generic-y += ftrace.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 7404ec222406..a79869151aea 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -166,8 +166,9 @@ ENTRY(handle_exception) /* 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: /* Handle syscalls */ li t0, EXC_SYSCALL 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.13.6