From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756640AbcEEORJ (ORCPT ); Thu, 5 May 2016 10:17:09 -0400 Received: from cam-admin0.cambridge.arm.com ([217.140.96.50]:38631 "EHLO cam-admin0.cambridge.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756197AbcEEORI (ORCPT ); Thu, 5 May 2016 10:17:08 -0400 Subject: Re: [PATCH v3] sunxi-irq: Fix Kconfig dependency on GENERIC_IRQ_CHIP To: Maxime Ripard References: <1461546292-21110-1-git-send-email-andre.przywara@arm.com> <20160502064854.GL17159@lukather> <5729D2A0.70900@arm.com> <20160505132146.GH17159@lukather> Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, arm@kernel.org, Rob Herring , suzuki.poulose@arm.com, Russell King , wens@csie.org, tglx@linutronix.de, Jason Cooper , marc.zyngier@arm.com From: Andre Przywara Organization: ARM Ltd. Message-ID: <572B55CC.7080603@arm.com> Date: Thu, 5 May 2016 15:16:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20160505132146.GH17159@lukather> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Maxime, On 05/05/16 14:21, Maxime Ripard wrote: > On Wed, May 04, 2016 at 11:44:48AM +0100, Andre Przywara wrote: >> Hi Maxime, >> >> On 02/05/16 07:48, Maxime Ripard wrote: >>> Hi, >>> >>> On Mon, Apr 25, 2016 at 02:04:52AM +0100, Andre Przywara wrote: >>>> The Allwinner NMI irqchip driver requires GENERIC_IRQ_CHIP, but >>>> we can't select it directly, because there is no specific Kconfig entry >>>> for the driver. Compiling this NMI driver with certain arm64 >>>> configurations thus fails due to the missing dependency: >>>> >>>> drivers/built-in.o: In function `sunxi_sc_nmi_set_type': >>>> drivers/irqchip/irq-sunxi-nmi.c:114: undefined reference to `irq_setup_alt_chip' >>>> drivers/built-in.o: In function `irq_domain_add_linear': >>>> include/linux/irqdomain.h:253: undefined reference to `irq_generic_chip_ops' >>>> include/linux/irqdomain.h:253: undefined reference to `irq_generic_chip_ops' >>>> drivers/built-in.o: In function `sunxi_sc_nmi_irq_init': >>>> drivers/irqchip/irq-sunxi-nmi.c:146: undefined reference to `irq_alloc_domain_generic_chips' >>>> drivers/irqchip/irq-sunxi-nmi.c:161: undefined reference to `irq_get_domain_generic_chip' >>>> drivers/irqchip/irq-sunxi-nmi.c:170: undefined reference to `irq_gc_mask_clr_bit' >>>> drivers/irqchip/irq-sunxi-nmi.c:171: undefined reference to `irq_gc_mask_set_bit' >>>> drivers/irqchip/irq-sunxi-nmi.c:172: undefined reference to `irq_gc_ack_set_bit' >>>> drivers/irqchip/irq-sunxi-nmi.c:170: undefined reference to `irq_gc_mask_clr_bit' >>>> >>>> Add separate Kconfig options for both Allwinner specific irqchip >>>> drivers and select GENERIC_IRQ_CHIP for the NMI driver. >>>> The older sun4i IRQ driver only gets selected when support for these >>>> specific SoCs is compiled, while the NMI driver is selected for all >>>> Allwinner SoCs (copying the current behaviour and covering future SoCs >>>> automatically). >>>> >>>> Reported-by: Suzuki K Poulose >>>> Signed-off-by: Andre Przywara >>>> --- >>>> Hi, >>>> >>>> this is a new approach to the problem that Suzuki tried to address >>>> already. >>>> It separates the sun4i IRQ controller driver and the NMI driver as >>>> Maxime requested. >>>> While there should be no difference for the NMI driver, the sun4i >>>> driver now only gets selected for certain SoCs, which is admittedly >>>> a bold call for -rc5. If people find this too risky, I can bring the >>>> sun4i in line with the NMI driver (selected for all ARCH_SUNXI) for >>>> this release and re-create the more selective dependency as a merge >>>> window patch, so that it gets more testing. >>>> Please let me know. >>>> >>>> Cheers, >>>> Andre. >>>> >>>> arch/arm/mach-sunxi/Kconfig | 3 ++- >>>> drivers/irqchip/Kconfig | 8 ++++++++ >>>> drivers/irqchip/Makefile | 4 ++-- >>>> 3 files changed, 12 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig >>>> index c124d65..c092bc2 100644 >>>> --- a/arch/arm/mach-sunxi/Kconfig >>>> +++ b/arch/arm/mach-sunxi/Kconfig >>>> @@ -4,7 +4,6 @@ menuconfig ARCH_SUNXI >>>> select ARCH_REQUIRE_GPIOLIB >>>> select ARCH_HAS_RESET_CONTROLLER >>>> select CLKSRC_MMIO >>>> - select GENERIC_IRQ_CHIP >>>> select PINCTRL >>>> select SUN4I_TIMER >>>> select RESET_CONTROLLER >>>> @@ -14,11 +13,13 @@ if ARCH_SUNXI >>>> config MACH_SUN4I >>>> bool "Allwinner A10 (sun4i) SoCs support" >>>> default ARCH_SUNXI >>>> + select SUN4I_IRQCHIP >>>> >>>> config MACH_SUN5I >>>> bool "Allwinner A10s / A13 (sun5i) SoCs support" >>>> default ARCH_SUNXI >>>> select SUN5I_HSTIMER >>>> + select SUN4I_IRQCHIP >>>> >>>> config MACH_SUN6I >>>> bool "Allwinner A31 (sun6i) SoCs support" >>>> diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig >>>> index 3e12479..94f3f42 100644 >>>> --- a/drivers/irqchip/Kconfig >>>> +++ b/drivers/irqchip/Kconfig >>>> @@ -165,6 +165,14 @@ config ST_IRQCHIP >>>> help >>>> Enables SysCfg Controlled IRQs on STi based platforms. >>>> >>>> +config SUN4I_IRQCHIP >>>> + bool >>>> + >>>> +config SUNXI_NMI >>>> + bool "Allwinner SoC NMI controller" >>>> + default ARCH_SUNXI >>>> + select GENERIC_IRQ_CHIP >>> >>> This one is only used on SUN6I, SUN7I and SUN8I. There's no need to >>> enable it for all the SoCs. >> >> But it is enabled for all SoCs at the moment - and as it is actually a >> fix (-rc1 does not compile for certain arm64 configs) I'd really like to >> not take chances here. >> As mentioned I am happy to send a follow up patch to restrict it further >> - given that it gets more testing, but at the moment I'd really like to >> just fix the arm64 build without accidentally breaking existing arm(32) >> boards. > > Then at least be consistent and do the same thing for the A10 irq > controller too. Which is basically what Suzuki proposed with v2: https://lkml.org/lkml/2016/4/13/592 This patch also has been acked by Marc, so can't we just take that for 4.6 and I'll send a patch on top of that to make a more fine grained selection for the next release? Cheers, Andre.