Re: [PATCH] arm64: Allow user selection of ARM64_MODULE_PLTS

From: Will Deacon
Date: Mon Jun 17 2019 - 13:37:42 EST


On Thu, Jun 13, 2019 at 07:59:32PM -0700, Florian Fainelli wrote:
> Make ARM64_MODULE_PLTS a selectable Kconfig symbol, since some people
> might have very big modules spilling out of the dedicated module area
> into vmalloc. Help text is copied from the ARM 32-bit counterpart.
>
> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
> ---
> arch/arm64/Kconfig | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 697ea0510729..36befe987b73 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -1418,8 +1418,20 @@ config ARM64_SVE
> KVM in the same kernel image.
>
> config ARM64_MODULE_PLTS
> - bool
> + bool "Use PLTs to allow module memory to spill over into vmalloc area"
> select HAVE_MOD_ARCH_SPECIFIC
> + help
> + Allocate PLTs when loading modules so that jumps and calls whose
> + targets are too far away for their relative offsets to be encoded
> + in the instructions themselves can be bounced via veneers in the
> + module's PLT. This allows modules to be allocated in the generic
> + vmalloc area after the dedicated module memory area has been
> + exhausted. The modules will use slightly more memory, but after
> + rounding up to page size, the actual memory footprint is usually
> + the same.

Isn't the worry really about the runtime performance overhead introduced
by the veneers, as opposed to the memory usage of the module?

> + Disabling this is usually safe for small single-platform
> + configurations. If unsure, say y.

So should this be on by default?

Will