On 6/19/23 07:46, kirill.shutemov@xxxxxxxxxxxxxxx wrote: >>> >>> Using atomic_set() requires changing tdmr->pamt_4k_base to atomic_t, which is a >>> little bit silly or overkill IMHO. Looking at the code, it seems >>> arch_atomic_set() simply uses __WRITE_ONCE(): >> How about _adding_ a variable that protects tdmr->pamt_4k_base? >> Wouldn't that be more straightforward than mucking around with existing >> types? > What's wrong with simple global spinlock that protects all tdmr->pamt_*? > It is much easier to follow than a custom serialization scheme. Quick, what prevents a: spin_lock() => #MC => spin_lock() deadlock? Plain old test/sets don't deadlock ever.