From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2 2/3] drm/i915: Split breadcrumbs spinlock into two Date: Fri, 03 Mar 2017 19:26:34 +0200 Message-ID: <87r32ez2yd.fsf@gaia.fi.intel.com> References: <20170303121710.14497-1-chris@chris-wilson.co.uk> <20170303121710.14497-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 384C36EDA8 for ; Fri, 3 Mar 2017 17:27:58 +0000 (UTC) In-Reply-To: <20170303121710.14497-2-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQXMgd2Ug bm93IHRha2UgdGhlIGJyZWFkY3J1bWJzIHNwaW5sb2NrIHdpdGhpbiB0aGUgaW50ZXJydXB0IGhh bmRsZXIsIHdlCj4gd2lzaCB0byBtaW5pbWlzZSBpdHMgaG9sZCB0aW1lLiBEdXJpbmcgdGhlIGlu dGVycnVwdCB3ZSBkbyBub3QgY2FyZQo+IGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgZnVsbCByYnRy ZWUsIG9ubHkgdGhhdCBvZiB0aGUgZmlyc3QgZWxlbWVudCwgc28KPiB3ZSBjYW4gZ3VhcmQgdGhh dCB3aXRoIGEgc2VwYXJhdGUgbG9jay4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICAgIHwgMTIgKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgIHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgICAgfCAgOCArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jICAgICAgICAgIHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFk Y3J1bWJzLmMgfCA1OCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggIHwgIDYgKystLQo+ICA2IGZpbGVzIGNo YW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA5NTA0NjgyMmU4ZTAuLmFhMmQ3MjZiNDM0OSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTcwMCwxNCArNzAwLDE0IEBA IHN0YXRpYyB2b2lkIGk5MTVfcmluZ19zZXFub19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAg CXNlcV9wcmludGYobSwgIkN1cnJlbnQgc2VxdWVuY2UgKCVzKTogJXhcbiIsCj4gIAkJICAgZW5n aW5lLT5uYW1lLCBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSkpOwo+ICAKPiAtCXNwaW5f bG9ja19pcnEoJmItPmxvY2spOwo+ICsJc3Bpbl9sb2NrX2lycSgmYi0+cmJfbG9jayk7Cj4gIAlm b3IgKHJiID0gcmJfZmlyc3QoJmItPndhaXRlcnMpOyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewo+ ICAJCXN0cnVjdCBpbnRlbF93YWl0ICp3ID0gcmJfZW50cnkocmIsIHR5cGVvZigqdyksIG5vZGUp Owo+ICAKPiAgCQlzZXFfcHJpbnRmKG0sICJXYWl0aW5nICglcyk6ICVzIFslZF0gb24gJXhcbiIs Cj4gIAkJCSAgIGVuZ2luZS0+bmFtZSwgdy0+dHNrLT5jb21tLCB3LT50c2stPnBpZCwgdy0+c2Vx bm8pOwo+ICAJfQo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZiLT5sb2NrKTsKPiArCXNwaW5fdW5sb2Nr X2lycSgmYi0+cmJfbG9jayk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaTkxNV9nZW1fc2Vxbm9f aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gQEAgLTEzNTQsMTQgKzEzNTQs MTQgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQo+ICAJCQkJCSAgJmRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9y aW5ncykpLAo+ICAJCQkgICB5ZXNubyhlbmdpbmUtPmhhbmdjaGVjay5zdGFsbGVkKSk7Cj4gIAo+ IC0JCXNwaW5fbG9ja19pcnEoJmItPmxvY2spOwo+ICsJCXNwaW5fbG9ja19pcnEoJmItPnJiX2xv Y2spOwo+ICAJCWZvciAocmIgPSByYl9maXJzdCgmYi0+d2FpdGVycyk7IHJiOyByYiA9IHJiX25l eHQocmIpKSB7Cj4gIAkJCXN0cnVjdCBpbnRlbF93YWl0ICp3ID0gcmJfZW50cnkocmIsIHR5cGVv ZigqdyksIG5vZGUpOwo+ICAKPiAgCQkJc2VxX3ByaW50ZihtLCAiXHQlcyBbJWRdIHdhaXRpbmcg Zm9yICV4XG4iLAo+ICAJCQkJICAgdy0+dHNrLT5jb21tLCB3LT50c2stPnBpZCwgdy0+c2Vxbm8p Owo+ICAJCX0KPiAtCQlzcGluX3VubG9ja19pcnEoJmItPmxvY2spOwo+ICsJCXNwaW5fdW5sb2Nr X2lycSgmYi0+cmJfbG9jayk7Cj4gIAo+ICAJCXNlcV9wcmludGYobSwgIlx0QUNUSEQgPSAweCUw OGxseCBbY3VycmVudCAweCUwOGxseF1cbiIsCj4gIAkJCSAgIChsb25nIGxvbmcpZW5naW5lLT5o YW5nY2hlY2suYWN0aGQsCj4gQEAgLTMzNTksMTQgKzMzNTksMTQgQEAgc3RhdGljIGludCBpOTE1 X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCQkJICAg STkxNV9SRUFEKFJJTkdfUFBfRElSX0RDTFYoZW5naW5lKSkpOwo+ICAJCX0KPiAgCj4gLQkJc3Bp bl9sb2NrX2lycSgmYi0+bG9jayk7Cj4gKwkJc3Bpbl9sb2NrX2lycSgmYi0+cmJfbG9jayk7Cj4g IAkJZm9yIChyYiA9IHJiX2ZpcnN0KCZiLT53YWl0ZXJzKTsgcmI7IHJiID0gcmJfbmV4dChyYikp IHsKPiAgCQkJc3RydWN0IGludGVsX3dhaXQgKncgPSByYl9lbnRyeShyYiwgdHlwZW9mKCp3KSwg bm9kZSk7Cj4gIAo+ICAJCQlzZXFfcHJpbnRmKG0sICJcdCVzIFslZF0gd2FpdGluZyBmb3IgJXhc biIsCj4gIAkJCQkgICB3LT50c2stPmNvbW0sIHctPnRzay0+cGlkLCB3LT5zZXFubyk7Cj4gIAkJ fQo+IC0JCXNwaW5fdW5sb2NrX2lycSgmYi0+bG9jayk7Cj4gKwkJc3Bpbl91bmxvY2tfaXJxKCZi LT5yYl9sb2NrKTsKPiAgCj4gIAkJc2VxX3B1dHMobSwgIlxuIik7Cj4gIAl9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gaW5kZXggY2I3NjAxNTZiYmM1Li4wZGExNGMzMDQ3NzEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNDEwMCw3ICs0MTAwLDcgQEAgX19pOTE1X3JlcXVl c3RfaXJxX2NvbXBsZXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ ICAJCSAqIHRoZSBzZXFubyBiZWZvcmUgd2UgYmVsaWV2ZSBpdCBjb2hlcmVudCBzaW5jZSB0aGV5 IHNlZQo+ICAJCSAqIGlycV9wb3N0ZWQgPT0gZmFsc2UgYnV0IHdlIGFyZSBzdGlsbCBydW5uaW5n KS4KPiAgCQkgKi8KPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmYi0+bG9jaywgZmxhZ3MpOwo+ICsJ CXNwaW5fbG9ja19pcnFzYXZlKCZiLT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAJCWlmIChiLT5maXJz dF93YWl0ICYmIGItPmZpcnN0X3dhaXQtPnRzayAhPSBjdXJyZW50KQo+ICAJCQkvKiBOb3RlIHRo YXQgaWYgdGhlIGJvdHRvbS1oYWxmIGlzIGNoYW5nZWQgYXMgd2UKPiAgCQkJICogYXJlIHNlbmRp bmcgdGhlIHdha2UtdXAsIHRoZSBuZXcgYm90dG9tLWhhbGYgd2lsbAo+IEBAIC00MTA5LDcgKzQx MDksNyBAQCBfX2k5MTVfcmVxdWVzdF9pcnFfY29tcGxldGUoY29uc3Qgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAkJCSAqIG91cnNlbGYuCj4gIAkJCSAqLwo+ICAJCQl3YWtl X3VwX3Byb2Nlc3MoYi0+Zmlyc3Rfd2FpdC0+dHNrKTsKPiAtCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZiLT5sb2NrLCBmbGFncyk7Cj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYi0+aXJx X2xvY2ssIGZsYWdzKTsKPiAgCj4gIAkJaWYgKF9faTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQo cmVxLCBzZXFubykpCj4gIAkJCXJldHVybiB0cnVlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwo+IGluZGV4IDA2MWFmODA0MDQ5OC4uOGVmZmM1OWY1Y2I1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gQEAgLTExMTEsNyArMTExMSw3IEBAIHN0 YXRpYyB2b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfd2FpdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCj4gIAlpZiAoUkJfRU1QVFlfUk9PVCgmYi0+d2FpdGVycykpCj4gIAkJcmV0 dXJuOwo+ICAKPiAtCWlmICghc3Bpbl90cnlsb2NrX2lycSgmYi0+bG9jaykpIHsKPiArCWlmICgh c3Bpbl90cnlsb2NrX2lycSgmYi0+cmJfbG9jaykpIHsKPiAgCQllZS0+d2FpdGVycyA9IEVSUl9Q VFIoLUVERUFETEspOwo+ICAJCXJldHVybjsKPiAgCX0KPiBAQCAtMTExOSw3ICsxMTE5LDcgQEAg c3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2luZV93YWl0ZXJzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKPiAgCWNvdW50ID0gMDsKPiAgCWZvciAocmIgPSByYl9maXJzdCgmYi0+ d2FpdGVycyk7IHJiICE9IE5VTEw7IHJiID0gcmJfbmV4dChyYikpCj4gIAkJY291bnQrKzsKPiAt CXNwaW5fdW5sb2NrX2lycSgmYi0+bG9jayk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmItPnJiX2xv Y2spOwo+ICAKPiAgCXdhaXRlciA9IE5VTEw7Cj4gIAlpZiAoY291bnQpCj4gQEAgLTExMjksNyAr MTEyOSw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfd2FpdGVycyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAlpZiAoIXdhaXRlcikKPiAgCQlyZXR1cm47Cj4g IAo+IC0JaWYgKCFzcGluX3RyeWxvY2tfaXJxKCZiLT5sb2NrKSkgewo+ICsJaWYgKCFzcGluX3Ry eWxvY2tfaXJxKCZiLT5yYl9sb2NrKSkgewo+ICAJCWtmcmVlKHdhaXRlcik7Cj4gIAkJZWUtPndh aXRlcnMgPSBFUlJfUFRSKC1FREVBRExLKTsKPiAgCQlyZXR1cm47Cj4gQEAgLTExNDcsNyArMTE0 Nyw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfd2FpdGVycyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkJaWYgKCsrZWUtPm51bV93YWl0ZXJzID09IGNvdW50 KQo+ICAJCQlicmVhazsKPiAgCX0KPiAtCXNwaW5fdW5sb2NrX2lycSgmYi0+bG9jayk7Cj4gKwlz cGluX3VubG9ja19pcnEoJmItPnJiX2xvY2spOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBlcnJv cl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDVmYTJjNGM1NmIwOS4uM2YzOWUzNmZhNTY2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTEwNDEsNyArMTA0MSw3IEBAIHN0 YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg Cj4gIAlyY3VfcmVhZF9sb2NrKCk7Cj4gIAo+IC0Jc3Bpbl9sb2NrKCZlbmdpbmUtPmJyZWFkY3J1 bWJzLmxvY2spOwo+ICsJc3Bpbl9sb2NrKCZlbmdpbmUtPmJyZWFkY3J1bWJzLmlycV9sb2NrKTsK PiAgCXdhaXQgPSBlbmdpbmUtPmJyZWFkY3J1bWJzLmZpcnN0X3dhaXQ7Cj4gIAlpZiAod2FpdCkg ewo+ICAJCS8qIFdlIHVzZSBhIGNhbGxiYWNrIGZyb20gdGhlIGRtYS1mZW5jZSB0byBzdWJtaXQK PiBAQCAtMTA2Myw3ICsxMDYzLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJfSBlbHNlIHsKPiAgCQlfX2ludGVsX2VuZ2luZV9k aXNhcm1fYnJlYWRjcnVtYnMoZW5naW5lKTsKPiAgCX0KPiAtCXNwaW5fdW5sb2NrKCZlbmdpbmUt PmJyZWFkY3J1bWJzLmxvY2spOwo+ICsJc3Bpbl91bmxvY2soJmVuZ2luZS0+YnJlYWRjcnVtYnMu aXJxX2xvY2spOwo+ICAKPiAgCWlmIChycSkKPiAgCQlkbWFfZmVuY2Vfc2lnbmFsKCZycS0+ZmVu Y2UpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1i cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IGluZGV4IDFj YzUwMzA0ZjgyNC4uMzQyMDBmMTRiYWRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9icmVhZGNydW1icy5jCj4gQEAgLTMxLDYgKzMxLDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBf X2ludGVsX2JyZWFkY3J1bWJzX3dha2V1cChzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIpCj4g IAlzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdDsKPiAgCXVuc2lnbmVkIGludCByZXN1bHQgPSAwOwo+ ICAKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmItPmlycV9sb2NrKTsKPiArCj4gIAl3YWl0ID0g Yi0+Zmlyc3Rfd2FpdDsKPiAgCWlmICh3YWl0KSB7Cj4gIAkJcmVzdWx0ID0gRU5HSU5FX1dBS0VV UF9XQUlURVI7Cj4gQEAgLTQ3LDkgKzQ5LDkgQEAgdW5zaWduZWQgaW50IGludGVsX2VuZ2luZV93 YWtldXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJdW5zaWduZWQgbG9uZyBm bGFnczsKPiAgCXVuc2lnbmVkIGludCByZXN1bHQ7Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUo JmItPmxvY2ssIGZsYWdzKTsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZiLT5pcnFfbG9jaywgZmxh Z3MpOwo+ICAJcmVzdWx0ID0gX19pbnRlbF9icmVhZGNydW1ic193YWtldXAoYik7Cj4gLQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZiLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZiLT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAKPiAgCXJldHVybiByZXN1bHQ7Cj4gIH0K PiBAQCAtMTE3LDEwICsxMTksMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfZmFr ZV9pcnEodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAJICogY29oZXJlbnQgc2Vxbm8gY2hlY2suCj4g IAkgKi8KPiAgCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmYi0+bG9jaywgZmxhZ3MpOwo+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJmItPmlycV9sb2NrLCBmbGFncyk7Cj4gIAlpZiAoIV9faW50ZWxfYnJl YWRjcnVtYnNfd2FrZXVwKGIpKQo+ICAJCV9faW50ZWxfZW5naW5lX2Rpc2FybV9icmVhZGNydW1i cyhlbmdpbmUpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYi0+bG9jaywgZmxhZ3MpOwo+ ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAgCWlmICgh Yi0+aXJxX2FybWVkKQo+ICAJCXJldHVybjsKPiAgCj4gQEAgLTE2NCw3ICsxNjYsNyBAQCB2b2lk IF9faW50ZWxfZW5naW5lX2Rpc2FybV9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZlbmdpbmUt PmJyZWFkY3J1bWJzOwo+ICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmItPmxvY2spOwo+ICsJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmYi0+aXJxX2xvY2spOwo+ICAKPiAgCWlmIChiLT5pcnFfZW5h YmxlZCkgewo+ICAJCWlycV9kaXNhYmxlKGVuZ2luZSk7Cj4gQEAgLTE4Miw3ICsxODQsNyBAQCB2 b2lkIGludGVsX2VuZ2luZV9kaXNhcm1fYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAJaWYgKCFiLT5pcnFfYXJtZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCXNw aW5fbG9ja19pcnFzYXZlKCZiLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgm Yi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAgCj4gIAkvKiBXZSBvbmx5IGRpc2FybSB0aGUgaXJxIHdo ZW4gd2UgYXJlIGlkbGUgKGFsbCByZXF1ZXN0cyBjb21wbGV0ZWQpLAo+ICAJICogc28gaWYgdGhl cmUgcmVtYWlucyBhIHNsZWVwaW5nIHdhaXRlciwgaXQgbWlzc2VkIHRoZSByZXF1ZXN0Cj4gQEAg LTE5Myw3ICsxOTUsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9kaXNhcm1fYnJlYWRjcnVtYnMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAgCV9faW50ZWxfZW5naW5lX2Rpc2Fy bV9icmVhZGNydW1icyhlbmdpbmUpOwo+ICAKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmIt PmxvY2ssIGZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmItPmlycV9sb2NrLCBm bGFncyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIHVzZV9mYWtlX2lycShjb25zdCBzdHJ1Y3Qg aW50ZWxfYnJlYWRjcnVtYnMgKmIpCj4gQEAgLTIyOCw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBf X2ludGVsX2JyZWFkY3J1bWJzX2VuYWJsZV9pcnEoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpi KQo+ICAJCWNvbnRhaW5lcl9vZihiLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzLCBicmVhZGNydW1i cyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiAg Cj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZiLT5sb2NrKTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmItPmlycV9sb2NrKTsKPiAgCWlmIChiLT5pcnFfYXJtZWQpCj4gIAkJcmV0dXJuOwo+ICAK PiBAQCAtMjc2LDcgKzI3OCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX3dhaXQgKnRv X3dhaXQoc3RydWN0IHJiX25vZGUgKm5vZGUpCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2ludGVs X2JyZWFkY3J1bWJzX2ZpbmlzaChzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIsCj4gIAkJCQkJ ICAgICAgc3RydWN0IGludGVsX3dhaXQgKndhaXQpCj4gIHsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmItPmxvY2spOwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYi0+cmJfbG9jayk7Cj4gIAo+ ICAJLyogVGhpcyByZXF1ZXN0IGlzIGNvbXBsZXRlZCwgc28gcmVtb3ZlIGl0IGZyb20gdGhlIHRy ZWUsIG1hcmsgaXQgYXMKPiAgCSAqIGNvbXBsZXRlLCBhbmQgKnRoZW4qIHdha2UgdXAgdGhlIGFz c29jaWF0ZWQgdGFzay4KPiBAQCAtMjkyLDggKzI5NCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg X19pbnRlbF9icmVhZGNydW1ic19uZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAgewo+ICAJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVt YnM7Cj4gIAo+ICsJc3Bpbl9sb2NrKCZiLT5pcnFfbG9jayk7Cj4gIAlHRU1fQlVHX09OKCFiLT5p cnFfYXJtZWQpOwo+ICAJYi0+Zmlyc3Rfd2FpdCA9IHRvX3dhaXQobmV4dCk7Cj4gKwlzcGluX3Vu bG9jaygmYi0+aXJxX2xvY2spOwo+ICAKPiAgCS8qIFdlIGFsd2F5cyB3YWtlIHVwIHRoZSBuZXh0 IHdhaXRlciB0aGF0IHRha2VzIG92ZXIgYXMgdGhlIGJvdHRvbS1oYWxmCj4gIAkgKiBhcyB3ZSBt YXkgZGVsZWdhdGUgbm90IG9ubHkgdGhlIGlycS1zZXFubyBiYXJyaWVyIHRvIHRoZSBuZXh0IHdh aXRlcgo+IEBAIC0zODMsNiArMzg3LDcgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9lbmdpbmVfYWRk X3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJfQo+ICAKPiAgCWlmIChm aXJzdCkgewo+ICsJCXNwaW5fbG9jaygmYi0+aXJxX2xvY2spOwo+ICAJCUdFTV9CVUdfT04ocmJf Zmlyc3QoJmItPndhaXRlcnMpICE9ICZ3YWl0LT5ub2RlKTsKPiAgCQliLT5maXJzdF93YWl0ID0g d2FpdDsKPiAgCQkvKiBBZnRlciBhc3NpZ25pbmcgb3Vyc2VsdmVzIGFzIHRoZSBuZXcgYm90dG9t LWhhbGYsIHdlIG11c3QKPiBAQCAtMzk0LDYgKzM5OSw3IEBAIHN0YXRpYyBib29sIF9faW50ZWxf ZW5naW5lX2FkZF93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCQkgKiBh bmQgc28gd2UgbWlzcyB0aGUgd2FrZSB1cC4KPiAgCQkgKi8KPiAgCQlfX2ludGVsX2JyZWFkY3J1 bWJzX2VuYWJsZV9pcnEoYik7Cj4gKwkJc3Bpbl91bmxvY2soJmItPmlycV9sb2NrKTsKPiAgCX0K PiAgCUdFTV9CVUdfT04oIWItPmZpcnN0X3dhaXQpOwo+ICAJR0VNX0JVR19PTihyYl9maXJzdCgm Yi0+d2FpdGVycykgIT0gJmItPmZpcnN0X3dhaXQtPm5vZGUpOwo+IEBAIC00MDcsOSArNDEzLDkg QEAgYm9vbCBpbnRlbF9lbmdpbmVfYWRkX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+ICAJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVt YnM7Cj4gIAlib29sIGZpcnN0Owo+ICAKPiAtCXNwaW5fbG9ja19pcnEoJmItPmxvY2spOwo+ICsJ c3Bpbl9sb2NrX2lycSgmYi0+cmJfbG9jayk7Cj4gIAlmaXJzdCA9IF9faW50ZWxfZW5naW5lX2Fk ZF93YWl0KGVuZ2luZSwgd2FpdCk7Cj4gLQlzcGluX3VubG9ja19pcnEoJmItPmxvY2spOwo+ICsJ c3Bpbl91bmxvY2tfaXJxKCZiLT5yYl9sb2NrKTsKPiAgCj4gIAlyZXR1cm4gZmlyc3Q7Cj4gIH0K PiBAQCAtNDMzLDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfZW5naW5lX3JlbW92ZV93 YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgewo+ICAJc3RydWN0IGludGVs X2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7Cj4gIAo+IC0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmYi0+bG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZiLT5yYl9sb2Nr KTsKPiAgCj4gIAlpZiAoUkJfRU1QVFlfTk9ERSgmd2FpdC0+bm9kZSkpCj4gIAkJZ290byBvdXQ7 Cj4gQEAgLTUwMyw5ICs1MDksOSBAQCB2b2lkIGludGVsX2VuZ2luZV9yZW1vdmVfd2FpdChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAlpZiAoUkJfRU1QVFlfTk9ERSgmd2FpdC0+ bm9kZSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCXNwaW5fbG9ja19pcnEoJmItPmxvY2spOwo+ICsJ c3Bpbl9sb2NrX2lycSgmYi0+cmJfbG9jayk7Cj4gIAlfX2ludGVsX2VuZ2luZV9yZW1vdmVfd2Fp dChlbmdpbmUsIHdhaXQpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZiLT5sb2NrKTsKPiArCXNwaW5f dW5sb2NrX2lycSgmYi0+cmJfbG9jayk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIHNpZ25hbF92 YWxpZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gQEAgLTU3 NSw3ICs1ODEsNyBAQCBzdGF0aWMgaW50IGludGVsX2JyZWFkY3J1bWJzX3NpZ25hbGVyKHZvaWQg KmFyZykKPiAgCQkJZG1hX2ZlbmNlX3NpZ25hbCgmcmVxdWVzdC0+ZmVuY2UpOwo+ICAJCQlsb2Nh bF9iaF9lbmFibGUoKTsgLyoga2ljayBzdGFydCB0aGUgdGFza2xldHMgKi8KPiAgCj4gLQkJCXNw aW5fbG9ja19pcnEoJmItPmxvY2spOwo+ICsJCQlzcGluX2xvY2tfaXJxKCZiLT5yYl9sb2NrKTsK PiAgCj4gIAkJCS8qIFdha2UgdXAgYWxsIG90aGVyIGNvbXBsZXRlZCB3YWl0ZXJzIGFuZCBzZWxl Y3QgdGhlCj4gIAkJCSAqIG5leHQgYm90dG9tLWhhbGYgZm9yIHRoZSBuZXh0IHVzZXIgaW50ZXJy dXB0Lgo+IEBAIC01OTgsNyArNjA0LDcgQEAgc3RhdGljIGludCBpbnRlbF9icmVhZGNydW1ic19z aWduYWxlcih2b2lkICphcmcpCj4gIAkJCXJiX2VyYXNlKCZyZXF1ZXN0LT5zaWduYWxpbmcubm9k ZSwgJmItPnNpZ25hbHMpOwo+ICAJCQlSQl9DTEVBUl9OT0RFKCZyZXF1ZXN0LT5zaWduYWxpbmcu bm9kZSk7Cj4gIAo+IC0JCQlzcGluX3VubG9ja19pcnEoJmItPmxvY2spOwo+ICsJCQlzcGluX3Vu bG9ja19pcnEoJmItPnJiX2xvY2spOwo+ICAKPiAgCQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVx dWVzdCk7Cj4gIAkJfSBlbHNlIHsKPiBAQCAtNjU1LDcgKzY2MSw3IEBAIHZvaWQgaW50ZWxfZW5n aW5lX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQo+ICAJcmVxdWVzdC0+c2lnbmFsaW5nLndhaXQuc2Vxbm8gPSBzZXFubzsKPiAgCWk5MTVfZ2Vt X3JlcXVlc3RfZ2V0KHJlcXVlc3QpOwo+ICAKPiAtCXNwaW5fbG9jaygmYi0+bG9jayk7Cj4gKwlz cGluX2xvY2soJmItPnJiX2xvY2spOwo+ICAKPiAgCS8qIEZpcnN0IGFkZCBvdXJzZWx2ZXMgaW50 byB0aGUgbGlzdCBvZiB3YWl0ZXJzLCBidXQgcmVnaXN0ZXIgb3VyCj4gIAkgKiBib3R0b20taGFs ZiBhcyB0aGUgc2lnbmFsbGVyIHRocmVhZC4gQXMgcGVyIHVzdWFsLCBvbmx5IHRoZSBvbGRlc3QK PiBAQCAtNjg5LDcgKzY5NSw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2VuYWJsZV9zaWduYWxpbmco c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAJaWYgKGZpcnN0KQo+ICAJ CXJjdV9hc3NpZ25fcG9pbnRlcihiLT5maXJzdF9zaWduYWwsIHJlcXVlc3QpOwo+ICAKPiAtCXNw aW5fdW5sb2NrKCZiLT5sb2NrKTsKPiArCXNwaW5fdW5sb2NrKCZiLT5yYl9sb2NrKTsKPiAgCj4g IAlpZiAod2FrZXVwKQo+ICAJCXdha2VfdXBfcHJvY2VzcyhiLT5zaWduYWxlcik7Cj4gQEAgLTcw NCw3ICs3MTAsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9jYW5jZWxfc2lnbmFsaW5nKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJl cXVlc3QtPmxvY2spOwo+ICAJR0VNX0JVR19PTighcmVxdWVzdC0+c2lnbmFsaW5nLndhaXQuc2Vx bm8pOwo+ICAKPiAtCXNwaW5fbG9jaygmYi0+bG9jayk7Cj4gKwlzcGluX2xvY2soJmItPnJiX2xv Y2spOwo+ICAKPiAgCWlmICghUkJfRU1QVFlfTk9ERSgmcmVxdWVzdC0+c2lnbmFsaW5nLm5vZGUp KSB7Cj4gIAkJaWYgKHJlcXVlc3QgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGItPmZpcnN0X3NpZ25h bCkpIHsKPiBAQCAtNzIwLDcgKzcyNiw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NhbmNlbF9zaWdu YWxpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAKPiAgCV9faW50 ZWxfZW5naW5lX3JlbW92ZV93YWl0KGVuZ2luZSwgJnJlcXVlc3QtPnNpZ25hbGluZy53YWl0KTsK PiAgCj4gLQlzcGluX3VubG9jaygmYi0+bG9jayk7Cj4gKwlzcGluX3VubG9jaygmYi0+cmJfbG9j ayk7Cj4gIAo+ICAJcmVxdWVzdC0+c2lnbmFsaW5nLndhaXQuc2Vxbm8gPSAwOwo+ICB9Cj4gQEAg LTczMCw3ICs3MzYsOSBAQCBpbnQgaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpi ID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7Cj4gIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsKPiAg Cj4gLQlzcGluX2xvY2tfaW5pdCgmYi0+bG9jayk7Cj4gKwlzcGluX2xvY2tfaW5pdCgmYi0+cmJf bG9jayk7Cj4gKwlzcGluX2xvY2tfaW5pdCgmYi0+aXJxX2xvY2spOwo+ICsKPiAgCXNldHVwX3Rp bWVyKCZiLT5mYWtlX2lycSwKPiAgCQkgICAgaW50ZWxfYnJlYWRjcnVtYnNfZmFrZV9pcnEsCj4g IAkJICAgICh1bnNpZ25lZCBsb25nKWVuZ2luZSk7Cj4gQEAgLTc2OCw3ICs3NzYsNyBAQCB2b2lk IGludGVsX2VuZ2luZV9yZXNldF9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIAlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPSAmZW5naW5lLT5icmVhZGNy dW1iczsKPiAgCj4gIAljYW5jZWxfZmFrZV9pcnEoZW5naW5lKTsKPiAtCXNwaW5fbG9ja19pcnEo JmItPmxvY2spOwo+ICsJc3Bpbl9sb2NrX2lycSgmYi0+aXJxX2xvY2spOwoKSW4gaGVyZSBJIHdh cyB0aGlua2luZyB0aGF0IHlvdSB3YW50IGJvdGggbG9ja3MgaGVscCwgYnV0CnRoZW4gY2FuJ3Qg ZmluZCBhIHJlYXNvbiB3aHkuIFBlcmhhcHMganVzdCB0byBlbnN1cmUgdGhhdAp0aGUgd2FpdCB0 cmVlIHN0YXlzIHN0aWxsLgo+ICAKPiAgCWlmIChiLT5pcnFfZW5hYmxlZCkKPiAgCQlpcnFfZW5h YmxlKGVuZ2luZSk7Cj4gQEAgLTc4Nyw3ICs3OTUsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9yZXNl dF9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlpZiAoYi0+ aXJxX2FybWVkKQo+ICAJCWVuYWJsZV9mYWtlX2lycShiKTsKPiAgCj4gLQlzcGluX3VubG9ja19p cnEoJmItPmxvY2spOwo+ICsJc3Bpbl91bmxvY2tfaXJxKCZiLT5pcnFfbG9jayk7Cj4gIH0KPiAg Cj4gIHZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+IEBAIC04MTEsNyArODE5LDcgQEAgYm9vbCBpbnRlbF9icmVhZGNydW1i c19idXN5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCXN0cnVjdCBpbnRlbF9i cmVhZGNydW1icyAqYiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwo+ICAJYm9vbCBidXN5ID0gZmFs c2U7Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycSgmYi0+bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZi LT5yYl9sb2NrKTsKCldyb25nIGxvY2sgdGFrZW4gYW5kIHJlbGFzZWQgaW4gdGhpcyBmdW5jdGlv bj8KCi1NaWthCgo+ICAKPiAgCWlmIChiLT5maXJzdF93YWl0KSB7Cj4gIAkJd2FrZV91cF9wcm9j ZXNzKGItPmZpcnN0X3dhaXQtPnRzayk7Cj4gQEAgLTgyMyw3ICs4MzEsNyBAQCBib29sIGludGVs X2JyZWFkY3J1bWJzX2J1c3koc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCWJ1 c3kgfD0gaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiAgCX0KPiAgCj4gLQlzcGluX3VubG9j a19pcnEoJmItPmxvY2spOwo+ICsJc3Bpbl91bmxvY2tfaXJxKCZiLT5yYl9sb2NrKTsKPiAgCj4g IAlyZXR1cm4gYnVzeTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiBpbmRleCA1NWE2YTNmODI3NGMuLjYyMWFjOTk5OGQxNiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMjM1LDEwICsyMzUsMTIgQEAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyB7Cj4gIAkgKiB0aGUgb3ZlcmhlYWQgb2Ygd2FraW5nIHRoYXQgY2xp ZW50IGlzIG11Y2ggcHJlZmVycmVkLgo+ICAJICovCj4gIAlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgewo+IC0JCXNwaW5sb2NrX3QgbG9jazsgLyogcHJvdGVjdHMgdGhlIGxpc3RzIG9mIHJlcXVl c3RzOyBpcnFzYWZlICovCj4gKwkJc3BpbmxvY2tfdCBpcnFfbG9jazsgLyogcHJvdGVjdHMgZmly c3Rfd2FpdCAmIGlycV8qOyBpcnFzYWZlICovCj4gKwkJc3RydWN0IGludGVsX3dhaXQgKmZpcnN0 X3dhaXQ7IC8qIG9sZGVzdCB3YWl0ZXIgYnkgcmV0aXJlbWVudCAqLwo+ICsKPiArCQlzcGlubG9j a190IHJiX2xvY2s7IC8qIHByb3RlY3RzIHRoZSByYnRyZWVzOyBpcnFzYWZlICovCj4gIAkJc3Ry dWN0IHJiX3Jvb3Qgd2FpdGVyczsgLyogc29ydGVkIGJ5IHJldGlyZW1lbnQsIHByaW9yaXR5ICov Cj4gIAkJc3RydWN0IHJiX3Jvb3Qgc2lnbmFsczsgLyogc29ydGVkIGJ5IHJldGlyZW1lbnQgKi8K PiAtCQlzdHJ1Y3QgaW50ZWxfd2FpdCAqZmlyc3Rfd2FpdDsgLyogb2xkZXN0IHdhaXRlciBieSBy ZXRpcmVtZW50ICovCj4gIAkJc3RydWN0IHRhc2tfc3RydWN0ICpzaWduYWxlcjsgLyogdXNlZCBm b3IgZmVuY2Ugc2lnbmFsbGluZyAqLwo+ICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCBf X3JjdSAqZmlyc3Rfc2lnbmFsOwo+ICAJCXN0cnVjdCB0aW1lcl9saXN0IGZha2VfaXJxOyAvKiB1 c2VkIGFmdGVyIGEgbWlzc2VkIGludGVycnVwdCAqLwo+IC0tIAo+IDIuMTEuMAo+Cj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=