KCSAN complains about racy accesses in the locking code. Those races are
fine since they are inside a TD_SET_RUNNING() loop that expects the value
to be changed by another CPU.
Use relaxed atomic stores/loads to indicate that this variable can be
written/read by multiple CPUs at the same time. This will also prevent
the compiler from doing unexpected re-ordering.
To avoid introducing non-atomic accesses this commit also wraps the field
in an anonymous struct to ensure that the new TD_GET_STATE/TD_SET_STATE
macros are used for accesses.
Reported by: GENERIC-KCSAN