Date: Tue, 3 Jul 2007 00:18:59 +0200 From: "Attilio Rao" <attilio@freebsd.org> To: "Jeff Roberson" <jroberson@chesapeake.net> Cc: current@freebsd.org Subject: Re: New SCHED_SMP diff. Message-ID: <3bbf2fe10707021518l3d4257d6o3b8838faa6d1ace5@mail.gmail.com> In-Reply-To: <20070701224741.M552@10.0.0.1> References: <20070701224452.I552@10.0.0.1> <20070701224741.M552@10.0.0.1>
next in thread | previous in thread | raw e-mail | index | archive | help
2007/7/2, Jeff Roberson <jroberson@chesapeake.net>: > I forgot: > > http://people.freebsd.org/~jeff/schedsmp.diff > > --- amd64/amd64/cpu_switch.S 6 Jun 2007 07:35:07 -0000 1.158 > +++ amd64/amd64/cpu_switch.S 2 Jul 2007 05:43:31 -0000 > @@ -148,13 +148,7 @@ > movq %cr3,%rax > cmpq %rcx,%rax /* Same address space? */ > jne swinact > - movq %rdx, TD_LOCK(%rdi) /* Release the old thread */ > - /* Wait for the new thread to become unblocked */ > - movq $blocked_lock, %rdx > -1: > - movq TD_LOCK(%rsi),%rcx > - cmpq %rcx, %rdx > - je 1b > + xchgq %rdx, TD_LOCK(%rdi) /* Release the old thread */ I don't think here you need an atomic instruction, a memory barrier throug sfence is good enough in order to make thread migration consistent. Attilio -- Peace can only be achieved by understanding - A. Einstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3bbf2fe10707021518l3d4257d6o3b8838faa6d1ace5>