Skip site navigation (1)Skip section navigation (2)
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>