[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAADnVQJdSHQt=bmDhsRPrBHA=itLAQ8fVKRDE3Maam7UMZYrXQ@mail.gmail.com>
Date: Tue, 16 Apr 2019 20:15:20 -0700
From: Alexei Starovoitov <alexei.starovoitov@...il.com>
To: Magnus Karlsson <magnus.karlsson@...el.com>
Cc: Björn Töpel <bjorn.topel@...el.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Network Development <netdev@...r.kernel.org>,
bpf <bpf@...r.kernel.org>, bruce.richardson@...el.com,
ciara.loftus@...el.com,
Ilias Apalodimas <ilias.apalodimas@...aro.org>,
kernel test robot <xiaolong.ye@...el.com>,
ferruh.yigit@...el.com, "Zhang, Qi Z" <qi.z.zhang@...el.com>,
georgmueller@....net
Subject: Re: [PATCH bpf v3 0/5] libbpf: remove two dependencies on Linux
On Tue, Apr 16, 2019 at 5:58 AM Magnus Karlsson
<magnus.karlsson@...el.com> wrote:
>
> This patch set fixes one bug and removes two dependencies on Linux
> kernel headers from the XDP socket code in libbpf. A number of people
> have pointed out that these two dependencies make it hard to build the
> XDP socket part of libbpf without any kernel header dependencies. The
> two removed dependecies are:
>
> * Remove the usage of likely and unlikely (compiler.h) in xsk.h. It
> has been reported that the use of these actually decreases the
> performance of the ring access code due to an increase in
> instruction cache misses, so let us just remove these.
>
> * Remove the dependency on barrier.h as it brings in a lot of kernel
> headers. As the XDP socket code only uses two simple functions from
> it, we can reimplement these. As a bonus, the new implementation is
> faster as it uses the same barrier primitives as the kernel does
> when the same code is compiled there. Without this patch, the user
> land code uses lfence and sfence on x86, which are unnecessarily
> harsh/thorough.
>
> In the process of removing these dependencies a missing barrier
> function for at least PPC64 was discovered. For a full explanation on
> the missing barrier, please refer to patch 1. So the patch set now
> starts with two patches fixing this. I have also added a patch at the
> end removing this full memory barrier for x86 only, as it is not
> needed there.
>
> Structure of the patch set:
> Patch 1-2: Adds the missing barrier function in kernel and user space.
> Patch 3-4: Removes the dependencies
> Patch 5: Optimizes the added barrier from patch 2 so that it does not
> do unnecessary work on x86.
Applied. Thanks
Powered by blists - more mailing lists