On Fri, Nov 06, 2026 at 05:32:51PM +0800, fengchengwen wrote:
> On 11/6/2026 4:50 PM, Bruce Richardson wrote:
> > On Fri, Nov 06, 2026 at 08:46:32AM +0000, Bruce Richardson wrote:
> >> On Fri, Nov 06, 2026 at 02:14:36PM +0800, Chengwen Feng wrote:
> >>> From: Chengwen Feng <[email protected]>
> >>>
> >>> This is a new version of the "use NUMA node terminology" series,
> >>> which converted the whole tree to the NUMA node terminology
> >>> (about 227 patches).
> >>>
> >>> Following the review feedback, this version takes a staged
> >>> approach. This series only contains the groundwork, there is no
> >>> tree-wide replacement patch:
> >>>
> >>> 1/2 doc: deprecate socket terminology in favor of NUMA node
> >>> 2/2 cocci: add script for NUMA node terminology renames
> >>>
> >>> The deprecation notice announces the socket_id to numa_node field
> >>> renames of the public structures and the deprecation of the
> >>> socket-named functions, the rte_malloc_socket_stats structure and
> >>> the SOCKET_ID_ANY macro. The old names are kept as deprecated
> >>> aliases for one release, giving applications a full release
> >>> window to migrate.
> >>>
> >>> Once the notice has completed a release cycle, the coccinelle
> >>> script will be used to generate a single tree-wide conversion
> >>> patch, instead of the previous large series of small patches
> >>> which overloaded the CI.
> >>>
> >>> The script covers the mechanical source renames: API function
> >>> call sites, macros, the rte_malloc_socket_stats structure, and
> >>> socket_id member accesses. Coccinelle cannot express every
> >>> needed change: designated initializers, union field declarations,
> >>> documentation and string literals require manual adjustments; it
> >>> also silently skips functions whose signature carries attribute
> >>> macros it does not know (e.g. __rte_unused). The same applies to
> >>> the fields named "socket" in rte_graph and rte_bbdev_queue_conf,
> >>> where a generic rename rule would over-match.
> >>>
> >>> The replacement names follow the libnuma node semantics while
> >>> keeping the existing DPDK memory allocation model: bare node
> >>> getters (rte_numa_node(), rte_numa_node_count(),
> >>> rte_numa_node_by_idx(), rte_cpu_numa_node(),
> >>> rte_lcore_to_numa_node()), an rte_malloc_onnode() allocation
> >>> family shaped after libnuma's numa_alloc_onnode(), and
> >>> rte_malloc_heap_get_numa_node().
> >>>
> >>> Series-changes: 2
> >>> - only the deprecation notice and the coccinelle script, the
> >>>   tree-wide conversion patch will be submitted after the notice
> >>>   completes a release cycle
> >>> - keep old names as deprecated aliases for one release window
> >>> - cover the full rename set in the script (malloc family,
> >>>   rte_cpu_socket_id, rte_cryptodev_socket_id,
> >>>   rte_ml_dev_socket_id, rte_malloc_socket_stats)
> >>> - use a "Terminology change" tag in the deprecation notice as
> >>>   the rename spans several libraries
> >>> - name the replacements after libnuma semantics
> >>>   (rte_numa_node(), rte_malloc_onnode(), ...)
> >>>
> >>> Chengwen Feng (2):
> >>>   doc: deprecate socket terminology in favor of NUMA node
> >>>   cocci: add script for NUMA node terminology renames
> >>>
> >> I worry a bit about the churn and compatibilty issues such a widespread
> >> rename sould cause. These are some very widely used, common APIs that have
> >> been around since the earliest days of DPDK. At minimum I think we need to
> >> keep the old functions around for well longer than just one release window
> >> after deprecation - a multi-year deprecation and removal plan would be
> >> better to avoid suddenly breaking every  DPDK end-application out there.
> >>
> > 
> > Might an alternative solution be to just document that DPDK historically
> > uses "socket" as a synonym for numa node, even though such a term is
> > inaccurate. Just accept the less-than-optimal naming as a historical
> > oddity?
> 
> I share the concern about compatibility impact given how ubiquitous these 
> APIs are.
> It is important to separate two steps:
> 1) Updating DPDK internal code to use the new NUMA naming via the cocci script
> 2) Removing the deprecated socket-named aliases for applications
> 
> The first step only cleans the in-tree codebase. The old aliases can stay 
> present
> for applications for a multi-year period, and their removal can be scheduled
> independently, not immediately after one release cycle.
> 
> Keeping the existing names and only updating documentation is a pragmatic 
> option,
> but it does not resolve the recurring confusion between CPU socket and NUMA 
> node.
> This mismatch still misleads new developers and triggers topology-related 
> bugs.
> 
> I am willing to follow community consensus on the deprecation timeline and
> the overall approach.
>

Yes, good point about the first option being entirely safe, and only the
second affecting compatibility. Therefore, I'm ok with adding the new
versions of the functions/macros etc. with the new names.

/Bruce

Reply via email to