Received: by 10.223.185.116 with SMTP id b49csp5368981wrg; Wed, 7 Mar 2018 10:33:02 -0800 (PST) X-Google-Smtp-Source: AG47ELtzUKIg6lXN1S6cFj0aCyk04IjZPms7V0oaEmZ5CQfiYQKostvovYcfJRr0ZCHNsg2rw4hJ X-Received: by 10.99.114.18 with SMTP id n18mr18713371pgc.169.1520447582125; Wed, 07 Mar 2018 10:33:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520447582; cv=none; d=google.com; s=arc-20160816; b=tJN80M53Y3ipybciR+tRlWlGgso0SqfVOJK8iyHtIgVeZ32zCyTrCmqKUGjkPiIg0+ 130sdzRbntD0Kf4DeYWdjmrgyomXfCOXs6luMWCr+0zmxtqlIS1Ur7NxjcupVcbmCEr+ e8RY+nA5MdH7x2HdaRoqRehZ8eV2OtvRGTfvqQs7poO6ch7XIBoaASWcRcB2DZvYRfJa UVfUa6z0RoZ9uQbqEqrMMsnztb7+wtsT3vTooB6x70yaObDwbtdJPaomENHkGtiUDZKZ m073wozdhBlM3QNkIYJ2MDG4ts/ZUX1XhuN4ZaOo5SCj2mZJzFwO0IsQxIAIeIQ27B2A yCZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=pmmSXGCz4VX/sbWb2r9P3sbdCdfuEXE63r7E+pVowDk=; b=Dfu/LivNbbdz1diWqAfvJVyO8oETV7UxqEKAcf/P41u5BJJUO54PI4pIb1zfkjlmHb K7hfBXWXznuJTOtOKYd9jHMbWOrNu3vCnGGpLqMq4hvTZCm7Fg5o0iSedbF+Zu7GGHxL 8xew+jdwAbSoi0Rs105seDtpOTbLu/onEJHtd8uF4JBfR4byyXO60lhPSnPK+pl4sQX0 1PuKhvVMD8L/mp8Dqi0W07lchDCrf/TD+FYen/RfhxPH6joKHafNeTKwrJyB+HoElVHv NXmUb2XH2SGVBh3nnSTjLix8ryd9Jpg8pJHx8CHKDsx2AniEHIBROwYvFDSB/HMYMs0e WaFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=K7sFrnYt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d21si14261073pfk.328.2018.03.07.10.32.47; Wed, 07 Mar 2018 10:33:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=K7sFrnYt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754698AbeCGSbC (ORCPT + 99 others); Wed, 7 Mar 2018 13:31:02 -0500 Received: from mail-pf0-f194.google.com ([209.85.192.194]:41682 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753949AbeCGSbB (ORCPT ); Wed, 7 Mar 2018 13:31:01 -0500 Received: by mail-pf0-f194.google.com with SMTP id f80so1270734pfa.8 for ; Wed, 07 Mar 2018 10:31:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=pmmSXGCz4VX/sbWb2r9P3sbdCdfuEXE63r7E+pVowDk=; b=K7sFrnYtlRKHk4n1itgx6CCWXiHmBzvWc2QmAwAnyc78mNUXnpumtUr06i3qCWkIVm LS68jK3UK97dYbKfsDMgAaj2hrc9wpi9Idm0M+bWABt6FyvLeXxA812owShwkP4hDwYh edzih1eGNqTKpi4T9g5DP4/z41nceLDuukuNU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=pmmSXGCz4VX/sbWb2r9P3sbdCdfuEXE63r7E+pVowDk=; b=P7YvcmQULeMxsGhSVUVrj8Ds+Me4zdaFYtzvBXpSCweFwEzh/dZ0OIjKclXv4XpjKe myTh8s58Mlqo0h3WItSq+nM/MoxdrWFIE3YuIDQn8Gcw1hyvlPksBuxEOFBJgSIgUfDa V9lVgLZUK3TLvzkhRV9GLeCa0O5UrR89206slYX14EQnCvvas3WFemSZaW3laKdso/Ji r/MTDmRtDky1M2LGfbCu0fKPQ8wlHtAdtK8MsI6F2aZVAT9pOv4kPFaYFMqrF195tUbf N6WIoa3tqWStm0gTbEZHjB641VnRpIh1Ocl3zA8wI3UQ9B2o1gVz0gtySgOSlbE3Z4mP N4+Q== X-Gm-Message-State: APf1xPBMboUhf2zJZIgV1BJEwehax1EtWURTZAXp/5AGpNIgnxE3pjeK PyfCKaf71Ar1jN82NXcVt9r76w== X-Received: by 10.98.246.16 with SMTP id x16mr22026089pfh.81.1520447460804; Wed, 07 Mar 2018 10:31:00 -0800 (PST) Received: from localhost ([2620:0:1000:1501:8e2d:4727:1211:622]) by smtp.gmail.com with ESMTPSA id d64sm35724508pfa.118.2018.03.07.10.30.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Mar 2018 10:31:00 -0800 (PST) Date: Wed, 7 Mar 2018 10:30:59 -0800 From: Matthias Kaehlcke To: Arnd Bergmann Cc: Nicolas Pitre , Andi Kleen , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/7] ARM: LTO: avoid THUMB2_KERNEL+LTO Message-ID: <20180307183059.GA57047@google.com> References: <20180220215954.4092811-1-arnd@arndb.de> <20180220215954.4092811-3-arnd@arndb.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180220215954.4092811-3-arnd@arndb.de> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org El Tue, Feb 20, 2018 at 10:59:49PM +0100 Arnd Bergmann ha dit: > Trying to build an LTO-Enabled kernel with Thumb2 instructions failed > horribly for me, with an endless output of things like > > ccVnNycO.s:2665: Error: thumb conditional instruction should be in IT block -- `bxne lr' > ccVnNycO.s:7128: Error: thumb conditional instruction should be in IT block -- `strexeq r5,r2,[r3]' > ccVnNycO.s:7258: Error: thumb conditional instruction should be in IT block -- `strexeq lr,r0,[r3]' > ccVnNycO.s:17380: Error: thumb conditional instruction should be in IT block -- `strexeq r1,r2,[r6]' > ccVnNycO.s:19163: Error: thumb conditional instruction should be in IT block -- `strexeq r8,r6,[r3]' > ccVnNycO.s:22722: Error: thumb conditional instruction should be in IT block -- `strexeq r7,r1,[r0]' > ccVnNycO.s:24105: conditional infixes are deprecated in unified syntax > ccVnNycO.s:24105: Error: thumb conditional instruction should be in IT block -- `sbcccs r1,r1,r3' > ccVnNycO.s:24105: Error: thumb conditional instruction should be in IT block -- `movcc r3,#0' > ccVnNycO.s:24210: conditional infixes are deprecated in unified syntax > ccVnNycO.s:24210: Error: thumb conditional instruction should be in IT block -- `sbcccs r2,r2,r3' > ccVnNycO.s:24210: Error: thumb conditional instruction should be in IT block -- `movcc r3,#0' For the record: The errors about sbcccs and movcc probably stem from here: /* We use 33-bit arithmetic here... */ #define __range_ok(addr, size) ({ \ unsigned long flag, roksum; \ __chk_user_ptr(addr); \ __asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \ : "=&r" (flag), "=&r" (roksum) \ : "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \ : "cc"); \ flag; }) arch/arm/include/asm/uaccess.h I stumbled across this when trying to build a 32-bit ARM kernel with clang. This post has some more information: https://lists.linuxfoundation.org/pipermail/llvmlinux/2012-November/000073.html "This is a problem with the above Linux inline ASM code, not with Clang, nor with gas. It appears the new "Unified syntax" for ARM ASM code now used by gas doesn't allow the use of conditional infixes anymore (the CC part)." Unfortunately I'm probably not fluent enough with ARM inline assembly to come up with a good alternative. Matthias > I did not investigate this too much, disabling Thumb2 support when LTO is > set lets me build randconfig kernels. > > Since ARM_SINGLE_ARMV7M is Thumb2-only, I have to disallow LTO for V7-M > targets. > > Signed-off-by: Arnd Bergmann > --- > arch/arm/Kconfig | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index 8ed0f664f86f..fbf2c3ab9a97 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -18,7 +18,7 @@ config ARM > select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX > select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7 > select ARCH_SUPPORTS_ATOMIC_RMW > - select ARCH_SUPPORTS_LTO > + select ARCH_SUPPORTS_LTO if !ARM_SINGLE_ARMV7M > select ARCH_USE_BUILTIN_BSWAP > select ARCH_USE_CMPXCHG_LOCKREF > select ARCH_WANT_IPC_PARSE_VERSION > @@ -1533,6 +1533,7 @@ config SCHED_HRTICK > config THUMB2_KERNEL > bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY > depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K > + depends on !LTO > default y if CPU_THUMBONLY > select ARM_UNWIND > help