From: Jesper Dangaard Brouer <brouer@redhat.com>
To: shuah <shuah@kernel.org>
Cc: "Alexei Starovoitov" <alexei.starovoitov@gmail.com>,
"Daniel Díaz" <daniel.diaz@linaro.org>,
"Andrii Nakryiko" <andrii.nakryiko@gmail.com>,
"Andrii Nakryiko" <andriin@fb.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
BPF-dev-list <bpf@vger.kernel.org>,
"Daniel Borkmann" <borkmann@iogearbox.net>,
"David Miller" <davem@davemloft.net>,
LKML <linux-kernel@vger.kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Anders Roxell" <anders.roxell@linaro.org>,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"open list:KERNEL SELFTEST FRAMEWORK"
<linux-kselftest@vger.kernel.org>,
brouer@redhat.com
Subject: Re: Kernel 5.5.4 build fail for BPF-selftests with latest LLVM
Date: Thu, 20 Feb 2020 17:37:40 +0100 [thread overview]
Message-ID: <20200220173740.7a3f9ad7@carbon> (raw)
In-Reply-To: <4a26e6c6-500e-7b92-1e26-16e1e0233889@kernel.org>
On Wed, 19 Feb 2020 17:47:23 -0700
shuah <shuah@kernel.org> wrote:
> On 2/19/20 5:27 PM, Alexei Starovoitov wrote:
> > On Wed, Feb 19, 2020 at 03:59:41PM -0600, Daniel Díaz wrote:
> >>>
> >>> When I download a specific kernel release, how can I know what LLVM
> >>> git-hash or version I need (to use BPF-selftests)?
> >
> > as discussed we're going to add documentation-like file that will
> > list required commits in tools.
> > This will be enforced for future llvm/pahole commits.
> >
> >>> Do you think it is reasonable to require end-users to compile their own
> >>> bleeding edge version of LLVM, to use BPF-selftests?
> >
> > absolutely.
>
> + linux-kselftest@vger.kernel.org
>
> End-users in this context are users and not necessarily developers.
I agree. And I worry that we are making it increasingly hard for
non-developer users.
> > If a developer wants to send a patch they must run all selftests and
> > all of them must pass in their environment.
> > "but I'm adding a tracing feature and don't care about networking tests
> > failing"... is not acceptable.
>
> This is a reasonable expectation when a developers sends bpf patches.
Sure. I have several versions on LLVM that I've compiled manually.
> >
> >>> I do hope that some end-users of BPF-selftests will be CI-systems.
> >>> That also implies that CI-system maintainers need to constantly do
> >>> "latest built from sources" of LLVM git-tree to keep up. Is that a
> >>> reasonable requirement when buying a CI-system in the cloud?
> >
> > "buying CI-system in the cloud" ?
> > If I could buy such system I would pay for it out of my own pocket to save
> > maintainer's and developer's time.
And Daniel Díaz want to provide his help below (to tests it on arch
that you likely don't even have access to). That sounds like a good
offer, and you don't even have to pay.
> >
> >> We [1] are end users of kselftests and many other test suites [2]. We
> >> run all of our testing on every git-push on linux-stable-rc, mainline,
> >> and linux-next -- approximately 1 million tests per week. We have a
> >> dedicated engineering team looking after this CI infrastructure and
> >> test results, and as such, I can wholeheartedly echo Jesper's
> >> sentiment here: We would really like to help kernel maintainers and
> >> developers by automatically testing their code in real hardware, but
> >> the BPF kselftests are difficult to work with from a CI perspective.
> >> We have caught and reported [3] many [4] build [5] failures [6] in the
> >> past for libbpf/Perf, but building is just one of the pieces. We are
> >> unable to run the entire BPF kselftests because only a part of the
> >> code builds, so our testing is very limited there.
> >>
> >> We hope that this situation can be improved and that our and everyone
> >> else's automated testing can help you guys too. For this to work out,
> >> we need some help.
> >
>
> It would be helpful understand what "help" is in this context.
>
> > I don't understand what kind of help you need. Just install the
> > latest tools.
I admire that you want to push *everybody* forward to use the latest
LLVM, but saying latest is LLVM devel git tree HEAD is too extreme.
I can support saying latest LLVM release is required.
As soon as your LLVM patches are accepted into llvm-git-tree, you will
add some BPF selftests that util this. Then CI-systems pull latest
bpf-next they will start to fail to compile BPF-selftests, and CI
stops. Now you want to force CI-system maintainer to recompile LLVM
from git. This will likely take some time. Until that happens
CI-system doesn't catch stuff. E.g. I really want the ARM tests that
Linaro can run for us (which isn't run before you apply patches...).
> What would be helpful is to write bpf tests such that older tests that
> worked on older llvm versions continue to work and with some indication
> on which tests require new bleeding edge tools.
>
> > Both the latest llvm and the latest pahole are required.
>
> It would be helpful if you can elaborate why latest tools are a
> requirement.
>
> > If by 'help' you mean to tweak selftests to skip tests then it's a nack.
> > We have human driven CI. Every developer must run selftests/bpf before
> > emailing the patches. Myself and Daniel run them as well before applying.
> > These manual runs is the only thing that keeps bpf tree going.
> > If selftests get to skip tests humans will miss those errors.
> > When I don't see '0 SKIPPED, 0 FAILED' I go and investigate.
> > Anything but zero is a path to broken kernels.
> >
> > Imagine the tests would get skipped when pahole is too old.
> > That would mean all of the kernel features from year 2019
> > would get skipped. Is there a point of running such selftests?
> > I think the value is not just zero. The value is negative.
> > Such selftests that run old stuff would give false believe
> > that they do something meaningful.
> > "but CI can do build only tests"... If 'helping' such CI means hurting the
> > key developer/maintainer workflow such CI is on its own.
> >
>
> Skipping tests will be useless. I am with you on that. However,
> figuring out how to maintain some level of backward compatibility
> to run at least older tests and warn users to upgrade would be
> helpful.
What I propose is that a BPF-selftest that use a new LLVM feature,
should return FAIL (or perhaps SKIP), when it is compiled with say one
release old LLVM. This will allow new-tests to show up in CI-systems
reports as FAIL, and give everybody breathing room to upgrade their LLVM
compiler.
> I suspect currently users are ignoring bpf failures because they
> are unable to keep up with the requirement to install newer tools
> to run the tests. This isn't great either.
Yes, my worry is also that we are simply making it too difficult for
non-developer users to run these tests. And I specifically want to
attract CI-systems to run these. And especially Linaro, who have
dedicated engineering team looking after their CI infrastructure, and
they explicitly in this email confirm my worry.
> Users that care are sharing their pain to see if they can get some
> help or explanation on why new tools are required every so often.
> I don't think everybody understands why. :)
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
next prev parent reply other threads:[~2020-02-20 16:38 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-19 12:30 Kernel 5.5.4 build fail for BPF-selftests with latest LLVM Jesper Dangaard Brouer
2020-02-19 13:28 ` Greg Kroah-Hartman
2020-02-19 13:42 ` Jesper Dangaard Brouer
2020-02-19 18:12 ` Greg Kroah-Hartman
2020-02-19 19:40 ` Jesper Dangaard Brouer
2020-02-19 20:20 ` Greg Kroah-Hartman
2020-02-19 16:41 ` Alexei Starovoitov
2020-02-19 17:03 ` Jesper Dangaard Brouer
2020-02-19 17:38 ` Andrii Nakryiko
2020-02-19 18:28 ` Jesper Dangaard Brouer
2020-02-19 18:38 ` Andrii Nakryiko
2020-02-19 20:06 ` Jesper Dangaard Brouer
2020-02-19 21:59 ` Daniel Díaz
2020-02-19 22:26 ` Andrii Nakryiko
2020-02-20 0:27 ` Alexei Starovoitov
2020-02-20 0:47 ` shuah
2020-02-20 16:37 ` Jesper Dangaard Brouer [this message]
2020-02-20 17:02 ` Bird, Tim
2020-02-20 17:26 ` Alexei Starovoitov
2020-02-20 17:41 ` Bird, Tim
2020-02-20 19:18 ` Alexei Starovoitov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200220173740.7a3f9ad7@carbon \
--to=brouer@redhat.com \
--cc=alexei.starovoitov@gmail.com \
--cc=anders.roxell@linaro.org \
--cc=andrii.nakryiko@gmail.com \
--cc=andriin@fb.com \
--cc=borkmann@iogearbox.net \
--cc=bpf@vger.kernel.org \
--cc=daniel.diaz@linaro.org \
--cc=davem@davemloft.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=toke@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.