Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 13 Aug 2019 18:10:38 +0200 | From | Lukas Wunner <> | Subject | Re: [PATCH v2 7/8] thunderbolt: Add support for Intel Ice Lake |
| |
On Mon, Aug 12, 2019 at 03:38:46PM +0300, Mika Westerberg wrote: > +static void icm_veto_begin(struct tb *tb) > +{ > + struct icm *icm = tb_priv(tb); > + > + if (!icm->veto) { > + icm->veto = true; > + /* Keep the domain powered while veto is in effect */ > + pm_runtime_get(&tb->dev); > + } > +}
Hm, don't you need memory barriers when accessing icm->veto?
If so, I'd suggest:
/* Keep the domain powered while veto is in effect */ if (cmpxchg(&icm->veto, false, true)) pm_runtime_get(&tb->dev);
You'll have to declare icm->veto unsigned int instead of bool because thunderbolt.ko is compiled if CONFIG_COMPILE_TEST is enabled and there are arches which do not support cmpxchg for a size of 1 byte.
The other bools in struct icm should likewise be unsigned int per Linus' dictum: https://lkml.org/lkml/2017/11/21/384
> --- a/drivers/thunderbolt/nhi.c > +++ b/drivers/thunderbolt/nhi.c > +/* Ice Lake specific NHI operations */ > +
Again, can't this be moved to a separate file for maintainability?
Thanks,
Lukas
| ![\](/images/icornerr.gif) |