Re: [PATCH RFC] tools/memory-model: Adjust ctrl dependency definition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 27, 2022 at 11:47:43AM +0200, Paul Heidekrüger wrote:
> 
> > On 21. Jun 2022, at 16:24, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > 
> > On Tue, Jun 21, 2022 at 01:59:27PM +0200, Paul Heidekrüger wrote:
> >> OK. So, LKMM limits the scope of control dependencies to its arm(s), hence
> >> there is a control dependency from the last READ_ONCE() before the loop
> >> exists to the WRITE_ONCE().
> >> 
> >> But then what about the following:
> >> 
> >>> int *x, *y;
> >>> 
> >>> int foo()
> >>> {
> >>> 	/* More code */
> >>> 
> >>> 	if(READ_ONCE(x))
> >>> 		return 42;
> >>> 
> >>> 	/* More code */
> >>> 
> >>> 	WRITE_ONCE(y, 42);
> >>> 
> >>> 	/* More code */
> >>> 
> >>> 	return 0;
> >>> }
> >> 
> >> The READ_ONCE() determines whether the WRITE_ONCE() will be executed at all,
> >> but the WRITE_ONCE() doesn't lie in the if condition's arm.
> > 
> > So in this case the LKMM would not recognize that there's a control 
> > dependency, even though it clearly exists.
> 
> Oh, that's unfortunate.
> 
> Then I would still argue that the "at all" definition is misleading. This

I agree, and I would welcome a patch improving the definition.  Perhaps 
something along the lines of what I wrote earlier in this email thread.

> time in the other direction as I had initially proposed though, as the above
> example is a case where "at all" holds true, but LKMM doesn't cover it. Or
> do you think that caveating this in litmus-tests.txt, e.g. via the patch we
> had recently worked out [1], is enough?

No, the explanation should be improved.

Alan



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux