mbox series

[v2,0/5] cryptodev: hide internal structures

Message ID 20211011124309.4066491-1-gakhil@marvell.com (mailing list archive)
Headers
Series cryptodev: hide internal structures |

Message

Akhil Goyal Oct. 11, 2021, 12:43 p.m. UTC
  Structures rte_cryptodev and rte_cryptodev_data are not
supposed to be directly used by the application. These
are made public as they are used by inline datapath
public APIs.
This patchset, creates a new rte_cryptodev_core.h file
which helps in defining a data structure to hold datapath
APIs in a flat array based on the device identifier which
is filled by the PMD.

Similar series for ethdev and eventdev are also floated on ML.
https://patchwork.dpdk.org/project/dpdk/list/?series=19428
https://patchwork.dpdk.org/project/dpdk/list/?series=19405

changes in v2: align with the latest versions of above series.

Akhil Goyal (5):
  cryptodev: separate out internal structures
  cryptodev: allocate max space for internal qp array
  cryptodev: move inline APIs into separate structure
  cryptodev: update fast path APIs to use new flat array
  cryptodev: move device specific structures

 drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c    |   1 -
 drivers/crypto/ccp/ccp_dev.h                  |   2 +-
 drivers/crypto/cnxk/cn10k_ipsec.c             |   2 +-
 drivers/crypto/cnxk/cn9k_ipsec.c              |   2 +-
 .../crypto/cnxk/cnxk_cryptodev_capabilities.c |   2 +-
 drivers/crypto/cnxk/cnxk_cryptodev_sec.c      |   2 +-
 drivers/crypto/nitrox/nitrox_sym_reqmgr.c     |   2 +-
 drivers/crypto/octeontx/otx_cryptodev.c       |   1 -
 .../crypto/octeontx/otx_cryptodev_hw_access.c |   2 +-
 .../crypto/octeontx/otx_cryptodev_hw_access.h |   2 +-
 drivers/crypto/octeontx/otx_cryptodev_ops.h   |   2 +-
 .../crypto/octeontx2/otx2_cryptodev_mbox.c    |   2 +-
 drivers/crypto/scheduler/scheduler_failover.c |   2 +-
 .../crypto/scheduler/scheduler_multicore.c    |   2 +-
 .../scheduler/scheduler_pkt_size_distr.c      |   2 +-
 .../crypto/scheduler/scheduler_roundrobin.c   |   2 +-
 drivers/event/cnxk/cnxk_eventdev.h            |   2 +-
 drivers/event/dpaa/dpaa_eventdev.c            |   2 +-
 drivers/event/dpaa2/dpaa2_eventdev.c          |   2 +-
 drivers/event/octeontx/ssovf_evdev.c          |   2 +-
 .../event/octeontx2/otx2_evdev_crypto_adptr.c |   2 +-
 lib/cryptodev/cryptodev_pmd.c                 |  51 +++
 lib/cryptodev/cryptodev_pmd.h                 |  82 +++-
 lib/cryptodev/meson.build                     |   4 +-
 lib/cryptodev/rte_cryptodev.c                 |  50 ++-
 lib/cryptodev/rte_cryptodev.h                 | 367 +++++++-----------
 lib/cryptodev/rte_cryptodev_core.h            |  62 +++
 lib/cryptodev/version.map                     |   7 +-
 28 files changed, 398 insertions(+), 265 deletions(-)
 create mode 100644 lib/cryptodev/rte_cryptodev_core.h
  

Comments

Fan Zhang Oct. 11, 2021, 4:03 p.m. UTC | #1
Hi Akhil,

The approach looks great but we may have to check if it works in multi-process
environment - since all enqueue/dequeue handlers are set by primary process
the secondary process may not recognize the fp_ops data.

We will run a quick test to see if it is true.

Regards,
Fan

