From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC 08/12] drm/i915: Interrupt driven fences Date: Fri, 11 Dec 2015 12:17:19 +0000 Message-ID: <566ABECF.3020807@linux.intel.com> References: <1448278471-31181-1-git-send-email-John.C.Harrison@Intel.com> <1448278471-31181-9-git-send-email-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 0FE1B7A180 for ; Fri, 11 Dec 2015 04:17:29 -0800 (PST) In-Reply-To: <1448278471-31181-9-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKU29tZSByYW5kb20gY29tbWVudHMsIG1vc3RseSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3 IG9mIHNvbHZpbmcgdGhlIAp0aHVuZGVyaW5nIGhlcmQgcHJvYmxlbS4KCk9uIDIzLzExLzE1IDEx OjM0LCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+IEZyb206IEpvaG4gSGFycmlz b24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4KPiBUaGUgaW50ZW5kZWQgdXNhZ2UgbW9k ZWwgZm9yIHN0cnVjdCBmZW5jZSBpcyB0aGF0IHRoZSBzaWduYWxsZWQgc3RhdHVzCj4gc2hvdWxk IGJlIHNldCBvbiBkZW1hbmQgcmF0aGVyIHRoYW4gcG9sbGVkLiBUaGF0IGlzLCB0aGVyZSBzaG91 bGQgbm90Cj4gYmUgYSBuZWVkIGZvciBhICdzaWduYWxlZCcgZnVuY3Rpb24gdG8gYmUgY2FsbGVk IGV2ZXJ5dGltZSB0aGUgc3RhdHVzCj4gaXMgcXVlcmllZC4gSW5zdGVhZCwgJ3NvbWV0aGluZycg c2hvdWxkIGJlIGRvbmUgdG8gZW5hYmxlIGEgc2lnbmFsCj4gY2FsbGJhY2sgZnJvbSB0aGUgaGFy ZHdhcmUgd2hpY2ggd2lsbCB1cGRhdGUgdGhlIHN0YXRlIGRpcmVjdGx5LiBJbgo+IHRoZSBjYXNl IG9mIHJlcXVlc3RzLCB0aGlzIGlzIHRoZSBzZXFubyB1cGRhdGUgaW50ZXJydXB0LiBUaGUgaWRl YSBpcwo+IHRoYXQgdGhpcyBjYWxsYmFjayB3aWxsIG9ubHkgYmUgZW5hYmxlZCBvbiBkZW1hbmQg d2hlbiBzb21ldGhpbmcKPiBhY3R1YWxseSB0cmllcyB0byB3YWl0IG9uIHRoZSBmZW5jZS4KPgo+ IFRoaXMgY2hhbmdlIHJlbW92ZXMgdGhlIHBvbGxpbmcgdGVzdCBhbmQgcmVwbGFjZXMgaXQgd2l0 aCB0aGUgY2FsbGJhY2sKPiBzY2hlbWUuIEVhY2ggZmVuY2UgaXMgYWRkZWQgdG8gYSAncGxlYXNl IHBva2UgbWUnIGxpc3QgYXQgdGhlIHN0YXJ0IG9mCj4gaTkxNV9hZGRfcmVxdWVzdCgpLiBUaGUg aW50ZXJydXB0IGhhbmRsZXIgdGhlbiBzY2FucyB0aHJvdWdoIHRoZSAncG9rZQo+IG1lJyBsaXN0 IHdoZW4gYSBuZXcgc2Vxbm8gcG9wcyBvdXQgYW5kIHNpZ25hbHMgYW55IG1hdGNoaW5nCj4gZmVu Y2UvcmVxdWVzdC4gVGhlIGZlbmNlIGlzIHRoZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0IHNvIHRo ZSBlbnRpcmUKPiByZXF1ZXN0IHN0YWNrIGRvZXMgbm90IG5lZWQgdG8gYmUgc2Nhbm5lZCBldmVy eSB0aW1lLiBOb3RlIHRoYXQgdGhlCj4gZmVuY2UgaXMgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3Jl IHRoZSBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUgc2Vxbm8KPiBpbnRlcnJ1cHQgYXJlIGFkZGVk IHRvIHRoZSByaW5nLiBUaHVzIHRoZSBzZXF1ZW5jZSBpcyBndWFyYW50ZWVkIHRvIGJlCj4gcmFj ZSBmcmVlIGlmIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBlbmFibGVkLgo+Cj4gTm90ZSB0aGF0 IHRoZSBpbnRlcnJ1cHQgaXMgb25seSBlbmFibGVkIG9uIGRlbWFuZCAoaS5lLiB3aGVuCj4gX193 YWl0X3JlcXVlc3QoKSBpcyBjYWxsZWQpLiBUaHVzIHRoZXJlIGlzIHN0aWxsIGEgcG90ZW50aWFs IHJhY2Ugd2hlbgo+IGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQgYXMgdGhlIHJlcXVlc3QgbWF5IGFs cmVhZHkgaGF2ZSBjb21wbGV0ZWQuCj4gSG93ZXZlciwgdGhpcyBpcyBzaW1wbHkgc29sdmVkIGJ5 IGNhbGxpbmcgdGhlIGludGVycnVwdCBwcm9jZXNzaW5nCj4gY29kZSBpbW1lZGlhdGVseSBhZnRl ciBlbmFibGluZyB0aGUgaW50ZXJydXB0IGFuZCB0aGVyZWJ5IGNoZWNraW5nIGZvcgo+IGFscmVh ZHkgY29tcGxldGVkIHJlcXVlc3RzLgo+Cj4gTGFzdGx5LCB0aGUgcmluZyBjbGVhbiB1cCBjb2Rl IGhhcyB0aGUgcG9zc2liaWxpdHkgdG8gY2FuY2VsCj4gb3V0c3RhbmRpbmcgcmVxdWVzdHMgKGUu Zy4gYmVjYXVzZSBURFIgaGFzIHJlc2V0IHRoZSByaW5nKS4gVGhlc2UKPiByZXF1ZXN0cyB3aWxs IG5ldmVyIGdldCBzaWduYWxsZWQgYW5kIHNvIG11c3QgYmUgcmVtb3ZlZCBmcm9tIHRoZQo+IHNp Z25hbCBsaXN0IG1hbnVhbGx5LiBUaGlzIGlzIGRvbmUgYnkgc2V0dGluZyBhICdjYW5jZWxsZWQn IGZsYWcgYW5kCj4gdGhlbiBjYWxsaW5nIHRoZSByZWd1bGFyIG5vdGlmeS9yZXRpcmUgY29kZSBw YXRoIHJhdGhlciB0aGFuCj4gYXR0ZW1wdGluZyB0byBkdXBsaWNhdGUgdGhlIGxpc3QgbWFuaXB1 bGF0YXRpb24gYW5kIGNsZWFuIHVwIGNvZGUgaW4KPiBtdWx0aXBsZSBwbGFjZXMuIFRoaXMgYWxz byBhdm9pZCBhbnkgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlCj4gY2FuY2VsbGF0aW9uIHJlcXVl c3QgbWlnaHQgb2NjdXIgYWZ0ZXIvZHVyaW5nIHRoZSBjb21wbGV0aW9uIGludGVycnVwdAo+IGFj dHVhbGx5IGFycml2aW5nLgo+Cj4gdjI6IFVwZGF0ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhl IHJlcXVlc3QgdW5yZWZlcmVuY2Ugbm8gbG9uZ2VyCj4gcmVxdWlyaW5nIHRoZSBtdXRleCBsb2Nr Lgo+Cj4gdjM6IE1vdmUgdGhlIHNpZ25hbCBsaXN0IHByb2Nlc3NpbmcgYXJvdW5kIHRvIHByZXZl bnQgdW5zdWJtaXR0ZWQKPiByZXF1ZXN0cyBiZWluZyBhZGRlZCB0byB0aGUgbGlzdC4gVGhpcyB3 YXMgb2NjdXJyaW5nIG9uIEFuZHJvaWQKPiBiZWNhdXNlIHRoZSBuYXRpdmUgc3luYyBpbXBsZW1l bnRhdGlvbiBjYWxscyB0aGUKPiBmZW5jZS0+ZW5hYmxlX3NpZ25hbGxpbmcgQVBJIGltbWVkaWF0 ZWx5IG9uIGZlbmNlIGNyZWF0aW9uLgo+Cj4gVXBkYXRlZCBhZnRlciByZXZpZXcgY29tbWVudHMg YnkgVHZydGtvIFVyc3VsaW4uIFJlbmFtZWQgbGlzdCBub2RlcyB0bwo+ICdsaW5rJyBpbnN0ZWFk IG9mICdsaXN0Jy4gQWRkZWQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIGFuIGVycm9yIGNvZGUgb24K PiBhIGNhbmNlbGxlZCBmZW5jZS4gVXBkYXRlIGxpc3QgcHJvY2Vzc2luZyB0byBiZSBtb3JlIGVm ZmljaWVudC9zYWZlcgo+IHdpdGggcmVzcGVjdCB0byBzcGlubG9ja3MuCj4KPiBGb3I6IFZJWi01 MTkwCj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVs LmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAt LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxMCArKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMTg3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jICAgICAgICAgfCAgIDIgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg ICAgICAgIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyB8ICAgMiArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAg IDIgKwo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGZiZjU5MWYuLmQwMTNjNmQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjE4Nyw3ICsyMTg3LDEyIEBAIHZvaWQg aTkxNV9nZW1fdHJhY2tfZmIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZCwKPiAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4gICAJLyoqIFVuZGVybHlpbmcgb2JqZWN0IGZv ciBpbXBsZW1lbnRpbmcgdGhlIHNpZ25hbC93YWl0IHN0dWZmLiAqLwo+ICAgCXN0cnVjdCBmZW5j ZSBmZW5jZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX2xpbms7Cj4gKwlzdHJ1Y3QgbGlz dF9oZWFkIHVuc2lnbmFsX2xpbms7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBkZWxheWVkX2ZyZWVf bGluazsKPiArCWJvb2wgY2FuY2VsbGVkOwo+ICsJYm9vbCBpcnFfZW5hYmxlZDsKPiArCWJvb2wg c2lnbmFsX3JlcXVlc3RlZDsKPgo+ICAgCS8qKiBPbiBXaGljaCByaW5nIHRoaXMgcmVxdWVzdCB3 YXMgZ2VuZXJhdGVkICovCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gQEAg LTIyNjUsNiArMjI3MCwxMSBAQCBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICoqcmVxX291dCk7Cj4gICB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPgo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPiArdm9pZCBpOTE1X2dlbV9yZXF1 ZXN0X2VuYWJsZV9pbnRlcnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4g KwkJCQkgICAgICAgYm9vbCBmZW5jZV9sb2NrZWQpOwo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rf bm90aWZ5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGJvb2wgZmVuY2VfbG9ja2VkKTsK PiArCj4gICBpbnQgaTkxNV9jcmVhdGVfZmVuY2VfdGltZWxpbmUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICAgCQkJICAg ICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IGluZGV4IDE3MWFlNWYuLjJhMGIzNDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBAQCAtMTE2NSw2ICsxMTY1LDggQEAgc3RhdGljIGludCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Cj4gICAJdGltZW91dCA9IGppZmZpZXMg KyAxOwo+ICAgCXdoaWxlICghbmVlZF9yZXNjaGVkKCkpIHsKPiArCQlpOTE1X2dlbV9yZXF1ZXN0 X25vdGlmeShyZXEtPnJpbmcsIGZhbHNlKTsKPiArCgpUaGlzIGxvb2tzIGlzIGEgYml0IGhlYXZ5 d2VpZ2h0LCBoYW1tZXJpbmcgb24gdGhlIHNwaW5sb2NrIGFuZCAKaW50ZXJydXB0cyBvbi1vZmYs IHdoeSBpdCBpcyByZXF1aXJlZCB0byBjYWxsIHRoaXMgaGVyZSBpbnN0ZWFkIG9mIApyZWx5aW5n IG9uIGludGVycnVwdHMgd2hpY2ggaGF2ZSBiZWVuIGVuYWJsZWQgYWxyZWFkeT8KCj4gICAJCWlm IChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQo+ICAgCQkJcmV0dXJuIDA7Cj4KPiBA QCAtMTE3Myw2ICsxMTc1LDkgQEAgc3RhdGljIGludCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Cj4gICAJCWNwdV9yZWxheF9sb3dsYXRlbmN5 KCk7Cj4gICAJfQo+ICsKPiArCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+cmluZywgZmFs c2UpOwo+ICsKPiAgIAlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJ cmV0dXJuIDA7Cj4KPiBAQCAtMTIxNCw5ICsxMjE5LDE0IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+Cj4gICAJV0FSTighaW50ZWxf aXJxc19lbmFibGVkKGRldl9wcml2KSwgIklSUXMgZGlzYWJsZWQiKTsKPgo+IC0JaWYgKGxpc3Rf ZW1wdHkoJnJlcS0+bGlzdCkpCj4gKwlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx KSkKPiAgIAkJcmV0dXJuIDA7Cj4KPiArCS8qCj4gKwkgKiBFbmFibGUgaW50ZXJydXB0IGNvbXBs ZXRpb24gb2YgdGhlIHJlcXVlc3QuCj4gKwkgKi8KPiArCWZlbmNlX2VuYWJsZV9zd19zaWduYWxp bmcoJnJlcS0+ZmVuY2UpOwo+ICsKClRoZXJlIGlzIGR1cGxpY2F0ZWQgdXNlciBpbnRlcnJ1cHQg aGFuZGxpbmcgaW4gdGhpcyBmdW5jdGlvbiBub3cuIENvZGUgCndoaWNoIGRvZXMgaXJxIGdldC9w dXQgZGlyZWN0bHkgaXMgc3RpbGwgdGhlcmUsIGJ1dCBJIHRoaW5rIGl0IHNob3VsZCBiZSAKcmVt b3ZlZC4KCj4gICAJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpCj4gICAJCXJl dHVybiAwOwo+Cj4gQEAgLTEzNzcsNiArMTM4NywxOSBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJ bGlzdF9kZWxfaW5pdCgmcmVxdWVzdC0+bGlzdCk7Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF9yZW1v dmVfZnJvbV9jbGllbnQocmVxdWVzdCk7Cj4KPiArCS8qIEluIGNhc2UgdGhlIHJlcXVlc3QgaXMg c3RpbGwgaW4gdGhlIHNpZ25hbCBwZW5kaW5nIGxpc3QgKi8KCldoZW4gd291bGQgdGhpcyBoYXBw ZW4/IChjb21tZW50IGhpbnQpCgo+ICsJaWYgKCFsaXN0X2VtcHR5KCZyZXF1ZXN0LT5zaWduYWxf bGluaykpIHsKPiArCQkvKgo+ICsJCSAqIFRoZSByZXF1ZXN0IG11c3QgYmUgbWFya2VkIGFzIGNh bmNlbGxlZCBhbmQgdGhlIHVuZGVybHlpbmcKPiArCQkgKiBmZW5jZSBhcyBib3RoIGZhaWxlZC4g TkI6IFRoZXJlIGlzIG5vIGV4cGxpY2l0IGZlbmNlIGZhaWwKPiArCQkgKiBBUEksIHRoZXJlIGlz IG9ubHkgYSBtYW51YWwgcG9rZSBhbmQgc2lnbmFsLgo+ICsJCSAqLwo+ICsJCXJlcXVlc3QtPmNh bmNlbGxlZCA9IHRydWU7Cj4gKwkJLyogSG93IHRvIHByb3BhZ2F0ZSB0byBhbnkgYXNzb2NpYXRl ZCBzeW5jX2ZlbmNlPz8/ICovCj4gKwkJcmVxdWVzdC0+ZmVuY2Uuc3RhdHVzID0gLUVJTzsKPiAr CQlmZW5jZV9zaWduYWxfbG9ja2VkKCZyZXF1ZXN0LT5mZW5jZSk7CgpEb2VzIHRoZSBjYW5jZWxs ZWQgcmVxdWVzdCBoYXMgdG8gc3RheSBvbiB0aGUgc2lnbmFsIGxpc3Q/IElmIGl0IGNvdWxkIApi ZSBtb3ZlZCBvdXRzaWRlIG9mIHRoZSBpcnEgaG90IGxpc3QgaXQgbWlnaHQgYmUgYmVuZWZpY2lh bCBmb3IgbGlzdCAKbGVuZ3RoIGFuZCBzaW1wbGlmeWluZyB0aGUgY29kZSBpbiBpOTE1X2dlbV9y ZXF1ZXN0X25vdGlmeS4KCj4gKwl9Cj4gKwo+ICAgCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVu Y2UocmVxdWVzdCk7Cj4gICB9Cj4KPiBAQCAtMjUzNSw2ICsyNTU4LDEyIEBAIHZvaWQgX19pOTE1 X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIAkg Ki8KPiAgIAlyZXF1ZXN0LT5wb3N0Zml4ID0gaW50ZWxfcmluZ19nZXRfdGFpbChyaW5nYnVmKTsK Pgo+ICsJLyoKPiArCSAqIEFkZCB0aGUgZmVuY2UgdG8gdGhlIHBlbmRpbmcgbGlzdCBiZWZvcmUg ZW1pdHRpbmcgdGhlIGNvbW1hbmRzIHRvCj4gKwkgKiBnZW5lcmF0ZSBhIHNlcW5vIG5vdGlmaWNh dGlvbiBpbnRlcnJ1cHQuCj4gKwkgKi8KPiArCWk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHJlcXVl c3QpOwo+ICsKPiAgIAlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+ICAgCQlyZXQgPSByaW5n LT5lbWl0X3JlcXVlc3QocmVxdWVzdCk7Cj4gICAJZWxzZSB7Cj4gQEAgLTI2NTQsMjUgKzI2ODMs MTM1IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKPiAgIAkJaTkxNV9nZW1fY29udGV4dF91bnJlZmVyZW5jZShjdHgp Owo+ICAgCX0KPgo+ICsJaWYgKHJlcS0+aXJxX2VuYWJsZWQpCj4gKwkJcmVxLT5yaW5nLT5pcnFf cHV0KHJlcS0+cmluZyk7Cj4gKwo+ICAgCWttZW1fY2FjaGVfZnJlZShyZXEtPmk5MTUtPnJlcXVl c3RzLCByZXEpOwo+ICAgfQo+Cj4gLXN0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxl X3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPiArLyoKPiArICogVGhlIHJlcXVl c3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZSBzbyBhZGQgdGhlIGZl bmNlIHRvCj4gKyAqIHRoZSBsaXN0IG9mIHNpZ25hbGFibGUgZmVuY2VzLgo+ICsgKgo+ICsgKiBO QjogVGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSBlbmFibGUgaW50ZXJydXB0cyB5ZXQuIFRoYXQg b25seSBvY2N1cnMgb24KPiArICogZGVtYW5kIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWN0dWFsbHkg d2FpdGVkIG9uLiBIb3dldmVyLCBhZGRpbmcgaXQgdG8gdGhlCj4gKyAqIGxpc3QgZWFybHkgZW5z dXJlcyB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBpbnRlcnJ1cHQK PiArICogY291bGQgcG9wIG91dCBwcmVtYXR1cmVseSBhbmQgdGh1cyBiZSBjb21wbGV0ZWx5IGxv c3QuIFRoZSByYWNlIGlzIG1lcmVseQo+ICsgKiB0aGF0IHRoZSBpbnRlcnJ1cHQgbXVzdCBiZSBt YW51YWxseSBjaGVja2VkIGZvciBhZnRlciBiZWluZyBlbmFibGVkLgo+ICsgKi8KPiArdm9pZCBp OTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK PiAgIHsKPiAtCS8qIEludGVycnVwdCBkcml2ZW4gZmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQg eWV0LiovCj4gLQlXQVJOKHRydWUsICJUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkISIpOwo+IC0J cmV0dXJuIHRydWU7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArCS8qCj4gKwkgKiBB bHdheXMgZW5hYmxlIHNpZ25hbCBwcm9jZXNzaW5nIGZvciB0aGUgcmVxdWVzdCdzIGZlbmNlIG9i amVjdAo+ICsJICogYmVmb3JlIHRoYXQgcmVxdWVzdCBpcyBzdWJtaXR0ZWQgdG8gdGhlIGhhcmR3 YXJlLiBUaHVzIHRoZXJlIGlzIG5vCj4gKwkgKiByYWNlIGNvbmRpdGlvbiB3aGVyZWJ5IHRoZSBp bnRlcnJ1cHQgY291bGQgcG9wIG91dCBiZWZvcmUgdGhlCj4gKwkgKiByZXF1ZXN0IGhhcyBiZWVu IGFkZGVkIHRvIHRoZSBzaWduYWwgbGlzdC4gSGVuY2Ugbm8gbmVlZCB0byBjaGVjawo+ICsJICog Zm9yIGNvbXBsZXRpb24sIHVuZG8gdGhlIGxpc3QgYWRkIGFuZCByZXR1cm4gZmFsc2UuCj4gKwkg Ki8KPiArCWk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJlbmNlKHJlcSk7Cj4gKwlzcGluX2xvY2tfaXJx c2F2ZSgmcmVxLT5yaW5nLT5mZW5jZV9sb2NrLCBmbGFncyk7CgpUaGlzIG9ubHkgZ2V0cyBjYWxs ZWQgZnJvbSBub24taXJxIGNvbnRleHQgc28gY291bGQgdXNlIHNwaW5fbG9ja19pcnEuCgo+ICsJ V0FSTl9PTighbGlzdF9lbXB0eSgmcmVxLT5zaWduYWxfbGluaykpOwo+ICsJbGlzdF9hZGRfdGFp bCgmcmVxLT5zaWduYWxfbGluaywgJnJlcS0+cmluZy0+ZmVuY2Vfc2lnbmFsX2xpc3QpOwo+ICsJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmVxLT5yaW5nLT5mZW5jZV9sb2NrLCBmbGFncyk7Cj4g Kwo+ICsJLyoKPiArCSAqIE5COiBJbnRlcnJ1cHRzIGFyZSBvbmx5IGVuYWJsZWQgb24gZGVtYW5k LiBUaHVzIHRoZXJlIGlzIHN0aWxsIGEKPiArCSAqIHJhY2Ugd2hlcmUgdGhlIHJlcXVlc3QgY291 bGQgY29tcGxldGUgYmVmb3JlIHRoZSBpbnRlcnJ1cHQgaGFzCj4gKwkgKiBiZWVuIGVuYWJsZWQu IFRodXMgY2FyZSBtdXN0IGJlIHRha2VuIGF0IHRoYXQgcG9pbnQuCj4gKwkgKi8KPiArCj4gKwkg LyogSGF2ZSBpbnRlcnJ1cHRzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWQ/ICovCj4gKwkgaWYgKHJl cS0+c2lnbmFsX3JlcXVlc3RlZCkKClNvbWUgY29kZSBwYXRoIGNhbiBlbmFibGUgc2lnbmFsaW5n IGJlZm9yZSB0aGUgZXhlY2J1ZiBjb21wbGV0ZWQ/Cgo+ICsJCWk5MTVfZ2VtX3JlcXVlc3RfZW5h YmxlX2ludGVycnVwdChyZXEsIGZhbHNlKTsKPiArfQo+ICsKPiArLyoKPiArICogVGhlIHJlcXVl c3QgaXMgYmVpbmcgYWN0aXZlbHkgd2FpdGVkIG9uLCBzbyBlbmFibGUgaW50ZXJydXB0IGJhc2Vk Cj4gKyAqIGNvbXBsZXRpb24gc2lnbmFsbGluZy4KPiArICovCj4gK3ZvaWQgaTkxNV9nZW1fcmVx dWVzdF9lbmFibGVfaW50ZXJydXB0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICsJCQkJICAgICAgIGJvb2wgZmVuY2VfbG9ja2VkKQo+ICt7Cj4gKwlpZiAocmVxLT5pcnFfZW5h YmxlZCkKPiArCQlyZXR1cm47Cj4gKwo+ICsJV0FSTl9PTighcmVxLT5yaW5nLT5pcnFfZ2V0KHJl cS0+cmluZykpOwo+ICsJcmVxLT5pcnFfZW5hYmxlZCA9IHRydWU7CgpQcm9iYWJseSBzaG91bGRu J3Qgc2V0IHRoZSBmbGFnIGlmIGlycV9nZXQgZmFpbGVkIG5vdCB0byB1bmJhbGFuY2UgdGhlIApp cnEgcmVmY291bnQuCgo+ICsKPiArCS8qCj4gKwkgKiBCZWNhdXNlIHRoZSBpbnRlcnJ1cHQgaXMg b25seSBlbmFibGVkIG9uIGRlbWFuZCwgdGhlcmUgaXMgYSByYWNlCj4gKwkgKiB3aGVyZSB0aGUg aW50ZXJydXB0IGNhbiBmaXJlIGJlZm9yZSBhbnlvbmUgaXMgbG9va2luZyBmb3IgaXQuIFNvCj4g KwkgKiBkbyBhbiBleHBsaWNpdCBjaGVjayBmb3IgbWlzc2VkIGludGVycnVwdHMuCj4gKwkgKi8K PiArCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+cmluZywgZmVuY2VfbG9ja2VkKTsKPiAg IH0KPgo+IC1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZChzdHJ1Y3Qg ZmVuY2UgKnJlcV9mZW5jZSkKPiArc3RhdGljIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVf c2lnbmFsaW5nKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVyX29mKHJlcV9mZW5jZSwKPiAgIAkJCQkJ CSB0eXBlb2YoKnJlcSksIGZlbmNlKTsKPiArCj4gKwkvKgo+ICsJICogTm8gbmVlZCB0byBhY3R1 YWxseSBlbmFibGUgaW50ZXJydXB0IGJhc2VkIHByb2Nlc3NpbmcgdW50aWwgdGhlCj4gKwkgKiBy ZXF1ZXN0IGhhcyBiZWVuIHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUuIEF0IHdoaWNoIHBvaW50 Cj4gKwkgKiAnaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoKScgaXMgY2FsbGVkLiBTbyBvbmx5IHJl YWxseSBlbmFibGUKPiArCSAqIHNpZ25hbGxpbmcgaW4gdGhlcmUuIEp1c3Qgc2V0IGEgZmxhZyB0 byBzYXkgdGhhdCBpbnRlcnJ1cHRzIGFyZQo+ICsJICogd2FudGVkIHdoZW4gdGhlIHJlcXVlc3Qg aXMgZXZlbnR1YWxseSBzdWJtaXR0ZWQuIE9uIHRoZSBvdGhlciBoYW5kCj4gKwkgKiBpZiB0aGUg cmVxdWVzdCBoYXMgYWxyZWFkeSBiZWVuIHN1Ym1pdHRlZCB0aGVuIGludGVycnVwdHMgZG8gbmVl ZAo+ICsJICogdG8gYmUgZW5hYmxlZCBub3cuCj4gKwkgKi8KPiArCj4gKwlyZXEtPnNpZ25hbF9y ZXF1ZXN0ZWQgPSB0cnVlOwo+ICsKPiArCWlmICghbGlzdF9lbXB0eSgmcmVxLT5zaWduYWxfbGlu aykpCj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVfaW50ZXJydXB0KHJlcSwgdHJ1ZSk7Cj4g Kwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9ub3Rp Znkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9vbCBmZW5jZV9sb2NrZWQpCgpJIHRo aW5rIG5hbWUgY291bGQgYmUgaW1wcm92ZSBzaW5jZSB0aGlzIG1hZGUgbWUgZXhwZWN0IGEgcmVx dWVzdCBpbiB0aGUgCnBhcmFtZXRlciBsaXN0LgoKTWF5YmUgaTkxNV9nZW1fbm90aWZ5X3JlcXVl c3RzID8KCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCAqcmVxX25l eHQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCXUzMiBzZXFubzsKPgo+IC0Jc2Vxbm8g PSByZXEtPnJpbmctPmdldF9zZXFubyhyZXEtPnJpbmcsIGZhbHNlLypsYXp5X2NvaGVyZW5jeSov KTsKPiArCWlmIChsaXN0X2VtcHR5KCZyaW5nLT5mZW5jZV9zaWduYWxfbGlzdCkpCj4gKwkJcmV0 dXJuOwo+ICsKPiArCWlmICghZmVuY2VfbG9ja2VkKQo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZy aW5nLT5mZW5jZV9sb2NrLCBmbGFncyk7Cj4gKwo+ICsJc2Vxbm8gPSByaW5nLT5nZXRfc2Vxbm8o cmluZywgZmFsc2UpOwoKQ291bGQgcmVhZCB0aGUgc2Vxbm8gb3V0c2lkZSB0aGUgc3BpbmxvY2ss IGFsdGhvdWdoIG5vdCB0aGF0IGltcG9ydGFudCAKc2luY2UgdGhlIHByaW1hcnkgY2FsbGVyIG9m IHRoaXMgaXMgKG9yIHNob3VsZCBiZSkgdGhlIGlycSBoYW5kbGVyLgoKPiArCj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUocmVxLCByZXFfbmV4dCwgJnJpbmctPmZlbmNlX3NpZ25hbF9saXN0 LCBzaWduYWxfbGluaykgewo+ICsJCWlmICghcmVxLT5jYW5jZWxsZWQpIHsKPiArCQkJaWYgKCFp OTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFubykpCj4gKwkJCQlicmVhazsKPiArCQl9 Cj4gKwo+ICsJCS8qCj4gKwkJICogU3RhcnQgYnkgcmVtb3ZpbmcgdGhlIGZlbmNlIGZyb20gdGhl IHNpZ25hbCBsaXN0IG90aGVyd2lzZQo+ICsJCSAqIHRoZSByZXRpcmUgY29kZSBjYW4gcnVuIGNv bmN1cnJlbnRseSBhbmQgZ2V0IGNvbmZ1c2VkLgo+ICsJCSAqLwo+ICsJCWxpc3RfZGVsX2luaXQo JnJlcS0+c2lnbmFsX2xpbmspOwo+ICsKPiArCQlpZiAoIXJlcS0+Y2FuY2VsbGVkKSB7Cj4gKwkJ CWZlbmNlX3NpZ25hbF9sb2NrZWQoJnJlcS0+ZmVuY2UpOwo+ICsJCX0KPiArCj4gKwkJaWYgKHJl cS0+aXJxX2VuYWJsZWQpIHsKPiArCQkJcmVxLT5yaW5nLT5pcnFfcHV0KHJlcS0+cmluZyk7Cj4g KwkJCXJlcS0+aXJxX2VuYWJsZWQgPSBmYWxzZTsKPiArCQl9Cj4gKwo+ICsJCS8qIENhbid0IHVu cmVmZXJlbmNlIGhlcmUgYmVjYXVzZSB0aGF0IG1pZ2h0IGdyYWIgZmVuY2VfbG9jayAqLwo+ICsJ CWxpc3RfYWRkX3RhaWwoJnJlcS0+dW5zaWduYWxfbGluaywgJnJpbmctPmZlbmNlX3Vuc2lnbmFs X2xpc3QpOwo+ICsJfQo+Cj4gLQlyZXR1cm4gaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+ c2Vxbm8pOwo+ICsJaWYgKCFmZW5jZV9sb2NrZWQpCj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmcmluZy0+ZmVuY2VfbG9jaywgZmxhZ3MpOwo+ICAgfQo+Cj4gICBzdGF0aWMgY29uc3QgY2hh ciAqaTkxNV9nZW1fcmVxdWVzdF9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpyZXFfZmVu Y2UpCj4gQEAgLTI3MTIsNyArMjg1MSw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rf ZmVuY2VfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlLCBjaGFyICpzdHIsCj4KPiAg IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIGk5MTVfZ2VtX3JlcXVlc3RfZm9wcyA9IHsK PiAgIAkuZW5hYmxlX3NpZ25hbGluZwk9IGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGlu ZywKPiAtCS5zaWduYWxlZAkJPSBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZCwKPiAgIAku d2FpdAkJCT0gZmVuY2VfZGVmYXVsdF93YWl0LAo+ICAgCS5yZWxlYXNlCQk9IGk5MTVfZ2VtX3Jl cXVlc3RfcmVsZWFzZSwKPiAgIAkuZ2V0X2RyaXZlcl9uYW1lCT0gaTkxNV9nZW1fcmVxdWVzdF9n ZXRfZHJpdmVyX25hbWUsCj4gQEAgLTI3OTUsNiArMjkzMyw3IEBAIGludCBpOTE1X2dlbV9yZXF1 ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCWdvdG8gZXJyOwo+ ICAgCX0KPgo+ICsJSU5JVF9MSVNUX0hFQUQoJnJlcS0+c2lnbmFsX2xpbmspOwo+ICAgCWZlbmNl X2luaXQoJnJlcS0+ZmVuY2UsICZpOTE1X2dlbV9yZXF1ZXN0X2ZvcHMsICZyaW5nLT5mZW5jZV9s b2NrLAo+ICAgCQkgICBjdHgtPmVuZ2luZVtyaW5nLT5pZF0uZmVuY2VfdGltZWxpbmUuZmVuY2Vf Y29udGV4dCwKPiAgIAkJICAgaTkxNV9mZW5jZV90aW1lbGluZV9nZXRfbmV4dF9zZXFubygmY3R4 LT5lbmdpbmVbcmluZy0+aWRdLmZlbmNlX3RpbWVsaW5lKSk7Cj4gQEAgLTI4MzIsNiArMjk3MSwx MSBAQCB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQo+ICAgewo+ICAgCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHJl cS0+cmluZ2J1Zik7Cj4KPiArCXJlcS0+Y2FuY2VsbGVkID0gdHJ1ZTsKPiArCS8qIEhvdyB0byBw cm9wYWdhdGUgdG8gYW55IGFzc29jaWF0ZWQgc3luY19mZW5jZT8/PyAqLwo+ICsJcmVxLT5mZW5j ZS5zdGF0dXMgPSAtRUlOVkFMOwo+ICsJZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcmVxLT5mZW5jZSk7 CgpTYW1lIHF1ZXN0aW9uIGZyb20gYmVmb3JlLCBjb3VsZCB5b3UganVzdCBtb3ZlIGl0IHRvIHVu c2lnbmFsZWQgbGlzdCAKc3RyYWlnaHQgYXdheT8gKEFuZCBkcm9wIGludGVycnVwdHM/KQoKPiAr Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICAgfQo+Cj4gQEAgLTI5 MjUsNiArMzA2OSwxMyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9yaW5nX2NsZWFudXAo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlpOTE1X2dlbV9yZXF1ZXN0 X3JldGlyZShyZXF1ZXN0KTsKPiAgIAl9Cj4KPiArCS8qCj4gKwkgKiBUaWR5IHVwIGFueXRoaW5n IGxlZnQgb3Zlci4gVGhpcyBpbmNsdWRlcyBhIGNhbGwgdG8KPiArCSAqIGk5MTVfZ2VtX3JlcXVl c3Rfbm90aWZ5KCkgd2hpY2ggd2lsbCBtYWtlIHN1cmUgdGhhdCBhbnkgcmVxdWVzdHMKPiArCSAq IHRoYXQgd2VyZSBvbiB0aGUgc2lnbmFsIHBlbmRpbmcgbGlzdCBnZXQgYWxzbyBjbGVhbmVkIHVw Lgo+ICsJICovCj4gKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhyaW5nKTsKPiArCj4g ICAJLyogSGF2aW5nIGZsdXNoZWQgYWxsIHJlcXVlc3RzIGZyb20gYWxsIHF1ZXVlcywgd2Uga25v dyB0aGF0IGFsbAo+ICAgCSAqIHJpbmdidWZmZXJzIG11c3Qgbm93IGJlIGVtcHR5LiBIb3dldmVy LCBzaW5jZSB3ZSBkbyBub3QgcmVjbGFpbQo+ICAgCSAqIGFsbCBzcGFjZSB3aGVuIHJldGlyaW5n IHRoZSByZXF1ZXN0ICh0byBwcmV2ZW50IEhFQURzIGNvbGxpZGluZwo+IEBAIC0yOTc0LDYgKzMx MjUsMTMgQEAgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKPgo+ICAgCVdBUk5fT04oaTkxNV92ZXJpZnlfbGlzdHMocmluZy0+ZGV2KSk7 Cj4KPiArCS8qCj4gKwkgKiBJZiBuby1vbmUgaGFzIHdhaXRlZCBvbiBhIHJlcXVlc3QgcmVjZW50 bHkgdGhlbiBpbnRlcnJ1cHRzIHdpbGwKPiArCSAqIG5vdCBoYXZlIGJlZW4gZW5hYmxlZCBhbmQg dGh1cyBubyByZXF1ZXN0cyB3aWxsIGV2ZXIgYmUgbWFya2VkIGFzCj4gKwkgKiBjb21wbGV0ZWQu IFNvIGRvIGFuIGludGVycnVwdCBjaGVjayBub3cuCj4gKwkgKi8KPiArCWk5MTVfZ2VtX3JlcXVl c3Rfbm90aWZ5KHJpbmcsIGZhbHNlKTsKPiArCj4gICAJLyogUmV0aXJlIHJlcXVlc3RzIGZpcnN0 IGFzIHdlIHVzZSBpdCBhYm92ZSBmb3IgdGhlIGVhcmx5IHJldHVybi4KPiAgIAkgKiBJZiB3ZSBy ZXRpcmUgcmVxdWVzdHMgbGFzdCwgd2UgbWF5IHVzZSBhIGxhdGVyIHNlcW5vIGFuZCBzbyBjbGVh cgo+ICAgCSAqIHRoZSByZXF1ZXN0cyBsaXN0cyB3aXRob3V0IGNsZWFyaW5nIHRoZSBhY3RpdmUg bGlzdCwgbGVhZGluZyB0bwo+IEBAIC0zMDE1LDYgKzMxNzMsMTUgQEAgaTkxNV9nZW1fcmV0aXJl X3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAkJaTkxNV9n ZW1fcmVxdWVzdF9hc3NpZ24oJnJpbmctPnRyYWNlX2lycV9yZXEsIE5VTEwpOwo+ICAgCX0KPgo+ ICsJLyogVGlkeSB1cCBhbnkgcmVxdWVzdHMgdGhhdCB3ZXJlIHJlY2VudGx5IHNpZ25hbGxlZCAq Lwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmZlbmNlX2xvY2ssIGZsYWdzKTsKCkNvdWxk IGFsc28gdXNlIHNwaW5fbG9ja19pcnEgaGVyZSBJIHRoaW5rLgoKPiArCWxpc3Rfc3BsaWNlX2lu aXQoJnJpbmctPmZlbmNlX3Vuc2lnbmFsX2xpc3QsICZsaXN0X2hlYWQpOwo+ICsJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcmluZy0+ZmVuY2VfbG9jaywgZmxhZ3MpOwo+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKHJlcSwgcmVxX25leHQsICZsaXN0X2hlYWQsIHVuc2lnbmFsX2xpbmspIHsK PiArCQlsaXN0X2RlbCgmcmVxLT51bnNpZ25hbF9saW5rKTsKPiArCQlpOTE1X2dlbV9yZXF1ZXN0 X3VucmVmZXJlbmNlKHJlcSk7Cj4gKwl9Cj4gKwo+ICAgCS8qIFJlYWxseSBmcmVlIGFueSByZXF1 ZXN0cyB0aGF0IHdlcmUgcmVjZW50bHkgdW5yZWZlcmVuY2VkICovCj4gICAJc3Bpbl9sb2NrX2ly cXNhdmUoJnJpbmctPmRlbGF5ZWRfZnJlZV9sb2NrLCBmbGFncyk7Cj4gICAJbGlzdF9zcGxpY2Vf aW5pdCgmcmluZy0+ZGVsYXllZF9mcmVlX2xpc3QsICZsaXN0X2hlYWQpOwo+IEBAIC01MDY2LDYg KzUyMzMsOCBAQCBpbml0X3JpbmdfbGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykK PiAgIHsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRf TElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnJpbmct PmZlbmNlX3NpZ25hbF9saXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5mZW5jZV91bnNp Z25hbF9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZGVsYXllZF9mcmVlX2xpc3Qp Owo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggNjhiMDk0Yi4uNzRmODU1 MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC05ODEsNiArOTgxLDggQEAgc3Rh dGljIHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPgo+ICAg CXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJpbmcpOwo+Cj4gKwlpOTE1X2dlbV9yZXF1 ZXN0X25vdGlmeShyaW5nLCBmYWxzZSk7Cj4gKwo+ICAgCXdha2VfdXBfYWxsKCZyaW5nLT5pcnFf cXVldWUpOwoKVGhpcyBpcyB0aGUgYmlnIG9uZSAtIEkgdGhpbmsgdG8gc29sdmUgdGhlIHRodW5k ZXJpbmcgaGVyZCBwcm9ibGVtIHRoaXMgCnBhdGNoIHNob3VsZCBhbHNvIGluY2x1ZGUgdGhlIHJl bW92YWwgb2YgcmluZy0+aXJxX3F1ZXVlIHNpbmNlIEkgZG9uJ3QgCnRoaW5rIGl0IG5lZWRzIHRv IGtlZXAgZXhpc3RpbmcgYWZ0ZXIgaXQuCgpGb3IgZXhhbXBsZSBhZGRpbmcgYSByZXEtPndhaXRf cXVldWUgb24gd2hpY2ggX19pOTE1X3dhaXRfcmVxdWVzdCB3b3VsZCAKd2FpdCBpbnN0ZWFkIGFu ZCBkb2luZyBhIHdha2VfdXBfYWxsIG9uIGl0IGZyb20gaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnk/ CgpCZWNhdXNlIGluIHRoaXMgZm9ybSwgd2hlbiBJJ3ZlIHJhbiB0aGlzIHBhdGNoIHNlcmllcyBh bmQgaXQgY2F1c2VkIHRoZSAKbnVtYmVyIG9mIGNvbnRleHQgc3dpdGNoZXMgdG8gZ28gdXAgbW9y ZSB0aGFuIHNpeCB0aW1lcyBvbiBvbmUgd29ya2xvYWQuIApJbnRlcnJ1cHRzIGFsc28gd2VudCB1 cCBidXQgb25seSBieSA1MCUgaW4gY29tcGFyaXNvbiBhbmQgdGltZSBzcGVudCBpbiAKaXJxIGhh bmRsZXJzIGRvdWJsZWQuCgpCdXQgY29udGV4dCBzd2l0Y2hlcyBhbmQgMTAlIG1vcmUgY3B1IHRp bWUgbG9vayB0aGUgbW9zdCBkcmFtYXRpYy4KClNvIGl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRv IHNlZSBpZiBzaW1wbHkgbW92aW5nIHRoZSB3YWl0IHF1ZXVlIHRvIGJlIApwZXIgcmVxdWVzdCBj b3VsZCBmaXggdGhlIG1ham9yaXR5IG9mIHRoYXQgb3Igbm90LgoKPiAgIH0KPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gaW5kZXggMDZhMzk4YS4uNzZmYzI0NSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gQEAgLTE5MjAsNiArMTkyMCw4IEBAIHN0YXRpYyBpbnQgbG9naWNh bF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluCj4gICAJcmluZy0+ZGV2ID0gZGV2Owo+ICAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5h Y3RpdmVfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPnJlcXVlc3RfbGlzdCk7Cj4g KwlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZmVuY2Vfc2lnbmFsX2xpc3QpOwo+ICsJSU5JVF9MSVNU X0hFQUQoJnJpbmctPmZlbmNlX3Vuc2lnbmFsX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZy aW5nLT5kZWxheWVkX2ZyZWVfbGlzdCk7Cj4gICAJc3Bpbl9sb2NrX2luaXQoJnJpbmctPmZlbmNl X2xvY2spOwo+ICAgCXNwaW5fbG9ja19pbml0KCZyaW5nLT5kZWxheWVkX2ZyZWVfbG9jayk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGU1NTczZTcuLjFk ZWMyNTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAg LTIxNTgsNiArMjE1OCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xp c3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSk7Cj4gICAJSU5J VF9MSVNUX0hFQUQoJnJpbmctPmJ1ZmZlcnMpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmZl bmNlX3NpZ25hbF9saXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5mZW5jZV91bnNpZ25h bF9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZGVsYXllZF9mcmVlX2xpc3QpOwo+ ICAgCXNwaW5fbG9ja19pbml0KCZyaW5nLT5mZW5jZV9sb2NrKTsKPiAgIAlzcGluX2xvY2tfaW5p dCgmcmluZy0+ZGVsYXllZF9mcmVlX2xvY2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiBpbmRleCA3NzM4NGVkLi45ZDA5ZWRiIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0zNTQsNiArMzU0LDggQEAgc3RydWN0ICBp bnRlbF9lbmdpbmVfY3Mgewo+ICAgCXUzMiAoKmdldF9jbWRfbGVuZ3RoX21hc2spKHUzMiBjbWRf aGVhZGVyKTsKPgo+ICAgCXNwaW5sb2NrX3QgZmVuY2VfbG9jazsKPiArCXN0cnVjdCBsaXN0X2hl YWQgZmVuY2Vfc2lnbmFsX2xpc3Q7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlX3Vuc2lnbmFs X2xpc3Q7Cj4gICB9Owo+Cj4gICBib29sIGludGVsX3JpbmdfaW5pdGlhbGl6ZWQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4KClJlZ2FyZHMsCgpUdnJ0a28KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==