From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Quentin Monnet <quentin@isovalent.com>,
Tonghao Zhang <tong@infragraf.org>
Cc: Alexei Starovoitov <ast@kernel.org>, Song Liu <song@kernel.org>,
Stanislav Fomichev <sdf@google.com>, Hou Tao <houtao1@huawei.com>,
"sparclinux@vger.kernel.org" <sparclinux@vger.kernel.org>,
"linux-riscv@lists.infradead.org"
<linux-riscv@lists.infradead.org>,
"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
John Fastabend <john.fastabend@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
"naveen.n.rao@linux.ibm.com" <naveen.n.rao@linux.ibm.com>,
Yonghong Song <yhs@fb.com>,
"linux-arm-kernel@lists.infradead.or"
<linux-arm-kernel@lists.infradead.or>,
KP Singh <kpsingh@kernel.org>,
"loongarch@lists.linux.dev" <loongarch@lists.linux.dev>,
Hao Luo <haoluo@google.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Jiri Olsa <jolsa@kernel.org>,
"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@li sts.ozlabs.org>
Subject: Re: [bpf-next v2] bpf: drop deprecated bpf_jit_enable == 2
Date: Tue, 17 Jan 2023 14:55:53 +0000 [thread overview]
Message-ID: <21b09e52-142d-92f5-4f8b-e4190f89383b@csgroup.eu> (raw)
In-Reply-To: <376f9737-f9a4-da68-8b7f-26020021613c@isovalent.com>
Le 17/01/2023 à 15:41, Quentin Monnet a écrit :
> [Vous ne recevez pas souvent de courriers de quentin@isovalent.com. Découvrez pourquoi ceci est important à https://aka.ms/LearnAboutSenderIdentification ]
>
> 2023-01-17 14:25 UTC+0000 ~ Christophe Leroy <christophe.leroy@csgroup.eu>
>>
>>
>> Le 17/01/2023 à 15:18, Tonghao Zhang a écrit :
>>>
>>>
>>>> On Jan 17, 2023, at 7:36 PM, Christophe Leroy <christophe.leroy@csgroup.eu> wrote:
>>>>
>>>>
>>>>
>>>> Le 17/01/2023 à 08:30, Christophe Leroy a écrit :
>>>>>
>>>>>
>>>>> Le 17/01/2023 à 06:30, Tonghao Zhang a écrit :
>>>>>>
>>>>>>
>>>>>>> On Jan 9, 2023, at 4:15 PM, Christophe Leroy
>>>>>>> <christophe.leroy@csgroup.eu> wrote:
>
> [...]
>
>>>>>>> Sure I will try to test bpftool again in the coming days.
>>>>>>>
>>>>>>> Previous discussion about that subject is here:
>>>>>>> https://patchwork.kernel.org/project/linux-riscv/patch/20210415093250.3391257-1-Jianlin.Lv@arm.com/#24176847=
>
> Christophe, apologies from dropping the discussion the last time, it
> seems your last message on that thread didn't make it to my inbox at the
> time :/. Thanks a lot for looking into that again!
>
>>>>>> Hi Christophe
>>>>>> Any progress? We discuss to deprecate the bpf_jit_enable == 2 in 2021,
>>>>>> but bpftool can not run on powerpc.
>>>>>> Now can we fix this issue?
>>>>>
>>>>> Hi Tong,
>>>>>
>>>>> I have started to look at it but I don't have any fruitfull feedback yet.
>>>>
>>>> Hi Again,
>>>>
>>>> I tested again, the problem is still the same as one year ago:
>>>>
>>>> root@vgoip:~# ./bpftool prog
>>>> libbpf: elf: endianness mismatch in pid_iter_bpf.
>>> It seem to be not right ehdr->e_ident[EI_DATA]. Do we can print the real value?
>>> /*
>>> * e_ident[EI_DATA]
>>> */
>>> #define ELFDATANONE 0
>>> #define ELFDATA2LSB 1
>>> #define ELFDATA2MSB 2
>>> #define ELFDATANUM 3
>>>
>>> bpf_object__elf_init:
>>> obj->efile.ehdr = ehdr = elf64_getehdr(elf);
>>>
>>>> libbpf: failed to initialize skeleton BPF object 'pid_iter_bpf': -4003
>>>> Error: failed to open PID iterator skeleton
>>>>
>>>> root@vgoip:~# uname -a
>>>> Linux vgoip 6.2.0-rc3-02596-g1c2c9c13e256 #242 PREEMPT Tue Jan 17
>>>> 09:36:08 CET 2023 ppc GNU/Linux
>>> On my pc, elf is little endian.
>>> # readelf -h tools/bpf/bpftool/pid_iter.bpf.o
>>> ELF Header:
>>> Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
>>> Class: ELF64
>>> Data: 2's complement, little endian # x86_64
>>> Version: 1 (current)
>>> OS/ABI: UNIX - System V
>>> ABI Version: 0
>>> Type: REL (Relocatable file)
>>> Machine: Linux BPF
>>> Version: 0x1
>>> Entry point address: 0x0
>>> Start of program headers: 0 (bytes into file)
>>> Start of section headers: 64832 (bytes into file)
>>> Flags: 0x0
>>> Size of this header: 64 (bytes)
>>> Size of program headers: 0 (bytes)
>>> Number of program headers: 0
>>> Size of section headers: 64 (bytes)
>>> Number of section headers: 13
>>> Section header string table index: 1
>>>
>>
>> Yes, must be something wrong with the build, I get same as you :
>>
>> $ LANG= readelf -h pid_iter.bpf.o
>> ELF Header:
>> Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
>> Class: ELF64
>> Data: 2's complement, little endian
>> Version: 1 (current)
>> OS/ABI: UNIX - System V
>> ABI Version: 0
>> Type: REL (Relocatable file)
>> Machine: Linux BPF
>> Version: 0x1
>> Entry point address: 0x0
>> Start of program headers: 0 (bytes into file)
>> Start of section headers: 34704 (bytes into file)
>> Flags: 0x0
>> Size of this header: 64 (bytes)
>> Size of program headers: 0 (bytes)
>> Number of program headers: 0
>> Size of section headers: 64 (bytes)
>> Number of section headers: 13
>> Section header string table index: 1
>>
>>
>> Whereas I expect the same as bpftool I suppose, which is :
>>
>> $ LANG= readelf -h bpftool
>> ELF Header:
>> Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
>> Class: ELF32
>> Data: 2's complement, big endian
>> Version: 1 (current)
>> OS/ABI: UNIX - System V
>> ABI Version: 0
>> Type: EXEC (Executable file)
>> Machine: PowerPC
>> Version: 0x1
>> Entry point address: 0x100027d0
>> Start of program headers: 52 (bytes into file)
>> Start of section headers: 1842896 (bytes into file)
>> Flags: 0x0
>> Size of this header: 52 (bytes)
>> Size of program headers: 32 (bytes)
>> Number of program headers: 9
>> Size of section headers: 40 (bytes)
>> Number of section headers: 39
>> Section header string table index: 38
>>
>
> pid_iter.bpf.o should be generated from that command in bpftool's Makefile:
>
> $(OUTPUT)%.bpf.o: skeleton/%.bpf.c $(OUTPUT)vmlinux.h \
> $(LIBBPF_BOOTSTRAP)
> $(QUIET_CLANG)$(CLANG) \
> -I$(or $(OUTPUT),.) \
> -I$(srctree)/tools/include/uapi/ \
> -I$(LIBBPF_BOOTSTRAP_INCLUDE) \
> -g -O2 -Wall -fno-stack-protector \
> -target bpf -c $< -o $@
>
> My understanding is that "-target bpf" is supposed to pick the
> endianness for the host (see "llc --version | grep bpf". If that's not
> the case, could you please try to turn that into '-target bpfeb' in the
> Makefile instead? I'd be curious to see if it helps.
>
I guess it cannot work if it picks the endianness for the build host. It
should pick the endianness for the target host.
That's worse it seems with bpfeb : it fails at build :
LINK /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/bpftool
GEN vmlinux.h
CLANG pid_iter.bpf.o
GEN pid_iter.skel.h
libbpf: elf: endianness mismatch in pid_iter_bpf.
Error: failed to open BPF object file: Endian mismatch
make: *** [Makefile:222: pid_iter.skel.h] Error 93
Complete build in case it helps:
$ LANG= make CROSS_COMPILE=ppc-linux- ARCH=powerpc
Auto-detecting system features:
... clang-bpf-co-re: [ ^[[32mon^[[m ]
... llvm: [ ^[[31mOFF^[[m ]
... libcap: [ ^[[31mOFF^[[m ]
... libbfd: [ ^[[31mOFF^[[m ]
MKDIR /home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/
make[1]: Entering directory '/home/chleroy/linux-powerpc/tools/lib/bpf'
GEN
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/bpf_helper_defs.h
MKDIR /home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/libbpf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/bpf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/nlattr.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/btf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/libbpf_errno.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/str_error.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/netlink.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/bpf_prog_linfo.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/libbpf_probes.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/hashmap.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/btf_dump.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/ringbuf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/strset.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/linker.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/gen_loader.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/relo_core.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/usdt.o
LD
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/staticobjs/libbpf-in.o
LINK /home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/libbpf.a
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/bpf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/libbpf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/btf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/libbpf_common.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/libbpf_legacy.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/bpf_helpers.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/bpf_tracing.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/bpf_endian.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/bpf_core_read.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/skel_internal.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/libbpf_version.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/usdt.bpf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/bpf_helper_defs.h
INSTALL libbpf_headers
make[1]: Leaving directory '/home/chleroy/linux-powerpc/tools/lib/bpf'
MKDIR /home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/hashmap.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/nlattr.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/relo_core.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/libbpf/include/bpf/libbpf_internal.h
CC btf.o
CC btf_dumper.o
CC cfg.o
CC cgroup.o
CC common.o
CC feature.o
CC gen.o
CC iter.o
CC json_writer.o
CC link.o
CC main.o
CC map.o
CC map_perf_ring.o
CC net.o
CC netlink_dumper.o
CC perf.o
MKDIR
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/hashmap.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/relo_core.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/libbpf_internal.h
MKDIR /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/
MKDIR /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/
make[1]: Entering directory '/home/chleroy/linux-powerpc/tools/lib/bpf'
GEN
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/bpf_helper_defs.h
MKDIR
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/libbpf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/bpf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/nlattr.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/btf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/libbpf_errno.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/str_error.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/netlink.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/bpf_prog_linfo.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/libbpf_probes.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/hashmap.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/btf_dump.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/ringbuf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/strset.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/linker.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/gen_loader.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/relo_core.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/usdt.o
LD
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/staticobjs/libbpf-in.o
LINK
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/libbpf.a
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/libbpf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/btf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/libbpf_common.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/libbpf_legacy.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_helpers.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_tracing.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_endian.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/skel_internal.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/libbpf_version.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/usdt.bpf.h
INSTALL
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_helper_defs.h
INSTALL libbpf_headers
make[1]: Leaving directory '/home/chleroy/linux-powerpc/tools/lib/bpf'
CC /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/main.o
CC /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/common.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/json_writer.o
CC /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/gen.o
CC /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/btf.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/xlated_dumper.o
CC
/home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/btf_dumper.o
CC /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/disasm.o
LINK /home/chleroy/linux-powerpc/tools/bpf/bpftool/bootstrap/bpftool
GEN vmlinux.h
CLANG pid_iter.bpf.o
GEN pid_iter.skel.h
libbpf: elf: endianness mismatch in pid_iter_bpf.
Error: failed to open BPF object file: Endian mismatch
make: *** [Makefile:222: pid_iter.skel.h] Error 93
next prev parent reply other threads:[~2023-01-17 14:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-05 3:06 [bpf-next v2] bpf: drop deprecated bpf_jit_enable == 2 tong
2023-01-05 9:36 ` Björn Töpel
2023-01-05 17:53 ` Christophe Leroy
2023-01-06 12:05 ` Tonghao Zhang
2023-01-06 12:23 ` Tonghao Zhang
2023-01-06 13:22 ` Tonghao Zhang
2023-01-06 15:37 ` Daniel Borkmann
2023-01-09 8:15 ` Christophe Leroy
2023-01-17 5:30 ` Tonghao Zhang
2023-01-17 7:30 ` Christophe Leroy
2023-01-17 11:36 ` Christophe Leroy
2023-01-17 14:18 ` Tonghao Zhang
2023-01-17 14:25 ` Christophe Leroy
2023-01-17 14:41 ` Quentin Monnet
2023-01-17 14:55 ` Christophe Leroy [this message]
2023-01-17 15:42 ` Quentin Monnet
2023-01-23 7:57 ` Christophe Leroy
2023-01-23 10:57 ` Quentin Monnet
2023-01-17 14:22 ` Tonghao Zhang
2023-01-17 15:59 ` Daniel Borkmann
2023-01-18 2:13 ` Tonghao Zhang
2023-01-18 2:21 ` Alexei Starovoitov
2023-01-18 7:35 ` Christophe Leroy
2023-01-18 17:42 ` Alexei Starovoitov
2023-01-23 8:00 ` Christophe Leroy
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=21b09e52-142d-92f5-4f8b-e4190f89383b@csgroup.eu \
--to=christophe.leroy@csgroup.eu \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=houtao1@huawei.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=linux-arm-kernel@lists.infradead.or \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@li \
--cc=loongarch@lists.linux.dev \
--cc=martin.lau@linux.dev \
--cc=naveen.n.rao@linux.ibm.com \
--cc=netdev@vger.kernel.org \
--cc=quentin@isovalent.com \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=tong@infragraf.org \
--cc=yhs@fb.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 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).