• Marc Zyngier's avatar
    gpio: Remove dynamic allocation from populate_parent_alloc_arg() · 91a29af4
    Marc Zyngier authored
    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: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarMarc 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: default avatarBartosz Golaszewski <brgl@bgdev.pl>
    Link: https://lore.kernel.org/r/20220707182314.66610-2-prabhakar.mahadev-lad.rj@bp.renesas.com
    91a29af4
gpiolib.c 123 KB