Received: by 2002:a05:7412:cfc7:b0:fc:a2b0:25d7 with SMTP id by7csp1216230rdb; Mon, 19 Feb 2024 07:54:00 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCX8hihA4xmCGT1231NKvpCKvVG08npNWRcmA8zfQjAP8D5olLkmL8tzlHtFKniBz+xgbW3BklxA6bb9iqVx+1GOrTIqU/oPyxqSPV7P/A== X-Google-Smtp-Source: AGHT+IGyMUMuZBat89unR+hxDdIH7Siuopi315CEfswR3AZZUGj/p8APwVPCih7Ku0zo8GWrHNlC X-Received: by 2002:a05:620a:4e3:b0:787:351d:9f01 with SMTP id b3-20020a05620a04e300b00787351d9f01mr18570672qkh.12.1708358040692; Mon, 19 Feb 2024 07:54:00 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708358040; cv=pass; d=google.com; s=arc-20160816; b=tR2i+NDrxJRnp4l4xVNWa34r0zSbKqqpvbLpl+lpYgjLhQmiJSrWWEZ8ysmKoUfkrM nM+romHWfUrhkoMlD6aIjnOI4B3HWWxvOfJiSVnZSVoOCU2awlgPcWj5v34rP41IPyn4 g0xa6IH7eAQp6ZP0eNWngB5LiUAHeA/5tVkQWJBS8IOQSr81n6iFA5hDV+cZHVbGSx/P GStPWlK82pf7STc4I+x4eNJ2NUi2XI9aB/hIIUQ6l4Cqbv3No4YYeVXOzMuK78f9Jjgq tBHg6Jx3if5C1jN6ivXz7wEwZ3VDkaR1En+Nij5sFGkyAZ0jFjuNtG/7NwLBNVG2leMQ ac+g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :user-agent:references:in-reply-to:subject:cc:to:from:message-id :date:dkim-signature; bh=ti8poLRKgbVYGR/AmB/fv3rECuOhA9rNhs2lN81Rez4=; fh=a1Uw6pbxfZLoTCSjyH5mfg0oPwrw7LmXanqfc+6Qx+Q=; b=YBaSaoM2QwP+ZGAy3pCHusA3znYnNQlu1v66kzLgPTkD2b5Evx71DgMZz1+kHmxc5H 1aKrYweetTeg4LL6PrFCmT4KkZYZ2fyIl8GrK6oejhxh1ONwasqQ/mliDbc0129OJ6Ka ANs+EBc9JHuvA+VgzWi0R+Q4X2EHKVVcPlCyO9fb8eTGWN4tvKOkkOtZ3FrF+9+W7amB JGW4Hk5IMABZFwtKeIhlSz03I3Z0FD4Is3PpomP6L2/6vnhfGfQI3sEwq0BWIkRNiUnN GkpcneJPN17ju2RMYQBx/inYbGpFnqOvd1p9FfVkSfLC0//jc/53q7LUc2wxcP1NFVQl 6A1A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=s9vTbW1Z; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-71618-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71618-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id qp17-20020a05620a389100b00787317ae356si6266096qkn.466.2024.02.19.07.54.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Feb 2024 07:54:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-71618-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=s9vTbW1Z; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-71618-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71618-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 727481C21FE9 for ; Mon, 19 Feb 2024 15:54:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0CE9A3A1DE; Mon, 19 Feb 2024 15:53:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="s9vTbW1Z" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 369E3381CE; Mon, 19 Feb 2024 15:53:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708358031; cv=none; b=E8wS6geAbvbnrkKn/a9QilP236L/olVkOH6XPWXm/emD3noEgSqC5BfDycV8i+n9S9aX/kRFpTkQez+f1UQEpiR7IxR0JaM+kd+eZjJq0maQAd1KM6NmkiRhuvNIbF3HbmHUcWfwFpVBbvrvSaMZucBGwGC8aKwwtzY5s0sDW50= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708358031; c=relaxed/simple; bh=517fO3sYzhBoS+A0/0syTbcWUfDqWRHc0TLYK++SB58=; h=Date:Message-ID:From:To:Cc:Subject:In-Reply-To:References: MIME-Version:Content-Type; b=YZu5wKtbuXkxg3bDVW2ZTEnt0IpWSQ39N2qvPFkG+jL44BBVUkPBzZUJK5xIoRuECwsPEAGYxL6CDziUJFjZuT2fp5QkBZCyJUbBYOw/KlpQRfiKtEGmwa6E3LrsLhmN3kN+exQ+7YMek1ko5Tqa9/rX6UOHoJhDHaeM2CiGAWY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=s9vTbW1Z; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id A1D53C43390; Mon, 19 Feb 2024 15:53:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708358030; bh=517fO3sYzhBoS+A0/0syTbcWUfDqWRHc0TLYK++SB58=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=s9vTbW1Zb4232ZNMuGkskRATSlx/9DIk6EfIbOERpQ8wfVwMybokX2cKqwlst5k3s /wZn4awaQpLjSjlE3xEeenjMDR0dcHanOaS6euffCUGFVUJTCbXieWC2CbkLUY7Jbt gtfATQZS2FDZj+VvvE+Rbyu8DLqMo8RKeHo4/pSmbqAeuKqSUuQJci+wXv6CDkUwlX CyaQIaLsPqW3PnGTTvOZe+OLq0N0K3RroZG1LBviYsaclgy4qRxOaIVO8hmJ/vX8o8 h6Dsg3AdOR3jPNmSMQtHQeIunm3GFunpTkuDe0rpSpT8AvEml40Im6NYF1qgWqHVfj f7slrWgzTUg5w== 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 1rc5xk-004crN-Hc; Mon, 19 Feb 2024 15:53:48 +0000 Date: Mon, 19 Feb 2024 15:53:48 +0000 Message-ID: <868r3g4fhv.wl-maz@kernel.org> From: Marc Zyngier To: Dmitry Baryshkov Cc: Thomas Gleixner , Anup Patel , Konrad Dybcio , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: Re: [PATCH] irqchip/gic-v3: handle DOMAIN_BUS_ANY in gic_irq_domain_select In-Reply-To: <20240219-gic-fix-child-domain-v1-1-09f8fd2d9a8f@linaro.org> References: <20240219-gic-fix-child-domain-v1-1-09f8fd2d9a8f@linaro.org> 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/29.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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: dmitry.baryshkov@linaro.org, tglx@linutronix.de, apatel@ventanamicro.com, konrad.dybcio@linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-msm@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 On Mon, 19 Feb 2024 14:47:37 +0000, Dmitry Baryshkov wrote: > > Before the commit de1ff306dcf4 ("genirq/irqdomain: Remove the param > count restriction from select()") the irq_find_matching_fwspec() was > handling the DOMAIN_BUS_ANY on its own. After this commit it is a job of > the select() callback. However the callback of GICv3 (even though it got > modified to handle zero param_count) wasn't prepared to return true for > DOMAIN_BUS_ANY bus_token. > > This breaks probing of any of the child IRQ domains, since > platform_irqchip_probe() uses irq_find_matching_host(par_np, > DOMAIN_BUS_ANY) to check for the presence of the parent IRQ domain. > > Fixes: 151378251004 ("irqchip/gic-v3: Make gic_irq_domain_select() robust for zero parameter count") > Fixes: de1ff306dcf4 ("genirq/irqdomain: Remove the param count restriction from select()") > Signed-off-by: Dmitry Baryshkov > --- > drivers/irqchip/irq-gic-v3.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c > index 6fb276504bcc..e9e9643c653f 100644 > --- a/drivers/irqchip/irq-gic-v3.c > +++ b/drivers/irqchip/irq-gic-v3.c > @@ -1696,7 +1696,8 @@ static int gic_irq_domain_select(struct irq_domain *d, > > /* Handle pure domain searches */ > if (!fwspec->param_count) > - return d->bus_token == bus_token; > + return d->bus_token == bus_token || > + bus_token == DOMAIN_BUS_ANY; > > /* If this is not DT, then we have a single domain */ > if (!is_of_node(fwspec->fwnode)) > I really dislike the look of this. If that's the case, any irqchip that has a 'select' method (such as imx-intmux) should be similarly hacked. And at this point, this should be handled by the core code. Can you try this instead? I don't have any HW that relies on behaviour, but I'd expect this to work. Thanks, M. diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index aeb41655d6de..3dd1c871e091 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -449,7 +449,7 @@ struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec, */ mutex_lock(&irq_domain_mutex); list_for_each_entry(h, &irq_domain_list, link) { - if (h->ops->select) + if (h->ops->select && bus_token != DOMAIN_BUS_ANY) rc = h->ops->select(h, fwspec, bus_token); else if (h->ops->match) rc = h->ops->match(h, to_of_node(fwnode), bus_token); -- Without deviation from the norm, progress is not possible.