From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <1467802454.9143.1.camel@gmail.com> Subject: Re: [PATCH v2 2/4] powerpc/spinlock: support vcpu preempted check From: Balbir Singh Date: Wed, 06 Jul 2016 20:54:14 +1000 In-Reply-To: <1467124991-13164-3-git-send-email-xinhui.pan@linux.vnet.ibm.com> References: <1467124991-13164-1-git-send-email-xinhui.pan@linux.vnet.ibm.com> <1467124991-13164-3-git-send-email-xinhui.pan@linux.vnet.ibm.com> Content-Type: text/plain; charset="utf-8" Mime-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , List-Archive: To: Pan Xinhui , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, virtualization@lists.linux-foundation.org, linux-s390@vger.kernel.org Cc: dave@stgolabs.net, peterz@infradead.org, mpe@ellerman.id.au, boqun.feng@gmail.com, will.deacon@arm.com, waiman.long@hpe.com, mingo@redhat.com, paulus@samba.org, benh@kernel.crashing.org, schwidefsky@de.ibm.com, paulmck@linux.vnet.ibm.com List-ID: Content-Transfer-Encoding: 8bit On Tue, 2016-06-28 at 10:43 -0400, Pan Xinhui wrote: > This is to fix some lock holder preemption issues. Some other locks > implementation do a spin loop before acquiring the lock itself. Currently > kernel has an interface of bool vcpu_is_preempted(int cpu). It take the cpu ^^ takes > as parameter and return true if the cpu is preempted. Then kernel can break > the spin loops upon on the retval of vcpu_is_preempted. >  > As kernel has used this interface, So lets support it. >  > Only pSeries need supoort it. And the fact is powerNV are built into same    ^^ support > kernel image with pSeries. So we need return false if we are runnig as > powerNV. The another fact is that lppaca->yiled_count keeps zero on   ^^ yield > powerNV. So we can just skip the machine type. >  > Suggested-by: Boqun Feng > Suggested-by: Peter Zijlstra (Intel) > Signed-off-by: Pan Xinhui > --- >  arch/powerpc/include/asm/spinlock.h | 18 ++++++++++++++++++ >  1 file changed, 18 insertions(+) >  > diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h > index 523673d..3ac9fcb 100644 > --- a/arch/powerpc/include/asm/spinlock.h > +++ b/arch/powerpc/include/asm/spinlock.h > @@ -52,6 +52,24 @@ >  #define SYNC_IO >  #endif >   > +/* > + * This support kernel to check if one cpu is preempted or not. > + * Then we can fix some lock holder preemption issue. > + */ > +#ifdef CONFIG_PPC_PSERIES > +#define vcpu_is_preempted vcpu_is_preempted > +static inline bool vcpu_is_preempted(int cpu) > +{ > + /* > +  * pSeries and powerNV can be built into same kernel image. In > +  * principle we need return false directly if we are running as > +  * powerNV. However the yield_count is always zero on powerNV, So > +  * skip such machine type check Or you could use the ppc_md interface callbacks if required, but your solution works as well > +  */ > + return !!(be32_to_cpu(lppaca_of(cpu).yield_count) & 1); > +} > +#endif > + >  static __always_inline int arch_spin_value_unlocked(arch_spinlock_t lock) >  { >   return lock.slock == 0; Balbir Singh. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Balbir Singh Subject: Re: [PATCH v2 2/4] powerpc/spinlock: support vcpu preempted check Date: Wed, 06 Jul 2016 20:54:14 +1000 Message-ID: <1467802454.9143.1.camel@gmail.com> References: <1467124991-13164-1-git-send-email-xinhui.pan@linux.vnet.ibm.com> <1467124991-13164-3-git-send-email-xinhui.pan@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467124991-13164-3-git-send-email-xinhui.pan@linux.vnet.ibm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Pan Xinhui , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, virtualization@lists.linux-foundation.org, linux-s390@vger.kernel.org Cc: dave@stgolabs.net, peterz@infradead.org, mpe@ellerman.id.au, boqun.feng@gmail.com, will.deacon@arm.com, waiman.long@hpe.com, mingo@redhat.com, paulus@samba.org, benh@kernel.crashing.org, schwidefsky@de.ibm.com, paulmck@linux.vnet.ibm.com List-Id: virtualization@lists.linuxfoundation.org T24gVHVlLCAyMDE2LTA2LTI4IGF0IDEwOjQzIC0wNDAwLCBQYW4gWGluaHVpIHdyb3RlOgo+IFRo aXMgaXMgdG8gZml4IHNvbWUgbG9jayBob2xkZXIgcHJlZW1wdGlvbiBpc3N1ZXMuIFNvbWUgb3Ro ZXIgbG9ja3MKPiBpbXBsZW1lbnRhdGlvbiBkbyBhIHNwaW4gbG9vcCBiZWZvcmUgYWNxdWlyaW5n IHRoZSBsb2NrIGl0c2VsZi4gQ3VycmVudGx5Cj4ga2VybmVsIGhhcyBhbiBpbnRlcmZhY2Ugb2Yg Ym9vbCB2Y3B1X2lzX3ByZWVtcHRlZChpbnQgY3B1KS4gSXQgdGFrZSB0aGUgY3B1CgkJCQkJCQkJ Xl4gdGFrZXMKPiBhcyBwYXJhbWV0ZXIgYW5kIHJldHVybiB0cnVlIGlmIHRoZSBjcHUgaXMgcHJl ZW1wdGVkLiBUaGVuIGtlcm5lbCBjYW4gYnJlYWsKPiB0aGUgc3BpbiBsb29wcyB1cG9uIG9uIHRo ZSByZXR2YWwgb2YgdmNwdV9pc19wcmVlbXB0ZWQuCj7CoAo+IEFzIGtlcm5lbCBoYXMgdXNlZCB0 aGlzIGludGVyZmFjZSwgU28gbGV0cyBzdXBwb3J0IGl0Lgo+wqAKPiBPbmx5IHBTZXJpZXMgbmVl ZCBzdXBvb3J0IGl0LiBBbmQgdGhlIGZhY3QgaXMgcG93ZXJOViBhcmUgYnVpbHQgaW50byBzYW1l CgkJwqDCoMKgXl4gc3VwcG9ydAo+IGtlcm5lbCBpbWFnZSB3aXRoIHBTZXJpZXMuIFNvIHdlIG5l ZWQgcmV0dXJuIGZhbHNlIGlmIHdlIGFyZSBydW5uaWcgYXMKPiBwb3dlck5WLiBUaGUgYW5vdGhl ciBmYWN0IGlzIHRoYXQgbHBwYWNhLT55aWxlZF9jb3VudCBrZWVwcyB6ZXJvIG9uCgkJCQkJwqDC oF5eIHlpZWxkCj4gcG93ZXJOVi4gU28gd2UgY2FuIGp1c3Qgc2tpcCB0aGUgbWFjaGluZSB0eXBl Lgo+wqAKPiBTdWdnZXN0ZWQtYnk6IEJvcXVuIEZlbmcgPGJvcXVuLmZlbmdAZ21haWwuY29tPgo+ IFN1Z2dlc3RlZC1ieTogUGV0ZXIgWmlqbHN0cmEgKEludGVsKSA8cGV0ZXJ6QGluZnJhZGVhZC5v cmc+Cj4gU2lnbmVkLW9mZi1ieTogUGFuIFhpbmh1aSA8eGluaHVpLnBhbkBsaW51eC52bmV0Lmli bS5jb20+Cj4gLS0tCj4gwqBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BpbmxvY2suaCB8IDE4 ICsrKysrKysrKysrKysrKysrKwo+IMKgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykK PsKgCj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGlubG9jay5oIGIv YXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgKPiBpbmRleCA1MjM2NzNkLi4zYWM5 ZmNiIDEwMDY0NAo+IC0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGlubG9jay5oCj4g KysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgKPiBAQCAtNTIsNiArNTIs MjQgQEAKPiDCoCNkZWZpbmUgU1lOQ19JTwo+IMKgI2VuZGlmCj4gwqAKPiArLyoKPiArICogVGhp cyBzdXBwb3J0IGtlcm5lbCB0byBjaGVjayBpZiBvbmUgY3B1IGlzIHByZWVtcHRlZCBvciBub3Qu Cj4gKyAqIFRoZW4gd2UgY2FuIGZpeCBzb21lIGxvY2sgaG9sZGVyIHByZWVtcHRpb24gaXNzdWUu Cj4gKyAqLwo+ICsjaWZkZWYgQ09ORklHX1BQQ19QU0VSSUVTCj4gKyNkZWZpbmUgdmNwdV9pc19w cmVlbXB0ZWQgdmNwdV9pc19wcmVlbXB0ZWQKPiArc3RhdGljIGlubGluZSBib29sIHZjcHVfaXNf cHJlZW1wdGVkKGludCBjcHUpCj4gK3sKPiArCS8qCj4gKwnCoCogcFNlcmllcyBhbmQgcG93ZXJO ViBjYW4gYmUgYnVpbHQgaW50byBzYW1lIGtlcm5lbCBpbWFnZS4gSW4KPiArCcKgKiBwcmluY2lw bGUgd2UgbmVlZCByZXR1cm4gZmFsc2UgZGlyZWN0bHkgaWYgd2UgYXJlIHJ1bm5pbmcgYXMKPiAr CcKgKiBwb3dlck5WLiBIb3dldmVyIHRoZSB5aWVsZF9jb3VudCBpcyBhbHdheXMgemVybyBvbiBw b3dlck5WLCBTbwo+ICsJwqAqIHNraXAgc3VjaCBtYWNoaW5lIHR5cGUgY2hlY2sKCk9yIHlvdSBj b3VsZCB1c2UgdGhlIHBwY19tZCBpbnRlcmZhY2UgY2FsbGJhY2tzIGlmIHJlcXVpcmVkLCBidXQg eW91cgpzb2x1dGlvbiB3b3JrcyBhcyB3ZWxsCgo+ICsJwqAqLwo+ICsJcmV0dXJuICEhKGJlMzJf dG9fY3B1KGxwcGFjYV9vZihjcHUpLnlpZWxkX2NvdW50KSAmIDEpOwo+ICt9Cj4gKyNlbmRpZgo+ ICsKPiDCoHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGFyY2hfc3Bpbl92YWx1ZV91bmxvY2tl ZChhcmNoX3NwaW5sb2NrX3QgbG9jaykKPiDCoHsKPiDCoAlyZXR1cm4gbG9jay5zbG9jayA9PSAw OwoKCkJhbGJpciBTaW5naC4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3Rz LmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9t YWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u