On Mon, Oct 25, 2021 at 4:27 PM David Marchand <david.march...@redhat.com> wrote: > > Moving struct rte_intr_handle as an internal structure to > avoid any ABI breakages in future. Since this structure defines > some static arrays and changing respective macros breaks the ABI. > Eg: > Currently RTE_MAX_RXTX_INTR_VEC_ID imposes a limit of maximum 512 > MSI-X interrupts that can be defined for a PCI device, while PCI > specification allows maximum 2048 MSI-X interrupts that can be used. > If some PCI device requires more than 512 vectors, either change the > RTE_MAX_RXTX_INTR_VEC_ID limit or dynamically allocate based on > PCI device MSI-X size on probe time. Either way its an ABI breakage. > > Change already included in 21.11 ABI improvement spreadsheet (item 42): > https://urldefense.proofpoint.com/v2/url?u=https-3A__docs.google.com_s > preadsheets_d_1betlC000ua5SsSiJIcC54mCCCJnW6voH5Dqv9UxeyfE_edit-23gid- > 3D0&d=DwICaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=5ESHPj7V-7JdkxT_Z_SU6RrS37ys4U > XudBQ_rrS5LRo&m=7dl3OmXU7QHMmWYB6V1hYJtq1cUkjfhXUwze2Si_48c&s=lh6DEGhR > Bg1shODpAy3RQk-H-0uQx5icRfUBf9dtCp4&e= > > This series makes struct rte_intr_handle totally opaque to the outside > world by wrapping it inside a .c file and providing get set wrapper APIs > to read or manipulate its fields.. Any changes to be made to any of the > fields should be done via these get set APIs. > Introduced a new eal_common_interrupts.c where all these APIs are defined > and also hides struct rte_intr_handle definition. > > v1: > * Fixed freebsd compilation failure > * Fixed seg fault in case of memif > > v2: > * Merged the prototype and implementation patch to 1. > * Restricting allocation of single interrupt instance. > * Removed base APIs, as they were exposing internally > allocated memory information. > * Fixed some memory leak issues. > * Marked some library specific APIs as internal. > > v3: > * Removed flag from instance alloc API, rather auto detect > if memory should be allocated using glibc malloc APIs or > rte_malloc* > * Added APIs for get/set windows handle. > * Defined macros for repeated checks. > > v4: > * Rectified some typo in the APIs documentation. > * Better names for some internal variables. > > v5: > * Reverted back to passing flag to instance alloc API, as > with auto detect some multiprocess issues existing in the > library were causing tests failure. > * Rebased to top of tree. > > v6: > * renamed RTE_INTR_INSTANCE_F_UNSHARED as RTE_INTR_INSTANCE_F_PRIVATE, > * changed API and removed need for alloc_flag content exposure > (see rte_intr_instance_dup() in patch 1 and 2), > * exported all symbols for Windows, > * fixed leak in unit tests in case of alloc failure, > * split (previously) patch 4 into three patches > * (now) patch 4 only concerns alarm and (previously) patch 6 cleanup bits > are squashed in it, > * (now) patch 5 concerns other libraries updates, > * (now) patch 6 concerns drivers updates: > * instance allocation is moved to probing for auxiliary, > * there might be a bug for PCI drivers non requesting > RTE_PCI_DRV_NEED_MAPPING, but code is left as v5, > * split (previously) patch 5 into three patches > * (now) patch 7 only hides structure, but keep it in a EAL private > header, this makes it possible to keep info in tracepoints, > * (now) patch 8 deals with VFIO/UIO internal fds merge, > * (now) patch 9 extends event list, > > v7: > * fixed compilation on FreeBSD, > * removed unused interrupt handle in FreeBSD alarm code, > * fixed interrupt handle allocation for PCI drivers without > RTE_PCI_DRV_NEED_MAPPING, > > v8: > * lowered logs level to DEBUG in sanity checks, > * fixed corner case with vector list access, > > -- > David Marchand > > Harman Kalra (9): > interrupts: add allocator and accessors > interrupts: remove direct access to interrupt handle > test/interrupts: remove direct access to interrupt handle > alarm: remove direct access to interrupt handle > lib: remove direct access to interrupt handle > drivers: remove direct access to interrupt handle > interrupts: make interrupt handle structure opaque > interrupts: rename device specific file descriptor > interrupts: extend event list
Series applied, thanks. -- David Marchand