SORING cache guards
Morten Brørup
mb at smartsharesystems.com
Tue Apr 21 12:46:20 CEST 2026
Konstantin,
Suggestion:
I'm not sure about this, but shouldn't the arrays in the SORING be padded by cache guards?
/*
* Calculate size offsets for SORING internal data layout.
*/
static size_t
soring_get_szofs(uint32_t esize, uint32_t msize, uint32_t count,
uint32_t stages, size_t *elst_ofs, size_t *state_ofs,
size_t *stage_ofs)
{
size_t sz;
const struct rte_soring * const r = NULL;
sz = sizeof(r[0]) + (size_t)count * esize;
sz = RTE_ALIGN(sz, RTE_CACHE_LINE_SIZE);
+ sz += RTE_CACHE_GUARD_LINES * RTE_CACHE_LINE_SIZE;
if (elst_ofs != NULL)
*elst_ofs = sz;
- sz = sz + (size_t)count * msize;
+ sz += (size_t)count * msize;
sz = RTE_ALIGN(sz, RTE_CACHE_LINE_SIZE);
+ sz += RTE_CACHE_GUARD_LINES * RTE_CACHE_LINE_SIZE;
if (state_ofs != NULL)
*state_ofs = sz;
sz += sizeof(r->state[0]) * count;
sz = RTE_ALIGN(sz, RTE_CACHE_LINE_SIZE);
+ sz += RTE_CACHE_GUARD_LINES * RTE_CACHE_LINE_SIZE;
if (stage_ofs != NULL)
*stage_ofs = sz;
sz += sizeof(r->stage[0]) * stages;
sz = RTE_ALIGN(sz, RTE_CACHE_LINE_SIZE);
+ sz += RTE_CACHE_GUARD_LINES * RTE_CACHE_LINE_SIZE;
return sz;
}
Such a change would break the ABI, so it should be announced in advance.
I'll leave it up to you to provide patches, if you agree. ;-)
-Morten
More information about the dev
mailing list