> -----Original Message-----
> From: Akhil Goyal <gakhil@marvell.com>
> Sent: Monday, October 11, 2021 1:43 PM
> To: dev@dpdk.org
> Cc: thomas@monjalon.net; david.marchand@redhat.com;
> hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Trahe, Fiona <fiona.trahe@intel.com>;
> Doherty, Declan <declan.doherty@intel.com>; matan@nvidia.com;
> g.singh@nxp.com; Zhang, Roy Fan <roy.fan.zhang@intel.com>;
> jianjay.zhou@huawei.com; asomalap@amd.com; ruifeng.wang@arm.com;
> Ananyev, Konstantin <konstantin.ananyev@intel.com>; Nicolau, Radu
> <radu.nicolau@intel.com>; ajit.khaparde@broadcom.com;
> rnagadheeraj@marvell.com; adwivedi@marvell.com; Power, Ciara
> <ciara.power@intel.com>; Akhil Goyal <gakhil@marvell.com>
> Subject: [PATCH v2 0/5] cryptodev: hide internal structures
> 
> Structures rte_cryptodev and rte_cryptodev_data are not
> supposed to be directly used by the application. These
> are made public as they are used by inline datapath
> public APIs.
> This patchset, creates a new rte_cryptodev_core.h file
> which helps in defining a data structure to hold datapath
> APIs in a flat array based on the device identifier which
> is filled by the PMD.
> 
> Similar series for ethdev and eventdev are also floated on ML.
> https://patchwork.dpdk.org/project/dpdk/list/?series=19428
> https://patchwork.dpdk.org/project/dpdk/list/?series=19405
> 
> changes in v2: align with the latest versions of above series.
> 
> Akhil Goyal (5):
>   cryptodev: separate out internal structures
>   cryptodev: allocate max space for internal qp array
>   cryptodev: move inline APIs into separate structure
>   cryptodev: update fast path APIs to use new flat array
>   cryptodev: move device specific structures
> 
>  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c    |   1 -
>  drivers/crypto/ccp/ccp_dev.h                  |   2 +-
>  drivers/crypto/cnxk/cn10k_ipsec.c             |   2 +-
>  drivers/crypto/cnxk/cn9k_ipsec.c              |   2 +-
>  .../crypto/cnxk/cnxk_cryptodev_capabilities.c |   2 +-
>  drivers/crypto/cnxk/cnxk_cryptodev_sec.c      |   2 +-
>  drivers/crypto/nitrox/nitrox_sym_reqmgr.c     |   2 +-
>  drivers/crypto/octeontx/otx_cryptodev.c       |   1 -
>  .../crypto/octeontx/otx_cryptodev_hw_access.c |   2 +-
>  .../crypto/octeontx/otx_cryptodev_hw_access.h |   2 +-
>  drivers/crypto/octeontx/otx_cryptodev_ops.h   |   2 +-
>  .../crypto/octeontx2/otx2_cryptodev_mbox.c    |   2 +-
>  drivers/crypto/scheduler/scheduler_failover.c |   2 +-
>  .../crypto/scheduler/scheduler_multicore.c    |   2 +-
>  .../scheduler/scheduler_pkt_size_distr.c      |   2 +-
>  .../crypto/scheduler/scheduler_roundrobin.c   |   2 +-
>  drivers/event/cnxk/cnxk_eventdev.h            |   2 +-
>  drivers/event/dpaa/dpaa_eventdev.c            |   2 +-
>  drivers/event/dpaa2/dpaa2_eventdev.c          |   2 +-
>  drivers/event/octeontx/ssovf_evdev.c          |   2 +-
>  .../event/octeontx2/otx2_evdev_crypto_adptr.c |   2 +-
>  lib/cryptodev/cryptodev_pmd.c                 |  51 +++
>  lib/cryptodev/cryptodev_pmd.h                 |  82 +++-
>  lib/cryptodev/meson.build                     |   4 +-
>  lib/cryptodev/rte_cryptodev.c                 |  50 ++-
>  lib/cryptodev/rte_cryptodev.h                 | 367 +++++++-----------
>  lib/cryptodev/rte_cryptodev_core.h            |  62 +++
>  lib/cryptodev/version.map                     |   7 +-
>  28 files changed, 398 insertions(+), 265 deletions(-)
>  create mode 100644 lib/cryptodev/rte_cryptodev_core.h
> 
> --
> 2.25.1
  
Ji, Kai Oct. 11, 2021, 5:07 p.m. UTC | #2
Hi Akhil,

