On Tue, Apr 16, 2019 at 5:58 AM Magnus Karlsson <magnus.karlsson@xxxxxxxxx> 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