From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v7 6/8] drm/i915: Interrupt driven fences Date: Thu, 21 Apr 2016 09:38:06 +0200 Message-ID: <5718835E.7000802@linux.intel.com> References: <1461172195-3959-1-git-send-email-John.C.Harrison@Intel.com> <1461172195-3959-7-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 252856E1BE for ; Thu, 21 Apr 2016 07:38:09 +0000 (UTC) In-Reply-To: <1461172195-3959-7-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 T3AgMjAtMDQtMTYgb20gMTk6MDkgc2NocmVlZiBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tOgo+ IEZyb206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4KPiBUaGUg aW50ZW5kZWQgdXNhZ2UgbW9kZWwgZm9yIHN0cnVjdCBmZW5jZSBpcyB0aGF0IHRoZSBzaWduYWxs ZWQgc3RhdHVzCj4gc2hvdWxkIGJlIHNldCBvbiBkZW1hbmQgcmF0aGVyIHRoYW4gcG9sbGVkLiBU aGF0IGlzLCB0aGVyZSBzaG91bGQgbm90Cj4gYmUgYSBuZWVkIGZvciBhICdzaWduYWxlZCcgZnVu Y3Rpb24gdG8gYmUgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgc3RhdHVzCj4gaXMgcXVlcmllZC4gSW5z dGVhZCwgJ3NvbWV0aGluZycgc2hvdWxkIGJlIGRvbmUgdG8gZW5hYmxlIGEgc2lnbmFsCj4gY2Fs bGJhY2sgZnJvbSB0aGUgaGFyZHdhcmUgd2hpY2ggd2lsbCB1cGRhdGUgdGhlIHN0YXRlIGRpcmVj dGx5LiBJbgo+IHRoZSBjYXNlIG9mIHJlcXVlc3RzLCB0aGlzIGlzIHRoZSBzZXFubyB1cGRhdGUg aW50ZXJydXB0LiBUaGUgaWRlYSBpcwo+IHRoYXQgdGhpcyBjYWxsYmFjayB3aWxsIG9ubHkgYmUg ZW5hYmxlZCBvbiBkZW1hbmQgd2hlbiBzb21ldGhpbmcKPiBhY3R1YWxseSB0cmllcyB0byB3YWl0 IG9uIHRoZSBmZW5jZS4KPgo+IFRoaXMgY2hhbmdlIHJlbW92ZXMgdGhlIHBvbGxpbmcgdGVzdCBh bmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgY2FsbGJhY2sKPiBzY2hlbWUuIEVhY2ggZmVuY2UgaXMg YWRkZWQgdG8gYSAncGxlYXNlIHBva2UgbWUnIGxpc3QgYXQgdGhlIHN0YXJ0IG9mCj4gaTkxNV9h ZGRfcmVxdWVzdCgpLiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgdGhlbiBzY2FucyB0aHJvdWdoIHRo ZSAncG9rZQo+IG1lJyBsaXN0IHdoZW4gYSBuZXcgc2Vxbm8gcG9wcyBvdXQgYW5kIHNpZ25hbHMg YW55IG1hdGNoaW5nCj4gZmVuY2UvcmVxdWVzdC4gVGhlIGZlbmNlIGlzIHRoZW4gcmVtb3ZlZCBm cm9tIHRoZSBsaXN0IHNvIHRoZSBlbnRpcmUKPiByZXF1ZXN0IHN0YWNrIGRvZXMgbm90IG5lZWQg dG8gYmUgc2Nhbm5lZCBldmVyeSB0aW1lLiBOb3RlIHRoYXQgdGhlCj4gZmVuY2UgaXMgYWRkZWQg dG8gdGhlIGxpc3QgYmVmb3JlIHRoZSBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUgc2Vxbm8KPiBp bnRlcnJ1cHQgYXJlIGFkZGVkIHRvIHRoZSByaW5nLiBUaHVzIHRoZSBzZXF1ZW5jZSBpcyBndWFy YW50ZWVkIHRvIGJlCj4gcmFjZSBmcmVlIGlmIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBlbmFi bGVkLgo+Cj4gTm90ZSB0aGF0IHRoZSBpbnRlcnJ1cHQgaXMgb25seSBlbmFibGVkIG9uIGRlbWFu ZCAoaS5lLiB3aGVuCj4gX193YWl0X3JlcXVlc3QoKSBpcyBjYWxsZWQpLiBUaHVzIHRoZXJlIGlz IHN0aWxsIGEgcG90ZW50aWFsIHJhY2Ugd2hlbgo+IGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQgYXMg dGhlIHJlcXVlc3QgbWF5IGFscmVhZHkgaGF2ZSBjb21wbGV0ZWQuCj4gSG93ZXZlciwgdGhpcyBp cyBzaW1wbHkgc29sdmVkIGJ5IGNhbGxpbmcgdGhlIGludGVycnVwdCBwcm9jZXNzaW5nCj4gY29k ZSBpbW1lZGlhdGVseSBhZnRlciBlbmFibGluZyB0aGUgaW50ZXJydXB0IGFuZCB0aGVyZWJ5IGNo ZWNraW5nIGZvcgo+IGFscmVhZHkgY29tcGxldGVkIHJlcXVlc3RzLgo+Cj4gTGFzdGx5LCB0aGUg cmluZyBjbGVhbiB1cCBjb2RlIGhhcyB0aGUgcG9zc2liaWxpdHkgdG8gY2FuY2VsCj4gb3V0c3Rh bmRpbmcgcmVxdWVzdHMgKGUuZy4gYmVjYXVzZSBURFIgaGFzIHJlc2V0IHRoZSByaW5nKS4gVGhl c2UKPiByZXF1ZXN0cyB3aWxsIG5ldmVyIGdldCBzaWduYWxsZWQgYW5kIHNvIG11c3QgYmUgcmVt b3ZlZCBmcm9tIHRoZQo+IHNpZ25hbCBsaXN0IG1hbnVhbGx5LiBUaGlzIGlzIGRvbmUgYnkgc2V0 dGluZyBhICdjYW5jZWxsZWQnIGZsYWcgYW5kCj4gdGhlbiBjYWxsaW5nIHRoZSByZWd1bGFyIG5v dGlmeS9yZXRpcmUgY29kZSBwYXRoIHJhdGhlciB0aGFuCj4gYXR0ZW1wdGluZyB0byBkdXBsaWNh dGUgdGhlIGxpc3QgbWFuaXB1bGF0YXRpb24gYW5kIGNsZWFuIHVwIGNvZGUgaW4KPiBtdWx0aXBs ZSBwbGFjZXMuIFRoaXMgYWxzbyBhdm9pZCBhbnkgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlCj4g Y2FuY2VsbGF0aW9uIHJlcXVlc3QgbWlnaHQgb2NjdXIgYWZ0ZXIvZHVyaW5nIHRoZSBjb21wbGV0 aW9uIGludGVycnVwdAo+IGFjdHVhbGx5IGFycml2aW5nLgo+Cj4gdjI6IFVwZGF0ZWQgdG8gdGFr ZSBhZHZhbnRhZ2Ugb2YgdGhlIHJlcXVlc3QgdW5yZWZlcmVuY2Ugbm8gbG9uZ2VyCj4gcmVxdWly aW5nIHRoZSBtdXRleCBsb2NrLgo+Cj4gdjM6IE1vdmUgdGhlIHNpZ25hbCBsaXN0IHByb2Nlc3Np bmcgYXJvdW5kIHRvIHByZXZlbnQgdW5zdWJtaXR0ZWQKPiByZXF1ZXN0cyBiZWluZyBhZGRlZCB0 byB0aGUgbGlzdC4gVGhpcyB3YXMgb2NjdXJyaW5nIG9uIEFuZHJvaWQKPiBiZWNhdXNlIHRoZSBu YXRpdmUgc3luYyBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUKPiBmZW5jZS0+ZW5hYmxlX3NpZ25h bGxpbmcgQVBJIGltbWVkaWF0ZWx5IG9uIGZlbmNlIGNyZWF0aW9uLgo+Cj4gVXBkYXRlZCBhZnRl ciByZXZpZXcgY29tbWVudHMgYnkgVHZydGtvIFVyc3VsaW4uIFJlbmFtZWQgbGlzdCBub2RlcyB0 bwo+ICdsaW5rJyBpbnN0ZWFkIG9mICdsaXN0Jy4gQWRkZWQgc3VwcG9ydCBmb3IgcmV0dXJuaW5n IGFuIGVycm9yIGNvZGUgb24KPiBhIGNhbmNlbGxlZCBmZW5jZS4gVXBkYXRlIGxpc3QgcHJvY2Vz c2luZyB0byBiZSBtb3JlIGVmZmljaWVudC9zYWZlcgo+IHdpdGggcmVzcGVjdCB0byBzcGlubG9j a3MuCj4KPiB2NTogTWFkZSBpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdCBhIHN0YXRpYyBhcyBpdCBp cyBvbmx5IGV2ZXIgY2FsbGVkCj4gZnJvbSBvbmUgcGxhY2UuCj4KPiBGaXhlZCB1cCB0aGUgbG93 IGxhdGVuY3kgd2FpdCBvcHRpbWlzYXRpb24uIFRoZSB0aW1lIGRlbGF5IGJldHdlZW4gdGhlCj4g c2Vxbm8gdmFsdWUgYmVpbmcgdG8gbWVtb3J5IGFuZCB0aGUgZHJpdmUncyBJU1IgcnVubmluZyBj YW4gYmUKPiBzaWduaWZpY2FudCwgYXQgbGVhc3QgZm9yIHRoZSB3YWl0IHJlcXVlc3QgbWljcm8t YmVuY2htYXJrLiBUaGlzIGNhbgo+IGJlIGdyZWF0bHkgaW1wcm92ZWQgYnkgZXhwbGljaXRseSBj aGVja2luZyBmb3Igc2Vxbm8gdXBkYXRlcyBpbiB0aGUKPiBwcmUtd2FpdCBidXN5IHBvbGwgbG9v cC4gQWxzbyBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24gY29tbWVudHMgdG8gdGhlCj4gYnVzeSBw b2xsIGNvZGUuCj4KPiBGaXhlZCB1cCBzdXBwb3J0IGZvciB0aGUgZmFraW5nIG9mIGxvc3QgaW50 ZXJydXB0cwo+ICh0ZXN0X2lycV9yaW5ncy9taXNzZWRfaXJxX3JpbmdzKS4gVGhhdCBpcywgdGhl cmUgaXMgYW4gSUdUIHRlc3QgdGhhdAo+IHRlbGxzIHRoZSBkcml2ZXIgdG8gbG9vc2UgaW50ZXJy dXB0cyBkZWxpYmVyYXRlbHkgYW5kIHRoZW4gY2hlY2sgdGhhdAo+IGV2ZXJ5dGhpbmcgc3RpbGwg d29ya3MgYXMgZXhwZWN0ZWQgKGFsYmVpdCBtdWNoIHNsb3dlcikuCj4KPiBVcGRhdGVzIGZyb20g cmV2aWV3IGNvbW1lbnRzOiB1c2Ugbm9uIElSUS1zYXZlIHNwaW5sb2NraW5nLCBlYXJseSBleGl0 Cj4gb24gV0FSTiBhbmQgaW1wcm92ZWQgY29tbWVudHMgKFR2cnRrbyBVcnN1bGluKS4KPgo+IHY2 OiBVcGRhdGVkIHRvIG5ld2VyIG5pZ3RobHkgYW5kIHJlc29sdmVkIGNvbmZsaWN0cyBhcm91bmQg dGhlCj4gd2FpdF9yZXF1ZXN0IGJ1c3kgc3BpbiBvcHRpbWlzYXRpb24uIEFsc28gZml4ZWQgYSBy YWNlIGNvbmRpdGlvbgo+IGJldHdlZW4gdGhpcyBlYXJseSBleGl0IHBhdGggYW5kIHRoZSByZWd1 bGFyIGNvbXBsZXRpb24gcGF0aC4KPgo+IHY3OiBVcGRhdGVkIHRvIG5ld2VyIG5pZ2h0bHkgLSBs b3RzIG9mIHJpbmcgLT4gZW5naW5lIHJlbmFtaW5nIHBsdXMgYW4KPiBpbnRlcmZhY2UgY2hhbmdl IG9uIGdldF9zZXFubygpLiBBbHNvIGFkZGVkIGEgbGlzdF9lbXB0eSgpIGNoZWNrCj4gYmVmb3Jl IGFjcXVyaW5nIHNwaW5sb2NrcyBhbmQgZG9pbmcgbGlzdCBwcm9jZXNzaW5nLgo+Cj4gRm9yOiBW SVotNTE5MAo+IFNpZ25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJ bnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgOCAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDI0OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAg ICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMg fCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDIg Kwo+ICA2IGZpbGVzIGNoYW5nZWQsIDI0MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDgxMzI0YmEuLjk1MTliMTEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjI1NSw3ICsyMjU1LDEyIEBAIHZvaWQgaTkx NV9nZW1fdHJhY2tfZmIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZCwKPiAgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKPiAgCS8qKiBVbmRlcmx5aW5nIG9iamVjdCBmb3IgaW1w bGVtZW50aW5nIHRoZSBzaWduYWwvd2FpdCBzdHVmZi4gKi8KPiAgCXN0cnVjdCBmZW5jZSBmZW5j ZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX2xpbms7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFk IHVuc2lnbmFsX2xpbms7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGRlbGF5ZWRfZnJlZV9saW5rOwo+ ICsJYm9vbCBjYW5jZWxsZWQ7Cj4gKwlib29sIGlycV9lbmFibGVkOwo+ICsJYm9vbCBzaWduYWxf cmVxdWVzdGVkOwo+ICAKPiAgCS8qKiBPbiBXaGljaCByaW5nIHRoaXMgcmVxdWVzdCB3YXMgZ2Vu ZXJhdGVkICovCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiBAQCAtMjM0MSw2 ICsyMzQ2LDkgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICogX19tdXN0X2NoZWNrCj4g IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ ICAJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPiAgdm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X2NhbmNlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gK3ZvaWQg aTkxNV9nZW1fcmVxdWVzdF9lbmFibGVfaW50ZXJydXB0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAo+ICsJCQkJICAgICAgIGJvb2wgZmVuY2VfbG9ja2VkKTsKPiArdm9pZCBpOTE1 X2dlbV9yZXF1ZXN0X25vdGlmeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGZl bmNlX2xvY2tlZCk7Cj4gIAo+ICBpbnQgaTkxNV9jcmVhdGVfZmVuY2VfdGltZWxpbmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggOTA3MTA1OC4uOWIxZGU1ZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC00MCw2ICs0MCw4IEBACj4gIAo+ICAjZGVmaW5l IFJRX0JVR19PTihleHByKQo+ICAKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJt aXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ICsKPiAgc3RhdGljIHZvaWQg aTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaik7Cj4gIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9jcHVf d3JpdGVfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ICBzdGF0aWMg dm9pZAo+IEBAIC0xMjUzLDkgKzEyNTUsOCBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShyZXEpOwo+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWNvbnN0IGJvb2wgaXJxX3Rlc3RfaW5f cHJvZ3Jlc3MgPQo+IC0JCUFDQ0VTU19PTkNFKGRldl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFf cmluZ3MpICYgaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiAgCWludCBzdGF0ZSA9IGludGVy cnVwdGlibGUgPyBUQVNLX0lOVEVSUlVQVElCTEUgOiBUQVNLX1VOSU5URVJSVVBUSUJMRTsKPiAr CXVpbnQzMl90IHNlcW5vOwo+ICAJREVGSU5FX1dBSVQod2FpdCk7Cj4gIAl1bnNpZ25lZCBsb25n IHRpbWVvdXRfZXhwaXJlOwo+ICAJczY0IGJlZm9yZSA9IDA7IC8qIE9ubHkgdG8gc2lsZW5jZSBh IGNvbXBpbGVyIHdhcm5pbmcuICovCj4gQEAgLTEyNjMsOSArMTI2NCw2IEBAIGludCBfX2k5MTVf d2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAKPiAgCVdB Uk4oIWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdiksICJJUlFzIGRpc2FibGVkIik7Cj4gIAo+ IC0JaWYgKGxpc3RfZW1wdHkoJnJlcS0+bGlzdCkpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+ICAJaWYg KGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBA IC0xMjkxLDE1ICsxMjg5LDE3IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0X2Jl Z2luKHJlcSk7Cj4gIAo+ICAJLyogT3B0aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4dCBqaWZmaWUg YmVmb3JlIHRvdWNoaW5nIElSUXMgKi8KPiAtCXJldCA9IF9faTkxNV9zcGluX3JlcXVlc3QocmVx LCBzdGF0ZSk7Cj4gLQlpZiAocmV0ID09IDApCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JaWYgKCFp cnFfdGVzdF9pbl9wcm9ncmVzcyAmJiBXQVJOX09OKCFlbmdpbmUtPmlycV9nZXQoZW5naW5lKSkp IHsKPiAtCQlyZXQgPSAtRU5PREVWOwo+IC0JCWdvdG8gb3V0Owo+ICsJaWYgKHJlcS0+c2Vxbm8p IHsKPiArCQlyZXQgPSBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3RhdGUpOwo+ICsJCWlmIChy ZXQgPT0gMCkKPiArCQkJZ290byBvdXQ7Cj4gIAl9Cj4gIAo+ICsJLyoKPiArCSAqIEVuYWJsZSBp bnRlcnJ1cHQgY29tcGxldGlvbiBvZiB0aGUgcmVxdWVzdC4KPiArCSAqLwo+ICsJZmVuY2VfZW5h YmxlX3N3X3NpZ25hbGluZygmcmVxLT5mZW5jZSk7Cj4gKwo+ICAJZm9yICg7Oykgewo+ICAJCXN0 cnVjdCB0aW1lcl9saXN0IHRpbWVyOwo+ICAKPiBAQCAtMTMyMSw2ICsxMzIxLDIxIEBAIGludCBf X2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJ CQlicmVhazsKPiAgCQl9Cj4gIAo+ICsJCWlmIChyZXEtPnNlcW5vKSB7Cj4gKwkJCS8qCj4gKwkJ CSAqIFRoZXJlIGlzIHF1aXRlIGEgbG90IG9mIGxhdGVuY3kgaW4gdGhlIHVzZXIgaW50ZXJydXB0 Cj4gKwkJCSAqIHBhdGguIFNvIGRvIGFuIGV4cGxpY2l0IHNlcW5vIGNoZWNrIGFuZCBwb3RlbnRp YWxseQo+ICsJCQkgKiByZW1vdmUgYWxsIHRoYXQgZGVsYXkuCj4gKwkJCSAqLwo+ICsJCQlpZiAo cmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQo+ICsJCQkJcmVxLT5lbmdpbmUtPmlycV9z ZXFub19iYXJyaWVyKHJlcS0+ZW5naW5lKTsKPiArCQkJc2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFu byhlbmdpbmUpOwpZb3UncmUgdXNpbmcgdGhpcyBiYXJyaWVyICsgZ2V0X3NlcW5vIHBhdHRlcm4g bXVsdGlwbGUgdGltZXMsIG1heWJlIHdyaXRlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGlzPwo+ ICsJCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pKSB7Cj4gKwkJCQly ZXQgPSAwOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICAJCWlmIChzaWduYWxf cGVuZGluZ19zdGF0ZShzdGF0ZSwgY3VycmVudCkpIHsKPiAgCQkJcmV0ID0gLUVSRVNUQVJUU1lT Owo+ICAJCQlicmVhazsKPiBAQCAtMTM0NywxNCArMTM2MiwzMiBAQCBpbnQgX19pOTE1X3dhaXRf cmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJZGVzdHJveV90 aW1lcl9vbl9zdGFjaygmdGltZXIpOwo+ICAJCX0KPiAgCX0KPiAtCWlmICghaXJxX3Rlc3RfaW5f cHJvZ3Jlc3MpCj4gLQkJZW5naW5lLT5pcnFfcHV0KGVuZ2luZSk7Cj4gIAo+ICAJZmluaXNoX3dh aXQoJmVuZ2luZS0+aXJxX3F1ZXVlLCAmd2FpdCk7Cj4gIAo+ICBvdXQ6Cj4gIAl0cmFjZV9pOTE1 X2dlbV9yZXF1ZXN0X3dhaXRfZW5kKHJlcSk7Cj4gIAo+ICsJaWYgKChyZXQgPT0gMCkgJiYgKHJl cS0+c2Vxbm8pKSB7Cj4gKwkJaWYgKHJlcS0+ZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPiAr CQkJcmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKHJlcS0+ZW5naW5lKTsKPiArCQlzZXFu byA9IGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSk7Cj4gKwkJaWYgKGk5MTVfc2Vxbm9fcGFzc2Vk KHNlcW5vLCByZXEtPnNlcW5vKSAmJgo+ICsJCSAgICAhaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0 ZWQocmVxKSkgewo+ICsJCQkvKgo+ICsJCQkgKiBNYWtlIHN1cmUgdGhlIHJlcXVlc3QgaXMgbWFy a2VkIGFzIGNvbXBsZXRlZCBiZWZvcmUKPiArCQkJICogcmV0dXJuaW5nLiBOQjogTmVlZCB0byBh Y3F1aXJlIHRoZSBzcGlubG9jayBhcm91bmQKPiArCQkJICogdGhlIHdob2xlIGNhbGwgdG8gYXZv aWQgYSByYWNlIGNvbmRpdGlvbiB3aXRoIHRoZQo+ICsJCQkgKiBpbnRlcnJ1cHQgaGFuZGxlciBp cyBydW5uaW5nIGNvbmN1cnJlbnRseSBhbmQgY291bGQKPiArCQkJICogY2F1c2UgdGhpcyBpbnZv Y2F0aW9uIHRvIGVhcmx5IGV4aXQgZXZlbiB0aG91Z2ggdGhlCj4gKwkJCSAqIHJlcXVlc3QgaGFz IG5vdCBhY3R1YWxseSBiZWVuIGZ1bGx5IHByb2Nlc3NlZCB5ZXQuCj4gKwkJCSAqLwo+ICsJCQlz cGluX2xvY2tfaXJxKCZyZXEtPmVuZ2luZS0+ZmVuY2VfbG9jayk7Cj4gKwkJCWk5MTVfZ2VtX3Jl cXVlc3Rfbm90aWZ5KHJlcS0+ZW5naW5lLCB0cnVlKTsKPiArCQkJc3Bpbl91bmxvY2tfaXJxKCZy ZXEtPmVuZ2luZS0+ZmVuY2VfbG9jayk7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCWlmICh0aW1lb3V0 KSB7Cj4gIAkJczY0IHRyZXMgPSAqdGltZW91dCAtIChrdGltZV9nZXRfcmF3X25zKCkgLSBiZWZv cmUpOwo+ICAKPiBAQCAtMTQzMiw2ICsxNDY1LDIyIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jl cXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCWxp c3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpc3QpOwo+ICAJaTkxNV9nZW1fcmVxdWVzdF9yZW1vdmVf ZnJvbV9jbGllbnQocmVxdWVzdCk7Cj4gIAo+ICsJLyoKPiArCSAqIEluIGNhc2UgdGhlIHJlcXVl c3QgaXMgc3RpbGwgaW4gdGhlIHNpZ25hbCBwZW5kaW5nIGxpc3QsCj4gKwkgKiBlLmcuIGR1ZSB0 byBiZWluZyBjYW5jZWxsZWQgYnkgVERSLCBwcmVlbXB0aW9uLCBldGMuCj4gKwkgKi8KPiArCWlm ICghbGlzdF9lbXB0eSgmcmVxdWVzdC0+c2lnbmFsX2xpbmspKSB7Cj4gKwkJLyoKPiArCQkgKiBU aGUgcmVxdWVzdCBtdXN0IGJlIG1hcmtlZCBhcyBjYW5jZWxsZWQgYW5kIHRoZSB1bmRlcmx5aW5n Cj4gKwkJICogZmVuY2UgYXMgZmFpbGVkLiBOQjogVGhlcmUgaXMgbm8gZXhwbGljaXQgZmVuY2Ug ZmFpbCBBUEksCj4gKwkJICogdGhlcmUgaXMgb25seSBhIG1hbnVhbCBwb2tlIGFuZCBzaWduYWwu Cj4gKwkJICovCj4gKwkJcmVxdWVzdC0+Y2FuY2VsbGVkID0gdHJ1ZTsKPiArCQkvKiBIb3cgdG8g cHJvcGFnYXRlIHRvIGFueSBhc3NvY2lhdGVkIHN5bmNfZmVuY2U/Pz8gKi8KPiArCQlyZXF1ZXN0 LT5mZW5jZS5zdGF0dXMgPSAtRUlPOwo+ICsJCWZlbmNlX3NpZ25hbF9sb2NrZWQoJnJlcXVlc3Qt PmZlbmNlKTsKPiArCX0KPgpDYW4gdGhpcyBzdGlsbCBoYXBwZW4gd2l0aAoKY29tbWl0IGFhOWI3 ODEwNGZlMzIxMDc1OGZhOWU2YzY0NGU5YTEwOGQzNzFlOGIKQXV0aG9yOiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KRGF0ZTogICBXZWQgQXByIDEzIDE3OjM1OjE1IDIw MTYgKzAxMDAKCiAgICBkcm0vaTkxNTogTGF0ZSByZXF1ZXN0IGNhbmNlbGxhdGlvbnMgYXJlIGhh cm1mdWwKCj8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==