From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH 1/3] drm/i915/guc: Add non blocking CTB send function Date: Mon, 25 Nov 2019 14:20:39 +0100 Message-ID: References: <20191120235604.29047-1-John.C.Harrison@Intel.com> <20191120235604.29047-2-John.C.Harrison@Intel.com> <20191122001325.GA92577@sdutt> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5952899A5 for ; Mon, 25 Nov 2019 13:20:42 +0000 (UTC) In-Reply-To: <20191122001325.GA92577@sdutt> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matthew Brost Cc: Intel-GFX@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMiBOb3YgMjAxOSAwMToxMzoyNSArMDEwMCwgTWF0dGhldyBCcm9zdCAgCjxtYXR0 aGV3LmJyb3N0QGludGVsLmNvbT4gd3JvdGU6Cgo+IE9uIFRodSwgTm92IDIxLCAyMDE5IGF0IDEy OjQzOjI2UE0gKzAxMDAsIE1pY2hhbCBXYWpkZWN6a28gd3JvdGU6Cj4+IE9uIFRodSwgMjEgTm92 IDIwMTkgMDA6NTY6MDIgKzAxMDAsIDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPiB3cm90ZToK Pj4KPj4+IEZyb206IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+Pj4K Pj4+IEFkZCBub24gYmxvY2tpbmcgQ1RCIHNlbmQgZnVjdGlvbiwgaW50ZWxfZ3VjX3NlbmRfbmIu IEluIG9yZGVyIHRvCj4+PiBzdXBwb3J0IGEgbm9uIGJsb2NraW5nIENUQiBzZW5kIGZ1Y3Rpb24g YSBzcGluIGxvY2sgaXMgbmVlZGVkIHRvCj4+Cj4+IDJ4IHR5cG9zCj4+Cj4+PiBwcm90ZWN0IHRo ZSBDVEIgZGVzY3JpcHRvcnMgZmllbGRzLiBBbHNvIHRoZSBub24gYmxvY2tpbmcgY2FsbCBtdXN0 IG5vdAo+Pj4gdXBkYXRlIHRoZSBmZW5jZSB2YWx1ZSBhcyB0aGlzIHZhbHVlIGlzIG93bmVkIGJ5 IHRoZSBibG9ja2luZyBjYWxsCj4+PiAoaW50ZWxfZ3VjX3NlbmQpLgo+Pgo+PiB5b3UgcHJvYmFi bHkgbWVhbiAiaW50ZWxfZ3VjX3NlbmRfY3QiLCBhcyBpbnRlbF9ndWNfc2VuZCBpcyBqdXN0IGEg IAo+PiB3cmFwcGVyCj4+IGFyb3VuZCBndWMtPnNlbmQKPj4KPgo+IEFoLCB5ZXMuCj4KPj4+Cj4+ PiBUaGUgYmxvY2tpbmcgQ1RCIG5vdyBtdXN0IGhhdmUgYSBmbG93IGNvbnRyb2wgbWVjaGFuaXNt IHRvIGVuc3VyZSB0aGUKPj4+IGJ1ZmZlciBpc24ndCBvdmVycnVuLiBBIGxhenkgc3BpbiB3YWl0 IGlzIHVzZWQgYXMgd2UgYmVsaWV2ZSB0aGUgZmxvdwo+Pj4gY29udHJvbCBjb25kaXRpb24gc2hv dWxkIGJlIHJhcmUgd2l0aCBwcm9wZXJseSBzaXplZCBidWZmZXIuIEEgcmV0cnkKPj4+IGNvdW50 ZXIgaXMgYWxzbyBpbXBsZW1lbnRlZCB3aGljaCBmYWlscyBIMkcgQ1RCcyBvbmNlIGEgbGltaXQg aXMKPj4+IHJlYWNoZWQgdG8gcHJldmVudCBkZWFkbG9jay4KPj4+Cj4+PiBUaGUgZnVuY3Rpb24s IGludGVsX2d1Y19zZW5kX25iLCBpcyBleHBvcnRlZCBpbiB0aGlzIHBhdGNoIGJ1dCB1bnVzZWQu Cj4+PiBTZXZlcmFsIHBhdGNoZXMgbGF0ZXIgaW4gdGhlIHNlcmllcyBtYWtlIHVzZSBvZiB0aGlz IGZ1bmN0aW9uLgo+Pgo+PiBJdCdzIGxpa2VseSBpbiB5ZXQgYW5vdGhlciBzZXJpZXMKPj4KPgo+ IFllcywgaXQgaXMuCj4KPj4+Cj4+PiBDYzogSm9obiBIYXJyaXNvbiA8am9obi5jLmhhcnJpc29u QGludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJv c3RAaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWMuaCAgICB8ICAyICsKPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5jIHwgOTcgKysrKysrKysrKysrKysrKysrKy0tLS0KPj4+IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oIHwgMTAgKystCj4+PiAzIGZpbGVzIGNoYW5nZWQsIDkx IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgCj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCj4+PiBpbmRleCBlNjQwMDIwNGEyYmQuLjc3YzVhZjkx OWFjZSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Yy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+Pj4g QEAgLTk0LDYgKzk0LDggQEAgaW50ZWxfZ3VjX3NlbmRfYW5kX3JlY2VpdmUoc3RydWN0IGludGVs X2d1YyAqZ3VjLCAgCj4+PiBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKPj4+IAlyZXR1cm4g Z3VjLT5zZW5kKGd1YywgYWN0aW9uLCBsZW4sIHJlc3BvbnNlX2J1ZiwgcmVzcG9uc2VfYnVmX3Np emUpOwo+Pj4gfQo+Pj4gK2ludCBpbnRlbF9ndWNfc2VuZF9uYihzdHJ1Y3QgaW50ZWxfZ3VjX2N0 ICpjdCwgY29uc3QgdTMyICphY3Rpb24sIHUzMiAgCj4+PiBsZW4pOwo+Pj4gKwo+Pgo+PiBIbW0s IHRoaXMgbWlzbWF0Y2ggb2YgZ3VjL2N0IHBhcmFtZXRlciBicmVha3MgdGhlIG91ciBsYXllcmlu Zy4KPj4gQnV0IHdlIGNhbiBrZWVwIHRoaXMgbGF5ZXJpbmcgaW50YWN0IGJ5IGludHJvZHVjaW5n IHNvbWUgZmxhZ3MgdG8KPj4gdGhlIGV4aXN0aW5nIGd1Y19zZW5kKCkgZnVuY3Rpb24uIFRoZXNl IGZsYWdzIGNvdWxkIGJlIHBhc3NlZCBhcwo+PiBoaWdoIGJpdHMgaW4gYWN0aW9uWzBdLCBsaWtl IHRoaXM6Cj4KPiBUaGlzIHNlZW1zIHJlYXNvbmFibGUuCj4KPj4KPj4gI2RlZmluZSBHVUNfQUNU SU9OX0ZMQUdfRE9OVF9XQUlUIDB4ODAwMDAwMDAKPj4KPj4gaW50IGludGVsX2d1Y19hdXRoX2h1 YyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiByc2Ffb2Zmc2V0KQo+PiB7Cj4+IAl1MzIgYWN0 aW9uW10gPSB7Cj4+IAkJSU5URUxfR1VDX0FDVElPTl9BVVRIRU5USUNBVEVfSFVDIHwgR1VDX0FD VElPTl9GTEFHX0RPTlRfV0FJVCwKPj4gCQlyc2Ffb2Zmc2V0Cj4+IAl9Owo+Pgo+PiAJcmV0dXJu IGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwo+PiB9Cj4+ Cj4+IHRoZW4gYWN0dWFsIGJhY2stZW5kIG9mIGd1Yy0+c2VuZCBjYW4gdGFrZSBwcm9wZXIgc3Rl cHMgYmFzZWQgb24gdGhpcyAgCj4+IGZsYWc6Cj4+Cj4+IEBAIGludCBpbnRlbF9ndWNfc2VuZF9t bWlvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sICAKPj4gdTMyIGxl biwKPj4gICAgICAgIEdFTV9CVUdfT04oIWxlbik7Cj4+ICAgICAgICBHRU1fQlVHX09OKGxlbiA+ IGd1Yy0+c2VuZF9yZWdzLmNvdW50KTsKPj4KPj4gKyAgICAgICBpZiAoKmFjdGlvbiAmIEdVQ19B Q1RJT05fRkxBR19ET05UX1dBSVQpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK Pj4gKyAgICAgICAqYWN0aW9uICY9IH5HVUNfQUNUSU9OX0ZMQUdfRE9OVF9XQUlUOwo+PiArCj4+ ICAgICAgICAvKiBXZSBleHBlY3Qgb25seSBhY3Rpb24gY29kZSAqLwo+PiAgICAgICAgR0VNX0JV R19PTigqYWN0aW9uICYgfklOVEVMX0dVQ19NU0dfQ09ERV9NQVNLKTsKPj4KPj4gQEAgQEAgaW50 IGludGVsX2d1Y19zZW5kX2N0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rp b24sICAKPj4gdTMyIGxlbiwKPj4gICAgICAgIHUzMiBzdGF0dXMgPSB+MDsgLyogdW5kZWZpbmVk ICovCj4+ICAgICAgICBpbnQgcmV0Owo+Pgo+PiArICAgICAgIGlmICgqYWN0aW9uICYgR1VDX0FD VElPTl9GTEFHX0RPTlRfV0FJVCkgewo+PiArICAgICAgICAgICAgICAgR0VNX0JVR19PTihyZXNw b25zZV9idWYpOwo+PiArICAgICAgICAgICAgICAgR0VNX0JVR19PTihyZXNwb25zZV9idWZfc2l6 ZSk7Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gY3RjaF9zZW5kX25iKGN0LCBjdGNoLCBhY3Rp b24sIGxlbik7Cj4+ICsgICAgICAgfQo+PiArCj4+ICAgICAgICBtdXRleF9sb2NrKCZndWMtPnNl bmRfbXV0ZXgpOwo+Pgo+PiAgICAgICAgcmV0ID0gY3RjaF9zZW5kKGN0LCBjdGNoLCBhY3Rpb24s IGxlbiwgcmVzcG9uc2VfYnVmLCAgCj4+IHJlc3BvbnNlX2J1Zl9zaXplLAo+Pgo+Pgo+Pj4gc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2d1Y19ub3RpZnkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ Pj4gewo+Pj4gCWd1Yy0+bm90aWZ5KGd1Yyk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfY3QuYwo+Pj4gaW5kZXggYjQ5MTE1NTE3NTEwLi5lNTBkOTY4YjE1 ZDUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf Y3QuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMK Pj4+IEBAIC0zLDYgKzMsOCBAQAo+Pj4gICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOSBJbnRlbCBD b3Jwb3JhdGlvbgo+Pj4gICovCj4+PiArI2luY2x1ZGUgPGxpbnV4L2NpcmNfYnVmLmg+Cj4+PiAr Cj4+PiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4+ICNpbmNsdWRlICJpbnRlbF9ndWNfY3QuaCIK Pj4+IEBAIC0xMiw2ICsxNCw4IEBACj4+PiAjZGVmaW5lIENUX0RFQlVHX0RSSVZFUiguLi4pCWRv IHsgfSB3aGlsZSAoMCkKPj4+ICNlbmRpZgo+Pj4gKyNkZWZpbmUgTUFYX1JFVFJZCQkweDEwMDAw MDAKPj4+ICsKPj4+IHN0cnVjdCBjdF9yZXF1ZXN0IHsKPj4+IAlzdHJ1Y3QgbGlzdF9oZWFkIGxp bms7Cj4+PiAJdTMyIGZlbmNlOwo+Pj4gQEAgLTQwLDcgKzQ0LDggQEAgdm9pZCBpbnRlbF9ndWNf Y3RfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKPj4+IAkvKiB3ZSdyZSB1c2lu ZyBzdGF0aWMgY2hhbm5lbCBvd25lcnMgKi8KPj4+IAljdC0+aG9zdF9jaGFubmVsLm93bmVyID0g Q1RCX09XTkVSX0hPU1Q7Cj4+PiAtCXNwaW5fbG9ja19pbml0KCZjdC0+bG9jayk7Cj4+PiArCXNw aW5fbG9ja19pbml0KCZjdC0+cmVxdWVzdF9sb2NrKTsKPj4+ICsJc3Bpbl9sb2NrX2luaXQoJmN0 LT5zZW5kX2xvY2spOwo+Pj4gCUlOSVRfTElTVF9IRUFEKCZjdC0+cGVuZGluZ19yZXF1ZXN0cyk7 Cj4+PiAJSU5JVF9MSVNUX0hFQUQoJmN0LT5pbmNvbWluZ19yZXF1ZXN0cyk7Cj4+PiAJSU5JVF9X T1JLKCZjdC0+d29ya2VyLCBjdF9pbmNvbWluZ19yZXF1ZXN0X3dvcmtlcl9mdW5jKTsKPj4+IEBA IC0yOTEsNyArMjk2LDggQEAgc3RhdGljIHUzMiBjdGNoX2dldF9uZXh0X2ZlbmNlKHN0cnVjdCAg Cj4+PiBpbnRlbF9ndWNfY3RfY2hhbm5lbCAqY3RjaCkKPj4+IHN0YXRpYyBpbnQgY3RiX3dyaXRl KHN0cnVjdCBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIsCj4+PiAJCSAgICAgY29uc3QgdTMyICph Y3Rpb24sCj4+PiAJCSAgICAgdTMyIGxlbiAvKiBpbiBkd29yZHMgKi8sCj4+PiAtCQkgICAgIHUz MiBmZW5jZSwKPj4+ICsJCSAgICAgdTMyIGZlbmNlX3ZhbHVlLAo+Pj4gKwkJICAgICBib29sIGVu YWJsZV9mZW5jZSwKPj4KPj4gbWF5YmUgd2UgY2FuIGp1c3QgZ3VhcmFudGVlIHRoYXQgZmVuY2U9 MCB3aWxsIG5ldmVyIGJlIHVzZWQgYXMgYSB2YWxpZAo+PiBmZW5jZSBpZCwgdGhlbiB0aGlzIGZs YWcgY291bGQgYmUgcmVwbGFjZWQgd2l0aCAoZmVuY2UgIT0gMCkgY2hlY2suCj4+Cj4KPiBZZXMs IGFnYWluIHNlZW1zIHJlYXNvbmFibGUuIEluaXRpYWxpemUgbmV4dF9mZW5jZSA9IDEsIHRoZW4g aW5jcmVtZW50ICAKPiBieSAyIGVhY2gKPiB0aW1lIGFuZCB0aGlzIHdvcmtzLgoKQXMgd2UgbmVl ZCBmZW5jZSBvbmx5IGZvciBsb3cgdm9sdW1lIG9mIGJsb2NraW5nIG1lc3NhZ2VzIHRoYXQgcmVx dWlyZXMKcmVzcG9uc2UgSSdtIG5vdCBzdXJlIHRoYXQgd2UgbmVlZCB0byBzdXBlciBvcHRpbWl6 ZSBnZXRfZmVuY2UgdG8gdXNlICsyCmFsbCB0aGUgdGltZSAtIG1heWJlIGp1c3QgY2hlY2sgZm9y IHplcm8gd3JhcCA/Cgo+Cj4+PiAJCSAgICAgYm9vbCB3YW50X3Jlc3BvbnNlKQo+Pj4gewo+Pj4g CXN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MgKmRlc2MgPSBjdGItPmRlc2M7Cj4+PiBAQCAtMzI4 LDE4ICszMzQsMTggQEAgc3RhdGljIGludCBjdGJfd3JpdGUoc3RydWN0IGludGVsX2d1Y19jdF9i dWZmZXIgIAo+Pj4gKmN0YiwKPj4+IAkgKiBEVzIrOiBhY3Rpb24gZGF0YQo+Pj4gCSAqLwo+Pj4g CWhlYWRlciA9IChsZW4gPDwgR1VDX0NUX01TR19MRU5fU0hJRlQpIHwKPj4+IC0JCSAoR1VDX0NU X01TR19XUklURV9GRU5DRV9UT19ERVNDKSB8Cj4+PiArCQkgKGVuYWJsZV9mZW5jZSA/IEdVQ19D VF9NU0dfV1JJVEVfRkVOQ0VfVE9fREVTQyA6IDApIHwKPj4KPj4gSG1tLCBldmVuIGlmIHdlIGFz ayBmdyB0byBkbyBub3Qgd3JpdGUgYmFjayBmZW5jZSB0byB0aGUgZGVzY3JpcHRvciwKPj4gSUlS QyBjdXJyZW50IGZpcm13YXJlIHdpbGwgdW5jb25kaXRpb25hbGx5IHdyaXRlIGJhY2sgcmV0dXJu IHN0YXR1cwo+PiBvZiB0aGlzIG5vbi1ibG9ja2luZyBjYWxsLCBwb3NzaWJseSBvdmVyd3JpdGlu ZyBzdGF0dXMgb2YgdGhlIGJsb2NrZWQKPj4gY2FsbC4KPj4KPgo+IFllcywga25vd24gcHJvYmxl bSB3aXRoIHRoZSBpbnRlcmZhY2UgdGhhdCBuZWVkcyB0byBiZSBmaXhlZC4KPgo+Pj4gCQkgKHdh bnRfcmVzcG9uc2UgPyBHVUNfQ1RfTVNHX1NFTkRfU1RBVFVTIDogMCkgfAo+Pgo+PiBidHcsIGlm IHdlIHN3aXRjaCBhbGwgcmVxdWVzdHMgdG8gZXhwZWN0IHJlcGx5IHNlbmQgYmFjayBvdmVyIENU QiwKPj4gdGhlbiB3ZSBjYW4gcG9zc2libHkgZHJvcCB0aGUgc2VuZF9tdXRleCBpbiBDVEIgcGF0 aHMsIGFuZCBibG9jawo+PiBvbmx5IHdoZW4gdGhlcmUgaXMgbm8gRE9OVF9XQUlUIGZsYWcgYW5k IHdlIGhhdmUgdG8gd2FpdCBmb3IgcmVzcG9uc2UuCj4+Cj4KPiBSYXRoZXIganVzdCB3YWl0IGZv ciB0aGUgR3VDIHRvIGZpeCB0aGlzLgoKQnV0IGZpeGluZyB3aWxsIHByb2JhYmx5IHJlcXVpcmUg c29tZSBleHRyYSBmbGFncywgd2hpbGUgc3dpdGNoaW5nCnRvIHJlcGxpZXMgb3ZlciBDVEIgc2hv dWxkIHdvcmsgdG9kYXkgb24gZXhpc3RpbmcgZncuCgo+Cj4+PiAJCSAoYWN0aW9uWzBdIDw8IEdV Q19DVF9NU0dfQUNUSU9OX1NISUZUKTsKPj4+IAlDVF9ERUJVR19EUklWRVIoIkNUOiB3cml0aW5n ICUqcGggJSpwaCAlKnBoXG4iLAo+Pj4gLQkJCTQsICZoZWFkZXIsIDQsICZmZW5jZSwKPj4+ICsJ CQk0LCAmaGVhZGVyLCA0LCAmZmVuY2VfdmFsdWUsCj4+PiAJCQk0ICogKGxlbiAtIDEpLCAmYWN0 aW9uWzFdKTsKPj4+IAljbWRzW3RhaWxdID0gaGVhZGVyOwo+Pj4gCXRhaWwgPSAodGFpbCArIDEp ICUgc2l6ZTsKPj4+IC0JY21kc1t0YWlsXSA9IGZlbmNlOwo+Pj4gKwljbWRzW3RhaWxdID0gZmVu Y2VfdmFsdWU7Cj4+PiAJdGFpbCA9ICh0YWlsICsgMSkgJSBzaXplOwo+Pj4gCWZvciAoaSA9IDE7 IGkgPCBsZW47IGkrKykgewo+Pj4gQEAgLTQ0MCw2ICs0NDYsNDcgQEAgc3RhdGljIGludCB3YWl0 X2Zvcl9jdF9yZXF1ZXN0X3VwZGF0ZShzdHJ1Y3QgIAo+Pj4gY3RfcmVxdWVzdCAqcmVxLCB1MzIg KnN0YXR1cykKPj4+IAlyZXR1cm4gZXJyOwo+Pj4gfQo+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBj dGJfaGFzX3Jvb20oc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyAqZGVzYywgdTMyICAKPj4+IGxl bikKPj4+ICt7Cj4+PiArCXUzMiBoZWFkID0gUkVBRF9PTkNFKGRlc2MtPmhlYWQpOwo+Pj4gKwl1 MzIgc3BhY2U7Cj4+PiArCj4+PiArCXNwYWNlID0gQ0lSQ19TUEFDRShkZXNjLT50YWlsLCBoZWFk LCBkZXNjLT5zaXplKTsKPj4+ICsKPj4+ICsJcmV0dXJuIHNwYWNlID49IGxlbjsKPj4+ICt9Cj4+ PiArCj4+PiAraW50IGludGVsX2d1Y19zZW5kX25iKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAo+ Pj4gKwkJICAgICAgY29uc3QgdTMyICphY3Rpb24sCj4+PiArCQkgICAgICB1MzIgbGVuKQo+Pj4g K3sKPj4+ICsJc3RydWN0IGludGVsX2d1Y19jdF9jaGFubmVsICpjdGNoID0gJmN0LT5ob3N0X2No YW5uZWw7Cj4+PiArCXN0cnVjdCBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIgPSAmY3RjaC0+Y3Ri c1tDVEJfU0VORF07Cj4+PiArCXN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MgKmRlc2MgPSBjdGIt PmRlc2M7Cj4+PiArCWludCBlcnI7Cj4+PiArCj4+PiArCUdFTV9CVUdfT04oIWN0Y2gtPmVuYWJs ZWQpOwo+Pj4gKwlHRU1fQlVHX09OKCFsZW4pOwo+Pj4gKwlHRU1fQlVHX09OKGxlbiAmIH5HVUNf Q1RfTVNHX0xFTl9NQVNLKTsKPj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3QtPnNlbmRfbG9j ayk7Cj4+Cj4+IGhtbSwgZG9lcyBpdCBtZWFuIHRoYXQgbm93IGl0J3MgY2FsbGVyIHJlc3BvbnNp YmlsaXR5IHRvIHNwaW5sb2NrCj4+IG9uIENUIHByaXZhdGUgbG9jayA/IFRoYXQgaXMgbm90IGhv dyBvdGhlciBndWNfc2VuZCgpIGZ1bmN0aW9ucyB3b3JrLgo+Pgo+Cj4gWWVzLCB0aGF0IGhvdyBJ IHdvdWxkIGxpa2UgdGhpcyB3b3JrIGFzIEkgZmVlbCBsaWtlIGl0IGdpdmVzIG1vcmUgIAo+IGZs ZXhhYmlsaXR5IHRvCj4gdGhlIGNhbGxlciBvbiB0aGUgLUVCVVNZIGNhc2UuIFRoZSBjYWxsZXIg Y2FuIGNhbGwgaW50ZWxfZ3VjX3NlbmRfbmIgIAo+IGFnYWluIHdoaWxlCj4gc3RpbGwgaG9sZGlu ZyB0aGUgbG9jayBvciBpdCByZWxlYXNlIGxvY2sgdGhlIGFuZCB1c2UgYSBkaWZmZXJlbnQgZm9y bSAgCj4gb2YgZmxvdwo+IGNvbnRyb2wuIFBlcmhhcHMgbG9ja2luZyAvIHVubG9ja2luZyBzaG91 bGQgYmUgZXhwb3NlZCB2aWEgc3RhdGljICAKPiBpbmxpbmVzIHJhdGhlcgo+IHRoYW4gdGhlIGNh bGxlciBkaXJlY3RseSBtYW5pcHVsYXRpbmcgdGhlIGxvY2s/CgpIbW0sIEknbSBub3Qgc3VyZSB0 aGF0IEkgbGlrZSBzdWNoIGZsZXhpYmlsaXR5IHRoYXQgb25lIHNldCBvZiBjYWxsZXJzIGlzCmFs bG93ZWQgdG8gZ3JhYiBhbmQgaG9sZCBDVEIgaW50ZXJuYWwgc2VuZF9sb2NrLCB3aGlsZSBvdGhl ciBjYWxsZXIgZG9uJ3QKZXZlbiBrbm93IHRoYXQgc3VjaCBsb2NrIGV4aXN0cywgaXMgYSBnb29k IGRpcmVjdGlvbi4KCldoeSBkbyB5b3UgbmVlZCB0byBzeW5jIHlvdXIgY2FsbGVycyBvbiBDVEIg aW50ZXJuYWwgbG9jayA/CkFyZSB5b3UgYWZyYWlkIHRoYXQgb3RoZXIgY2xpZW50cyBtaWdodCBz dGVhbCBuZXh0IGZyZWUgc2xvdCBpbiBDVEIgPwpXaG8gYXJlIHRoZXNlIG90aGVyIGNsaWVudHMg PyBtYXliZSB5b3UgY2FuIGxvY2sgb24gc29tZXRoaW5nIGVsc2UgPwoKPgo+Pj4gKwo+Pj4gKwlp ZiAodW5saWtlbHkoIWN0Yl9oYXNfcm9vbShkZXNjLCAobGVuICsgMSkgKiA0KSkpIHsKPj4+ICsJ CWN0LT5yZXRyeSsrOwo+Pj4gKwkJaWYgKGN0LT5yZXRyeSA+PSBNQVhfUkVUUlkpCj4+PiArCQkJ cmV0dXJuIC1FREVBRExLOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJCXJldHVybiAtRUJVU1k7Cj4+PiAr CX0KPj4+ICsKPj4+ICsJY3QtPnJldHJ5ID0gMDsKPj4+ICsJZXJyID0gY3RiX3dyaXRlKGN0Yiwg YWN0aW9uLCBsZW4sIDAsIGZhbHNlLCBmYWxzZSk7Cj4+PiArCWlmICh1bmxpa2VseShlcnIpKQo+ Pj4gKwkJcmV0dXJuIGVycjsKPj4+ICsKPj4+ICsJaW50ZWxfZ3VjX25vdGlmeShjdF90b19ndWMo Y3QpKTsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gc3RhdGljIGludCBjdGNoX3Nl bmQoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsCj4+PiAJCSAgICAgc3RydWN0IGludGVsX2d1Y19j dF9jaGFubmVsICpjdGNoLAo+Pj4gCQkgICAgIGNvbnN0IHUzMiAqYWN0aW9uLAo+Pj4gQEAgLTQ2 MCwxNyArNTA3LDM1IEBAIHN0YXRpYyBpbnQgY3RjaF9zZW5kKHN0cnVjdCBpbnRlbF9ndWNfY3Qg KmN0LAo+Pj4gCUdFTV9CVUdfT04obGVuICYgfkdVQ19DVF9NU0dfTEVOX01BU0spOwo+Pj4gCUdF TV9CVUdfT04oIXJlc3BvbnNlX2J1ZiAmJiByZXNwb25zZV9idWZfc2l6ZSk7Cj4+PiArCS8qCj4+ PiArCSAqIFdlIHVzZSBhIGxhenkgc3BpbiB3YWl0IGxvb3AgaGVyZSBhcyB3ZSBiZWxpZXZlIHRo YXQgaWYgdGhlIENUCj4+PiArCSAqIGJ1ZmZlcnMgYXJlIHNpemVkIGNvcnJlY3RseSB0aGUgZmxv dyBjb250cm9sIGNvbmRpdGlvbiBzaG91bGQgYmUKPj4+ICsJICogcmFyZS4KPj4+ICsJICovCj4+ PiArcmV0cnk6Cj4+PiArCXNwaW5fbG9ja19pcnFzYXZlKCZjdC0+c2VuZF9sb2NrLCBmbGFncyk7 Cj4+PiArCWlmICh1bmxpa2VseSghY3RiX2hhc19yb29tKGRlc2MsIChsZW4gKyAxKSAqIDQpKSkg ewo+Pj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnNlbmRfbG9jaywgZmxhZ3MpOwo+ Pj4gKwkJY3QtPnJldHJ5Kys7Cj4+PiArCQlpZiAoY3QtPnJldHJ5ID49IE1BWF9SRVRSWSkKPj4+ ICsJCQlyZXR1cm4gLUVERUFETEs7Cj4+Cj4+IEknbSBub3Qgc3VyZSB3aGF0J3MgYmV0dGVyOiBo YXZlIHNlY3JldCBkZWFkbG9jayBoYXJkIHRvIHJlcHJvZHVjZSwKPj4gb3IgZGVhZGxvY2tzIGVh c2llciB0byBjYXRjaCB0aGF0IGhlbHBzIGltcHJvdmUgdG8gYmUgZGVhZGxvY2stY2xlYW4KPj4K Pgo+IFRoaXMgaXMgY292ZXJpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlIGhhcyBkaWVkIGFuZCB0byBh dm9pZCBkZWFkbG9jay4gIAo+IEV2ZW50dWFsbHkKPiB3ZSB3aWxsIGhhdmUgc29tZSBHdUMgaGVh bHRoIGNoZWNrIGNvZGUgdGhhdCB3aWxsIHRyaWdnZXIgYSBmdWxsIEdQVSAgCj4gcmVzZXQgaWYK PiB0aGUgR3VDIGhhcyBkaWVkLiBXZSBuZWVkIGEgd2F5IGZvciBjb2RlIHNwaW5uaW5nIG9uIHRo ZSBDVEJzIHRvIGV4aXQuCj4KPiBJJ3ZlIGFscmVhZHkgdHdlYWtlZCB0aGlzIGNvZGUgbG9jYWxs eSBhIGJpdCB0byB1c2UgYW4gYXRvbWljIHRvbyB3aXRoICAKPiB0aGUgaWRlYQo+IGJlaW5nIHRo ZSBHdUMgaGVhbHRoIGNoZWNrIGNvZGUgY2FuIHNldCB0aGlzIHZhbHVlIHRvIGhhdmUgYWxsIGNv ZGUgIAo+IHNwaW5uaW5nIG9uCj4gQ1RCcyBpbW1lZGlhdGVseSByZXR1cm4gLS1FREVBRExLIHdo ZW4gdGhlIEd1QyBoYXMgZGllZC4KCldpbGwgd2FpdCB0aGVuIHRvIHNlZSBuZXh0IHJldmlzaW9u LgoKPgo+Pj4gKwkJY3B1X3JlbGF4KCk7Cj4+PiArCQlnb3RvIHJldHJ5Owo+Pj4gKwl9Cj4+PiAr Cj4+PiArCWN0LT5yZXRyeSA9IDA7Cj4+PiAJZmVuY2UgPSBjdGNoX2dldF9uZXh0X2ZlbmNlKGN0 Y2gpOwo+Pj4gCXJlcXVlc3QuZmVuY2UgPSBmZW5jZTsKPj4+IAlyZXF1ZXN0LnN0YXR1cyA9IDA7 Cj4+PiAJcmVxdWVzdC5yZXNwb25zZV9sZW4gPSByZXNwb25zZV9idWZfc2l6ZTsKPj4+IAlyZXF1 ZXN0LnJlc3BvbnNlX2J1ZiA9IHJlc3BvbnNlX2J1ZjsKPj4+IC0Jc3Bpbl9sb2NrX2lycXNhdmUo JmN0LT5sb2NrLCBmbGFncyk7Cj4+PiArCXNwaW5fbG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+ PiAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC5saW5rLCAmY3QtPnBlbmRpbmdfcmVxdWVzdHMpOwo+ Pj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjdC0+bG9jaywgZmxhZ3MpOwo+Pj4gKwlzcGlu X3VubG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+PiAtCWVyciA9IGN0Yl93cml0ZShjdGIsIGFj dGlvbiwgbGVuLCBmZW5jZSwgISFyZXNwb25zZV9idWYpOwo+Pj4gKwllcnIgPSBjdGJfd3JpdGUo Y3RiLCBhY3Rpb24sIGxlbiwgZmVuY2UsIHRydWUsICEhcmVzcG9uc2VfYnVmKTsKPj4+ICsJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnNlbmRfbG9jaywgZmxhZ3MpOwo+Pj4gCWlmICh1bmxp a2VseShlcnIpKQo+Pj4gCQlnb3RvIHVubGluazsKPj4+IEBAIC01MDEsOSArNTY2LDkgQEAgc3Rh dGljIGludCBjdGNoX3NlbmQoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsCj4+PiAJfQo+Pj4gdW5s aW5rOgo+Pj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmY3QtPmxvY2ssIGZsYWdzKTsKPj4+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKPj4+IAlsaXN0X2RlbCgm cmVxdWVzdC5saW5rKTsKPj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPmxvY2ssIGZs YWdzKTsKPj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxh Z3MpOwo+Pj4gCXJldHVybiBlcnI7Cj4+PiB9Cj4+PiBAQCAtNjUzLDcgKzcxOCw3IEBAIHN0YXRp YyBpbnQgY3RfaGFuZGxlX3Jlc3BvbnNlKHN0cnVjdCBpbnRlbF9ndWNfY3QgIAo+Pj4gKmN0LCBj b25zdCB1MzIgKm1zZykKPj4+IAlDVF9ERUJVR19EUklWRVIoIkNUOiByZXNwb25zZSBmZW5jZSAl dSBzdGF0dXMgJSN4XG4iLCBmZW5jZSwgc3RhdHVzKTsKPj4+IC0Jc3Bpbl9sb2NrKCZjdC0+bG9j ayk7Cj4+PiArCXNwaW5fbG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+PiAJbGlzdF9mb3JfZWFj aF9lbnRyeShyZXEsICZjdC0+cGVuZGluZ19yZXF1ZXN0cywgbGluaykgewo+Pj4gCQlpZiAodW5s aWtlbHkoZmVuY2UgIT0gcmVxLT5mZW5jZSkpIHsKPj4+IAkJCUNUX0RFQlVHX0RSSVZFUigiQ1Q6 IHJlcXVlc3QgJXUgYXdhaXRzIHJlc3BvbnNlXG4iLAo+Pj4gQEAgLTY3Miw3ICs3MzcsNyBAQCBz dGF0aWMgaW50IGN0X2hhbmRsZV9yZXNwb25zZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICAKPj4+ICpj dCwgY29uc3QgdTMyICptc2cpCj4+PiAJCWZvdW5kID0gdHJ1ZTsKPj4+IAkJYnJlYWs7Cj4+PiAJ fQo+Pj4gLQlzcGluX3VubG9jaygmY3QtPmxvY2spOwo+Pj4gKwlzcGluX3VubG9jaygmY3QtPnJl cXVlc3RfbG9jayk7Cj4+PiAJaWYgKCFmb3VuZCkKPj4+IAkJRFJNX0VSUk9SKCJDVDogdW5zb2xp Y2l0ZWQgcmVzcG9uc2UgJSpwaFxuIiwgNCAqIG1zZ2xlbiwgbXNnKTsKPj4+IEBAIC03MTAsMTMg Kzc3NSwxMyBAQCBzdGF0aWMgYm9vbCBjdF9wcm9jZXNzX2luY29taW5nX3JlcXVlc3RzKHN0cnVj dCAgCj4+PiBpbnRlbF9ndWNfY3QgKmN0KQo+Pj4gCXUzMiAqcGF5bG9hZDsKPj4+IAlib29sIGRv bmU7Cj4+PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZjdC0+bG9jaywgZmxhZ3MpOwo+Pj4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxhZ3MpOwo+Pj4gCXJlcXVlc3QgPSBs aXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmN0LT5pbmNvbWluZ19yZXF1ZXN0cywKPj4+IAkJCQkJ ICAgc3RydWN0IGN0X2luY29taW5nX3JlcXVlc3QsIGxpbmspOwo+Pj4gCWlmIChyZXF1ZXN0KQo+ Pj4gCQlsaXN0X2RlbCgmcmVxdWVzdC0+bGluayk7Cj4+PiAJZG9uZSA9ICEhbGlzdF9lbXB0eSgm Y3QtPmluY29taW5nX3JlcXVlc3RzKTsKPj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3Qt PmxvY2ssIGZsYWdzKTsKPj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVlc3Rf bG9jaywgZmxhZ3MpOwo+Pj4gCWlmICghcmVxdWVzdCkKPj4+IAkJcmV0dXJuIHRydWU7Cj4+PiBA QCAtNzc3LDkgKzg0Miw5IEBAIHN0YXRpYyBpbnQgY3RfaGFuZGxlX3JlcXVlc3Qoc3RydWN0IGlu dGVsX2d1Y19jdCAgCj4+PiAqY3QsIGNvbnN0IHUzMiAqbXNnKQo+Pj4gCX0KPj4+IAltZW1jcHko cmVxdWVzdC0+bXNnLCBtc2csIDQgKiBtc2dsZW4pOwo+Pj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgm Y3QtPmxvY2ssIGZsYWdzKTsKPj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0X2xv Y2ssIGZsYWdzKTsKPj4+IAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmY3QtPmluY29t aW5nX3JlcXVlc3RzKTsKPj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPmxvY2ssIGZs YWdzKTsKPj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxh Z3MpOwo+Pj4gCXF1ZXVlX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsICZjdC0+d29ya2VyKTsKPj4+ IAlyZXR1cm4gMDsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfY3QuaCAgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5oCj4+PiBpbmRleCA3YzI0ZDgzZjVjMjQuLmJjNjcwYTc5NmJkOCAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAo+Pj4gQEAgLTYyLDggKzYy LDExIEBAIHN0cnVjdCBpbnRlbF9ndWNfY3Qgewo+Pj4gCXN0cnVjdCBpbnRlbF9ndWNfY3RfY2hh bm5lbCBob3N0X2NoYW5uZWw7Cj4+PiAJLyogb3RoZXIgY2hhbm5lbHMgYXJlIHRiZCAqLwo+Pj4g LQkvKiogQGxvY2s6IHByb3RlY3RzIHBlbmRpbmcgcmVxdWVzdHMgbGlzdCAqLwo+Pj4gLQlzcGlu bG9ja190IGxvY2s7Cj4+PiArCS8qKiBAcmVxdWVzdF9sb2NrOiBwcm90ZWN0cyBwZW5kaW5nIHJl cXVlc3RzIGxpc3QgKi8KPj4+ICsJc3BpbmxvY2tfdCByZXF1ZXN0X2xvY2s7Cj4+PiArCj4+PiAr CS8qKiBAc2VuZF9sb2NrOiBwcm90ZWN0cyBoMmcgY2hhbm5lbCAqLwo+Pj4gKwlzcGlubG9ja190 IHNlbmRfbG9jazsKPj4+IAkvKiogQHBlbmRpbmdfcmVxdWVzdHM6IGxpc3Qgb2YgcmVxdWVzdHMg d2FpdGluZyBmb3IgcmVzcG9uc2UgKi8KPj4+IAlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfcmVx dWVzdHM7Cj4+PiBAQCAtNzMsNiArNzYsOSBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2N0IHsKPj4+IAkv KiogQHdvcmtlcjogd29ya2VyIGZvciBoYW5kbGluZyBpbmNvbWluZyByZXF1ZXN0cyAqLwo+Pj4g CXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrZXI7Cj4+PiArCj4+PiArCS8qKiBAcmV0cnk6IHRoZSBu dW1iZXIgb2YgdGltZXMgYSBIMkcgQ1RCIGhhcyBiZWVuIHJldHJpZWQgKi8KPj4+ICsJdTMyIHJl dHJ5Owo+Pj4gfTsKPj4+IHZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0IGludGVs X2d1Y19jdCAqY3QpOwo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0767AC432C0 for ; Mon, 25 Nov 2019 13:20:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DA061207FD for ; Mon, 25 Nov 2019 13:20:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DA061207FD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 61543899A5; Mon, 25 Nov 2019 13:20:44 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5952899A5 for ; Mon, 25 Nov 2019 13:20:42 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Nov 2019 05:20:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,241,1571727600"; d="scan'208";a="408304934" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga005.fm.intel.com with ESMTP; 25 Nov 2019 05:20:41 -0800 Received: from mwajdecz-mobl1.ger.corp.intel.com (mwajdecz-mobl1.ger.corp.intel.com [172.28.174.50]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id xAPDKegr004089; Mon, 25 Nov 2019 13:20:40 GMT To: "Matthew Brost" References: <20191120235604.29047-1-John.C.Harrison@Intel.com> <20191120235604.29047-2-John.C.Harrison@Intel.com> <20191122001325.GA92577@sdutt> Date: Mon, 25 Nov 2019 14:20:39 +0100 MIME-Version: 1.0 From: "Michal Wajdeczko" Message-ID: In-Reply-To: <20191122001325.GA92577@sdutt> User-Agent: Opera Mail/1.0 (Win32) Subject: Re: [Intel-gfx] [PATCH 1/3] drm/i915/guc: Add non blocking CTB send function X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Intel-GFX@lists.freedesktop.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191125132039.8lLgOPC9Hu2sMApQynZiMJi39TpLkO26Fz32jS9A_YY@z> T24gRnJpLCAyMiBOb3YgMjAxOSAwMToxMzoyNSArMDEwMCwgTWF0dGhldyBCcm9zdCAgCjxtYXR0 aGV3LmJyb3N0QGludGVsLmNvbT4gd3JvdGU6Cgo+IE9uIFRodSwgTm92IDIxLCAyMDE5IGF0IDEy OjQzOjI2UE0gKzAxMDAsIE1pY2hhbCBXYWpkZWN6a28gd3JvdGU6Cj4+IE9uIFRodSwgMjEgTm92 IDIwMTkgMDA6NTY6MDIgKzAxMDAsIDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPiB3cm90ZToK Pj4KPj4+IEZyb206IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+Pj4K Pj4+IEFkZCBub24gYmxvY2tpbmcgQ1RCIHNlbmQgZnVjdGlvbiwgaW50ZWxfZ3VjX3NlbmRfbmIu IEluIG9yZGVyIHRvCj4+PiBzdXBwb3J0IGEgbm9uIGJsb2NraW5nIENUQiBzZW5kIGZ1Y3Rpb24g YSBzcGluIGxvY2sgaXMgbmVlZGVkIHRvCj4+Cj4+IDJ4IHR5cG9zCj4+Cj4+PiBwcm90ZWN0IHRo ZSBDVEIgZGVzY3JpcHRvcnMgZmllbGRzLiBBbHNvIHRoZSBub24gYmxvY2tpbmcgY2FsbCBtdXN0 IG5vdAo+Pj4gdXBkYXRlIHRoZSBmZW5jZSB2YWx1ZSBhcyB0aGlzIHZhbHVlIGlzIG93bmVkIGJ5 IHRoZSBibG9ja2luZyBjYWxsCj4+PiAoaW50ZWxfZ3VjX3NlbmQpLgo+Pgo+PiB5b3UgcHJvYmFi bHkgbWVhbiAiaW50ZWxfZ3VjX3NlbmRfY3QiLCBhcyBpbnRlbF9ndWNfc2VuZCBpcyBqdXN0IGEg IAo+PiB3cmFwcGVyCj4+IGFyb3VuZCBndWMtPnNlbmQKPj4KPgo+IEFoLCB5ZXMuCj4KPj4+Cj4+ PiBUaGUgYmxvY2tpbmcgQ1RCIG5vdyBtdXN0IGhhdmUgYSBmbG93IGNvbnRyb2wgbWVjaGFuaXNt IHRvIGVuc3VyZSB0aGUKPj4+IGJ1ZmZlciBpc24ndCBvdmVycnVuLiBBIGxhenkgc3BpbiB3YWl0 IGlzIHVzZWQgYXMgd2UgYmVsaWV2ZSB0aGUgZmxvdwo+Pj4gY29udHJvbCBjb25kaXRpb24gc2hv dWxkIGJlIHJhcmUgd2l0aCBwcm9wZXJseSBzaXplZCBidWZmZXIuIEEgcmV0cnkKPj4+IGNvdW50 ZXIgaXMgYWxzbyBpbXBsZW1lbnRlZCB3aGljaCBmYWlscyBIMkcgQ1RCcyBvbmNlIGEgbGltaXQg aXMKPj4+IHJlYWNoZWQgdG8gcHJldmVudCBkZWFkbG9jay4KPj4+Cj4+PiBUaGUgZnVuY3Rpb24s IGludGVsX2d1Y19zZW5kX25iLCBpcyBleHBvcnRlZCBpbiB0aGlzIHBhdGNoIGJ1dCB1bnVzZWQu Cj4+PiBTZXZlcmFsIHBhdGNoZXMgbGF0ZXIgaW4gdGhlIHNlcmllcyBtYWtlIHVzZSBvZiB0aGlz IGZ1bmN0aW9uLgo+Pgo+PiBJdCdzIGxpa2VseSBpbiB5ZXQgYW5vdGhlciBzZXJpZXMKPj4KPgo+ IFllcywgaXQgaXMuCj4KPj4+Cj4+PiBDYzogSm9obiBIYXJyaXNvbiA8am9obi5jLmhhcnJpc29u QGludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJv c3RAaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWMuaCAgICB8ICAyICsKPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5jIHwgOTcgKysrKysrKysrKysrKysrKysrKy0tLS0KPj4+IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oIHwgMTAgKystCj4+PiAzIGZpbGVzIGNoYW5nZWQsIDkx IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgCj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCj4+PiBpbmRleCBlNjQwMDIwNGEyYmQuLjc3YzVhZjkx OWFjZSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Yy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+Pj4g QEAgLTk0LDYgKzk0LDggQEAgaW50ZWxfZ3VjX3NlbmRfYW5kX3JlY2VpdmUoc3RydWN0IGludGVs X2d1YyAqZ3VjLCAgCj4+PiBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKPj4+IAlyZXR1cm4g Z3VjLT5zZW5kKGd1YywgYWN0aW9uLCBsZW4sIHJlc3BvbnNlX2J1ZiwgcmVzcG9uc2VfYnVmX3Np emUpOwo+Pj4gfQo+Pj4gK2ludCBpbnRlbF9ndWNfc2VuZF9uYihzdHJ1Y3QgaW50ZWxfZ3VjX2N0 ICpjdCwgY29uc3QgdTMyICphY3Rpb24sIHUzMiAgCj4+PiBsZW4pOwo+Pj4gKwo+Pgo+PiBIbW0s IHRoaXMgbWlzbWF0Y2ggb2YgZ3VjL2N0IHBhcmFtZXRlciBicmVha3MgdGhlIG91ciBsYXllcmlu Zy4KPj4gQnV0IHdlIGNhbiBrZWVwIHRoaXMgbGF5ZXJpbmcgaW50YWN0IGJ5IGludHJvZHVjaW5n IHNvbWUgZmxhZ3MgdG8KPj4gdGhlIGV4aXN0aW5nIGd1Y19zZW5kKCkgZnVuY3Rpb24uIFRoZXNl IGZsYWdzIGNvdWxkIGJlIHBhc3NlZCBhcwo+PiBoaWdoIGJpdHMgaW4gYWN0aW9uWzBdLCBsaWtl IHRoaXM6Cj4KPiBUaGlzIHNlZW1zIHJlYXNvbmFibGUuCj4KPj4KPj4gI2RlZmluZSBHVUNfQUNU SU9OX0ZMQUdfRE9OVF9XQUlUIDB4ODAwMDAwMDAKPj4KPj4gaW50IGludGVsX2d1Y19hdXRoX2h1 YyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiByc2Ffb2Zmc2V0KQo+PiB7Cj4+IAl1MzIgYWN0 aW9uW10gPSB7Cj4+IAkJSU5URUxfR1VDX0FDVElPTl9BVVRIRU5USUNBVEVfSFVDIHwgR1VDX0FD VElPTl9GTEFHX0RPTlRfV0FJVCwKPj4gCQlyc2Ffb2Zmc2V0Cj4+IAl9Owo+Pgo+PiAJcmV0dXJu IGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwo+PiB9Cj4+ Cj4+IHRoZW4gYWN0dWFsIGJhY2stZW5kIG9mIGd1Yy0+c2VuZCBjYW4gdGFrZSBwcm9wZXIgc3Rl cHMgYmFzZWQgb24gdGhpcyAgCj4+IGZsYWc6Cj4+Cj4+IEBAIGludCBpbnRlbF9ndWNfc2VuZF9t bWlvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sICAKPj4gdTMyIGxl biwKPj4gICAgICAgIEdFTV9CVUdfT04oIWxlbik7Cj4+ICAgICAgICBHRU1fQlVHX09OKGxlbiA+ IGd1Yy0+c2VuZF9yZWdzLmNvdW50KTsKPj4KPj4gKyAgICAgICBpZiAoKmFjdGlvbiAmIEdVQ19B Q1RJT05fRkxBR19ET05UX1dBSVQpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK Pj4gKyAgICAgICAqYWN0aW9uICY9IH5HVUNfQUNUSU9OX0ZMQUdfRE9OVF9XQUlUOwo+PiArCj4+ ICAgICAgICAvKiBXZSBleHBlY3Qgb25seSBhY3Rpb24gY29kZSAqLwo+PiAgICAgICAgR0VNX0JV R19PTigqYWN0aW9uICYgfklOVEVMX0dVQ19NU0dfQ09ERV9NQVNLKTsKPj4KPj4gQEAgQEAgaW50 IGludGVsX2d1Y19zZW5kX2N0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rp b24sICAKPj4gdTMyIGxlbiwKPj4gICAgICAgIHUzMiBzdGF0dXMgPSB+MDsgLyogdW5kZWZpbmVk ICovCj4+ICAgICAgICBpbnQgcmV0Owo+Pgo+PiArICAgICAgIGlmICgqYWN0aW9uICYgR1VDX0FD VElPTl9GTEFHX0RPTlRfV0FJVCkgewo+PiArICAgICAgICAgICAgICAgR0VNX0JVR19PTihyZXNw b25zZV9idWYpOwo+PiArICAgICAgICAgICAgICAgR0VNX0JVR19PTihyZXNwb25zZV9idWZfc2l6 ZSk7Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gY3RjaF9zZW5kX25iKGN0LCBjdGNoLCBhY3Rp b24sIGxlbik7Cj4+ICsgICAgICAgfQo+PiArCj4+ICAgICAgICBtdXRleF9sb2NrKCZndWMtPnNl bmRfbXV0ZXgpOwo+Pgo+PiAgICAgICAgcmV0ID0gY3RjaF9zZW5kKGN0LCBjdGNoLCBhY3Rpb24s IGxlbiwgcmVzcG9uc2VfYnVmLCAgCj4+IHJlc3BvbnNlX2J1Zl9zaXplLAo+Pgo+Pgo+Pj4gc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2d1Y19ub3RpZnkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ Pj4gewo+Pj4gCWd1Yy0+bm90aWZ5KGd1Yyk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfY3QuYwo+Pj4gaW5kZXggYjQ5MTE1NTE3NTEwLi5lNTBkOTY4YjE1 ZDUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf Y3QuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMK Pj4+IEBAIC0zLDYgKzMsOCBAQAo+Pj4gICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOSBJbnRlbCBD b3Jwb3JhdGlvbgo+Pj4gICovCj4+PiArI2luY2x1ZGUgPGxpbnV4L2NpcmNfYnVmLmg+Cj4+PiAr Cj4+PiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4+ICNpbmNsdWRlICJpbnRlbF9ndWNfY3QuaCIK Pj4+IEBAIC0xMiw2ICsxNCw4IEBACj4+PiAjZGVmaW5lIENUX0RFQlVHX0RSSVZFUiguLi4pCWRv IHsgfSB3aGlsZSAoMCkKPj4+ICNlbmRpZgo+Pj4gKyNkZWZpbmUgTUFYX1JFVFJZCQkweDEwMDAw MDAKPj4+ICsKPj4+IHN0cnVjdCBjdF9yZXF1ZXN0IHsKPj4+IAlzdHJ1Y3QgbGlzdF9oZWFkIGxp bms7Cj4+PiAJdTMyIGZlbmNlOwo+Pj4gQEAgLTQwLDcgKzQ0LDggQEAgdm9pZCBpbnRlbF9ndWNf Y3RfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKPj4+IAkvKiB3ZSdyZSB1c2lu ZyBzdGF0aWMgY2hhbm5lbCBvd25lcnMgKi8KPj4+IAljdC0+aG9zdF9jaGFubmVsLm93bmVyID0g Q1RCX09XTkVSX0hPU1Q7Cj4+PiAtCXNwaW5fbG9ja19pbml0KCZjdC0+bG9jayk7Cj4+PiArCXNw aW5fbG9ja19pbml0KCZjdC0+cmVxdWVzdF9sb2NrKTsKPj4+ICsJc3Bpbl9sb2NrX2luaXQoJmN0 LT5zZW5kX2xvY2spOwo+Pj4gCUlOSVRfTElTVF9IRUFEKCZjdC0+cGVuZGluZ19yZXF1ZXN0cyk7 Cj4+PiAJSU5JVF9MSVNUX0hFQUQoJmN0LT5pbmNvbWluZ19yZXF1ZXN0cyk7Cj4+PiAJSU5JVF9X T1JLKCZjdC0+d29ya2VyLCBjdF9pbmNvbWluZ19yZXF1ZXN0X3dvcmtlcl9mdW5jKTsKPj4+IEBA IC0yOTEsNyArMjk2LDggQEAgc3RhdGljIHUzMiBjdGNoX2dldF9uZXh0X2ZlbmNlKHN0cnVjdCAg Cj4+PiBpbnRlbF9ndWNfY3RfY2hhbm5lbCAqY3RjaCkKPj4+IHN0YXRpYyBpbnQgY3RiX3dyaXRl KHN0cnVjdCBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIsCj4+PiAJCSAgICAgY29uc3QgdTMyICph Y3Rpb24sCj4+PiAJCSAgICAgdTMyIGxlbiAvKiBpbiBkd29yZHMgKi8sCj4+PiAtCQkgICAgIHUz MiBmZW5jZSwKPj4+ICsJCSAgICAgdTMyIGZlbmNlX3ZhbHVlLAo+Pj4gKwkJICAgICBib29sIGVu YWJsZV9mZW5jZSwKPj4KPj4gbWF5YmUgd2UgY2FuIGp1c3QgZ3VhcmFudGVlIHRoYXQgZmVuY2U9 MCB3aWxsIG5ldmVyIGJlIHVzZWQgYXMgYSB2YWxpZAo+PiBmZW5jZSBpZCwgdGhlbiB0aGlzIGZs YWcgY291bGQgYmUgcmVwbGFjZWQgd2l0aCAoZmVuY2UgIT0gMCkgY2hlY2suCj4+Cj4KPiBZZXMs IGFnYWluIHNlZW1zIHJlYXNvbmFibGUuIEluaXRpYWxpemUgbmV4dF9mZW5jZSA9IDEsIHRoZW4g aW5jcmVtZW50ICAKPiBieSAyIGVhY2gKPiB0aW1lIGFuZCB0aGlzIHdvcmtzLgoKQXMgd2UgbmVl ZCBmZW5jZSBvbmx5IGZvciBsb3cgdm9sdW1lIG9mIGJsb2NraW5nIG1lc3NhZ2VzIHRoYXQgcmVx dWlyZXMKcmVzcG9uc2UgSSdtIG5vdCBzdXJlIHRoYXQgd2UgbmVlZCB0byBzdXBlciBvcHRpbWl6 ZSBnZXRfZmVuY2UgdG8gdXNlICsyCmFsbCB0aGUgdGltZSAtIG1heWJlIGp1c3QgY2hlY2sgZm9y IHplcm8gd3JhcCA/Cgo+Cj4+PiAJCSAgICAgYm9vbCB3YW50X3Jlc3BvbnNlKQo+Pj4gewo+Pj4g CXN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MgKmRlc2MgPSBjdGItPmRlc2M7Cj4+PiBAQCAtMzI4 LDE4ICszMzQsMTggQEAgc3RhdGljIGludCBjdGJfd3JpdGUoc3RydWN0IGludGVsX2d1Y19jdF9i dWZmZXIgIAo+Pj4gKmN0YiwKPj4+IAkgKiBEVzIrOiBhY3Rpb24gZGF0YQo+Pj4gCSAqLwo+Pj4g CWhlYWRlciA9IChsZW4gPDwgR1VDX0NUX01TR19MRU5fU0hJRlQpIHwKPj4+IC0JCSAoR1VDX0NU X01TR19XUklURV9GRU5DRV9UT19ERVNDKSB8Cj4+PiArCQkgKGVuYWJsZV9mZW5jZSA/IEdVQ19D VF9NU0dfV1JJVEVfRkVOQ0VfVE9fREVTQyA6IDApIHwKPj4KPj4gSG1tLCBldmVuIGlmIHdlIGFz ayBmdyB0byBkbyBub3Qgd3JpdGUgYmFjayBmZW5jZSB0byB0aGUgZGVzY3JpcHRvciwKPj4gSUlS QyBjdXJyZW50IGZpcm13YXJlIHdpbGwgdW5jb25kaXRpb25hbGx5IHdyaXRlIGJhY2sgcmV0dXJu IHN0YXR1cwo+PiBvZiB0aGlzIG5vbi1ibG9ja2luZyBjYWxsLCBwb3NzaWJseSBvdmVyd3JpdGlu ZyBzdGF0dXMgb2YgdGhlIGJsb2NrZWQKPj4gY2FsbC4KPj4KPgo+IFllcywga25vd24gcHJvYmxl bSB3aXRoIHRoZSBpbnRlcmZhY2UgdGhhdCBuZWVkcyB0byBiZSBmaXhlZC4KPgo+Pj4gCQkgKHdh bnRfcmVzcG9uc2UgPyBHVUNfQ1RfTVNHX1NFTkRfU1RBVFVTIDogMCkgfAo+Pgo+PiBidHcsIGlm IHdlIHN3aXRjaCBhbGwgcmVxdWVzdHMgdG8gZXhwZWN0IHJlcGx5IHNlbmQgYmFjayBvdmVyIENU QiwKPj4gdGhlbiB3ZSBjYW4gcG9zc2libHkgZHJvcCB0aGUgc2VuZF9tdXRleCBpbiBDVEIgcGF0 aHMsIGFuZCBibG9jawo+PiBvbmx5IHdoZW4gdGhlcmUgaXMgbm8gRE9OVF9XQUlUIGZsYWcgYW5k IHdlIGhhdmUgdG8gd2FpdCBmb3IgcmVzcG9uc2UuCj4+Cj4KPiBSYXRoZXIganVzdCB3YWl0IGZv ciB0aGUgR3VDIHRvIGZpeCB0aGlzLgoKQnV0IGZpeGluZyB3aWxsIHByb2JhYmx5IHJlcXVpcmUg c29tZSBleHRyYSBmbGFncywgd2hpbGUgc3dpdGNoaW5nCnRvIHJlcGxpZXMgb3ZlciBDVEIgc2hv dWxkIHdvcmsgdG9kYXkgb24gZXhpc3RpbmcgZncuCgo+Cj4+PiAJCSAoYWN0aW9uWzBdIDw8IEdV Q19DVF9NU0dfQUNUSU9OX1NISUZUKTsKPj4+IAlDVF9ERUJVR19EUklWRVIoIkNUOiB3cml0aW5n ICUqcGggJSpwaCAlKnBoXG4iLAo+Pj4gLQkJCTQsICZoZWFkZXIsIDQsICZmZW5jZSwKPj4+ICsJ CQk0LCAmaGVhZGVyLCA0LCAmZmVuY2VfdmFsdWUsCj4+PiAJCQk0ICogKGxlbiAtIDEpLCAmYWN0 aW9uWzFdKTsKPj4+IAljbWRzW3RhaWxdID0gaGVhZGVyOwo+Pj4gCXRhaWwgPSAodGFpbCArIDEp ICUgc2l6ZTsKPj4+IC0JY21kc1t0YWlsXSA9IGZlbmNlOwo+Pj4gKwljbWRzW3RhaWxdID0gZmVu Y2VfdmFsdWU7Cj4+PiAJdGFpbCA9ICh0YWlsICsgMSkgJSBzaXplOwo+Pj4gCWZvciAoaSA9IDE7 IGkgPCBsZW47IGkrKykgewo+Pj4gQEAgLTQ0MCw2ICs0NDYsNDcgQEAgc3RhdGljIGludCB3YWl0 X2Zvcl9jdF9yZXF1ZXN0X3VwZGF0ZShzdHJ1Y3QgIAo+Pj4gY3RfcmVxdWVzdCAqcmVxLCB1MzIg KnN0YXR1cykKPj4+IAlyZXR1cm4gZXJyOwo+Pj4gfQo+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBj dGJfaGFzX3Jvb20oc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyAqZGVzYywgdTMyICAKPj4+IGxl bikKPj4+ICt7Cj4+PiArCXUzMiBoZWFkID0gUkVBRF9PTkNFKGRlc2MtPmhlYWQpOwo+Pj4gKwl1 MzIgc3BhY2U7Cj4+PiArCj4+PiArCXNwYWNlID0gQ0lSQ19TUEFDRShkZXNjLT50YWlsLCBoZWFk LCBkZXNjLT5zaXplKTsKPj4+ICsKPj4+ICsJcmV0dXJuIHNwYWNlID49IGxlbjsKPj4+ICt9Cj4+ PiArCj4+PiAraW50IGludGVsX2d1Y19zZW5kX25iKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAo+ Pj4gKwkJICAgICAgY29uc3QgdTMyICphY3Rpb24sCj4+PiArCQkgICAgICB1MzIgbGVuKQo+Pj4g K3sKPj4+ICsJc3RydWN0IGludGVsX2d1Y19jdF9jaGFubmVsICpjdGNoID0gJmN0LT5ob3N0X2No YW5uZWw7Cj4+PiArCXN0cnVjdCBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIgPSAmY3RjaC0+Y3Ri c1tDVEJfU0VORF07Cj4+PiArCXN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MgKmRlc2MgPSBjdGIt PmRlc2M7Cj4+PiArCWludCBlcnI7Cj4+PiArCj4+PiArCUdFTV9CVUdfT04oIWN0Y2gtPmVuYWJs ZWQpOwo+Pj4gKwlHRU1fQlVHX09OKCFsZW4pOwo+Pj4gKwlHRU1fQlVHX09OKGxlbiAmIH5HVUNf Q1RfTVNHX0xFTl9NQVNLKTsKPj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3QtPnNlbmRfbG9j ayk7Cj4+Cj4+IGhtbSwgZG9lcyBpdCBtZWFuIHRoYXQgbm93IGl0J3MgY2FsbGVyIHJlc3BvbnNp YmlsaXR5IHRvIHNwaW5sb2NrCj4+IG9uIENUIHByaXZhdGUgbG9jayA/IFRoYXQgaXMgbm90IGhv dyBvdGhlciBndWNfc2VuZCgpIGZ1bmN0aW9ucyB3b3JrLgo+Pgo+Cj4gWWVzLCB0aGF0IGhvdyBJ IHdvdWxkIGxpa2UgdGhpcyB3b3JrIGFzIEkgZmVlbCBsaWtlIGl0IGdpdmVzIG1vcmUgIAo+IGZs ZXhhYmlsaXR5IHRvCj4gdGhlIGNhbGxlciBvbiB0aGUgLUVCVVNZIGNhc2UuIFRoZSBjYWxsZXIg Y2FuIGNhbGwgaW50ZWxfZ3VjX3NlbmRfbmIgIAo+IGFnYWluIHdoaWxlCj4gc3RpbGwgaG9sZGlu ZyB0aGUgbG9jayBvciBpdCByZWxlYXNlIGxvY2sgdGhlIGFuZCB1c2UgYSBkaWZmZXJlbnQgZm9y bSAgCj4gb2YgZmxvdwo+IGNvbnRyb2wuIFBlcmhhcHMgbG9ja2luZyAvIHVubG9ja2luZyBzaG91 bGQgYmUgZXhwb3NlZCB2aWEgc3RhdGljICAKPiBpbmxpbmVzIHJhdGhlcgo+IHRoYW4gdGhlIGNh bGxlciBkaXJlY3RseSBtYW5pcHVsYXRpbmcgdGhlIGxvY2s/CgpIbW0sIEknbSBub3Qgc3VyZSB0 aGF0IEkgbGlrZSBzdWNoIGZsZXhpYmlsaXR5IHRoYXQgb25lIHNldCBvZiBjYWxsZXJzIGlzCmFs bG93ZWQgdG8gZ3JhYiBhbmQgaG9sZCBDVEIgaW50ZXJuYWwgc2VuZF9sb2NrLCB3aGlsZSBvdGhl ciBjYWxsZXIgZG9uJ3QKZXZlbiBrbm93IHRoYXQgc3VjaCBsb2NrIGV4aXN0cywgaXMgYSBnb29k IGRpcmVjdGlvbi4KCldoeSBkbyB5b3UgbmVlZCB0byBzeW5jIHlvdXIgY2FsbGVycyBvbiBDVEIg aW50ZXJuYWwgbG9jayA/CkFyZSB5b3UgYWZyYWlkIHRoYXQgb3RoZXIgY2xpZW50cyBtaWdodCBz dGVhbCBuZXh0IGZyZWUgc2xvdCBpbiBDVEIgPwpXaG8gYXJlIHRoZXNlIG90aGVyIGNsaWVudHMg PyBtYXliZSB5b3UgY2FuIGxvY2sgb24gc29tZXRoaW5nIGVsc2UgPwoKPgo+Pj4gKwo+Pj4gKwlp ZiAodW5saWtlbHkoIWN0Yl9oYXNfcm9vbShkZXNjLCAobGVuICsgMSkgKiA0KSkpIHsKPj4+ICsJ CWN0LT5yZXRyeSsrOwo+Pj4gKwkJaWYgKGN0LT5yZXRyeSA+PSBNQVhfUkVUUlkpCj4+PiArCQkJ cmV0dXJuIC1FREVBRExLOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJCXJldHVybiAtRUJVU1k7Cj4+PiAr CX0KPj4+ICsKPj4+ICsJY3QtPnJldHJ5ID0gMDsKPj4+ICsJZXJyID0gY3RiX3dyaXRlKGN0Yiwg YWN0aW9uLCBsZW4sIDAsIGZhbHNlLCBmYWxzZSk7Cj4+PiArCWlmICh1bmxpa2VseShlcnIpKQo+ Pj4gKwkJcmV0dXJuIGVycjsKPj4+ICsKPj4+ICsJaW50ZWxfZ3VjX25vdGlmeShjdF90b19ndWMo Y3QpKTsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gc3RhdGljIGludCBjdGNoX3Nl bmQoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsCj4+PiAJCSAgICAgc3RydWN0IGludGVsX2d1Y19j dF9jaGFubmVsICpjdGNoLAo+Pj4gCQkgICAgIGNvbnN0IHUzMiAqYWN0aW9uLAo+Pj4gQEAgLTQ2 MCwxNyArNTA3LDM1IEBAIHN0YXRpYyBpbnQgY3RjaF9zZW5kKHN0cnVjdCBpbnRlbF9ndWNfY3Qg KmN0LAo+Pj4gCUdFTV9CVUdfT04obGVuICYgfkdVQ19DVF9NU0dfTEVOX01BU0spOwo+Pj4gCUdF TV9CVUdfT04oIXJlc3BvbnNlX2J1ZiAmJiByZXNwb25zZV9idWZfc2l6ZSk7Cj4+PiArCS8qCj4+ PiArCSAqIFdlIHVzZSBhIGxhenkgc3BpbiB3YWl0IGxvb3AgaGVyZSBhcyB3ZSBiZWxpZXZlIHRo YXQgaWYgdGhlIENUCj4+PiArCSAqIGJ1ZmZlcnMgYXJlIHNpemVkIGNvcnJlY3RseSB0aGUgZmxv dyBjb250cm9sIGNvbmRpdGlvbiBzaG91bGQgYmUKPj4+ICsJICogcmFyZS4KPj4+ICsJICovCj4+ PiArcmV0cnk6Cj4+PiArCXNwaW5fbG9ja19pcnFzYXZlKCZjdC0+c2VuZF9sb2NrLCBmbGFncyk7 Cj4+PiArCWlmICh1bmxpa2VseSghY3RiX2hhc19yb29tKGRlc2MsIChsZW4gKyAxKSAqIDQpKSkg ewo+Pj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnNlbmRfbG9jaywgZmxhZ3MpOwo+ Pj4gKwkJY3QtPnJldHJ5Kys7Cj4+PiArCQlpZiAoY3QtPnJldHJ5ID49IE1BWF9SRVRSWSkKPj4+ ICsJCQlyZXR1cm4gLUVERUFETEs7Cj4+Cj4+IEknbSBub3Qgc3VyZSB3aGF0J3MgYmV0dGVyOiBo YXZlIHNlY3JldCBkZWFkbG9jayBoYXJkIHRvIHJlcHJvZHVjZSwKPj4gb3IgZGVhZGxvY2tzIGVh c2llciB0byBjYXRjaCB0aGF0IGhlbHBzIGltcHJvdmUgdG8gYmUgZGVhZGxvY2stY2xlYW4KPj4K Pgo+IFRoaXMgaXMgY292ZXJpbmcgdGhlIGNhc2Ugd2hlcmUgdGhlIGhhcyBkaWVkIGFuZCB0byBh dm9pZCBkZWFkbG9jay4gIAo+IEV2ZW50dWFsbHkKPiB3ZSB3aWxsIGhhdmUgc29tZSBHdUMgaGVh bHRoIGNoZWNrIGNvZGUgdGhhdCB3aWxsIHRyaWdnZXIgYSBmdWxsIEdQVSAgCj4gcmVzZXQgaWYK PiB0aGUgR3VDIGhhcyBkaWVkLiBXZSBuZWVkIGEgd2F5IGZvciBjb2RlIHNwaW5uaW5nIG9uIHRo ZSBDVEJzIHRvIGV4aXQuCj4KPiBJJ3ZlIGFscmVhZHkgdHdlYWtlZCB0aGlzIGNvZGUgbG9jYWxs eSBhIGJpdCB0byB1c2UgYW4gYXRvbWljIHRvbyB3aXRoICAKPiB0aGUgaWRlYQo+IGJlaW5nIHRo ZSBHdUMgaGVhbHRoIGNoZWNrIGNvZGUgY2FuIHNldCB0aGlzIHZhbHVlIHRvIGhhdmUgYWxsIGNv ZGUgIAo+IHNwaW5uaW5nIG9uCj4gQ1RCcyBpbW1lZGlhdGVseSByZXR1cm4gLS1FREVBRExLIHdo ZW4gdGhlIEd1QyBoYXMgZGllZC4KCldpbGwgd2FpdCB0aGVuIHRvIHNlZSBuZXh0IHJldmlzaW9u LgoKPgo+Pj4gKwkJY3B1X3JlbGF4KCk7Cj4+PiArCQlnb3RvIHJldHJ5Owo+Pj4gKwl9Cj4+PiAr Cj4+PiArCWN0LT5yZXRyeSA9IDA7Cj4+PiAJZmVuY2UgPSBjdGNoX2dldF9uZXh0X2ZlbmNlKGN0 Y2gpOwo+Pj4gCXJlcXVlc3QuZmVuY2UgPSBmZW5jZTsKPj4+IAlyZXF1ZXN0LnN0YXR1cyA9IDA7 Cj4+PiAJcmVxdWVzdC5yZXNwb25zZV9sZW4gPSByZXNwb25zZV9idWZfc2l6ZTsKPj4+IAlyZXF1 ZXN0LnJlc3BvbnNlX2J1ZiA9IHJlc3BvbnNlX2J1ZjsKPj4+IC0Jc3Bpbl9sb2NrX2lycXNhdmUo JmN0LT5sb2NrLCBmbGFncyk7Cj4+PiArCXNwaW5fbG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+ PiAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC5saW5rLCAmY3QtPnBlbmRpbmdfcmVxdWVzdHMpOwo+ Pj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjdC0+bG9jaywgZmxhZ3MpOwo+Pj4gKwlzcGlu X3VubG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+PiAtCWVyciA9IGN0Yl93cml0ZShjdGIsIGFj dGlvbiwgbGVuLCBmZW5jZSwgISFyZXNwb25zZV9idWYpOwo+Pj4gKwllcnIgPSBjdGJfd3JpdGUo Y3RiLCBhY3Rpb24sIGxlbiwgZmVuY2UsIHRydWUsICEhcmVzcG9uc2VfYnVmKTsKPj4+ICsJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnNlbmRfbG9jaywgZmxhZ3MpOwo+Pj4gCWlmICh1bmxp a2VseShlcnIpKQo+Pj4gCQlnb3RvIHVubGluazsKPj4+IEBAIC01MDEsOSArNTY2LDkgQEAgc3Rh dGljIGludCBjdGNoX3NlbmQoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsCj4+PiAJfQo+Pj4gdW5s aW5rOgo+Pj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmY3QtPmxvY2ssIGZsYWdzKTsKPj4+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKPj4+IAlsaXN0X2RlbCgm cmVxdWVzdC5saW5rKTsKPj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPmxvY2ssIGZs YWdzKTsKPj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxh Z3MpOwo+Pj4gCXJldHVybiBlcnI7Cj4+PiB9Cj4+PiBAQCAtNjUzLDcgKzcxOCw3IEBAIHN0YXRp YyBpbnQgY3RfaGFuZGxlX3Jlc3BvbnNlKHN0cnVjdCBpbnRlbF9ndWNfY3QgIAo+Pj4gKmN0LCBj b25zdCB1MzIgKm1zZykKPj4+IAlDVF9ERUJVR19EUklWRVIoIkNUOiByZXNwb25zZSBmZW5jZSAl dSBzdGF0dXMgJSN4XG4iLCBmZW5jZSwgc3RhdHVzKTsKPj4+IC0Jc3Bpbl9sb2NrKCZjdC0+bG9j ayk7Cj4+PiArCXNwaW5fbG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+PiAJbGlzdF9mb3JfZWFj aF9lbnRyeShyZXEsICZjdC0+cGVuZGluZ19yZXF1ZXN0cywgbGluaykgewo+Pj4gCQlpZiAodW5s aWtlbHkoZmVuY2UgIT0gcmVxLT5mZW5jZSkpIHsKPj4+IAkJCUNUX0RFQlVHX0RSSVZFUigiQ1Q6 IHJlcXVlc3QgJXUgYXdhaXRzIHJlc3BvbnNlXG4iLAo+Pj4gQEAgLTY3Miw3ICs3MzcsNyBAQCBz dGF0aWMgaW50IGN0X2hhbmRsZV9yZXNwb25zZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICAKPj4+ICpj dCwgY29uc3QgdTMyICptc2cpCj4+PiAJCWZvdW5kID0gdHJ1ZTsKPj4+IAkJYnJlYWs7Cj4+PiAJ fQo+Pj4gLQlzcGluX3VubG9jaygmY3QtPmxvY2spOwo+Pj4gKwlzcGluX3VubG9jaygmY3QtPnJl cXVlc3RfbG9jayk7Cj4+PiAJaWYgKCFmb3VuZCkKPj4+IAkJRFJNX0VSUk9SKCJDVDogdW5zb2xp Y2l0ZWQgcmVzcG9uc2UgJSpwaFxuIiwgNCAqIG1zZ2xlbiwgbXNnKTsKPj4+IEBAIC03MTAsMTMg Kzc3NSwxMyBAQCBzdGF0aWMgYm9vbCBjdF9wcm9jZXNzX2luY29taW5nX3JlcXVlc3RzKHN0cnVj dCAgCj4+PiBpbnRlbF9ndWNfY3QgKmN0KQo+Pj4gCXUzMiAqcGF5bG9hZDsKPj4+IAlib29sIGRv bmU7Cj4+PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZjdC0+bG9jaywgZmxhZ3MpOwo+Pj4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxhZ3MpOwo+Pj4gCXJlcXVlc3QgPSBs aXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmN0LT5pbmNvbWluZ19yZXF1ZXN0cywKPj4+IAkJCQkJ ICAgc3RydWN0IGN0X2luY29taW5nX3JlcXVlc3QsIGxpbmspOwo+Pj4gCWlmIChyZXF1ZXN0KQo+ Pj4gCQlsaXN0X2RlbCgmcmVxdWVzdC0+bGluayk7Cj4+PiAJZG9uZSA9ICEhbGlzdF9lbXB0eSgm Y3QtPmluY29taW5nX3JlcXVlc3RzKTsKPj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3Qt PmxvY2ssIGZsYWdzKTsKPj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVlc3Rf bG9jaywgZmxhZ3MpOwo+Pj4gCWlmICghcmVxdWVzdCkKPj4+IAkJcmV0dXJuIHRydWU7Cj4+PiBA QCAtNzc3LDkgKzg0Miw5IEBAIHN0YXRpYyBpbnQgY3RfaGFuZGxlX3JlcXVlc3Qoc3RydWN0IGlu dGVsX2d1Y19jdCAgCj4+PiAqY3QsIGNvbnN0IHUzMiAqbXNnKQo+Pj4gCX0KPj4+IAltZW1jcHko cmVxdWVzdC0+bXNnLCBtc2csIDQgKiBtc2dsZW4pOwo+Pj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgm Y3QtPmxvY2ssIGZsYWdzKTsKPj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0X2xv Y2ssIGZsYWdzKTsKPj4+IAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmY3QtPmluY29t aW5nX3JlcXVlc3RzKTsKPj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPmxvY2ssIGZs YWdzKTsKPj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxh Z3MpOwo+Pj4gCXF1ZXVlX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsICZjdC0+d29ya2VyKTsKPj4+ IAlyZXR1cm4gMDsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfY3QuaCAgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5oCj4+PiBpbmRleCA3YzI0ZDgzZjVjMjQuLmJjNjcwYTc5NmJkOCAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAo+Pj4gQEAgLTYyLDggKzYy LDExIEBAIHN0cnVjdCBpbnRlbF9ndWNfY3Qgewo+Pj4gCXN0cnVjdCBpbnRlbF9ndWNfY3RfY2hh bm5lbCBob3N0X2NoYW5uZWw7Cj4+PiAJLyogb3RoZXIgY2hhbm5lbHMgYXJlIHRiZCAqLwo+Pj4g LQkvKiogQGxvY2s6IHByb3RlY3RzIHBlbmRpbmcgcmVxdWVzdHMgbGlzdCAqLwo+Pj4gLQlzcGlu bG9ja190IGxvY2s7Cj4+PiArCS8qKiBAcmVxdWVzdF9sb2NrOiBwcm90ZWN0cyBwZW5kaW5nIHJl cXVlc3RzIGxpc3QgKi8KPj4+ICsJc3BpbmxvY2tfdCByZXF1ZXN0X2xvY2s7Cj4+PiArCj4+PiAr CS8qKiBAc2VuZF9sb2NrOiBwcm90ZWN0cyBoMmcgY2hhbm5lbCAqLwo+Pj4gKwlzcGlubG9ja190 IHNlbmRfbG9jazsKPj4+IAkvKiogQHBlbmRpbmdfcmVxdWVzdHM6IGxpc3Qgb2YgcmVxdWVzdHMg d2FpdGluZyBmb3IgcmVzcG9uc2UgKi8KPj4+IAlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfcmVx dWVzdHM7Cj4+PiBAQCAtNzMsNiArNzYsOSBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2N0IHsKPj4+IAkv KiogQHdvcmtlcjogd29ya2VyIGZvciBoYW5kbGluZyBpbmNvbWluZyByZXF1ZXN0cyAqLwo+Pj4g CXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrZXI7Cj4+PiArCj4+PiArCS8qKiBAcmV0cnk6IHRoZSBu dW1iZXIgb2YgdGltZXMgYSBIMkcgQ1RCIGhhcyBiZWVuIHJldHJpZWQgKi8KPj4+ICsJdTMyIHJl dHJ5Owo+Pj4gfTsKPj4+IHZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0IGludGVs X2d1Y19jdCAqY3QpOwo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4