On Wed, Feb 16, 2022 at 1:19 PM Gujjar, Abhinandan S
<abhinandan.guj...@intel.com> wrote:
>
> Hi Shijith,
>
> > -----Original Message-----
> > From: Shijith Thotton <sthot...@marvell.com>
> > Sent: Wednesday, February 16, 2022 12:39 PM
> > To: Gujjar, Abhinandan S <abhinandan.guj...@intel.com>
> > Cc: Jerin Jacob Kollanukkaran <jer...@marvell.com>; dev@dpdk.org
> > Subject: RE: [PATCH v5] app/eventdev: add crypto producer mode
> >
> > >>
> > >> In crypto producer mode, producer core enqueues cryptodev with
> > >> software generated crypto ops and worker core dequeues crypto
> > >> completion events from the eventdev. Event crypto metadata used for
> > >> above processing is pre- populated in each crypto session.
> > >>
> > >> Parameter --prod_type_cryptodev can be used to enable crypto producer
> > >> mode. Parameter --crypto_adptr_mode can be set to select the crypto
> > >> adapter mode, 0 for OP_NEW and 1 for OP_FORWARD.
> > >>
> > >> This mode can be used to measure the performance of crypto adapter.
> > >>
> > >> Example:
> > >>   ./dpdk-test-eventdev -l 0-2 -w <EVENTDEV> -w <CRYPTODEV> -- \
> > >>   --prod_type_cryptodev --crypto_adptr_mode 1 --test=perf_atq \
> > >>   --stlist=a --wlcores 1 --plcores 2
> > >>
> > >I still see error with both OP_NEW and OP_FORWARD mode. Can't run the
> > test.
> > >root@xdp-dev:/home/intel/abhi/dpdk-next-eventdev/abhi# ./app/dpdk-
> > test-
> > >eventdev -l 0-8 -s 0xf0 --vdev=event_sw0  --vdev="crypto_null" -- --
> > >prod_type_cryptodev --crypto_adptr_mode 1 --test=perf_queue --stlist=a
> > >-- wlcores 1 --plcores 2
> > >EAL: Detected CPU lcores: 96
> > >EAL: Detected NUMA nodes: 2
> > >EAL: Detected static linkage of DPDK
> > >EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
> > >EAL: Selected IOVA mode 'PA'
> > >EAL: VFIO support initialized
> > >CRYPTODEV: Creating cryptodev crypto_null
> > >
> > >CRYPTODEV: Initialisation parameters - name: crypto_null,socket id: 0,
> > >max queue
> > >pairs: 8
> > >TELEMETRY: No legacy callbacks, legacy socket not created
> > >        driver               : event_sw
> > >        test                 : perf_queue
> > >        dev                  : 0
> > >        verbose_level        : 1
> > >        socket_id            : -1
> > >        pool_sz              : 16384
> > >        main lcore           : 0
> > >        nb_pkts              : 67108864
> > >        nb_timers            : 100000000
> > >        available lcores     : {0 1 2 3 8}
> > >        nb_flows             : 1024
> > >        worker deq depth     : 16
> > >        fwd_latency          : false
> > >        nb_prod_lcores       : 1
> > >        producer lcores      : {2}
> > >        nb_worker_lcores     : 1
> > >        worker lcores        : {1}
> > >        nb_stages            : 1
> > >        nb_evdev_ports       : 2
> > >        nb_evdev_queues      : 1
> > >        queue_priority       : false
> > >        sched_type_list      : {A}
> > >        crypto adapter mode  : OP_FORWARD
> > >        nb_cryptodev         : 1
> > >        prod_type            : Event crypto adapter producers
> > >        prod_enq_burst_sz    : 1
> > >CRYPTODEV: elt_size 0 is expanded to 208
> > >
> > >error: perf_event_crypto_adapter_setup() crypto adapter OP_FORWARD
> > mode
> > >unsupported
> > >
> > >error: main() perf_queue: eventdev setup failed
> > >
> >
> > No change from previous version.
> > Apply the patch "[RFC] app/eventdev: add software crypto adapter support"
> > for using SW.
> I see. Please send out next patchset once you have fix.

+ @Van Haaren, Harry  (Software Eventdev PMD maintainer),
+ @Hemant Agrawal  @Nipun Gupta (NXP PMD)

