[SRU][G/master-next] [PATCH] UBUNTU: [Config] armhf: ARM_MODULE_PLTS=y

Paolo Pisati paolo.pisati at canonical.com
Wed Oct 14 09:20:50 UTC 2020


BugLink: https://bugs.launchpad.net/bugs/1899519

[Impact]

Groovy armhf LPAE kernel fails to load kmods (and thus fail to boot):

...
[ 16.753306] gpio_keys: section 4 reloc 29 sym '_raw_spin_lock_irqsave': relocation 28 out of range (0xbf00f23c -> 0xc10a90ec)
[ 22.799409] linear: section 4 reloc 43 sym '__stack_chk_fail': relocation 28 out of range (0xbf0195e8 -> 0xc10a1dd8)
[ 23.000670] multipath: section 4 reloc 31 sym '__stack_chk_fail': relocation 28 out of range (0xbf021268 -> 0xc10a1dd8)
[ 23.227437] raid0: section 4 reloc 53 sym '__stack_chk_fail': relocation 28 out of range (0xbf02a548 -> 0xc10a1dd8)
[ 23.460764] raid1: section 4 reloc 18 sym '_cond_resched': relocation 28 out of range (0xbf035390 -> 0xc10a3b4c)
...

[Fix]

Enable CONFIG_ARM_MODULE_PLTS for armhf

[Regression potential]

Quoting the arch/arm/Kconfig:

"
Allocate Procedure Linkage Tables 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.

Disabling this [option] is usually safe for small single-platform
configurations.
"

Signed-off-by: Paolo Pisati <paolo.pisati at canonical.com>
---
 debian.master/config/annotations          | 2 +-
 debian.master/config/config.common.ubuntu | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian.master/config/annotations b/debian.master/config/annotations
index 308aec0..c408e11 100644
--- a/debian.master/config/annotations
+++ b/debian.master/config/annotations
@@ -12776,7 +12776,7 @@ CONFIG_ARM_PATCH_IDIV                           policy<{'armhf': 'y'}>
 CONFIG_AEABI                                    policy<{'armhf': 'y'}>
 CONFIG_OABI_COMPAT                              policy<{'armhf': 'n'}>
 CONFIG_CPU_SW_DOMAIN_PAN                        policy<{'armhf-generic': 'y'}>
-CONFIG_ARM_MODULE_PLTS                          policy<{'armhf': 'n'}>
+CONFIG_ARM_MODULE_PLTS                          policy<{'armhf': 'y'}>
 CONFIG_UACCESS_WITH_MEMCPY                      policy<{'armhf': 'n'}>
 
 # Menu: Processor type and features >> Architecture: arm64
diff --git a/debian.master/config/config.common.ubuntu b/debian.master/config/config.common.ubuntu
index 251cfb3..9f997cb 100644
--- a/debian.master/config/config.common.ubuntu
+++ b/debian.master/config/config.common.ubuntu
@@ -723,7 +723,7 @@ CONFIG_ARM_L1_CACHE_SHIFT_6=y
 CONFIG_ARM_L1_CACHE_SHIFT_7=y
 CONFIG_ARM_MEDIATEK_CPUFREQ=m
 CONFIG_ARM_MHU=m
-# CONFIG_ARM_MODULE_PLTS is not set
+CONFIG_ARM_MODULE_PLTS=y
 CONFIG_ARM_MVEBU_V7_CPUIDLE=y
 CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
 CONFIG_ARM_PATCH_IDIV=y
-- 
2.7.4




More information about the kernel-team mailing list