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=-8.5 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 BC46DC55179 for ; Fri, 30 Oct 2020 08:47:04 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 ECEF72075E for ; Fri, 30 Oct 2020 08:47:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="xPP1sYpZ"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jLLjMFjF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ECEF72075E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject: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=F9kvmaOfSp1lk6v39jhS4TLFQCVeSrmtpXlnQfHaAa4=; b=xPP1sYpZoMmNBC2EXyFtIfUUk MJl25J6H6EhqNtnd05rBVqAUfU7eTNgGN/vCoeyV3BRvFh1qvvtmUHdCmYnOFxQZA8kaWXC3IHk+A +Dt7xwIMJtKHxk+osC9Bw1RAOp5Df+LIx7Hunr6bne6Z+a5I9sinHhKoAUs+1ese+xLkk7b/ufQnM SRC9HxKaptYfuVspR0v+P/RgBHJuYUGbmVoW0vg20U+Fow3Csn7HhblvitX7aTlGKCkEvCX4RefS5 L0H6NM6ECI72YYjXWuTJIqA2u12XS/joY+WIewJkg16N8fcgSpkQ0OmSf2mBDRy1sooLsYTdCV2Yk 4IEm7nLeg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kYQ2K-0007qG-Sy; Fri, 30 Oct 2020 08:45:28 +0000 Received: from mail-io1-xd41.google.com ([2607:f8b0:4864:20::d41]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kYQ2H-0007pt-5F for linux-arm-kernel@lists.infradead.org; Fri, 30 Oct 2020 08:45:26 +0000 Received: by mail-io1-xd41.google.com with SMTP id q25so6703524ioh.4 for ; Fri, 30 Oct 2020 01:45:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=arXj1pMkryH/+zfzLGl16G4pZfupwN8/Z2XQ3aN/Qec=; b=jLLjMFjFqJ50+Stf8Z8uAuoJ2QlaGYlWkPB1SmxiIpbMttRTLcKEAy6vXbyfYMDUbz mJO1fEZCOPQQ0xWoWjbyCMz/zleYTjjQy+o8n3I/vxjpsV3A5uApoxjbC0cLJZqizom4 Hzy40hVRVNGag1AN3OGJBrSlrtawFZRpjoxDOiqueHSNqgI0VUhLJFuG+20wdS4B3jzX 1MhnDc48kud9/ZuiQ0Txpk2BLyhNRFi/aM7ZOqPLh1CmIXEA4f36fzkS6hl0yImx4rqE 8ZlewAGiBHakQ/jgPirtUzw4qyVqkKx8NkfFlcA3qnv1lGSJ0UcD8ZGE9gn3jBF6iBgW Dn0g== 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; bh=arXj1pMkryH/+zfzLGl16G4pZfupwN8/Z2XQ3aN/Qec=; b=e2/8zH+Iyb1h5OaxyAzHnU6TIKavtFYruMw6+t/VQWxwJFtFsBDajpm6dPIGeRhcJx AhqqKrjKKOXpxyaNNMw9q1Lp3/RHIeAKhDli05E8aw64Wr2FUh4m0T57YZlxEMvGKMg2 qcNw4ah/6QmLx7ZGklv0TNzQNxeVVxrZW3rqZkCTjlZJfvKaOcoOs+Xxka5F4//NfU+3 4NQO/Eb1AzIw4JLiNNYUsX+yrILbJGnWbrou4kxCI1hD4+sgRNgschSrjZcFZE/xvvUt 0f6Dde2sjRNtBrjRuCHSMK2ZAqvEECbdFKQIBvUhKx4fMLCBW2drRwuqDTf2TznmsZKE LDlw== X-Gm-Message-State: AOAM532sfL4ZQqn+mjBNuxMFNb3db40XgNRgKEmN7C1GJ62QAbehX40j qw1uD7aGIHjwxbEh94HjXCU= X-Google-Smtp-Source: ABdhPJyJQhri99Od4Dpm6XkKePqseNTcT4zqC9Eae4da8zXK0F+DZ8tdlIcSfR1xraB6RazxwfeGhQ== X-Received: by 2002:a6b:cd83:: with SMTP id d125mr990196iog.174.1604047522789; Fri, 30 Oct 2020 01:45:22 -0700 (PDT) Received: from ubuntu-m3-large-x86 ([2604:1380:45f1:1d00::1]) by smtp.gmail.com with ESMTPSA id v88sm4798489ila.71.2020.10.30.01.45.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Oct 2020 01:45:21 -0700 (PDT) Date: Fri, 30 Oct 2020 01:45:19 -0700 From: Nathan Chancellor To: Ard Biesheuvel Subject: Re: [PATCH 0/5 v16] KASan for Arm Message-ID: <20201030084519.GA3748061@ubuntu-m3-large-x86> References: <20201019084140.4532-1-linus.walleij@linaro.org> <20201030002900.GA2248731@ubuntu-m3-large-x86> <20201030013228.GA2519055@ubuntu-m3-large-x86> <20201030075655.GA1848109@ubuntu-m3-large-x86> <20201030080438.GA1849056@ubuntu-m3-large-x86> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201030_044525_246881_ABB57A7C X-CRM114-Status: GOOD ( 44.16 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Florian Fainelli , Arnd Bergmann , Abbott Liu , Linus Walleij , Nick Desaulniers , Russell King , Mike Rapoport , clang-built-linux , Andrey Ryabinin , Will Deacon , Linux ARM 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 Fri, Oct 30, 2020 at 09:10:56AM +0100, Ard Biesheuvel wrote: > On Fri, 30 Oct 2020 at 09:04, Nathan Chancellor > wrote: > > > > On Fri, Oct 30, 2020 at 08:58:20AM +0100, Ard Biesheuvel wrote: > > > On Fri, 30 Oct 2020 at 08:57, Nathan Chancellor > > > wrote: > > > > > > > > On Fri, Oct 30, 2020 at 08:52:53AM +0100, Ard Biesheuvel wrote: > > > > > On Fri, 30 Oct 2020 at 02:32, Nathan Chancellor > > > > > wrote: > > > > > > > > > > > > On Thu, Oct 29, 2020 at 05:38:22PM -0700, Nick Desaulniers wrote: > > > > > > > On Thu, Oct 29, 2020 at 5:29 PM Nathan Chancellor > > > > > > > wrote: > > > > > > > > > > > > > > > > On Mon, Oct 19, 2020 at 10:41:35AM +0200, Linus Walleij wrote: > > > > > > > > > This is the 16th and final (knock on wood) version of > > > > > > > > > KASan for ARM32. > > > > > > > > > > > > > > > > > > Changes since v15: > > > > > > > > > > > > > > > > > > - Things now work on all boards we have tested on including > > > > > > > > > Broadcom and i.MX6Q. > > > > > > > > > > > > > > > > > > - Folded in a fix from Ard to PAGE_ALIGN() the end of > > > > > > > > > mappings making everything work on all Broadcom board. > > > > > > > > > > > > > > > > > > - Folded in a fix from Ahmad Fatoum making things work > > > > > > > > > with fortify on i.MX6Q. > > > > > > > > > > > > > > > > > > - Testing and testing and testing on build servers. > > > > > > > > > > > > > > > > > > - We are good to go. > > > > > > > > > > > > > > > > > > I will now put this in Russell's patch tracker for v5.11. > > > > > > > > > > > > > > > > > > There is a git branch you can pull in: > > > > > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator.git/log/?h=kasan > > > > > > > > > > > > > > > > > > This branch includes Ard's two patches already in Russell's > > > > > > > > > patch tracker. > > > > > > > > > > > > > > > > > > > > > > > > > > > Abbott Liu (1): > > > > > > > > > ARM: Define the virtual space of KASan's shadow region > > > > > > > > > > > > > > > > > > Andrey Ryabinin (3): > > > > > > > > > ARM: Disable KASan instrumentation for some code > > > > > > > > > ARM: Replace string mem* functions for KASan > > > > > > > > > ARM: Enable KASan for ARM > > > > > > > > > > > > > > > > > > Linus Walleij (1): > > > > > > > > > ARM: Initialize the mapping of KASan shadow memory > > > > > > > > > > > > > > > > > > Documentation/arm/memory.rst | 5 + > > > > > > > > > Documentation/dev-tools/kasan.rst | 4 +- > > > > > > > > > .../features/debug/KASAN/arch-support.txt | 2 +- > > > > > > > > > arch/arm/Kconfig | 10 + > > > > > > > > > arch/arm/boot/compressed/Makefile | 1 + > > > > > > > > > arch/arm/boot/compressed/string.c | 19 ++ > > > > > > > > > arch/arm/include/asm/kasan.h | 33 ++ > > > > > > > > > arch/arm/include/asm/kasan_def.h | 81 +++++ > > > > > > > > > arch/arm/include/asm/memory.h | 5 + > > > > > > > > > arch/arm/include/asm/pgalloc.h | 8 +- > > > > > > > > > arch/arm/include/asm/string.h | 26 ++ > > > > > > > > > arch/arm/include/asm/thread_info.h | 8 + > > > > > > > > > arch/arm/include/asm/uaccess-asm.h | 2 +- > > > > > > > > > arch/arm/kernel/entry-armv.S | 3 +- > > > > > > > > > arch/arm/kernel/entry-common.S | 9 +- > > > > > > > > > arch/arm/kernel/head-common.S | 7 +- > > > > > > > > > arch/arm/kernel/setup.c | 2 + > > > > > > > > > arch/arm/kernel/unwind.c | 6 +- > > > > > > > > > arch/arm/lib/memcpy.S | 3 + > > > > > > > > > arch/arm/lib/memmove.S | 5 +- > > > > > > > > > arch/arm/lib/memset.S | 3 + > > > > > > > > > arch/arm/mm/Makefile | 5 + > > > > > > > > > arch/arm/mm/kasan_init.c | 292 ++++++++++++++++++ > > > > > > > > > arch/arm/mm/mmu.c | 18 ++ > > > > > > > > > arch/arm/mm/pgd.c | 16 +- > > > > > > > > > arch/arm/vdso/Makefile | 2 + > > > > > > > > > 26 files changed, 561 insertions(+), 14 deletions(-) > > > > > > > > > create mode 100644 arch/arm/include/asm/kasan.h > > > > > > > > > create mode 100644 arch/arm/include/asm/kasan_def.h > > > > > > > > > create mode 100644 arch/arm/mm/kasan_init.c > > > > > > > > > > > > > > > > > > -- > > > > > > > > > 2.26.2 > > > > > > > > > > > > > > > > > > > > > > > > > After this series was applied and available in -next, ARCH=arm LLVM=1 > > > > > > > > allyesconfig builds started failing: > > > > > > > > > > > > > > > > $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- KCONFIG_ALLCONFIG=<(echo CONFIG_CPU_BIG_ENDIAN=n) LLVM=1 distclean allyesconfig vmlinux > > > > > > > > ... > > > > > > > > ld.lld: error: section: .exit.data is not contiguous with other relro sections > > > > > > > > ... > > > > > > > > > > > > > > > > $ git bisect ld: [3f267ec60b922eff2a5c90d532357a39f155b730] Add linux-next specific files for 20201029 > > > > > > > > # good: [23859ae44402f4d935b9ee548135dd1e65e2cbf4] Merge tag 'trace-v5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace > > > > > > > > git bisect start '3f267ec60b922eff2a5c90d532357a39f155b730' '23859ae44402f4d935b9ee548135dd1e65e2cbf4' > > > > > > > > # bad: [bfa70a4ea4bfa6f87b58cf8b90b88297389c92b7] Merge remote-tracking branch 'mtd/mtd/next' into master > > > > > > > > git bisect bad bfa70a4ea4bfa6f87b58cf8b90b88297389c92b7 > > > > > > > > # bad: [37a292dcf77532547f335ed5063d9169031c9b08] Merge remote-tracking branch 'sunxi/sunxi/for-next' into master > > > > > > > > git bisect bad 37a292dcf77532547f335ed5063d9169031c9b08 > > > > > > > > # good: [e6d922c77db276a16f0b7933c2a9951dc9c0052c] Merge remote-tracking branch 'drm-misc-fixes/for-linux-next-fixes' into master > > > > > > > > git bisect good e6d922c77db276a16f0b7933c2a9951dc9c0052c > > > > > > > > # bad: [cbe49fbb8f6c8d29bc1d9a5a9a742ef2c2eb6320] Merge remote-tracking branch 'mvebu/for-next' into master > > > > > > > > git bisect bad cbe49fbb8f6c8d29bc1d9a5a9a742ef2c2eb6320 > > > > > > > > # bad: [d0e12484e7e1ede73c538744cdbe9439f7335d01] Merge remote-tracking branch 'arm-soc/for-next' into master > > > > > > > > git bisect bad d0e12484e7e1ede73c538744cdbe9439f7335d01 > > > > > > > > # good: [24a23387c15f34bad2485a9e1c3b7ac6f0fb35a6] Merge branch 'asm-generic-cleanup' into asm-generic > > > > > > > > git bisect good 24a23387c15f34bad2485a9e1c3b7ac6f0fb35a6 > > > > > > > > # good: [3a8eb4d3421a2ca0f95ac3b1a8f012940d4f0d52] Merge remote-tracking branch 'kbuild/for-next' into master > > > > > > > > git bisect good 3a8eb4d3421a2ca0f95ac3b1a8f012940d4f0d52 > > > > > > > > # bad: [20f96e606509ee5084690179afe1810b95617a92] Merge branches 'fixes' and 'misc' into for-next > > > > > > > > git bisect bad 20f96e606509ee5084690179afe1810b95617a92 > > > > > > > > # good: [d6d51a96c7d63b7450860a3037f2d62388286a52] ARM: 9014/2: Replace string mem* functions for KASan > > > > > > > > git bisect good d6d51a96c7d63b7450860a3037f2d62388286a52 > > > > > > > > # good: [5615f69bc2097452ecc954f5264d784e158d6801] ARM: 9016/2: Initialize the mapping of KASan shadow memory > > > > > > > > git bisect good 5615f69bc2097452ecc954f5264d784e158d6801 > > > > > > > > # bad: [fc2933c133744305236793025b00c2f7d258b687] ARM: 9020/1: mm: use correct section size macro to describe the FDT virtual address > > > > > > > > git bisect bad fc2933c133744305236793025b00c2f7d258b687 > > > > > > > > # bad: [421015713b306e47af95d4d61cdfbd96d462e4cb] ARM: 9017/2: Enable KASan for ARM > > > > > > > > git bisect bad 421015713b306e47af95d4d61cdfbd96d462e4cb > > > > > > > > # first bad commit: [421015713b306e47af95d4d61cdfbd96d462e4cb] ARM: 9017/2: Enable KASan for ARMog > > > > > > > > > > > > > > > > An allyesconfig kernel compiled with clang does not link properly with > > > > > > > > ld.bfd without a workaround [1], which I do not have time to apply and > > > > > > > > test now but can later if it is relevant. I have not done any triage on > > > > > > > > this yet either but I wanted to get the report out in case there is > > > > > > > > anything obvious. > > > > > > > > > > > > > > > > [1]: https://github.com/ClangBuiltLinux/linux/issues/325 > > > > > > > > > > > > > > relro? smells like: > > > > > > > https://lore.kernel.org/lkml/20201016175339.2429280-1-ndesaulniers@google.com/T/#u > > > > > > > > > > > > > > > > > > > Huh, did not even realize that the error messages were the same, my bad! > > > > > > > > > > > > This issue is simple enough to produce by just adding CONFIG_KASAN=y to > > > > > > multi_v7_defconfig. I tried adding '-z norelro' to LDFLAGS_vmlinux in > > > > > > arch/arm/Makefile and it fixes the build error but the resulting kernel > > > > > > does not boot in QEMU. > > > > > > > > > > > > $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LLVM=1 distclean defconfig > > > > > > > > > > > > $ scripts/config -e KASAN > > > > > > > > > > > > $ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LLVM=1 olddefconfig zImage > > > > > > > > > > > > $ ~/cbl/github/boot-utils/boot-qemu.sh -a arm32_v7 -k . > > > > > > /home/nathan/cbl/github/boot-utils/images/arm/rootfs.cpio.zst: 3176448 bytes > > > > > > + timeout --foreground 3m unbuffer qemu-system-arm -machine virt -no-reboot -append 'console=ttyAMA0 ' -display none -initrd /home/nathan/cbl/github/boot-utils/images/arm/rootfs.cpio -kernel /home/nathan/src/linux-next/arch/arm/boot/zImage -m 512m -nodefaults -serial mon:stdio > > > > > > + RET=124 > > > > > > + set +x > > > > > > > > > > > > '-z norelro' boots fine without KASAN so I assume there is something up > > > > > > specifically with KASAN and LLVM for ARM. > > > > > > > > > > > > > > > > How long did you wait for it to boot? Booting a KASAN kernel under > > > > > QEMU emulation is going to be *very* slow. > > > > > > > > The timeout command above is 3m and there was no output from the kernel > > > > in that amount of time. What kind of time should I be reasonably > > > > expecting? > > > > > > > > > > 3 minutes is probably long enough. > > > > > > Do you see any output with 'earlycon=pl011,0x9000000' added to the > > > kernel command line? > > > > Yes. > > > > $ ~/cbl/github/boot-utils/boot-qemu.sh -a arm32_v7 -k . > > /home/nathan/cbl/github/boot-utils/images/arm/rootfs.cpio.zst: 3176448 bytes > > + timeout --foreground 3m unbuffer qemu-system-arm -machine virt -no-reboot -append 'console=ttyAMA0 earlycon=pl011,0x9000000 ' -display none -initrd /home/nathan/cbl/github/boot-utils/images/arm/rootfs.cpio -kernel /home/nathan/src/linux-next/arch/arm/boot/zImage -m 512m -nodefaults -serial mon:stdio > > [ 0.000000] Booting Linux on physical CPU 0x0 > > [ 0.000000] Linux version 5.10.0-rc1-next-20201029-dirty (nathan@ubuntu-m3-large-x86) (ClangBuiltLinux clang version 12.0.0 (https://github.com/llvm/llvm-project 1df8d7b4f23da304061bf30b617132f8ba9ab80a), LLD 12.0.0 (https://github.com/llvm/llvm-project 1df8d7b4f23da304061bf30b617132f8ba9ab80a)) #1 SMP Thu Oct 29 18:26:00 MST 2020 > > [ 0.000000] CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c5387d > > [ 0.000000] CPU: div instructions available: patching division code > > [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache > > [ 0.000000] OF: fdt: Machine model: linux,dummy-virt > > [ 0.000000] earlycon: pl11 at MMIO 0x09000000 (options '') > > [ 0.000000] printk: bootconsole [pl11] enabled > > [ 0.000000] Memory policy: Data cache writealloc > > [ 0.000000] efi: UEFI not found. > > [ 0.000000] cma: Reserved 64 MiB at 0x5c000000 > > [ 0.000000] Zone ranges: > > [ 0.000000] DMA [mem 0x0000000040000000-0x000000005fffffff] > > [ 0.000000] Normal empty > > [ 0.000000] HighMem empty > > [ 0.000000] Movable zone start for each node > > [ 0.000000] Early memory node ranges > > [ 0.000000] node 0: [mem 0x0000000040000000-0x000000005fffffff] > > [ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000005fffffff] > > [ 0.000000] kasan: Mapping kernel virtual memory block: c0000000-e0000000 at shadow: b7000000-bb000000 > > [ 0.000000] kasan: Mapping kernel virtual memory block: bf000000-c0000000 at shadow: b6e00000-b7000000 > > [ 0.000000] kasan: Kernel address sanitizer initialized > > [ 0.000000] psci: probing for conduit method from DT. > > [ 0.000000] psci: PSCIv0.2 detected in firmware. > > [ 0.000000] psci: Using standard PSCI v0.2 function IDs > > [ 0.000000] psci: Trusted OS migration not required > > [ 0.000000] percpu: Embedded 20 pages/cpu s49676 r8192 d24052 u81920 > > [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 130048 > > [ 0.000000] Kernel command line: console=ttyAMA0 earlycon=pl011,0x9000000 > > [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) > > [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) > > [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off > > [ 0.000000] Memory: 329852K/524288K available (21504K kernel code, 8544K rwdata, 14676K rodata, 2048K init, 4843K bss, 128900K reserved, 65536K cma-reserved, 0K highmem) > > [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 > > [ 0.000000] rcu: Hierarchical RCU implementation. > > [ 0.000000] rcu: RCU event tracing is enabled. > > [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=1. > > [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. > > [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 > > [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 > > [ 0.000000] GICv2m: range[mem 0x08020000-0x08020fff], SPI[80:143] > > [ 0.000000] random: get_random_bytes called from start_kernel+0x208/0x3d0 with crng_init=0 > > [ 0.000000] arch_timer: cp15 timer(s) running at 62.50MHz (virt). > > [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns > > [ 0.000156] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns > > [ 0.000565] Switching to timer-based delay loop, resolution 16ns > > [ 0.006124] Console: colour dummy device 80x30 > > [ 0.007840] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=625000) > > [ 0.011577] pid_max: default: 32768 minimum: 301 > > [ 0.014889] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) > > [ 0.015189] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) > > [ 0.043926] CPU: Testing write buffer coherency: ok > > [ 0.045820] CPU0: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable > > [ 0.057716] /cpus/cpu@0 missing clock-frequency property > > [ 0.058105] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 > > [ 0.070417] Setting up static identity map for 0x40300000 - 0x403000ac > > [ 0.075105] rcu: Hierarchical SRCU implementation. > > [ 0.084843] EFI services will not be available. > > [ 0.087124] smp: Bringing up secondary CPUs ... > > [ 0.087384] smp: Brought up 1 node, 1 CPU > > [ 0.087617] SMP: Total of 1 processors activated (125.00 BogoMIPS). > > [ 0.087878] CPU: All CPU(s) started in SVC mode. > > [ 0.105778] devtmpfs: initialized > > [ 0.283349] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0 > > [ 0.310896] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns > > [ 0.311679] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.312469] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.312803] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.313125] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.313445] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.313761] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.314082] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.314400] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.314718] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.315031] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.315338] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.315661] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.315979] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.316296] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.316608] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.316923] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.317234] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.317549] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.317860] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.318177] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.318493] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.318809] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.319133] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.319457] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.319774] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.320091] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.320593] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.320909] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.321220] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.321532] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.321844] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.322157] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.322475] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.322788] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.323098] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.323424] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.323738] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.324050] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.324358] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.324673] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.324988] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.325303] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.325624] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.325941] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.326255] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.326573] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.326883] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.327193] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.327510] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.327826] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.328138] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.328457] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.328767] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.329081] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.329400] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.329711] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.330021] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.330326] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.330780] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.331104] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.331417] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.331733] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.332054] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.332381] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.332696] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.333001] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.333320] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.333648] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.333964] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.334272] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.334580] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.334894] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.335212] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.335528] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.335846] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.336162] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.336482] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.336804] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.337124] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.337443] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.337761] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.338087] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.338414] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.338756] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.339074] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.339396] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.339737] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.340061] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.340379] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.340695] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.341161] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.341504] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.341843] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.342151] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.342492] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.342809] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.343129] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.343445] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.343761] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.344079] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.344410] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.344755] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.345066] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.345383] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.345719] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.346031] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.346350] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.346664] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.346976] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.347289] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.347642] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.347952] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.348275] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.348618] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.348930] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.349245] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.349563] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.349872] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.350191] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.350508] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.350832] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.351280] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.351632] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.351940] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.352257] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.352604] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.352918] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.353228] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.353543] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.353855] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.354170] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.354503] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.354833] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.355144] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.355477] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.355811] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.356133] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.356439] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.356757] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.357075] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.357381] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.357726] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.358037] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.358345] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.358663] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.358979] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.359287] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.359599] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.359911] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.360230] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.360549] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.360860] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.361313] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.361642] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.361953] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.362262] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.362578] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.362888] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.363205] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.363520] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.363821] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.364139] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.364445] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.364759] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.365070] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.365384] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.365695] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.366003] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.366306] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.366611] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.366924] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.367248] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.367569] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.367876] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.368197] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.368515] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.368829] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.369137] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.369454] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.369772] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.370079] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.370393] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.370709] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.371023] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.371490] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.371808] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.372122] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.372435] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > [ 0.372767] futex hash table entries: 256 (order: 2, 16384 bytes, linear) > > > > Then there is no output after that. > > > > Ouch. This looks like futex_init() is being called over and over > again, which is a core_initcall. > > This will need some dissecting of the binary, but we need to figure > out what is going on in the initcall dispatch code. > > If you build with symbols, you should be able to run it in the > debugger. Just set a breakpoint on futex_init() and step through the > code until you can observe how/why it is being called a second time. I have no idea how it is happening but futex_init keeps getting called from within itself, if I am reading gdb right? (gdb) hbreak futex_init Hardware assisted breakpoint 1 at 0xc2727fac: file kernel/futex.c, line 4028. (gdb) c Continuing. Breakpoint 1, futex_init () at kernel/futex.c:4028 4028 { (gdb) n 4035 futex_hashsize = roundup_pow_of_two(256 * num_possible_cpus()); (gdb) 4038 futex_queues = alloc_large_system_hash("futex", sizeof(*futex_queues), (gdb) 4035 futex_hashsize = roundup_pow_of_two(256 * num_possible_cpus()); (gdb) 4038 futex_queues = alloc_large_system_hash("futex", sizeof(*futex_queues), (gdb) 4043 futex_hashsize = 1UL << futex_shift; (gdb) 4045 futex_detect_cmpxchg(); (gdb) Breakpoint 1, futex_init () at kernel/futex.c:4028 4028 { (gdb) 4035 futex_hashsize = roundup_pow_of_two(256 * num_possible_cpus()); (gdb) 4038 futex_queues = alloc_large_system_hash("futex", sizeof(*futex_queues), (gdb) 4035 futex_hashsize = roundup_pow_of_two(256 * num_possible_cpus()); (gdb) 4038 futex_queues = alloc_large_system_hash("futex", sizeof(*futex_queues), (gdb) 4043 futex_hashsize = 1UL << futex_shift; (gdb) 4045 futex_detect_cmpxchg(); (gdb) If I step into futex_detect_cmpxchg(), I see us jump into vector_dabt then back out futex_init. (gdb) hbreak futex_init Hardware assisted breakpoint 1 at 0xc2727fac: file kernel/futex.c, line 4028. (gdb) hbreak futex_detect_cmpxchg Hardware assisted breakpoint 2 at 0xc27280c8: file kernel/futex.c, line 4008. (gdb) c Continuing. Breakpoint 1, futex_init () at kernel/futex.c:4028 4028 { (gdb) c Continuing. Breakpoint 2, futex_detect_cmpxchg () at kernel/futex.c:4008 4008 { (gdb) n 4022 if (cmpxchg_futex_value_locked(&curval, NULL, 0, 0) == -EFAULT) (gdb) vector_dabt () at arch/arm/kernel/entry-armv.S:1099 1099 vector_stub dabt, ABT_MODE, 8 (gdb) __dabt_svc () at arch/arm/kernel/entry-armv.S:194 194 svc_entry uaccess=0 (gdb) __dabt_svc () at arch/arm/kernel/entry-armv.S:195 195 mov r2, sp (gdb) 196 dabt_helper (gdb) 198 svc_exit r5 @ return from exception (gdb) 0xc0458040 in ?? () (gdb) Cannot find bounds of current function (gdb) finish Run till exit from #0 0xc0458040 in ?? () Breakpoint 1, futex_init () at kernel/futex.c:4028 4028 { (gdb) I am going to be honest, I do not really understand what is going on here but I am more than happy to provide whatever information is needed to further explore this. Cheers, Nathan _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel