From owner-cvs-src@FreeBSD.ORG Tue Aug 3 20:23:42 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F0FBF16A4CE; Tue, 3 Aug 2004 20:23:42 +0000 (GMT) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.FreeBSD.org (Postfix) with ESMTP id BF0F943D39; Tue, 3 Aug 2004 20:23:42 +0000 (GMT) (envelope-from mux@freebsd.org) Received: by elvis.mu.org (Postfix, from userid 1920) id AB1D25C908; Tue, 3 Aug 2004 13:23:42 -0700 (PDT) Date: Tue, 3 Aug 2004 22:23:42 +0200 From: Maxime Henrion To: Marcel Moolenaar Message-ID: <20040803202342.GH13608@elvis.mu.org> References: <200408031844.i73IiRb4082245@repoman.freebsd.org> <20040803191313.GB99599@ns1.xcllnt.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040803191313.GB99599@ns1.xcllnt.net> User-Agent: Mutt/1.4.2.1i cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/alpha/include cpu.h src/sys/amd64/include cpu.h src/sys/arm/include cpu.h src/sys/i386/include cpu.h src/sys/ia64/include cpu.h src/sys/powerpc/include cpu.h src/sys/sparc64/include cpu.h src/sys/kern kern_mutex.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Aug 2004 20:23:43 -0000 Marcel Moolenaar wrote: > On Tue, Aug 03, 2004 at 06:44:27PM +0000, Maxime Henrion wrote: > > mux 2004-08-03 18:44:27 UTC > > > > FreeBSD src repository > > > > Modified files: > > sys/alpha/include cpu.h > > sys/amd64/include cpu.h > > sys/arm/include cpu.h > > sys/i386/include cpu.h > > sys/ia64/include cpu.h > > sys/powerpc/include cpu.h > > sys/sparc64/include cpu.h > > sys/kern kern_mutex.c > > Log: > > Instead of calling ia32_pause() conditionally on __i386__ or __amd64__ > > being defined, define and use a new MD macro, cpu_spinwait(). It only > > expands to something on i386 and amd64, so the compiled code should be > > identical. > > Cool, but can you explain to me how exactly cpu_spinwait() is to be > different from cpu_idle() that we cannot use cpu_idle()? They serve very different purposes. The cpu_spinwait() macro is used on x86 and amd64 to insert a "pause" instruction before retrying to obtain a spin mutex. It is supposed to improve performance on P4 and newer machines. It is empty on other architectures because we don't have such a thing, or at least it's not implemented. The cpu_idle() hook is called in the idle process, and on x86 it only does the "sti; hlt" instructions, so it can't fulfill the role of the cpu_spinwait() macro. Cheers, Maxime