From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B12BBC433E0 for ; Tue, 16 Mar 2021 19:10:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 70BC965143 for ; Tue, 16 Mar 2021 19:10:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240323AbhCPTJ5 (ORCPT ); Tue, 16 Mar 2021 15:09:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:55968 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236915AbhCPTJ1 (ORCPT ); Tue, 16 Mar 2021 15:09:27 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id EFBDA6513D; Tue, 16 Mar 2021 19:09:25 +0000 (UTC) Date: Tue, 16 Mar 2021 19:09:23 +0000 From: Catalin Marinas To: Arnd Bergmann Cc: Fangrui Song , Kees Cook , Will Deacon , Ard Biesheuvel , Mark Rutland , Marc Zyngier , David Brazdil , Linux ARM , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] arm64: vmlinux.lds.S: keep .entry.tramp.text section Message-ID: <20210316190921.GB28565@arm.com> References: <20210226140352.3477860-1-arnd@kernel.org> <202102261256.AF256702@keescook> <20210227043257.k3aernmnzsvitp7c@google.com> <20210316104530.GA7309@arm.com> <20210316162745.GA20565@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 16, 2021 at 05:39:27PM +0100, Arnd Bergmann wrote: > On Tue, Mar 16, 2021 at 5:27 PM Catalin Marinas wrote: > > On Tue, Mar 16, 2021 at 10:45:32AM +0000, Catalin Marinas wrote: > > > On Fri, Feb 26, 2021 at 08:32:57PM -0800, Fangrui Song wrote: > > > > On 2021-02-26, Kees Cook wrote: > > > > > On Fri, Feb 26, 2021 at 03:03:39PM +0100, Arnd Bergmann wrote: > > > > > > From: Arnd Bergmann > > > > > > > > > > > > When building with CONFIG_LD_DEAD_CODE_DATA_ELIMINATION, > > > > > > I sometimes see an assertion > > > > > > > > > > > > ld.lld: error: Entry trampoline text too big > > > > > > > > > > Heh, "too big" seems a weird report for having it discarded. :) > > > > > > > > > > Any idea on this Fangrui? > > > > > > > > > > ( I see this is https://github.com/ClangBuiltLinux/linux/issues/1311 ) > > > > > > > > This diagnostic is from an ASSERT in arch/arm64/kernel/vmlinux.lds > > > > > > > > ASSERT((__entry_tramp_text_end - __entry_tramp_text_start) == (1 << 16), > > > > "Entry trampoline text too big") > > > > > > Can we not change the ASSERT to be <= PAGE_SIZE instead? > > > > Ah, that won't work as I suspect we still need the trampoline section. > > > > Arnd, do you know why this section disappears? I did a simple test with > > defconfig + LD_DEAD_CODE_DATA_ELIMINATION and the trampoline section is > > still around. > > If I remember correctly, this showed up when CONFIG_ARM_SDE_INTERFACE > is disabled, which dropped the only reference into this section. > If that doesn't make sense, I can try digging through the old build logs to > reproduce the problem. I suspected this as well but still worked for me when disabling it. Anyway, I don't think identifying the exact option is necessary. With CONFIG_UNMAP_KERNEL_AT_EL0=y we need this section around even if only __entry_tramp_text_start/end are referenced. In this case we happened to detect this issue because of the ASSERT in vmlinux.lds.S but I wonder what else the linker drops with this dead code elimination that we may not notice (it seems to remove about 500KB from the resulting image in my test). I'll push these two patches to -next for wider coverage before deciding on mainline (though the option may not get much testing as it's hidden behind EXPERT and default n). -- Catalin From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9369AC433DB for ; Tue, 16 Mar 2021 19:12:05 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 259A865027 for ; Tue, 16 Mar 2021 19:12:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 259A865027 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=m37plkdWIzRkcAc/6lsS1A5Ja/Pbe/OPFAzXpC9aPCM=; b=nmJ8ZzabhhB+zOH12TSyNPuhA LtTtpVAkkLH5Zp4Obc9J7H/RegwKvqU83vGHDH5Im4wFciKFK3O/YCbYc+jmBCxASQf1iTB9YlC8/ CMGzvJ/SwURRoF2fk8q2Myfxtgbq8X7Ezbb+whWDwcrpgNNpaGQ7a6KdvidZaao0daT1/RQDhMIme gVyTHhV3NZLyoy3UVwcz2rXXXUdKS5uSrVA0WN537fBRcq+Zv7j3/F3KYArMOv+N6Mjr7I5wBFFrT JS1TW96Upyh1vOpQnQSVuixb/PsKvgXDF1ufLWqq/1b1sHn07vcd3cM68YHadJ1yBDFqLB31DcrQ+ u3GK7TBoQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMF4T-001gol-Tw; Tue, 16 Mar 2021 19:09:38 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMF4K-001gnm-W4 for linux-arm-kernel@lists.infradead.org; Tue, 16 Mar 2021 19:09:31 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id EFBDA6513D; Tue, 16 Mar 2021 19:09:25 +0000 (UTC) Date: Tue, 16 Mar 2021 19:09:23 +0000 From: Catalin Marinas To: Arnd Bergmann Cc: Fangrui Song , Kees Cook , Will Deacon , Ard Biesheuvel , Mark Rutland , Marc Zyngier , David Brazdil , Linux ARM , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] arm64: vmlinux.lds.S: keep .entry.tramp.text section Message-ID: <20210316190921.GB28565@arm.com> References: <20210226140352.3477860-1-arnd@kernel.org> <202102261256.AF256702@keescook> <20210227043257.k3aernmnzsvitp7c@google.com> <20210316104530.GA7309@arm.com> <20210316162745.GA20565@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210316_190929_309618_7A82BD42 X-CRM114-Status: GOOD ( 25.85 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, Mar 16, 2021 at 05:39:27PM +0100, Arnd Bergmann wrote: > On Tue, Mar 16, 2021 at 5:27 PM Catalin Marinas wrote: > > On Tue, Mar 16, 2021 at 10:45:32AM +0000, Catalin Marinas wrote: > > > On Fri, Feb 26, 2021 at 08:32:57PM -0800, Fangrui Song wrote: > > > > On 2021-02-26, Kees Cook wrote: > > > > > On Fri, Feb 26, 2021 at 03:03:39PM +0100, Arnd Bergmann wrote: > > > > > > From: Arnd Bergmann > > > > > > > > > > > > When building with CONFIG_LD_DEAD_CODE_DATA_ELIMINATION, > > > > > > I sometimes see an assertion > > > > > > > > > > > > ld.lld: error: Entry trampoline text too big > > > > > > > > > > Heh, "too big" seems a weird report for having it discarded. :) > > > > > > > > > > Any idea on this Fangrui? > > > > > > > > > > ( I see this is https://github.com/ClangBuiltLinux/linux/issues/1311 ) > > > > > > > > This diagnostic is from an ASSERT in arch/arm64/kernel/vmlinux.lds > > > > > > > > ASSERT((__entry_tramp_text_end - __entry_tramp_text_start) == (1 << 16), > > > > "Entry trampoline text too big") > > > > > > Can we not change the ASSERT to be <= PAGE_SIZE instead? > > > > Ah, that won't work as I suspect we still need the trampoline section. > > > > Arnd, do you know why this section disappears? I did a simple test with > > defconfig + LD_DEAD_CODE_DATA_ELIMINATION and the trampoline section is > > still around. > > If I remember correctly, this showed up when CONFIG_ARM_SDE_INTERFACE > is disabled, which dropped the only reference into this section. > If that doesn't make sense, I can try digging through the old build logs to > reproduce the problem. I suspected this as well but still worked for me when disabling it. Anyway, I don't think identifying the exact option is necessary. With CONFIG_UNMAP_KERNEL_AT_EL0=y we need this section around even if only __entry_tramp_text_start/end are referenced. In this case we happened to detect this issue because of the ASSERT in vmlinux.lds.S but I wonder what else the linker drops with this dead code elimination that we may not notice (it seems to remove about 500KB from the resulting image in my test). I'll push these two patches to -next for wider coverage before deciding on mainline (though the option may not get much testing as it's hidden behind EXPERT and default n). -- Catalin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel