Re: [Bpf] Review of draft-thaler-bpf-isa-01

Alexei Starovoitov <alexei.starovoitov@gmail.com> Sat, 29 July 2023 00:52 UTC

Return-Path: <alexei.starovoitov@gmail.com>
X-Original-To: bpf@ietfa.amsl.com
Delivered-To: bpf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 05101C151075 for <bpf@ietfa.amsl.com>; Fri, 28 Jul 2023 17:52:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.106
X-Spam-Level:
X-Spam-Status: No, score=-7.106 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NTUy-lmlE54D for <bpf@ietfa.amsl.com>; Fri, 28 Jul 2023 17:52:27 -0700 (PDT)
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A93ACC151078 for <bpf@ietf.org>; Fri, 28 Jul 2023 17:52:27 -0700 (PDT)
Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-2b9c66e2e36so27200471fa.1 for <bpf@ietf.org>; Fri, 28 Jul 2023 17:52:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690591946; x=1691196746; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=aM4BL6iGUN1LckaSEABpRw/rJR7OXts8NUN8kOvBUrc=; b=Qpe+BCUXXI6yc+TwzLxQOz2Gq8t2lWzuUXZo+bfK+34zxA7QWfQ1K7vpwDPF3Bo74+ SF3UawbpqPRkRC/NjgLKOBWP+myoVORN/ZfSMTwSu9A0h6pOqGnHctd8RhgK87vDqLSO eelWVoGj38dEKEJ/1VbfitHi9A/IxqmjCMpCKPv1i5a75LqQ6R241ciW8BnljfmeCWUs 32P39XEy55NYJMfTPdMt0lnIHj9/1O/rZptCbQd5KGb0Q8OYiwAXTprRdSB7Ai1adCDC F30G9nR6wVyYVfMl1Q2qVGepRqmK4qKxuUCxNtFTMNCZLvs7dboCiascrOy3H3Dygrxd bI1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690591946; x=1691196746; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aM4BL6iGUN1LckaSEABpRw/rJR7OXts8NUN8kOvBUrc=; b=k7Fu8bwxXLs6uL2YTMUZpyxFeRNckqnqLMQmVO2lnJXcCefwKkQn1R0b+J9kgN1wxm F3VKgTDgplU7bqvhayA052t/bPZs8cV1DOUJh1T77m/EbesTh+Vi+ird0Grbpb1e+YGH KjAFBuQf9ltv+OlNEg44Cv6uCJnrvQDxQEX46A6nq6x517L7lg8AfaG7yTQ+QEmcoc4/ KNJ7B/tsHv7gSG5t2JMyx31zdZkbSFXRw/fFUrPLaAIl92WiyErRGmLB2/rkh8Cvtj2c Ub1qXPeMhZjkNAujjpX34U69qiseOkjOyv5IVrL4Ix7AUY1/eoVjOhZEnL0Giwz0+ynN B7Gg==
X-Gm-Message-State: ABy/qLbq4jesgmEm14GHuIv6xV39igxwhYL8SYG+OgZtZN40w2YPsvj6 eta7ffRyzoEo0WxKV8r8OwguFlp3Wf+5k/sEHqM9/Y8e
X-Google-Smtp-Source: APBJJlHc9+cLY9B666i/axrKpgjgN4X/7Xz2vnn5Jz4dIPMGQDLAXYvksl2KaoWn0zW9jwIm91vm+7Wf2IScLay5Nsc=
X-Received: by 2002:a2e:880f:0:b0:2b6:d03a:5d8d with SMTP id x15-20020a2e880f000000b002b6d03a5d8dmr1451744ljh.6.1690591945739; Fri, 28 Jul 2023 17:52:25 -0700 (PDT)
MIME-Version: 1.0
References: <CACsn0ckZO+b5bRgMZhOvx+Jn-sa0g8cBD+ug1CJEdtYxSm_hgA@mail.gmail.com> <PH7PR21MB3878D8DCEF24A5F8E52BA59DA303A@PH7PR21MB3878.namprd21.prod.outlook.com> <CAADnVQJ1fKXcsTXdCijwQzf0OVF0md-ATN5RbB3g10geyofNzA@mail.gmail.com> <CACsn0cmf22zEN9AduiRiFnQ7XhY1ABRL=SwAwmmFgxJvVZAOsg@mail.gmail.com> <CADx9qWi+VQ=do+_Bsd8W4Yc-S1LekVq7Hp4bfD3nz0YP47Sqgg@mail.gmail.com> <CAADnVQ+5d8ztfFLraWnZKszAX23Z-12=pHjJfufNbd3qzWVNsQ@mail.gmail.com> <CADx9qWhSqb6xAP=nz5N-vmd2N3+h4TBFtFOGdJUWNfX=LapEBw@mail.gmail.com> <CAADnVQJ4yzDc0qQExLUO1b23ndEiEjnYYPv5qC7JJYmLr4X3ew@mail.gmail.com> <CADx9qWh6ZUKvjkZow6=eB4gvEgP82mBqn+mMZvmDQynCYAfMWw@mail.gmail.com> <CAADnVQKOiwm1UB58=8QcowDyfPQct-wuMD19citS7w5PmadZ6g@mail.gmail.com> <CADx9qWjYChRf2qBr=Pt5D-RLCb665YFKmjDYX8WOQfqMx1-bag@mail.gmail.com>
In-Reply-To: <CADx9qWjYChRf2qBr=Pt5D-RLCb665YFKmjDYX8WOQfqMx1-bag@mail.gmail.com>
From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Date: Fri, 28 Jul 2023 17:52:14 -0700
Message-ID: <CAADnVQJDO9MgU2MQQ5NQAE3EwL6PuPp8aAxcV3apf0DHoq8TAw@mail.gmail.com>
To: Will Hawkins <hawkinsw@obs.cr>
Cc: Watson Ladd <watsonbladd@gmail.com>, Dave Thaler <dthaler@microsoft.com>, "bpf@ietf.org" <bpf@ietf.org>, bpf <bpf@vger.kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/bpf/tYik4s1db553Qj5Zxo0rVZKNVHs>
Subject: Re: [Bpf] Review of draft-thaler-bpf-isa-01
X-BeenThere: bpf@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Discussion of BPF/eBPF standardization efforts within the IETF <bpf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bpf>, <mailto:bpf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bpf/>
List-Post: <mailto:bpf@ietf.org>
List-Help: <mailto:bpf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bpf>, <mailto:bpf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Jul 2023 00:52:32 -0000

