From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 1/7] drm/i915: Implement a framework for batch buffer pools Date: Wed, 12 Nov 2014 09:44:34 +0100 Message-ID: <20141112084434.GI25711@phenom.ffwll.local> References: <1415398927-16572-1-git-send-email-bradley.d.volkin@intel.com> <1415398927-16572-2-git-send-email-bradley.d.volkin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f42.google.com (mail-wg0-f42.google.com [74.125.82.42]) by gabe.freedesktop.org (Postfix) with ESMTP id B734B6E4D3 for ; Wed, 12 Nov 2014 00:44:16 -0800 (PST) Received: by mail-wg0-f42.google.com with SMTP id k14so13564914wgh.29 for ; Wed, 12 Nov 2014 00:44:15 -0800 (PST) Content-Disposition: inline In-Reply-To: <1415398927-16572-2-git-send-email-bradley.d.volkin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: bradley.d.volkin@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMDcsIDIwMTQgYXQgMDI6MjI6MDFQTSAtMDgwMCwgYnJhZGxleS5kLnZvbGtp bkBpbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5A aW50ZWwuY29tPgo+IAo+IFRoaXMgYWRkcyBhIHNtYWxsIG1vZHVsZSBmb3IgbWFuYWdpbmcgYSBw b29sIG9mIGJhdGNoIGJ1ZmZlcnMuCj4gVGhlIG9ubHkgY3VycmVudCB1c2UgY2FzZSBpcyBmb3Ig dGhlIGNvbW1hbmQgcGFyc2VyLCBhcyBkZXNjcmliZWQKPiBpbiB0aGUga2VybmVsZG9jIGluIHRo ZSBwYXRjaC4gVGhlIGNvZGUgaXMgc2ltcGxlLCBidXQgc2VwYXJhdGluZwo+IGl0IG91dCBtYWtl cyBpdCBlYXNpZXIgdG8gY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGFsZ29yaXRobXMgYW5kIHRvCj4g ZXh0ZW5kIHRvIGZ1dHVyZSB1c2UgY2FzZXMgc2hvdWxkIHRoZXkgYXJpc2UuCj4gCj4gVGhlIGlu dGVyZmFjZSBpcyBzaW1wbGU6IGluaXQgdG8gY3JlYXRlIGFuIGVtcHR5IHBvb2wsIGZpbmkgdG8K PiBjbGVhbiBpdCB1cCwgZ2V0IHRvIG9idGFpbiBhIG5ldyBidWZmZXIuIE5vdGUgdGhhdCBhbGwg YnVmZmVycyBhcmUKPiBleHBlY3RlZCB0byBiZSBpbmFjdGl2ZSBiZWZvcmUgY2xlYW5pbmcgdXAg dGhlIHBvb2wuCj4gCj4gTG9ja2luZyBpcyBjdXJyZW50bHkgYmFzZWQgb24gdGhlIGNhbGxlciBo b2xkaW5nIHRoZSBzdHJ1Y3RfbXV0ZXguCj4gV2UgYWxyZWFkeSBkbyB0aGF0IGluIHRoZSBwbGFj ZXMgd2hlcmUgd2Ugd2lsbCB1c2UgdGhlIGJhdGNoIHBvb2wKPiBmb3IgdGhlIGNvbW1hbmQgcGFy c2VyLgo+IAo+IHYyOgo+IC0gcy9CVUdfT04vV0FSTl9PTi8gZm9yIGxvY2tpbmcgYXNzZXJ0aW9u cwo+IC0gUmVtb3ZlIHRoZSBjYXAgb24gcG9vbCBzaXplCj4gLSBTd2l0Y2ggZnJvbSBhbGxvYy9m cmVlIHRvIGluaXQvZmluaQo+IAo+IHYzOgo+IC0gSWRpb21hdGljIGxvb3Bpbmcgc3RydWN0dXJl IGluIF9maW5pCj4gLSBDb3JyZWN0IGhhbmRsaW5nIG9mIHB1cmdlZCBvYmplY3RzCj4gLSBEb24n dCByZXR1cm4gYSBidWZmZXIgdGhhdCdzIHRvbyBtdWNoIGxhcmdlciB0aGFuIG5lZWRlZAo+IAo+ IHY0Ogo+IC0gUmViYXNlZCB0byBsYXRlc3QgLW5pZ2h0bHkKPiAKPiB2NToKPiAtIFJlbW92ZSBf cHV0KCkgZnVuY3Rpb24gYW5kIGNsZWFuIHVwIGNvbW1lbnRzIHRvIG1hdGNoCj4gCj4gU2lnbmVk LW9mZi1ieTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgo+IC0tLQo+ ICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgICAgICAgICAgICAgfCAgIDUgKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgMTUgKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyB8IDE1MiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29s LmMKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsIGIvRG9j dW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4gaW5kZXggNzI3N2E3Zi4uMjliYzhmNSAxMDA2 NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPiArKysgYi9Eb2N1bWVu dGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPiBAQCAtMzk4OSw2ICszOTg5LDExIEBAIGludCBudW1f aW9jdGxzOzwvc3lub3BzaXM+Cj4gICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFy c2VyLmMKPiAgICAgICAgPC9zZWN0Mj4KPiAgICAgICAgPHNlY3QyPgo+ICsgICAgICAgIDx0aXRs ZT5CYXRjaGJ1ZmZlciBQb29sczwvdGl0bGU+Cj4gKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fYmF0Y2hfcG9vbC5jIGJhdGNoIHBvb2wKPiArIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9iYXRjaF9wb29sLmMKPiArICAgICAgPC9zZWN0Mj4KPiArICAgICAgPHNlY3QyPgo+ ICAgICAgICAgIDx0aXRsZT5Mb2dpY2FsIFJpbmdzLCBMb2dpY2FsIFJpbmcgQ29udGV4dHMgYW5k IEV4ZWNsaXN0czwvdGl0bGU+Cj4gICFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg TG9naWNhbCBSaW5ncywgTG9naWNhbCBSaW5nIENvbnRleHRzIGFuZCBFeGVjbGlzdHMKPiAgIUlk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5k ZXggODkxZTU4NC4uNzNjZDJkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTE5LDYg KzE5LDcgQEAgaTkxNS0kKENPTkZJR19ERUJVR19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8KPiAgCj4g ICMgR0VNIGNvZGUKPiAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKPiArCSAgaTkxNV9n ZW1fYmF0Y2hfcG9vbC5vIFwKPiAgCSAgaTkxNV9nZW1fY29udGV4dC5vIFwKPiAgCSAgaTkxNV9n ZW1fcmVuZGVyX3N0YXRlLm8gXAo+ICAJICBpOTE1X2dlbV9kZWJ1Zy5vIFwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA4ZmI4ZWJhLi4yOTU1ZWQ5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gQEAgLTExMzQsNiArMTEzNCwxMiBAQCBzdHJ1Y3QgaW50ZWxfbDNfcGFyaXR5 IHsKPiAgCWludCB3aGljaF9zbGljZTsKPiAgfTsKPiAgCj4gK3N0cnVjdCBpOTE1X2dlbV9iYXRj aF9wb29sIHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFk IGFjdGl2ZV9saXN0Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9saXN0Owo+ICt9Owo+ ICsKPiAgc3RydWN0IGk5MTVfZ2VtX21tIHsKPiAgCS8qKiBNZW1vcnkgYWxsb2NhdG9yIGZvciBH VFQgc3RvbGVuIG1lbW9yeSAqLwo+ICAJc3RydWN0IGRybV9tbSBzdG9sZW47Cj4gQEAgLTE4NjUs NiArMTg3MSw4IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPiAgCS8qKiBVc2VkIGlu IGV4ZWNidWYgdG8gdGVtcG9yYXJpbHkgaG9sZCBhIHJlZiAqLwo+ICAJc3RydWN0IGxpc3RfaGVh ZCBvYmpfZXhlY19saW5rOwo+ICAKPiArCXN0cnVjdCBsaXN0X2hlYWQgYmF0Y2hfcG9vbF9saXN0 Owo+ICsKPiAgCS8qKgo+ICAJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBpcyBvbiB0aGUg YWN0aXZlIGxpc3RzIChoYXMgcGVuZGluZwo+ICAJICogcmVuZGVyaW5nIGFuZCBzbyBhIG5vbi16 ZXJvIHNlcW5vKSwgYW5kIGlzIG5vdCBzZXQgaWYgaXQgaSBzIG9uCj4gQEAgLTI4MjksNiArMjgz NywxMyBAQCB2b2lkIGk5MTVfZGVzdHJveV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiAgdm9pZCBpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1aW50MzJfdCAqaW5zdGRvbmUpOwo+ICBjb25zdCBjaGFyICppOTE1X2NhY2hlX2xldmVs X3N0cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHR5cGUpOwo+ICAKPiArLyog aTkxNV9nZW1fYmF0Y2hfcG9vbC5jICovCj4gK3ZvaWQgaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgIHN0cnVjdCBpOTE1X2dlbV9iYXRj aF9wb29sICpwb29sKTsKPiArdm9pZCBpOTE1X2dlbV9iYXRjaF9wb29sX2Zpbmkoc3RydWN0IGk5 MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wpOwo+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCoK PiAraTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBv b2wsIHNpemVfdCBzaXplKTsKPiArCj4gIC8qIGk5MTVfY21kX3BhcnNlci5jICovCj4gIGludCBp OTE1X2NtZF9wYXJzZXJfZ2V0X3ZlcnNpb24odm9pZCk7Cj4gIGludCBpOTE1X2NtZF9wYXJzZXJf aW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IGluZGV4IDNlMGNhYmUuLjg3NWMxNTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBAQCAtNDM1Miw2ICs0MzUyLDcgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJSU5JVF9MSVNUX0hFQUQoJm9iai0+ cmluZ19saXN0KTsKPiAgCUlOSVRfTElTVF9IRUFEKCZvYmotPm9ial9leGVjX2xpbmspOwo+ICAJ SU5JVF9MSVNUX0hFQUQoJm9iai0+dm1hX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJm9iai0+ YmF0Y2hfcG9vbF9saXN0KTsKPiAgCj4gIAlvYmotPm9wcyA9IG9wczsKPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMC4uYTU1ZTQzYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPiBAQCAtMCwwICsxLDE1MiBAQAo+ ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICog SU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5o Igo+ICsKPiArLyoqCj4gKyAqIERPQzogYmF0Y2ggcG9vbAo+ICsgKgo+ICsgKiBJbiBvcmRlciB0 byBzdWJtaXQgYmF0Y2ggYnVmZmVycyBhcyAnc2VjdXJlJywgdGhlIHNvZnR3YXJlIGNvbW1hbmQg cGFyc2VyCj4gKyAqIG11c3QgZW5zdXJlIHRoYXQgYSBiYXRjaCBidWZmZXIgY2Fubm90IGJlIG1v ZGlmaWVkIGFmdGVyIHBhcnNpbmcuIEl0IGRvZXMKPiArICogdGhpcyBieSBjb3B5aW5nIHRoZSB1 c2VyIHByb3ZpZGVkIGJhdGNoIGJ1ZmZlciBjb250ZW50cyB0byBhIGtlcm5lbCBvd25lZAo+ICsg KiBidWZmZXIgZnJvbSB3aGljaCB0aGUgaGFyZHdhcmUgd2lsbCBhY3R1YWxseSBleGVjdXRlLCBh bmQgYnkgY2FyZWZ1bGx5Cj4gKyAqIG1hbmFnaW5nIHRoZSBhZGRyZXNzIHNwYWNlIGJpbmRpbmdz IGZvciBzdWNoIGJ1ZmZlcnMuCj4gKyAqCj4gKyAqIFRoZSBiYXRjaCBwb29sIGZyYW1ld29yayBw cm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgdGhlIGRyaXZlciB0byBtYW5hZ2UgYQo+ICsgKiBzZXQg b2Ygc2NyYXRjaCBidWZmZXJzIHRvIHVzZSBmb3IgdGhpcyBwdXJwb3NlLiBUaGUgZnJhbWV3b3Jr IGNhbiBiZQo+ICsgKiBleHRlbmRlZCB0byBzdXBwb3J0IG90aGVyIHVzZXMgY2FzZXMgc2hvdWxk IHRoZXkgYXJpc2UuCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIGk5MTVfZ2VtX2JhdGNoX3Bvb2xf aW5pdCgpIC0gaW5pdGlhbGl6ZSBhIGJhdGNoIGJ1ZmZlciBwb29sCj4gKyAqIEBkZXY6IHRoZSBk cm0gZGV2aWNlCj4gKyAqIEBwb29sOiB0aGUgYmF0Y2ggYnVmZmVyIHBvb2wKPiArICovCj4gK3Zv aWQgaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJ CSAgICAgIHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sKQo+ICt7Cj4gKwlwb29sLT5k ZXYgPSBkZXY7Cj4gKwlJTklUX0xJU1RfSEVBRCgmcG9vbC0+YWN0aXZlX2xpc3QpOwo+ICsJSU5J VF9MSVNUX0hFQUQoJnBvb2wtPmluYWN0aXZlX2xpc3QpOwo+ICt9Cj4gKwo+ICsvKioKPiArICog aTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCkgLSBjbGVhbiB1cCBhIGJhdGNoIGJ1ZmZlciBwb29s Cj4gKyAqIEBwb29sOiB0aGUgcG9vbCB0byBjbGVhbiB1cAo+ICsgKgo+ICsgKiBOb3RlOiBDYWxs ZXJzIG11c3QgaG9sZCB0aGUgc3RydWN0X211dGV4Lgo+ICsgKi8KPiArdm9pZCBpOTE1X2dlbV9i YXRjaF9wb29sX2Zpbmkoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wpCj4gK3sKPiAr CVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmcG9vbC0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKPiAr Cj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnBvb2wtPmFjdGl2ZV9saXN0KSkgewo+ICsJCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPQo+ICsJCQlsaXN0X2ZpcnN0X2VudHJ5KCZwb29s LT5hY3RpdmVfbGlzdCwKPiArCQkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCj4gKwkJ CQkJIGJhdGNoX3Bvb2xfbGlzdCk7Cj4gKwo+ICsJCVdBUk5fT04ob2JqLT5hY3RpdmUpOwo+ICsK PiArCQlsaXN0X2RlbF9pbml0KCZvYmotPmJhdGNoX3Bvb2xfbGlzdCk7Cj4gKwkJZHJtX2dlbV9v YmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gKwl9Cj4gKwo+ICsJd2hpbGUgKCFsaXN0 X2VtcHR5KCZwb29sLT5pbmFjdGl2ZV9saXN0KSkgewo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmogPQo+ICsJCQlsaXN0X2ZpcnN0X2VudHJ5KCZwb29sLT5pbmFjdGl2ZV9saXN0 LAo+ICsJCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKPiArCQkJCQkgYmF0Y2hfcG9v bF9saXN0KTsKPiArCj4gKwkJbGlzdF9kZWxfaW5pdCgmb2JqLT5iYXRjaF9wb29sX2xpc3QpOwo+ ICsJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+ICsJfQo+ICt9Cj4g Kwo+ICsvKioKPiArICogaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoKSAtIHNlbGVjdCBhIGJ1ZmZl ciBmcm9tIHRoZSBwb29sCj4gKyAqIEBwb29sOiB0aGUgYmF0Y2ggYnVmZmVyIHBvb2wKPiArICog QHNpemU6IHRoZSBtaW5pbXVtIGRlc2lyZWQgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyCj4g KyAqCj4gKyAqIEZpbmRzIG9yIGFsbG9jYXRlcyBhIGJhdGNoIGJ1ZmZlciBpbiB0aGUgcG9vbCB3 aXRoIGF0IGxlYXN0IHRoZSByZXF1ZXN0ZWQKPiArICogc2l6ZS4gVGhlIGNhbGxlciBpcyByZXNw b25zaWJsZSBmb3IgYW55IGRvbWFpbiwgYWN0aXZlL2luYWN0aXZlLCBvcgo+ICsgKiBwdXJnZWFi aWxpdHkgbWFuYWdlbWVudCBmb3IgdGhlIHJldHVybmVkIGJ1ZmZlci4KPiArICoKPiArICogTm90 ZTogQ2FsbGVycyBtdXN0IGhvbGQgdGhlIHN0cnVjdF9tdXRleAo+ICsgKgo+ICsgKiBSZXR1cm46 IHRoZSBzZWxlY3RlZCBiYXRjaCBidWZmZXIgb2JqZWN0Cj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqCj4gK2k5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1X2dl bV9iYXRjaF9wb29sICpwb29sLAo+ICsJCQlzaXplX3Qgc2l6ZSkKPiArewo+ICsJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqdG1wLCAqbmV4dDsKPiArCWJvb2wgd2FzX3B1cmdlZDsKPiArCj4gKwlXQVJOX09OKCFt dXRleF9pc19sb2NrZWQoJnBvb2wtPmRldi0+c3RydWN0X211dGV4KSk7Cj4gKwo+ICsJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHRtcCwgbmV4dCwKPiArCQkJCSAmcG9vbC0+YWN0aXZlX2xpc3Qs IGJhdGNoX3Bvb2xfbGlzdCkgewo+ICsJCWlmICghdG1wLT5hY3RpdmUpCj4gKwkJCWxpc3RfbW92 ZV90YWlsKCZ0bXAtPmJhdGNoX3Bvb2xfbGlzdCwKPiArCQkJCSAgICAgICAmcG9vbC0+aW5hY3Rp dmVfbGlzdCk7Cj4gKwl9Cj4gKwo+ICsJZG8gewo+ICsJCXdhc19wdXJnZWQgPSBmYWxzZTsKPiAr Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsICZwb29sLT5pbmFjdGl2ZV9saXN0LCBiYXRj aF9wb29sX2xpc3QpIHsKPiArCQkJLyoKPiArCQkJICogU2VsZWN0IGEgYnVmZmVyIHRoYXQgaXMg YXQgbGVhc3QgYXMgYmlnIGFzIG5lZWRlZAo+ICsJCQkgKiBidXQgbm90ICd0b28gbXVjaCcgYmln Z2VyLiBBIGJldHRlciB3YXkgdG8gZG8gdGhpcwo+ICsJCQkgKiBtaWdodCBiZSB0byBidWNrZXQg dGhlIHBvb2wgb2JqZWN0cyBiYXNlZCBvbiBzaXplLgo+ICsJCQkgKi8KPiArCQkJaWYgKHRtcC0+ YmFzZS5zaXplID49IHNpemUgJiYKPiArCQkJICAgIHRtcC0+YmFzZS5zaXplIDw9ICgyICogc2l6 ZSkpIHsKPiArCQkJCW9iaiA9IHRtcDsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsK PiArCQlpZiAob2JqICYmIG9iai0+bWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQpIHsKPiArCQkJ d2FzX3B1cmdlZCA9IHRydWU7Cj4gKwkJCWxpc3RfZGVsKCZvYmotPmJhdGNoX3Bvb2xfbGlzdCk7 Cj4gKwkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+ICsJCQlvYmog PSBOVUxMOwo+ICsJCX0KCk1pbm9yIGlzc3VlOiBXZSBzaG91bGQgbW92ZSB0aGUgcHVyZ2VkIGNo ZWNrIGludG8gdGhlIGxvb3Agc28gdGhhdCBwdXJnZQpidWZmZXIgc3RydWN0cyBnZXQgcmVsZWFz ZWQgZXZlbiB3aGVuIHRoZXkncmUgdG9vIHNtYWxsL2JpZy4gT3RoZXJ3aXNlCndlJ2xsIGhhdmUg YSBnb29kIGNoYW5jZSB0byBoYW5nIG9udG8gZ29ibG9hZHMgb2Ygc3RydWN0cyBmb3JldmVyLgot RGFuaWVsCgo+ICsJfSB3aGlsZSAod2FzX3B1cmdlZCk7Cj4gKwo+ICsJaWYgKCFvYmopIHsKPiAr CQlvYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QocG9vbC0+ZGV2LCBzaXplKTsKPiArCQlpZiAo IW9iaikKPiArCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJCWxpc3RfYWRkX3Rh aWwoJm9iai0+YmF0Y2hfcG9vbF9saXN0LCAmcG9vbC0+aW5hY3RpdmVfbGlzdCk7Cj4gKwl9Cj4g Kwo+ICsJbGlzdF9tb3ZlX3RhaWwoJm9iai0+YmF0Y2hfcG9vbF9saXN0LCAmcG9vbC0+YWN0aXZl X2xpc3QpOwo+ICsKPiArCXJldHVybiBvYmo7Cj4gK30KPiAtLSAKPiAxLjkuMQo+IAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVs IFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KKzQxICgwKSA3OSAz NjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=