Just ran a quick mutli process test against the patch set, unfortunately it failed on the secondary process enqueue or dequeue.

USER1: Configuring vector 0, using session 0
USER1: Start enqueuing packets on dev 0 qp 0
USER1: Start dequeuing packets on dev 0 qp 0
USER1: Enqueuing - Dequeueing -Segmentation fault (core dumped)

It will happen on any PMD type.

Regards

Kai 

  
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Zhang, Roy Fan
> Sent: Monday, October 11, 2021 5:03 PM
> To: Akhil Goyal <gakhil@marvell.com>; dev@dpdk.org
> Cc: thomas@monjalon.net; david.marchand@redhat.com;
> hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Trahe, Fiona <fiona.trahe@intel.com>;
> Doherty, Declan <declan.doherty@intel.com>; matan@nvidia.com;
> g.singh@nxp.com; jianjay.zhou@huawei.com; asomalap@amd.com;
> ruifeng.wang@arm.com; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Nicolau, Radu <radu.nicolau@intel.com>;
> ajit.khaparde@broadcom.com; rnagadheeraj@marvell.com;
> adwivedi@marvell.com; Power, Ciara <ciara.power@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v2 0/5] cryptodev: hide internal structures
> 
> Hi Akhil,
> 
> The approach looks great but we may have to check if it works in multi-
> process environment - since all enqueue/dequeue handlers are set by
> primary process the secondary process may not recognize the fp_ops data.
> 
> We will run a quick test to see if it is true.
> 
> Regards,
> Fan
> 
> > -----Original Message-----
> > From: Akhil Goyal <gakhil@marvell.com>
> > Sent: Monday, October 11, 2021 1:43 PM
> > To: dev@dpdk.org
> > Cc: thomas@monjalon.net; david.marchand@redhat.com;
> > hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> > <pablo.de.lara.guarch@intel.com>; Trahe, Fiona
> > <fiona.trahe@intel.com>; Doherty, Declan <declan.doherty@intel.com>;
> > matan@nvidia.com; g.singh@nxp.com; Zhang, Roy Fan
> > <roy.fan.zhang@intel.com>; jianjay.zhou@huawei.com;
> asomalap@amd.com;
> > ruifeng.wang@arm.com; Ananyev, Konstantin
> > <konstantin.ananyev@intel.com>; Nicolau, Radu
> > <radu.nicolau@intel.com>; ajit.khaparde@broadcom.com;
> > rnagadheeraj@marvell.com; adwivedi@marvell.com; Power, Ciara
> > <ciara.power@intel.com>; Akhil Goyal <gakhil@marvell.com>
> > Subject: [PATCH v2 0/5] cryptodev: hide internal structures
> >
> > Structures rte_cryptodev and rte_cryptodev_data are not supposed to be
> > directly used by the application. These are made public as they are
> > used by inline datapath public APIs.
> > This patchset, creates a new rte_cryptodev_core.h file which helps in
> > defining a data structure to hold datapath APIs in a flat array based
> > on the device identifier which is filled by the PMD.
> >
> > Similar series for ethdev and eventdev are also floated on ML.
> > https://patchwork.dpdk.org/project/dpdk/list/?series=19428
> > https://patchwork.dpdk.org/project/dpdk/list/?series=19405
> >
> > changes in v2: align with the latest versions of above series.
> >
> > Akhil Goyal (5):
> >   cryptodev: separate out internal structures
> >   cryptodev: allocate max space for internal qp array
> >   cryptodev: move inline APIs into separate structure
> >   cryptodev: update fast path APIs to use new flat array
> >   cryptodev: move device specific structures
> >
> >  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c    |   1 -
> >  drivers/crypto/ccp/ccp_dev.h                  |   2 +-
> >  drivers/crypto/cnxk/cn10k_ipsec.c             |   2 +-
> >  drivers/crypto/cnxk/cn9k_ipsec.c              |   2 +-
> >  .../crypto/cnxk/cnxk_cryptodev_capabilities.c |   2 +-
> >  drivers/crypto/cnxk/cnxk_cryptodev_sec.c      |   2 +-
> >  drivers/crypto/nitrox/nitrox_sym_reqmgr.c     |   2 +-
> >  drivers/crypto/octeontx/otx_cryptodev.c       |   1 -
> >  .../crypto/octeontx/otx_cryptodev_hw_access.c |   2 +-
> >  .../crypto/octeontx/otx_cryptodev_hw_access.h |   2 +-
> >  drivers/crypto/octeontx/otx_cryptodev_ops.h   |   2 +-
> >  .../crypto/octeontx2/otx2_cryptodev_mbox.c    |   2 +-
> >  drivers/crypto/scheduler/scheduler_failover.c |   2 +-
> >  .../crypto/scheduler/scheduler_multicore.c    |   2 +-
> >  .../scheduler/scheduler_pkt_size_distr.c      |   2 +-
> >  .../crypto/scheduler/scheduler_roundrobin.c   |   2 +-
> >  drivers/event/cnxk/cnxk_eventdev.h            |   2 +-
> >  drivers/event/dpaa/dpaa_eventdev.c            |   2 +-
> >  drivers/event/dpaa2/dpaa2_eventdev.c          |   2 +-
> >  drivers/event/octeontx/ssovf_evdev.c          |   2 +-
> >  .../event/octeontx2/otx2_evdev_crypto_adptr.c |   2 +-
> >  lib/cryptodev/cryptodev_pmd.c                 |  51 +++
> >  lib/cryptodev/cryptodev_pmd.h                 |  82 +++-
> >  lib/cryptodev/meson.build                     |   4 +-
> >  lib/cryptodev/rte_cryptodev.c                 |  50 ++-
> >  lib/cryptodev/rte_cryptodev.h                 | 367 +++++++-----------
> >  lib/cryptodev/rte_cryptodev_core.h            |  62 +++
> >  lib/cryptodev/version.map                     |   7 +-
> >  28 files changed, 398 insertions(+), 265 deletions(-)  create mode
> > 100644 lib/cryptodev/rte_cryptodev_core.h
> >
> > --
> > 2.25.1
  
