Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756466Ab2JRP4x (ORCPT ); Thu, 18 Oct 2012 11:56:53 -0400 Received: from rcsinet15.oracle.com ([148.87.113.117]:30526 "EHLO rcsinet15.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754948Ab2JRP4u convert rfc822-to-8bit (ORCPT ); Thu, 18 Oct 2012 11:56:50 -0400 MIME-Version: 1.0 Message-ID: Date: Thu, 18 Oct 2012 08:56:40 -0700 (PDT) From: Dan Magenheimer To: "H. Peter Anvin" Cc: Konrad Wilk , linux-acpi@vger.kernel.org, x86@kernel.org, xen-devel@lists.xensource.com, linux-kernel@vger.kernel.org, lenb@kernel.org Subject: RE: [Xen-devel] Is: axe read_tscp pvops call. Was: Re: [RFC] ACPI S3 and Xen (suprisingly small\!). References: <1350481786-4969-1-git-send-email-konrad.wilk@oracle.com> <507ED6C0.4020503@zytor.com> <20121017161036.GA10691@phenom.dumpdata.com> <507EE1C3.7070300@zytor.com> <20121017165452.GA22740@phenom.dumpdata.com> <507EEC53.1010309@zytor.com> <84b3cbf9-7c84-4d7e-a2d7-46b0d1cc5975@default> <50802030.8070107@zytor.com> In-Reply-To: <50802030.8070107@zytor.com> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.7 (607090) [OL 12.0.6661.5003 (x86)] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-Source-IP: acsinet21.oracle.com [141.146.126.237] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2889 Lines: 63 > From: H. Peter Anvin [mailto:hpa@zytor.com] > Subject: Re: [Xen-devel] Is: axe read_tscp pvops call. Was: Re: [RFC] ACPI S3 and Xen (suprisingly > small\!). > > On 10/18/2012 08:22 AM, Dan Magenheimer wrote: > > > > It's a bit more complicated than that. The problem is that if > > any patch is ever submitted to the kernel that uses the rdtscp > > instruction *in kernel space* in some clever way, the resultant > > kernel may not behave as expected (depending on how the instruction > > is used) on a 32-bit[1] PV kernel running on Xen, up to and including > > the possibility of data corruption. > > > > I don't know how one would implement it, but it's like a > > BUILD_BUG_ON is needed if any kernel developer uses rdtscp > > (one that never gets invoked by vdso code), that prints: > > > > "WARNING: Please do not use this instruction in the kernel > > without notifying the Xen maintainer as there is a possibility > > it may behave unpredictably in some Xen environments. > > See Documentation/.../xen_pv_limitations for detail." > > > > The other virtualization-unsafe instructions may have similar > > problems. > > > > Good frakking God. This is the sort of things that makes me think that > Xen PV should just be thrown out of the kernel once and for all. I agree the whole idea of paravirtualization is a hack, but it is a hack to workaround some poor architectural design decisions many years ago by Intel processor designers who should have known better. Go yell at them. Worse, the rdtscp instruction was a poor design decision by AMD processor designers to hack around tsc skew problems. Go yell at them too. And both Intel and AMD chose to perpetuate the problem with a complicated VT/SVM implementation that will never perform as well as native. At least they tried ;-) > Do you notice that the document you just claimed doesn't even exist at > this point, never mind being somehow enforced? In other word, there is > ABSOLUTELY NO WAY a mainline kernel developer can have any idea what > amount of violence Xen does to the architecture that it is parasiting on. Of course I know it doesn't exist. I probably should have noted that in my email. But it should exist because else subtle issues like this will get lost in the mist of time. And I have no clue how to enforce it (though some BUILD_BUG_ON might help). Like so many other things in the kernel (and computing in general), paravirtualization is a tradeoff of maintainability for kernel/software developers vs significant performance improvement for (a large number of) users. That tradeoff is above my pay grade. But it does provide job security. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/