On 3/21/24 12:31, Tomi Valkeinen wrote: > On 21/03/2024 18:08, Sean Anderson wrote: >> On 3/20/24 03:49, Tomi Valkeinen wrote: >>> On 20/03/2024 00:51, Sean Anderson wrote: >>> >>>> +/** >>>> + * enum test_pattern - Test patterns for test testing >>> >>> "for test testing"? =) >>> >>>> @@ -1655,6 +2321,9 @@ static void zynqmp_dp_hpd_irq_work_func(struct work_struct *work) >>>> u8 status[DP_LINK_STATUS_SIZE + 2]; >>>> int err; >>>> + if (READ_ONCE(dp->ignore_hpd)) >>>> + return; >>>> + >>>> mutex_lock(&dp->lock); >>>> err = drm_dp_dpcd_read(&dp->aux, DP_SINK_COUNT, status, >>>> DP_LINK_STATUS_SIZE + 2); >>> >>> Why do you need READ/WRITE_ONCE() for ignore_hpd? >> >> It's not protected by dp->lock so we don't have to take it for >> zynqmp_dp_hpd_work_func. Although maybe we should make a version of >> zynqmp_dp_bridge_detect which assumes we already hold the lock. > > Does using the macros solve some potential issue, or is it just for documenting that this variable is accessed without lock? Without this the compiler is free to issue multiple loads for this variable, which could be incorrect. --Sean