On Fri, Jan 27, 2023, at 17:46, Suzuki K Poulose wrote:
On 26/01/2023 20:37, Arnd Bergmann wrote:
On Thu, Jan 26, 2023, at 19:02, Suzuki K Poulose wrote:
On 26/01/2023 16:35, Arnd Bergmann wrote:
From: Arnd Bergmann <arnd@xxxxxxxx>Thanks for the fix, I will queue this. Btw, I did try to
reproduce it locally, but couldn't trigger the warnings,
even with
CONFIG_WERROR=y
and all CORESIGHT configs builtin. I see other drivers doing the
same outside coresight too. Just curious to know why is this
any different. Is it specific to "bus" driver (e.g. AMBA) ?
The warning comes from postprocessing the object file, it's got
nothing to do with the bus type, only with a symbol in .data
referencing a symbol in .init.text. Maybe there are some
config options that keep the section from getting discarded?
Or possibly you only built the files in this directory, but did
not get to the final link?
I did a full kernel build. Also, I see a similar issue with the
coresight-etm4x (by code inspection) driver. Did you not hit that ?
May be there is a config option that is masking it on my end. But
the case of etm4x driver is puzzling.
$ git grep etm4_remove_amba
drivers/hwtracing/coresight/coresight-etm4x-core.c
drivers/hwtracing/coresight/coresight-etm4x-core.c:static void __exit
etm4_remove_amba(struct amba_device *adev)
drivers/hwtracing/coresight/coresight-etm4x-core.c: .remove
= etm4_remove_amba,
Indeed, that one clearly has the same but, but I have never
observed a warning for it.
I checked one more thing and found that I only get the warning
for 32-bit Arm builds, but not arm64. Since the etm4x driver
'depends on ARM64' for its use of asm/sysreg.h,
I never test-built it on 32-bit arm.
From the git history of arch/arm64/kernel/vmlinux.lds.S,
I can see that arm64 never discards the .exit section, see
commit 07c802bd7c39 ("arm64: vmlinux.lds.S: don't discard
.exit.* sections at link-time").
Arnd