From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A50E6366 for ; Wed, 1 Jun 2022 12:57:46 +0000 (UTC) Received: by mail-pl1-f172.google.com with SMTP id h1so1705014plf.11 for ; Wed, 01 Jun 2022 05:57:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AcIRtYOJLSzuRssnzfJVtzfKr0+ChYvv9prLqxP1I5s=; b=SHG1oE1XEAyxFt4cAXfSoE6o/bWFzDd/edK/hX6u++QQo03OWJbzt1GeJ6ZQgPLuLM O4ei4bnaUbGd5Lnm9Vh13w/UXIpVvS4WeyN38CKwCoj/PWRePXFUL+fmShT+10iLe9iF U7WFyhysCzd86F38KgNlEyf2tluDtZtrmVun+VQ33hkxRjnFMNc8bANmIYLa4jzmMDCm TIyvtRlhjbgt8TJm7R+xqZUZrf3pF6cWtyVUSvyf39DcGIv7JPEWKrC1KRxhoJRDexk0 IhUFvISrdcLrAVMOrdsRsvB7C/Fkh9FDihpq/em2XdPmc9pE5bztazD5X+sYIcCITRKt 6ehg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AcIRtYOJLSzuRssnzfJVtzfKr0+ChYvv9prLqxP1I5s=; b=1xK2VrBhRWRuCutjGMXiEvXS1q+sM/fNFiK4GLu+raTGqn8RJ2G2DQ/Px82z4HYU4X 6Sj5yYb7FRDgGLKN6dQyZ64fDc24fYCo+T2bWi2OiAtGI9GCdrzmg6bPSjEWJqshvLxP OwgpsKncGGqeElLDGrU64RxH00iE/u1RkPFLzLwJGY1gLK3FgXN4YdtSZ3nZlqqEmS+b H1K+51LInEgvUzwmdZa0t2P5/NZSHg6RxWD9Kp2O4W0x6PUzK6u3w3X8tO9UXYuPPeHM cL9fDufICj7AdMZXdKjeMEt7KuAai4vJG1nA6zNwJl/fyc33zxnlO9IwxjPv08Y1nFFc KEiw== X-Gm-Message-State: AOAM532MtjCZRen2iYxjDXVbmQYxXriNSeahZ0/+imC30E6WKgM1Mb2z wJXzFeOuXBMHrEyEQ4ScfggBS53zsQ8tOZyhrho= X-Google-Smtp-Source: ABdhPJyR/n91fsUDJNMDgnHO3eQR32QRPYx6OFVi00/UExDKCU6gtw59Aap5tc4DOA+AYngA1fBkhDDQyyQCMLyTpbM= X-Received: by 2002:a17:902:bf4c:b0:15c:3d1b:8a47 with SMTP id u12-20020a170902bf4c00b0015c3d1b8a47mr68608437pls.118.1654088265704; Wed, 01 Jun 2022 05:57:45 -0700 (PDT) Precedence: bulk X-Mailing-List: llvm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: In-Reply-To: From: Mauro Rossi Date: Wed, 1 Jun 2022 14:57:34 +0200 Message-ID: Subject: Re: arch/x86/entry/entry: RFC on recent kernels building error with llvm 11.0.2 internal assembler To: Nick Desaulniers Cc: Nathan Chancellor , luto@kernel.org, Chih-Wei Huang , Linux Kernel Mailing List , clang-built-linux Content-Type: text/plain; charset="UTF-8" On Wed, Jun 1, 2022 at 12:09 AM Nick Desaulniers wrote: > > On Sun, May 29, 2022 at 10:52 AM Mauro Rossi wrote: > > > > > > > > On Mon, May 9, 2022 at 2:07 AM Nathan Chancellor wrote: > >> > >> On Sat, May 07, 2022 at 02:19:00PM +0200, Mauro Rossi wrote: > >> > > > Alternatively, you could apply the hack that Nick inserted into Android > >> > > > for this issue if upgrading your toolchain or turning off the integrated > >> > > > assembler is not possible: > >> > > > > >> > > > https://android.googlesource.com/kernel/common/+/e58f084735b8abf744d61083b92172ee23d45aae > >> > > > > >> > > > I really do not mean to sound dismissive or rude, I apologize if it > >> > > > comes off that way, but we have worked quite hard to avoid inserting > >> > > > unnecessary workarounds, as they are ultimately technical debt that can > >> > > > be hard to manage over the long term. > >> > > > > >> > > > Cheers, > >> > > > Nathan > >> > > > >> > > Thanks a lot Nathan > >> > > > >> > > It is definitely the clang version 11.0.x which is not updated in aosp > >> > > Android 11 production tags > >> > > > >> > > I will use Nick's workaround which works since only lsl %rax, %rax is > >> > > currently happening > >> > > > >> > > Many thanks, problem solved > >> > > >> > Hello, > >> > I'm back again because I was assuming that Nick's workaround was working ok, > >> > but I have found that ARCH=x86_64 i.e. 64bit built kernel is causing > >> > an immediate hard reboot at initrd execution, > >> > just after hitting [ENTER] at grub/efi menu. > >> > >> It looks like there was a follow up fix for that workaround, maybe that > >> resolves this issue as well? > >> > >> https://android.googlesource.com/kernel/common/+/cc7f7a84191f5defc2ea4633eeea4acb4486b549 > >> > >> > ARCh=x86 i.e. 32bit kernel binary is not affected, but is Nick's > >> > workaround targeting 32 bit kernel builds? > >> > >> No, the file that the build error originates from (entry_64.S) is only > >> built on x86_64. > >> > >> > How do aosp android-mailine kernels avoid this instantaneous hard reboot issue? > >> > >> That hack was reverted once the toolchain was upgraded: > >> > >> https://android.googlesource.com/kernel/common/+/ff0216d09fd31802537f2d1702ec2f3e9be73aa3 > >> https://android.googlesource.com/kernel/common/+/3c2c8d8f7f2639e319212d10cb8df5bd13098dae > >> > >> Cheers, > >> Nathan > > > > > > Hello, > > > > sorry i still have the issue when building with hack "ANDROID: x86: entry: work around LLVM_IAS=1 bug in LSL" > > I'd just like to understand why I get instant reboot in 64bit kernel built with LLVM_IAS=1 > > As Nathan noted, I messed up the commit "ANDROID: x86: entry: work > around LLVM_IAS=1 bug in LSL". Please see: > https://android-review.googlesource.com/c/kernel/common/+/1521061 > https://android-review.googlesource.com/c/kernel/common/+/1560152/ > > If you're using an older toolchain, you'll need just the first. If > you're using a newer toolchain, you'll need BOTH (or none, including > dropping "ANDROID: x86: entry: work around LLVM_IAS=1 bug in LSL"). Thanks Nick, I had already applied the squashed commit composed of "ANDROID: x86: entry: work around LLVM_IAS=1 bug in LSL" (the one using .quad) and "ANDROID: x86: entry: fix LSL open coding", so I have already: .macro LOAD_CPU_AND_NODE_SEG_LIMIT reg:req movq $__CPUNODE_SEG, \reg +#ifdef __clang__ +.long 0xc0030f48 +#else lsl \reg, \reg +#endif .endm So in principle my kernel image should boot when built with LLVM_IAS=1 but to my surprise all my systems (Sony VAIO i7, Intel NUC DN2820FYKH with Celeron D2830, Athlon 200GE) are affected by hard reboot when executing the kernel image I'm trying to understand how to build (and boot) with LLVM_IAS=1 and using clang 11.0.2 shipped with AOSP Android 11 > > > > > I searched for the places where #include "calling.h" is used > > > > utente@utente-3TB:~/r-x86_kernel/kernel$ grep -r \#include\ \"calling > > arch/x86/entry/thunk_64.S:#include "calling.h" > > arch/x86/entry/entry_32.S:#include "calling.h" > > arch/x86/entry/entry_64_compat.S:#include "calling.h" > > arch/x86/entry/entry_64.S:#include "calling.h" > > > > Probably the hardcoding done in the hack is impacting some other asm target built in 64 bit kernel and causes a wrong X86 instruction , is there a way to refine the #if to avoid that problem while still building with LLVM_IAS=1 ? > > > > Thanks for the info > > Mauro > > > > > > > -- > Thanks, > ~Nick Desaulniers