Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1240237 > unrolled thread
| Started by | Sarbojit Ganguly <ganguly.s@samsung.com> |
|---|---|
| First post | 2015-10-06 10:10 +0200 |
| Last post | 2015-10-06 17:00 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
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
| From | Sarbojit Ganguly <ganguly.s@samsung.com> |
|---|---|
| Date | 2015-10-06 10:10 +0200 |
| Subject | Re: 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]
| From | Will Deacon <will.deacon@arm.com> |
|---|---|
| Date | 2015-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