From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Brost Subject: Re: [PATCH 1/3] drm/i915/guc: Add non blocking CTB send function Date: Thu, 21 Nov 2019 16:13:25 -0800 Message-ID: <20191122001325.GA92577@sdutt> References: <20191120235604.29047-1-John.C.Harrison@Intel.com> <20191120235604.29047-2-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3BEFB6E223 for ; Fri, 22 Nov 2019 00:19:43 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko Cc: Intel-GFX@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMTI6NDM6MjZQTSArMDEwMCwgTWljaGFsIFdhamRlY3pr byB3cm90ZToKPk9uIFRodSwgMjEgTm92IDIwMTkgMDA6NTY6MDIgKzAxMDAsIDxKb2huLkMuSGFy cmlzb25AaW50ZWwuY29tPiB3cm90ZToKPgo+PkZyb206IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcu YnJvc3RAaW50ZWwuY29tPgo+Pgo+PkFkZCBub24gYmxvY2tpbmcgQ1RCIHNlbmQgZnVjdGlvbiwg aW50ZWxfZ3VjX3NlbmRfbmIuIEluIG9yZGVyIHRvCj4+c3VwcG9ydCBhIG5vbiBibG9ja2luZyBD VEIgc2VuZCBmdWN0aW9uIGEgc3BpbiBsb2NrIGlzIG5lZWRlZCB0bwo+Cj4yeCB0eXBvcwo+Cj4+ cHJvdGVjdCB0aGUgQ1RCIGRlc2NyaXB0b3JzIGZpZWxkcy4gQWxzbyB0aGUgbm9uIGJsb2NraW5n IGNhbGwgbXVzdCBub3QKPj51cGRhdGUgdGhlIGZlbmNlIHZhbHVlIGFzIHRoaXMgdmFsdWUgaXMg b3duZWQgYnkgdGhlIGJsb2NraW5nIGNhbGwKPj4oaW50ZWxfZ3VjX3NlbmQpLgo+Cj55b3UgcHJv YmFibHkgbWVhbiAiaW50ZWxfZ3VjX3NlbmRfY3QiLCBhcyBpbnRlbF9ndWNfc2VuZCBpcyBqdXN0 IGEgd3JhcHBlcgo+YXJvdW5kIGd1Yy0+c2VuZAo+CgpBaCwgeWVzLgoKPj4KPj5UaGUgYmxvY2tp bmcgQ1RCIG5vdyBtdXN0IGhhdmUgYSBmbG93IGNvbnRyb2wgbWVjaGFuaXNtIHRvIGVuc3VyZSB0 aGUKPj5idWZmZXIgaXNuJ3Qgb3ZlcnJ1bi4gQSBsYXp5IHNwaW4gd2FpdCBpcyB1c2VkIGFzIHdl IGJlbGlldmUgdGhlIGZsb3cKPj5jb250cm9sIGNvbmRpdGlvbiBzaG91bGQgYmUgcmFyZSB3aXRo IHByb3Blcmx5IHNpemVkIGJ1ZmZlci4gQSByZXRyeQo+PmNvdW50ZXIgaXMgYWxzbyBpbXBsZW1l bnRlZCB3aGljaCBmYWlscyBIMkcgQ1RCcyBvbmNlIGEgbGltaXQgaXMKPj5yZWFjaGVkIHRvIHBy ZXZlbnQgZGVhZGxvY2suCj4+Cj4+VGhlIGZ1bmN0aW9uLCBpbnRlbF9ndWNfc2VuZF9uYiwgaXMg ZXhwb3J0ZWQgaW4gdGhpcyBwYXRjaCBidXQgdW51c2VkLgo+PlNldmVyYWwgcGF0Y2hlcyBsYXRl ciBpbiB0aGUgc2VyaWVzIG1ha2UgdXNlIG9mIHRoaXMgZnVuY3Rpb24uCj4KPkl0J3MgbGlrZWx5 IGluIHlldCBhbm90aGVyIHNlcmllcwo+CgpZZXMsIGl0IGlzLgoKPj4KPj5DYzogSm9obiBIYXJy aXNvbiA8am9obi5jLmhhcnJpc29uQGludGVsLmNvbT4KPj5TaWduZWQtb2ZmLWJ5OiBNYXR0aGV3 IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KPj4tLS0KPj4gZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggICAgfCAgMiArCj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19jdC5jIHwgOTcgKysrKysrKysrKysrKysrKysrKy0tLS0KPj4gZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmggfCAxMCArKy0KPj4gMyBmaWxl cyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKPj4KPj5kaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggCj4+Yi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+PmluZGV4IGU2NDAwMjA0YTJiZC4uNzdj NWFmOTE5YWNlIDEwMDY0NAo+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Yy5oCj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKPj5A QCAtOTQsNiArOTQsOCBAQCBpbnRlbF9ndWNfc2VuZF9hbmRfcmVjZWl2ZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsIAo+PmNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAo+PiAJcmV0dXJuIGd1Yy0+ c2VuZChndWMsIGFjdGlvbiwgbGVuLCByZXNwb25zZV9idWYsIHJlc3BvbnNlX2J1Zl9zaXplKTsK Pj4gfQo+PitpbnQgaW50ZWxfZ3VjX3NlbmRfbmIoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIGNv bnN0IHUzMiAqYWN0aW9uLCAKPj51MzIgbGVuKTsKPj4rCj4KPkhtbSwgdGhpcyBtaXNtYXRjaCBv ZiBndWMvY3QgcGFyYW1ldGVyIGJyZWFrcyB0aGUgb3VyIGxheWVyaW5nLgo+QnV0IHdlIGNhbiBr ZWVwIHRoaXMgbGF5ZXJpbmcgaW50YWN0IGJ5IGludHJvZHVjaW5nIHNvbWUgZmxhZ3MgdG8KPnRo ZSBleGlzdGluZyBndWNfc2VuZCgpIGZ1bmN0aW9uLiBUaGVzZSBmbGFncyBjb3VsZCBiZSBwYXNz ZWQgYXMKPmhpZ2ggYml0cyBpbiBhY3Rpb25bMF0sIGxpa2UgdGhpczoKClRoaXMgc2VlbXMgcmVh c29uYWJsZS4KCj4KPiNkZWZpbmUgR1VDX0FDVElPTl9GTEFHX0RPTlRfV0FJVCAweDgwMDAwMDAw Cj4KPmludCBpbnRlbF9ndWNfYXV0aF9odWMoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgcnNh X29mZnNldCkKPnsKPgl1MzIgYWN0aW9uW10gPSB7Cj4JCUlOVEVMX0dVQ19BQ1RJT05fQVVUSEVO VElDQVRFX0hVQyB8IEdVQ19BQ1RJT05fRkxBR19ET05UX1dBSVQsCj4JCXJzYV9vZmZzZXQKPgl9 Owo+Cj4JcmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlv bikpOwo+fQo+Cj50aGVuIGFjdHVhbCBiYWNrLWVuZCBvZiBndWMtPnNlbmQgY2FuIHRha2UgcHJv cGVyIHN0ZXBzIGJhc2VkIG9uIHRoaXMgZmxhZzoKPgo+QEAgaW50IGludGVsX2d1Y19zZW5kX21t aW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgCj51MzIgbGVuLAo+ ICAgICAgICBHRU1fQlVHX09OKCFsZW4pOwo+ICAgICAgICBHRU1fQlVHX09OKGxlbiA+IGd1Yy0+ c2VuZF9yZWdzLmNvdW50KTsKPgo+KyAgICAgICBpZiAoKmFjdGlvbiAmIEdVQ19BQ1RJT05fRkxB R19ET05UX1dBSVQpCj4rICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4rICAgICAgICph Y3Rpb24gJj0gfkdVQ19BQ1RJT05fRkxBR19ET05UX1dBSVQ7Cj4rCj4gICAgICAgIC8qIFdlIGV4 cGVjdCBvbmx5IGFjdGlvbiBjb2RlICovCj4gICAgICAgIEdFTV9CVUdfT04oKmFjdGlvbiAmIH5J TlRFTF9HVUNfTVNHX0NPREVfTUFTSyk7Cj4KPkBAIEBAIGludCBpbnRlbF9ndWNfc2VuZF9jdChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCAKPnUzMiBsZW4sCj4gICAg ICAgIHUzMiBzdGF0dXMgPSB+MDsgLyogdW5kZWZpbmVkICovCj4gICAgICAgIGludCByZXQ7Cj4K PisgICAgICAgaWYgKCphY3Rpb24gJiBHVUNfQUNUSU9OX0ZMQUdfRE9OVF9XQUlUKSB7Cj4rICAg ICAgICAgICAgICAgR0VNX0JVR19PTihyZXNwb25zZV9idWYpOwo+KyAgICAgICAgICAgICAgIEdF TV9CVUdfT04ocmVzcG9uc2VfYnVmX3NpemUpOwo+KyAgICAgICAgICAgICAgIHJldHVybiBjdGNo X3NlbmRfbmIoY3QsIGN0Y2gsIGFjdGlvbiwgbGVuKTsKPisgICAgICAgfQo+Kwo+ICAgICAgICBt dXRleF9sb2NrKCZndWMtPnNlbmRfbXV0ZXgpOwo+Cj4gICAgICAgIHJldCA9IGN0Y2hfc2VuZChj dCwgY3RjaCwgYWN0aW9uLCBsZW4sIHJlc3BvbnNlX2J1ZiwgCj5yZXNwb25zZV9idWZfc2l6ZSwK Pgo+Cj4+IHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndWNfbm90aWZ5KHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKPj4gewo+PiAJZ3VjLT5ub3RpZnkoZ3VjKTsKPj5kaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgCj4+Yi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYwo+PmluZGV4IGI0OTExNTUxNzUxMC4uZTUwZDk2OGIx NWQ1IDEwMDY0NAo+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19j dC5jCj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj5A QCAtMyw2ICszLDggQEAKPj4gICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOSBJbnRlbCBDb3Jwb3Jh dGlvbgo+PiAgKi8KPj4rI2luY2x1ZGUgPGxpbnV4L2NpcmNfYnVmLmg+Cj4+Kwo+PiAjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKPj4gI2luY2x1ZGUgImludGVsX2d1Y19jdC5oIgo+PkBAIC0xMiw2ICsx NCw4IEBACj4+ICNkZWZpbmUgQ1RfREVCVUdfRFJJVkVSKC4uLikJZG8geyB9IHdoaWxlICgwKQo+ PiAjZW5kaWYKPj4rI2RlZmluZSBNQVhfUkVUUlkJCTB4MTAwMDAwMAo+PisKPj4gc3RydWN0IGN0 X3JlcXVlc3Qgewo+PiAJc3RydWN0IGxpc3RfaGVhZCBsaW5rOwo+PiAJdTMyIGZlbmNlOwo+PkBA IC00MCw3ICs0NCw4IEBAIHZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0IGludGVs X2d1Y19jdCAqY3QpCj4+IAkvKiB3ZSdyZSB1c2luZyBzdGF0aWMgY2hhbm5lbCBvd25lcnMgKi8K Pj4gCWN0LT5ob3N0X2NoYW5uZWwub3duZXIgPSBDVEJfT1dORVJfSE9TVDsKPj4tCXNwaW5fbG9j a19pbml0KCZjdC0+bG9jayk7Cj4+KwlzcGluX2xvY2tfaW5pdCgmY3QtPnJlcXVlc3RfbG9jayk7 Cj4+KwlzcGluX2xvY2tfaW5pdCgmY3QtPnNlbmRfbG9jayk7Cj4+IAlJTklUX0xJU1RfSEVBRCgm Y3QtPnBlbmRpbmdfcmVxdWVzdHMpOwo+PiAJSU5JVF9MSVNUX0hFQUQoJmN0LT5pbmNvbWluZ19y ZXF1ZXN0cyk7Cj4+IAlJTklUX1dPUksoJmN0LT53b3JrZXIsIGN0X2luY29taW5nX3JlcXVlc3Rf d29ya2VyX2Z1bmMpOwo+PkBAIC0yOTEsNyArMjk2LDggQEAgc3RhdGljIHUzMiBjdGNoX2dldF9u ZXh0X2ZlbmNlKHN0cnVjdCAKPj5pbnRlbF9ndWNfY3RfY2hhbm5lbCAqY3RjaCkKPj4gc3RhdGlj IGludCBjdGJfd3JpdGUoc3RydWN0IGludGVsX2d1Y19jdF9idWZmZXIgKmN0YiwKPj4gCQkgICAg IGNvbnN0IHUzMiAqYWN0aW9uLAo+PiAJCSAgICAgdTMyIGxlbiAvKiBpbiBkd29yZHMgKi8sCj4+ LQkJICAgICB1MzIgZmVuY2UsCj4+KwkJICAgICB1MzIgZmVuY2VfdmFsdWUsCj4+KwkJICAgICBi b29sIGVuYWJsZV9mZW5jZSwKPgo+bWF5YmUgd2UgY2FuIGp1c3QgZ3VhcmFudGVlIHRoYXQgZmVu Y2U9MCB3aWxsIG5ldmVyIGJlIHVzZWQgYXMgYSB2YWxpZAo+ZmVuY2UgaWQsIHRoZW4gdGhpcyBm bGFnIGNvdWxkIGJlIHJlcGxhY2VkIHdpdGggKGZlbmNlICE9IDApIGNoZWNrLgo+CgpZZXMsIGFn YWluIHNlZW1zIHJlYXNvbmFibGUuIEluaXRpYWxpemUgbmV4dF9mZW5jZSA9IDEsIHRoZW4gaW5j cmVtZW50IGJ5IDIgZWFjaAp0aW1lIGFuZCB0aGlzIHdvcmtzLgoKPj4gCQkgICAgIGJvb2wgd2Fu dF9yZXNwb25zZSkKPj4gewo+PiAJc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyAqZGVzYyA9IGN0 Yi0+ZGVzYzsKPj5AQCAtMzI4LDE4ICszMzQsMTggQEAgc3RhdGljIGludCBjdGJfd3JpdGUoc3Ry dWN0IAo+PmludGVsX2d1Y19jdF9idWZmZXIgKmN0YiwKPj4gCSAqIERXMis6IGFjdGlvbiBkYXRh Cj4+IAkgKi8KPj4gCWhlYWRlciA9IChsZW4gPDwgR1VDX0NUX01TR19MRU5fU0hJRlQpIHwKPj4t CQkgKEdVQ19DVF9NU0dfV1JJVEVfRkVOQ0VfVE9fREVTQykgfAo+PisJCSAoZW5hYmxlX2ZlbmNl ID8gR1VDX0NUX01TR19XUklURV9GRU5DRV9UT19ERVNDIDogMCkgfAo+Cj5IbW0sIGV2ZW4gaWYg d2UgYXNrIGZ3IHRvIGRvIG5vdCB3cml0ZSBiYWNrIGZlbmNlIHRvIHRoZSBkZXNjcmlwdG9yLAo+ SUlSQyBjdXJyZW50IGZpcm13YXJlIHdpbGwgdW5jb25kaXRpb25hbGx5IHdyaXRlIGJhY2sgcmV0 dXJuIHN0YXR1cwo+b2YgdGhpcyBub24tYmxvY2tpbmcgY2FsbCwgcG9zc2libHkgb3ZlcndyaXRp bmcgc3RhdHVzIG9mIHRoZSBibG9ja2VkCj5jYWxsLgo+CgpZZXMsIGtub3duIHByb2JsZW0gd2l0 aCB0aGUgaW50ZXJmYWNlIHRoYXQgbmVlZHMgdG8gYmUgZml4ZWQuCgo+PiAJCSAod2FudF9yZXNw b25zZSA/IEdVQ19DVF9NU0dfU0VORF9TVEFUVVMgOiAwKSB8Cj4KPmJ0dywgaWYgd2Ugc3dpdGNo IGFsbCByZXF1ZXN0cyB0byBleHBlY3QgcmVwbHkgc2VuZCBiYWNrIG92ZXIgQ1RCLAo+dGhlbiB3 ZSBjYW4gcG9zc2libHkgZHJvcCB0aGUgc2VuZF9tdXRleCBpbiBDVEIgcGF0aHMsIGFuZCBibG9j awo+b25seSB3aGVuIHRoZXJlIGlzIG5vIERPTlRfV0FJVCBmbGFnIGFuZCB3ZSBoYXZlIHRvIHdh aXQgZm9yIHJlc3BvbnNlLgo+CgpSYXRoZXIganVzdCB3YWl0IGZvciB0aGUgR3VDIHRvIGZpeCB0 aGlzLgoKPj4gCQkgKGFjdGlvblswXSA8PCBHVUNfQ1RfTVNHX0FDVElPTl9TSElGVCk7Cj4+CUNU X0RFQlVHX0RSSVZFUigiQ1Q6IHdyaXRpbmcgJSpwaCAlKnBoICUqcGhcbiIsCj4+LQkJCTQsICZo ZWFkZXIsIDQsICZmZW5jZSwKPj4rCQkJNCwgJmhlYWRlciwgNCwgJmZlbmNlX3ZhbHVlLAo+PiAJ CQk0ICogKGxlbiAtIDEpLCAmYWN0aW9uWzFdKTsKPj4JY21kc1t0YWlsXSA9IGhlYWRlcjsKPj4g CXRhaWwgPSAodGFpbCArIDEpICUgc2l6ZTsKPj4tCWNtZHNbdGFpbF0gPSBmZW5jZTsKPj4rCWNt ZHNbdGFpbF0gPSBmZW5jZV92YWx1ZTsKPj4gCXRhaWwgPSAodGFpbCArIDEpICUgc2l6ZTsKPj4J Zm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKSB7Cj4+QEAgLTQ0MCw2ICs0NDYsNDcgQEAgc3RhdGlj IGludCB3YWl0X2Zvcl9jdF9yZXF1ZXN0X3VwZGF0ZShzdHJ1Y3QgCj4+Y3RfcmVxdWVzdCAqcmVx LCB1MzIgKnN0YXR1cykKPj4gCXJldHVybiBlcnI7Cj4+IH0KPj4rc3RhdGljIGlubGluZSBib29s IGN0Yl9oYXNfcm9vbShzdHJ1Y3QgZ3VjX2N0X2J1ZmZlcl9kZXNjICpkZXNjLCAKPj51MzIgbGVu KQo+Pit7Cj4+Kwl1MzIgaGVhZCA9IFJFQURfT05DRShkZXNjLT5oZWFkKTsKPj4rCXUzMiBzcGFj ZTsKPj4rCj4+KwlzcGFjZSA9IENJUkNfU1BBQ0UoZGVzYy0+dGFpbCwgaGVhZCwgZGVzYy0+c2l6 ZSk7Cj4+Kwo+PisJcmV0dXJuIHNwYWNlID49IGxlbjsKPj4rfQo+PisKPj4raW50IGludGVsX2d1 Y19zZW5kX25iKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAo+PisJCSAgICAgIGNvbnN0IHUzMiAq YWN0aW9uLAo+PisJCSAgICAgIHUzMiBsZW4pCj4+K3sKPj4rCXN0cnVjdCBpbnRlbF9ndWNfY3Rf Y2hhbm5lbCAqY3RjaCA9ICZjdC0+aG9zdF9jaGFubmVsOwo+PisJc3RydWN0IGludGVsX2d1Y19j dF9idWZmZXIgKmN0YiA9ICZjdGNoLT5jdGJzW0NUQl9TRU5EXTsKPj4rCXN0cnVjdCBndWNfY3Rf YnVmZmVyX2Rlc2MgKmRlc2MgPSBjdGItPmRlc2M7Cj4+KwlpbnQgZXJyOwo+PisKPj4rCUdFTV9C VUdfT04oIWN0Y2gtPmVuYWJsZWQpOwo+PisJR0VNX0JVR19PTighbGVuKTsKPj4rCUdFTV9CVUdf T04obGVuICYgfkdVQ19DVF9NU0dfTEVOX01BU0spOwo+PisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm Y3QtPnNlbmRfbG9jayk7Cj4KPmhtbSwgZG9lcyBpdCBtZWFuIHRoYXQgbm93IGl0J3MgY2FsbGVy IHJlc3BvbnNpYmlsaXR5IHRvIHNwaW5sb2NrCj5vbiBDVCBwcml2YXRlIGxvY2sgPyBUaGF0IGlz IG5vdCBob3cgb3RoZXIgZ3VjX3NlbmQoKSBmdW5jdGlvbnMgd29yay4KPgoKWWVzLCB0aGF0IGhv dyBJIHdvdWxkIGxpa2UgdGhpcyB3b3JrIGFzIEkgZmVlbCBsaWtlIGl0IGdpdmVzIG1vcmUgZmxl eGFiaWxpdHkgdG8KdGhlIGNhbGxlciBvbiB0aGUgLUVCVVNZIGNhc2UuIFRoZSBjYWxsZXIgY2Fu IGNhbGwgaW50ZWxfZ3VjX3NlbmRfbmIgYWdhaW4gd2hpbGUKc3RpbGwgaG9sZGluZyB0aGUgbG9j ayBvciBpdCByZWxlYXNlIGxvY2sgdGhlIGFuZCB1c2UgYSBkaWZmZXJlbnQgZm9ybSBvZiBmbG93 CmNvbnRyb2wuIFBlcmhhcHMgbG9ja2luZyAvIHVubG9ja2luZyBzaG91bGQgYmUgZXhwb3NlZCB2 aWEgc3RhdGljIGlubGluZXMgcmF0aGVyCnRoYW4gdGhlIGNhbGxlciBkaXJlY3RseSBtYW5pcHVs YXRpbmcgdGhlIGxvY2s/Cgo+PisKPj4rCWlmICh1bmxpa2VseSghY3RiX2hhc19yb29tKGRlc2Ms IChsZW4gKyAxKSAqIDQpKSkgewo+PisJCWN0LT5yZXRyeSsrOwo+PisJCWlmIChjdC0+cmV0cnkg Pj0gTUFYX1JFVFJZKQo+PisJCQlyZXR1cm4gLUVERUFETEs7Cj4+KwkJZWxzZQo+PisJCQlyZXR1 cm4gLUVCVVNZOwo+PisJfQo+PisKPj4rCWN0LT5yZXRyeSA9IDA7Cj4+KwllcnIgPSBjdGJfd3Jp dGUoY3RiLCBhY3Rpb24sIGxlbiwgMCwgZmFsc2UsIGZhbHNlKTsKPj4rCWlmICh1bmxpa2VseShl cnIpKQo+PisJCXJldHVybiBlcnI7Cj4+Kwo+PisJaW50ZWxfZ3VjX25vdGlmeShjdF90b19ndWMo Y3QpKTsKPj4rCXJldHVybiAwOwo+Pit9Cj4+Kwo+PiBzdGF0aWMgaW50IGN0Y2hfc2VuZChzdHJ1 Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKPj4gCQkgICAgIHN0cnVjdCBpbnRlbF9ndWNfY3RfY2hhbm5l bCAqY3RjaCwKPj4gCQkgICAgIGNvbnN0IHUzMiAqYWN0aW9uLAo+PkBAIC00NjAsMTcgKzUwNywz NSBAQCBzdGF0aWMgaW50IGN0Y2hfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKPj4gCUdF TV9CVUdfT04obGVuICYgfkdVQ19DVF9NU0dfTEVOX01BU0spOwo+PiAJR0VNX0JVR19PTighcmVz cG9uc2VfYnVmICYmIHJlc3BvbnNlX2J1Zl9zaXplKTsKPj4rCS8qCj4+KwkgKiBXZSB1c2UgYSBs YXp5IHNwaW4gd2FpdCBsb29wIGhlcmUgYXMgd2UgYmVsaWV2ZSB0aGF0IGlmIHRoZSBDVAo+PisJ ICogYnVmZmVycyBhcmUgc2l6ZWQgY29ycmVjdGx5IHRoZSBmbG93IGNvbnRyb2wgY29uZGl0aW9u IHNob3VsZCBiZQo+PisJICogcmFyZS4KPj4rCSAqLwo+PityZXRyeToKPj4rCXNwaW5fbG9ja19p cnFzYXZlKCZjdC0+c2VuZF9sb2NrLCBmbGFncyk7Cj4+KwlpZiAodW5saWtlbHkoIWN0Yl9oYXNf cm9vbShkZXNjLCAobGVuICsgMSkgKiA0KSkpIHsKPj4rCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjdC0+c2VuZF9sb2NrLCBmbGFncyk7Cj4+KwkJY3QtPnJldHJ5Kys7Cj4+KwkJaWYgKGN0LT5y ZXRyeSA+PSBNQVhfUkVUUlkpCj4+KwkJCXJldHVybiAtRURFQURMSzsKPgo+SSdtIG5vdCBzdXJl IHdoYXQncyBiZXR0ZXI6IGhhdmUgc2VjcmV0IGRlYWRsb2NrIGhhcmQgdG8gcmVwcm9kdWNlLAo+ b3IgZGVhZGxvY2tzIGVhc2llciB0byBjYXRjaCB0aGF0IGhlbHBzIGltcHJvdmUgdG8gYmUgZGVh ZGxvY2stY2xlYW4KPgoKVGhpcyBpcyBjb3ZlcmluZyB0aGUgY2FzZSB3aGVyZSB0aGUgaGFzIGRp ZWQgYW5kIHRvIGF2b2lkIGRlYWRsb2NrLiBFdmVudHVhbGx5CndlIHdpbGwgaGF2ZSBzb21lIEd1 QyBoZWFsdGggY2hlY2sgY29kZSB0aGF0IHdpbGwgdHJpZ2dlciBhIGZ1bGwgR1BVIHJlc2V0IGlm CnRoZSBHdUMgaGFzIGRpZWQuIFdlIG5lZWQgYSB3YXkgZm9yIGNvZGUgc3Bpbm5pbmcgb24gdGhl IENUQnMgdG8gZXhpdC4KCkkndmUgYWxyZWFkeSB0d2Vha2VkIHRoaXMgY29kZSBsb2NhbGx5IGEg Yml0IHRvIHVzZSBhbiBhdG9taWMgdG9vIHdpdGggdGhlIGlkZWEKYmVpbmcgdGhlIEd1QyBoZWFs dGggY2hlY2sgY29kZSBjYW4gc2V0IHRoaXMgdmFsdWUgdG8gaGF2ZSBhbGwgY29kZSBzcGlubmlu ZyBvbgpDVEJzIGltbWVkaWF0ZWx5IHJldHVybiAtLUVERUFETEsgd2hlbiB0aGUgR3VDIGhhcyBk aWVkLgoKPj4rCQljcHVfcmVsYXgoKTsKPj4rCQlnb3RvIHJldHJ5Owo+PisJfQo+PisKPj4rCWN0 LT5yZXRyeSA9IDA7Cj4+IAlmZW5jZSA9IGN0Y2hfZ2V0X25leHRfZmVuY2UoY3RjaCk7Cj4+IAly ZXF1ZXN0LmZlbmNlID0gZmVuY2U7Cj4+IAlyZXF1ZXN0LnN0YXR1cyA9IDA7Cj4+IAlyZXF1ZXN0 LnJlc3BvbnNlX2xlbiA9IHJlc3BvbnNlX2J1Zl9zaXplOwo+PiAJcmVxdWVzdC5yZXNwb25zZV9i dWYgPSByZXNwb25zZV9idWY7Cj4+LQlzcGluX2xvY2tfaXJxc2F2ZSgmY3QtPmxvY2ssIGZsYWdz KTsKPj4rCXNwaW5fbG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+IAlsaXN0X2FkZF90YWlsKCZy ZXF1ZXN0LmxpbmssICZjdC0+cGVuZGluZ19yZXF1ZXN0cyk7Cj4+LQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjdC0+bG9jaywgZmxhZ3MpOwo+PisJc3Bpbl91bmxvY2soJmN0LT5yZXF1ZXN0X2xv Y2spOwo+Pi0JZXJyID0gY3RiX3dyaXRlKGN0YiwgYWN0aW9uLCBsZW4sIGZlbmNlLCAhIXJlc3Bv bnNlX2J1Zik7Cj4+KwllcnIgPSBjdGJfd3JpdGUoY3RiLCBhY3Rpb24sIGxlbiwgZmVuY2UsIHRy dWUsICEhcmVzcG9uc2VfYnVmKTsKPj4rCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0LT5zZW5k X2xvY2ssIGZsYWdzKTsKPj4gCWlmICh1bmxpa2VseShlcnIpKQo+PiAJCWdvdG8gdW5saW5rOwo+ PkBAIC01MDEsOSArNTY2LDkgQEAgc3RhdGljIGludCBjdGNoX3NlbmQoc3RydWN0IGludGVsX2d1 Y19jdCAqY3QsCj4+IAl9Cj4+dW5saW5rOgo+Pi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5sb2Nr LCBmbGFncyk7Cj4+KwlzcGluX2xvY2tfaXJxc2F2ZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxhZ3Mp Owo+PiAJbGlzdF9kZWwoJnJlcXVlc3QubGluayk7Cj4+LQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjdC0+bG9jaywgZmxhZ3MpOwo+PisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVl c3RfbG9jaywgZmxhZ3MpOwo+PglyZXR1cm4gZXJyOwo+PiB9Cj4+QEAgLTY1Myw3ICs3MTgsNyBA QCBzdGF0aWMgaW50IGN0X2hhbmRsZV9yZXNwb25zZShzdHJ1Y3QgCj4+aW50ZWxfZ3VjX2N0ICpj dCwgY29uc3QgdTMyICptc2cpCj4+CUNUX0RFQlVHX0RSSVZFUigiQ1Q6IHJlc3BvbnNlIGZlbmNl ICV1IHN0YXR1cyAlI3hcbiIsIGZlbmNlLCBzdGF0dXMpOwo+Pi0Jc3Bpbl9sb2NrKCZjdC0+bG9j ayk7Cj4+KwlzcGluX2xvY2soJmN0LT5yZXF1ZXN0X2xvY2spOwo+PiAJbGlzdF9mb3JfZWFjaF9l bnRyeShyZXEsICZjdC0+cGVuZGluZ19yZXF1ZXN0cywgbGluaykgewo+PiAJCWlmICh1bmxpa2Vs eShmZW5jZSAhPSByZXEtPmZlbmNlKSkgewo+PiAJCQlDVF9ERUJVR19EUklWRVIoIkNUOiByZXF1 ZXN0ICV1IGF3YWl0cyByZXNwb25zZVxuIiwKPj5AQCAtNjcyLDcgKzczNyw3IEBAIHN0YXRpYyBp bnQgY3RfaGFuZGxlX3Jlc3BvbnNlKHN0cnVjdCAKPj5pbnRlbF9ndWNfY3QgKmN0LCBjb25zdCB1 MzIgKm1zZykKPj4gCQlmb3VuZCA9IHRydWU7Cj4+IAkJYnJlYWs7Cj4+IAl9Cj4+LQlzcGluX3Vu bG9jaygmY3QtPmxvY2spOwo+PisJc3Bpbl91bmxvY2soJmN0LT5yZXF1ZXN0X2xvY2spOwo+Pglp ZiAoIWZvdW5kKQo+PiAJCURSTV9FUlJPUigiQ1Q6IHVuc29saWNpdGVkIHJlc3BvbnNlICUqcGhc biIsIDQgKiBtc2dsZW4sIG1zZyk7Cj4+QEAgLTcxMCwxMyArNzc1LDEzIEBAIHN0YXRpYyBib29s IAo+PmN0X3Byb2Nlc3NfaW5jb21pbmdfcmVxdWVzdHMoc3RydWN0IGludGVsX2d1Y19jdCAqY3Qp Cj4+IAl1MzIgKnBheWxvYWQ7Cj4+IAlib29sIGRvbmU7Cj4+LQlzcGluX2xvY2tfaXJxc2F2ZSgm Y3QtPmxvY2ssIGZsYWdzKTsKPj4rCXNwaW5fbG9ja19pcnFzYXZlKCZjdC0+cmVxdWVzdF9sb2Nr LCBmbGFncyk7Cj4+IAlyZXF1ZXN0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZjdC0+aW5j b21pbmdfcmVxdWVzdHMsCj4+IAkJCQkJICAgc3RydWN0IGN0X2luY29taW5nX3JlcXVlc3QsIGxp bmspOwo+PiAJaWYgKHJlcXVlc3QpCj4+IAkJbGlzdF9kZWwoJnJlcXVlc3QtPmxpbmspOwo+PiAJ ZG9uZSA9ICEhbGlzdF9lbXB0eSgmY3QtPmluY29taW5nX3JlcXVlc3RzKTsKPj4tCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmN0LT5sb2NrLCBmbGFncyk7Cj4+KwlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjdC0+cmVxdWVzdF9sb2NrLCBmbGFncyk7Cj4+CWlmICghcmVxdWVzdCkKPj4gCQlyZXR1 cm4gdHJ1ZTsKPj5AQCAtNzc3LDkgKzg0Miw5IEBAIHN0YXRpYyBpbnQgY3RfaGFuZGxlX3JlcXVl c3Qoc3RydWN0IGludGVsX2d1Y19jdCAKPj4qY3QsIGNvbnN0IHUzMiAqbXNnKQo+PiAJfQo+PiAJ bWVtY3B5KHJlcXVlc3QtPm1zZywgbXNnLCA0ICogbXNnbGVuKTsKPj4tCXNwaW5fbG9ja19pcnFz YXZlKCZjdC0+bG9jaywgZmxhZ3MpOwo+PisJc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0 X2xvY2ssIGZsYWdzKTsKPj4gCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmxpbmssICZjdC0+aW5j b21pbmdfcmVxdWVzdHMpOwo+Pi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPmxvY2ssIGZs YWdzKTsKPj4rCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0LT5yZXF1ZXN0X2xvY2ssIGZsYWdz KTsKPj4JcXVldWVfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJmN0LT53b3JrZXIpOwo+PiAJcmV0 dXJuIDA7Cj4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5oIAo+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmgKPj5p bmRleCA3YzI0ZDgzZjVjMjQuLmJjNjcwYTc5NmJkOCAxMDA2NDQKPj4tLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAo+PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCj4+QEAgLTYyLDggKzYyLDExIEBAIHN0cnVjdCBpbnRl bF9ndWNfY3Qgewo+PiAJc3RydWN0IGludGVsX2d1Y19jdF9jaGFubmVsIGhvc3RfY2hhbm5lbDsK Pj4gCS8qIG90aGVyIGNoYW5uZWxzIGFyZSB0YmQgKi8KPj4tCS8qKiBAbG9jazogcHJvdGVjdHMg cGVuZGluZyByZXF1ZXN0cyBsaXN0ICovCj4+LQlzcGlubG9ja190IGxvY2s7Cj4+KwkvKiogQHJl cXVlc3RfbG9jazogcHJvdGVjdHMgcGVuZGluZyByZXF1ZXN0cyBsaXN0ICovCj4+KwlzcGlubG9j a190IHJlcXVlc3RfbG9jazsKPj4rCj4+KwkvKiogQHNlbmRfbG9jazogcHJvdGVjdHMgaDJnIGNo YW5uZWwgKi8KPj4rCXNwaW5sb2NrX3Qgc2VuZF9sb2NrOwo+PgkvKiogQHBlbmRpbmdfcmVxdWVz dHM6IGxpc3Qgb2YgcmVxdWVzdHMgd2FpdGluZyBmb3IgcmVzcG9uc2UgKi8KPj4gCXN0cnVjdCBs aXN0X2hlYWQgcGVuZGluZ19yZXF1ZXN0czsKPj5AQCAtNzMsNiArNzYsOSBAQCBzdHJ1Y3QgaW50 ZWxfZ3VjX2N0IHsKPj4JLyoqIEB3b3JrZXI6IHdvcmtlciBmb3IgaGFuZGxpbmcgaW5jb21pbmcg cmVxdWVzdHMgKi8KPj4gCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrZXI7Cj4+Kwo+PisJLyoqIEBy ZXRyeTogdGhlIG51bWJlciBvZiB0aW1lcyBhIEgyRyBDVEIgaGFzIGJlZW4gcmV0cmllZCAqLwo+ PisJdTMyIHJldHJ5Owo+PiB9Owo+PnZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0 IGludGVsX2d1Y19jdCAqY3QpOwo+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPkludGVsLWdmeCBtYWlsaW5nIGxpc3QKPkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA== 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 AD28EC432C3 for ; Fri, 22 Nov 2019 00:19: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 836AA20674 for ; Fri, 22 Nov 2019 00:19:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 836AA20674 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 28FEA6E223; Fri, 22 Nov 2019 00:19:45 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3BEFB6E223 for ; Fri, 22 Nov 2019 00:19:43 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Nov 2019 16:19:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,227,1571727600"; d="scan'208";a="357975854" Received: from unknown (HELO sdutt) ([10.165.21.200]) by orsmga004.jf.intel.com with ESMTP; 21 Nov 2019 16:19:42 -0800 Date: Thu, 21 Nov 2019 16:13:25 -0800 From: Matthew Brost To: Michal Wajdeczko Message-ID: <20191122001325.GA92577@sdutt> References: <20191120235604.29047-1-John.C.Harrison@Intel.com> <20191120235604.29047-2-John.C.Harrison@Intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) 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" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191122001325.4331BhhKgvdTqA8SY0zgltbj_3Wfc4BYtEN27RW1wo8@z> T24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMTI6NDM6MjZQTSArMDEwMCwgTWljaGFsIFdhamRlY3pr byB3cm90ZToKPk9uIFRodSwgMjEgTm92IDIwMTkgMDA6NTY6MDIgKzAxMDAsIDxKb2huLkMuSGFy cmlzb25AaW50ZWwuY29tPiB3cm90ZToKPgo+PkZyb206IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcu YnJvc3RAaW50ZWwuY29tPgo+Pgo+PkFkZCBub24gYmxvY2tpbmcgQ1RCIHNlbmQgZnVjdGlvbiwg aW50ZWxfZ3VjX3NlbmRfbmIuIEluIG9yZGVyIHRvCj4+c3VwcG9ydCBhIG5vbiBibG9ja2luZyBD VEIgc2VuZCBmdWN0aW9uIGEgc3BpbiBsb2NrIGlzIG5lZWRlZCB0bwo+Cj4yeCB0eXBvcwo+Cj4+ cHJvdGVjdCB0aGUgQ1RCIGRlc2NyaXB0b3JzIGZpZWxkcy4gQWxzbyB0aGUgbm9uIGJsb2NraW5n IGNhbGwgbXVzdCBub3QKPj51cGRhdGUgdGhlIGZlbmNlIHZhbHVlIGFzIHRoaXMgdmFsdWUgaXMg b3duZWQgYnkgdGhlIGJsb2NraW5nIGNhbGwKPj4oaW50ZWxfZ3VjX3NlbmQpLgo+Cj55b3UgcHJv YmFibHkgbWVhbiAiaW50ZWxfZ3VjX3NlbmRfY3QiLCBhcyBpbnRlbF9ndWNfc2VuZCBpcyBqdXN0 IGEgd3JhcHBlcgo+YXJvdW5kIGd1Yy0+c2VuZAo+CgpBaCwgeWVzLgoKPj4KPj5UaGUgYmxvY2tp bmcgQ1RCIG5vdyBtdXN0IGhhdmUgYSBmbG93IGNvbnRyb2wgbWVjaGFuaXNtIHRvIGVuc3VyZSB0 aGUKPj5idWZmZXIgaXNuJ3Qgb3ZlcnJ1bi4gQSBsYXp5IHNwaW4gd2FpdCBpcyB1c2VkIGFzIHdl IGJlbGlldmUgdGhlIGZsb3cKPj5jb250cm9sIGNvbmRpdGlvbiBzaG91bGQgYmUgcmFyZSB3aXRo IHByb3Blcmx5IHNpemVkIGJ1ZmZlci4gQSByZXRyeQo+PmNvdW50ZXIgaXMgYWxzbyBpbXBsZW1l bnRlZCB3aGljaCBmYWlscyBIMkcgQ1RCcyBvbmNlIGEgbGltaXQgaXMKPj5yZWFjaGVkIHRvIHBy ZXZlbnQgZGVhZGxvY2suCj4+Cj4+VGhlIGZ1bmN0aW9uLCBpbnRlbF9ndWNfc2VuZF9uYiwgaXMg ZXhwb3J0ZWQgaW4gdGhpcyBwYXRjaCBidXQgdW51c2VkLgo+PlNldmVyYWwgcGF0Y2hlcyBsYXRl ciBpbiB0aGUgc2VyaWVzIG1ha2UgdXNlIG9mIHRoaXMgZnVuY3Rpb24uCj4KPkl0J3MgbGlrZWx5 IGluIHlldCBhbm90aGVyIHNlcmllcwo+CgpZZXMsIGl0IGlzLgoKPj4KPj5DYzogSm9obiBIYXJy aXNvbiA8am9obi5jLmhhcnJpc29uQGludGVsLmNvbT4KPj5TaWduZWQtb2ZmLWJ5OiBNYXR0aGV3 IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KPj4tLS0KPj4gZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggICAgfCAgMiArCj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19jdC5jIHwgOTcgKysrKysrKysrKysrKysrKysrKy0tLS0KPj4gZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmggfCAxMCArKy0KPj4gMyBmaWxl cyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKPj4KPj5kaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggCj4+Yi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+PmluZGV4IGU2NDAwMjA0YTJiZC4uNzdj NWFmOTE5YWNlIDEwMDY0NAo+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Yy5oCj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKPj5A QCAtOTQsNiArOTQsOCBAQCBpbnRlbF9ndWNfc2VuZF9hbmRfcmVjZWl2ZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsIAo+PmNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAo+PiAJcmV0dXJuIGd1Yy0+ c2VuZChndWMsIGFjdGlvbiwgbGVuLCByZXNwb25zZV9idWYsIHJlc3BvbnNlX2J1Zl9zaXplKTsK Pj4gfQo+PitpbnQgaW50ZWxfZ3VjX3NlbmRfbmIoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIGNv bnN0IHUzMiAqYWN0aW9uLCAKPj51MzIgbGVuKTsKPj4rCj4KPkhtbSwgdGhpcyBtaXNtYXRjaCBv ZiBndWMvY3QgcGFyYW1ldGVyIGJyZWFrcyB0aGUgb3VyIGxheWVyaW5nLgo+QnV0IHdlIGNhbiBr ZWVwIHRoaXMgbGF5ZXJpbmcgaW50YWN0IGJ5IGludHJvZHVjaW5nIHNvbWUgZmxhZ3MgdG8KPnRo ZSBleGlzdGluZyBndWNfc2VuZCgpIGZ1bmN0aW9uLiBUaGVzZSBmbGFncyBjb3VsZCBiZSBwYXNz ZWQgYXMKPmhpZ2ggYml0cyBpbiBhY3Rpb25bMF0sIGxpa2UgdGhpczoKClRoaXMgc2VlbXMgcmVh c29uYWJsZS4KCj4KPiNkZWZpbmUgR1VDX0FDVElPTl9GTEFHX0RPTlRfV0FJVCAweDgwMDAwMDAw Cj4KPmludCBpbnRlbF9ndWNfYXV0aF9odWMoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgcnNh X29mZnNldCkKPnsKPgl1MzIgYWN0aW9uW10gPSB7Cj4JCUlOVEVMX0dVQ19BQ1RJT05fQVVUSEVO VElDQVRFX0hVQyB8IEdVQ19BQ1RJT05fRkxBR19ET05UX1dBSVQsCj4JCXJzYV9vZmZzZXQKPgl9 Owo+Cj4JcmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlv bikpOwo+fQo+Cj50aGVuIGFjdHVhbCBiYWNrLWVuZCBvZiBndWMtPnNlbmQgY2FuIHRha2UgcHJv cGVyIHN0ZXBzIGJhc2VkIG9uIHRoaXMgZmxhZzoKPgo+QEAgaW50IGludGVsX2d1Y19zZW5kX21t aW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgCj51MzIgbGVuLAo+ ICAgICAgICBHRU1fQlVHX09OKCFsZW4pOwo+ICAgICAgICBHRU1fQlVHX09OKGxlbiA+IGd1Yy0+ c2VuZF9yZWdzLmNvdW50KTsKPgo+KyAgICAgICBpZiAoKmFjdGlvbiAmIEdVQ19BQ1RJT05fRkxB R19ET05UX1dBSVQpCj4rICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4rICAgICAgICph Y3Rpb24gJj0gfkdVQ19BQ1RJT05fRkxBR19ET05UX1dBSVQ7Cj4rCj4gICAgICAgIC8qIFdlIGV4 cGVjdCBvbmx5IGFjdGlvbiBjb2RlICovCj4gICAgICAgIEdFTV9CVUdfT04oKmFjdGlvbiAmIH5J TlRFTF9HVUNfTVNHX0NPREVfTUFTSyk7Cj4KPkBAIEBAIGludCBpbnRlbF9ndWNfc2VuZF9jdChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCAKPnUzMiBsZW4sCj4gICAg ICAgIHUzMiBzdGF0dXMgPSB+MDsgLyogdW5kZWZpbmVkICovCj4gICAgICAgIGludCByZXQ7Cj4K PisgICAgICAgaWYgKCphY3Rpb24gJiBHVUNfQUNUSU9OX0ZMQUdfRE9OVF9XQUlUKSB7Cj4rICAg ICAgICAgICAgICAgR0VNX0JVR19PTihyZXNwb25zZV9idWYpOwo+KyAgICAgICAgICAgICAgIEdF TV9CVUdfT04ocmVzcG9uc2VfYnVmX3NpemUpOwo+KyAgICAgICAgICAgICAgIHJldHVybiBjdGNo X3NlbmRfbmIoY3QsIGN0Y2gsIGFjdGlvbiwgbGVuKTsKPisgICAgICAgfQo+Kwo+ICAgICAgICBt dXRleF9sb2NrKCZndWMtPnNlbmRfbXV0ZXgpOwo+Cj4gICAgICAgIHJldCA9IGN0Y2hfc2VuZChj dCwgY3RjaCwgYWN0aW9uLCBsZW4sIHJlc3BvbnNlX2J1ZiwgCj5yZXNwb25zZV9idWZfc2l6ZSwK Pgo+Cj4+IHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndWNfbm90aWZ5KHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKPj4gewo+PiAJZ3VjLT5ub3RpZnkoZ3VjKTsKPj5kaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgCj4+Yi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYwo+PmluZGV4IGI0OTExNTUxNzUxMC4uZTUwZDk2OGIx NWQ1IDEwMDY0NAo+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19j dC5jCj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj5A QCAtMyw2ICszLDggQEAKPj4gICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOSBJbnRlbCBDb3Jwb3Jh dGlvbgo+PiAgKi8KPj4rI2luY2x1ZGUgPGxpbnV4L2NpcmNfYnVmLmg+Cj4+Kwo+PiAjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKPj4gI2luY2x1ZGUgImludGVsX2d1Y19jdC5oIgo+PkBAIC0xMiw2ICsx NCw4IEBACj4+ICNkZWZpbmUgQ1RfREVCVUdfRFJJVkVSKC4uLikJZG8geyB9IHdoaWxlICgwKQo+ PiAjZW5kaWYKPj4rI2RlZmluZSBNQVhfUkVUUlkJCTB4MTAwMDAwMAo+PisKPj4gc3RydWN0IGN0 X3JlcXVlc3Qgewo+PiAJc3RydWN0IGxpc3RfaGVhZCBsaW5rOwo+PiAJdTMyIGZlbmNlOwo+PkBA IC00MCw3ICs0NCw4IEBAIHZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0IGludGVs X2d1Y19jdCAqY3QpCj4+IAkvKiB3ZSdyZSB1c2luZyBzdGF0aWMgY2hhbm5lbCBvd25lcnMgKi8K Pj4gCWN0LT5ob3N0X2NoYW5uZWwub3duZXIgPSBDVEJfT1dORVJfSE9TVDsKPj4tCXNwaW5fbG9j a19pbml0KCZjdC0+bG9jayk7Cj4+KwlzcGluX2xvY2tfaW5pdCgmY3QtPnJlcXVlc3RfbG9jayk7 Cj4+KwlzcGluX2xvY2tfaW5pdCgmY3QtPnNlbmRfbG9jayk7Cj4+IAlJTklUX0xJU1RfSEVBRCgm Y3QtPnBlbmRpbmdfcmVxdWVzdHMpOwo+PiAJSU5JVF9MSVNUX0hFQUQoJmN0LT5pbmNvbWluZ19y ZXF1ZXN0cyk7Cj4+IAlJTklUX1dPUksoJmN0LT53b3JrZXIsIGN0X2luY29taW5nX3JlcXVlc3Rf d29ya2VyX2Z1bmMpOwo+PkBAIC0yOTEsNyArMjk2LDggQEAgc3RhdGljIHUzMiBjdGNoX2dldF9u ZXh0X2ZlbmNlKHN0cnVjdCAKPj5pbnRlbF9ndWNfY3RfY2hhbm5lbCAqY3RjaCkKPj4gc3RhdGlj IGludCBjdGJfd3JpdGUoc3RydWN0IGludGVsX2d1Y19jdF9idWZmZXIgKmN0YiwKPj4gCQkgICAg IGNvbnN0IHUzMiAqYWN0aW9uLAo+PiAJCSAgICAgdTMyIGxlbiAvKiBpbiBkd29yZHMgKi8sCj4+ LQkJICAgICB1MzIgZmVuY2UsCj4+KwkJICAgICB1MzIgZmVuY2VfdmFsdWUsCj4+KwkJICAgICBi b29sIGVuYWJsZV9mZW5jZSwKPgo+bWF5YmUgd2UgY2FuIGp1c3QgZ3VhcmFudGVlIHRoYXQgZmVu Y2U9MCB3aWxsIG5ldmVyIGJlIHVzZWQgYXMgYSB2YWxpZAo+ZmVuY2UgaWQsIHRoZW4gdGhpcyBm bGFnIGNvdWxkIGJlIHJlcGxhY2VkIHdpdGggKGZlbmNlICE9IDApIGNoZWNrLgo+CgpZZXMsIGFn YWluIHNlZW1zIHJlYXNvbmFibGUuIEluaXRpYWxpemUgbmV4dF9mZW5jZSA9IDEsIHRoZW4gaW5j cmVtZW50IGJ5IDIgZWFjaAp0aW1lIGFuZCB0aGlzIHdvcmtzLgoKPj4gCQkgICAgIGJvb2wgd2Fu dF9yZXNwb25zZSkKPj4gewo+PiAJc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyAqZGVzYyA9IGN0 Yi0+ZGVzYzsKPj5AQCAtMzI4LDE4ICszMzQsMTggQEAgc3RhdGljIGludCBjdGJfd3JpdGUoc3Ry dWN0IAo+PmludGVsX2d1Y19jdF9idWZmZXIgKmN0YiwKPj4gCSAqIERXMis6IGFjdGlvbiBkYXRh Cj4+IAkgKi8KPj4gCWhlYWRlciA9IChsZW4gPDwgR1VDX0NUX01TR19MRU5fU0hJRlQpIHwKPj4t CQkgKEdVQ19DVF9NU0dfV1JJVEVfRkVOQ0VfVE9fREVTQykgfAo+PisJCSAoZW5hYmxlX2ZlbmNl ID8gR1VDX0NUX01TR19XUklURV9GRU5DRV9UT19ERVNDIDogMCkgfAo+Cj5IbW0sIGV2ZW4gaWYg d2UgYXNrIGZ3IHRvIGRvIG5vdCB3cml0ZSBiYWNrIGZlbmNlIHRvIHRoZSBkZXNjcmlwdG9yLAo+ SUlSQyBjdXJyZW50IGZpcm13YXJlIHdpbGwgdW5jb25kaXRpb25hbGx5IHdyaXRlIGJhY2sgcmV0 dXJuIHN0YXR1cwo+b2YgdGhpcyBub24tYmxvY2tpbmcgY2FsbCwgcG9zc2libHkgb3ZlcndyaXRp bmcgc3RhdHVzIG9mIHRoZSBibG9ja2VkCj5jYWxsLgo+CgpZZXMsIGtub3duIHByb2JsZW0gd2l0 aCB0aGUgaW50ZXJmYWNlIHRoYXQgbmVlZHMgdG8gYmUgZml4ZWQuCgo+PiAJCSAod2FudF9yZXNw b25zZSA/IEdVQ19DVF9NU0dfU0VORF9TVEFUVVMgOiAwKSB8Cj4KPmJ0dywgaWYgd2Ugc3dpdGNo IGFsbCByZXF1ZXN0cyB0byBleHBlY3QgcmVwbHkgc2VuZCBiYWNrIG92ZXIgQ1RCLAo+dGhlbiB3 ZSBjYW4gcG9zc2libHkgZHJvcCB0aGUgc2VuZF9tdXRleCBpbiBDVEIgcGF0aHMsIGFuZCBibG9j awo+b25seSB3aGVuIHRoZXJlIGlzIG5vIERPTlRfV0FJVCBmbGFnIGFuZCB3ZSBoYXZlIHRvIHdh aXQgZm9yIHJlc3BvbnNlLgo+CgpSYXRoZXIganVzdCB3YWl0IGZvciB0aGUgR3VDIHRvIGZpeCB0 aGlzLgoKPj4gCQkgKGFjdGlvblswXSA8PCBHVUNfQ1RfTVNHX0FDVElPTl9TSElGVCk7Cj4+CUNU X0RFQlVHX0RSSVZFUigiQ1Q6IHdyaXRpbmcgJSpwaCAlKnBoICUqcGhcbiIsCj4+LQkJCTQsICZo ZWFkZXIsIDQsICZmZW5jZSwKPj4rCQkJNCwgJmhlYWRlciwgNCwgJmZlbmNlX3ZhbHVlLAo+PiAJ CQk0ICogKGxlbiAtIDEpLCAmYWN0aW9uWzFdKTsKPj4JY21kc1t0YWlsXSA9IGhlYWRlcjsKPj4g CXRhaWwgPSAodGFpbCArIDEpICUgc2l6ZTsKPj4tCWNtZHNbdGFpbF0gPSBmZW5jZTsKPj4rCWNt ZHNbdGFpbF0gPSBmZW5jZV92YWx1ZTsKPj4gCXRhaWwgPSAodGFpbCArIDEpICUgc2l6ZTsKPj4J Zm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKSB7Cj4+QEAgLTQ0MCw2ICs0NDYsNDcgQEAgc3RhdGlj IGludCB3YWl0X2Zvcl9jdF9yZXF1ZXN0X3VwZGF0ZShzdHJ1Y3QgCj4+Y3RfcmVxdWVzdCAqcmVx LCB1MzIgKnN0YXR1cykKPj4gCXJldHVybiBlcnI7Cj4+IH0KPj4rc3RhdGljIGlubGluZSBib29s IGN0Yl9oYXNfcm9vbShzdHJ1Y3QgZ3VjX2N0X2J1ZmZlcl9kZXNjICpkZXNjLCAKPj51MzIgbGVu KQo+Pit7Cj4+Kwl1MzIgaGVhZCA9IFJFQURfT05DRShkZXNjLT5oZWFkKTsKPj4rCXUzMiBzcGFj ZTsKPj4rCj4+KwlzcGFjZSA9IENJUkNfU1BBQ0UoZGVzYy0+dGFpbCwgaGVhZCwgZGVzYy0+c2l6 ZSk7Cj4+Kwo+PisJcmV0dXJuIHNwYWNlID49IGxlbjsKPj4rfQo+PisKPj4raW50IGludGVsX2d1 Y19zZW5kX25iKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAo+PisJCSAgICAgIGNvbnN0IHUzMiAq YWN0aW9uLAo+PisJCSAgICAgIHUzMiBsZW4pCj4+K3sKPj4rCXN0cnVjdCBpbnRlbF9ndWNfY3Rf Y2hhbm5lbCAqY3RjaCA9ICZjdC0+aG9zdF9jaGFubmVsOwo+PisJc3RydWN0IGludGVsX2d1Y19j dF9idWZmZXIgKmN0YiA9ICZjdGNoLT5jdGJzW0NUQl9TRU5EXTsKPj4rCXN0cnVjdCBndWNfY3Rf YnVmZmVyX2Rlc2MgKmRlc2MgPSBjdGItPmRlc2M7Cj4+KwlpbnQgZXJyOwo+PisKPj4rCUdFTV9C VUdfT04oIWN0Y2gtPmVuYWJsZWQpOwo+PisJR0VNX0JVR19PTighbGVuKTsKPj4rCUdFTV9CVUdf T04obGVuICYgfkdVQ19DVF9NU0dfTEVOX01BU0spOwo+PisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm Y3QtPnNlbmRfbG9jayk7Cj4KPmhtbSwgZG9lcyBpdCBtZWFuIHRoYXQgbm93IGl0J3MgY2FsbGVy IHJlc3BvbnNpYmlsaXR5IHRvIHNwaW5sb2NrCj5vbiBDVCBwcml2YXRlIGxvY2sgPyBUaGF0IGlz IG5vdCBob3cgb3RoZXIgZ3VjX3NlbmQoKSBmdW5jdGlvbnMgd29yay4KPgoKWWVzLCB0aGF0IGhv dyBJIHdvdWxkIGxpa2UgdGhpcyB3b3JrIGFzIEkgZmVlbCBsaWtlIGl0IGdpdmVzIG1vcmUgZmxl eGFiaWxpdHkgdG8KdGhlIGNhbGxlciBvbiB0aGUgLUVCVVNZIGNhc2UuIFRoZSBjYWxsZXIgY2Fu IGNhbGwgaW50ZWxfZ3VjX3NlbmRfbmIgYWdhaW4gd2hpbGUKc3RpbGwgaG9sZGluZyB0aGUgbG9j ayBvciBpdCByZWxlYXNlIGxvY2sgdGhlIGFuZCB1c2UgYSBkaWZmZXJlbnQgZm9ybSBvZiBmbG93 CmNvbnRyb2wuIFBlcmhhcHMgbG9ja2luZyAvIHVubG9ja2luZyBzaG91bGQgYmUgZXhwb3NlZCB2 aWEgc3RhdGljIGlubGluZXMgcmF0aGVyCnRoYW4gdGhlIGNhbGxlciBkaXJlY3RseSBtYW5pcHVs YXRpbmcgdGhlIGxvY2s/Cgo+PisKPj4rCWlmICh1bmxpa2VseSghY3RiX2hhc19yb29tKGRlc2Ms IChsZW4gKyAxKSAqIDQpKSkgewo+PisJCWN0LT5yZXRyeSsrOwo+PisJCWlmIChjdC0+cmV0cnkg Pj0gTUFYX1JFVFJZKQo+PisJCQlyZXR1cm4gLUVERUFETEs7Cj4+KwkJZWxzZQo+PisJCQlyZXR1 cm4gLUVCVVNZOwo+PisJfQo+PisKPj4rCWN0LT5yZXRyeSA9IDA7Cj4+KwllcnIgPSBjdGJfd3Jp dGUoY3RiLCBhY3Rpb24sIGxlbiwgMCwgZmFsc2UsIGZhbHNlKTsKPj4rCWlmICh1bmxpa2VseShl cnIpKQo+PisJCXJldHVybiBlcnI7Cj4+Kwo+PisJaW50ZWxfZ3VjX25vdGlmeShjdF90b19ndWMo Y3QpKTsKPj4rCXJldHVybiAwOwo+Pit9Cj4+Kwo+PiBzdGF0aWMgaW50IGN0Y2hfc2VuZChzdHJ1 Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKPj4gCQkgICAgIHN0cnVjdCBpbnRlbF9ndWNfY3RfY2hhbm5l bCAqY3RjaCwKPj4gCQkgICAgIGNvbnN0IHUzMiAqYWN0aW9uLAo+PkBAIC00NjAsMTcgKzUwNywz NSBAQCBzdGF0aWMgaW50IGN0Y2hfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKPj4gCUdF TV9CVUdfT04obGVuICYgfkdVQ19DVF9NU0dfTEVOX01BU0spOwo+PiAJR0VNX0JVR19PTighcmVz cG9uc2VfYnVmICYmIHJlc3BvbnNlX2J1Zl9zaXplKTsKPj4rCS8qCj4+KwkgKiBXZSB1c2UgYSBs YXp5IHNwaW4gd2FpdCBsb29wIGhlcmUgYXMgd2UgYmVsaWV2ZSB0aGF0IGlmIHRoZSBDVAo+PisJ ICogYnVmZmVycyBhcmUgc2l6ZWQgY29ycmVjdGx5IHRoZSBmbG93IGNvbnRyb2wgY29uZGl0aW9u IHNob3VsZCBiZQo+PisJICogcmFyZS4KPj4rCSAqLwo+PityZXRyeToKPj4rCXNwaW5fbG9ja19p cnFzYXZlKCZjdC0+c2VuZF9sb2NrLCBmbGFncyk7Cj4+KwlpZiAodW5saWtlbHkoIWN0Yl9oYXNf cm9vbShkZXNjLCAobGVuICsgMSkgKiA0KSkpIHsKPj4rCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjdC0+c2VuZF9sb2NrLCBmbGFncyk7Cj4+KwkJY3QtPnJldHJ5Kys7Cj4+KwkJaWYgKGN0LT5y ZXRyeSA+PSBNQVhfUkVUUlkpCj4+KwkJCXJldHVybiAtRURFQURMSzsKPgo+SSdtIG5vdCBzdXJl IHdoYXQncyBiZXR0ZXI6IGhhdmUgc2VjcmV0IGRlYWRsb2NrIGhhcmQgdG8gcmVwcm9kdWNlLAo+ b3IgZGVhZGxvY2tzIGVhc2llciB0byBjYXRjaCB0aGF0IGhlbHBzIGltcHJvdmUgdG8gYmUgZGVh ZGxvY2stY2xlYW4KPgoKVGhpcyBpcyBjb3ZlcmluZyB0aGUgY2FzZSB3aGVyZSB0aGUgaGFzIGRp ZWQgYW5kIHRvIGF2b2lkIGRlYWRsb2NrLiBFdmVudHVhbGx5CndlIHdpbGwgaGF2ZSBzb21lIEd1 QyBoZWFsdGggY2hlY2sgY29kZSB0aGF0IHdpbGwgdHJpZ2dlciBhIGZ1bGwgR1BVIHJlc2V0IGlm CnRoZSBHdUMgaGFzIGRpZWQuIFdlIG5lZWQgYSB3YXkgZm9yIGNvZGUgc3Bpbm5pbmcgb24gdGhl IENUQnMgdG8gZXhpdC4KCkkndmUgYWxyZWFkeSB0d2Vha2VkIHRoaXMgY29kZSBsb2NhbGx5IGEg Yml0IHRvIHVzZSBhbiBhdG9taWMgdG9vIHdpdGggdGhlIGlkZWEKYmVpbmcgdGhlIEd1QyBoZWFs dGggY2hlY2sgY29kZSBjYW4gc2V0IHRoaXMgdmFsdWUgdG8gaGF2ZSBhbGwgY29kZSBzcGlubmlu ZyBvbgpDVEJzIGltbWVkaWF0ZWx5IHJldHVybiAtLUVERUFETEsgd2hlbiB0aGUgR3VDIGhhcyBk aWVkLgoKPj4rCQljcHVfcmVsYXgoKTsKPj4rCQlnb3RvIHJldHJ5Owo+PisJfQo+PisKPj4rCWN0 LT5yZXRyeSA9IDA7Cj4+IAlmZW5jZSA9IGN0Y2hfZ2V0X25leHRfZmVuY2UoY3RjaCk7Cj4+IAly ZXF1ZXN0LmZlbmNlID0gZmVuY2U7Cj4+IAlyZXF1ZXN0LnN0YXR1cyA9IDA7Cj4+IAlyZXF1ZXN0 LnJlc3BvbnNlX2xlbiA9IHJlc3BvbnNlX2J1Zl9zaXplOwo+PiAJcmVxdWVzdC5yZXNwb25zZV9i dWYgPSByZXNwb25zZV9idWY7Cj4+LQlzcGluX2xvY2tfaXJxc2F2ZSgmY3QtPmxvY2ssIGZsYWdz KTsKPj4rCXNwaW5fbG9jaygmY3QtPnJlcXVlc3RfbG9jayk7Cj4+IAlsaXN0X2FkZF90YWlsKCZy ZXF1ZXN0LmxpbmssICZjdC0+cGVuZGluZ19yZXF1ZXN0cyk7Cj4+LQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjdC0+bG9jaywgZmxhZ3MpOwo+PisJc3Bpbl91bmxvY2soJmN0LT5yZXF1ZXN0X2xv Y2spOwo+Pi0JZXJyID0gY3RiX3dyaXRlKGN0YiwgYWN0aW9uLCBsZW4sIGZlbmNlLCAhIXJlc3Bv bnNlX2J1Zik7Cj4+KwllcnIgPSBjdGJfd3JpdGUoY3RiLCBhY3Rpb24sIGxlbiwgZmVuY2UsIHRy dWUsICEhcmVzcG9uc2VfYnVmKTsKPj4rCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0LT5zZW5k X2xvY2ssIGZsYWdzKTsKPj4gCWlmICh1bmxpa2VseShlcnIpKQo+PiAJCWdvdG8gdW5saW5rOwo+ PkBAIC01MDEsOSArNTY2LDkgQEAgc3RhdGljIGludCBjdGNoX3NlbmQoc3RydWN0IGludGVsX2d1 Y19jdCAqY3QsCj4+IAl9Cj4+dW5saW5rOgo+Pi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5sb2Nr LCBmbGFncyk7Cj4+KwlzcGluX2xvY2tfaXJxc2F2ZSgmY3QtPnJlcXVlc3RfbG9jaywgZmxhZ3Mp Owo+PiAJbGlzdF9kZWwoJnJlcXVlc3QubGluayk7Cj4+LQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjdC0+bG9jaywgZmxhZ3MpOwo+PisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPnJlcXVl c3RfbG9jaywgZmxhZ3MpOwo+PglyZXR1cm4gZXJyOwo+PiB9Cj4+QEAgLTY1Myw3ICs3MTgsNyBA QCBzdGF0aWMgaW50IGN0X2hhbmRsZV9yZXNwb25zZShzdHJ1Y3QgCj4+aW50ZWxfZ3VjX2N0ICpj dCwgY29uc3QgdTMyICptc2cpCj4+CUNUX0RFQlVHX0RSSVZFUigiQ1Q6IHJlc3BvbnNlIGZlbmNl ICV1IHN0YXR1cyAlI3hcbiIsIGZlbmNlLCBzdGF0dXMpOwo+Pi0Jc3Bpbl9sb2NrKCZjdC0+bG9j ayk7Cj4+KwlzcGluX2xvY2soJmN0LT5yZXF1ZXN0X2xvY2spOwo+PiAJbGlzdF9mb3JfZWFjaF9l bnRyeShyZXEsICZjdC0+cGVuZGluZ19yZXF1ZXN0cywgbGluaykgewo+PiAJCWlmICh1bmxpa2Vs eShmZW5jZSAhPSByZXEtPmZlbmNlKSkgewo+PiAJCQlDVF9ERUJVR19EUklWRVIoIkNUOiByZXF1 ZXN0ICV1IGF3YWl0cyByZXNwb25zZVxuIiwKPj5AQCAtNjcyLDcgKzczNyw3IEBAIHN0YXRpYyBp bnQgY3RfaGFuZGxlX3Jlc3BvbnNlKHN0cnVjdCAKPj5pbnRlbF9ndWNfY3QgKmN0LCBjb25zdCB1 MzIgKm1zZykKPj4gCQlmb3VuZCA9IHRydWU7Cj4+IAkJYnJlYWs7Cj4+IAl9Cj4+LQlzcGluX3Vu bG9jaygmY3QtPmxvY2spOwo+PisJc3Bpbl91bmxvY2soJmN0LT5yZXF1ZXN0X2xvY2spOwo+Pglp ZiAoIWZvdW5kKQo+PiAJCURSTV9FUlJPUigiQ1Q6IHVuc29saWNpdGVkIHJlc3BvbnNlICUqcGhc biIsIDQgKiBtc2dsZW4sIG1zZyk7Cj4+QEAgLTcxMCwxMyArNzc1LDEzIEBAIHN0YXRpYyBib29s IAo+PmN0X3Byb2Nlc3NfaW5jb21pbmdfcmVxdWVzdHMoc3RydWN0IGludGVsX2d1Y19jdCAqY3Qp Cj4+IAl1MzIgKnBheWxvYWQ7Cj4+IAlib29sIGRvbmU7Cj4+LQlzcGluX2xvY2tfaXJxc2F2ZSgm Y3QtPmxvY2ssIGZsYWdzKTsKPj4rCXNwaW5fbG9ja19pcnFzYXZlKCZjdC0+cmVxdWVzdF9sb2Nr LCBmbGFncyk7Cj4+IAlyZXF1ZXN0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZjdC0+aW5j b21pbmdfcmVxdWVzdHMsCj4+IAkJCQkJICAgc3RydWN0IGN0X2luY29taW5nX3JlcXVlc3QsIGxp bmspOwo+PiAJaWYgKHJlcXVlc3QpCj4+IAkJbGlzdF9kZWwoJnJlcXVlc3QtPmxpbmspOwo+PiAJ ZG9uZSA9ICEhbGlzdF9lbXB0eSgmY3QtPmluY29taW5nX3JlcXVlc3RzKTsKPj4tCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmN0LT5sb2NrLCBmbGFncyk7Cj4+KwlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjdC0+cmVxdWVzdF9sb2NrLCBmbGFncyk7Cj4+CWlmICghcmVxdWVzdCkKPj4gCQlyZXR1 cm4gdHJ1ZTsKPj5AQCAtNzc3LDkgKzg0Miw5IEBAIHN0YXRpYyBpbnQgY3RfaGFuZGxlX3JlcXVl c3Qoc3RydWN0IGludGVsX2d1Y19jdCAKPj4qY3QsIGNvbnN0IHUzMiAqbXNnKQo+PiAJfQo+PiAJ bWVtY3B5KHJlcXVlc3QtPm1zZywgbXNnLCA0ICogbXNnbGVuKTsKPj4tCXNwaW5fbG9ja19pcnFz YXZlKCZjdC0+bG9jaywgZmxhZ3MpOwo+PisJc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0 X2xvY2ssIGZsYWdzKTsKPj4gCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmxpbmssICZjdC0+aW5j b21pbmdfcmVxdWVzdHMpOwo+Pi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3QtPmxvY2ssIGZs YWdzKTsKPj4rCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0LT5yZXF1ZXN0X2xvY2ssIGZsYWdz KTsKPj4JcXVldWVfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJmN0LT53b3JrZXIpOwo+PiAJcmV0 dXJuIDA7Cj4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5oIAo+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmgKPj5p bmRleCA3YzI0ZDgzZjVjMjQuLmJjNjcwYTc5NmJkOCAxMDA2NDQKPj4tLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAo+PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCj4+QEAgLTYyLDggKzYyLDExIEBAIHN0cnVjdCBpbnRl bF9ndWNfY3Qgewo+PiAJc3RydWN0IGludGVsX2d1Y19jdF9jaGFubmVsIGhvc3RfY2hhbm5lbDsK Pj4gCS8qIG90aGVyIGNoYW5uZWxzIGFyZSB0YmQgKi8KPj4tCS8qKiBAbG9jazogcHJvdGVjdHMg cGVuZGluZyByZXF1ZXN0cyBsaXN0ICovCj4+LQlzcGlubG9ja190IGxvY2s7Cj4+KwkvKiogQHJl cXVlc3RfbG9jazogcHJvdGVjdHMgcGVuZGluZyByZXF1ZXN0cyBsaXN0ICovCj4+KwlzcGlubG9j a190IHJlcXVlc3RfbG9jazsKPj4rCj4+KwkvKiogQHNlbmRfbG9jazogcHJvdGVjdHMgaDJnIGNo YW5uZWwgKi8KPj4rCXNwaW5sb2NrX3Qgc2VuZF9sb2NrOwo+PgkvKiogQHBlbmRpbmdfcmVxdWVz dHM6IGxpc3Qgb2YgcmVxdWVzdHMgd2FpdGluZyBmb3IgcmVzcG9uc2UgKi8KPj4gCXN0cnVjdCBs aXN0X2hlYWQgcGVuZGluZ19yZXF1ZXN0czsKPj5AQCAtNzMsNiArNzYsOSBAQCBzdHJ1Y3QgaW50 ZWxfZ3VjX2N0IHsKPj4JLyoqIEB3b3JrZXI6IHdvcmtlciBmb3IgaGFuZGxpbmcgaW5jb21pbmcg cmVxdWVzdHMgKi8KPj4gCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrZXI7Cj4+Kwo+PisJLyoqIEBy ZXRyeTogdGhlIG51bWJlciBvZiB0aW1lcyBhIEgyRyBDVEIgaGFzIGJlZW4gcmV0cmllZCAqLwo+ PisJdTMyIHJldHJ5Owo+PiB9Owo+PnZvaWQgaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoc3RydWN0 IGludGVsX2d1Y19jdCAqY3QpOwo+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPkludGVsLWdmeCBtYWlsaW5nIGxpc3QKPkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==