Fan Zhang Oct. 11, 2021, 6:21 p.m. UTC | #3
Hi Kai and Akhil,

Thanks Kai for finding the problem. 

To resolve the seg fault for multi-process and keep the structure private,
Instead  of creating the fp_ops we may ditch making
rte_cryptodev_enqueue_burst() and  rte_cryptodev_dequeue_burst() 
inline, and keep everything else as it was? To me these inlines looks not
very useful on performance wise anyway.

Regards,
Fan

> -----Original Message-----
> From: Ji, Kai <kai.ji@intel.com>
> Sent: Monday, October 11, 2021 6:07 PM
> To: Zhang, Roy Fan <roy.fan.zhang@intel.com>; Akhil Goyal
> <gakhil@marvell.com>; dev@dpdk.org
> Cc: thomas@monjalon.net; david.marchand@redhat.com;
> hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Trahe, Fiona <fiona.trahe@intel.com>;
> Doherty, Declan <declan.doherty@intel.com>; matan@nvidia.com;
> g.singh@nxp.com; jianjay.zhou@huawei.com; asomalap@amd.com;
> ruifeng.wang@arm.com; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Nicolau, Radu <radu.nicolau@intel.com>;
> ajit.khaparde@broadcom.com; rnagadheeraj@marvell.com;
> adwivedi@marvell.com; Power, Ciara <ciara.power@intel.com>
> Subject: RE: [PATCH v2 0/5] cryptodev: hide internal structures
> 
> Hi Akhil,
> 
> Just ran a quick mutli process test against the patch set, unfortunately it
> failed on the secondary process enqueue or dequeue.
> 
> USER1: Configuring vector 0, using session 0
> USER1: Start enqueuing packets on dev 0 qp 0
> USER1: Start dequeuing packets on dev 0 qp 0
> USER1: Enqueuing - Dequeueing -Segmentation fault (core dumped)
> 
> It will happen on any PMD type.
> 
> Regards
> 
> Kai
> 
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Zhang, Roy Fan
> > Sent: Monday, October 11, 2021 5:03 PM
> > To: Akhil Goyal <gakhil@marvell.com>; dev@dpdk.org
> > Cc: thomas@monjalon.net; david.marchand@redhat.com;
> > hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> > <pablo.de.lara.guarch@intel.com>; Trahe, Fiona <fiona.trahe@intel.com>;
> > Doherty, Declan <declan.doherty@intel.com>; matan@nvidia.com;
> > g.singh@nxp.com; jianjay.zhou@huawei.com; asomalap@amd.com;
> > ruifeng.wang@arm.com; Ananyev, Konstantin
> > <konstantin.ananyev@intel.com>; Nicolau, Radu
> <radu.nicolau@intel.com>;
> > ajit.khaparde@broadcom.com; rnagadheeraj@marvell.com;
> > adwivedi@marvell.com; Power, Ciara <ciara.power@intel.com>
> > Subject: Re: [dpdk-dev] [PATCH v2 0/5] cryptodev: hide internal structures
> >
> > Hi Akhil,
> >
> > The approach looks great but we may have to check if it works in multi-
> > process environment - since all enqueue/dequeue handlers are set by
> > primary process the secondary process may not recognize the fp_ops data.
> >
> > We will run a quick test to see if it is true.
> >
> > Regards,
> > Fan
> >
> > > -----Original Message-----
> > > From: Akhil Goyal <gakhil@marvell.com>
> > > Sent: Monday, October 11, 2021 1:43 PM
> > > To: dev@dpdk.org
> > > Cc: thomas@monjalon.net; david.marchand@redhat.com;
> > > hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> > > <pablo.de.lara.guarch@intel.com>; Trahe, Fiona
> > > <fiona.trahe@intel.com>; Doherty, Declan <declan.doherty@intel.com>;
> > > matan@nvidia.com; g.singh@nxp.com; Zhang, Roy Fan
> > > <roy.fan.zhang@intel.com>; jianjay.zhou@huawei.com;
> > asomalap@amd.com;
> > > ruifeng.wang@arm.com; Ananyev, Konstantin
> > > <konstantin.ananyev@intel.com>; Nicolau, Radu
> > > <radu.nicolau@intel.com>; ajit.khaparde@broadcom.com;
> > > rnagadheeraj@marvell.com; adwivedi@marvell.com; Power, Ciara
> > > <ciara.power@intel.com>; Akhil Goyal <gakhil@marvell.com>
> > > Subject: [PATCH v2 0/5] cryptodev: hide internal structures
> > >
> > > Structures rte_cryptodev and rte_cryptodev_data are not supposed to
> be
> > > directly used by the application. These are made public as they are
> > > used by inline datapath public APIs.
> > > This patchset, creates a new rte_cryptodev_core.h file which helps in
> > > defining a data structure to hold datapath APIs in a flat array based
> > > on the device identifier which is filled by the PMD.
> > >
> > > Similar series for ethdev and eventdev are also floated on ML.
> > > https://patchwork.dpdk.org/project/dpdk/list/?series=19428
> > > https://patchwork.dpdk.org/project/dpdk/list/?series=19405
> > >
> > > changes in v2: align with the latest versions of above series.
> > >
> > > Akhil Goyal (5):
> > >   cryptodev: separate out internal structures
> > >   cryptodev: allocate max space for internal qp array
> > >   cryptodev: move inline APIs into separate structure
> > >   cryptodev: update fast path APIs to use new flat array
> > >   cryptodev: move device specific structures
> > >
> > >  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c    |   1 -
> > >  drivers/crypto/ccp/ccp_dev.h                  |   2 +-
> > >  drivers/crypto/cnxk/cn10k_ipsec.c             |   2 +-
> > >  drivers/crypto/cnxk/cn9k_ipsec.c              |   2 +-
> > >  .../crypto/cnxk/cnxk_cryptodev_capabilities.c |   2 +-
> > >  drivers/crypto/cnxk/cnxk_cryptodev_sec.c      |   2 +-
> > >  drivers/crypto/nitrox/nitrox_sym_reqmgr.c     |   2 +-
> > >  drivers/crypto/octeontx/otx_cryptodev.c       |   1 -
> > >  .../crypto/octeontx/otx_cryptodev_hw_access.c |   2 +-
> > >  .../crypto/octeontx/otx_cryptodev_hw_access.h |   2 +-
> > >  drivers/crypto/octeontx/otx_cryptodev_ops.h   |   2 +-
> > >  .../crypto/octeontx2/otx2_cryptodev_mbox.c    |   2 +-
> > >  drivers/crypto/scheduler/scheduler_failover.c |   2 +-
> > >  .../crypto/scheduler/scheduler_multicore.c    |   2 +-
> > >  .../scheduler/scheduler_pkt_size_distr.c      |   2 +-
> > >  .../crypto/scheduler/scheduler_roundrobin.c   |   2 +-
> > >  drivers/event/cnxk/cnxk_eventdev.h            |   2 +-
> > >  drivers/event/dpaa/dpaa_eventdev.c            |   2 +-
> > >  drivers/event/dpaa2/dpaa2_eventdev.c          |   2 +-
> > >  drivers/event/octeontx/ssovf_evdev.c          |   2 +-
> > >  .../event/octeontx2/otx2_evdev_crypto_adptr.c |   2 +-
> > >  lib/cryptodev/cryptodev_pmd.c                 |  51 +++
> > >  lib/cryptodev/cryptodev_pmd.h                 |  82 +++-
> > >  lib/cryptodev/meson.build                     |   4 +-
> > >  lib/cryptodev/rte_cryptodev.c                 |  50 ++-
> > >  lib/cryptodev/rte_cryptodev.h                 | 367 +++++++-----------
> > >  lib/cryptodev/rte_cryptodev_core.h            |  62 +++
> > >  lib/cryptodev/version.map                     |   7 +-
> > >  28 files changed, 398 insertions(+), 265 deletions(-)  create mode
> > > 100644 lib/cryptodev/rte_cryptodev_core.h
> > >
> > > --
> > > 2.25.1
  
