From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v2 4/5] drm/i915/guc: rework guc_add_workqueue_item() Date: Thu, 5 May 2016 19:38:52 +0100 Message-ID: <572B933C.7080701@intel.com> References: <1461780195-17434-1-git-send-email-david.s.gordon@intel.com> <1461780195-17434-4-git-send-email-david.s.gordon@intel.com> <57238158.6090903@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 11D9A6E125 for ; Thu, 5 May 2016 18:38:55 +0000 (UTC) In-Reply-To: <57238158.6090903@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjkvMDQvMjAxNiAxNjo0NCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBPbiAyNy8wNC8x NiAxOTowMywgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+IE1vc3RseSBsaXR0bGUgb3B0aW1pc2F0aW9u czsgZm9yIGluc3RhbmNlLCBpZiB0aGUgZHJpdmVyIGlzIGNvcnJlY3RseQo+PiBmb2xsb3dpbmcg dGhlIHN1Ym1pc3Npb24gcHJvdG9jb2wsIHRoZSAib3V0IG9mIHNwYWNlIiBjb25kaXRpb24gaXMK Pj4gaW1wb3NzaWJsZSwgc28gdGhlIHByZXZpb3VzIHJ1bnRpbWUgV0FSTl9PTigpIGlzIHByb21v dGVkIHRvIGEKPj4gR0VNX0JVR19PTigpIGZvciBhIG1vcmUgZHJhbWF0aWMgZWZmZWN0IGluIGRl dmVsb3BtZW50IGFuZCBsZXNzIGltcGFjdAo+PiBpbiBlbmQtdXNlciBzeXN0ZW1zLgo+Pgo+PiBT aW1pbGFybHkgd2UgY2FuIHJlcGxhY2Ugb3RoZXIgV0FSTl9PTigpIGNvbmRpdGlvbnMgdGhhdCBk b24ndCByZWxhdGUgdG8KPj4gdGhlIGhhcmR3YXJlIHN0YXRlIHdpdGggZWl0aGVyIEJVSUxEX0JV R19PTigpIGZvciBjb21waWxlLXRpbWUtCj4+IGRldGVjdGFibGUgaXNzdWVzLCBvciBHRU1fQlVH X09OKCkgZm9yIGxvZ2ljYWwgImNhbid0IGhhcHBlbiIgZXJyb3JzLgo+Pgo+PiBXaXRoIHRob3Nl IGNoYW5nZXMsIHdlIGNhbiBjb252ZXJ0IGl0IHRvIHZvaWQsIGFzIHN1Z2dlc3RlZCBieSBDaHJp cwo+PiBXaWxzb24sIGFuZCB1cGRhdGUgdGhlIGNhbGxpbmcgY29kZSBhcHByb3ByaWF0ZWx5Lgo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29t Pgo+PiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+Cj4+IC0t LQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDY5IAo+ PiArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgMiArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19md2lmLmggICAgICB8ICAzICstCj4+ICAgMyBmaWxlcyBjaGFuZ2VkLCAzNyBp bnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gaW5kZXggNjYyNmVmZi4uNGQyZWE4NCAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+PiBAQCAt NDcwLDIzICs0NzAsMjggQEAgaW50IGk5MTVfZ3VjX3dxX2NoZWNrX3NwYWNlKHN0cnVjdCAKPj4g ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4+ICAgICAgIHJldHVybiAtRUFHQUlOOwo+ PiAgIH0KPj4KPj4gLXN0YXRpYyBpbnQgZ3VjX2FkZF93b3JrcXVldWVfaXRlbShzdHJ1Y3QgaTkx NV9ndWNfY2xpZW50ICpnYywKPj4gLSAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcnEpCj4+ICtzdGF0aWMgdm9pZCBndWNfYWRkX3dvcmtxdWV1ZV9pdGVtKHN0 cnVjdCBpOTE1X2d1Y19jbGllbnQgKmdjLAo+PiArICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4+ICAgewo+PiArICAgIC8qIHdxaV9sZW4gaXMgaW4g RFdvcmRzLCBhbmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgb25lLXdvcmQgCj4+IGhlYWRlciAqLwo+ PiArICAgIGNvbnN0IHNpemVfdCB3cWlfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3VjX3dxX2l0ZW0p Owo+Cj4gQWdhaW4sIHUzMiBpcyBjb3JyZWN0IEkgdGhpbmsuCk5vcGUsIGl0J3MgYSBzaXplb2Yo KSwgYnV0IHRoZSBjb21waWxlciB3aWxsIGNoZWNrIHRoYXQgaXQgZml0cyBpbiB1MzIgCndoZW4g d2UgY29udmVydCBpdCB0byBEV29yZHMgYmVsb3cuCj4KPj4gKyAgICBjb25zdCB1MzIgd3FpX2xl biA9IHdxaV9zaXplL3NpemVvZih1MzIpIC0gMTsKPj4gICAgICAgc3RydWN0IGd1Y19wcm9jZXNz X2Rlc2MgKmRlc2M7Cj4+ICAgICAgIHN0cnVjdCBndWNfd3FfaXRlbSAqd3FpOwo+PiAgICAgICB2 b2lkICpiYXNlOwo+PiAtICAgIHUzMiB0YWlsLCB3cV9sZW4sIHdxX29mZiwgc3BhY2U7Cj4+ICsg ICAgdTMyIHNwYWNlLCB0YWlsLCB3cV9vZmYsIHdxX3BhZ2U7Cj4+Cj4+ICAgICAgIGRlc2MgPSBn Yy0+Y2xpZW50X2Jhc2UgKyBnYy0+cHJvY19kZXNjX29mZnNldDsKPj4gKwo+PiArICAgIC8qIFNw YWNlIHdhcyBjaGVja2VkIGVhcmxpZXIsIGluIGk5MTVfZ3VjX3dxX2NoZWNrX3NwYWNlKCkgYWJv dmUgKi8KPgo+IEl0IG1heSBiZSBhYm92ZSBpbiB0aGUgZmlsZSwgYnV0IHRoZSB0d28gZG8gbm90 IGNhbGwgb25lIGFub3RoZXIgc28gSSAKPiByZWNvbW1lbmQgc2F5aW5nIGV4YWN0bHkgd2hvIGNh bGxlZCBpdC4KSSBkb24ndCByZWFsbHkgbWluZCB3aG8gY2FsbGVkIGl0LCBhcyBsb25nIGFzIGl0 IHdhcyBjYWxsZWQgc29tZXRpbWUgCmVhcmxpZXIgaW4gdGhlIHJlcXVlc3Qgc3VibWlzc2lvbiBw cm90b2NvbCAtLSB0aGUgY2FsbHNpdGUgbWF5IGdldCBtb3ZlZCAKYXJvdW5kIGEgYml0LiBVc2Ug Y3Njb3BlKDEpIG9yIHlvdXIgZmF2b3VyaXRlIElERSB0byBmaW5kIGl0Lgo+Cj4+ICAgICAgIHNw YWNlID0gQ0lSQ19TUEFDRShnYy0+d3FfdGFpbCwgZGVzYy0+aGVhZCwgZ2MtPndxX3NpemUpOwo+ PiAtICAgIGlmIChXQVJOX09OKHNwYWNlIDwgc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSkpKQo+ PiAtICAgICAgICByZXR1cm4gLUVOT1NQQzsgLyogc2hvdWxkbid0IGhhcHBlbiAqLwo+PiArICAg IEdFTV9CVUdfT04oc3BhY2UgPCB3cWlfc2l6ZSk7Cj4KPiBJdCBpcyBpbXBvc3NpYmxlIHRvIGhp dCB0aGlzIG9ubHkgYmVjYXVzZSBvZiB0aGUgc3RydWN0X211dGV4IGd1YXJkaW5nIAo+IHRoZSB3 aG9sZSB0aW1lIHdpbmRvdyBmcm9tIHJlcXVlc3QgY3JlYXRpb24gdG8gc3VibWlzc2lvbi4gSWYg aW4gdGhlIAo+IGZ1dHVyZSwgbmVhciBvciBmYXIsIHRoYXQgZ2V0cyBmaXhlZCwgdGhlbiB0aGlz IHdpbGwgbmVlZCByZXdvcmtpbmcuCj4KPiBJIGRvbid0IGhhdmUgYW55IGJldHRlciBpZGVhcyB0 aG91Z2guCj4KPiBCdXQgYSBXQVJOX09OIGFuZCByZXR1cm4gd291bGQgYmUgYWxtb3N0IGFzIGdv b2QuIEV2ZXJ5dGhpbmcgaXMgYmV0dGVyIAo+IHRoYW4gYSBkZWFkIG1hY2hpbmUgb25lIGNhbid0 IHNzaCBpbnRvLi4uCj4KPiBTbyBJIGFwcGVhbCB0byBtYWtlIHRoaXMgYSBXQVJOX09OIGFuZCBy ZXR1cm4uIE5vdGhpbmcgYmFkIHdvdWxkIAo+IGhhcHBlbiBhcGFydCBmcm9tIHNvZnR3YXJlIHRo aW5raW5nIEdQVSBoYXMgaHVuZy4KSWYgdGhlIGRyaXZlciB2aW9sYXRlcyB0aGUgc2VxdWVuY2lu ZyBvZiBjaGVjaytzdWJtaXQgdGhlbiBpdCBkb2VzIAppbmRlZWQgcmVxdWlyZSByZXdvcmtpbmcg LS0gdGhhdCB3b3VsZCBiZSBhIGJ1Zy4gSGVuY2UgKEdFTV8pQlVHX09OKCkuCj4KPj4KPj4gLSAg ICAvKiBwb3N0aW5jcmVtZW50IFdRIHRhaWwgZm9yIG5leHQgdGltZSAqLwo+PiAtICAgIHdxX29m ZiA9IGdjLT53cV90YWlsOwo+PiAtICAgIGdjLT53cV90YWlsICs9IHNpemVvZihzdHJ1Y3QgZ3Vj X3dxX2l0ZW0pOwo+PiAtICAgIGdjLT53cV90YWlsICY9IGdjLT53cV9zaXplIC0gMTsKPj4gKyAg ICAvKiBUaGUgR3VDIGZpcm13YXJlIHdhbnRzIHRoZSB0YWlsIGluZGV4IGluIFFXb3Jkcywgbm90 IGJ5dGVzICovCj4+ICsgICAgdGFpbCA9IHJxLT50YWlsOwo+Cj4gVXNlZCB0byBiZSBzYW1wbGVk IGZyb20gcnEtPnJpbmdidWYtPnRhaWwgLSBhcmUgdGhvc2UgdGhlIHNhbWU/Ckl0IHNob3VsZCBh bHdheXMgaGF2ZSBiZWVuIHJxLT50YWlsOyB0aGV5J3JlIHRoZSBzYW1lIGF0IHByZXNlbnQgYmVj YXVzZSAKaXQgd2FzIGNvcGllZCBmcm9tIHJpbmdidWZmZXIgYXMgcGFydCBvZiB0aGUgc3VibWlz c2lvbiBwcm9jZXNzLCBidXQgaXQgCm1pZ2h0IG5vdCBiZSB0aGUgc2FtZSB3aXRoIHRoZSBzY2hl ZHVsZXIgJiBwcmVlbXB0aW9uLiBTbyBsZXQncyBnZXQgaXQgCnJpZ2h0IGJlZm9yZSBpdCBiZWNv bWVzIGEgbXlzdGVyaW91cyBidWcuCj4KPj4gKyAgICBHRU1fQlVHX09OKHRhaWwgJiA3KTsKPj4g KyAgICB0YWlsID4+PSAzOwo+PiArICAgIEdFTV9CVUdfT04odGFpbCA+IFdRX1JJTkdfVEFJTF9N QVgpOwo+Pgo+PiAgICAgICAvKiBGb3Igbm93IHdvcmtxdWV1ZSBpdGVtIGlzIDQgRFdzOyB3b3Jr cXVldWUgYnVmZmVyIGlzIDIgCj4+IHBhZ2VzLiBTbyB3ZQo+PiAgICAgICAgKiBzaG91bGQgbm90 IGhhdmUgdGhlIGNhc2Ugd2hlcmUgc3RydWN0dXJlIHdxaSBpcyBhY3Jvc3MgcGFnZSwgCj4+IG5l aXRoZXIKPj4gQEAgLTQ5NSwxOSArNTAwLDIzIEBAIHN0YXRpYyBpbnQgZ3VjX2FkZF93b3JrcXVl dWVfaXRlbShzdHJ1Y3QgCj4+IGk5MTVfZ3VjX2NsaWVudCAqZ2MsCj4+ICAgICAgICAqIFhYWDog aWYgbm90IHRoZSBjYXNlLCB3ZSBuZWVkIHNhdmUgZGF0YSB0byBhIHRlbXAgd3FpIGFuZCAKPj4g Y29weSBpdCB0bwo+PiAgICAgICAgKiB3b3JrcXVldWUgYnVmZmVyIGR3IGJ5IGR3Lgo+PiAgICAg ICAgKi8KPj4gLSAgICBXQVJOX09OKHNpemVvZihzdHJ1Y3QgZ3VjX3dxX2l0ZW0pICE9IDE2KTsK Pj4gLSAgICBXQVJOX09OKHdxX29mZiAmIDMpOwo+PiArICAgIEJVSUxEX0JVR19PTih3cWlfc2l6 ZSAhPSAxNik7Cj4+Cj4+IC0gICAgLyogd3Egc3RhcnRzIGZyb20gdGhlIHBhZ2UgYWZ0ZXIgZG9v cmJlbGwgLyBwcm9jZXNzX2Rlc2MgKi8KPj4gLSAgICBiYXNlID0ga21hcF9hdG9taWMoaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlKGdjLT5jbGllbnRfb2JqLAo+PiAtICAgICAgICAgICAgKHdxX29m ZiArIEdVQ19EQl9TSVpFKSA+PiBQQUdFX1NISUZUKSk7Cj4+ICsgICAgLyogcG9zdGluY3JlbWVu dCBXUSB0YWlsIGZvciBuZXh0IHRpbWUgKi8KPj4gKyAgICB3cV9vZmYgPSBnYy0+d3FfdGFpbDsK Pj4gKyAgICBnYy0+d3FfdGFpbCArPSB3cWlfc2l6ZTsKPj4gKyAgICBnYy0+d3FfdGFpbCAmPSBn Yy0+d3Ffc2l6ZSAtIDE7Cj4+ICsgICAgR0VNX0JVR19PTih3cV9vZmYgJiAod3FpX3NpemUgLSAx KSk7Cj4KPiBVc2UgdG8gYmUgd3Ffb2ZmICYgMywgbm93IGlzIHdxX29mZiAmIDE1LCB3aGljaCBv bmUgaXMgY29ycmVjdD8KVGhlIG5ldyBvbmUgOikgSSBtYWRlIGl0IG1vcmUgc3RyaW5nZW50LCBz byB3ZSBjaGVjayBmb3IgY29ycmVjdCAKYWxpZ25tZW50IG9mIHdxX3RhaWwgdG8gc2l6ZW9mKHF1 ZXVlIGl0ZW0pLCBub3QganVzdCBEV29yZC4KPgo+PiArCj4+ICsgICAgLyogV1Egc3RhcnRzIGZy b20gdGhlIHBhZ2UgYWZ0ZXIgZG9vcmJlbGwgLyBwcm9jZXNzX2Rlc2MgKi8KPj4gKyAgICB3cV9w YWdlID0gKHdxX29mZiArIEdVQ19EQl9TSVpFKSA+PiBQQUdFX1NISUZUOwo+PiAgICAgICB3cV9v ZmYgJj0gUEFHRV9TSVpFIC0gMTsKPj4gKyAgICBiYXNlID0ga21hcF9hdG9taWMoaTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlKGdjLT5jbGllbnRfb2JqLCAKPj4gd3FfcGFnZSkpOwo+PiAgICAgICB3 cWkgPSAoc3RydWN0IGd1Y193cV9pdGVtICopKChjaGFyICopYmFzZSArIHdxX29mZik7Cj4+Cj4+ IC0gICAgLyogbGVuIGRvZXMgbm90IGluY2x1ZGUgdGhlIGhlYWRlciAqLwo+PiAtICAgIHdxX2xl biA9IHNpemVvZihzdHJ1Y3QgZ3VjX3dxX2l0ZW0pIC8gc2l6ZW9mKHUzMikgLSAxOwo+PiArICAg IC8qIE5vdyBmaWxsIGluIHRoZSA0LXdvcmQgd29yayBxdWV1ZSBpdGVtICovCj4+ICAgICAgIHdx aS0+aGVhZGVyID0gV1FfVFlQRV9JTk9SREVSIHwKPj4gLSAgICAgICAgICAgICh3cV9sZW4gPDwg V1FfTEVOX1NISUZUKSB8Cj4+ICsgICAgICAgICAgICAod3FpX2xlbiA8PCBXUV9MRU5fU0hJRlQp IHwKPj4gICAgICAgICAgICAgICAocnEtPmVuZ2luZS0+Z3VjX2lkIDw8IFdRX1RBUkdFVF9TSElG VCkgfAo+PiAgICAgICAgICAgICAgIFdRX05PX1dDRkxVU0hfV0FJVDsKPj4KPj4gQEAgLTUxNSwx NCArNTI0LDEwIEBAIHN0YXRpYyBpbnQgZ3VjX2FkZF93b3JrcXVldWVfaXRlbShzdHJ1Y3QgCj4+ IGk5MTVfZ3VjX2NsaWVudCAqZ2MsCj4+ICAgICAgIHdxaS0+Y29udGV4dF9kZXNjID0gKHUzMilp bnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3IocnEtPmN0eCwKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBycS0+ZW5naW5lKTsKPj4KPj4gLSAgICAvKiBUaGUgR3VDIGZpcm13 YXJlIHdhbnRzIHRoZSB0YWlsIGluZGV4IGluIFFXb3Jkcywgbm90IGJ5dGVzICovCj4+IC0gICAg dGFpbCA9IHJxLT5yaW5nYnVmLT50YWlsID4+IDM7Cj4+ICAgICAgIHdxaS0+cmluZ190YWlsID0g dGFpbCA8PCBXUV9SSU5HX1RBSUxfU0hJRlQ7Cj4+IC0gICAgd3FpLT5mZW5jZV9pZCA9IDA7IC8q WFhYOiB3aGF0IGZlbmNlIHRvIGJlIGhlcmUgKi8KPj4gKyAgICB3cWktPmZlbmNlX2lkID0gcnEt PnNlcW5vOwo+Cj4gTm90IG1lbnRpb25lZCBpbiB0aGUgY29tbWl0PwpOb3QgYWN0dWFsbHkgdXNl ZCBlaXRoZXIsIGJ1dCBJIGV4cGVjdCBpdCB3YXMgcHJvdmlkZWQgZm9yIGEgV2luZG93cyAKZmVu Y2UgSUQsIHNvIG91ciBlcXVpdmFsZW50IGlzIGEgc2Vxbm8uCkl0IG1heSBzaG93IHVwIGluIGEg R3VDIGxvZywgaW4gd2hpY2ggY2FzZSBzZXFubyBwcm92aWRlcyBtb3JlIGhlbHBmdWwgCmluZm9y bWF0aW9uLgo+Cj4+Cj4+ICAgICAgIGt1bm1hcF9hdG9taWMoYmFzZSk7Cj4+IC0KPj4gLSAgICBy ZXR1cm4gMDsKPj4gICB9Cj4+Cj4+ICAgLyoqCj4+IEBAIC01MzcsMjYgKzU0MiwyMCBAQCBpbnQg aTkxNV9ndWNfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAKPj4gKnJxKQo+PiAg ICAgICB1bnNpZ25lZCBpbnQgZW5naW5lX2lkID0gcnEtPmVuZ2luZS0+Z3VjX2lkOwo+PiAgICAg ICBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmcnEtPmk5MTUtPmd1YzsKPj4gICAgICAgc3RydWN0 IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50ID0gZ3VjLT5leGVjYnVmX2NsaWVudDsKPj4gLSAgICBp bnQgcV9yZXQsIGJfcmV0Owo+PiArICAgIGludCBiX3JldDsKPgo+IFdoYXQgaXMgYl9yZXQgb3V0 IG9mIGludGVyZXN0LCBkb29yKkIqZWxsIHJldHVybiBjb2RlID8KPgpZZXMsIG9yaWdpbmFsbHkg cV9yZXQgJiBiX3JldCwgZm9yIHJldHVybiBmcm9tIFF1ZXVpbmcgYW5kIEJlbGxyaW5naW5nLCAK cmVzcGVjdGl2ZWx5LiBRdWV1aW5nIGNhbiBubyBsb25nZXIgcmV0dXJuIGFuIGVycm9yLCBidXQg cmluZ2luZyB0aGUgCmRvb3JiZWxsIGNhbiwgZXZlbiBpZiBvbmx5IGluIHRoZSBldmVudCBvZiBo YXJkd2FyZSBub3QgYmVoYXZpbmcgYXMgCnNwZWNpZmllZC4KPj4KPj4gLSAgICBxX3JldCA9IGd1 Y19hZGRfd29ya3F1ZXVlX2l0ZW0oY2xpZW50LCBycSk7Cj4+IC0gICAgaWYgKHFfcmV0ID09IDAp Cj4+IC0gICAgICAgIGJfcmV0ID0gZ3VjX3JpbmdfZG9vcmJlbGwoY2xpZW50KTsKPj4gKyAgICBn dWNfYWRkX3dvcmtxdWV1ZV9pdGVtKGNsaWVudCwgcnEpOwo+PiArICAgIGJfcmV0ID0gZ3VjX3Jp bmdfZG9vcmJlbGwoY2xpZW50KTsKPj4KPj4gICAgICAgY2xpZW50LT5zdWJtaXNzaW9uc1tlbmdp bmVfaWRdICs9IDE7Cj4+IC0gICAgaWYgKHFfcmV0KSB7Cj4+IC0gICAgICAgIGNsaWVudC0+cV9m YWlsICs9IDE7Cj4+IC0gICAgICAgIGNsaWVudC0+cmV0Y29kZSA9IHFfcmV0Owo+PiAtICAgIH0g ZWxzZSBpZiAoYl9yZXQpIHsKPj4gKyAgICBjbGllbnQtPnJldGNvZGUgPSBiX3JldDsKPgo+IEkg d2FudGVkIHRvIGFzayBmb3Igd2hhdCBpcyB0aGlzIGZvciBidXQgdGhlbiBmb3VuZCBpdCBpcyBm b3IgZGVidWdmcy4KPgo+PiArICAgIGlmIChiX3JldCkKPj4gICAgICAgICAgIGNsaWVudC0+Yl9m YWlsICs9IDE7Cj4+IC0gICAgICAgIGNsaWVudC0+cmV0Y29kZSA9IHFfcmV0ID0gYl9yZXQ7Cj4+ IC0gICAgfSBlbHNlIHsKPj4gLSAgICAgICAgY2xpZW50LT5yZXRjb2RlID0gMDsKPj4gLSAgICB9 Cj4+ICsKPj4gICAgICAgZ3VjLT5zdWJtaXNzaW9uc1tlbmdpbmVfaWRdICs9IDE7Cj4+ICAgICAg IGd1Yy0+bGFzdF9zZXFub1tlbmdpbmVfaWRdID0gcnEtPnNlcW5vOwo+Pgo+PiAtICAgIHJldHVy biBxX3JldDsKPj4gKyAgICByZXR1cm4gYl9yZXQ7Cj4KPiBDb3VsZCBhbHNvIGtpbGwgdGhlIHJl dHVybiB2YWx1ZSBmcm9tIHRoaXMgb25lLCB0aGUgb25seSBjYWxsZXIsIAo+IGludGVsX2xvZ2lj YWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQgZG9lcyBub3QgdXNlIGl0LiBUaGF0IGZ1bmN0aW9u IAo+IGl0c2VsZiBkb2VzIG5vdCBsb29rIGxpa2UgaXQgbmVlZHMgYSByZXR1cm4gdmFsdWUgYXQg dGhlIG1vbWVudC4gOikKVGhhdCdzIHJlYWxseSBvbmx5IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBh biBleGl0IHN0cmF0ZWd5IGZvciBzdWJtaXNzaW9uIApmYWlsdXJlLiBJIHdvdWxkIHJhdGhlciBz ZWUgYWxsIHBhcnRzIG9mIHRoZSBzdWJtaXNzaW9uIHByb2Nlc3MgYWJsZSB0byAKcmV0dXJuIGVy cm9ycyAoZS5nLiBoYXJkd2FyZSBub3QgcmVzcG9uZGluZykgYW5kIGxldCB0aGUgdG9wLWxldmVs IGNvZGUgCmltcGxlbWVudCBzb21lIHNvcnQgb2YgcmVjb3Zlcnkgc3RyYXRlZ3kuIEFueXdheSwg SSdtIGxlYXZpbmcgdGhpcyBoZXJlIAp1bnRpbCBzb21lb25lIGNoYW5nZXMgdGhlIGNhbGwgc2ln bmF0dXJlIHRvIHZvaWQuCj4KPj4gICB9Cj4+Cj4+ICAgLyoKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Yy5oCj4+IGluZGV4IDQzNmYyZDYuLjEwZTFkNWUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCj4+IEBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQg ewo+PiAgICAgICAvKiBHdUMgc3VibWlzc2lvbiBzdGF0aXN0aWNzICYgc3RhdHVzICovCj4+ICAg ICAgIHVpbnQ2NF90IHN1Ym1pc3Npb25zW0dVQ19NQVhfRU5HSU5FU19OVU1dOwo+PiAgICAgICB1 aW50MzJfdCBub193cV9zcGFjZTsgICAgICAgIC8qIFNwYWNlIHByZS1jaGVjayBmYWlsZWQgKi8K Pj4gLSAgICB1aW50MzJfdCBxX2ZhaWw7ICAgICAgICAvKiBGYWlsZWQgdG8gcXVldWUgKE1CWikg ICAgKi8KPj4gKyAgICB1aW50MzJfdCBxX2ZhaWw7ICAgICAgICAvKiBObyBsb25nZXIgdXNlZCAg ICAgICAgKi8KPgo+IEdldCByaWQgb2YgaXQgdGhlbj8KTm8sIGl0IGtlZXBzIHRoaW5ncyBhbGln bmVkLiBJdCBjYW4gYmUgcmV1c2VkIGZvciB0aGUgbmV4dCB0aGluZyB3ZSBuZWVkIAp0byBhZGQu CgouRGF2ZS4KCj4KPj4gICAgICAgdWludDMyX3QgYl9mYWlsOyAgICAgICAgLyogRG9vcmJlbGwg ZmFpbHVyZSAoTUJaKSAgICAqLwo+PiAgICAgICBpbnQgcmV0Y29kZTsgICAgICAgICAgICAvKiBS ZXN1bHQgb2YgbGFzdCBndWNfc3VibWl0KCkgKi8KPj4gICB9Owo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfZndpZi5oCj4+IGluZGV4IDJkZTU3ZmYuLjk0NDc4NmQgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaAo+PiBAQCAtNzEsNyArNzEsOCBAQAo+ PiAgICNkZWZpbmUgICBXUV9XT1JLTE9BRF9UT1VDSCAgICAgICAgKDIgPDwgV1FfV09SS0xPQURf U0hJRlQpCj4+Cj4+ICAgI2RlZmluZSBXUV9SSU5HX1RBSUxfU0hJRlQgICAgICAgIDIwCj4+IC0j ZGVmaW5lIFdRX1JJTkdfVEFJTF9NQVNLICAgICAgICAoMHg3RkYgPDwgV1FfUklOR19UQUlMX1NI SUZUKQo+PiArI2RlZmluZSBXUV9SSU5HX1RBSUxfTUFYICAgICAgICAweDdGRiAgICAvKiAyXjEx IFFXb3JkcyAqLwo+PiArI2RlZmluZSBXUV9SSU5HX1RBSUxfTUFTSyAgICAgICAgKFdRX1JJTkdf VEFJTF9NQVggPDwgCj4+IFdRX1JJTkdfVEFJTF9TSElGVCkKPj4KPj4gICAjZGVmaW5lIEdVQ19E T09SQkVMTF9FTkFCTEVEICAgICAgICAxCj4+ICAgI2RlZmluZSBHVUNfRE9PUkJFTExfRElTQUJM RUQgICAgICAgIDAKPj4KPgo+IFJlZ2FyZHMsCj4KPiBUdnJ0a28KPgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==