Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1240237 > unrolled thread

Re: Re: Re: Re: [PATCH v3] arm: Adding support for atomic half word exchange

Started bySarbojit Ganguly <ganguly.s@samsung.com>
First post2015-10-06 10:10 +0200
Last post2015-10-06 17:00 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  Re: Re: Re: Re: [PATCH v3] arm: Adding support for atomic half word  exchange Sarbojit Ganguly <ganguly.s@samsung.com> - 2015-10-06 10:10 +0200
    Re: Re: Re: Re: [PATCH v3] arm: Adding support for atomic half word  exchange Will Deacon <will.deacon@arm.com> - 2015-10-06 17:00 +0200

#1240237 — Re: Re: Re: Re: [PATCH v3] arm: Adding support for atomic half word exchange

FromSarbojit Ganguly <ganguly.s@samsung.com>
Date2015-10-06 10:10 +0200
SubjectRe: Re: Re: Re: [PATCH v3] arm: Adding support for atomic half word exchange
Message-ID<qgvtV-iV-29@gated-at.bofh.it>
DQpIZWxsbyBXaWxsDQpIZXJlIGlzIHRoZSB2ZXJzaW9uIDMgb2YgdGhlIHBhdGNoIGNvcnJlY3Rp
bmcgZWFybGllciBpc3N1ZXMuDQoNCnYyIC0+IHYzIDogUmVtb3ZlZCB0aGUgY29tbWVudCByZWxh
dGVkIHRvIFFzcGlubG9jaywgY2hhbmdlZCAhZGVmaW5lZCB0bw0KI2lmbmRlZi4NCnYxIC0+IHYy
IDogRXh0ZW5kZWQgdGhlIGd1YXJkIGNvZGUgdG8gY292ZXIgdGhlIGJ5dGUgZXhjaGFuZ2UgY2Fz
ZSBhcyANCndlbGwgZm9sbG93aW5nIG9waW5pb24gb2YgV2lsbCBEZWFjb24uDQpDaGVja3BhdGNo
IGhhcyBiZWVuIHJ1biBhbmQgaXNzdWVzIHdlcmUgdGFrZW4gY2FyZSBvZi4NCg0KU2luY2Ugc3Vw
cG9ydCBmb3IgaGFsZi13b3JkIGF0b21pYyBleGNoYW5nZSB3YXMgbm90IHRoZXJlIGFuZCBRc3Bp
bmxvY2sNCm9uIEFSTSByZXF1aXJlcyBpdCwgbW9kaWZpZWQgX194Y2hnKCkgdG8gYWRkIHN1cHBv
cnQgZm9yIHRoYXQgYXMgd2VsbC4NCkFSTXY2IGFuZCBsb3dlciBkb2VzIG5vdCBzdXBwb3J0IGxk
cmV4e2IsaH0gc28sIGFkZGVkIGEgZ3VhcmQgY29kZQ0KdG8gcHJldmVudCBidWlsZCBicmVha3Mu
DQoNClNpZ25lZC1vZmYtYnk6IFNhcmJvaml0IEdhbmd1bHkgPGdhbmd1bHkuc0BzYW1zdW5nLmNv
bT4NCi0tLQ0KIGFyY2gvYXJtL2luY2x1ZGUvYXNtL2NtcHhjaGcuaCB8IDEyICsrKysrKysrKysr
Kw0KIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9hcmNo
L2FybS9pbmNsdWRlL2FzbS9jbXB4Y2hnLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9jbXB4Y2hn
LmgNCmluZGV4IDkxNmEyNzQuLmM2NDM2YzEgMTAwNjQ0DQotLS0gYS9hcmNoL2FybS9pbmNsdWRl
L2FzbS9jbXB4Y2hnLmgNCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NtcHhjaGcuaA0KQEAg
LTM5LDYgKzM5LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25l
ZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKnB0ciwgaW50IHNpemUNCiANCiAJc3dpdGNoIChzaXpl
KSB7DQogI2lmIF9fTElOVVhfQVJNX0FSQ0hfXyA+PSA2DQorI2lmbmRlZiBDT05GSUdfQ1BVX1Y2
IC8qIE1JTiBBUkNIID49IFY2SyAqLw0KIAljYXNlIDE6DQogCQlhc20gdm9sYXRpbGUoIkAJX194
Y2hnMVxuIg0KIAkJIjE6CWxkcmV4YgklMCwgWyUzXVxuIg0KQEAgLTQ5LDYgKzUwLDE3IEBAIHN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGls
ZSB2b2lkICpwdHIsIGludCBzaXplDQogCQkJOiAiciIgKHgpLCAiciIgKHB0cikNCiAJCQk6ICJt
ZW1vcnkiLCAiY2MiKTsNCiAJCWJyZWFrOw0KKwljYXNlIDI6DQorCQlhc20gdm9sYXRpbGUoIkAJ
X194Y2hnMlxuIg0KKwkJIjE6CWxkcmV4aAklMCwgWyUzXVxuIg0KKwkJIglzdHJleGgJJTEsICUy
LCBbJTNdXG4iDQorCQkiCXRlcQklMSwgIzBcbiINCisJCSIJYm5lCTFiIg0KKwkJCTogIj0mciIg
KHJldCksICI9JnIiICh0bXApDQorCQkJOiAiciIgKHgpLCAiciIgKHB0cikNCisJCQk6ICJtZW1v
cnkiLCAiY2MiKTsNCisJCWJyZWFrOw0KKyNlbmRpZg0KIAljYXNlIDQ6DQogCQlhc20gdm9sYXRp
bGUoIkAJX194Y2hnNFxuIg0KIAkJIjE6CWxkcmV4CSUwLCBbJTNdXG4iDQotLSANCjEuOS4xDQoN
Cg0KLS0tLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tLS0NClNlbmRlciA6IFNhcmJvaml0IEdh
bmd1bHk8Z2FuZ3VseS5zQHNhbXN1bmcuY29tPiBUZWNobmljYWwgTGVhZC9TUkktQmFuZ2Fsb3Jl
LUFQIFN5c3RlbXMgMS9TYW1zdW5nIEVsZWN0cm9uaWNzDQpEYXRlIDogT2N0IDA2LCAyMDE1IDA4
OjM4IChHTVQrMDU6MzApDQpUaXRsZSA6IFJlOiBSZTogUmU6IFtQQVRDSCB2Ml0gYXJtOiBBZGRp
bmcgc3VwcG9ydCBmb3IgYXRvbWljIGhhbGYgd29yZCBleGNoYW5nZQ0KDQpIZWxsbyBXaWxsLA0K
DQpUaGFuayB5b3Ugc28gbXVjaCBmb3IgdGhlIHJldmlldy4gSSBoYXZlIHRob3VnaHQgaXQgb3Zl
ciBhbmQgaXQgbWFrZXMNCnNlbnNlIG5vdCB0byBoYXZlIHRoYXQgY29tbWVudCBpbiBjbXB4Y2hn
LmgsIEkgd2lsbCBhbHNvIGNoYW5nZSAhZGVmaW5lZCB0bw0KI2lmbmRlZiBhbmQgcXVpY2tseSBw
b3N0IGEgdjMuDQoNClJlZ2FyZHMsDQpTYXJib2ppdA0KDQotLS0tLS0tIE9yaWdpbmFsIE1lc3Nh
Z2UgLS0tLS0tLQ0KU2VuZGVyIDogV2lsbCBEZWFjb24NCkRhdGUgOiBPY3QgMDUsIDIwMTUgMjE6
MzAgKEdNVCswNTozMCkNClRpdGxlIDogUmU6IFJlOiBbUEFUQ0ggdjJdIGFybTogQWRkaW5nIHN1
cHBvcnQgZm9yIGF0b21pYyBoYWxmIHdvcmQgZXhjaGFuZ2UNCg0KT24gTW9uLCBPY3QgMDUsIDIw
MTUgYXQgMDE6MTA6NTNQTSArMDAwMCwgU2FyYm9qaXQgR2FuZ3VseSB3cm90ZToNCj4gTXkgc2lu
Y2VyZSBhcG9sb2dpZXMgZm9yIHRoZSBmb3JtYXQgaXNzdWUuIFRoaXMgd2FzIGR1ZSB0byB0aGUg
ZS1tYWlsIGVkaXRvcg0KPiB3aGljaCByZWZvcm1hdHMgdGhlIHRleHQuDQo+IEkgYW0gcmVwb3N0
aW5nIHRoZSBwYXRjaCwgcGxlYXNlIGxldCBtZSBrbm93IGlmIGl0IGlzIG9rIHRoaXMgdGltZS4N
Cj4gDQo+IA0KPiB2MS0tPnYyIDogRXh0ZW5kZWQgdGhlIGd1YXJkIGNvZGUgdG8gY292ZXIgdGhl
IGJ5dGUgZXhjaGFuZ2UgY2FzZSBhcyANCj4gd2VsbCBmb2xsb3dpbmcgb3BpbmlvbiBvZiBXaWxs
IERlYWNvbi4NCj4gQ2hlY2twYXRjaCBoYXMgYmVlbiBydW4gYW5kIGlzc3VlcyB3ZXJlIHRha2Vu
IGNhcmUgb2YuDQo+IA0KPiBTaW5jZSBzdXBwb3J0IGZvciBoYWxmLXdvcmQgYXRvbWljIGV4Y2hh
bmdlIHdhcyBub3QgdGhlcmUgYW5kIFFzcGlubG9jaw0KPiBvbiBBUk0gcmVxdWlyZXMgaXQsIG1v
ZGlmaWVkIF9feGNoZygpIHRvIGFkZCBzdXBwb3J0IGZvciB0aGF0IGFzIHdlbGwuDQo+IEFSTXY2
IGFuZCBsb3dlciBkb2VzIG5vdCBzdXBwb3J0IGxkcmV4e2IsaH0gc28sIGFkZGVkIGEgZ3VhcmQg
Y29kZQ0KPiB0byBwcmV2ZW50IGJ1aWxkIGJyZWFrcy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFNh
cmJvaml0IEdhbmd1bHkgDQo+IC0tLQ0KPiAgYXJjaC9hcm0vaW5jbHVkZS9hc20vY21weGNoZy5o
IHwgMTcgKysrKysrKysrKysrKysrKysNCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25z
KCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vY21weGNoZy5oIGIv
YXJjaC9hcm0vaW5jbHVkZS9hc20vY21weGNoZy5oDQo+IGluZGV4IDkxNmEyNzQuLmE1M2NiZWIg
MTAwNjQ0DQo+IC0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NtcHhjaGcuaA0KPiArKysgYi9h
cmNoL2FybS9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgNCj4gQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZv
aWQgKnB0ciwgaW50IHNpemUNCj4gIA0KPiAgIHN3aXRjaCAoc2l6ZSkgew0KPiAgI2lmIF9fTElO
VVhfQVJNX0FSQ0hfXyA+PSA2DQo+ICsjaWYgIWRlZmluZWQoQ09ORklHX0NQVV9WNikNCg0KI2lm
bmRlZiA/ICh0byBtYXRjaCB0aGUgX19jbXB4Y2hnIGNvZGUpLg0KDQo+ICAgY2FzZSAxOg0KPiAg
IGFzbSB2b2xhdGlsZSgiQCBfX3hjaGcxXG4iDQo+ICAgIjE6IGxkcmV4YiAlMCwgWyUzXVxuIg0K
PiBAQCAtNDksNiArNTAsMjIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1
bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKnB0ciwgaW50IHNpemUNCj4gICA6ICJyIiAo
eCksICJyIiAocHRyKQ0KPiAgIDogIm1lbW9yeSIsICJjYyIpOw0KPiAgIGJyZWFrOw0KPiArDQo+
ICsgLyoNCj4gKyAqIEhhbGYtd29yZCBhdG9taWMgZXhjaGFuZ2UsIHJlcXVpcmVkDQo+ICsgKiBm
b3IgUXNwaW5sb2NrIHN1cHBvcnQgb24gQVJNLg0KPiArICovDQoNCkkgdGhpbmsgSSBzYWlkIGl0
IGJlZm9yZSwgYnV0IEkgZG9uJ3QgdGhpbmsgdGhpcyBjb21tZW50IGlzIG9mIGFueSByZWFsDQp2
YWx1ZS4NCg0KT3RoZXIgdGhhbiB0aG9zZSwgdGhpcyBsb29rcyBvayB0byBtZS4NCg0KV2lsbA==