Ananyev, Konstantin Oct. 15, 2021, 6:38 p.m. UTC | #4
Hi Akhil,

> Structures rte_cryptodev and rte_cryptodev_data are not
> supposed to be directly used by the application. These
> are made public as they are used by inline datapath
> public APIs.
> This patchset, creates a new rte_cryptodev_core.h file
> which helps in defining a data structure to hold datapath
> APIs in a flat array based on the device identifier which
> is filled by the PMD.
> 
> Similar series for ethdev and eventdev are also floated on ML.
> https://patchwork.dpdk.org/project/dpdk/list/?series=19428
> https://patchwork.dpdk.org/project/dpdk/list/?series=19405
> 
> changes in v2: align with the latest versions of above series.

Just to let you know this patch set causes to seg-fault ipsec-secgw:
examples/ipsec-secgw/test/run_test.sh -46m
...
[23695833.390785] dpdk-ipsec-secg[2491066]: segfault at 0 ip 0000564325730963 sp 00007fffb9111d00 error 4 in dpdk-ipsec-secgw[564324df0000+134d000]
[23695833.390791] Code: 28 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 00 4c 8d 04 cd 00 00 00 00 49 89 ce 4c 89 e7 4a 8d 34 00 48 8b 46 08 48 89 74 24 18 <48> 8b 08 48 89 88 80 00 00 00 f0 83 44 24 80 00 4c 8b 2e 4d 85 ed

