mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 23:51:37 +00:00
91a29af413
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. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Marc Zyngier <maz@kernel.org> Cc: Daniel Palmer <daniel@thingy.jp> Cc: Romain Perier <romain.perier@gmail.com> Cc: Bartosz Golaszewski <brgl@bgdev.pl> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Jonathan Hunter <jonathanh@nvidia.com> Cc: Robert Richter <rric@kernel.org> Cc: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp> Cc: Andy Gross <agross@kernel.org> Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Acked-by: Bartosz Golaszewski <brgl@bgdev.pl> Link: https://lore.kernel.org/r/20220707182314.66610-2-prabhakar.mahadev-lad.rj@bp.renesas.com |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
pinctrl-apq8064.c | ||
pinctrl-apq8084.c | ||
pinctrl-ipq4019.c | ||
pinctrl-ipq6018.c | ||
pinctrl-ipq8064.c | ||
pinctrl-ipq8074.c | ||
pinctrl-lpass-lpi.c | ||
pinctrl-lpass-lpi.h | ||
pinctrl-mdm9607.c | ||
pinctrl-mdm9615.c | ||
pinctrl-msm8x74.c | ||
pinctrl-msm8226.c | ||
pinctrl-msm8660.c | ||
pinctrl-msm8916.c | ||
pinctrl-msm8953.c | ||
pinctrl-msm8960.c | ||
pinctrl-msm8976.c | ||
pinctrl-msm8994.c | ||
pinctrl-msm8996.c | ||
pinctrl-msm8998.c | ||
pinctrl-msm.c | ||
pinctrl-msm.h | ||
pinctrl-qcm2290.c | ||
pinctrl-qcs404.c | ||
pinctrl-qdf2xxx.c | ||
pinctrl-sc7180.c | ||
pinctrl-sc7280-lpass-lpi.c | ||
pinctrl-sc7280.c | ||
pinctrl-sc8180x.c | ||
pinctrl-sc8280xp.c | ||
pinctrl-sdm660.c | ||
pinctrl-sdm845.c | ||
pinctrl-sdx55.c | ||
pinctrl-sdx65.c | ||
pinctrl-sm6115.c | ||
pinctrl-sm6125.c | ||
pinctrl-sm6350.c | ||
pinctrl-sm8150.c | ||
pinctrl-sm8250-lpass-lpi.c | ||
pinctrl-sm8250.c | ||
pinctrl-sm8350.c | ||
pinctrl-sm8450.c | ||
pinctrl-spmi-gpio.c | ||
pinctrl-spmi-mpp.c | ||
pinctrl-ssbi-gpio.c | ||
pinctrl-ssbi-mpp.c |