[PATCH] gpio: Remove dynamic allocation from populate_parent_alloc_arg()

Marc Zyngier maz at kernel.org
Sat May 14 03:36:13 PDT 2022


Hey Linus,

On Fri, 13 May 2022 22:24:40 +0100,
Linus Walleij <linus.walleij at linaro.org> wrote:
> 
> On Thu, May 12, 2022 at 6:23 PM Marc Zyngier <maz at kernel.org> wrote:
> 
> > The gpiolib is unique in the way it uses intermediate fwspecs
> > when feeding an interrupt specifier to the parent domain, as it
> > relies on the populate_parent_alloc_arg() callback to perform
> > a dynamic allocation.
> >
> > THis is pretty inefficient (we free the structure almost immediately),
> > and the only reason this isn't a stack allocation is that our
> > ThunderX friend uses MSIs rather than a FW-constructed structure.
> >
> > Let's solve it by providing a new type composed of the union
> > of a struct irq_fwspec and a msi_info_t, which satisfies both
> > requirements. This allows us to use a stack allocation, and we
> > can move the handful of users to this new scheme.
> >
> > Also perform some additional cleanup, such as getting rid of the
> > stub versions of the irq_domain_translate_*cell helpers, which
> > are never used when CONFIG_IRQ_DOMAIN_HIERARCHY isn't selected.
> >
> > Tested on a Tegra186.
> >
> > Signed-off-by: Marc Zyngier <maz at kernel.org>
> > Cc: Daniel Palmer <daniel at thingy.jp>
> > Cc: Romain Perier <romain.perier at gmail.com>
> > Cc: Linus Walleij <linus.walleij at linaro.org>
> > Cc: Bartosz Golaszewski <brgl at bgdev.pl>
> > Cc: Thierry Reding <thierry.reding at gmail.com>
> > Cc: Jonathan Hunter <jonathanh at nvidia.com>
> > Cc: Robert Richter <rric at kernel.org>
> > Cc: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu at toshiba.co.jp>
> > Cc: Andy Gross <agross at kernel.org>
> > Cc: Bjorn Andersson <bjorn.andersson at linaro.org>
> 
> This looks very appetizing to me but:
> 
> drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 15 ++++-----
> 
> This seems to have some changes to
> ->populate_parent_alloc_arg not even in linux-next,
> so I get confused, what are the prerequisites? (Probably
> something I already reviewed, but...)

Odd. This patch is on top of irqchip-next, which is itself already in
-next (you got me worried and I just pulled everything to check).

> Also: don't you also need to fix something in
> drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c?
> the way I remember it it was quite similar to spmi-gpio
> but I may be mistaken.

No, this one is graceful enough to use
gpiochip_populate_parent_fwspec_twocell(), which is directly provided
by gpiolib and thus addressed directly by this patch. Same thing for
the spmi-mpp version, which uses the fourcell variant.

HTH,

	M.

-- 
Without deviation from the norm, progress is not possible.



More information about the linux-arm-kernel mailing list