From mboxrd@z Thu Jan 1 00:00:00 1970 From: Borislav Petkov Subject: Re: [PATCH] x86: Add an explicit barrier() to clflushopt() Date: Mon, 19 Oct 2015 12:16:12 +0200 Message-ID: <20151019101612.GA20341@pd.tnic> References: <1445248735-11915-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.skyhub.de (mail.skyhub.de [78.46.96.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 462656E7C3 for ; Mon, 19 Oct 2015 03:16:20 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445248735-11915-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Wilson Cc: Daniel Vetter , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Ross Zwisler , "H . Peter Anvin" List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMTksIDIwMTUgYXQgMTA6NTg6NTVBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IER1cmluZyB0ZXN0aW5nIHdlIG9ic2VydmVkIHRoYXQgdGhlIGxhc3QgY2FjaGVsaW5l IHdhcyBub3QgYmVpbmcgZmx1c2hlZAo+IGZyb20gYQo+IAo+IAltYigpCj4gCWZvciAoYWRkciA9 IGFkZHIgJiAtY2xmbHVzaF9zaXplOyBhZGRyIDwgZW5kOyBhZGRyICs9IGNsZmx1c2hfc2l6ZSkK PiAJCWNsZmx1c2hvcHQoKTsKPiAJbWIoKQo+IAo+IGxvb3AgKHdoZXJlIHRoZSBpbml0aWFsIGFk ZHIgYW5kIGVuZCB3ZXJlIG5vdCBjYWNoZWxpbmUgYWxpZ25lZCkuCj4gCj4gQ2hhbmdpbmcgdGhl IGxvb3AgZnJvbSBhZGRyIDwgZW5kIHRvIGFkZHIgPD0gZW5kLCBvciByZXBsYWNpbmcgdGhlCj4g Y2xmbHVzaG9wdCgpIHdpdGggY2xmbHVzaCgpIGJvdGggZml4ZWQgdGhlIHRlc3RjYXNlLiBIaW50 aW5nIHRoYXQgR0NDCj4gd2FzIG1pc2NvbXBsaW5nIHRoZSBhc3NlbWJseSB3aXRoaW4gdGhlIGxv b3AgYW5kIHNwZWNpZmljYWxseSB0aGUKPiBhbHRlcm5hdGl2ZSB3aXRoaW4gY2xmbHVzaG9wdCgp IHdhcyBjb25mdXNpbmcgdGhlIGxvb3Agb3B0aW1pemVyLgo+IAo+IEFkZGluZyBhIGJhcnJpZXIo KSBpbnRvIGNsZmx1c2hvcHQoKSBpcyBlbm91Z2ggZm9yIEdDQyB0byBkdHJ0LCBidXQKPiBzb2x2 aW5nIHdoeSBHQ0MgaXMgbm90IHNlZWluZyB0aGUgY29uc3RyYWludHMgZnJvbSB0aGUgYWx0ZXJu YXRpdmVfaW8oKQo+IHdvdWxkIGJlIHNtYXJ0ZXIuLi4KCkhtbSwgd291bGQgc29tZXRoaW5nIGxp a2UgYWRkaW5nIHRoZSBtZW1vcnkgY2xvYmJlciB0byB0aGUKYWx0ZXJuYXRpdmVfaW8oKSBkZWZp bml0aW9uIHdvcms/CgotLS0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVy bmF0aXZlLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hbHRlcm5hdGl2ZS5oCmluZGV4IDdiZmM4 NWJiYjhmZi4uZDkyM2U1ZGFjZGIxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9h bHRlcm5hdGl2ZS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgKQEAg LTIwNyw3ICsyMDcsNyBAQCBzdGF0aWMgaW5saW5lIGludCBhbHRlcm5hdGl2ZXNfdGV4dF9yZXNl cnZlZCh2b2lkICpzdGFydCwgdm9pZCAqZW5kKQogLyogTGlrZSBhbHRlcm5hdGl2ZV9pbnB1dCwg YnV0IHdpdGggYSBzaW5nbGUgb3V0cHV0IGFyZ3VtZW50ICovCiAjZGVmaW5lIGFsdGVybmF0aXZl X2lvKG9sZGluc3RyLCBuZXdpbnN0ciwgZmVhdHVyZSwgb3V0cHV0LCBpbnB1dC4uLikJXAogCWFz bSB2b2xhdGlsZSAoQUxURVJOQVRJVkUob2xkaW5zdHIsIG5ld2luc3RyLCBmZWF0dXJlKQkJXAot CQk6IG91dHB1dCA6ICJpIiAoMCksICMjIGlucHV0KQorCQk6IG91dHB1dCA6ICJpIiAoMCksICMj IGlucHV0IDogIm1lbW9yeSIpCiAKIC8qIExpa2UgYWx0ZXJuYXRpdmVfaW8sIGJ1dCBmb3IgcmVw bGFjaW5nIGEgZGlyZWN0IGNhbGwgd2l0aCBhbm90aGVyIG9uZS4gKi8KICNkZWZpbmUgYWx0ZXJu YXRpdmVfY2FsbChvbGRmdW5jLCBuZXdmdW5jLCBmZWF0dXJlLCBvdXRwdXQsIGlucHV0Li4uKQlc CgotLSAKUmVnYXJkcy9HcnVzcywKICAgIEJvcmlzLgoKRUNPIHRpcCAjMTAxOiBUcmltIHlvdXIg bWFpbHMgd2hlbiB5b3UgcmVwbHkuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753366AbbJSKQV (ORCPT ); Mon, 19 Oct 2015 06:16:21 -0400 Received: from mail.skyhub.de ([78.46.96.112]:37374 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751776AbbJSKQT (ORCPT ); Mon, 19 Oct 2015 06:16:19 -0400 Date: Mon, 19 Oct 2015 12:16:12 +0200 From: Borislav Petkov To: Chris Wilson Cc: linux-kernel@vger.kernel.org, Ross Zwisler , "H . Peter Anvin" , Imre Deak , Daniel Vetter , dri-devel@lists.freedesktop.org Subject: Re: [PATCH] x86: Add an explicit barrier() to clflushopt() Message-ID: <20151019101612.GA20341@pd.tnic> References: <1445248735-11915-1-git-send-email-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1445248735-11915-1-git-send-email-chris@chris-wilson.co.uk> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 19, 2015 at 10:58:55AM +0100, Chris Wilson wrote: > During testing we observed that the last cacheline was not being flushed > from a > > mb() > for (addr = addr & -clflush_size; addr < end; addr += clflush_size) > clflushopt(); > mb() > > loop (where the initial addr and end were not cacheline aligned). > > Changing the loop from addr < end to addr <= end, or replacing the > clflushopt() with clflush() both fixed the testcase. Hinting that GCC > was miscompling the assembly within the loop and specifically the > alternative within clflushopt() was confusing the loop optimizer. > > Adding a barrier() into clflushopt() is enough for GCC to dtrt, but > solving why GCC is not seeing the constraints from the alternative_io() > would be smarter... Hmm, would something like adding the memory clobber to the alternative_io() definition work? --- diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h index 7bfc85bbb8ff..d923e5dacdb1 100644 --- a/arch/x86/include/asm/alternative.h +++ b/arch/x86/include/asm/alternative.h @@ -207,7 +207,7 @@ static inline int alternatives_text_reserved(void *start, void *end) /* Like alternative_input, but with a single output argument */ #define alternative_io(oldinstr, newinstr, feature, output, input...) \ asm volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ - : output : "i" (0), ## input) + : output : "i" (0), ## input : "memory") /* Like alternative_io, but for replacing a direct call with another one. */ #define alternative_call(oldfunc, newfunc, feature, output, input...) \ -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply.