lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Mon, 6 Jun 2022 15:18:01 -0700
From:   Nick Desaulniers <ndesaulniers@...gle.com>
To:     Mauro Rossi <issor.oruam@...il.com>
Cc:     Nathan Chancellor <nathan@...nel.org>,
        Chih-Wei Huang <cwhuang@...roid-x86.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        clang-built-linux <llvm@...ts.linux.dev>
Subject: Re: arch/x86/entry/entry: RFC on recent kernels building error with
 llvm 11.0.2 internal assembler

On Mon, Jun 6, 2022 at 2:57 PM Mauro Rossi <issor.oruam@...il.com> wrote:
>
> On Sat, Jun 4, 2022 at 12:13 AM Nick Desaulniers
> <ndesaulniers@...gle.com> wrote:
> >
> > On Wed, Jun 1, 2022 at 5:57 AM Mauro Rossi <issor.oruam@...il.com> wrote:
> > >
> > > On Wed, Jun 1, 2022 at 12:09 AM Nick Desaulniers
> > > <ndesaulniers@...gle.com> wrote:
> > > >
> > > > 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
> >
> > LGTM
> >
> > > +#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
> >
> > Might need more info.  Do they boot when LLVM_IAS=0 is explicitly set
> > with your command line invocation of make? i.e. `make LLVM=1
> > LLVM_IAS=0 ...`?  Can you launch these kernels in qemu?
>
> Yes, kernel 5.17 and 5.18 built with LLVM=1 LLVM_IAS=0 do not cause
> instantaneus hard reboot and proceed in the boot stages
>
> The complete list of make variables Ihave used is as follows:
>
> LLVM=1 LLVM_IAS=0 \
>         CC=$(abspath $(LLVM_PREBUILTS_PATH)/clang) \
>         LD=$(abspath $(LLVM_PREBUILTS_PATH)/ld.lld) \
>         AR=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-ar) \
>         NM=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-nm) \
>         OBJCOPY=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-objcopy) \
>         OBJDUMP=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-objdump) \
>         READELF=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-readelf) \
>         OBJSIZE=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-size) \
>         STRIP=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-strip) \
>         HOSTCC=$(abspath $(LLVM_PREBUILTS_PATH)/clang) \
>         HOSTCXX=$(abspath $(LLVM_PREBUILTS_PATH)/clang++) \
>         HOSTLD=$(abspath $(LLVM_PREBUILTS_PATH)/ld.lld) \
>         HOSTLDFLAGS=-fuse-ld=lld \
>         HOSTAR=$(abspath $(LLVM_PREBUILTS_PATH)/llvm-ar)

You could probably simplify the above to:

$ PATH=$PATH:$LLVM_PREBUILTS_PATH make LLVM=1 LLVM_IAS=0

>
> >
> > >
> > > 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

Can you try a newer version of LLVM?  AOSP LLVM 11 is technically a
pre-release version somewhere between the LLVM 10 and 11 releases.  We
no longer support LLVM 10 with mainline, so it's hard to say if AOSP
LLVM 11.0.2 contains or does not contain problematic or necessary
commits.

Also, do you have a kernel tree I can fetch? I'd be happy to try to
boot the result in QEMU. Have you tried that?

> >
> > I think this combo should work; we are testing x86_64 with mainline
> > https://github.com/ClangBuiltLinux/continuous-integration2/blob/95b9a12cad31675118d61c26d0b541fa4e3c8f09/generator.yml#L1694
> >
> > Could be something in your .config files though.
> > --
> > Thanks,
> > ~Nick Desaulniers
>


-- 
Thanks,
~Nick Desaulniers

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