From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Brodkin Subject: Re: [RFC] perf: fix building for ARCv1 Date: Wed, 3 Feb 2016 16:20:56 +0000 Message-ID: <1454516455.2811.4.camel@synopsys.com> References: <1445166916.9672.10.camel@synopsys.com> <87a8rf6a6p.fsf@tassilo.jf.intel.com> <8761235rwe.fsf@tassilo.jf.intel.com> <20151019093549.GK3816@twins.programming.kicks-ass.net> <20151019095157.GM3816@twins.programming.kicks-ass.net> <20151020101133.GA17308@twins.programming.kicks-ass.net> <1446134296.3203.27.camel@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtprelay.synopsys.com ([198.182.60.111]:33735 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750991AbcBCQVD (ORCPT ); Wed, 3 Feb 2016 11:21:03 -0500 In-Reply-To: Content-Language: en-US Content-ID: <1C4C0DD35AD39349AB8A56D688DF15D1@internal.synopsys.com> Sender: linux-perf-users-owner@vger.kernel.org List-ID: To: Vineet Gupta Cc: "linux-kernel@vger.kernel.org" , "peterz@infradead.org" , "tglx@linutronix.de" , "andi@firstfloor.org" , "linux-snps-arc@lists.infradead.org" , "acme@redhat.com" , "linux-perf-users@vger.kernel.org" , "giladb@ezchip.com" , "dsahern@gmail.com" , "dvhart@linux.intel.com" , "noamc@ezchip.com" SGkgVmluZWV0LA0KDQpPbiBGcmksIDIwMTUtMTAtMzAgYXQgMDY6MTkgKzAwMDAsIFZpbmVldCBH dXB0YSB3cm90ZToNCj4gT24gVGh1cnNkYXkgMjkgT2N0b2JlciAyMDE1IDA5OjI4IFBNLCBBbGV4 ZXkgQnJvZGtpbiB3cm90ZToNCj4gPiBIaSBWaW5lZXQsDQo+ID4gDQo+ID4gT24gVHVlLCAyMDE1 LTEwLTIwIGF0IDEwOjQ1ICswMDAwLCBWaW5lZXQgR3VwdGEgd3JvdGU6DQo+ID4gPiBPbiBUdWVz ZGF5IDIwIE9jdG9iZXIgMjAxNSAwMzo0MSBQTSwgUGV0ZXIgWmlqbHN0cmEgd3JvdGU6DQo+ID4g PiA+ID4gPiBDYW4gd2UgdXNlIGV4aXN0aW5nIHN5c2NhbGwocykgLSBhZ2FpbiB0aGlzIGlzIHdo YXQgb3VyIGdvb2Qgb2xkIHB0aHJlYWQgbGlicmFyeQ0KPiA+ID4gPiA+ID4gY29kZSBkaWQuDQo+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IHN0YXRpYyB2b2lkIF9fcHRocmVhZF9hY3F1aXJlKGlu dCAqIHNwaW5sb2NrKQ0KPiA+ID4gPiA+ID4gew0KPiA+ID4gPiA+ID4gICBpbnQgY250ID0gMDsN Cj4gPiA+ID4gPiA+ICAgc3RydWN0IHRpbWVzcGVjIHRtOw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiAgIFJFQURfTUVNT1JZX0JBUlJJRVIoKTsNCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4g ICB3aGlsZSAodGVzdGFuZHNldChzcGlubG9jaykpIHsgICA8LS0tLSBhdG9taWMgRVhjaGFuZ2UN Cj4gPiA+ID4gPiA+ICAgICBpZiAoY250IDwgNTApIHsNCj4gPiA+ID4gPiA+ICAgICAgIHNjaGVk X3lpZWxkKCk7DQo+ID4gPiA+ID4gPiAgICAgICBjbnQrKzsNCj4gPiA+ID4gPiA+ICAgICB9IGVs c2Ugew0KPiA+ID4gPiA+ID4gICAgICAgdG0udHZfc2VjID0gMDsNCj4gPiA+ID4gPiA+ICAgICAg IHRtLnR2X25zZWMgPSAyMDAwMDAxOw0KPiA+ID4gPiA+ID4gICAgICAgbmFub3NsZWVwKCZ0bSwg KCh2b2lkICopMCkpOw0KPiA+ID4gPiA+ID4gICAgICAgY250ID0gMDsNCj4gPiA+ID4gPiA+ICAg ICB9DQo+ID4gPiA+ID4gPiAgIH0NCj4gPiA+ID4gKnNodWRkZXIqIHRoYXQgaXMgcXVpdGUgaG9y cmlibGUuDQo+ID4gPiA+IA0KPiA+ID4gPiBUaGlzIG1lYW5zIGFsbCB5b3VyICdhdG9taWNzJyBh cmUgYnJva2VuIGZvciBhbnl0aGluZyBTQ0hFRF9GSUZPIGFuZCB0aGUNCj4gPiA+ID4gbGlrZS4g WW91IHNpbXBseSBfY2Fubm90XyBydW4gYSByZWFsdGltZSBzeXN0ZW0uDQo+ID4gPiBUaGUgY29k ZSBhYm92ZSBpcyBmcm9tIHVDbGliYyBvbGQgdGhyZWFkaW5nIGxpYnJhcnkgd2hpY2ggd2UgZG9u J3QgdXNlIGFueW1vcmUuDQo+ID4gPiBUaGUgTlBUTCB2ZXJzaW9uIGRvZXNuJ3QgaGF2ZSBhbGwg b2YgdGhpcyBzb25nLW4tZGFuY2UgYW5kIHJlbGllcyBvbiBmdXRleGVzLiBUaGUNCj4gPiA+IGNo YW5nZSB3ZSBhcmUgdGFsa2luZyBhYm91dCBpcyBvbmx5IGZvciB0aGUgYXRvbWljcyBpbiBwZXJm IGl0c2VsZi4gSSBkbw0KPiA+ID4gdW5kZXJzdGFuZCB5b3VyIFBPViB0aG91Z2guDQo+ID4gPiAN Cj4gPiA+ID4gKGFsc28sIGZvciBBQ1FVSVJFIHlvdSB3YW50IHRoZSBSRUFEX01FTU9SWV9CQVJS SUVSKCkgX2FmdGVyXyB0aGUNCj4gPiA+ID4gdGVzdC1hbmQtc2V0IGNvbnRyb2wgZGVwZW5kZW5j eS4pDQo+ID4gPiBBYnNvbHV0ZWx5IGFuZCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBoYXZlIHRvIGJl IGFkZGVkIGJvdGggaW5zaWRlIHRoZSBsb29wIGFuZCBvbmUNCj4gPiA+IGF0IHRoZSBlbmQgdG8g Y292ZXIgYm90aCB0aGUgc2NlbmFyaW9zICENCj4gPiA+IA0KPiA+IEknbSB3b25kZXJpbmcgd2hh dCBhcmUgb3VyIHBsYW5zIGZvciBub3c/DQo+ID4gQXJlIHdlIGdvaW5nIHRvIGFjY2VwdCBwcm9w b3NlZCBmaXgganVzdCBmb3IgQVJDIGluIDQuNCAoYW5kIHRvIGFsbCBzdGFibGVzIHRoZW4pDQo+ ID4gb3Igd2UnbGwgdHJ5IHRvIGNvbWUgdXAgd2l0aCBtb3JlIGdlbmVyYWwgc29sdXRpb24/DQo+ IA0KPiBJIGFncmVlIHdpdGggdGhlIGN1cnJlbnQgc29sdXRpb24gdG8gYWRkIC1hdG9taWMgdG8g Zm9yIGFyYzcwMCBidWlsZHMuDQo+IEFsdGhvdWdoIG1ha2luZyB0aGF0IGRlZmF1bHQgZm9yIGFy YzcwMCB0b29scyB3aWxsIGJlIGJldHRlciBidXQgdGhhdCB3aWxsIG5vdCBmaXgNCj4gdGhpbmdz IGJlZm9yZSBuZXh0IHJlbGVhc2Ugb2YgdG9vbHMgZXRjLg0KPiANCj4gQnV0IHdlICpkbyogbmVl ZCB0byBpbXByb3ZlIGdlbmVyaWMgc29sdXRpb24NCj4gMS4gQWRkIGF0b21pY3MgZGV0ZWN0aW9u IGluIHBlcmYgdG8gYWRkIGZhbGwgYmFjayBhcmNoIHN0dWJzDQo+IDIuIEFSQyBuZWVkcyB0byBh ZGQgc3lzY2FsbCBmb3IgZmFjaWxpdGF0aW5nIGF0b21pYyByLW0tdyAhDQoNClNvIHRoZSBtb3N0 IHJlY2VudCBBUkMgR05VIHRvb2xzICgyMDE1LjEyKSB3ZXJlIGp1c3QgcmVsZWFzZWQgeWVzdGVy ZGF5DQphbmQgc3RpbGwgYXRvbWljcyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCBmb3IgQVJDdjEu DQpUaGF0IG1lYW5zIHBlcmYgd2lsbCBjb250aW51ZSB0byBmYWlsIG9uIGJ1aWxkaW5nIGZvciBu b3cuDQoNCkRvIHlvdSB0aGluayB3ZSBtYXkgYXBwbHkgbXkgaW5pdGlhbCBmaXggdG8gNC41IHdo aWxlIGl0IGlzIGluIGRldmVsb3BtZW50IGFuZA0KdGhlbiB0byBzdGFibGUgdHJlZXMgYXMgd2Vs bD8NCg0KLUFsZXhleQ== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey.Brodkin@synopsys.com (Alexey Brodkin) Date: Wed, 3 Feb 2016 16:20:56 +0000 Subject: [RFC] perf: fix building for ARCv1 In-Reply-To: References: <1445166916.9672.10.camel@synopsys.com> <87a8rf6a6p.fsf@tassilo.jf.intel.com> <8761235rwe.fsf@tassilo.jf.intel.com> <20151019093549.GK3816@twins.programming.kicks-ass.net> <20151019095157.GM3816@twins.programming.kicks-ass.net> <20151020101133.GA17308@twins.programming.kicks-ass.net> <1446134296.3203.27.camel@synopsys.com> List-ID: Message-ID: <1454516455.2811.4.camel@synopsys.com> To: linux-snps-arc@lists.infradead.org Hi Vineet, On Fri, 2015-10-30@06:19 +0000, Vineet Gupta wrote: > On Thursday 29 October 2015 09:28 PM, Alexey Brodkin wrote: > > Hi Vineet, > > > > On Tue, 2015-10-20@10:45 +0000, Vineet Gupta wrote: > > > On Tuesday 20 October 2015 03:41 PM, Peter Zijlstra wrote: > > > > > > Can we use existing syscall(s) - again this is what our good old pthread library > > > > > > code did. > > > > > > > > > > > > static void __pthread_acquire(int * spinlock) > > > > > > { > > > > > > int cnt = 0; > > > > > > struct timespec tm; > > > > > > > > > > > > READ_MEMORY_BARRIER(); > > > > > > > > > > > > while (testandset(spinlock)) { <---- atomic EXchange > > > > > > if (cnt < 50) { > > > > > > sched_yield(); > > > > > > cnt++; > > > > > > } else { > > > > > > tm.tv_sec = 0; > > > > > > tm.tv_nsec = 2000001; > > > > > > nanosleep(&tm, ((void *)0)); > > > > > > cnt = 0; > > > > > > } > > > > > > } > > > > *shudder* that is quite horrible. > > > > > > > > This means all your 'atomics' are broken for anything SCHED_FIFO and the > > > > like. You simply _cannot_ run a realtime system. > > > The code above is from uClibc old threading library which we don't use anymore. > > > The NPTL version doesn't have all of this song-n-dance and relies on futexes. The > > > change we are talking about is only for the atomics in perf itself. I do > > > understand your POV though. > > > > > > > (also, for ACQUIRE you want the READ_MEMORY_BARRIER() _after_ the > > > > test-and-set control dependency.) > > > Absolutely and in this case it will have to be added both inside the loop and one > > > at the end to cover both the scenarios ! > > > > > I'm wondering what are our plans for now? > > Are we going to accept proposed fix just for ARC in 4.4 (and to all stables then) > > or we'll try to come up with more general solution? > > I agree with the current solution to add -atomic to for arc700 builds. > Although making that default for arc700 tools will be better but that will not fix > things before next release of tools etc. > > But we *do* need to improve generic solution > 1. Add atomics detection in perf to add fall back arch stubs > 2. ARC needs to add syscall for facilitating atomic r-m-w ! So the most recent ARC GNU tools (2015.12) were just released yesterday and still atomics are disabled by default for ARCv1. That means perf will continue to fail on building for now. Do you think we may apply my initial fix to 4.5 while it is in development and then to stable trees as well? -Alexey