On Fri, Jul 28, 2023 at 5:46 PM Will Hawkins <hawkinsw@obs.cr> wrote:
>
> On Fri, Jul 28, 2023 at 8:35 PM Alexei Starovoitov
> <alexei.starovoitov@gmail.com> wrote:
> >
> > On Fri, Jul 28, 2023 at 5:19 PM Will Hawkins <hawkinsw@obs.cr> wrote:
> > >
> > > On Fri, Jul 28, 2023 at 8:05 PM Alexei Starovoitov
> > > <alexei.starovoitov@gmail.com> wrote:
> > > >
> > > > On Fri, Jul 28, 2023 at 4:32 PM Will Hawkins <hawkinsw@obs.cr> wrote:
> > > > >
> > > > > On Thu, Jul 27, 2023 at 9:05 PM Alexei Starovoitov
> > > > > <alexei.starovoitov@gmail.com> wrote:
> > > > > >
> > > > > > On Wed, Jul 26, 2023 at 12:16 PM Will Hawkins <hawkinsw@obs.cr> wrote:
> > > > > > >
> > > > > > > On Tue, Jul 25, 2023 at 2:37 PM Watson Ladd <watsonbladd@gmail.com> wrote:
> > > > > > > >
> > > > > > > > On Tue, Jul 25, 2023 at 9:15 AM Alexei Starovoitov
> > > > > > > > <alexei.starovoitov@gmail.com> wrote:
> > > > > > > > >
> > > > > > > > > On Tue, Jul 25, 2023 at 7:03 AM Dave Thaler <dthaler@microsoft.com> wrote:
> > > > > > > > > >
> > > > > > > > > > I am forwarding the email below (after converting HTML to plain text)
> > > > > > > > > > to the mailto:bpf@vger.kernel.org list so replies can go to both lists.
> > > > > > > > > >
> > > > > > > > > > Please use this one for any replies.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > > Dave
> > > > > > > > > >
> > > > > > > > > > > From: Bpf <bpf-bounces@ietf.org> On Behalf Of Watson Ladd
> > > > > > > > > > > Sent: Monday, July 24, 2023 10:05 PM
> > > > > > > > > > > To: bpf@ietf.org
> > > > > > > > > > > Subject: [Bpf] Review of draft-thaler-bpf-isa-01
> > > > > > > > > > >
> > > > > > > > > > > Dear BPF wg,
> > > > > > > > > > >
> > > > > > > > > > > I took a look at the draft and think it has some issues, unsurprisingly at this stage. One is
> > > > > > > > > > > the specification seems to use an underspecified C pseudo code for operations vs
> > > > > > > > > > > defining them mathematically.
> > > > > > > > >
> > > > > > > > > Hi Watson,
> > > > > > > > >
> > > > > > > > > This is not "underspecified C" pseudo code.
> > > > > > > > > This is assembly syntax parsed and emitted by GCC, LLVM, gas, Linux Kernel, etc.
> > > > > > > >
> > > > > > > > I don't see a reference to any description of that in section 4.1.
> > > > > > > > It's possible I've overlooked this, and if people think this style of
> > > > > > > > definition is good enough that works for me. But I found table 4
> > > > > > > > pretty scanty on what exactly happens.
> > > > > > >
> > > > > > > Hello! Based on Watson's post, I have done some research and would
> > > > > > > potentially like to offer a path forward. There are several different
> > > > > > > ways that ISAs specify the semantics of their operations:
> > > > > > >
> > > > > > > 1. Intel has a section in their manual that describes the pseudocode
> > > > > > > they use to specify their ISA: Section 3.1.1.9 of The Intel® 64 and
> > > > > > > IA-32 Architectures Software Developer’s Manual at
> > > > > > > https://cdrdv2.intel.com/v1/dl/getContent/671199
> > > > > > > 2. ARM has an equivalent for their variety of pseudocode: Chapter J1
> > > > > > > of Arm Architecture Reference Manual for A-profile architecture at
> > > > > > > https://developer.arm.com/documentation/ddi0487/latest/
> > > > > > > 3. Sail "is a language for describing the instruction-set architecture
> > > > > > > (ISA) semantics of processors."
> > > > > > > (https://www.cl.cam.ac.uk/~pes20/sail/)
> > > > > > >
> > > > > > > Given the commercial nature of (1) and (2), perhaps Sail is a way to
> > > > > > > proceed. If people are interested, I would be happy to lead an effort
> > > > > > > to encode the eBPF ISA semantics in Sail (or find someone who already
> > > > > > > has) and incorporate them in the draft.
> > > > > >
> > > > > > imo Sail is too researchy to have practical use.
> > > > > > Looking at arm64 or x86 Sail description I really don't see how
> > > > > > it would map to an IETF standard.
> > > > > > It's done in a "sail" language that people need to learn first to be
> > > > > > able to read it.
> > > > > > Say we had bpf.sail somewhere on github. What value does it bring to
> > > > > > BPF ISA standard? I don't see an immediate benefit to standardization.
> > > > > > There could be other use cases, no doubt, but standardization is our goal.
> > > > > >
> > > > > > As far as 1 and 2. Intel and Arm use their own pseudocode, so they had
> > > > > > to add a paragraph to describe it. We are using C to describe BPF ISA
> > > > >
> > > > >
> > > > > I cannot find a reference in the current version that specifies what
> > > > > we are using to describe the operations. I'd like to add that, but
> > > > > want to make sure that I clarify two statements that seem to be at
> > > > > odds.
> > > > >
> > > > > Immediately above you say that we are using "C to describe the BPF
> > > > > ISA" and further above you say "This is assembly syntax parsed and
> > > > > emitted by GCC, LLVM, gas, Linux Kernel, etc."
> > > > >
> > > > > My own reading is that it is the former, and not the latter. But, I
> > > > > want to double check before adding the appropriate statements to the
> > > > > Convention section.
> > > >
> > > > It's both. I'm not sure where you see a contradiction.
> > > > It's a normal C syntax and it's emitted by the kernel verifier,
> > > > parsed by clang/gcc assemblers and emitted by compilers.
> > >
> > >
> > > Okay. I apologize. I am sincerely confused. For instance,
> > >
> > > if (u32)dst >= (u32)src goto +offset
> > >
> > > Looks like nothing that I have ever seen in "normal C syntax".
> >
> > I thought we're talking about table 4 and ALU ops.
> > Above is not a pure C, but it's obvious enough without explanation, no?
>
> To "us", yes. Although I am not an expert, it seems like being
> explicit is important when it comes to writing a spec. I suppose we
> should leave that to Dave and the chairs.
>
> > Also I don't see above anywhere in the doc.
>
> That is from the Appendix. It is currently in Dave's tree and gets
> amalgamated with other files to build the final draft.
>
> https://datatracker.ietf.org/doc/draft-thaler-bpf-isa/

This is a mirror and it's already outdated.
You should look at the source. Which is git kernel tree.