From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [Patch] cmpxchg emulation returns wrong ZF Date: Thu, 06 Aug 2009 10:12:24 +0200 Message-ID: <4A7A9068.8020603@ts.fujitsu.com> References: <4A7A7CEB.9080702@ts.fujitsu.com> <4A7AAA0C020000780000E59B@vpn.id2.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4A7AAA0C020000780000E59B@vpn.id2.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org Jan Beulich wrote: >>>> Juergen Gross 06.08.09 08:49 >>> >> Hi, >> >> attached patch corrects a bug in cmpxchg emulation in the hypervisor. >> >> BS2000 running as HVM-domain on 4 vcpus (no HAP) hit an error due to this bug >> after several days. > > Why don't you just clear ZF in that case? I think it is intentional that the > code doesn't loop inside the hypervisor, since that loop is non-preemptible > (whereas returning to the guest and re-issuing the instruction is). > > Further, I'm not really clear why that change is necessary at all: In the > code prior to the patch, register state is not being updated if > ops->cmpxchg() failed, and hence the old value of ZF is simply being > retained - which is the correct thing to do when intending to re-start > the instruction. Oh yes, you are right! I missed that eip isn't updated then, too. Please forget that patch. I'll continue to investigate the problem... Juergen -- Juergen Gross Principal Developer Operating Systems TSP ES&S SWE OS6 Telephone: +49 (0) 89 636 47950 Fujitsu Technolgy Solutions e-mail: juergen.gross@ts.fujitsu.com Otto-Hahn-Ring 6 Internet: ts.fujitsu.com D-81739 Muenchen Company details: ts.fujitsu.com/imprint.html