--
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/

[toc] | [next] | [standalone]


#1240526

FromWill Deacon <will.deacon@arm.com>
Date2015-10-06 17:00 +0200
Message-ID<qgBSH-PD-21@gated-at.bofh.it>
In reply to#1240237
On Tue, Oct 06, 2015 at 08:03:02AM +0000, Sarbojit Ganguly wrote:
> Here is the version 3 of the patch correcting earlier issues.

This looks good to me now:

  Acked-by: Will Deacon <will.deacon@arm.com>

> v2 -> v3 : Removed the comment related to Qspinlock, changed !defined to
> #ifndef.
> v1 -> v2 : Extended the guard code to cover the byte exchange case as 
> well following opinion of Will Deacon.
> Checkpatch has been run and issues were taken care of.

The part of your text up until here doesn't belong in the commit message.
You'll also need to send this to Russell's patch system.

Will

> Since support for half-word atomic exchange was not there and Qspinlock
> on ARM requires it, modified __xchg() to add support for that as well.
> ARMv6 and lower does not support ldrex{b,h} so, added a guard code
> to prevent build breaks.
> 
> Signed-off-by: Sarbojit Ganguly <ganguly.s@samsung.com>
> ---
>  arch/arm/include/asm/cmpxchg.h | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
> index 916a274..c6436c1 100644
> --- a/arch/arm/include/asm/cmpxchg.h
> +++ b/arch/arm/include/asm/cmpxchg.h
> @@ -39,6 +39,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
>  
>  	switch (size) {
>  #if __LINUX_ARM_ARCH__ >= 6
> +#ifndef CONFIG_CPU_V6 /* MIN ARCH >= V6K */
>  	case 1:
>  		asm volatile("@	__xchg1\n"
>  		"1:	ldrexb	%0, [%3]\n"
> @@ -49,6 +50,17 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size
>  			: "r" (x), "r" (ptr)
>  			: "memory", "cc");
>  		break;
> +	case 2:
> +		asm volatile("@	__xchg2\n"
> +		"1:	ldrexh	%0, [%3]\n"
> +		"	strexh	%1, %2, [%3]\n"
> +		"	teq	%1, #0\n"
> +		"	bne	1b"
> +			: "=&r" (ret), "=&r" (tmp)
> +			: "r" (x), "r" (ptr)
> +			: "memory", "cc");
> +		break;
> +#endif
>  	case 4:
>  		asm volatile("@	__xchg4\n"
>  		"1:	ldrex	%0, [%3]\n"
> -- 
> 1.9.1
--
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/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web