On Wed, Mar 07, 2018 at 10:10:01PM +0100, Daniel Borkmann wrote: > In Cilium some of the main programs we run today are hitting 9 passes > on x64's JIT compiler, and we've had cases already where we surpassed > the limit where the JIT then punts the program to the interpreter > instead, leading to insertion failures due to CONFIG_BPF_JIT_ALWAYS_ON > or insertion failures due to the prog array owner being JITed but the > program to insert not (both must have the same JITed/non-JITed property). > > One concrete case the program image shrunk from 12,767 bytes down to > 10,288 bytes where the image converged after 16 steps. I've measured > that this took 340us in the JIT until it converges on my i7-6600U. Thus, > increase the original limit we had from day one where the JIT covered > cBPF only back then before we run into the case (as similar with the > complexity limit) where we trip over this and hit program rejections. > Also add a cond_resched() into the compilation loop, the JIT process > runs without any locks and may sleep anyway. > > Signed-off-by: Daniel Borkmann <dan...@iogearbox.net> > Acked-by: Alexei Starovoitov <a...@kernel.org>
Applied to bpf tree, Thanks Daniel!