linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Christian Eggers <ceggers@arri.de>
To: kernel test robot <lkp@intel.com>, Nathan Chancellor <nathan@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>,
	Yuntao Liu <liuyuntao12@huawei.com>,
	"Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
	Arnd Bergmann <arnd@arndb.de>,
	Linus Walleij <linus.walleij@linaro.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	<linux-arm-kernel@lists.infradead.org>, <llvm@lists.linux.dev>,
	<oe-kbuild-all@lists.linux.dev>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 1/2] ARM: substitute OVERLAY description in linker script
Date: Tue, 11 Mar 2025 09:18:48 +0100	[thread overview]
Message-ID: <2110116.YKUYFuaPT4@n9w6sw14> (raw)
In-Reply-To: <20250310203729.GA26968@ax162>

[Resending, as first message got HTML'ed by my mailer...]

Hi Nathan,


thanks for pushing this into the right direction.  Actually I didn't recognize that
lld complains about overlapping virtual address ranges, maybe the .config provided
by the first LKP report (which I used for testing) didn't enable the necessary options.


On Monday, 10 March 2025, 21:37:29 CET, Nathan Chancellor wrote:
> On Wed, Mar 05, 2025 at 02:49:38AM +0800, kernel test robot wrote:
> > Hi Christian,
> > 
> > kernel test robot noticed the following build errors:
> > 
> > [auto build test ERROR on soc/for-next]
> > [also build test ERROR on linus/master v6.14-rc5 next-20250304]
> > [If your patch is applied to the wrong git tree, kindly drop us a note.
> > And when submitting patch, we suggest to use '--base' as documented in
> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
> > 
> > url:    https://github.com/intel-lab-lkp/linux/commits/Christian-Eggers/ARM-avoid-that-vectors-are-removed-during-linker-garbage-collection/20250224-210146
> > base:   https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
> > patch link:    https://lore.kernel.org/r/20250224125414.2184-1-ceggers%40arri.de
> > patch subject: [PATCH v2 1/2] ARM: substitute OVERLAY description in linker script
> > config: arm-milbeaut_m10v_defconfig (https://download.01.org/0day-ci/archive/20250305/202503050230.820w99b6-lkp@intel.com/config)
> > compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 14170b16028c087ca154878f5ed93d3089a965c6)
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250305/202503050230.820w99b6-lkp@intel.com/reproduce)
> > 
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202503050230.820w99b6-lkp@intel.com/
> > 
> > All errors (new ones prefixed by >>):
> > 
> > >> ld.lld: error: section .vectors.bhb.bpiall virtual address range overlaps with .vectors.bhb.loop8
> >    >>> .vectors.bhb.bpiall range is [0xFFFF0000, 0xFFFF001F]
> >    >>> .vectors.bhb.loop8 range is [0xFFFF0000, 0xFFFF001F]
> > --
> > >> ld.lld: error: section .vectors.bhb.loop8 virtual address range overlaps with .vectors
> >    >>> .vectors.bhb.loop8 range is [0xFFFF0000, 0xFFFF001F]
> >    >>> .vectors range is [0xFFFF0000, 0xFFFF001F]
> 
> Looking at ld.lld's code, this error is intentionally ignored for
> OVERLAY:
> 
> https://github.com/llvm/llvm-project/blob/9f170e6abed4a7b393bb8abbf07ac8d6930aa3b0/lld/ELF/Writer.cpp#L2751-L2761
> 
> I have submitted a patch that allows KEEP within OVERLAY to match GNU
> ld:
> 
> https://github.com/llvm/llvm-project/pull/130661
> 
> Once/if that is accepted, we should go back to your v1 with something
> like the following diff on top to keep things working for all linkers. I
> hope that it won't take long for the ld.lld change to get reviewed and
> landed but if this needs to be fixed urgently, this whole diff minus
> '|| LLD_VERSION >= 210000' on the init/Kconfig change should work (with
> a comment change). I can always send a follow up change to add it back.


I build from an internal tree, so I am not in hurry.  As the Kconfig changes
probably should take your Signed-Off-By, I am also fine if you do the necessary
changes on my v1 and resubmit it together with your patch when it is time.


> 
> Cheers,
> Nathan
> 


regards,
Christian


> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 835b5f100e92..f3f6b7a33b79 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -121,7 +121,7 @@ config ARM
>      select HAVE_KERNEL_XZ
>      select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M
>      select HAVE_KRETPROBES if HAVE_KPROBES
> -    select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_IS_LLD)
> +    select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_CAN_USE_KEEP_IN_OVERLAY)
>      select HAVE_MOD_ARCH_SPECIFIC
>      select HAVE_NMI
>      select HAVE_OPTPROBES if !THUMB2_KERNEL
> diff --git a/arch/arm/include/asm/vmlinux.lds.h b/arch/arm/include/asm/vmlinux.lds.h
> index f2ff79f740ab..14811b4f48ec 100644
> --- a/arch/arm/include/asm/vmlinux.lds.h
> +++ b/arch/arm/include/asm/vmlinux.lds.h
> @@ -34,6 +34,12 @@
>  #define NOCROSSREFS
>  #endif
>  
> +#ifdef CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY
> +#define OVERLAY_KEEP(x)        KEEP(x)
> +#else
> +#define OVERLAY_KEEP(x)        x
> +#endif
> +
>  /* Set start/end symbol names to the LMA for the section */
>  #define ARM_LMA(sym, section)                        \
>      sym##_start = LOADADDR(section);                \
> @@ -125,13 +131,13 @@
>      __vectors_lma = .;                        \
>      OVERLAY 0xffff0000 : NOCROSSREFS AT(__vectors_lma) {        \
>          .vectors {                        \
> -            KEEP(*(.vectors))                \
> +            OVERLAY_KEEP(*(.vectors))            \
>          }                            \
>          .vectors.bhb.loop8 {                    \
> -            KEEP(*(.vectors.bhb.loop8))            \
> +            OVERLAY_KEEP(*(.vectors.bhb.loop8))        \
>          }                            \
>          .vectors.bhb.bpiall {                    \
> -            KEEP(*(.vectors.bhb.bpiall))            \
> +            OVERLAY_KEEP(*(.vectors.bhb.bpiall))        \
>          }                            \
>      }                                \
>      ARM_LMA(__vectors, .vectors);                    \
> diff --git a/init/Kconfig b/init/Kconfig
> index d0d021b3fa3b..fc994f5cd5db 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -129,6 +129,11 @@ config CC_HAS_COUNTED_BY
>      # https://github.com/llvm/llvm-project/pull/112636
>      depends on !(CC_IS_CLANG && CLANG_VERSION < 190103)
>  
> +config LD_CAN_USE_KEEP_IN_OVERLAY
> +    # ld.lld prior to 21.0.0 did not support KEEP within an overlay description
> +    # https://github.com/llvm/llvm-project/pull/130661
> +    def_bool LD_IS_BFD || LLD_VERSION >= 210000
> +
>  config RUSTC_HAS_COERCE_POINTEE
>      def_bool RUSTC_VERSION >= 108400
>  
> 







  reply	other threads:[~2025-03-11  8:20 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-24 12:54 [PATCH v2 1/2] ARM: substitute OVERLAY description in linker script Christian Eggers
2025-02-24 12:54 ` [PATCH v2 2/2] ARM: avoid that vectors are removed during linker garbage collection Christian Eggers
2025-02-27 23:22   ` Linus Walleij
2025-02-27 23:22 ` [PATCH v2 1/2] ARM: substitute OVERLAY description in linker script Linus Walleij
2025-03-04 18:49 ` kernel test robot
2025-03-10 20:37   ` Nathan Chancellor
2025-03-11  8:18     ` Christian Eggers [this message]
2025-03-11 19:17       ` Nathan Chancellor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2110116.YKUYFuaPT4@n9w6sw14 \
    --to=ceggers@arri.de \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=liuyuntao12@huawei.com \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=nathan@kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=rmk+kernel@armlinux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).