From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [PATCH v4 20/28] arm64/sve: Add prctl controls for userspace vector length management Date: Fri, 27 Oct 2017 18:52:50 +0100 Message-ID: <87r2toiikt.fsf@linaro.org> References: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> <1509101470-7881-21-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1509101470-7881-21-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: Dave Martin Cc: linux-arch@vger.kernel.org, Okamoto Takayuki , libc-alpha@sourceware.org, Ard Biesheuvel , Szabolcs Nagy , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org List-Id: linux-arch.vger.kernel.org CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IFRoaXMgcGF0Y2gg YWRkcyB0d28gYXJtNjQtc3BlY2lmaWMgcHJjdGxzLCB0byBwZXJtaXQgdXNlcnNwYWNlIHRvCj4g Y29udHJvbCBpdHMgdmVjdG9yIGxlbmd0aDoKPgo+ICAqIFBSX1NWRV9TRVRfVkw6IHNldCB0aGUg dGhyZWFkJ3MgU1ZFIHZlY3RvciBsZW5ndGggYW5kIHZlY3Rvcgo+ICAgIGxlbmd0aCBpbmhlcml0 YW5jZSBtb2RlLgo+Cj4gICogUFJfU1ZFX0dFVF9WTDogZ2V0IHRoZSBzYW1lIGluZm9ybWF0aW9u Lgo+Cj4gQWx0aG91Z2ggdGhlc2UgcHJjdGxzIHJlc2VtYmxlIGluc3RydWN0aW9uIHNldCBmZWF0 dXJlcyBpbiB0aGUgU1ZFCj4gYXJjaGl0ZWN0dXJlLCB0aGV5IHByb3ZpZGUgYWRkaXRpb25hbCBj b250cm9sOiB0aGUgdmVjdG9yIGxlbmd0aAo+IGluaGVyaXRhbmNlIG1vZGUgaXMgTGludXgtc3Bl Y2lmaWMgYW5kIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUKPiBhcmNoaXRlY3R1cmUsIGFuZCB0aGUg YXJjaGl0ZWN0dXJlIGRvZXMgbm90IHBlcm1pdCBFTDAgdG8gc2V0IGl0cwo+IG93biB2ZWN0b3Ig bGVuZ3RoIGRpcmVjdGx5LiAgQm90aCBjYW4gYmUgdXNlZCBpbiBwb3J0YWJsZSB0b29scwo+IHdp dGhvdXQgcmVxdWlyaW5nIHRoZSB1c2Ugb2YgU1ZFIGluc3RydWN0aW9ucy4KPgo+IFNpZ25lZC1v ZmYtYnk6IERhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPgo+IFJldmlld2VkLWJ5OiBD YXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPgo+IENjOiBBbGV4IEJlbm7D qWUgPGFsZXguYmVubmVlQGxpbmFyby5vcmc+CgpGWUkgdGhlcmUgaXMgYSBtaW5vciBjb25mbGlj dCBhcHBseWluZyB0aGlzIG9uIGN1cnJlbnQgbWFzdGVyLgoKPgo+IC0tLQo+Cj4gKipEcm9wcGVk IGF0IHYzKiogUmV2aWV3ZWQtYnk6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9y Zz4KPiBkdWUgdG8gbm9uLXRyaXZpYWwgY2hhbmdlcy9maXhlcyBhZnRlciB2Mi4KPgo+IENoYW5n ZXMgc2luY2UgdjMKPiAtLS0tLS0tLS0tLS0tLS0tCj4KPiBSZXF1ZXN0ZWQgYnkgQ2F0YWxpbiBN YXJpbmFzOgo+Cj4gICogUmVwbGFjZSBzdGF0aWMgX19tYXliZV91bnVzZWQgZnVuY3Rpb25zIHdp dGggc3RhdGljIGlubGluZXMuCj4KPiAgICAoUmV0YWluaW5nIENhdGFsaW4ncyBSZXZpZXdlZC1i eSB3aXRoIGhpcyBhcHByb3ZhbC4pCj4gLS0tCj4gIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnBz aW1kLmggICAgfCAxNCArKysrKysrKysrKwo+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2Nl c3Nvci5oIHwgIDQgKysrCj4gIGFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jICAgICAgICAgfCA1 MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL3VhcGkv bGludXgvcHJjdGwuaCAgICAgICAgIHwgIDQgKysrCj4gIGtlcm5lbC9zeXMuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAxMiArKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRp b25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mcHNpbWQuaCBi L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnBzaW1kLmgKPiBpbmRleCBkNzU0ZTVhLi5iODY4NDEy IDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnBzaW1kLmgKPiArKysgYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL2Zwc2ltZC5oCj4gQEAgLTE3LDYgKzE3LDcgQEAKPiAgI2Rl ZmluZSBfX0FTTV9GUF9ICj4KPiAgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KPiArI2luY2x1ZGUg PGFzbS9lcnJuby5oPgo+Cj4gICNpZm5kZWYgX19BU1NFTUJMWV9fCj4KPiBAQCAtOTgsNiArOTks OSBAQCBleHRlcm4gdm9pZCBzdmVfc3luY19mcm9tX2Zwc2ltZF96ZXJvcGFkKHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzayk7Cj4gIGV4dGVybiBpbnQgc3ZlX3NldF92ZWN0b3JfbGVuZ3RoKHN0cnVj dCB0YXNrX3N0cnVjdCAqdGFzaywKPiAgCQkJCSB1bnNpZ25lZCBsb25nIHZsLCB1bnNpZ25lZCBs b25nIGZsYWdzKTsKPgo+ICtleHRlcm4gaW50IHN2ZV9zZXRfY3VycmVudF92bCh1bnNpZ25lZCBs b25nIGFyZyk7Cj4gK2V4dGVybiBpbnQgc3ZlX2dldF9jdXJyZW50X3ZsKHZvaWQpOwo+ICsKPiAg LyoKPiAgICogUHJvYmluZyBhbmQgc2V0dXAgZnVuY3Rpb25zLgo+ICAgKiBDYWxscyB0byB0aGVz ZSBmdW5jdGlvbnMgbXVzdCBiZSBzZXJpYWxpc2VkIHdpdGggb25lIGFub3RoZXIuCj4gQEAgLTEx NCw2ICsxMTgsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGZwc2ltZF9yZWxlYXNlX3Rhc2soc3Ry dWN0IHRhc2tfc3RydWN0ICp0YXNrKSB7IH0KPiAgc3RhdGljIGlubGluZSB2b2lkIHN2ZV9zeW5j X3RvX2Zwc2ltZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spIHsgfQo+ICBzdGF0aWMgaW5saW5l IHZvaWQgc3ZlX3N5bmNfZnJvbV9mcHNpbWRfemVyb3BhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2spIHsgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgaW50IHN2ZV9zZXRfY3VycmVudF92bCh1bnNpZ25l ZCBsb25nIGFyZykKPiArewo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4gK3N0YXRpYyBp bmxpbmUgaW50IHN2ZV9nZXRfY3VycmVudF92bCh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gLUVJTlZB TDsKPiArfQo+ICsKPiAgc3RhdGljIGlubGluZSB2b2lkIHN2ZV9pbml0X3ZxX21hcCh2b2lkKSB7 IH0KPiAgc3RhdGljIGlubGluZSB2b2lkIHN2ZV91cGRhdGVfdnFfbWFwKHZvaWQpIHsgfQo+ICBz dGF0aWMgaW5saW5lIGludCBzdmVfdmVyaWZ5X3ZxX21hcCh2b2lkKSB7IHJldHVybiAwOyB9Cj4g ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCj4gaW5kZXggYzZmZGRiMC4uMDIzY2FjYiAxMDA2 NDQKPiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCj4gKysrIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAo+IEBAIC0yMTcsNSArMjE3LDkgQEAgc3Rh dGljIGlubGluZSB2b2lkIHNwaW5fbG9ja19wcmVmZXRjaChjb25zdCB2b2lkICpwdHIpCj4gIGlu dCBjcHVfZW5hYmxlX3Bhbih2b2lkICpfX3VudXNlZCk7Cj4gIGludCBjcHVfZW5hYmxlX2NhY2hl X21haW50X3RyYXAodm9pZCAqX191bnVzZWQpOwo+Cj4gKy8qIFVzZXJzcGFjZSBpbnRlcmZhY2Ug Zm9yIFBSX1NWRV97U0VULEdFVH1fVkwgcHJjdGwoKXM6ICovCj4gKyNkZWZpbmUgU1ZFX1NFVF9W TChhcmcpCXN2ZV9zZXRfY3VycmVudF92bChhcmcpCj4gKyNkZWZpbmUgU1ZFX0dFVF9WTCgpCXN2 ZV9nZXRfY3VycmVudF92bCgpCj4gKwo+ICAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCj4gICNl bmRpZiAvKiBfX0FTTV9QUk9DRVNTT1JfSCAqLwo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tl cm5lbC9mcHNpbWQuYyBiL2FyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jCj4gaW5kZXggYTQ3Y2U0 NC4uNzQ2NTYyMiAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYwo+ICsr KyBiL2FyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jCj4gQEAgLTI4LDYgKzI4LDcgQEAKPiAgI2lu Y2x1ZGUgPGxpbnV4L2lycWZsYWdzLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gICNp bmNsdWRlIDxsaW51eC9wZXJjcHUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3ByY3RsLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9wcmVlbXB0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wcmN0bC5oPgo+ICAj aW5jbHVkZSA8bGludXgvcHRyYWNlLmg+Cj4gQEAgLTU1Nyw2ICs1NTgsNTUgQEAgaW50IHN2ZV9z ZXRfdmVjdG9yX2xlbmd0aChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCj4gIH0KPgo+ICAvKgo+ ICsgKiBFbmNvZGUgdGhlIGN1cnJlbnQgdmVjdG9yIGxlbmd0aCBhbmQgZmxhZ3MgZm9yIHJldHVy bi4KPiArICogVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGZvciBwcmN0bCgpOiBwdHJhY2UgaGFzIHNl cGFyYXRlIGZpZWxkcwo+ICsgKgo+ICsgKiBmbGFncyBhcmUgYXMgZm9yIHN2ZV9zZXRfdmVjdG9y X2xlbmd0aCgpLgo+ICsgKi8KPiArc3RhdGljIGludCBzdmVfcHJjdGxfc3RhdHVzKHVuc2lnbmVk IGxvbmcgZmxhZ3MpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKGZsYWdzICYgUFJfU1ZF X1NFVF9WTF9PTkVYRUMpCj4gKwkJcmV0ID0gY3VycmVudC0+dGhyZWFkLnN2ZV92bF9vbmV4ZWM7 Cj4gKwllbHNlCj4gKwkJcmV0ID0gY3VycmVudC0+dGhyZWFkLnN2ZV92bDsKPiArCj4gKwlpZiAo dGVzdF90aHJlYWRfZmxhZyhUSUZfU1ZFX1ZMX0lOSEVSSVQpKQo+ICsJCXJldCB8PSBQUl9TVkVf VkxfSU5IRVJJVDsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKiBQUl9TVkVfU0VU X1ZMICovCj4gK2ludCBzdmVfc2V0X2N1cnJlbnRfdmwodW5zaWduZWQgbG9uZyBhcmcpCj4gK3sK PiArCXVuc2lnbmVkIGxvbmcgdmwsIGZsYWdzOwo+ICsJaW50IHJldDsKPiArCj4gKwl2bCA9IGFy ZyAmIFBSX1NWRV9WTF9MRU5fTUFTSzsKPiArCWZsYWdzID0gYXJnICYgfnZsOwo+ICsKPiArCWlm ICghc3lzdGVtX3N1cHBvcnRzX3N2ZSgpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJl dCA9IHN2ZV9zZXRfdmVjdG9yX2xlbmd0aChjdXJyZW50LCB2bCwgZmxhZ3MpOwo+ICsJaWYgKHJl dCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldHVybiBzdmVfcHJjdGxfc3RhdHVzKGZsYWdz KTsKPiArfQo+ICsKPiArLyogUFJfU1ZFX0dFVF9WTCAqLwo+ICtpbnQgc3ZlX2dldF9jdXJyZW50 X3ZsKHZvaWQpCj4gK3sKPiArCWlmICghc3lzdGVtX3N1cHBvcnRzX3N2ZSgpKQo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsKPiArCXJldHVybiBzdmVfcHJjdGxfc3RhdHVzKDApOwo+ICt9Cj4gKwo+ ICsvKgo+ICAgKiBCaXRtYXAgZm9yIHRlbXBvcmFyeSBzdG9yYWdlIG9mIHRoZSBwZXItQ1BVIHNl dCBvZiBzdXBwb3J0ZWQgdmVjdG9yIGxlbmd0aHMKPiAgICogZHVyaW5nIHNlY29uZGFyeSBib290 Lgo+ICAgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmggYi9pbmNs dWRlL3VhcGkvbGludXgvcHJjdGwuaAo+IGluZGV4IDFiNjQ5MDEuLjFlZjkzNzAgMTAwNjQ0Cj4g LS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmgKPiArKysgYi9pbmNsdWRlL3VhcGkvbGlu dXgvcHJjdGwuaAo+IEBAIC0xOTgsNyArMTk4LDExIEBAIHN0cnVjdCBwcmN0bF9tbV9tYXAgewo+ ICAjIGRlZmluZSBQUl9DQVBfQU1CSUVOVF9DTEVBUl9BTEwJNAo+Cj4gIC8qIGFybTY0IFNjYWxh YmxlIFZlY3RvciBFeHRlbnNpb24gY29udHJvbHMgKi8KPiArLyogRmxhZyB2YWx1ZXMgbXVzdCBi ZSBrZXB0IGluIHN5bmMgd2l0aCBwdHJhY2UgTlRfQVJNX1NWRSBpbnRlcmZhY2UgKi8KPiArI2Rl ZmluZSBQUl9TVkVfU0VUX1ZMCQkJNDgJLyogc2V0IHRhc2sgdmVjdG9yIGxlbmd0aCAqLwo+ICAj IGRlZmluZSBQUl9TVkVfU0VUX1ZMX09ORVhFQwkJKDEgPDwgMTgpIC8qIGRlZmVyIGVmZmVjdCB1 bnRpbCBleGVjICovCj4gKyNkZWZpbmUgUFJfU1ZFX0dFVF9WTAkJCTQ5CS8qIGdldCB0YXNrIHZl Y3RvciBsZW5ndGggKi8KPiArLyogQml0cyBjb21tb24gdG8gUFJfU1ZFX1NFVF9WTCBhbmQgUFJf U1ZFX0dFVF9WTCAqLwo+ICAjIGRlZmluZSBQUl9TVkVfVkxfTEVOX01BU0sJCTB4ZmZmZgo+ICAj IGRlZmluZSBQUl9TVkVfVkxfSU5IRVJJVAkJKDEgPDwgMTcpIC8qIGluaGVyaXQgYWNyb3NzIGV4 ZWMgKi8KPgo+IGRpZmYgLS1naXQgYS9rZXJuZWwvc3lzLmMgYi9rZXJuZWwvc3lzLmMKPiBpbmRl eCA5YWViYzI5Li5jNTQxOTE2IDEwMDY0NAo+IC0tLSBhL2tlcm5lbC9zeXMuYwo+ICsrKyBiL2tl cm5lbC9zeXMuYwo+IEBAIC0xMTAsNiArMTEwLDEyIEBACj4gICNpZm5kZWYgU0VUX0ZQX01PREUK PiAgIyBkZWZpbmUgU0VUX0ZQX01PREUoYSxiKQkoLUVJTlZBTCkKPiAgI2VuZGlmCj4gKyNpZm5k ZWYgU1ZFX1NFVF9WTAo+ICsjIGRlZmluZSBTVkVfU0VUX1ZMKGEpCQkoLUVJTlZBTCkKPiArI2Vu ZGlmCj4gKyNpZm5kZWYgU1ZFX0dFVF9WTAo+ICsjIGRlZmluZSBTVkVfR0VUX1ZMKCkJCSgtRUlO VkFMKQo+ICsjZW5kaWYKPgo+ICAvKgo+ICAgKiB0aGlzIGlzIHdoZXJlIHRoZSBzeXN0ZW0td2lk ZSBvdmVyZmxvdyBVSUQgYW5kIEdJRCBhcmUgZGVmaW5lZCwgZm9yCj4gQEAgLTIzODUsNiArMjM5 MSwxMiBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25n LCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLAo+ICAJY2FzZSBQUl9HRVRfRlBfTU9ERToKPiAg CQllcnJvciA9IEdFVF9GUF9NT0RFKG1lKTsKPiAgCQlicmVhazsKPiArCWNhc2UgUFJfU1ZFX1NF VF9WTDoKPiArCQllcnJvciA9IFNWRV9TRVRfVkwoYXJnMik7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IFBSX1NWRV9HRVRfVkw6Cj4gKwkJZXJyb3IgPSBTVkVfR0VUX1ZMKCk7Cj4gKwkJYnJlYWs7Cj4g IAlkZWZhdWx0Ogo+ICAJCWVycm9yID0gLUVJTlZBTDsKPiAgCQlicmVhazsKCgotLQpBbGV4IEJl bm7DqWUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Ka3Zt YXJtIG1haWxpbmcgbGlzdAprdm1hcm1AbGlzdHMuY3MuY29sdW1iaWEuZWR1Cmh0dHBzOi8vbGlz dHMuY3MuY29sdW1iaWEuZWR1L21haWxtYW4vbGlzdGluZm8va3ZtYXJtCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f193.google.com ([209.85.128.193]:44800 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752405AbdJ0Rwy (ORCPT ); Fri, 27 Oct 2017 13:52:54 -0400 Received: by mail-wr0-f193.google.com with SMTP id z55so6888079wrz.1 for ; Fri, 27 Oct 2017 10:52:53 -0700 (PDT) References: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> <1509101470-7881-21-git-send-email-Dave.Martin@arm.com> From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [PATCH v4 20/28] arm64/sve: Add prctl controls for userspace vector length management In-reply-to: <1509101470-7881-21-git-send-email-Dave.Martin@arm.com> Date: Fri, 27 Oct 2017 18:52:50 +0100 Message-ID: <87r2toiikt.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Sender: linux-arch-owner@vger.kernel.org List-ID: To: Dave Martin Cc: linux-arm-kernel@lists.infradead.org, Catalin Marinas , Will Deacon , Ard Biesheuvel , Szabolcs Nagy , Okamoto Takayuki , kvmarm@lists.cs.columbia.edu, libc-alpha@sourceware.org, linux-arch@vger.kernel.org Message-ID: <20171027175250.o6zbkbjXNZGvMkYVlSnXyBTAIt8sO8snr5c2AVZ5Nlw@z> Dave Martin writes: > This patch adds two arm64-specific prctls, to permit userspace to > control its vector length: > > * PR_SVE_SET_VL: set the thread's SVE vector length and vector > length inheritance mode. > > * PR_SVE_GET_VL: get the same information. > > Although these prctls resemble instruction set features in the SVE > architecture, they provide additional control: the vector length > inheritance mode is Linux-specific and nothing to do with the > architecture, and the architecture does not permit EL0 to set its > own vector length directly. Both can be used in portable tools > without requiring the use of SVE instructions. > > Signed-off-by: Dave Martin > Reviewed-by: Catalin Marinas > Cc: Alex Benn=C3=A9e FYI there is a minor conflict applying this on current master. > > --- > > **Dropped at v3** Reviewed-by: Alex Benn=C3=A9e > due to non-trivial changes/fixes after v2. > > Changes since v3 > ---------------- > > Requested by Catalin Marinas: > > * Replace static __maybe_unused functions with static inlines. > > (Retaining Catalin's Reviewed-by with his approval.) > --- > arch/arm64/include/asm/fpsimd.h | 14 +++++++++++ > arch/arm64/include/asm/processor.h | 4 +++ > arch/arm64/kernel/fpsimd.c | 50 ++++++++++++++++++++++++++++++++= ++++++ > include/uapi/linux/prctl.h | 4 +++ > kernel/sys.c | 12 +++++++++ > 5 files changed, 84 insertions(+) > > diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fps= imd.h > index d754e5a..b868412 100644 > --- a/arch/arm64/include/asm/fpsimd.h > +++ b/arch/arm64/include/asm/fpsimd.h > @@ -17,6 +17,7 @@ > #define __ASM_FP_H > > #include > +#include > > #ifndef __ASSEMBLY__ > > @@ -98,6 +99,9 @@ extern void sve_sync_from_fpsimd_zeropad(struct task_st= ruct *task); > extern int sve_set_vector_length(struct task_struct *task, > unsigned long vl, unsigned long flags); > > +extern int sve_set_current_vl(unsigned long arg); > +extern int sve_get_current_vl(void); > + > /* > * Probing and setup functions. > * Calls to these functions must be serialised with one another. > @@ -114,6 +118,16 @@ static inline void fpsimd_release_task(struct task_s= truct *task) { } > static inline void sve_sync_to_fpsimd(struct task_struct *task) { } > static inline void sve_sync_from_fpsimd_zeropad(struct task_struct *task= ) { } > > +static inline int sve_set_current_vl(unsigned long arg) > +{ > + return -EINVAL; > +} > + > +static inline int sve_get_current_vl(void) > +{ > + return -EINVAL; > +} > + > static inline void sve_init_vq_map(void) { } > static inline void sve_update_vq_map(void) { } > static inline int sve_verify_vq_map(void) { return 0; } > diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/= processor.h > index c6fddb0..023cacb 100644 > --- a/arch/arm64/include/asm/processor.h > +++ b/arch/arm64/include/asm/processor.h > @@ -217,5 +217,9 @@ static inline void spin_lock_prefetch(const void *ptr) > int cpu_enable_pan(void *__unused); > int cpu_enable_cache_maint_trap(void *__unused); > > +/* Userspace interface for PR_SVE_{SET,GET}_VL prctl()s: */ > +#define SVE_SET_VL(arg) sve_set_current_vl(arg) > +#define SVE_GET_VL() sve_get_current_vl() > + > #endif /* __ASSEMBLY__ */ > #endif /* __ASM_PROCESSOR_H */ > diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c > index a47ce44..7465622 100644 > --- a/arch/arm64/kernel/fpsimd.c > +++ b/arch/arm64/kernel/fpsimd.c > @@ -28,6 +28,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -557,6 +558,55 @@ int sve_set_vector_length(struct task_struct *task, > } > > /* > + * Encode the current vector length and flags for return. > + * This is only required for prctl(): ptrace has separate fields > + * > + * flags are as for sve_set_vector_length(). > + */ > +static int sve_prctl_status(unsigned long flags) > +{ > + int ret; > + > + if (flags & PR_SVE_SET_VL_ONEXEC) > + ret =3D current->thread.sve_vl_onexec; > + else > + ret =3D current->thread.sve_vl; > + > + if (test_thread_flag(TIF_SVE_VL_INHERIT)) > + ret |=3D PR_SVE_VL_INHERIT; > + > + return ret; > +} > + > +/* PR_SVE_SET_VL */ > +int sve_set_current_vl(unsigned long arg) > +{ > + unsigned long vl, flags; > + int ret; > + > + vl =3D arg & PR_SVE_VL_LEN_MASK; > + flags =3D arg & ~vl; > + > + if (!system_supports_sve()) > + return -EINVAL; > + > + ret =3D sve_set_vector_length(current, vl, flags); > + if (ret) > + return ret; > + > + return sve_prctl_status(flags); > +} > + > +/* PR_SVE_GET_VL */ > +int sve_get_current_vl(void) > +{ > + if (!system_supports_sve()) > + return -EINVAL; > + > + return sve_prctl_status(0); > +} > + > +/* > * Bitmap for temporary storage of the per-CPU set of supported vector l= engths > * during secondary boot. > */ > diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h > index 1b64901..1ef9370 100644 > --- a/include/uapi/linux/prctl.h > +++ b/include/uapi/linux/prctl.h > @@ -198,7 +198,11 @@ struct prctl_mm_map { > # define PR_CAP_AMBIENT_CLEAR_ALL 4 > > /* arm64 Scalable Vector Extension controls */ > +/* Flag values must be kept in sync with ptrace NT_ARM_SVE interface */ > +#define PR_SVE_SET_VL 48 /* set task vector length */ > # define PR_SVE_SET_VL_ONEXEC (1 << 18) /* defer effect until exec */ > +#define PR_SVE_GET_VL 49 /* get task vector length */ > +/* Bits common to PR_SVE_SET_VL and PR_SVE_GET_VL */ > # define PR_SVE_VL_LEN_MASK 0xffff > # define PR_SVE_VL_INHERIT (1 << 17) /* inherit across exec */ > > diff --git a/kernel/sys.c b/kernel/sys.c > index 9aebc29..c541916 100644 > --- a/kernel/sys.c > +++ b/kernel/sys.c > @@ -110,6 +110,12 @@ > #ifndef SET_FP_MODE > # define SET_FP_MODE(a,b) (-EINVAL) > #endif > +#ifndef SVE_SET_VL > +# define SVE_SET_VL(a) (-EINVAL) > +#endif > +#ifndef SVE_GET_VL > +# define SVE_GET_VL() (-EINVAL) > +#endif > > /* > * this is where the system-wide overflow UID and GID are defined, for > @@ -2385,6 +2391,12 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long,= arg2, unsigned long, arg3, > case PR_GET_FP_MODE: > error =3D GET_FP_MODE(me); > break; > + case PR_SVE_SET_VL: > + error =3D SVE_SET_VL(arg2); > + break; > + case PR_SVE_GET_VL: > + error =3D SVE_GET_VL(); > + break; > default: > error =3D -EINVAL; > break; -- Alex Benn=C3=A9e