From: "H. Peter Anvin" Subject: Re: [PATCH 03 of 36] x86: add memory barriers to wrmsr Date: Wed, 25 Jun 2008 16:18:31 -0700 Message-ID: <4862D247.2010709@kernel.org> References: <93c7057b1f4acae501b2.1214367539@localhost> <20080624214441.13202f12@infradead.org> <4862B3E9.50601@goop.org> <20080625153136.2b3b6737@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20080625153136.2b3b6737@infradead.org> Sender: linux-kernel-owner@vger.kernel.org To: Arjan van de Ven Cc: Jeremy Fitzhardinge , Ingo Molnar , LKML , x86@kernel.org, xen-devel , Stephen Tweedie , Eduardo Habkost , Mark McLoughlin List-Id: xen-devel@lists.xenproject.org Arjan van de Ven wrote: >>> >> I suppose, though I would be inclined to put the barriers in the >> wrmsr macro itself to act as documentation. > > > yeah I meant like this: > > static inline void native_write_msr(unsigned int msr, > unsigned low, unsigned high) > { > barrier(); > asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high)); > barrier(); > } > > or in the same in the thing that calls this. > Actually, I believe the barrier(); before is actually incorrect, since it would affect the wrmsr() register arguments rather than the wrmsr instruction itself. -hpa