From mboxrd@z Thu Jan 1 00:00:00 1970 From: Auger Eric Subject: Re: [PATCH v3 01/19] KVM: arm/arm64: Add vITS save/restore API documentation Date: Mon, 13 Mar 2017 15:42:48 +0100 Message-ID: <6f86ec3f-6b9e-34ba-628a-c2ef7b8c3529@redhat.com> References: <1488800074-21991-1-git-send-email-eric.auger@redhat.com> <1488800074-21991-2-git-send-email-eric.auger@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "prasun.kapoor" , kvm-devel , Juan Quintela , Marc Zyngier , Andre Przywara , "Dr. David Alan Gilbert" , "Kumar, Vijaya" , Vijaya Kumar K , Paolo Bonzini , "kvmarm@lists.cs.columbia.edu" , arm-mail-list , eric.auger.pro@gmail.com To: Peter Maydell Return-path: In-Reply-To: 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 List-Id: kvm.vger.kernel.org SGkgUGV0ZXIsCgpPbiAxMy8wMy8yMDE3IDE0OjA4LCBQZXRlciBNYXlkZWxsIHdyb3RlOgo+IE9u IDYgTWFyY2ggMjAxNyBhdCAxMjozNCwgRXJpYyBBdWdlciA8ZXJpYy5hdWdlckByZWRoYXQuY29t PiB3cm90ZToKPj4gQWRkIGRlc2NyaXB0aW9uIGZvciBob3cgdG8gYWNjZXNzIHZJVFMgcmVnaXN0 ZXJzIGFuZCBob3cgdG8gZmx1c2gvcmVzdG9yZQo+PiB2SVRTIHRhYmxlcyBpbnRvL2Zyb20gbWVt b3J5Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEVyaWMgQXVnZXIgPGVyaWMuYXVnZXJAcmVkaGF0LmNv bT4KPiAKPiBJJ3ZlIGhhZCBhIGxvb2sgdGhyb3VnaCB0aGlzOyBhIG1peCBvZiB0eXBvIGNvcnJl Y3Rpb25zCj4gYW5kIG90aGVyIHF1ZXN0aW9ucyBiZWxvdy4gSSdtIG5vdCB2ZXJ5IGZhbWlsaWFy IHdpdGggdGhlIElUUwo+IHNvIG1vc3RseSBpdCdzIHJlcXVlc3RzIGZvciBjbGFyaWZpY2F0aW9u Li4uCj4gCj4+IC0tLQo+Pgo+PiB2MSAtPiB2MjoKPj4gLSBEVEUgYW5kIElURSBub3cgYXJlIDgg Ynl0ZXMKPj4gLSBEVEUgYW5kIElURSBub3cgaW5kZXhlZCBieSBkZXZpY2VpZC9ldmVudGlkCj4+ IC0gdXNlIElURSBuYW1lIGluc3RlYWQgb2YgSVRURQo+PiAtIG1lbnRpb25zIElUVF9hZGRyIG1h dGNoZXMgYml0cyBbNTE6OF0gb2YgdGhlIGFjdHVhbCBhZGRyZXNzCj4+IC0gbWVudGlvbnMgTEUg bGF5b3V0Cj4+IC0tLQo+PiAgRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL2FybS12 Z2ljLWl0cy50eHQgfCA3OCArKysrKysrKysrKysrKysrKysrKysrCj4+ICAxIGZpbGUgY2hhbmdl ZCwgNzggaW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0 dWFsL2t2bS9kZXZpY2VzL2FybS12Z2ljLWl0cy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwv a3ZtL2RldmljZXMvYXJtLXZnaWMtaXRzLnR4dAo+PiBpbmRleCA2MDgxYTViLi40OWFkZTBjIDEw MDY0NAo+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2RldmljZXMvYXJtLXZnaWMt aXRzLnR4dAo+PiArKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2RldmljZXMvYXJtLXZn aWMtaXRzLnR4dAo+PiBAQCAtMzYsMyArMzYsODEgQEAgR3JvdXBzOgo+PiAgICAgIC1FTlhJTzog IElUUyBub3QgcHJvcGVybHkgY29uZmlndXJlZCBhcyByZXF1aXJlZCBwcmlvciB0byBzZXR0aW5n Cj4+ICAgICAgICAgICAgICAgdGhpcyBhdHRyaWJ1dGUKPj4gICAgICAtRU5PTUVNOiBNZW1vcnkg c2hvcnRhZ2Ugd2hlbiBhbGxvY2F0aW5nIElUUyBpbnRlcm5hbCBkYXRhCj4+ICsKPj4gKyAgS1ZN X0RFVl9BUk1fVkdJQ19HUlBfSVRTX1JFR1MKPj4gKyAgQXR0cmlidXRlczoKPj4gKyAgICAgIFRo ZSBhdHRyIGZpZWxkIG9mIGt2bV9kZXZpY2VfYXR0ciBlbmNvZGVzIHRoZSBvZmZzZXQgb2YgdGhl Cj4+ICsgICAgICBJVFMgcmVnaXN0ZXIsIHJlbGF0aXZlIHRvIHRoZSBJVFMgY29udHJvbCBmcmFt ZSBiYXNlIGFkZHJlc3MKPj4gKyAgICAgIChJVFNfYmFzZSkuCj4+ICsKPj4gKyAgICAgIGt2bV9k ZXZpY2VfYXR0ci5hZGRyIHBvaW50cyB0byBhIF9fdTY0IHZhbHVlIHdoYXRldmVyIHRoZSB3aWR0 aAo+PiArICAgICAgb2YgdGhlIGFkZHJlc3NlZCByZWdpc3RlciAoMzIvNjQgYml0cykuCj4+ICsK Pj4gKyAgICAgIFdyaXRlcyB0byByZWFkLW9ubHkgcmVnaXN0ZXJzIGFyZSBpZ25vcmVkIGJ5IHRo ZSBrZXJuZWwgZXhjZXB0Cj4+ICsgICAgICBmb3IgYSBzaW5nbGUgcmVnaXN0ZXIsIEdJVFNfUkVB RFIuIE5vcm1hbGx5IHRoaXMgcmVnaXN0ZXIgaXMgUk8KPj4gKyAgICAgIGJ1dCBpdCBuZWVkcyB0 byBiZSByZXN0b3JlZCBvdGhlcndpc2UgY29tbWFuZHMgaW4gdGhlIHF1ZXVlIHdpbGwKPj4gKyAg ICAgIGJlIHJlLWV4ZWN1dGVkIGFmdGVyIENXUklURVIgc2V0dGluZy4KPj4gKwo+PiArICAgICAg Rm9yIG90aGVyIHJlZ2lzdGVycywgR2V0dGluZyBvciBzZXR0aW5nIGEgcmVnaXN0ZXIgaGFzIHRo ZSBzYW1lCj4gCj4gImdldHRpbmciCnN1cmUKPiAKPj4gKyAgICAgIGVmZmVjdCBhcyByZWFkaW5n L3dyaXRpbmcgdGhlIHJlZ2lzdGVyIG9uIHJlYWwgaGFyZHdhcmUuCj4+ICsgIEVycm9yczoKPj4g KyAgICAtRU5YSU86IE9mZnNldCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFueSBzdXBwb3J0ZWQg cmVnaXN0ZXIKPj4gKyAgICAtRUZBVUxUOiBJbnZhbGlkIHVzZXIgcG9pbnRlciBmb3IgYXR0ci0+ YWRkcgo+PiArICAgIC1FSU5WQUw6IE9mZnNldCBpcyBub3QgNjQtYml0IGFsaWduZWQKPj4gKwo+ PiArICBLVk1fREVWX0FSTV9WR0lDX0dSUF9JVFNfVEFCTEVTCj4+ICsgIEF0dHJpYnV0ZXMKPj4g KyAgICAgICBUaGUgYXR0ciBmaWVsZCBvZiBrdm1fZGV2aWNlX2F0dHIgaXMgbm90IHVzZWQuCj4g Cj4gSSB0aGluayB3ZSBzaG91bGQgc2F5ICJtdXN0IGJlIHplcm8sIG9yIHRoZSBjYWxsIGZhaWxz IHdpdGggLUVTT01FVEhJTkciLAo+IHNvIHdlIGhhdmUgdGhlIG9wdGlvbiBvZiB1c2luZyBhdHRy IGZvciBzb21ldGhpbmcgaW4gZnV0dXJlIGlmIG5lZWRlZC4KT0sKPiAKPj4gKwo+PiArICAgICAg IHJlcXVlc3QgdGhlIGZsdXNoLXNhdmUvcmVzdG9yZSBvZiB0aGUgSVRTIHRhYmxlcywgbmFtZWx5 Cj4+ICsgICAgICAgdGhlIGRldmljZSB0YWJsZSwgdGhlIGNvbGxlY3Rpb24gdGFibGUsIGFsbCB0 aGUgSVRUIHRhYmxlcywKPj4gKyAgICAgICB0aGUgTFBJIHBlbmRpbmcgdGFibGVzLiBPbiBzYXZl LCB0aGUgdGFibGVzIGFyZSBmbHVzaGVkCj4+ICsgICAgICAgaW50byBndWVzdCBtZW1vcnkgYXQg dGhlIGxvY2F0aW9uIHByb3Zpc2lvbmVkIGJ5IHRoZSBndWVzdAo+PiArICAgICAgIGluIEdJVFNf QkFTRVIgKGRldmljZSBhbmQgY29sbGVjdGlvbiB0YWJsZXMpLCBvbiBNQVBEIGNvbW1hbmQKPiAK PiBzaG91bGQgdGhpcyBiZSAiaW4gdGhlIE1BUEQgY29tbWFuZCIgPwpPSyBJIHdpbGwgcmV3b3Jk IHRoaXMgaW50byAiYXQgdGhlIGFkZHJlc3MgaW5kaWNhdGVkIGJ5IC4uLiBNQVBEIGNvbW1hbmQK SVRUX2FkZHIgZmllbGQiCj4gCj4+ICsgICAgICAgKElUVF9hZGRyKSwgR0lDUl9QRU5EQkFTRVJz IChwZW5kaW5nIHRhYmxlcykuCj4+ICsKPj4gKyAgICAgICBUaGlzIG1lYW5zIHRoZSBHSUMgc2hv dWxkIGJlIHJlc3RvcmVkIGJlZm9yZSB0aGUgSVRTIGFuZCBhbGwKPj4gKyAgICAgICBJVFMgcmVn aXN0ZXJzIGJ1dCB0aGUgR0lUU19DVFJMIG11c3QgYmUgcmVzdG9yZWQgYmVmb3JlCj4gCj4gIkdJ VFNfQ1RMUiIuCk9LCj4gCj4+ICsgICAgICAgcmVzdG9yaW5nIHRoZSBJVFMgdGFibGVzLgo+PiAr Cj4+ICsgICAgICAgTm90ZSB0aGUgTFBJIGNvbmZpZ3VyYXRpb24gdGFibGUgaXMgcmVhZC1vbmx5 IGZvciB0aGUKPj4gKyAgICAgICBpbi1rZXJuZWwgSVRTIGFuZCBpdHMgc2F2ZS9yZXN0b3JlIGdv ZXMgdGhyb3VnaCB0aGUgc3RhbmRhcmQKPj4gKyAgICAgICBSQU0gc2F2ZS9yZXN0b3JlLgo+PiAr Cj4+ICsgICAgICAgVGhlIGxheW91dCBvZiB0aGUgdGFibGVzIGluIGd1ZXN0IG1lbW9yeSBkZWZp bmVzIGFuIEFCSS4KPj4gKyAgICAgICBUaGUgZW50cmllcyBhcmUgbGFpZCBpbiBsaXR0bGUgZW5k aWFuIGZvcm1hdCBhcyBmb2xsb3dzOwo+PiArCj4+ICsgICAgVGhlIGRldmljZSB0YWJsZSBhbmQg SVRFIGFyZSByZXNwZWN0aXZlbHkgaW5kZXhlZCBieSBkZXZpY2UgaWQgYW5kCj4+ICsgICAgZXZl bnRpZC4gVGhlIGNvbGxlY3Rpb24gdGFibGUgaG93ZXZlciBpcyBub3QgaW5kZXhlZCBieSBjb2xs ZWN0aW9uIGlkOgo+PiArICAgIENURSBhcmUgd3JpdHRlbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo ZSBidWZmZXIuCj4+ICsKPj4gKyAgICBEZXZpY2UgVGFibGUgRW50cnkgKERURSkgbGF5b3V0OiBl bnRyeSBzaXplID0gOCBieXRlcwo+PiArCj4+ICsgICAgYml0czogICAgIHwgNjMgLi4uIDQ1IHwg NDQgLi4uIDUgfCA0IC4uLiAwIHwKPj4gKyAgICB2YWx1ZXM6ICAgfCAgIG5leHQgICAgfCBJVFRf YWRkciB8ICBTaXplICAgfAo+PiArCj4+ICsgICAgd2hlcmUKPj4gKyAgICAtIElUVF9hZGRyIG1h dGNoZXMgYml0cyBbNDg6OF0gb2YgdGhlIElUVCBhZGRyZXNzICgyNTZCIGFsaWduZWQpLgo+PiAr ICAgIC0gbmV4dCBmaWVsZCBpcyBtZWFuaW5nZnVsIG9ubHkgaWYgdGhlIGVudHJ5IGlzIHZhbGlk IChJVFRfYWRkciAhPSBOVUxMKS4KPiAKPiBQcm9iYWJseSBjbGVhcmVyIGFzICE9IDAsIHNpbmNl IGl0J3MgYSBmaWVsZCByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCk9LCj4gCj4gVGhlIE1BUEQgY29t bWFuZCBsZXRzIHRoZSBndWVzdCBzcGVjaWZ5IGJpdHMgWzUwOjhdIG9mCj4gSVRUIGFkZHJlc3Mg LS0gYW55IHJlYXNvbiBmb3Igbm90IHN0b3JpbmcgYml0cyBbNTA6NDldIGhlcmU/Cj4gKGluIGZh Y3QgeW91IGNhbiBzZWUgdGhlIGZvcm1hdCBvZiBNQVBEIGhhcyBtb3JlIHJlc2VydmVkCj4gYml0 cyBmb3Igd2lkZXIgcGh5c2ljYWwgYWRkcmVzcyBzaXplcyBpbiBmdXR1cmUgLS0gc2hvdWxkCj4g d2UgYmUgdHJ5aW5nIHRvIGZ1dHVyZSBwcm9vZiBvdXIgZm9ybWF0IHRvbz8pClRoZSBpbi1rZXJu ZWwgSVRTIGltcGxlbWVudHMgNDggYml0cyBvZiBQQSBhdCB0aGUgbW9tZW50IChCQVNFUiwgQ0JB U0VSLApQRU5EQkFTRVIsIFBST1BCQVNFUikuIFJlYWRpbmcgdGhlIGNvZGUgYWdhaW4gaXQgYWN0 dWFsbHkgZXh0cmFjdHMKWzg6NDRdIHJhbmdlIGluIHRoZSBNQVBEIGNvbW1hbmQgbGluZSBidXQg SSB3b3VsZCBoYXZlIGV4cGVjdGVkIGl0IHRvCnVzZSBbODo0N10uIEFuZHJlLCBpZiBieSBjaGFu Y2UgeW91IHJlYWQgdGhpcywgd2hhdCBpcyB0aGUgcmF0aW9uYWxlPwoKTWFyYyBzdWdnZXN0ZWQg bWUgdG8gc2hyaW5rIHRoZSBmaWVsZCB0byA0OCBiaXRzIGluIHByZXZpb3VzIHRvIGVubGFyZ2UK bmV4dCBmaWVsZC4gTm93IGlmIHByZWZlcnJlZCBJIGRlZmluaXRpdmVseSBjYW4gZW5jb2RlIHRo ZSB3aG9sZSBsZW5ndGgKYXQgdGhlIGV4cGVuc2Ugb2YgbmV4dCBmaWVsZC4KPiAKPiBJIGRvbid0 IHNlZSBhbnl0aGluZyBpbiB0aGUgc3BlYyBmb3IgTUFQRCB0aGF0IGZvcmJpZHMgdGhlIGd1ZXN0 Cj4gZnJvbSB1c2luZyBwaHlzaWNhbCBhZGRyZXNzIDAgYXMgdGhlIElUVF9hZGRyLCB0aG91Z2gg bWF5YmUgSQo+IG1pc3NlZCBpdC4KQ29ycmVjdCBJIGRpZG4ndCBhcyB3ZWxsLiBNYXJjIHRvbGQg bWUgc2l6ZSBjb3VsZCBiZSAwIHRvLiBTbyBpZiBJCmNhbm5vdCByZWx5IG9uIHN1Y2ggYXNzdW1w dGlvbiwgSSBkb24ndCBoYXZlIGFueSBjaG9pY2UgYnV0IGFkZGluZyBhCnZhbGlkIGJpdC4KPiAK Pj4gKyAgICBJdCBlcXVhbHMgdG8gMCBpZiB0aGlzIGVudHJ5IGlzIHRoZSBsYXN0IG9uZTsgb3Ro ZXJ3aXNlIGl0IGNvcnJlc3BvbmRzCj4+ICsgICAgdG8gdGhlIG1pbmltdW0gYmV0d2VlbiB0aGUg b2Zmc2V0IHRvIHRoZSBuZXh0IGRldmljZSBpZCBhbmQgMl4xOSAtMS4KPj4gKwo+PiArICAgIENv bGxlY3Rpb24gVGFibGUgRW50cnkgKENURSkgbGF5b3V0OiBlbnRyeSBzaXplID0gOCBieXRlcwo+ PiArCj4+ICsgICAgYml0czogICAgIHwgNjN8IDYyIC4uICA1MiAgfCA1MSAuLi4gMTYgfCAxNSAg Li4uICAgMCB8Cj4+ICsgICAgdmFsdWVzOiAgIHwgViB8ICAgIFJFUzAgICAgfCAgUkRCYXNlICAg fCAgICBJQ0lEICAgICB8Cj4+ICsKPiAKPiBXZSBzaG91bGQgZG9jdW1lbnQgdGhlIG1lYW5pbmdz IG9mIHRoZSBDVEUgZmllbGRzIGhlcmUuCk9LIEkgd2lsbCBhZGQgdGhpcy4KPiAKPj4gKyAgICBJ bnRlcnJ1cHQgVHJhbnNsYXRpb24gRW50cnkgKElURSkgbGF5b3V0OiBlbnRyeSBzaXplID0gOCBi eXRlcwo+PiArCj4+ICsgICAgYml0czogICAgIHwgNjMgLi4uIDQ4IHwgNDcgLi4uIDE2IHwgMTUg Li4uIDAgfAo+PiArICAgIHZhbHVlczogICB8ICAgIG5leHQgICB8ICAgcElOVElEICB8ICBJQ0lE ICAgIHwKPj4gKwo+PiArICAgIC0gbmV4dCBmaWVsZCBpcyBtZWFuaW5nZnVsIG9ubHkgaWYgdGhl IGVudHJ5IGlzIHZhbGlkIChwSU5USUQgIT0gTlVMTCkuCj4+ICsgICAgSXQgZXF1YWxzIHRvIDAg aWYgdGhpcyBlbnRyeSBpcyB0aGUgbGFzdCBvbmU7IG90aGVyd2lzZSBpdCBjb3JyZXNwb25kcwo+ PiArICAgIHRvIHRoZSBtaW5pbXVtIGJldHdlZW4gdGhlIGV2ZW50aWQgb2Zmc2V0IHRvIHRoZSBu ZXh0IElURSBhbmQgMl4xNiAtMS4KPiAKPiBUaGlzIHNlZW1zIHRvIGJlIG1pc3Npbmcgc29tZSBv ZiB0aGUgZmllbGRzIGluIHRoZSBzdWdnZXN0ZWQKPiBJVEUgY29udGVudHMgaW4gdGhlIEdJQyBz cGVjIHRhYmxlIDYtMy4gSXMgdGhhdCBPSz8KPiBJbiBwYXJ0aWN1bGFyIGl0J3MgbWlzc2luZyB0 aGUgdmlydHVhbC1pbnRlcnJ1cHQgcmVsYXRlZCBmaWVsZHMuCj4gSXMgcElOVElEPT0wIHJlYWxs eSBub3QgYSB2YWxpZCBpbnRlcnJ1cHQgSUQgdmFsdWU/Ck1hcmMgc2VudCBhbiBSRkMgdG8gc3Vw cG9ydCBHSUN2NCBmZWF0dXJlcyBpbiBJVFMgZHJpdmVyIGJ1dCBjdXJyZW50bHkKYm90aCBJVFMg ZHJpdmVyIGFuZCBJVFMgaW4ta2VybmVsIGVtdWxhdGlvbiBoYXZlIG5vIHN1cHBvcnQgZm9yIHRo aXMuCgppbiBNQVBJIGNoYXB0ZXIgYSBub3RlIHNheXMKcElOVElEIOKJpSAweDIwMDAgZm9yIGEg dmFsaWQgTFBJIElOVElELiBJIGRvbid0IHRoaW5rIHlvdSBjYW4gdHJhbnNsYXRlCmFueXRoaW5n IGVsc2UgdGhhbiBhbiBMUEkuCj4gCj4gCj4gVGhlc2UgQ1RFL0lURS9EVEUgZm9ybWF0cyBkb24n dCBzZWVtIHRvIGhhdmUgYW55IGtpbmQgb2YKPiAiZXNjYXBlIGhhdGNoIiBmb3IgYWxsb3dpbmcg YmFja3dhcmRzIGNvbXBhdGlibGUgZXh0ZW5zaW9ucwo+IHRvIHRoZSBmb3JtYXQuIERvIHdlIG5l ZWQgb25lPyAoSSB0aGluayB0aGF0J3MgcGFydGljdWxhcmx5Cj4gbGlrZWx5IHRvIGJlIHVzZWZ1 bCB3aGVyZSB0aGVyZSdzIGFuIElUUyBmZWF0dXJlIHdlIGRvbid0Cj4gY3VycmVudGx5IGltcGxl bWVudCBidXQgbWlnaHQgcGVyaGFwcyB3YW50IHRvIGluIGZ1dHVyZSwKPiBsaWtlIEdJQ3Y0IHZp cnR1YWwgaW50ZXJydXB0IGluamVjdGlvbi4pCgpNYXliZSB3ZSBjb3VsZCByZWx5IG9uIHRoZSBJ VFMgcmVnaXN0ZXJzICh0aGF0IG11c3QgYmUgcmVzdG9yZWQgYmVmb3JlCnRoZSB0YWJsZXMpIHRv IGdldCBhbnkgaW5mbyBhYm91dCB0aGUgZm9ybWF0IHVzZWQgdG8gZW5jb2RlIHRoZSB0YWJsZQpl bnRyaWVzLiBXZSBoYXZlIEdJVFNfQ1RMUlsxXSB0aGF0IGNhbiBoZWxwIGRpc2NyaW1pbmF0ZSBi ZXR3ZWVuIEdJQ3YzLwpHSUN2NC4gR0lUU19CQVNFUi5FbnRyeV9zaXplIGNhbiBiZSA4QiBmb3Ig Y3VycmVudCBpbXBsZW1lbnRhdGlvbiBhbmQKMTZCIGZvciBhbiBlbmhhbmNlZCBpbXBsZW1lbnRh dGlvbi4gQ1RFWzUyOjYyXSBjYW4gYmUgdXNlZCB0byBlbmNvZGUgYQpmb3JtYXQgdmVyc2lvbi4K Cj4gCj4+ICsgICAgTFBJIFBlbmRpbmcgVGFibGUgbGF5b3V0Ogo+PiArCj4+ICsgICAgQXMgc3Bl Y2lmaWVkIGluIHRoZSBBUk0gR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciBBcmNoaXRlY3R1 cmUKPj4gKyAgICBTcGVjaWZpY2F0aW9uIEdJQyBBcmNoaXRlY3R1cmUgdmVyc2lvbiAzLjAgYW5k IHZlcnNpb24gNC4gVGhlIGZpcnN0Cj4+ICsgICAgMWtCIGlzIG5vdCBtb2RpZmllZCBhbmQgdGhl cmVmb3JlIHNob3VsZCBjb250YWluIHplcm9lcy4KPj4gLS0KPj4gMi41LjUKClRoYW5rcyBmb3Ig dGhpcyBuZXcgcmV2aWV3IHJvdW5kLgoKQmVzdCBSZWdhcmRzCgpFcmljCj4gCj4gdGhhbmtzCj4g LS0gUE1NCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczov L2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: eric.auger@redhat.com (Auger Eric) Date: Mon, 13 Mar 2017 15:42:48 +0100 Subject: [PATCH v3 01/19] KVM: arm/arm64: Add vITS save/restore API documentation In-Reply-To: References: <1488800074-21991-1-git-send-email-eric.auger@redhat.com> <1488800074-21991-2-git-send-email-eric.auger@redhat.com> Message-ID: <6f86ec3f-6b9e-34ba-628a-c2ef7b8c3529@redhat.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Peter, On 13/03/2017 14:08, Peter Maydell wrote: > On 6 March 2017 at 12:34, Eric Auger wrote: >> Add description for how to access vITS registers and how to flush/restore >> vITS tables into/from memory >> >> Signed-off-by: Eric Auger > > I've had a look through this; a mix of typo corrections > and other questions below. I'm not very familiar with the ITS > so mostly it's requests for clarification... > >> --- >> >> v1 -> v2: >> - DTE and ITE now are 8 bytes >> - DTE and ITE now indexed by deviceid/eventid >> - use ITE name instead of ITTE >> - mentions ITT_addr matches bits [51:8] of the actual address >> - mentions LE layout >> --- >> Documentation/virtual/kvm/devices/arm-vgic-its.txt | 78 ++++++++++++++++++++++ >> 1 file changed, 78 insertions(+) >> >> diff --git a/Documentation/virtual/kvm/devices/arm-vgic-its.txt b/Documentation/virtual/kvm/devices/arm-vgic-its.txt >> index 6081a5b..49ade0c 100644 >> --- a/Documentation/virtual/kvm/devices/arm-vgic-its.txt >> +++ b/Documentation/virtual/kvm/devices/arm-vgic-its.txt >> @@ -36,3 +36,81 @@ Groups: >> -ENXIO: ITS not properly configured as required prior to setting >> this attribute >> -ENOMEM: Memory shortage when allocating ITS internal data >> + >> + KVM_DEV_ARM_VGIC_GRP_ITS_REGS >> + Attributes: >> + The attr field of kvm_device_attr encodes the offset of the >> + ITS register, relative to the ITS control frame base address >> + (ITS_base). >> + >> + kvm_device_attr.addr points to a __u64 value whatever the width >> + of the addressed register (32/64 bits). >> + >> + Writes to read-only registers are ignored by the kernel except >> + for a single register, GITS_READR. Normally this register is RO >> + but it needs to be restored otherwise commands in the queue will >> + be re-executed after CWRITER setting. >> + >> + For other registers, Getting or setting a register has the same > > "getting" sure > >> + effect as reading/writing the register on real hardware. >> + Errors: >> + -ENXIO: Offset does not correspond to any supported register >> + -EFAULT: Invalid user pointer for attr->addr >> + -EINVAL: Offset is not 64-bit aligned >> + >> + KVM_DEV_ARM_VGIC_GRP_ITS_TABLES >> + Attributes >> + The attr field of kvm_device_attr is not used. > > I think we should say "must be zero, or the call fails with -ESOMETHING", > so we have the option of using attr for something in future if needed. OK > >> + >> + request the flush-save/restore of the ITS tables, namely >> + the device table, the collection table, all the ITT tables, >> + the LPI pending tables. On save, the tables are flushed >> + into guest memory at the location provisioned by the guest >> + in GITS_BASER (device and collection tables), on MAPD command > > should this be "in the MAPD command" ? OK I will reword this into "at the address indicated by ... MAPD command ITT_addr field" > >> + (ITT_addr), GICR_PENDBASERs (pending tables). >> + >> + This means the GIC should be restored before the ITS and all >> + ITS registers but the GITS_CTRL must be restored before > > "GITS_CTLR". OK > >> + restoring the ITS tables. >> + >> + Note the LPI configuration table is read-only for the >> + in-kernel ITS and its save/restore goes through the standard >> + RAM save/restore. >> + >> + The layout of the tables in guest memory defines an ABI. >> + The entries are laid in little endian format as follows; >> + >> + The device table and ITE are respectively indexed by device id and >> + eventid. The collection table however is not indexed by collection id: >> + CTE are written at the beginning of the buffer. >> + >> + Device Table Entry (DTE) layout: entry size = 8 bytes >> + >> + bits: | 63 ... 45 | 44 ... 5 | 4 ... 0 | >> + values: | next | ITT_addr | Size | >> + >> + where >> + - ITT_addr matches bits [48:8] of the ITT address (256B aligned). >> + - next field is meaningful only if the entry is valid (ITT_addr != NULL). > > Probably clearer as != 0, since it's a field rather than a pointer. OK > > The MAPD command lets the guest specify bits [50:8] of > ITT address -- any reason for not storing bits [50:49] here? > (in fact you can see the format of MAPD has more reserved > bits for wider physical address sizes in future -- should > we be trying to future proof our format too?) The in-kernel ITS implements 48 bits of PA at the moment (BASER, CBASER, PENDBASER, PROPBASER). Reading the code again it actually extracts [8:44] range in the MAPD command line but I would have expected it to use [8:47]. Andre, if by chance you read this, what is the rationale? Marc suggested me to shrink the field to 48 bits in previous to enlarge next field. Now if preferred I definitively can encode the whole length at the expense of next field. > > I don't see anything in the spec for MAPD that forbids the guest > from using physical address 0 as the ITT_addr, though maybe I > missed it. Correct I didn't as well. Marc told me size could be 0 to. So if I cannot rely on such assumption, I don't have any choice but adding a valid bit. > >> + It equals to 0 if this entry is the last one; otherwise it corresponds >> + to the minimum between the offset to the next device id and 2^19 -1. >> + >> + Collection Table Entry (CTE) layout: entry size = 8 bytes >> + >> + bits: | 63| 62 .. 52 | 51 ... 16 | 15 ... 0 | >> + values: | V | RES0 | RDBase | ICID | >> + > > We should document the meanings of the CTE fields here. OK I will add this. > >> + Interrupt Translation Entry (ITE) layout: entry size = 8 bytes >> + >> + bits: | 63 ... 48 | 47 ... 16 | 15 ... 0 | >> + values: | next | pINTID | ICID | >> + >> + - next field is meaningful only if the entry is valid (pINTID != NULL). >> + It equals to 0 if this entry is the last one; otherwise it corresponds >> + to the minimum between the eventid offset to the next ITE and 2^16 -1. > > This seems to be missing some of the fields in the suggested > ITE contents in the GIC spec table 6-3. Is that OK? > In particular it's missing the virtual-interrupt related fields. > Is pINTID==0 really not a valid interrupt ID value? Marc sent an RFC to support GICv4 features in ITS driver but currently both ITS driver and ITS in-kernel emulation have no support for this. in MAPI chapter a note says pINTID ? 0x2000 for a valid LPI INTID. I don't think you can translate anything else than an LPI. > > > These CTE/ITE/DTE formats don't seem to have any kind of > "escape hatch" for allowing backwards compatible extensions > to the format. Do we need one? (I think that's particularly > likely to be useful where there's an ITS feature we don't > currently implement but might perhaps want to in future, > like GICv4 virtual interrupt injection.) Maybe we could rely on the ITS registers (that must be restored before the tables) to get any info about the format used to encode the table entries. We have GITS_CTLR[1] that can help discriminate between GICv3/ GICv4. GITS_BASER.Entry_size can be 8B for current implementation and 16B for an enhanced implementation. CTE[52:62] can be used to encode a format version. > >> + LPI Pending Table layout: >> + >> + As specified in the ARM Generic Interrupt Controller Architecture >> + Specification GIC Architecture version 3.0 and version 4. The first >> + 1kB is not modified and therefore should contain zeroes. >> -- >> 2.5.5 Thanks for this new review round. Best Regards Eric > > thanks > -- PMM >