From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH v2 06/14] drm/i915/guc: Add a second client, to be used for preemption Date: Thu, 19 Oct 2017 21:36:39 +0200 Message-ID: References: <20171019183619.6235-1-michal.winiarski@intel.com> <20171019183619.6235-7-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 340BB6EB56 for ; Thu, 19 Oct 2017 19:36:43 +0000 (UTC) In-Reply-To: <20171019183619.6235-7-michal.winiarski@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, =?utf-8?B?TWljaGHFgiBXaW5pYXJza2k=?= Cc: Dave Gordon List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxOSBPY3QgMjAxNyAyMDozNjoxMSArMDIwMCwgTWljaGHFgiBXaW5pYXJza2kgIAo8 bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+IHdyb3RlOgoKPiBGcm9tOiBEYXZlIEdvcmRvbiA8 ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+Cj4gVGhpcyBzZWNvbmQgY2xpZW50IGlzIGNyZWF0 ZWQgd2l0aCBwcmlvcml0eSBLTURfSElHSCwgYW5kIG1hcmtlZAo+IGFzIHByZWVtcHRpdmUuIFRo aXMgd2lsbCBhbGxvdyB1cyB0byByZXF1ZXN0IHByZWVtcHRpb24gdXNpbmcgR3VDICAKPiBhY3Rp b25zLgo+Cj4gdjI6IEV4dHJhY3QgY2xpZW50cyBjcmVhdGlvbiBpbnRvIGEgaGVscGVyLCBkZWJ1 Z2ZzIGZpeHVwcy4gKE1pY2hhxYIpCj4gUmVjcmVhdGUgZG9vcmJlbGwgb24gaW5pdC4gKERhbmll bGUpCj4gTW92ZSBjbGllbnRzIGludG8gYW4gYXJyYXkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBEYXZl IEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hh xYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVy aW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gQ2M6IEplZmYgTWNHZWUgPGpl ZmYubWNnZWVAaW50ZWwuY29tPgo+IENjOiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVj emtvQGludGVsLmNvbT4KPiBDYzogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgIDEx ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAxMDcg IAo+ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAgOSArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMgICAgICAgIHwgICAyICstCj4gIDQgZmlsZXMgY2hhbmdlZCwgOTEgaW5z ZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBpbmRleCBjNjVlMzgxYjg1ZjMuLmRhZjdhMTZhNGVlMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTI0NTksNyArMjQ1OSw3IEBAIHN0YXRpYyBi b29sIGNoZWNrX2d1Y19zdWJtaXNzaW9uKHN0cnVjdCBzZXFfZmlsZSAgCj4gKm0pCj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7 Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKPiAtCWlm ICghZ3VjLT5leGVjYnVmX2NsaWVudCkgewo+ICsJaWYgKCFndWMtPmNsaWVudFtTVUJNSVRdKSB7 Cj4gIAkJc2VxX3ByaW50ZihtLCAiR3VDIHN1Ym1pc3Npb24gJXNcbiIsCj4gIAkJCSAgIEhBU19H VUNfU0NIRUQoZGV2X3ByaXYpID8KPiAgCQkJICAgImRpc2FibGVkIiA6Cj4gQEAgLTI0NzQsNiAr MjQ3NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgIAo+ICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMgPSAmZGV2X3ByaXYtPmd1YzsKPiArCXUzMiBpOwo+IAlpZiAoIWNoZWNrX2d1Y19zdWJtaXNz aW9uKG0pKQo+ICAJCXJldHVybiAwOwo+IEBAIC0yNDgyLDggKzI0ODMsMTAgQEAgc3RhdGljIGlu dCBpOTE1X2d1Y19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAgCj4gKmRhdGEpCj4gIAlz ZXFfcHJpbnRmKG0sICJcdCUqcGJcbiIsIEdVQ19OVU1fRE9PUkJFTExTLCBndWMtPmRvb3JiZWxs X2JpdG1hcCk7Cj4gIAlzZXFfcHJpbnRmKG0sICJEb29yYmVsbCBuZXh0IGNhY2hlbGluZTogMHgl eFxuXG4iLCBndWMtPmRiX2NhY2hlbGluZSk7Cj4gLQlzZXFfcHJpbnRmKG0sICJcbkd1QyBleGVj YnVmIGNsaWVudCBAICVwOlxuIiwgZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gLQlpOTE1X2d1Y19j bGllbnRfaW5mbyhtLCBkZXZfcHJpdiwgZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gKwlmb3IgKGkg PSAwOyBpIDwgSTkxNV9HVUNfTlVNX0NMSUVOVFM7IGkrKykgewo+ICsJCXNlcV9wcmludGYobSwg IlxuR3VDIGNsaWVudCBAICVwOlxuIiwgZ3VjLT5jbGllbnRbaV0pOwo+ICsJCWk5MTVfZ3VjX2Ns aWVudF9pbmZvKG0sIGRldl9wcml2LCBndWMtPmNsaWVudFtpXSk7Cj4gKwl9Cj4gCWk5MTVfZ3Vj X2xvZ19pbmZvKG0sIGRldl9wcml2KTsKPiBAQCAtMjQ5Nyw3ICsyNTAwLDcgQEAgc3RhdGljIGlu dCBpOTE1X2d1Y19zdGFnZV9wb29sKHN0cnVjdCBzZXFfZmlsZSAqbSwgIAo+IHZvaWQgKmRhdGEp Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+ cHJpdmF0ZSk7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1 YzsKPiAgCXN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqZGVzYyA9IGd1Yy0+c3RhZ2VfZGVzY19wb29s X3ZhZGRyOwo+IC0Jc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50ID0gZ3VjLT5leGVjYnVm X2NsaWVudDsKPiArCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+Y2xpZW50 W1NVQk1JVF07Cj4gIAl1bnNpZ25lZCBpbnQgdG1wOwo+ICAJaW50IGluZGV4Owo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgIAo+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggMGJkMWZjZmZh NzhkLi5kOGI4MTI1YWE0Y2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jCj4gQEAgLTMzLDEwICszMywxMSBAQAo+ICAgKgo+ICAgKiBHdUMgY2xpZW50 Ogo+ICAgKiBBIGk5MTVfZ3VjX2NsaWVudCByZWZlcnMgdG8gYSBzdWJtaXNzaW9uIHBhdGggdGhy b3VnaCBHdUMuICAKPiBDdXJyZW50bHksIHRoZXJlCj4gLSAqIGlzIG9ubHkgb25lIG9mIHRoZXNl ICh0aGUgZXhlY2J1Zl9jbGllbnQpIGFuZCB0aGlzIG9uZSBpcyBjaGFyZ2VkICAKPiB3aXRoIGFs bAo+IC0gKiBzdWJtaXNzaW9ucyB0byB0aGUgR3VDLiBUaGlzIHN0cnVjdCBpcyB0aGUgb3duZXIg b2YgYSBkb29yYmVsbCwgYSAgCj4gcHJvY2Vzcwo+IC0gKiBkZXNjcmlwdG9yIGFuZCBhIHdvcmtx dWV1ZSAoYWxsIG9mIHRoZW0gaW5zaWRlIGEgc2luZ2xlIGdlbSBvYmplY3QgIAo+IHRoYXQKPiAt ICogY29udGFpbnMgYWxsIHJlcXVpcmVkIHBhZ2VzIGZvciB0aGVzZSBlbGVtZW50cykuCj4gKyAq IGFyZSB0d28gY2xpZW50cy4gT25lIG9mIHRoZW0gKFNVQk1JVCkgaXMgY2hhcmdlZCB3aXRoIGFs bCAgCj4gc3VibWlzc2lvbnMgdG8gdGhlCj4gKyAqIEd1QywgdGhlIG90aGVyIG9uZSAoUFJFRU1Q VCkgaXMgcmVzcG9uc2libGUgZm9yIHByZWVtcHRpbmcgdGhlICAKPiBTVUJNSVQgb25lLgo+ICsg KiBUaGlzIHN0cnVjdCBpcyB0aGUgb3duZXIgb2YgYSBkb29yYmVsbCwgYSBwcm9jZXNzIGRlc2Ny aXB0b3IgYW5kIGEgIAo+IHdvcmtxdWV1ZQo+ICsgKiAoYWxsIG9mIHRoZW0gaW5zaWRlIGEgc2lu Z2xlIGdlbSBvYmplY3QgdGhhdCBjb250YWlucyBhbGwgcmVxdWlyZWQgIAo+IHBhZ2VzIGZvcgo+ ICsgKiB0aGVzZSBlbGVtZW50cykuCgpIbW0sIGl0J3MgbGl0dGxlIHVuZm9ydHVuYXRlIHRoYXQg U1VCTUlUIGFuZCBQUkVFTVBUIGVudW1zIGFyZSBkZWZpbmVkCmluIGludGVsX2d1Yy5oIHdoaWxl IG1vc3RseSB1c2VkIGluIGd1Y19zdWJtaXNzaW9uLmMKCj4gICAqCj4gICAqIEd1QyBzdGFnZSBk ZXNjcmlwdG9yOgo+ICAgKiBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIHRoZSBkcml2ZXIgYWxsb2Nh dGVzIGEgc3RhdGljIHBvb2wgb2YgMTAyNCAgCj4gc3VjaAo+IEBAIC0zNjMsNiArMzY0LDggQEAg c3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICAKPiAqZ3Vj LAo+ICAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOwo+IAlkZXNjLT5hdHRyaWJ1dGUg PSBHVUNfU1RBR0VfREVTQ19BVFRSX0FDVElWRSB8ICAKPiBHVUNfU1RBR0VfREVTQ19BVFRSX0tF Uk5FTDsKPiArCWlmIChjbGllbnQtPnByaW9yaXR5IDw9IEdVQ19DTElFTlRfUFJJT1JJVFlfSElH SCkKPiArCQlkZXNjLT5hdHRyaWJ1dGUgfD0gR1VDX1NUQUdFX0RFU0NfQVRUUl9QUkVFTVBUOwo+ ICAJZGVzYy0+c3RhZ2VfaWQgPSBjbGllbnQtPnN0YWdlX2lkOwo+ICAJZGVzYy0+cHJpb3JpdHkg PSBjbGllbnQtPnByaW9yaXR5Owo+ICAJZGVzYy0+ZGJfaWQgPSBjbGllbnQtPmRvb3JiZWxsX2lk Owo+IEBAIC01NTMsNyArNTU2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgIAo+ICplbmdpbmUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgCXN0cnVjdCBpbnRlbF9ndWMgKmd1 YyA9ICZkZXZfcHJpdi0+Z3VjOwo+IC0Jc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50ID0g Z3VjLT5leGVjYnVmX2NsaWVudDsKPiArCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCA9 IGd1Yy0+Y2xpZW50W1NVQk1JVF07Cgp3aGF0IGFib3V0IHVzaW5nIGhlbHBlcnMgbGlrZToKCnN0 YXRpYyBpbmxpbmUKc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ3VjX2V4ZWNfY2xpZW50KHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKewoJcmV0dXJuIGd1Yy0+Y2xpZW50W1NVQk1JVF07Cn0KCj4gKwlz dHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQgPSBndWMtPmNsaWVudFtTVUJNSVRdOwoKPiAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2lu ZS0+ZXhlY2xpc3RzOwo+ICAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMt PnBvcnQ7Cj4gIAljb25zdCB1bnNpZ25lZCBpbnQgZW5naW5lX2lkID0gZW5naW5lLT5pZDsKPiBA QCAtNzUwLDEwICs3NTMsMTEgQEAgc3RhdGljIGludCBfX3Jlc2V0X2Rvb3JiZWxsKHN0cnVjdCAg Cj4gaTkxNV9ndWNfY2xpZW50KiBjbGllbnQsIHUxNiBkYl9pZCkKPiAgICovCj4gIHN0YXRpYyBp bnQgZ3VjX2luaXRfZG9vcmJlbGxfaHcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlz dHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQgPSBndWMtPmV4ZWNidWZfY2xpZW50Owo+ICsJ c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50ID0gZ3VjLT5jbGllbnRbU1VCTUlUXTsKPiAg CWJvb2wgcmVjcmVhdGVfZmlyc3RfY2xpZW50ID0gZmFsc2U7Cj4gIAl1MTYgZGJfaWQ7Cj4gIAlp bnQgcmV0Owo+ICsJdTMyIGk7Cj4gCS8qIEZvciB1bnVzZWQgZG9vcmJlbGxzLCBtYWtlIHN1cmUg dGhleSBhcmUgZGlzYWJsZWQgKi8KPiAgCWZvcl9lYWNoX2NsZWFyX2JpdChkYl9pZCwgZ3VjLT5k b29yYmVsbF9iaXRtYXAsIEdVQ19OVU1fRE9PUkJFTExTKSB7Cj4gQEAgLTc2MSw3ICs3NjUsNyBA QCBzdGF0aWMgaW50IGd1Y19pbml0X2Rvb3JiZWxsX2h3KHN0cnVjdCBpbnRlbF9ndWMgIAo+ICpn dWMpCj4gIAkJCWNvbnRpbnVlOwo+IAkJaWYgKGhhc19kb29yYmVsbChjbGllbnQpKSB7Cj4gLQkJ CS8qIEJvcnJvdyBleGVjYnVmX2NsaWVudCAod2Ugd2lsbCByZWNyZWF0ZSBpdCBsYXRlcikgKi8K PiArCQkJLyogQm9ycm93IHN1Ym1pdCBjbGllbnQgKHdlIHdpbGwgcmVjcmVhdGUgaXQgbGF0ZXIp ICovCj4gIAkJCWRlc3Ryb3lfZG9vcmJlbGwoY2xpZW50KTsKPiAgCQkJcmVjcmVhdGVfZmlyc3Rf Y2xpZW50ID0gdHJ1ZTsKPiAgCQl9Cj4gQEAgLTc4MCwxNCArNzg0LDE0IEBAIHN0YXRpYyBpbnQg Z3VjX2luaXRfZG9vcmJlbGxfaHcoc3RydWN0IGludGVsX2d1YyAgCj4gKmd1YykKPiAgCQlfX3Vw ZGF0ZV9kb29yYmVsbF9kZXNjKGNsaWVudCwgY2xpZW50LT5kb29yYmVsbF9pZCk7Cj4gIAl9Cj4g LQkvKiBOb3cgZm9yIGV2ZXJ5IGNsaWVudCAoYW5kIG5vdCBvbmx5IGV4ZWNidWZfY2xpZW50KSBt YWtlIHN1cmUgdGhlaXIKPiArCS8qIE5vdyBmb3IgZXZlcnkgY2xpZW50IChub3Qgb25seSBzdWJt aXNzaW9uIGNsaWVudCkgbWFrZSBzdXJlIHRoZWlyCj4gIAkgKiBkb29yYmVsbHMgYXJlIGtub3du IGJ5IHRoZSBHdUMgKi8KPiAtCS8vZm9yIChjbGllbnQgPSBjbGllbnRfbGlzdDsgY2xpZW50ICE9 IE5VTEw7IGNsaWVudCA9IGNsaWVudC0+bmV4dCkKPiArCWZvciAoaSA9IDA7IGkgPCBJOTE1X0dV Q19OVU1fQ0xJRU5UUzsgaSsrKQo+ICAJewo+IC0JCXJldCA9IF9fY3JlYXRlX2Rvb3JiZWxsKGNs aWVudCk7Cj4gKwkJcmV0ID0gX19jcmVhdGVfZG9vcmJlbGwoZ3VjLT5jbGllbnRbaV0pOwo+ICAJ CWlmIChyZXQpIHsKPiAgCQkJRFJNX0VSUk9SKCJDb3VsZG4ndCByZWNyZWF0ZSBjbGllbnQgJXUg ZG9vcmJlbGw6ICVkXG4iLAo+IC0JCQkJY2xpZW50LT5zdGFnZV9pZCwgcmV0KTsKPiArCQkJCSAg Z3VjLT5jbGllbnRbaV0tPnN0YWdlX2lkLCByZXQpOwo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJCX0K PiAgCX0KPiBAQCAtOTE0LDYgKzkxOCw0NyBAQCBzdGF0aWMgdm9pZCBndWNfY2xpZW50X2ZyZWUo c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAgCj4gKmNsaWVudCkKPiAgCWtmcmVlKGNsaWVudCk7Cj4g IH0KPiArc3RhdGljIGludCBndWNfY2xpZW50c19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkx NShndWMpOwo+ICsJc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50Owo+ICsKPiArCWNsaWVu dCA9IGd1Y19jbGllbnRfYWxsb2MoZGV2X3ByaXYsCj4gKwkJCQkgIElOVEVMX0lORk8oZGV2X3By aXYpLT5yaW5nX21hc2ssCj4gKwkJCQkgIEdVQ19DTElFTlRfUFJJT1JJVFlfS01EX05PUk1BTCwK PiArCQkJCSAgZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0KTsKPiArCWlmIChJU19FUlIoY2xpZW50 KSkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHdUMgY2xpZW50IGZvciBzdWJt aXNzaW9uIVxuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY2xpZW50KTsKPiArCX0KPiArCWd1Yy0+ Y2xpZW50W1NVQk1JVF0gPSBjbGllbnQ7Cj4gKwo+ICsJY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxv YyhkZXZfcHJpdiwKPiArCQkJCSAgSU5URUxfSU5GTyhkZXZfcHJpdiktPnJpbmdfbWFzaywKPiAr CQkJCSAgR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSCwKPiArCQkJCSAgZGV2X3ByaXYtPnBy ZWVtcHRfY29udGV4dCk7Cj4gKwlpZiAoSVNfRVJSKGNsaWVudCkpIHsKPiArCQlEUk1fRVJST1Io IkZhaWxlZCB0byBjcmVhdGUgR3VDIGNsaWVudCBmb3IgcHJlZW1wdGlvbiFcbiIpOwo+ICsJCWd1 Y19jbGllbnRfZnJlZShndWMtPmNsaWVudFtTVUJNSVRdKTsKPiArCQlndWMtPmNsaWVudFtTVUJN SVRdID0gTlVMTDsKPiArCQlyZXR1cm4gUFRSX0VSUihjbGllbnQpOwo+ICsJfQo+ICsJZ3VjLT5j bGllbnRbUFJFRU1QVF0gPSBjbGllbnQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGd1Y19jbGllbnRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICt7 Cj4gKwlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQ7Cj4gKwl1MzIgaTsKPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgSTkxNV9HVUNfTlVNX0NMSUVOVFM7IGkrKykgewo+ICsJCWNsaWVudCA9 IGZldGNoX2FuZF96ZXJvKCZndWMtPmNsaWVudFtpXSk7Cj4gKwkJZ3VjX2NsaWVudF9mcmVlKGNs aWVudCk7Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGd1Y19wb2xpY3lfaW5pdChzdHJ1 Y3QgZ3VjX3BvbGljeSAqcG9saWN5KQo+ICB7Cj4gIAlwb2xpY3ktPmV4ZWN1dGlvbl9xdWFudHVt ID0gUE9MSUNZX0RFRkFVTFRfRVhFQ1VUSU9OX1FVQU5UVU1fVVM7Cj4gQEAgLTExNDMsNyArMTE4 OCw2IEBAIHN0YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3RydWN0ICAKPiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGludGVs X2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7Cj4gLQlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpj bGllbnQgPSBndWMtPmV4ZWNidWZfY2xpZW50Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAlpbnQgZXJyOwo+IEBAIC0x MTYxLDI4ICsxMjA1LDI5IEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3Qg IAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCSAgICAgc2l6ZW9mKHN0cnVjdCBn dWNfd3FfaXRlbSkgKgo+ICAJCSAgICAgSTkxNV9OVU1fRU5HSU5FUyA+IEdVQ19XUV9TSVpFKTsK PiAtCWlmICghY2xpZW50KSB7Cj4gLQkJY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXZfcHJp diwKPiAtCQkJCQkgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2ssCj4gLQkJCQkJICBH VUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JNQUwsCj4gLQkJCQkJICBkZXZfcHJpdi0+a2VybmVs X2NvbnRleHQpOwo+IC0JCWlmIChJU19FUlIoY2xpZW50KSkgewo+IC0JCQlEUk1fRVJST1IoIkZh aWxlZCB0byBjcmVhdGUgR3VDIGNsaWVudCBmb3IgZXhlY2J1ZiFcbiIpOwo+IC0JCQlyZXR1cm4g UFRSX0VSUihjbGllbnQpOwo+IC0JCX0KPiAtCj4gLQkJZ3VjLT5leGVjYnVmX2NsaWVudCA9IGNs aWVudDsKPiArCS8qCj4gKwkgKiBXZSdyZSBiZWluZyBjYWxsZWQgb24gYm90aCBtb2R1bGUgaW5p dGlhbGl6YXRpb24gYW5kIG9uIHJlc2V0LAo+ICsJICogdW50aWwgdGhpcyBmbG93IGlzIGNoYW5n ZWQsIHdlJ3JlIHVzaW5nIHJlZ3VsYXIgY2xpZW50IHByZXNlbmNlIHRvCj4gKwkgKiBkZXRlcm1p bmUgd2hpY2ggY2FzZSBhcmUgd2UgaW4sIGFuZCB3aGV0aGVyIHdlIHNob3VsZCBhbGxvY2F0ZSBu ZXcKPiArCSAqIGNsaWVudHMgb3IganVzdCByZXNldCB0aGVpciB3b3JrcXVldWVzLgo+ICsJICov Cj4gKwlpZiAoIWd1Yy0+Y2xpZW50W1NVQk1JVF0pIHsKPiArCQlHRU1fQlVHX09OKGd1Yy0+Y2xp ZW50W1BSRUVNUFRdKTsKPiArCQllcnIgPSBndWNfY2xpZW50c19jcmVhdGUoZ3VjKTsKPiArCQlp ZiAoZXJyKQo+ICsJCQlyZXR1cm4gZXJyOwo+ICsJfSBlbHNlIHsKPiArCQlndWNfcmVzZXRfd3Eo Z3VjLT5jbGllbnRbU1VCTUlUXSk7Cj4gKwkJZ3VjX3Jlc2V0X3dxKGd1Yy0+Y2xpZW50W1BSRUVN UFRdKTsKPiAgCX0KPiAJZXJyID0gaW50ZWxfZ3VjX3NhbXBsZV9mb3JjZXdha2UoZ3VjKTsKPiAg CWlmIChlcnIpCj4gLQkJZ290byBlcnJfZXhlY2J1Zl9jbGllbnQ7Cj4gLQo+IC0JZ3VjX3Jlc2V0 X3dxKGNsaWVudCk7Cj4gKwkJZ290byBlcnJfZnJlZV9jbGllbnRzOwo+IAllcnIgPSBndWNfaW5p dF9kb29yYmVsbF9odyhndWMpOwo+ICAJaWYgKGVycikKPiAtCQlnb3RvIGVycl9leGVjYnVmX2Ns aWVudDsKPiArCQlnb3RvIGVycl9mcmVlX2NsaWVudHM7Cj4gCS8qIFRha2Ugb3ZlciBmcm9tIG1h bnVhbCBjb250cm9sIG9mIEVMU1AgKGV4ZWNsaXN0cykgKi8KPiAgCWd1Y19pbnRlcnJ1cHRzX2Nh cHR1cmUoZGV2X3ByaXYpOwo+IEBAIC0xMTk0LDkgKzEyMzksOCBAQCBpbnQgaTkxNV9ndWNfc3Vi bWlzc2lvbl9lbmFibGUoc3RydWN0ICAKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAJ cmV0dXJuIDA7Cj4gLWVycl9leGVjYnVmX2NsaWVudDoKPiAtCWd1Y19jbGllbnRfZnJlZShndWMt PmV4ZWNidWZfY2xpZW50KTsKPiAtCWd1Yy0+ZXhlY2J1Zl9jbGllbnQgPSBOVUxMOwo+ICtlcnJf ZnJlZV9jbGllbnRzOgo+ICsJZ3VjX2NsaWVudHNfZGVzdHJveShndWMpOwo+ICAJcmV0dXJuIGVy cjsKPiAgfQo+IEBAIC0xMjA5LDYgKzEyNTMsNSBAQCB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25f ZGlzYWJsZShzdHJ1Y3QgIAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJLyogUmV2 ZXJ0IGJhY2sgdG8gbWFudWFsIEVMU1Agc3VibWlzc2lvbiAqLwo+ICAJaW50ZWxfZW5naW5lc19y ZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oZGV2X3ByaXYpOwo+IC0JZ3VjX2NsaWVudF9mcmVlKGd1 Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0JZ3VjLT5leGVjYnVmX2NsaWVudCA9IE5VTEw7Cj4gKwln dWNfY2xpZW50c19kZXN0cm95KGd1Yyk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmggIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj LmgKPiBpbmRleCBhYTE1ODMxNjdiMGEuLjE1ZWFkZjI3YjdhZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCj4gQEAgLTM5LDYgKzM5LDEzIEBACj4gICAqIHBvb2wgYW5kIGRvb3JiZWxs cy4gaW50ZWxfZ3VjIG93bnMgYSBpOTE1X2d1Y19jbGllbnQgdG8gcmVwbGFjZSB0aGUgIAo+IGxl Z2FjeQo+ICAgKiBFeGVjTGlzdCBzdWJtaXNzaW9uLgo+ICAgKi8KPiArCj4gKyNkZWZpbmUgSTkx NV9HVUNfTlVNX0NMSUVOVFMgMgo+ICtlbnVtIGk5MTVfZ3VjX2NsaWVudF9pZCB7Cj4gKwlTVUJN SVQgPSAwLAo+ICsJUFJFRU1QVAo+ICt9Owo+ICsKPiAgc3RydWN0IGludGVsX2d1YyB7Cj4gIAlz dHJ1Y3QgaW50ZWxfdWNfZncgZnc7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyBsb2c7Cj4gQEAg LTU3LDcgKzY0LDcgQEAgc3RydWN0IGludGVsX2d1YyB7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnNo YXJlZF9kYXRhOwo+ICAJdm9pZCAqc2hhcmVkX2RhdGFfdmFkZHI7Cj4gLQlzdHJ1Y3QgaTkxNV9n dWNfY2xpZW50ICpleGVjYnVmX2NsaWVudDsKPiArCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNs aWVudFtJOTE1X0dVQ19OVU1fQ0xJRU5UU107Cj4gCURFQ0xBUkVfQklUTUFQKGRvb3JiZWxsX2Jp dG1hcCwgR1VDX05VTV9ET09SQkVMTFMpOwo+ICAJLyogQ3ljbGljIGNvdW50ZXIgbW9kIHBhZ2Vz aXplCSovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5j ICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggMjBlM2M2 NWMwOTk5Li4zZDkxZDhhMjhkOWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu Ywo+IEBAIC0xNzk1LDcgKzE3OTUsNyBAQCBib29sIGludGVsX2hhc19ncHVfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgIAo+ICpkZXZfcHJpdikKPiAgYm9vbCBpbnRlbF9oYXNfcmVzZXRf ZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJcmV0dXJu IChkZXZfcHJpdi0+aW5mby5oYXNfcmVzZXRfZW5naW5lICYmCj4gLQkJIWRldl9wcml2LT5ndWMu ZXhlY2J1Zl9jbGllbnQgJiYKPiArCQkhZGV2X3ByaXYtPmd1Yy5jbGllbnRbU1VCTUlUXSAmJgo+ ICAJCWk5MTVfbW9kcGFyYW1zLnJlc2V0ID49IDIpOwo+ICB9Cl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=