From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2 06/11] drm/i915/scheduler: Record all dependencies upon request construction Date: Thu, 10 Nov 2016 14:45:39 +0000 Message-ID: References: <20161107135950.28861-1-chris@chris-wilson.co.uk> <20161107135950.28861-7-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 957D86E7DE for ; Thu, 10 Nov 2016 14:45:42 +0000 (UTC) In-Reply-To: <20161107135950.28861-7-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 Ck9uIDA3LzExLzIwMTYgMTM6NTksIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgc2NoZWR1bGVy IG5lZWRzIHRvIGtub3cgdGhlIGRlcGVuZGVuY2llcyBvZiBlYWNoIHJlcXVlc3QgZm9yIHRoZQo+ IGxpZmV0aW1lIG9mIHRoZSByZXF1ZXN0LCBhcyBpdCBtYXkgY2hvb3NlIHRvIHJlc2NoZWR1bGUg dGhlIHJlcXVlc3RzIGF0Cj4gYW55IHRpbWUgYW5kIG11c3QgZW5zdXJlIHRoZSBkZXBlbmRlbmN5 IHRyZWUgaXMgbm90IGJyb2tlbi4gVGhpcyBpcyBpbgo+IGFkZGl0aW9uYWwgdG8gdXNpbmcgdGhl IGZlbmNlIHRvIG9ubHkgYWxsb3cgZXhlY3V0aW9uIGFmdGVyIGFsbAo+IGRlcGVuZGVuY2llcyBo YXZlIGJlZW4gY29tcGxldGVkLgo+Cj4gT25lIG9wdGlvbiB3YXMgdG8gZXh0ZW5kIHRoZSBmZW5j ZSB0byBzdXBwb3J0IHRoZSBiaWRpcmVjdGlvbmFsCj4gZGVwZW5kZW5jeSB0cmFja2luZyByZXF1 aXJlZCBieSB0aGUgc2NoZWR1bGVyLiBIb3dldmVyIHRoZSBtaXNtYXRjaCBpbgo+IGxpZmV0aW1l cyBiZXR3ZWVuIHRoZSBzdWJtaXQgZmVuY2UgYW5kIHRoZSByZXF1ZXN0IGVzc2VudGlhbGx5IG1l YW50Cj4gdGhhdCB3ZSBoYWQgdG8gYnVpbGQgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIHN0cnVjdCAo YW5kIHdlIGNvdWxkIG5vdAo+IHNpbXBseSByZXVzZSB0aGUgZXhpc3Rpbmcgd2FpdHF1ZXVlIGlu IHRoZSBmZW5jZSBmb3Igb25lIGhhbGYgb2YgdGhlCj4gZGVwZW5kZW5jeSB0cmFja2luZykuIFRo ZSBleHRyYSBkZXBlbmRlbmN5IHRyYWNraW5nIHNpbXBseSBkaWQgbm90IG1lc2gKPiB3ZWxsIHdp dGggdGhlIGZlbmNlLCBhbmQga2VlcGluZyBpdCBzZXBhcmF0ZSBib3RoIGtlZXBzIHRoZSBmZW5j ZQo+IGltcGxlbWVudGF0aW9uIHNpbXBsZXIgYW5kIGFsbG93cyB1cyB0byBleHRlbmQgdGhlIGRl cGVuZGVuY3kgdHJhY2tpbmcKPiBpbnRvIGEgcHJpb3JpdHkgdHJlZSAod2hpbHN0IG1haW50YWlu aW5nIHN1cHBvcnQgZm9yIHJlb3JkZXJpbmcgdGhlCj4gdHJlZSkuCj4KPiBUbyBhdm9pZCB0aGUg YWRkaXRpb25hbCBhbGxvY2F0aW9ucyBhbmQgbGlzdCBtYW5pcHVsYXRpb25zLCB0aGUgdXNlIG9m Cj4gdGhlIHByaW90cmVlIGlzIGRpc2FibGVkIHdoZW4gdGhlcmUgYXJlIG5vIHNjaGVkdWxlcnMg dG8gdXNlIGl0Lgo+Cj4gdjI6IENyZWF0ZSBhIGRlZGljYXRlZCBzbGFiIGZvciBpOTE1X2RlcGVu ZGVuY3kuCj4gICAgIFJlbmFtZSB0aGUgbGlzdHMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgICAgICAgICAgICB8ICAxNCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5jICAgIHwgIDk2ICsrKysrKysrKysrKysrKysrKystCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCAgICB8ICA0MCArKysrKysrKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgICAxICsKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgICAzICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8IDEzNSArKysrKysrKysrKysr KysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggICAgfCAgIDMgKy0KPiAgOSBmaWxlcyBjaGFuZ2VkLCAyODIgaW5zZXJ0aW9ucygrKSwgMTgg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDNj Yjk2ZDI2MGRmYi4uZGFjNDM1NjgwZTk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiBAQCAtNjMxLDggKzYzMSw5IEBAIHN0YXRpYyB2b2lkIHByaW50X3JlcXVlc3Qoc3Ry dWN0IHNlcV9maWxlICptLAo+ICAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEs Cj4gIAkJCSAgY29uc3QgY2hhciAqcHJlZml4KQo+ICB7Cj4gLQlzZXFfcHJpbnRmKG0sICIlcyV4 IFsleDoleF0gQCAlZDogJXNcbiIsIHByZWZpeCwKPiArCXNlcV9wcmludGYobSwgIiVzJXggWyV4 OiV4XSBwcmlvPSVkIEAgJWRtczogJXNcbiIsIHByZWZpeCwKPiAgCQkgICBycS0+Z2xvYmFsX3Nl cW5vLCBycS0+Y3R4LT5od19pZCwgcnEtPmZlbmNlLnNlcW5vLAo+ICsJCSAgIHJxLT5wcmlvdHJl ZS5wcmlvcml0eSwKPiAgCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBycS0+ZW1pdHRl ZF9qaWZmaWVzKSwKPiAgCQkgICBycS0+dGltZWxpbmUtPmNvbW1vbi0+bmFtZSk7Cj4gIH0KPiBA QCAtMzIxOCw2ICszMjE5LDcgQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+Cj4gIAkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0 cykgewo+ICAJCQl1MzIgcHRyLCByZWFkLCB3cml0ZTsKPiArCQkJc3RydWN0IHJiX25vZGUgKnJi Owo+Cj4gIAkJCXNlcV9wcmludGYobSwgIlx0RXhlY2xpc3Qgc3RhdHVzOiAweCUwOHggJTA4eFxu IiwKPiAgCQkJCSAgIEk5MTVfUkVBRChSSU5HX0VYRUNMSVNUX1NUQVRVU19MTyhlbmdpbmUpKSwK PiBAQCAtMzI1Nyw3ICszMjU5LDggQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCQlyY3VfcmVhZF91bmxvY2soKTsKPgo+ ICAJCQlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiAtCQkJbGlzdF9m b3JfZWFjaF9lbnRyeShycSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUsIGV4ZWNsaXN0X2xpbmsp IHsKPiArCQkJZm9yIChyYiA9IGVuZ2luZS0+ZXhlY2xpc3RfZmlyc3Q7IHJiOyByYiA9IHJiX25l eHQocmIpKSB7Cj4gKwkJCQlycSA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKnJxKSwgcHJpb3RyZWUu bm9kZSk7Cj4gIAkJCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdFEgIik7Cj4gIAkJCX0KPiAg CQkJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA0NzM1YjQxNzcxMDAuLmU3OTAxNDcyMDlmMyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNzkxLDYgKzE3OTEsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7Cj4gIAlzdHJ1Y3Qga21lbV9jYWNoZSAqb2JqZWN0czsKPiAgCXN0cnVjdCBr bWVtX2NhY2hlICp2bWFzOwo+ICAJc3RydWN0IGttZW1fY2FjaGUgKnJlcXVlc3RzOwo+ICsJc3Ry dWN0IGttZW1fY2FjaGUgKmRlcGVuZGVuY2llczsKPgo+ICAJY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGluZm87Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBkZjgwM2U4 MmViMDcuLmE0ZGMyZGEyMzIzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0y NjkzLDEwICsyNjkzLDExIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAJCXNwaW5fbG9ja19pcnFzYXZlKCZl bmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4KPiAtCQlJTklUX0xJU1RfSEVBRCgmZW5n aW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gIAkJaTkxNV9nZW1fcmVxdWVzdF9wdXQoZW5naW5lLT5l eGVjbGlzdF9wb3J0WzBdLnJlcXVlc3QpOwo+ICAJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KGVuZ2lu ZS0+ZXhlY2xpc3RfcG9ydFsxXS5yZXF1ZXN0KTsKPiAgCQltZW1zZXQoZW5naW5lLT5leGVjbGlz dF9wb3J0LCAwLCBzaXplb2YoZW5naW5lLT5leGVjbGlzdF9wb3J0KSk7Cj4gKwkJZW5naW5lLT5l eGVjbGlzdF9xdWV1ZSA9IFJCX1JPT1Q7Cj4gKwkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9IE5V TEw7Cj4KPiAgCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr LCBmbGFncyk7Cj4gIAl9Cj4gQEAgLTQ3NTQsMTIgKzQ3NTUsMTggQEAgaTkxNV9nZW1fbG9hZF9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAoIWRldl9wcml2LT5yZXF1ZXN0cykK PiAgCQlnb3RvIGVycl92bWFzOwo+Cj4gKwlkZXZfcHJpdi0+ZGVwZW5kZW5jaWVzID0gS01FTV9D QUNIRShpOTE1X2RlcGVuZGVuY3ksCj4gKwkJCQkJICAgIFNMQUJfSFdDQUNIRV9BTElHTiB8Cj4g KwkJCQkJICAgIFNMQUJfUkVDTEFJTV9BQ0NPVU5UKTsKPiArCWlmICghZGV2X3ByaXYtPmRlcGVu ZGVuY2llcykKPiArCQlnb3RvIGVycl9yZXF1ZXN0czsKPiArCj4gIAltdXRleF9sb2NrKCZkZXZf cHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0 LnRpbWVsaW5lcyk7Cj4gIAllcnIgPSBpOTE1X2dlbV90aW1lbGluZV9pbml0X19nbG9iYWwoZGV2 X3ByaXYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g IAlpZiAoZXJyKQo+IC0JCWdvdG8gZXJyX3JlcXVlc3RzOwo+ICsJCWdvdG8gZXJyX2RlcGVuZGVu Y2llczsKPgo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOwo+ICAJ SU5JVF9XT1JLKCZkZXZfcHJpdi0+bW0uZnJlZV93b3JrLCBfX2k5MTVfZ2VtX2ZyZWVfd29yayk7 Cj4gQEAgLTQ3ODcsNiArNDc5NCw4IEBAIGk5MTVfZ2VtX2xvYWRfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+Cj4gIAlyZXR1cm4gMDsKPgo+ICtlcnJfZGVwZW5kZW5jaWVzOgo+ICsJa21l bV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBlbmRlbmNpZXMpOwo+ICBlcnJfcmVxdWVzdHM6 Cj4gIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnJlcXVlc3RzKTsKPiAgZXJyX3ZtYXM6 Cj4gQEAgLTQ4MDMsNiArNDgxMiw3IEBAIHZvaWQgaTkxNV9nZW1fbG9hZF9jbGVhbnVwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4KPiAgCVdBUk5fT04oIWxsaXN0X2VtcHR5KCZkZXZfcHJpdi0+ bW0uZnJlZV9saXN0KSk7Cj4KPiArCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+ZGVwZW5k ZW5jaWVzKTsKPiAgCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+cmVxdWVzdHMpOwo+ICAJ a21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT52bWFzKTsKPiAgCWttZW1fY2FjaGVfZGVzdHJv eShkZXZfcHJpdi0+b2JqZWN0cyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYwo+IGluZGV4IDkzZjc3ZGY5YmM1MS4uMjc4YjEwM2E0ZTk1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBAIC0xMTMsNiArMTEzLDgyIEBAIGk5MTVf Z2VtX3JlcXVlc3RfcmVtb3ZlX2Zyb21fY2xpZW50KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCkKPiAgCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXYtPm1tLmxvY2spOwo+ICB9Cj4K PiArc3RhdGljIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKgo+ICtpOTE1X2RlcGVuZGVuY3lfYWxs b2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXJldHVybiBrbWVtX2Nh Y2hlX2FsbG9jKGk5MTUtPmRlcGVuZGVuY2llcywgR0ZQX0tFUk5FTCk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkCj4gK2k5MTVfZGVwZW5kZW5jeV9mcmVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICsJCSAgICAgc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwKQo+ICt7Cj4gKwlr bWVtX2NhY2hlX2ZyZWUoaTkxNS0+ZGVwZW5kZW5jaWVzLCBkZXApOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZAo+ICtfX2k5MTVfcHJpb3RyZWVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfcHJp b3RyZWUgKnB0LAo+ICsJCQkgICAgICAgc3RydWN0IGk5MTVfcHJpb3RyZWUgKnNpZ25hbCwKPiAr CQkJICAgICAgIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKmRlcCwKPiArCQkJICAgICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3MpCj4gK3sKPiArCUlOSVRfTElTVF9IRUFEKCZkZXAtPmRmc19saW5rKTsK PiArCWxpc3RfYWRkKCZkZXAtPndhaXRfbGluaywgJnNpZ25hbC0+d2FpdGVyc19saXN0KTsKPiAr CWxpc3RfYWRkKCZkZXAtPnNpZ25hbF9saW5rLCAmcHQtPnNpZ25hbGVyc19saXN0KTsKPiArCWRl cC0+c2lnbmFsZXIgPSBzaWduYWw7Cj4gKwlkZXAtPmZsYWdzID0gZmxhZ3M7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQKPiAraTkxNV9wcmlvdHJlZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkJICAgICBzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQsCj4g KwkJCSAgICAgc3RydWN0IGk5MTVfcHJpb3RyZWUgKnNpZ25hbCkKPiArewo+ICsJc3RydWN0IGk5 MTVfZGVwZW5kZW5jeSAqZGVwOwo+ICsKPiArCWRlcCA9IGk5MTVfZGVwZW5kZW5jeV9hbGxvYyhp OTE1KTsKPiArCWlmICghZGVwKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCV9faTkxNV9w cmlvdHJlZV9hZGRfZGVwZW5kZW5jeShwdCwgc2lnbmFsLCBkZXAsIEk5MTVfREVQRU5ERU5DWV9B TExPQyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiAraTkxNV9wcmlv dHJlZV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaTkxNV9wcmlv dHJlZSAqcHQpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKmRlcCwgKm5leHQ7Cj4g Kwo+ICsJR0VNX0JVR19PTighUkJfRU1QVFlfTk9ERSgmcHQtPm5vZGUpKTsKPiArCj4gKwkvKiBF dmVyeW9uZSB3ZSBkZXBlbmRlZCB1cG9uICh0aGUgZmVuY2VzIHdlIHdhaXQgdG8gYmUgc2lnbmFs ZWQpCj4gKwkgKiBzaG91bGQgcmV0aXJlIGJlZm9yZSB1cyBhbmQgcmVtb3ZlIHRoZW1zZWx2ZXMg ZnJvbSBvdXIgbGlzdC4KPiArCSAqIEhvd2V2ZXIsIHJldGlyZW1lbnQgaXMgcnVuIGluZGVwZW5k ZW50bHkgb24gZWFjaCB0aW1lbGluZSBhbmQKPiArCSAqIHNvIHdlIG1heSBiZSBjYWxsZWQgb3V0 LW9mLW9yZGVyLgo+ICsJICovCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVwLCBuZXh0 LCAmcHQtPnNpZ25hbGVyc19saXN0LCBzaWduYWxfbGluaykgewo+ICsJCWxpc3RfZGVsKCZkZXAt PndhaXRfbGluayk7Cj4gKwkJaWYgKGRlcC0+ZmxhZ3MgJiBJOTE1X0RFUEVOREVOQ1lfQUxMT0Mp Cj4gKwkJCWk5MTVfZGVwZW5kZW5jeV9mcmVlKGk5MTUsIGRlcCk7Cj4gKwl9Cj4gKwo+ICsJLyog UmVtb3ZlIG91cnNlbHZlcyBmcm9tIGV2ZXJ5b25lIHdobyBkZXBlbmRzIHVwb24gdXMgKi8KPiAr CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXAsIG5leHQsICZwdC0+d2FpdGVyc19saXN0LCB3 YWl0X2xpbmspIHsKPiArCQlsaXN0X2RlbCgmZGVwLT5zaWduYWxfbGluayk7Cj4gKwkJaWYgKGRl cC0+ZmxhZ3MgJiBJOTE1X0RFUEVOREVOQ1lfQUxMT0MpCj4gKwkJCWk5MTVfZGVwZW5kZW5jeV9m cmVlKGk5MTUsIGRlcCk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2k5MTVfcHJp b3RyZWVfaW5pdChzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQpCj4gK3sKPiArCUlOSVRfTElTVF9I RUFEKCZwdC0+c2lnbmFsZXJzX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnB0LT53YWl0ZXJz X2xpc3QpOwo+ICsJUkJfQ0xFQVJfTk9ERSgmcHQtPm5vZGUpOwo+ICsJcHQtPnByaW9yaXR5ID0g SU5UX01JTjsKCk5vdCBJOTE1X1BSSU9SSVRZX01JTj8gT3IgaXQgaGFzIHRvIGJlIHNtYWxsZXI/ IEluIHdoaWNoIGNhc2UgCkJVSUxEX0JVR19PTihJTlRfTUlOID49IEk5MTVfUFJJT1JJVFlfTUlO KT8KCj4gK30KPiArCj4gIHZvaWQgaTkxNV9nZW1fcmV0aXJlX25vb3Aoc3RydWN0IGk5MTVfZ2Vt X2FjdGl2ZSAqYWN0aXZlLAo+ICAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCkKPiAgewo+IEBAIC0xODIsNiArMjU4LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVx dWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAJaTkx NV9nZW1fY29udGV4dF9wdXQocmVxdWVzdC0+Y3R4KTsKPgo+ICAJZG1hX2ZlbmNlX3NpZ25hbCgm cmVxdWVzdC0+ZmVuY2UpOwo+ICsKPiArCWk5MTVfcHJpb3RyZWVfZmluaShyZXF1ZXN0LT5pOTE1 LCAmcmVxdWVzdC0+cHJpb3RyZWUpOwo+ICAJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxdWVzdCk7 Cj4gIH0KPgo+IEBAIC00NjEsNiArNTM5LDggQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkgKi8KPiAgCWk5MTVfc3dfZmVuY2VfYXdh aXRfc3dfZmVuY2UoJnJlcS0+ZXhlY3V0ZSwgJnJlcS0+c3VibWl0LCAmcmVxLT5leGVjcSk7Cj4K PiArCWk5MTVfcHJpb3RyZWVfaW5pdCgmcmVxLT5wcmlvdHJlZSk7Cj4gKwo+ICAJSU5JVF9MSVNU X0hFQUQoJnJlcS0+YWN0aXZlX2xpc3QpOwo+ICAJcmVxLT5pOTE1ID0gZGV2X3ByaXY7Cj4gIAly ZXEtPmVuZ2luZSA9IGVuZ2luZTsKPiBAQCAtNTE0LDYgKzU5NCwxNCBAQCBpOTE1X2dlbV9yZXF1 ZXN0X2F3YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywKPgo+ICAJ R0VNX0JVR19PTih0byA9PSBmcm9tKTsKPgo+ICsJaWYgKHRvLT5lbmdpbmUtPnNjaGVkdWxlKSB7 Cj4gKwkJcmV0ID0gaTkxNV9wcmlvdHJlZV9hZGRfZGVwZW5kZW5jeSh0by0+aTkxNSwKPiArCQkJ CQkJICAgJnRvLT5wcmlvdHJlZSwKPiArCQkJCQkJICAgJmZyb20tPnByaW90cmVlKTsKPiArCQlp ZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gIAlpZiAodG8tPnRpbWVs aW5lID09IGZyb20tPnRpbWVsaW5lKQo+ICAJCXJldHVybiAwOwo+Cj4gQEAgLTczNyw5ICs4MjUs MTUgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKPgo+ICAJcHJldiA9IGk5MTVfZ2VtX2FjdGl2 ZV9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gIAkJCQkgICAmcmVxdWVzdC0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocHJldikKPiArCWlmIChwcmV2KSB7Cj4gIAkJaTkx NV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZSgmcmVxdWVzdC0+c3VibWl0LCAmcHJldi0+c3VibWl0 LAo+ICAJCQkJCSAgICAgJnJlcXVlc3QtPnN1Ym1pdHEpOwo+ICsJCWlmIChlbmdpbmUtPnNjaGVk dWxlKQo+ICsJCQlfX2k5MTVfcHJpb3RyZWVfYWRkX2RlcGVuZGVuY3koJnJlcXVlc3QtPnByaW90 cmVlLAo+ICsJCQkJCQkgICAgICAgJnByZXYtPnByaW90cmVlLAo+ICsJCQkJCQkgICAgICAgJnJl cXVlc3QtPmRlcCwKPiArCQkJCQkJICAgICAgIDApOwo+ICsJfQo+Cj4gIAlzcGluX2xvY2tfaXJx KCZ0aW1lbGluZS0+bG9jayk7Cj4gIAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmdGlt ZWxpbmUtPnJlcXVlc3RzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5o Cj4gaW5kZXggZDg5MDQ4NjNkM2Q5Li41ODRkNzYxNzBkZjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCj4gQEAgLTQxLDYgKzQxLDMyIEBAIHN0cnVjdCBpbnRl bF9zaWduYWxfbm9kZSB7Cj4gIAlzdHJ1Y3QgaW50ZWxfd2FpdCB3YWl0Owo+ICB9Owo+Cj4gK3N0 cnVjdCBpOTE1X2RlcGVuZGVuY3kgewo+ICsJc3RydWN0IGk5MTVfcHJpb3RyZWUgKnNpZ25hbGVy Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBzaWduYWxfbGluazsKPiArCXN0cnVjdCBsaXN0X2hlYWQg d2FpdF9saW5rOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBkZnNfbGluazsKPiArCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gKyNkZWZpbmUgSTkxNV9ERVBFTkRFTkNZX0FMTE9DIEJJVCgwKQo+ICt9Owo+ ICsKPiArLyogUmVxdWVzdHMgZXhpc3QgaW4gYSBjb21wbGV4IHdlYiBvZiBpbnRlcmRlcGVuZGVu Y2llcy4gRWFjaCByZXF1ZXN0Cj4gKyAqIGhhcyB0byB3YWl0IGZvciBzb21lIG90aGVyIHJlcXVl c3QgdG8gY29tcGxldGUgYmVmb3JlIGl0IGlzIHJlYWR5IHRvIGJlIHJ1bgo+ICsgKiAoZS5nLiB3 ZSBoYXZlIHRvIHdhaXQgdW50aWwgdGhlIHBpeGVscyBoYXZlIGJlZW4gcmVuZGVyaW5nIGludG8g YSB0ZXh0dXJlCj4gKyAqIGJlZm9yZSB3ZSBjYW4gY29weSBmcm9tIGl0KS4gV2UgdHJhY2sgdGhl IHJlYWRpbmVzcyBvZiBhIHJlcXVlc3QgaW4gdGVybXMKPiArICogb2YgZmVuY2VzLCBidXQgd2Ug YWxzbyBuZWVkIHRvIGtlZXAgdGhlIGRlcGVuZGVuY3kgdHJlZSBmb3IgdGhlIGxpZmV0aW1lCj4g KyAqIG9mIHRoZSByZXF1ZXN0IChiZXlvbmQgdGhlIGxpZmUgb2YgYW4gaW5kaXZpZHVhbCBmZW5j ZSkuIFdlIHVzZSB0aGUgdHJlZQo+ICsgKiBhdCB2YXJpb3VzIHBvaW50cyB0byByZW9yZGVyIHRo ZSByZXF1ZXN0cyB3aGlsc3Qga2VlcGluZyB0aGUgcmVxdWVzdHMKPiArICogaW4gb3JkZXIgd2l0 aCByZXNwZWN0IHRvIHRoZWlyIHZhcmlvdXMgZGVwZW5kZW5jaWVzLgo+ICsgKi8KPiArc3RydWN0 IGk5MTVfcHJpb3RyZWUgewo+ICsJc3RydWN0IGxpc3RfaGVhZCBzaWduYWxlcnNfbGlzdDsgLyog dGhvc2UgYmVmb3JlIHVzLCB3ZSBkZXBlbmQgdXBvbiAqLwo+ICsJc3RydWN0IGxpc3RfaGVhZCB3 YWl0ZXJzX2xpc3Q7IC8qIHRob3NlIGFmdGVyIHVzLCB0aGV5IGRlcGVuZCB1cG9uIHVzICovCj4g KwlzdHJ1Y3QgcmJfbm9kZSBub2RlOwo+ICsJaW50IHByaW9yaXR5Owo+ICsjZGVmaW5lIEk5MTVf UFJJT1JJVFlfTUFYIDEwMjQKPiArfTsKPiArCj4gIC8qKgo+ICAgKiBSZXF1ZXN0IHF1ZXVlIHN0 cnVjdHVyZS4KPiAgICoKPiBAQCAtMTAyLDYgKzEyOCwxNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3Qgewo+ICAJd2FpdF9xdWV1ZV90IHN1Ym1pdHE7Cj4gIAl3YWl0X3F1ZXVlX3QgZXhl Y3E7Cj4KPiArCS8qIEEgbGlzdCBvZiBldmVyeW9uZSB3ZSB3YWl0IHVwb24sIGFuZCBldmVyeW9u ZSB3aG8gd2FpdHMgdXBvbiB1cy4KPiArCSAqIEV2ZW4gdGhvdWdoIHdlIHdpbGwgbm90IGJlIHN1 Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUgYmVmb3JlIHRoZQo+ICsJICogc3VibWl0IGZlbmNlIGlz IHNpZ25hbGVkIChpdCB3YWl0cyBmb3IgYWxsIGV4dGVybmFsIGV2ZW50cyBhcyB3ZWxsCj4gKwkg KiBhcyBvdXIgb3duIHJlcXVlc3RzKSwgdGhlIHNjaGVkdWxlciBzdGlsbCBuZWVkcyB0byBrbm93 IHRoZQo+ICsJICogZGVwZW5kZW5jeSB0cmVlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHJlcXVl c3QgKGZyb20gZXhlY2J1Zgo+ICsJICogdG8gcmV0aXJlbWVudCksIGkuZS4gYmlkaXJlY3Rpb25h bCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvciB0aGUKPiArCSAqIHJlcXVlc3Qgbm90IHRpZWQg dG8gaW5kaXZpZHVhbCBmZW5jZXMuCj4gKwkgKi8KPiArCXN0cnVjdCBpOTE1X3ByaW90cmVlIHBy aW90cmVlOwo+ICsJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSBkZXA7Cj4gKwo+ICAJdTMyIGdsb2Jh bF9zZXFubzsKPgo+ICAJLyoqIEdFTSBzZXF1ZW5jZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRo ZSBwcmV2aW91cyByZXF1ZXN0LAo+IEBAIC0xNTgsOSArMTk1LDYgQEAgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJp djsKPiAgCS8qKiBmaWxlX3ByaXYgbGlzdCBlbnRyeSBmb3IgdGhpcyByZXF1ZXN0ICovCj4gIAlz dHJ1Y3QgbGlzdF9oZWFkIGNsaWVudF9saXN0Owo+IC0KPiAtCS8qKiBMaW5rIGluIHRoZSBleGVj bGlzdCBzdWJtaXNzaW9uIHF1ZXVlLCBndWFyZGVkIGJ5IGV4ZWNsaXN0X2xvY2suICovCj4gLQlz dHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X2xpbms7Cj4gIH07Cj4KPiAgZXh0ZXJuIGNvbnN0IHN0 cnVjdCBkbWFfZmVuY2Vfb3BzIGk5MTVfZmVuY2Vfb3BzOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCA4MzQzOGM2YTg4NjQuLjdjNjgxOTk2ODMw NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBA QCAtMTUzMiw2ICsxNTMyLDcgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIFRha2Ugb3ZlciBmcm9tIG1hbnVh bCBjb250cm9sIG9mIEVMU1AgKGV4ZWNsaXN0cykgKi8KPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGRldl9wcml2LCBpZCkgewo+ICAJCWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBpOTE1X2d1 Y19zdWJtaXQ7Cj4gKwkJZW5naW5lLT5zY2hlZHVsZSA9IE5VTEw7Cj4KPiAgCQkvKiBSZXBsYXkg dGhlIGN1cnJlbnQgc2V0IG9mIHByZXZpb3VzbHkgc3VibWl0dGVkIHJlcXVlc3RzICovCj4gIAkJ bGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCj4gaW5kZXggYzkxNzFhMDU4NDc4Li4zZGE0ZDQ2NmUzMzIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC0yMzksNyArMjM5LDggQEAgc3Rh dGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfdGltZWxpbmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgKi8KPiAgdm9pZCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IC0JSU5JVF9MSVNUX0hFQUQoJmVuZ2lu ZS0+ZXhlY2xpc3RfcXVldWUpOwo+ICsJZW5naW5lLT5leGVjbGlzdF9xdWV1ZSA9IFJCX1JPT1Q7 Cj4gKwllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gTlVMTDsKPgo+ICAJaW50ZWxfZW5naW5lX2lu aXRfdGltZWxpbmUoZW5naW5lKTsKPiAgCWludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVjayhlbmdp bmUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggOTQ5MzNmNDI5N2JiLi5hZjk0 NGEyNDY1MTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC00MzIsOSArNDMy LDEwIEBAIHN0YXRpYyBib29sIGNhbl9tZXJnZV9jdHgoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKnByZXYsCj4KPiAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKmN1cnNvciwgKmxhc3Q7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmxhc3Q7 Cj4gIAlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydDsK PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gIAlib29s IHN1Ym1pdCA9IGZhbHNlOwo+Cj4gIAlsYXN0ID0gcG9ydC0+cmVxdWVzdDsKPiBAQCAtNDcxLDcg KzQ3MiwxMSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gIAkgKi8KPgo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+ dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoY3Vyc29yLCAm ZW5naW5lLT5leGVjbGlzdF9xdWV1ZSwgZXhlY2xpc3RfbGluaykgewo+ICsJcmIgPSBlbmdpbmUt PmV4ZWNsaXN0X2ZpcnN0Owo+ICsJd2hpbGUgKHJiKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpjdXJzb3IgPQo+ICsJCQlyYl9lbnRyeShyYiwgdHlwZW9mKCpjdXJzb3IpLCBw cmlvdHJlZS5ub2RlKTsKPiArCj4gIAkJLyogQ2FuIHdlIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdp dGggdGhlIGN1cnJlbnQgcG9ydD8gSXQgaGFzIHRvCj4gIAkJICogYmUgdGhlIHNhbWUgY29udGV4 dC9yaW5nYnVmZmVyIGFuZCBub3QgaGF2ZSBhbnkgZXhjZXB0aW9ucwo+ICAJCSAqIChlLmcuIEdW VCBzYXlpbmcgbmV2ZXIgdG8gY29tYmluZSBjb250ZXh0cykuCj4gQEAgLTUwMyw2ICs1MDgsMTEg QEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAJCQlwb3J0Kys7Cj4gIAkJfQo+Cj4gKwkJcmIgPSByYl9uZXh0KHJiKTsKPiAr CQlyYl9lcmFzZSgmY3Vyc29yLT5wcmlvdHJlZS5ub2RlLCAmZW5naW5lLT5leGVjbGlzdF9xdWV1 ZSk7Cj4gKwkJUkJfQ0xFQVJfTk9ERSgmY3Vyc29yLT5wcmlvdHJlZS5ub2RlKTsKPiArCQljdXJz b3ItPnByaW90cmVlLnByaW9yaXR5ID0gSU5UX01BWDsKCldoYXQgZG9lcyBzZXR0aW5nIHRoZSBw cmlvcml0eSB0byBJTlRfTUFYIGhlcmUgZG8/Cgo+ICsKPiAgCQkvKiBXZSBrZWVwIHRoZSBwcmV2 aW91cyBjb250ZXh0IGFsaXZlIHVudGlsIHdlIHJldGlyZSB0aGUKPiAgCQkgKiBmb2xsb3dpbmcg cmVxdWVzdC4gVGhpcyBlbnN1cmVzIHRoYXQgYW55IHRoZSBjb250ZXh0IG9iamVjdAo+ICAJCSAq IGlzIHN0aWxsIHBpbm5lZCBmb3IgYW55IHJlc2lkdWFsIHdyaXRlcyB0aGUgSFcgbWFrZXMgaW50 byBpdAo+IEBAIC01MTcsMTEgKzUyNyw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCQlzdWJtaXQgPSB0cnVlOwo+ICAJ fQo+ICAJaWYgKHN1Ym1pdCkgewo+IC0JCS8qIERlY291cGxlIGFsbCB0aGUgcmVxdWVzdHMgc3Vi bWl0dGVkIGZyb20gdGhlIHF1ZXVlICovCj4gLQkJZW5naW5lLT5leGVjbGlzdF9xdWV1ZS5uZXh0 ID0gJmN1cnNvci0+ZXhlY2xpc3RfbGluazsKPiAtCQljdXJzb3ItPmV4ZWNsaXN0X2xpbmsucHJl diA9ICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlOwo+IC0KPiAgCQlpOTE1X2dlbV9yZXF1ZXN0X2Fz c2lnbigmcG9ydC0+cmVxdWVzdCwgbGFzdCk7Cj4gKwkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9 IHJiOwo+ICAJfQo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+ bG9jaywgZmxhZ3MpOwo+Cj4gQEAgLTYwNCwxNyArNjExLDEyNiBAQCBzdGF0aWMgdm9pZCBpbnRl bF9scmNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAJaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQoZGV2X3ByaXYsIGVuZ2luZS0+ZndfZG9tYWlucyk7Cj4gIH0KPgo+ICtzdGF0 aWMgYm9vbCBpbnNlcnRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQsIHN0cnVjdCBy Yl9yb290ICpyb290KQo+ICt7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSAqKnAsICpyYjsKPiArCWJvb2wg Zmlyc3QgPSB0cnVlOwo+ICsKPiArCS8qIG1vc3QgcG9zaXRpdmUgcHJpb3JpdHkgaXMgc2NoZWR1 bGVkIGZpcnN0LCBlcXVhbCBwcmlvcml0aWVzIGZpZm8gKi8KPiArCXJiID0gTlVMTDsKPiArCXAg PSAmcm9vdC0+cmJfbm9kZTsKPiArCXdoaWxlICgqcCkgewo+ICsJCXN0cnVjdCBpOTE1X3ByaW90 cmVlICpwb3M7Cj4gKwo+ICsJCXJiID0gKnA7Cj4gKwkJcG9zID0gcmJfZW50cnkocmIsIHR5cGVv ZigqcG9zKSwgbm9kZSk7Cj4gKwkJaWYgKHB0LT5wcmlvcml0eSA+IHBvcy0+cHJpb3JpdHkpIHsK PiArCQkJcCA9ICZyYi0+cmJfbGVmdDsKPiArCQl9IGVsc2Ugewo+ICsJCQlwID0gJnJiLT5yYl9y aWdodDsKPiArCQkJZmlyc3QgPSBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwlyYl9saW5rX25vZGUo JnB0LT5ub2RlLCByYiwgcCk7Cj4gKwlyYl9pbnNlcnRfY29sb3IoJnB0LT5ub2RlLCByb290KTsK PiArCj4gKwlyZXR1cm4gZmlyc3Q7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19z dWJtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIHsK PiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKPgo+ ICAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPgo+IC0JbGlz dF9hZGRfdGFpbCgmcmVxdWVzdC0+ZXhlY2xpc3RfbGluaywgJmVuZ2luZS0+ZXhlY2xpc3RfcXVl dWUpOwo+ICsJaWYgKGluc2VydF9yZXF1ZXN0KCZyZXF1ZXN0LT5wcmlvdHJlZSwgJmVuZ2luZS0+ ZXhlY2xpc3RfcXVldWUpKQo+ICsJCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSAmcmVxdWVzdC0+ cHJpb3RyZWUubm9kZTsKPiAgCWlmIChleGVjbGlzdHNfZWxzcF9pZGxlKGVuZ2luZSkpCj4gIAkJ dGFza2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5pcnFfdGFza2xldCk7Cj4gIH0KPgo+ICtzdGF0 aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gK3B0X2xvY2tfZW5naW5lKHN0cnVjdCBpOTE1 X3ByaW90cmVlICpwdCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbG9ja2VkKQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwo+ICsJZW5naW5lID0gY29udGFpbmVy X29mKHB0LAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsCj4gKwkJCSAg ICAgIHByaW90cmVlKS0+ZW5naW5lOwo+ICsJaWYgKGVuZ2luZSAhPSBsb2NrZWQpIHsKPiArCQlp ZiAobG9ja2VkKQo+ICsJCQlzcGluX3VubG9ja19pcnEoJmxvY2tlZC0+dGltZWxpbmUtPmxvY2sp Owo+ICsJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJfQo+ICsK PiArCXJldHVybiBlbmdpbmU7Cj4gK30KCkhhLCBjdXRlLiA6KQoKPiArCj4gK3N0YXRpYyB2b2lk IGV4ZWNsaXN0c19zY2hlZHVsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Qs IGludCBwcmlvKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBOVUxM Owo+ICsJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwLCAqcDsKPiArCXN0cnVjdCBpOTE1X2Rl cGVuZGVuY3kgc3RhY2s7Cj4gKwlMSVNUX0hFQUQoZGZzKTsKPiArCj4gKwlpZiAocHJpbyA8PSBS RUFEX09OQ0UocmVxdWVzdC0+cHJpb3RyZWUucHJpb3JpdHkpKQo+ICsJCXJldHVybjsKPiArCj4g KwkvKiBOZWVkIEJLTCBpbiBvcmRlciB0byB1c2UgdGhlIHRlbXBvcmFyeSBsaW5rIGluc2lkZSBp OTE1X2RlcGVuZGVuY3kgKi8KPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcXVlc3QtPmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwoKQ291bGQgdXNlIGEgbmV3IGk5MTUgc3VibWlzc2lvbiBsb2Nr LCBidXQgSSBzdXBwb3NlIHRoaXMgaXMgT0sgdG8gc3RhcnQgCndpdGguCgo+ICsKPiArCXN0YWNr LnNpZ25hbGVyID0gJnJlcXVlc3QtPnByaW90cmVlOwo+ICsJbGlzdF9hZGQoJnN0YWNrLmRmc19s aW5rLCAmZGZzKTsKPiArCgpUYWRhLCBvbnRvIHRoZSBERlMgd2hpY2ggSSBhbSBub3QgZmFtaWxp YXIgd2l0aCAtIGJ1dCB0aGVyZSdzIGFsd2F5cyAKV2lraXBlZGlhLiA6KQoKPiArCS8qIFJlY3Vy c2l2ZWx5IGJ1bXAgYWxsIGRlcGVuZGVudCBwcmlvcml0aWVzIHRvIG1hdGNoIHRoZSBuZXcgcmVx dWVzdCAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlcCwgcCwgJmRmcywgZGZzX2xp bmspIHsKPiArCQlzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQgPSBkZXAtPnNpZ25hbGVyOwo+ICsK PiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZwdC0+c2lnbmFsZXJzX2xpc3QsIHNpZ25hbF9s aW5rKQo+ICsJCQlpZiAocHJpbyA+IFJFQURfT05DRShwLT5zaWduYWxlci0+cHJpb3JpdHkpKQo+ ICsJCQkJbGlzdF9tb3ZlX3RhaWwoJnAtPmRmc19saW5rLCAmZGZzKTsKPiArCj4gKwkJcCA9IGxp c3RfZmlyc3RfZW50cnkoJmRlcC0+ZGZzX2xpbmssIHR5cGVvZigqcCksIGRmc19saW5rKTsKClRo aXMgd2FzIGZ1bi4gOikKCj4gKwkJaWYgKCFSQl9FTVBUWV9OT0RFKCZwdC0+bm9kZSkpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQllbmdpbmUgPSBwdF9sb2NrX2VuZ2luZShwdCwgZW5naW5lKTsK PiArCj4gKwkJLyogSWYgaXQgaXMgbm90IGFscmVhZHkgaW4gdGhlIHJidHJlZSwgd2UgY2FuIHVw ZGF0ZSB0aGUKPiArCQkgKiBwcmlvcml0eSBpbnBsYWNlIGFuZCBza2lwIG92ZXIgaXQgKGFuZCBp dHMgZGVwZW5kZW5jaWVzKQo+ICsJCSAqIGlmIGl0IGlzIHJlZmVyZW5jZWQgYWdhaW4gYXMgd2Ug ZGVzY2VuZCB0aGUgZGZzLgo+ICsJCSAqLwoKQXJlIHlvdSBzdXJlIGl0IGlzIE9LIHRvIGlnbm9y ZSB0aGUgZGVwZW5kZW5jaWVzIGZvciBuZXcgcmVxdWVzdHM/IEkgCmRvbid0IHNlZSB3aHkgaXQg d291bGQgYmUuCgo+ICsJCWlmIChwcmlvID4gcHQtPnByaW9yaXR5ICYmIFJCX0VNUFRZX05PREUo JnB0LT5ub2RlKSkgewoKSXNuJ3QgdGhlIG5vZGUgZ3VhcmFudGVlZCB0byBiZSBlbXB0eSBmcm9t IHRoZSBlYXJsaWVyIHRlc3QgYW5kIGNvbnRpbnVlPwoKPiArCQkJcHQtPnByaW9yaXR5ID0gcHJp bzsKPiArCQkJbGlzdF9kZWxfaW5pdCgmZGVwLT5kZnNfbGluayk7Cj4gKwkJfQo+ICsJfQo+ICsK PiArCS8qIEZpZm8gYW5kIGRlcHRoLWZpcnN0IHJlcGxhY2VtZW50IGVuc3VyZSBvdXIgZGVwcyBl eGVjdXRlIGJlZm9yZSB1cyAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2Uo ZGVwLCBwLCAmZGZzLCBkZnNfbGluaykgewo+ICsJCXN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCA9 IGRlcC0+c2lnbmFsZXI7Cj4gKwo+ICsJCUlOSVRfTElTVF9IRUFEKCZkZXAtPmRmc19saW5rKTsK PiArCj4gKwkJZW5naW5lID0gcHRfbG9ja19lbmdpbmUocHQsIGVuZ2luZSk7Cj4gKwo+ICsJCWlm IChwcmlvIDw9IHB0LT5wcmlvcml0eSkKPiArCQkJY29udGludWU7CgpIb3cgd291bGQgdGhlc2Ug cHJpb3JpdGllcyBlbmQgdXAgaW4gdGhlIGxpc3Q/IFRoZSBmaXJzdCBsb29wIHNraXBzIG92ZXIg CnRoZW0uCgo+ICsKPiArCQlHRU1fQlVHX09OKFJCX0VNUFRZX05PREUoJnB0LT5ub2RlKSk7Cj4g Kwo+ICsJCXB0LT5wcmlvcml0eSA9IHByaW87Cj4gKwkJcmJfZXJhc2UoJnB0LT5ub2RlLCAmZW5n aW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gKwkJaWYgKGluc2VydF9yZXF1ZXN0KHB0LCAmZW5naW5l LT5leGVjbGlzdF9xdWV1ZSkpCj4gKwkJCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSAmcHQtPm5v ZGU7Cj4gKwl9Cj4gKwo+ICsJaWYgKGVuZ2luZSkKPiArCQlzcGluX3VubG9ja19pcnEoJmVuZ2lu ZS0+dGltZWxpbmUtPmxvY2spOwo+ICsKPiArCS8qIFhYWCBEbyB3ZSBuZWVkIHRvIHByZWVtcHQg dG8gbWFrZSByb29tIGZvciB1cyBhbmQgb3VyIGRlcHM/ICovCj4gK30KPiArCj4gIGludCBpbnRl bF9sb2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXF1ZXN0LT5lbmdpbmU7Cj4gQEAgLTE2NTEsOCArMTc2NywxMCBAQCB2b2lkIGludGVsX2V4 ZWNsaXN0c19lbmFibGVfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2Vu Z2luZV9pZCBpZDsKPgo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQo+ ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gIAkJZW5naW5lLT5z dWJtaXRfcmVxdWVzdCA9IGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdDsKPiArCQllbmdpbmUtPnNj aGVkdWxlID0gZXhlY2xpc3RzX3NjaGVkdWxlOwo+ICsJfQo+ICB9Cj4KPiAgc3RhdGljIHZvaWQK PiBAQCAtMTY2NSw2ICsxNzgzLDcgQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iID0g Z2VuOF9lbWl0X2JyZWFkY3J1bWI7Cj4gIAllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYl9zeiA9IGdl bjhfZW1pdF9icmVhZGNydW1iX3N6Owo+ICAJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IGV4ZWNs aXN0c19zdWJtaXRfcmVxdWVzdDsKPiArCWVuZ2luZS0+c2NoZWR1bGUgPSBleGVjbGlzdHNfc2No ZWR1bGU7Cj4KPiAgCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhfbG9naWNhbF9yaW5nX2VuYWJs ZV9pcnE7Cj4gIAllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuOF9sb2dpY2FsX3JpbmdfZGlzYWJs ZV9pcnE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDc1 OTkxYTNjNjk0Yi4uY2JjMTQ4ODYzYTAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaAo+IEBAIC0zNDgsNyArMzQ4LDggQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7Cj4gIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICAJCXVuc2ln bmVkIGludCBjb3VudDsKPiAgCX0gZXhlY2xpc3RfcG9ydFsyXTsKPiAtCXN0cnVjdCBsaXN0X2hl YWQgZXhlY2xpc3RfcXVldWU7Cj4gKwlzdHJ1Y3QgcmJfcm9vdCBleGVjbGlzdF9xdWV1ZTsKPiAr CXN0cnVjdCByYl9ub2RlICpleGVjbGlzdF9maXJzdDsKPiAgCXVuc2lnbmVkIGludCBmd19kb21h aW5zOwo+ICAJYm9vbCBkaXNhYmxlX2xpdGVfcmVzdG9yZV93YTsKPiAgCWJvb2wgcHJlZW1wdF93 YTsKPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK