[patch] set_{current,task}_state() SMP safe (fwd)

Andrea Arcangeli (andrea@suse.de)
Tue, 31 Aug 1999 18:33:04 +0200 (CEST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--168456704-805007122-936117149=:3775
Content-Type: text/PLAIN; CHARSET=us-ascii
Content-ID: <Pine.LNX.4.10.9908311832421.3775@hay.suse.de>

This message got rejected by the list (now the patch is compressed). I
sent uncompressed in the original email because they are more handy to
read for other developers.

Andrea

---------- Forwarded message ----------
Date: Tue, 31 Aug 1999 18:08:17 +0200 (MEST)
From: Andrea Arcangeli <andrea@suse.de>
To: Linus Torvalds <torvalds@transmeta.com>, David S. Miller <davem@redhat.com>,
MOLNAR Ingo <mingo@chiara.csoma.elte.hu>,
Alan Cox <alan@lxorguk.ukuu.org.uk>, kuznet@ms2.inr.ac.ru
Cc: linux-kernel@vger.rutgers.edu, linux-smp@vger.rutgers.edu
Subject: [patch] set_{current,task}_state() SMP safe

I produced a new patch to fix the wait-event-interface SMP-races. I hope I
merged all the good implementation-hints I got. All architectures will
need to provide set_mb() to make the thing working. set_mb() can safely be
implemented everywhere as I did in the Alpha port (see the changes
include/asm-alpha/system.h). That should be the obvious implementation. As
Ingo pointed out on x86 it's a bit faster implemented using xchg than
using mb() and that's why we have a per-arch set_mb().

The other thing to note is that in a UP compile __set_current/task_state
will be completly equal to set_current/task_state (and that's the real
cons against the raw mb()).

The old:

current->state = XXX;

is equivalent to:

__set_current_state(XXX);

The old:

struct task_struct * tsk = current;
tsk->state = XXX;

is always equivalent to:

struct task_struct * tsk;
__set_task_state(tsk, XXX);

Choosing between the old and the new style will make no difference at all.

The real difference instead is between:

__set_{current,task}_state and set_{current,task}_state.

when the kernel is compiled SMP. The former will only set the state of
the task, the latter instead will set the state of the task and _then_
will force a SMP memory barrier.

The task->state is just volatile so no need of barrier() after setting it
on UP.

The SMP safe set_{current,task}_state are always safe. So if somebody is
unsure he should use it in the wait-event interface. In general if you
grab a spinlock between the set_current_state and the condtion-check you
can use the raw __set_current_state version.

Comments are welcome.

Patch against 2.3.16-pre1:

*snipped*

Andrea

--168456704-805007122-936117149=:3775
Content-Type: application/OCTET-STREAM; NAME="want_event-races-2.3.16-pre1-1.gz"
Content-Transfer-Encoding: base64
Content-ID: <Pine.LNX.4.10.9908311832290.3775@hay.suse.de>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="want_event-races-2.3.16-pre1-1.gz"

H4sICB37yzcCA3dhbnRfZXZlbnQtcmFjZXMtMi4zLjE2LXByZTEtMQDsXXt3
2zay/1v5FEj2JFeOJestS3LjrSMribaOnErydtPbPTwUCdmMJZLhw4+0uZ/9
zgDgQxIfUGynbVq1MSRyOATxGwxmBgNQN+ZzUvadEanvNfZq7bLt0FpFdbSL
itHotCuX1DHpoqLayz0tTlK+Vg1PoVfU9FKoH5XLZQmmhemFT478c1Krk3q1
12r06nVS63a7j3Z3d7e7Y2HqU8aqUSO1Rq/a6dWqnNX335Nyrbq/X9onu6L8
/vtHpFAoONTzHZOUB0evj4ajAzym6rrC7vXRpz4tPgPe7Df7WSLP8PsOUDrU
pqrXe1QuFDTfcaBe5UPXUz1KXpDp0eQHZTiaDsbjs3fT4cuTwcGj3ULBpZ4i
aBVGWtwk3GGVMOakyG6o0KXt3RZVd4c8e0Yeu8a5qS4Um5q6YZ4XBbOdHfIr
exxXu6C6v6BFzqVwbnmWqOjBIz0d62W7c1lZqlpF1Wflme/mgL1Jnoz2Jl3h
rWUyjEiX1Gu9+n6vUZWDO4FXJt71RqNZ6pBdUTK8DdOD1vAAoCq2z/Ggf3I0
Hig/HQ2nP54NzgZFvGkpaFQgAdAURRq1DcnRZ+x3JDRlOVEhwOz6wlhQUnzM
6MqHDv24B2gqAObiVsCNQjIHqvLhXJkv1HOXPCOnyuh09PLktP8DEvGGaHZR
8EXJBX9VUD7DHdOqNj4bjYaj1wdZTSFoGC+HLq0rmtMOhBGyrgfFAa9nq11n
gPGS1dN2ALLL4pOj45dACOxcr0cYa9YOpDhbWNol9ASyt7dHfjGfIO9/YOeY
fyPgtbjWEuUfErwsvWLYbmWmnlOvcqVqLnUMdZGnWxIvSdEvibTreqHdq0kO
KXL81saV/f0OG1ewbAuEGA8lkN6F6wAgT3VS/ABN9eLpwt8BcX1SInCiRPCY
Qd245EqOKPGRR7N806MOU22FynOyVC8p8V2ysK7hWQ3LMbxb8rwSFx/FM5bU
8r2idqE67Ec09qSNM2xUmTlUveSdttatNtjTd6v1QD4d6KWWQ7lUF9nfnQPC
1O/cKh+yLkt1xQLmu7sHUW+podA/2GjqebfKhW+eK76t2Njz7B3y2294lsDn
cZFXLuiJR5P3oz6wGk6HRyfDnwfHfIj9hzHX6ZxMBmM4rByfKuPBZHo0nmb1
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
--168456704-805007122-936117149=:3775--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/