From: dthaler1968@googlemail.com
To: <bpf@ietf.org>
Cc: <bpf@vger.kernel.org>
Subject: Standardizing BPF assembly language?
Date: Tue, 23 Jan 2024 08:45:32 -0800 [thread overview]
Message-ID: <1b5d01da4e1b$95506b50$bff141f0$@gmail.com> (raw)
At LSF/MM/BPF 2023, Jose gave a presentation about BPF assembly
language (http://vger.kernel.org/bpfconf2023_material/compiled_bpf.txt).
Jose wrote in that link:
> There are two dialects of BPF assembler in use today:
>
> - A "pseudo-c" dialect (originally "BPF verifier format")
> : r1 = *(u64 *)(r2 + 0x00f0)
> : if r1 > 2 goto label
> : lock *(u32 *)(r2 + 10) += r3
>
> - An "assembler-like" dialect
> : ldxdw %r1, [%r2 + 0x00f0]
> : jgt %r1, 2, label
> : xaddw [%r2 + 2], r3
During Jose's talk, I discovered that uBPF didn't quote match the second
dialect
and submitted a bug report. By the time the conference was over, uBPF had
been updated to match GCC, so that discussion worked to reduce the number of
variants.
As more instructions get added and supported by more tools and compilers
there's the risk of even more variants unless it's standardized.
Hence I'd recommend that BPF assembly language get documented in some WG
draft. If folks agree with that premise, the first question is then: which
document?
One possible answer would be the ISA document that specifies the
instructions,
since that would the IANA registry could list the assembly for each
instruction,
and any future documents that add instructions would necessarily need to
specify
the assembly for them, preventing variants from springing up for new
instructions.
A second question would be, which dialect(s) to standardize. Jose's link
above
argues that the second dialect should be the one standardized (tools are
free to
support multiple dialects for backwards compat if they want). See the link
for
rationale.
Thoughts?
Dave
WARNING: multiple messages have this Message-ID (diff)
From: dthaler1968=40googlemail.com@dmarc.ietf.org
To: <bpf@ietf.org>
Cc: <bpf@vger.kernel.org>
Subject: [Bpf] Standardizing BPF assembly language?
Date: Tue, 23 Jan 2024 08:45:32 -0800 [thread overview]
Message-ID: <1b5d01da4e1b$95506b50$bff141f0$@gmail.com> (raw)
Message-ID: <20240123164532.rNgLuThIBbJ4pBg1tOCacM5AyM2JMpdXaHiVxhrC2Zw@z> (raw)
At LSF/MM/BPF 2023, Jose gave a presentation about BPF assembly
language (http://vger.kernel.org/bpfconf2023_material/compiled_bpf.txt).
Jose wrote in that link:
> There are two dialects of BPF assembler in use today:
>
> - A "pseudo-c" dialect (originally "BPF verifier format")
> : r1 = *(u64 *)(r2 + 0x00f0)
> : if r1 > 2 goto label
> : lock *(u32 *)(r2 + 10) += r3
>
> - An "assembler-like" dialect
> : ldxdw %r1, [%r2 + 0x00f0]
> : jgt %r1, 2, label
> : xaddw [%r2 + 2], r3
During Jose's talk, I discovered that uBPF didn't quote match the second
dialect
and submitted a bug report. By the time the conference was over, uBPF had
been updated to match GCC, so that discussion worked to reduce the number of
variants.
As more instructions get added and supported by more tools and compilers
there's the risk of even more variants unless it's standardized.
Hence I'd recommend that BPF assembly language get documented in some WG
draft. If folks agree with that premise, the first question is then: which
document?
One possible answer would be the ISA document that specifies the
instructions,
since that would the IANA registry could list the assembly for each
instruction,
and any future documents that add instructions would necessarily need to
specify
the assembly for them, preventing variants from springing up for new
instructions.
A second question would be, which dialect(s) to standardize. Jose's link
above
argues that the second dialect should be the one standardized (tools are
free to
support multiple dialects for backwards compat if they want). See the link
for
rationale.
Thoughts?
Dave
--
Bpf mailing list
Bpf@ietf.org
https://www.ietf.org/mailman/listinfo/bpf
next reply other threads:[~2024-01-23 16:45 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-23 16:45 dthaler1968 [this message]
2024-01-23 16:45 ` [Bpf] Standardizing BPF assembly language? dthaler1968=40googlemail.com
2024-01-23 21:31 ` David Vernet
2024-01-23 21:31 ` David Vernet
2024-01-23 21:41 ` dthaler1968
2024-01-23 21:41 ` dthaler1968=40googlemail.com
2024-01-23 21:52 ` David Vernet
2024-01-23 21:52 ` David Vernet
2024-01-23 23:15 ` dthaler1968
2024-01-23 23:15 ` dthaler1968=40googlemail.com
2024-01-25 2:51 ` Alexei Starovoitov
2024-01-25 2:51 ` Alexei Starovoitov
2024-01-27 5:29 ` David Vernet
2024-01-27 5:29 ` David Vernet
2024-01-25 3:13 ` Watson Ladd
2024-01-25 3:13 ` Watson Ladd
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='1b5d01da4e1b$95506b50$bff141f0$@gmail.com' \
--to=dthaler1968@googlemail.com \
--cc=bpf@ietf.org \
--cc=bpf@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).