Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp683878rwl; Thu, 5 Jan 2023 03:08:47 -0800 (PST) X-Google-Smtp-Source: AMrXdXvGrltwnviKQYE4Hw3LfpCAly7Qtdt7sC5fkY3oPecydaQYJSTJoonQhZEl0EDchiaFaWTq X-Received: by 2002:a17:906:86d5:b0:7c0:e305:a282 with SMTP id j21-20020a17090686d500b007c0e305a282mr41072189ejy.59.1672916927697; Thu, 05 Jan 2023 03:08:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672916927; cv=none; d=google.com; s=arc-20160816; b=W67bzkCK95fUiJEXf4+mUh+HTmpUuxKbooAKD4jb0NX7o5bceNsFaXxvArhFzgyzI1 B8gKEk/PKNK5Rdke1WQ8wkkeR3ZP/E+JlqCnd4XPcvjFXdOGFsrTAFF2YMn1dOdQOWln Xcc8pV1I2Q0l28gwH2BR+bEwt4DFZ3FrrjYGp93hrYMGoceYnsaCHVCiFafZ5NCzZqvb WihYV3Ki4fF7p6ETxAaR7vaElwgnWE2+/1OSeceyhdQ/qnbcWGu645L2msEAIbxgRUQc wiUgxIe7vO8H3rYw5Cbzf/5qRLZ3PHB/IGtPD6STvL0hB/MTaTCRy8V1/zbiYFot/rMr o4dA== 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:references:in-reply-to :subject:cc:to:from:message-id:date:dkim-signature; bh=hcCYU9YCXHdoff4ieIeF6nNvzex8ZLZHr1iCid2cRJ0=; b=rIaYmlJ03HO4aXHKnRQ/ZC13GI0kbKdkuzzeTDnmeFKRWrBnvVJWGzNFPx+Yd9aMew NRCR8VvffuI1NMlppqLBjuNaQxxDGZ4Uv26f+d/DTgVj3ytP21KYq02IKWiYO513X07f 1mHJWUx55GR4wa0FAAICqREKmbYHYjxXeg1eZ0NejD5bN45TMfNPbrBpk/aTJO4o0g4s CfW5rkg0uTZ37CjtQz5CFakg5cCF5HQxxjNVC7TkyecBOOJcDlmeKKeWx3zM8d9mz9V7 nvQhaJ+0Iun/mDz7eS+Wo6cLwgO8BMPwHDx5wLVlZ4w30bZEAQUfzZt4eRnGiA0J/YV+ gJ3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=InqIGzLx; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hb7-20020a170907160700b007c60482a110si35853120ejc.625.2023.01.05.03.08.26; Thu, 05 Jan 2023 03:08:47 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=InqIGzLx; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232706AbjAEK7S (ORCPT + 55 others); Thu, 5 Jan 2023 05:59:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44922 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231549AbjAEK7L (ORCPT ); Thu, 5 Jan 2023 05:59:11 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87D6550E7E for ; Thu, 5 Jan 2023 02:59:10 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A1E06619C4 for ; Thu, 5 Jan 2023 10:59:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F0202C433D2; Thu, 5 Jan 2023 10:59:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1672916349; bh=q5sRND00z/nYDdb5Pj9GpICSC+MozgkMP+AsrilBba4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=InqIGzLxpQsqnsIhJlEw/W4xYY8Bd4fbLw2otBGQWOWUIKIGt5aLyMmQE2TbBYyFF DUj07xb8Us7FAtR7h2JirHfFkCfmso3HkkH7FdM8YH5974LXsd5z4GIkMEEeVSdHgx gf4f15BXEobCjfyuG2cqVuAwk56XL1DTpoLwjBdOXWW+OX8Gp8ULezuHUM+xHvd32b GYFvoSj2PyCTAVhPMq/n4XtVqqgmD3EjGkMTpvRgr8hxI4eyWvRORNnrBxOBAMl9ze u/IEMtgL7YZWbYAMm5yL78jVgmyAWQXQt34dfBBZBsj8sglnUIK/ODR4pgZXjOw4qu 0jb68zqiUIUbQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pDNxi-00Gyfa-KQ; Thu, 05 Jan 2023 10:59:06 +0000 Date: Thu, 05 Jan 2023 10:59:06 +0000 Message-ID: <86k0216ydh.wl-maz@kernel.org> From: Marc Zyngier To: Shanker Donthineni Cc: Catalin Marinas , Will Deacon , James Morse , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] arm64: gic: increase the number of IRQ descriptors In-Reply-To: <2a0116a8-fbd0-d866-ada0-ed50f0523f1d@nvidia.com> References: <20230104023738.1258925-1-sdonthineni@nvidia.com> <86sfgq7jb3.wl-maz@kernel.org> <2a0116a8-fbd0-d866-ada0-ed50f0523f1d@nvidia.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/28.2 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: sdonthineni@nvidia.com, catalin.marinas@arm.com, will@kernel.org, james.morse@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS 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 On Wed, 04 Jan 2023 13:47:03 +0000, Shanker Donthineni wrote: > > Hi Marc, > > On 1/4/23 03:14, Marc Zyngier wrote: > > External email: Use caution opening links or attachments > > > > > > On Wed, 04 Jan 2023 02:37:38 +0000, > > Shanker Donthineni wrote: > >> > >> The default value of NR_IRQS is not sufficient to support GICv4.1 > >> features and ~56K LPIs. This parameter would be too small for certain > >> server platforms where it has many IO devices and is capable of > >> direct injection of vSGI and vLPI features. > >> > >> Currently, maximum of 64 + 8192 (IRQ_BITMAP_BITS) IRQ descriptors > >> are allowed. The vCPU creation fails after reaching count ~400 with > >> kvm-arm.vgic_v4_enable=1. > >> > >> This patch increases NR_IRQS to 1^19 to cover 56K LPIs and 262144 > >> vSGIs (16K vPEs x 16). > >> > >> Signed-off-by: Shanker Donthineni > >> --- > >> Changes since v1: > >> -create from v6.2-rc1 and edit commit text > >> > >> arch/arm64/include/asm/irq.h | 4 ++++ > >> 1 file changed, 4 insertions(+) > >> > >> diff --git a/arch/arm64/include/asm/irq.h b/arch/arm64/include/asm/irq.h > >> index fac08e18bcd5..3fffc0b8b704 100644 > >> --- a/arch/arm64/include/asm/irq.h > >> +++ b/arch/arm64/include/asm/irq.h > >> @@ -4,6 +4,10 @@ > >> > >> #ifndef __ASSEMBLER__ > >> > >> +#if defined(CONFIG_ARM_GIC_V3_ITS) > >> +#define NR_IRQS (1 << 19) > >> +#endif > >> + > >> #include > >> > >> struct pt_regs; > > > > Sorry, but I don't think this is an acceptable change. This is a large > > overhead that affects *everyone*, and that will eventually be too > > small anyway with larger systems and larger interrupt spaces. > > > > A better way to address this would be to move to a more dynamic > > allocation, converting the irqdesc rb-tree into an xarray, getting rid > > of the bitmaps (the allocation bitmap and the resend one), and track > > everything in the xarray. > > The actual memory allocation for IRQ descriptors is still dynamic for ARM64. > This change increases static memory for variable 'allocated_irqs' by 64KB, > feel not a noticeable overhead. 64kB for each bitmap, so that's already 128kB (you missed the irqs_resend bitmap). And that's for a number of IRQs that is still way below what the GIC architecture supports today. The architecture supports 32bit INTIDs, and that's 1GB worth of bitmaps, only for the physical side. Add the virtual stuff for which we create host-side descriptors, and we can go way beyond that. So what happens next, once you exceed the arbitrary limit that only satisfies your own use case? We will bump it up again, and again, bloating the kernel with useless static data that *nobody* needs. Specially not the VMs that you plan to run. So I'm putting my foot down right now, and saying that it needs to be fixed once and for all. The current scheme was OK for small interrupt spaces, but it isn't fit for purpose anymore, certainly not with things like the GICv4 architecture. I'm happy to help with it, but I'm certainly not willing to accept any sort of new compile-time limit. Thanks, M. -- Without deviation from the norm, progress is not possible.