Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp3031532rdb; Mon, 4 Dec 2023 14:52:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IE80/CZZjZbnodtzdlCtm4WExQRpBT+24Uj3JO477DuBHtc/PFvkxMauyKZGuOXLcDP/nJx X-Received: by 2002:a05:6a00:3288:b0:6ce:6cb5:fe81 with SMTP id ck8-20020a056a00328800b006ce6cb5fe81mr143880pfb.33.1701730326648; Mon, 04 Dec 2023 14:52:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701730326; cv=none; d=google.com; s=arc-20160816; b=zMuqlb+56hysnEIbWVkig3A7dl/2lfL2NVOlvoPje5t0OPmlktpmx06r3QjdtXYH4B bbvhzFm41qAMzUQ6NzmBNdmYqqp7vlXkyKMMVcvizoYOVMlAJLJp9J6tbgII4yDq0tIg Jf7Lbht7JAA/RSn4EcVJsh2P7Cy2iEs91Tqxy6SG/uadbkOmddhEtnIZ+yNVNJJp2q9W L8jmXcUZbkwfq6EruzDEKL+lrbsBud0XCg893aBAc7EP4vO+jcFhpCWdLx8MPv9/0SiG LqRKoU9pMmWVl+AOam1DweFsEQSpl5z7Xgn6y6AmsxDa9WScqHDjPMszm0yqLPGAUKrj tzRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=G+GstPoYhU577Q7H3rMEUhojeQE4YPSFVLOhY0cl6V0=; fh=BlBTfGy1xJO8D6AttSw8tBQ8d9GEBTvkPaduiWi2y6s=; b=MWrpBejI/TfSJkgM/uPmhWDWWSj0qT4QB471A5kwaNN2zGm3mIVZtbJqV9GNkCJQc/ m5r6ColvL7zQM3XnreDtJ7RBHzzGjCLkEK6qS3inpddP3iXtDZsv1eKVS7k2MJ3j+a90 XrEG2spgGZ/ukwBVMuPASd7Q/TBCioQNvBe25KDMitAs3CmNN3GZhL+YOaHj+sAofyYp vyupQhO4qx23qVElgXbYFPHCWPUAQhwR5koKQhfqGownUnM+k40YQTFUqrJ9irf1LZ1C rmyh1rv3jJs2MDp9zy7gJet7Uf9mYRyi5Dh2O4z5MTSWjCMNGPDRJY73J1ey89X49oPz xm5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=a3ZDkyh2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id y19-20020a056a001c9300b006ce61c266e3si1098173pfw.318.2023.12.04.14.52.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 14:52:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=a3ZDkyh2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 710E6809F386; Mon, 4 Dec 2023 14:52:03 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231411AbjLDWvp (ORCPT + 99 others); Mon, 4 Dec 2023 17:51:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229668AbjLDWvo (ORCPT ); Mon, 4 Dec 2023 17:51:44 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21A489A for ; Mon, 4 Dec 2023 14:51:51 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 36750C433C8; Mon, 4 Dec 2023 22:51:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701730310; bh=iEzFzN5srKwj/pYZXDgnZDTQQKCpoB6GASU+Xqwa6mA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=a3ZDkyh2bpKh8JseA3+i4SgPk6H55RJtemW2I8wAl/DDAcD0k8Ll0HTFlUfOpoFvr TB+0MNI6D0/MUnNnnAAgy+2ayR4GR3ToHJqxq3oWovx1ydNXaQYIR0SRBKStNahx07 Z+VZSMMXsyqIctUJmjd+xYexdydciiUA3Ye4g34rJSwW8FNSNjW2NxVHjjliHTkxtX FFiY+2kWoTXi8GCQBdeIQcohSENyHAT6wIPTzx+0HIyOmw7bnPGYiwxosglBskw4MW linlPJ6rqbrTMUt3V5n9SJCRc8ZZOghTgxEG+oWAU4IggFfsSEK46snit6VbAuRAAW Wyre5rfD+oHAg== Date: Mon, 4 Dec 2023 15:51:48 -0700 From: Nathan Chancellor To: Sylvestre Ledru Cc: Naresh Kamboju , clang-built-linux , Linux ARM , open list , Linux Regressions , lkft-triage@lists.linaro.org, Russell King - ARM Linux , Arnd Bergmann , Nick Desaulniers Subject: Re: clang-nightly: vdso/compat_gettimeofday.h:152:15: error: instruction variant requires ARMv6 or later Message-ID: <20231204225148.GA2094126@dev-arch.thelio-3990X> References: <20231204181304.GA2043538@dev-arch.thelio-3990X> <20231204223317.GA2053629@dev-arch.thelio-3990X> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 04 Dec 2023 14:52:03 -0800 (PST) On Mon, Dec 04, 2023 at 11:42:02PM +0100, Sylvestre Ledru wrote: > Hello, > > > Le 04/12/2023 ? 23:33, Nathan Chancellor a ?crit?: > > On Mon, Dec 04, 2023 at 11:13:04AM -0700, Nathan Chancellor wrote: > > > Hi Naresh, > > > > > > On Mon, Dec 04, 2023 at 05:33:26PM +0530, Naresh Kamboju wrote: > > > > Following build errors noticed on Linux next-20231204 tag with clang-nightly > > > > for arm and arm64. > > > > > > > > ## Test Regressions (compared to next-20231201) > > > > * arm64, build > > > > - clang-nightly-defconfig > > > > - clang-nightly-defconfig-40bc7ee5 > > > > - clang-nightly-lkftconfig > > > > - clang-nightly-lkftconfig-kselftest > > > > > > > > * arm, build > > > > - clang-nightly-allnoconfig > > > > - clang-nightly-axm55xx_defconfig > > > > - clang-nightly-bcm2835_defconfig > > > > - clang-nightly-clps711x_defconfig > > > > - clang-nightly-defconfig > > > > - clang-nightly-exynos_defconfig > > > > - clang-nightly-imx_v6_v7_defconfig > > > > - clang-nightly-keystone_defconfig > > > > - clang-nightly-lkftconfig > > > > - clang-nightly-lkftconfig-kselftest > > > > - clang-nightly-omap2plus_defconfig > > > > - clang-nightly-pxa910_defconfig > > > > - clang-nightly-s3c6400_defconfig > > > > - clang-nightly-s5pv210_defconfig > > > > - clang-nightly-sama5_defconfig > > > > - clang-nightly-shmobile_defconfig > > > > - clang-nightly-tinyconfig > > > > - clang-nightly-u8500_defconfig > > > > - clang-nightly-vexpress_defconfig > > > > > > > > > > > > Reported-by: Linux Kernel Functional Testing > > > > > > > > > > > > Build log on arm64: > > > > --------- > > > > In file included from lib/vdso/gettimeofday.c:5: > > > > In file included from include/vdso/datapage.h:135: > > > > arch/arm64/include/asm/vdso/compat_gettimeofday.h:152:15: error: > > > > instruction variant requires ARMv6 or later > > > > 152 | asm volatile("mov %0, %1" : "=r"(ret) : "r"(_vdso_data)); > > > > | ^ > > > > :1:2: note: instantiated into assembly here > > > > 1 | mov r4, r1 > > > > | ^ > > > > In file included from :3: > > > > lib/vdso/gettimeofday.c:139:3: error: invalid instruction > > > > 139 | smp_rmb(); > > > > | ^ > > > > > > > > Build log on arm: > > > > --------- > > > > In file included from arch/arm/vfp/vfpmodule.c:23: > > > > arch/arm/include/asm/cp15.h:101:2: error: instruction requires: data-barriers > > > > 101 | isb(); > > > > | ^ > > > This is caused by a change to Debian's LLVM that changes the internal > > > defaults of the arm-linux-gnueabi and arm-linux-gnueabihf tuples: > > > > > > https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/-/commit/907baf024b9a5a1626893d9e731b6c79ccf45c87 > > > > > > We use arm-linux-gnueabi for the kernel (see scripts/Makefile.clang) so > > > now we have a hardcoded armv5te CPU, even if we are building for armv7 > > > or such. > > > > > > I am still investigating into what (if anything) can be done to resolve > > > this on the kernel side. We could potentially revert commit > > > ddc72c9659b5 ("kbuild: clang: do not use CROSS_COMPILE for target > > > triple") but I am not sure that will save us from that change, as > > > tuxmake's CROSS_COMPILE=arm-linux-gnueabihf will cause us to have an > > > armv7 CPU even though we may not be building for armv7. > > Okay, this is a pretty awful situation the more I look into it :( > > > > The arm64 compat vDSO build is easy enough to fix because we require use > > of the integrated assembler, which means we can add '-mcpu=generic' (the > > default in LLVM for those files based on my debugging) to those files > > and be done with it: > > > > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile > > index 1f911a76c5af..5f5cb722cfc2 100644 > > --- a/arch/arm64/kernel/vdso32/Makefile > > +++ b/arch/arm64/kernel/vdso32/Makefile > > @@ -9,6 +9,10 @@ include $(srctree)/lib/vdso/Makefile > > ifeq ($(CONFIG_CC_IS_CLANG), y) > > CC_COMPAT ?= $(CC) > > CC_COMPAT += --target=arm-linux-gnueabi > > +# Some distributions (such as Debian) change the default CPU for the > > +# arm-linux-gnueabi target triple, which can break the build. Explicitly set > > +# the CPU to generic, which is the default for Linux in LLVM. > > +CC_COMPAT += -mcpu=generic > > else > > CC_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc > > endif > > > > The failures for all the ARCH=arm configurations appear to be much more > > difficult to fix because the default CPU value changes based on the > > '-march' value, which basically means that we would have to hardcode > > LLVM's default CPU logic into the kernel's Makefile, which is just not > > maintainable in my opinion. Just doing a multi_v7_defconfig build of > > arch/arm/ shows the value returned from ARM::getARMCPUForArch() in > > llvm/lib/TargetParser/ARMTargetParser.cpp can vary between "arm7tdmi" or > > "generic". Supplying '-mcpu=generic' explicitly won't work with > > LLVM_IAS=0 because GNU as does not support it and clang just happily > > passes it along, even though it does not do that in the implicit default > > case. > > > > Sylvestre, I strongly believe you should consider reverting that change > > or give us some compiler flag that allows us to fallback to upstream > > LLVM's default CPU selection logic. I think that hardcoding Debian's > > architecture defintions based on the target triple into the compiler > > could cause issues for other projects as well. For example, > > '--target=arm-linux-gnueabi -march=armv7-a' won't actually target ARMv7: > > > > $ echo 'int main(void) { asm("dsb"); return 0; }' | \ > > clang --target=arm-linux-gnueabi -march=armv7-a \ > > -x c -c -o /dev/null -v - > > ... > > "/usr/bin/clang-17" -cc1 -triple armv7-unknown-linux-gnueabi ... > > ... > > > > vs. > > > > $ echo 'int main(void) { asm("dsb"); return 0; }' | \ > > clang --target=arm-linux-gnueabi -march=armv7-a \ > > -x c -c -o /dev/null -v - > > ... > > "/bin/clang-18" -cc1 -triple armv5e-unknown-linux-gnueabi ... > > ... > > > I guess it is this patch, right? > > https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/-/commit/97633b6d51ebc8579c5dbecd12a02fb933620620 Right, I should have made that clearer when bringing you in (I linked to the snapshot version of that change further up in the thread). > if so, do you want me to revert it? Yes, I think it should be reverted. Cheers, Nathan