From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: KVM: pvmmu breakage with gcc 4.3.0 Date: Wed, 25 Jun 2008 22:10:58 -0500 Message-ID: <486308C2.5080304@codemonkey.ws> References: <20080626021047.GA10263@dmt.cnet> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010603030909020801020101" Cc: Avi Kivity , Anthony Liguori , Alexandre Oliva , kvm-devel To: Marcelo Tosatti Return-path: Received: from an-out-0708.google.com ([209.85.132.246]:15482 "EHLO an-out-0708.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755789AbYFZDLe (ORCPT ); Wed, 25 Jun 2008 23:11:34 -0400 Received: by an-out-0708.google.com with SMTP id d40so881777and.103 for ; Wed, 25 Jun 2008 20:11:33 -0700 (PDT) In-Reply-To: <20080626021047.GA10263@dmt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------010603030909020801020101 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Marcelo Tosatti wrote: > Some pvmmu functions store their commands on stack, and newer GCC > versions conclude that these commands are unused. > > So stick an inline asm statement to convince the compiler otherwise. > I think a better fix is to add a "memory " clobber to the hypercalls. This isn't really a GCC bug since it doesn't realize that hypercalls can touch memory. See the attached patch. Avi: please push this for 2.6.26 if possible. Regards, Anthony Liguori > Signed-off-by: Marcelo Tosatti > > > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > index 8b7a3cf..c892752 100644 > --- a/arch/x86/kernel/kvm.c > +++ b/arch/x86/kernel/kvm.c > @@ -55,6 +55,12 @@ static void kvm_mmu_op(void *buffer, unsigned len) > int r; > unsigned long a1, a2; > > + /* > + * GCC 4.3.0 concludes that on-stack kvm_mmu_op* is unused and > + * optimizes its initialization away. > + */ > + asm ("" : : "p" (buffer)); > + > do { > a1 = __pa(buffer); > a2 = 0; /* on i386 __pa() always returns <4G */ > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > --------------010603030909020801020101 Content-Type: application/mbox; name="hypercall-memory-clobber.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="hypercall-memory-clobber.patch" U3ViamVjdDogW1BBVENIXSBBZGQgbWVtb3J5IGNsb2JiZXIgdG8gaHlwZXJjYWxscwpDYzog QXZpIEtpdml0eSA8YXZpQHF1bXJhbmV0LmNvbT4KQ2M6IE1hcmNlbG8gVG9zYXR0aSA8bXRv c2F0dGlAcmVkaGF0LmNvbT4KCkh5cGVyY2FsbHMgY2FuIG1vZGlmeSBhcmJpdHJhcnkgcmVn aW9ucyBvZiBtZW1vcnkuICBNYWtlIHN1cmUgdG8gaW5kaWNhdGUgdGhpcwppbiB0aGUgY2xv YmJlciBsaXN0LiAgVGhpcyBmaXhlcyBhIGhhbmcgd2hlbiB1c2luZyBLVk1fR1VFU1Qga2Vy bmVsIGJ1aWx0IHdpdGgKR0NDIDQuMy4wLgoKVGhpcyB3YXMgb3JpZ2luYWxseSBzcG90dGVk IGFuZCBhbmFseXplZCBieSBNYXJjZWxvLgoKU2lnbmVkLW9mZi1ieTogQW50aG9ueSBMaWd1 b3JpIDxhbGlndW9yaUB1cy5pYm0uY29tPgoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4 Ni9rdm1fcGFyYS5oIGIvaW5jbHVkZS9hc20teDg2L2t2bV9wYXJhLmgKaW5kZXggYmZkOTkw MC4uNzZmMzkyMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20teDg2L2t2bV9wYXJhLmgKKysr IGIvaW5jbHVkZS9hc20teDg2L2t2bV9wYXJhLmgKQEAgLTcxLDcgKzcxLDggQEAgc3RhdGlj IGlubGluZSBsb25nIGt2bV9oeXBlcmNhbGwwKHVuc2lnbmVkIGludCBucikKIAlsb25nIHJl dDsKIAlhc20gdm9sYXRpbGUoS1ZNX0hZUEVSQ0FMTAogCQkgICAgIDogIj1hIihyZXQpCi0J CSAgICAgOiAiYSIobnIpKTsKKwkJICAgICA6ICJhIihucikKKwkJICAgICA6ICJtZW1vcnki KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC04MCw3ICs4MSw4IEBAIHN0YXRpYyBpbmxpbmUg bG9uZyBrdm1faHlwZXJjYWxsMSh1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGxvbmcgcDEp CiAJbG9uZyByZXQ7CiAJYXNtIHZvbGF0aWxlKEtWTV9IWVBFUkNBTEwKIAkJICAgICA6ICI9 YSIocmV0KQotCQkgICAgIDogImEiKG5yKSwgImIiKHAxKSk7CisJCSAgICAgOiAiYSIobnIp LCAiYiIocDEpCisJCSAgICAgOiAibWVtb3J5Iik7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAt OTAsNyArOTIsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga3ZtX2h5cGVyY2FsbDIodW5zaWdu ZWQgaW50IG5yLCB1bnNpZ25lZCBsb25nIHAxLAogCWxvbmcgcmV0OwogCWFzbSB2b2xhdGls ZShLVk1fSFlQRVJDQUxMCiAJCSAgICAgOiAiPWEiKHJldCkKLQkJICAgICA6ICJhIihuciks ICJiIihwMSksICJjIihwMikpOworCQkgICAgIDogImEiKG5yKSwgImIiKHAxKSwgImMiKHAy KQorCQkgICAgIDogIm1lbW9yeSIpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTEwMCw3ICsx MDMsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga3ZtX2h5cGVyY2FsbDModW5zaWduZWQgaW50 IG5yLCB1bnNpZ25lZCBsb25nIHAxLAogCWxvbmcgcmV0OwogCWFzbSB2b2xhdGlsZShLVk1f SFlQRVJDQUxMCiAJCSAgICAgOiAiPWEiKHJldCkKLQkJICAgICA6ICJhIihuciksICJiIihw MSksICJjIihwMiksICJkIihwMykpOworCQkgICAgIDogImEiKG5yKSwgImIiKHAxKSwgImMi KHAyKSwgImQiKHAzKQorCQkgICAgIDogIm1lbW9yeSIpOwogCXJldHVybiByZXQ7CiB9CiAK QEAgLTExMSw3ICsxMTUsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga3ZtX2h5cGVyY2FsbDQo dW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBsb25nIHAxLAogCWxvbmcgcmV0OwogCWFzbSB2 b2xhdGlsZShLVk1fSFlQRVJDQUxMCiAJCSAgICAgOiAiPWEiKHJldCkKLQkJICAgICA6ICJh IihuciksICJiIihwMSksICJjIihwMiksICJkIihwMyksICJTIihwNCkpOworCQkgICAgIDog ImEiKG5yKSwgImIiKHAxKSwgImMiKHAyKSwgImQiKHAzKSwgIlMiKHA0KQorCQkgICAgIDog Im1lbW9yeSIpOwogCXJldHVybiByZXQ7CiB9CiAK --------------010603030909020801020101--