So far, I didn't dig into it any further.
Will have a closer look at Monday.
  
Konstantin

> 
> Akhil Goyal (5):
>   cryptodev: separate out internal structures
>   cryptodev: allocate max space for internal qp array
>   cryptodev: move inline APIs into separate structure
>   cryptodev: update fast path APIs to use new flat array
>   cryptodev: move device specific structures
> 
>  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c    |   1 -
>  drivers/crypto/ccp/ccp_dev.h                  |   2 +-
>  drivers/crypto/cnxk/cn10k_ipsec.c             |   2 +-
>  drivers/crypto/cnxk/cn9k_ipsec.c              |   2 +-
>  .../crypto/cnxk/cnxk_cryptodev_capabilities.c |   2 +-
>  drivers/crypto/cnxk/cnxk_cryptodev_sec.c      |   2 +-
>  drivers/crypto/nitrox/nitrox_sym_reqmgr.c     |   2 +-
>  drivers/crypto/octeontx/otx_cryptodev.c       |   1 -
>  .../crypto/octeontx/otx_cryptodev_hw_access.c |   2 +-
>  .../crypto/octeontx/otx_cryptodev_hw_access.h |   2 +-
>  drivers/crypto/octeontx/otx_cryptodev_ops.h   |   2 +-
>  .../crypto/octeontx2/otx2_cryptodev_mbox.c    |   2 +-
>  drivers/crypto/scheduler/scheduler_failover.c |   2 +-
>  .../crypto/scheduler/scheduler_multicore.c    |   2 +-
>  .../scheduler/scheduler_pkt_size_distr.c      |   2 +-
>  .../crypto/scheduler/scheduler_roundrobin.c   |   2 +-
>  drivers/event/cnxk/cnxk_eventdev.h            |   2 +-
>  drivers/event/dpaa/dpaa_eventdev.c            |   2 +-
>  drivers/event/dpaa2/dpaa2_eventdev.c          |   2 +-
>  drivers/event/octeontx/ssovf_evdev.c          |   2 +-
>  .../event/octeontx2/otx2_evdev_crypto_adptr.c |   2 +-
>  lib/cryptodev/cryptodev_pmd.c                 |  51 +++
>  lib/cryptodev/cryptodev_pmd.h                 |  82 +++-
>  lib/cryptodev/meson.build                     |   4 +-
>  lib/cryptodev/rte_cryptodev.c                 |  50 ++-
>  lib/cryptodev/rte_cryptodev.h                 | 367 +++++++-----------
>  lib/cryptodev/rte_cryptodev_core.h            |  62 +++
>  lib/cryptodev/version.map                     |   7 +-
>  28 files changed, 398 insertions(+), 265 deletions(-)
>  create mode 100644 lib/cryptodev/rte_cryptodev_core.h
> 
> --
> 2.25.1
  