Summarizing the current situation to make forward progress
1) This patch adds support for crypto adapter producers to test the performance.
2) This application change is verified with cnxk PMD.
3) When testing with SW driver there is a crash is observed, SW PMD.
See [1] for more details.

Next steps:
1) Generally application changes won't wait for other all drivers to
pass if there issue with the driver.
In this case, there is a crash in SW PMD.
2) @Gujjar, Abhinandan S  Please review the application code, Let me
know if there is an issue with
the application code as comments. We can wait up to rc2 time for
merging this patch.
3) Once SW PMD issue fixes based on @Van Haaren, Harry 's bandwidth
and we can merge
"[RFC] app/eventdev: add software crypto adapter support" so that
there is no crash from
testeventdev.
4) @Hemant Agrawal  @Nipun Gupta Please check the NXP driver if there
is interest in this feature.



[1]
Steps to reproduce:
* Clone http://dpdk.org/git/next/dpdk-next-eventdev
* Apply [v5] app/eventdev: add crypto producer mode
  git-pw --server https://patches.dpdk.org/api/1.2/ --project dpdk
patch apply 107645
* Apply [RFC] app/eventdev: add software crypto adapter support
  git-pw --server https://patches.dpdk.org/api/1.2/ --project dpdk
patch apply 107029
* meson x86_build_debug  -Dc_args='-g -O0' -Ddisable_drivers="*/cnxk"
* ninja -C x86_build_debug
* Command to reproduce crash
  sudo ./x86_build_debug/app/dpdk-test-eventdev -l 0-8 -s 0xf0
--vdev=event_sw0  --vdev="crypto_null" -- --prod_type_cryptodev
--crypto_adptr_mode 0 --test=perf_queue --stlist=a --wlcores 1
--plcores 2

Crash log:
Thread 10 "lcore-worker-7" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff3767400 (LWP 1342606)]
0x0000555557b02b3c in iq_alloc_chunk (sw=0x10057c4c0) at
../drivers/event/sw/iq_chunk.h:35
35              sw->chunk_list_head = chunk->next;
(gdb) bt
#0  0x0000555557b02b3c in iq_alloc_chunk (sw=0x10057c4c0) at
../drivers/event/sw/iq_chunk.h:35
#1  iq_enqueue (ev=0x1005af9b0, iq=0x1009e25b8, sw=0x10057c4c0) at
../drivers/event/sw/iq_chunk.h:79
#2  __pull_port_lb (allow_reorder=0, port_id=2, sw=0x10057c4c0) at
../drivers/event/sw/sw_evdev_scheduler.c:443
#3  sw_schedule_pull_port_no_reorder (sw=0x10057c4c0, port_id=2) at
../drivers/event/sw/sw_evdev_scheduler.c:466
#4  0x0000555557b06e81 in sw_event_schedule (dev=0x5555586b3f80
<rte_event_devices>) at ../drivers/event/sw/sw_evdev_scheduler.c:538
#5  0x0000555557b2edf3 in sw_sched_service_func (args=0x5555586b3f80
<rte_event_devices>) at ../drivers/event/sw/sw_evdev.c:938
#6  0x0000555555b4f039 in service_runner_do_callback (s=0x1003fe000,
cs=0x1003eb100, service_idx=0) at ../lib/eal/common/rte_service.c:376
#7  0x0000555555b4f107 in service_run (i=0, cs=0x1003eb100,
service_mask=1, s=0x1003fe000, serialize_mt_unsafe=1) at
../lib/eal/common/rte_service.c:407
#8  0x0000555555b4f366 in service_runner_func (arg=0x0) at
../lib/eal/common/rte_service.c:475
#9  0x0000555555b6de0d in eal_thread_loop (arg=0x0) at
../lib/eal/linux/eal_thread.c:146
#10 0x00007ffff7a0f609 in start_thread (arg=<optimized out>) at
pthread_create.c:477
#11 0x00007ffff7936293 in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) list
30
31      static __rte_always_inline struct sw_queue_chunk *
32      iq_alloc_chunk(struct sw_evdev *sw)
33      {
34              struct sw_queue_chunk *chunk = sw->chunk_list_head;
35              sw->chunk_list_head = chunk->next;
36              chunk->next = NULL;
37              return chunk;
38      }
39
(gdb) p chunk
$3 = (struct sw_queue_chunk *) 0x0



>
> Thanks,
> Abhinandan

Reply via email to