Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 09 Mar 2017 14:52:09 +0100
From:      Alexandre Martins <alexandre.martins@stormshield.eu>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: smp_rendezvous_action: Are atomics correctly used ?
Message-ID:  <3034263.GEZH9i4V44@pc-alex>
In-Reply-To: <20170309130754.GX30979@kib.kiev.ua>
References:  <2092905.6A8RAGlt18@pc-alex> <4355496.HzrDjoMEL6@pc-alex> <20170309130754.GX30979@kib.kiev.ua>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Le jeudi 9 mars 2017, 15:07:54 Konstantin Belousov a crit :
> On Thu, Mar 09, 2017 at 10:59:27AM +0100, Alexandre Martins wrote:
> > I have the save question for the cpu_ipi_pending here:
> > 
> > https://svnweb.freebsd.org/base/head/sys/x86/x86/mp_x86.c?view=annotate#l1
> > 080> 
> > Le jeudi 9 mars 2017, 10:43:14 Alexandre Martins a ?crit :
> > > Hello,
> > > 
> > > I'm curently reading the code of the function smp_rendezvous_action, in
> > > kern/subr_smp.c file. In that function, i see that the variable
> > > smp_rv_waiters is read in some while() loop in a non-atomic way.
> > > 
> > > https://svnweb.freebsd.org/base/head/sys/kern/subr_smp.c?view=annotate#l
> > > 412
> > > https://svnweb.freebsd.org/base/head/sys/kern/subr_smp.c?view=annotate#l
> > > 458
> > > https://svnweb.freebsd.org/base/head/sys/kern/subr_smp.c?view=annotate#l
> > > 472
> > > 
> > > I suspect one of my freeze to be due by that.
> 
> You should provide either evidence or, at least, some reasoning supporting
> your claims.

I curently have a software watchdog that triger and does a coredump. In the 
coredumps, I always see a CPU trying to write-lock a "rm lock". Every time, 
that CPU is spinning into the smp_rendezvous_action, in the first while loop) 
while the others are into the idle threads.

The fact is that freeze is not clear and I start to search "exotic" causes to 
explain it.

> 
> > > Should this function be patched to use
> > > "atomic_load_acq_int(&smp_rv_waiters[])" ?
> 
> There too.
> 
> As a side note, any read or write of the naturally aligned integer
> types with size less or equal than the machine word, on all supported
> architectures, are atomic.  The meaning of the word atomic there is
> that when reading, you always get a complete value that was written by
> a writer into this location, not some out of thin air value.  Similarly,
> when writing, you are guaranteed that any observer of the write will see
> the value you have wrote.
> 
> The guarantees above hold both for C-level code and for the assembler
> accesses.
> 
> atomic_load_acq() provides additional guarantees which do not affect the
> value read from the variable itself, but establish the ordering on the
> visibility of the related operations.

OK, I got it. Thank you !

-- 
Alexandre Martins
STORMSHIELD


[-- Attachment #2 --]
0	*H
010
	`He0	*H
00n0
	*H
0H10	UFR10U
STORMSHIELD1#0!UStormshield Root Authority0
140904150710Z
240901150710Z0I10	UFR10U
STORMSHIELD1$0"UStormshield Users Authority0"0
	*H
0
‡X6[t.DUge0-2;h@eȻClΫpB#M,FY=.{ya{2πߢ
7	<d~O;ޅԋ&C8ُ6@CXX>|abqenmI,	O—&'۰@%OhW&
{52D%_8#f]G0ct y\v0t0Uml||uu4[ׁ0U#0BgDaP0U00U0	`HB0
	*H
N9-؞>m-K!M-7zD6IZʾr>q?u
?xr6_'NջZ7]V\5Y&))m@~^Qdp/H3ͦ`o⬋U,z,0Bdp!C2K8.r>0-1!C%3U2ϠMg~3͟wͲAZ&vF/BA$_ڀV!
s7)=-nP>qH~g/Rs,PAJVm#QXJo
*/󞁃V|sĿj~y߽j
3]v3ƌqe`Y|HB3lC!^J2$4A`Z+(7b{e˄wʈ<L=6[3`>IQFaiܝ ?:_yԊ
/`0W0?(˻0
	*H
0I10	UFR10U
STORMSHIELD1$0"UStormshield Users Authority0
160901151108Z
170901151108Z0p10	UFR10U
STORMSHIELD10UAlexandre MARTINS1/0-	*H
	 alexandre.martins@stormshield.eu0"0
	*H
0
~
{x~;#3BgXC[rSVuv#>aL0w}""v`B)Db8qHkH\dqB6rd|:%Ze[wi3)$! hXε<صVO}#
EjJegk0%L퉬Q'b}3"*(_T-
w?gR	H,\aWO4Ǘ
Y3TR(Wn7Sv1n8xIan	00UD0IM_W]A$v#<0U#0ml||uu4[ׁ0	U00U0	`HB0U%0++0JUC0A0?=;9https://pki.netasq.com/auth/certificaterevocationlist.crl0U 
00U 0+U$0" alexandre.martins@stormshield.eu0
	*H
5hhN
̛U9œ2+Ejr@|f{`J2X!ȳ.ڤ|^*$"vlHtSeeAܟ-bC$*)ЖWJL >5@|N%·%{i-4akG앏]%.ݤp]7B/
*1WE@zZoq@fk0NpHObD$9jXḓSk~LKX100R0I10	UFR10U
STORMSHIELD1$0"UStormshield Users Authority(˻0
	`He0	*H
	1	*H
0	*H
	1
170309135209Z0(	*H
	100	`He0
*H
0/	*H
	1" dc<
ͨʐu(&k^ZJ%0
	*H
dV`Jc.2i@@w65e
?"
XuNZi&{vg酓礗,\Q\:1ذj@i>X(+IJHP^]%Xg3ēBrUb?!:c;A䝅TŻoN0LG}TcC!ՀZ{1ԡNtPMO? ЂwuؔUHk';$ߣ
{AmQވypeF5Î/gT
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3034263.GEZH9i4V44>