On 1/10/24 11:05, Andrea Parri wrote: > Hi Randy, > >>> +MEMBARRIER_CMD_{PRIVATE,GLOBAL}_EXPEDITED - Architecture requirements >>> +===================================================================== >>> + >>> +Memory barriers before updating rq->curr >>> +---------------------------------------- >>> + >>> +The command requires each architecture to have a full memory barrier after >>> +coming from user-space, before updating rq->curr. This barrier is implied >>> +by the sequence rq_lock(); smp_mb__after_spinlock() in __schedule(). The >>> +barrier matches a full barrier in the proximity of the membarrier system >>> +call exit, cf. membarrier_{private,global}_expedited(). >>> + >> >> What does "The command" refer to above and below, please? > > The term was meant to refer to any of MEMBARRIER_CMD_PRIVATE_EXPEDITED and > MEMBARRIER_CMD_GLOBAL_EXPEDITED (from the section title); FWIW, this seems > to align with the terminology adopted in MEMBARRIER(2) for example. I see. > Mmh, unless I get a better idea, I'll expand those occurrences to: > > "The commands MEMBARRIER_CMD_PRIVATE_EXPEDITED and MEMBARRIER_CMD_GLOBAL_EXPEDIDED > require [...]" _EXPEDITED OK, that's better IMO. Thanks. -- #Randy