Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp294739rwd; Wed, 31 May 2023 23:43:22 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5+//k71fiZK03Xi5aEGoZJOvTWKJFIVfg4wa3MB6MzWRXxBl9rF65dwjFNjUjzX3OvI94o X-Received: by 2002:a17:90a:fa98:b0:256:c3dc:dae4 with SMTP id cu24-20020a17090afa9800b00256c3dcdae4mr5163438pjb.21.1685601802391; Wed, 31 May 2023 23:43:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685601802; cv=none; d=google.com; s=arc-20160816; b=EJ0lAEgUIRI3oKxRRzvq91QMLqHY+36PQS19vqa+/e1dW60PpuiZ7OUbdwoFrDxrxM u3wzwI/kkPCft0OLZ/0G5xPVLwaTBvGSXc4lpJUXxsc3qWV9DKBUvI8Woqkp2AFCWQJv uNJFuR4gIZ4upFCafpLtkCAu2Ug8PhD8mxBO4WtRWCXHuPQVY6nkpogYAqncLHOy1ZoC 5UtvyHgngYiuL7Wb2bKkws5AtdyCogt64NxxVCUxfJ9b3D6Z00o71BsQTP8dbcBAB+1C w1evWgoTv15xVEL+0DoPsn1CxXKTIjvBYoVgn111dDYNqBmXkh0YglakOwo/HCe28Z7F s+iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id; bh=OynyOO3hTHNs9jEvOIhrlkZlVJyCN3AmqGJ0dxH8jo0=; b=lfK3u8UfzndBNI8bJCLmwUe+lSbFXhnonamTG95J1mj0bIHfan7G6r8YUH917ODCP/ sUVnwxoL+MCz509VsJCWmnutgw3dSozYC+2549vE9wNixqsupWU1Xyl4vM1DsT5ji3w0 DJjqxUsGzn90Ll/f5Uptwbhp/+VaWaj4DnYWbPUXEoPMRsa1upDHo9V4kfsDHYCPzCbA /7arWiXx0W0+Q9wLxVz1qwV8UFv6lB02KeWckyK2lVIpCTrl0iBjjh/CJakobqbfWf2I ud6sFZDw43G3p6jVw4381D8vRsVL+uGMzTzy0KNLx8MqEyYabbeTHnDQ70hqk2kJNjdf PrMA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ob16-20020a17090b391000b0024e1a6c7f82si642514pjb.80.2023.05.31.23.43.06; Wed, 31 May 2023 23:43:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231224AbjFAGiP convert rfc822-to-8bit (ORCPT + 99 others); Thu, 1 Jun 2023 02:38:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50734 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231648AbjFAGiN (ORCPT ); Thu, 1 Jun 2023 02:38:13 -0400 Received: from outpost1.zedat.fu-berlin.de (outpost1.zedat.fu-berlin.de [130.133.4.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C6A198; Wed, 31 May 2023 23:38:08 -0700 (PDT) Received: from inpost2.zedat.fu-berlin.de ([130.133.4.69]) by outpost.zedat.fu-berlin.de (Exim 4.95) with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (envelope-from ) id 1q4bwg-001UUB-89; Thu, 01 Jun 2023 08:38:02 +0200 Received: from p57bd9d78.dip0.t-ipconnect.de ([87.189.157.120] helo=suse-laptop.fritz.box) by inpost2.zedat.fu-berlin.de (Exim 4.95) with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (envelope-from ) id 1q4bwg-002mDe-0m; Thu, 01 Jun 2023 08:38:02 +0200 Message-ID: Subject: Re: [PATCH v5] sh: avoid using IRQ0 on SH3/4 From: John Paul Adrian Glaubitz To: Sergey Shtylyov , Rich Felker , linux-sh@vger.kernel.org Cc: Yoshinori Sato , linux-kernel@vger.kernel.org Date: Thu, 01 Jun 2023 08:38:01 +0200 In-Reply-To: <197b4ccb-2dc8-add6-02a5-2e241b15a5f9@omp.ru> References: <197b4ccb-2dc8-add6-02a5-2e241b15a5f9@omp.ru> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT User-Agent: Evolution 3.48.1 MIME-Version: 1.0 X-Original-Sender: glaubitz@physik.fu-berlin.de X-Originating-IP: 87.189.157.120 X-ZEDAT-Hint: PO X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Sergey! On Wed, 2023-05-31 at 23:34 +0300, Sergey Shtylyov wrote: > Now that IRQ0 is no longer returned by platform_get_irq() and its ilk (they > now return -EINVAL instead). However, the code supporting SH3/4 SoCs still > maps the IRQ #s starting at 0 -- modify that code to start the IRQ #s from > 16 instead. > > The patch should mostly affect the AP-SH4A-3A/AP-SH4AD-0A boards as they > indeed use IRQ0 for the SMSC911x compatible Ethernet chip... I'm not sure I understand. Does that mean that the Ethernet controller on the AP-SH4A-3A/AP-SH4AD-0A boards will no longer work after this patch has been applied? Adrian > > Fixes: ce753ad1549c ("platform: finally disallow IRQ0 in platform_get_irq() and its ilk") > Signed-off-by: Sergey Shtylyov > Reviewed-by: Geert Uytterhoeven > Tested-by: Geert Uytterhoeven > Tested-by: John Paul Adrian Glaubitz > > --- > The patch is against Linus Torvalds' 'linux.git' repo. > > Changes in version 5: > - updated the patch description and the "Fixes:" tag as the patch disallowing > the use of IRQ0 was merged meanwhile. > > Changes in version 4: > - fixed up the off-chip base IRQ #s for the Dreamcast/Highlander/R2D/SE7724 > boards. > > Changes in version 3: > - added an appropriate Fixes: tag and added a passage about it to the patch > description; > - added actual cases of the boards using IRQ0 to the patch description; > - added Geert Uytterhoeven's and John Paul Adrian Glaubitz's tags; > - updated the link to point to the version 2 of the patch. > > Changes in version 2: > - changed cmp/ge to cmp/hs in the assembly code. > > arch/sh/include/mach-common/mach/highlander.h | 2 +- > arch/sh/include/mach-common/mach/r2d.h | 2 +- > arch/sh/include/mach-dreamcast/mach/sysasic.h | 2 +- > arch/sh/include/mach-se/mach/se7724.h | 2 +- > arch/sh/kernel/cpu/sh3/entry.S | 4 ++-- > include/linux/sh_intc.h | 6 +++--- > 6 files changed, 9 insertions(+), 9 deletions(-) > > Index: linux/arch/sh/include/mach-common/mach/highlander.h > =================================================================== > --- linux.orig/arch/sh/include/mach-common/mach/highlander.h > +++ linux/arch/sh/include/mach-common/mach/highlander.h > @@ -176,7 +176,7 @@ > #define IVDR_CK_ON 4 /* iVDR Clock ON */ > #endif > > -#define HL_FPGA_IRQ_BASE 200 > +#define HL_FPGA_IRQ_BASE (200 + 16) > #define HL_NR_IRL 15 > > #define IRQ_AX88796 (HL_FPGA_IRQ_BASE + 0) > Index: linux/arch/sh/include/mach-common/mach/r2d.h > =================================================================== > --- linux.orig/arch/sh/include/mach-common/mach/r2d.h > +++ linux/arch/sh/include/mach-common/mach/r2d.h > @@ -47,7 +47,7 @@ > > #define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ > > -#define R2D_FPGA_IRQ_BASE 100 > +#define R2D_FPGA_IRQ_BASE (100 + 16) > > #define IRQ_VOYAGER (R2D_FPGA_IRQ_BASE + 0) > #define IRQ_EXT (R2D_FPGA_IRQ_BASE + 1) > Index: linux/arch/sh/include/mach-dreamcast/mach/sysasic.h > =================================================================== > --- linux.orig/arch/sh/include/mach-dreamcast/mach/sysasic.h > +++ linux/arch/sh/include/mach-dreamcast/mach/sysasic.h > @@ -22,7 +22,7 @@ > takes. > */ > > -#define HW_EVENT_IRQ_BASE 48 > +#define HW_EVENT_IRQ_BASE (48 + 16) > > /* IRQ 13 */ > #define HW_EVENT_VSYNC (HW_EVENT_IRQ_BASE + 5) /* VSync */ > Index: linux/arch/sh/include/mach-se/mach/se7724.h > =================================================================== > --- linux.orig/arch/sh/include/mach-se/mach/se7724.h > +++ linux/arch/sh/include/mach-se/mach/se7724.h > @@ -37,7 +37,7 @@ > #define IRQ2_IRQ evt2irq(0x640) > > /* Bits in IRQ012 registers */ > -#define SE7724_FPGA_IRQ_BASE 220 > +#define SE7724_FPGA_IRQ_BASE (220 + 16) > > /* IRQ0 */ > #define IRQ0_BASE SE7724_FPGA_IRQ_BASE > Index: linux/arch/sh/kernel/cpu/sh3/entry.S > =================================================================== > --- linux.orig/arch/sh/kernel/cpu/sh3/entry.S > +++ linux/arch/sh/kernel/cpu/sh3/entry.S > @@ -470,9 +470,9 @@ ENTRY(handle_interrupt) > mov r4, r0 ! save vector->jmp table offset for later > > shlr2 r4 ! vector to IRQ# conversion > - add #-0x10, r4 > > - cmp/pz r4 ! is it a valid IRQ? > + mov #0x10, r5 > + cmp/hs r5, r4 ! is it a valid IRQ? > bt 10f > > /* > Index: linux/include/linux/sh_intc.h > =================================================================== > --- linux.orig/include/linux/sh_intc.h > +++ linux/include/linux/sh_intc.h > @@ -13,9 +13,9 @@ > /* > * Convert back and forth between INTEVT and IRQ values. > */ > -#ifdef CONFIG_CPU_HAS_INTEVT > -#define evt2irq(evt) (((evt) >> 5) - 16) > -#define irq2evt(irq) (((irq) + 16) << 5) > +#ifdef CONFIG_CPU_HAS_INTEVT /* Avoid IRQ0 (invalid for platform devices) */ > +#define evt2irq(evt) ((evt) >> 5) > +#define irq2evt(irq) ((irq) << 5) > #else > #define evt2irq(evt) (evt) > #define irq2evt(irq) (irq) -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913