From mboxrd@z Thu Jan 1 00:00:00 1970 From: illusionist.neo@gmail.com (Shubham Bansal) Date: Tue, 23 May 2017 08:28:28 +0530 Subject: arch: arm: bpf: Converting cBPF to eBPF for arm 32 bit In-Reply-To: References: <20170510.212952.1440495072777358778.davem@davemloft.net> <20170510.215218.2185526627014393313.davem@davemloft.net> <591A07A1.1030006@iogearbox.net> <5922E11C.4070307@iogearbox.net> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi, On testing the eBPF JIT with CONFIG_FRAME_POINTER I got the following crash for non jitted testcase. [ 72.032494] test_bpf: #267 BPF_MAXINSNS: Call heavy transformations jited:0 1112799 [ 92.304815] NMI watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [insmod:104] [ 92.305050] Modules linked in: test_bpf(+) [ 92.305516] CPU: 0 PID: 104 Comm: insmod Not tainted 4.11.0-10603-g13e0988-dirty #21 [ 92.305630] Hardware name: ARM-Versatile Express [ 92.305943] task: c75d5280 task.stack: c61b8000 [ 92.306383] PC is at __bpf_prog_run+0x818/0x17a8 [ 92.306449] LR is at __bpf_prog_run+0xab8/0x17a8 [ 92.306510] pc : [] lr : [] psr: 20000013 [ 92.306510] sp : c61b9a88 ip : c61b9a88 fp : c61b9d4c [ 92.306629] r10: c0404104 r9 : 00000000 r8 : 00000000 [ 92.306744] r7 : c0e0b500 r6 : c0c39bb0 r5 : c61b9ad0 r4 : ca314840 [ 92.306882] r3 : c0e0b7fc r2 : 00000000 r1 : c61b9ad8 r0 : 00000000 [ 92.307070] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 92.307285] Control: 10c5387d Table: 661e0059 DAC: 00000051 [ 92.307503] CPU: 0 PID: 104 Comm: insmod Not tainted 4.11.0-10603-g13e0988-dirty #21 [ 92.307575] Hardware name: ARM-Versatile Express [ 92.307651] Backtrace: [ 92.307868] [] (dump_backtrace) from [] (show_stack+0x18/0x1c) [ 92.308003] r7:c1503db8 r6:60000193 r5:00000000 r4:c1570f30 [ 92.308085] [] (show_stack) from [] (dump_stack+0x90/0xa4) [ 92.308195] [] (dump_stack) from [] (show_regs+0x14/0x18) [ 92.308281] r7:c1503db8 r6:c14488b8 r5:c16aaea0 r4:c61b8000 [ 92.308346] [] (show_regs) from [] (watchdog_timer_fn+0x24c/0x2c4) [ 92.308423] [] (watchdog_timer_fn) from [] (__hrtimer_run_queues+0x180/0x318) [ 92.308514] r10:c03df058 r9:00000003 r8:c1503cbc r7:c7ead580 r6:c7ead5c0 r5:c61b8000 [ 92.308578] r4:c7ead8d8 [ 92.308635] [] (__hrtimer_run_queues) from [] (hrtimer_interrupt+0xb4/0x204) [ 92.308728] r10:7fffffff r9:00000003 r8:c7ead5f8 r7:c7ead618 r6:c7ead638 r5:c1448580 [ 92.308789] r4:c7ead580 [ 92.308835] [] (hrtimer_interrupt) from [] (twd_handler+0x38/0x48) [ 92.308914] r10:c0404104 r9:00000010 r8:c1504330 r7:00000001 r6:c701e900 r5:00000000 [ 92.308974] r4:00000001 [ 92.309021] [] (twd_handler) from [] (handle_percpu_devid_irq+0x90/0x244) [ 92.309091] r5:00000000 r4:c7020540 [ 92.309165] [] (handle_percpu_devid_irq) from [] (generic_handle_irq+0x2c/0x3c) [ 92.309254] r10:c0404104 r9:c8803100 r8:c7004a00 r7:00000001 r6:00000000 r5:00000000 [ 92.309319] r4:c1449ed0 r3:c03a11a8 [ 92.309369] [] (generic_handle_irq) from [] (__handle_domain_irq+0x64/0xbc) [ 92.309445] [] (__handle_domain_irq) from [] (gic_handle_irq+0x5c/0xa0) [ 92.309525] r9:c8803100 r8:c8802100 r7:c61b9a38 r6:c880210c r5:c1571848 r4:c1504330 [ 92.309596] [] (gic_handle_irq) from [] (__irq_svc+0x6c/0x90) [ 92.309731] Exception stack(0xc61b9a38 to 0xc61b9a80) [ 92.309943] 9a20: 00000000 c61b9ad8 [ 92.310184] 9a40: 00000000 c0e0b7fc ca314840 c61b9ad0 c0c39bb0 c0e0b500 00000000 00000000 [ 92.310377] 9a60: c0404104 c61b9d4c c61b9a88 c61b9a88 c0407ea8 c0407c08 20000013 ffffffff [ 92.310595] r9:c61b8000 r8:00000000 r7:c61b9a6c r6:ffffffff r5:20000013 r4:c0407c08 [ 92.311103] [] (__bpf_prog_run) from [] (test_bpf_init+0x59c/0x1000 [test_bpf]) [ 92.311262] r10:bf123094 r9:ca2fa020 r8:00000000 r7:bf123128 r6:53edefe8 r5:ca2fa000 [ 92.311325] r4:00000555 [ 92.311382] [] (test_bpf_init [test_bpf]) from [] (do_one_initcall+0x4c/0x174) [ 92.311468] r10:bf154640 r9:c61c2524 r8:39e3db1c r7:00000001 r6:00000000 r5:bf157000 [ 92.311529] r4:ffffe000 [ 92.311575] [] (do_one_initcall) from [] (do_init_module+0x6c/0x1fc) [ 92.311673] r9:c61c2524 r8:39e3db1c r6:c61c2480 r5:00000001 r4:bf154640 [ 92.311744] [] (do_init_module) from [] (load_module+0x1f8c/0x2394) [ 92.311815] r6:c61c2500 r5:00000001 r4:c61b9f34 [ 92.311898] [] (load_module) from [] (SyS_init_module+0x15c/0x174) [ 92.311979] r10:00000051 r9:00000000 r8:00160fda r7:c61b8000 r6:c95a6a18 r5:b6fbca20 [ 92.312040] r4:00006a18 [ 92.312087] [] (SyS_init_module) from [] (ret_fast_syscall+0x0/0x3c) [ 92.312196] r10:00000000 r9:c61b8000 r8:c0308424 r7:00000080 r6:756e694c r5:00156a18 [ 92.312277] r4:00000000 [ 93.835343] 1065840 PASS Does this look like a bug? I will send the separate mail if it does. Let me know. Best, Shubham Bansal On Tue, May 23, 2017 at 1:35 AM, Kees Cook wrote: > On Mon, May 22, 2017 at 10:04 AM, Shubham Bansal > wrote: >> These all benchmarks are for ARMv7. > > Thanks! In the future, try to avoid the white-space damage > (line-wrapping). And it looks like you've still got debugging turned > on in your jit code: > > [ 56.176033] test_bpf: #21 LD_CPU > [ 56.176329] bpf_jit: *** NOT YET: opcode 85 *** > [ 56.176565] jited:0 2639 702 PASS > > That breaks the test report line. After I cleaned these up and parsed > the results, they look great. Most things are half the speed of the > interpreter, if not better. Only the LD_ABS suffered, and that's > mainly the const blinding, I assume. > > Please post your current patch. Thanks for this! > > -Kees > > -- > Kees Cook > Pixel Security