Akhil Goyal Oct. 15, 2021, 6:42 p.m. UTC | #5
> 
> Just to let you know this patch set causes to seg-fault ipsec-secgw:
> examples/ipsec-secgw/test/run_test.sh -46m
> ...
> [23695833.390785] dpdk-ipsec-secg[2491066]: segfault at 0 ip
> 0000564325730963 sp 00007fffb9111d00 error 4 in dpdk-ipsec-
> secgw[564324df0000+134d000]
> [23695833.390791] Code: 28 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 00 4c 8d 04
> cd 00 00 00 00 49 89 ce 4c 89 e7 4a 8d 34 00 48 8b 46 08 48 89 74 24 18 <48>
> 8b 08 48 89 88 80 00 00 00 f0 83 44 24 80 00 4c 8b 2e 4d 85 ed
> 
> So far, I didn't dig into it any further.
> Will have a closer look at Monday.
> 
Thanks for the update, planning to send a next version to fix the multi process issue
Reported by Fan, will look into the ipsec-secgw also over weekend.
  
Ananyev, Konstantin Oct. 19, 2021, 11:03 a.m. UTC | #6
> >
> > Just to let you know this patch set causes to seg-fault ipsec-secgw:
> > examples/ipsec-secgw/test/run_test.sh -46m
> > ...
> > [23695833.390785] dpdk-ipsec-secg[2491066]: segfault at 0 ip
> > 0000564325730963 sp 00007fffb9111d00 error 4 in dpdk-ipsec-
> > secgw[564324df0000+134d000]
> > [23695833.390791] Code: 28 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 1f 00 4c 8d 04
> > cd 00 00 00 00 49 89 ce 4c 89 e7 4a 8d 34 00 48 8b 46 08 48 89 74 24 18 <48>
> > 8b 08 48 89 88 80 00 00 00 f0 83 44 24 80 00 4c 8b 2e 4d 85 ed
> >
> > So far, I didn't dig into it any further.
> > Will have a closer look at Monday.
> >
> Thanks for the update, planning to send a next version to fix the multi process issue
> Reported by Fan, will look into the ipsec-secgw also over weekend.

As FYI: don't see such problem with v3.
In fact, ipsec-secgw functional tests passed with v3 on my box.