On Fri, Apr 23, 2021, at 13:06, Kinsella, Ray wrote: > > > On 14/04/2021 20:49, Thomas Monjalon wrote: > > 13/04/2021 05:14, Xueming Li: > >> Xueming Li (5): > >> devargs: unify scratch buffer storage > >> devargs: fix memory leak on parsing error > >> kvargs: add get by key function > >> bus: add device arguments name parsing API > >> devargs: parse global device syntax > > > > The patch 4 adds a new callback in rte_bus. > > I thought about it during the whole day and I don't see any good way > > to merge it without breaking the ABI compatibility. > > > > Only first 3 patches are applied for now, thanks. > > > > I took a look, I don't immediately see the concern. > > The new entry is at the end of the memory structure. > The call back is internal and hidden behind the symbol > rte_devargs_layers_parse. > > So will only be trigger by a rte_devargs_layers_parse of the same > version of DPDK that introduce the new callback. > > Should be fine? >
It might have been an issue IMO with a structure exposed as an array, i.e. rte_eth_devices[]. But I thought this kind of ABI break was the kind that would be accepted between two LTS. The only potential risk is in using a new version librte_eal.so with an older librte_bus_xxx.so But I think it is fair to expect installations to be internally consistent. Maybe we could have a runtime warning when loading mismatched versions (if there isn't one already) -- each librte_*.so could have an internal version stamp and alignment could be checked through a constructor in each lib? -- Gaetan Rivet