16/01/2018 16:05, Burakov, Anatoly: > On 16-Jan-18 12:20 PM, Thomas Monjalon wrote: > > 16/01/2018 12:56, Burakov, Anatoly: > >> On 12-Jan-18 11:50 AM, Thomas Monjalon wrote: > >>> 12/01/2018 12:44, Burakov, Anatoly: > >>>> On 11-Jan-18 10:20 PM, Thomas Monjalon wrote: > >>>>> 22/12/2017 13:41, Anatoly Burakov: > >>>>>> During lcore scan, find maximum socket ID and store it. > >>>>>> > >>>>>> Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> > >>>>>> --- > >>>>>> --- a/lib/librte_eal/common/include/rte_eal.h > >>>>>> +++ b/lib/librte_eal/common/include/rte_eal.h > >>>>>> @@ -83,6 +83,7 @@ enum rte_proc_type_t { > >>>>>> struct rte_config { > >>>>>> uint32_t master_lcore; /**< Id of the master lcore */ > >>>>>> uint32_t lcore_count; /**< Number of available logical > >>>>>> cores. */ > >>>>>> + uint32_t numa_node_count; /**< Number of detected NUMA > >>>>>> nodes. */ > >>>>>> uint32_t service_lcore_count;/**< Number of available service > >>>>>> cores. */ > >>>>>> enum rte_lcore_role_t lcore_role[RTE_MAX_LCORE]; /**< State of > >>>>>> cores. */ > >>>>> > >>>>> isn't it breaking the ABI? > >>>>> > >>>>> > >>>> > >>>> Yep, you're right, forgot to add that. I didn't expect this to get > >>>> merged in 18.02 anyway, so v2 will follow. > >>> > >>> Please write 18.05 in the subject to show your expectation. > >>> Thanks > >>> > >> > >> Does it have to be an ABI change though? We can put numa_node_count > >> after pointer to mem_config, in which case it won't be an ABI break. > >> Would that be better? > > > > Changing the size of a struct which is allocated by the app, > > is an ABI break. > > Is your solution changing the size? > > > > It's not really allocated as such. rte_config is a global static > variable, and we only ever get pointers to it from the user code. If we > add the new value at the end, all of the old data layout would be intact > and work as before, so nothing would change as far as old code is concerned. > > However, if that's still considered an ABI break, then OK, break it is.
Maybe that assuming it is never allocated (not copied for instance) we could consider it is not an ABI break. > Some background for why this is needed - for the memory hotplug, we need > to know how many sockets we can allocate memory at, to distinguish > between socket that doesn't exist, and socket that exists but has no > memory allocated on it. I'm OK with trying other approaches (such as > storing numa nodes in a static variable somewhere) if breaking ABI for > this is too much to ask for such a minute change. Why is it important for 18.02? Memory hotplug will be integrated only in 18.05. I think it is better to just wait (and announce the deprecation).