From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC 7/9] drm/i915: Interrupt driven fences Date: Mon, 27 Jul 2015 12:33:02 +0100 Message-ID: <55B616EE.8040302@linux.intel.com> References: <1437143483-6234-1-git-send-email-John.C.Harrison@Intel.com> <1437143483-6234-8-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 768AC6E8F3 for ; Mon, 27 Jul 2015 04:33:04 -0700 (PDT) In-Reply-To: <1437143483-6234-8-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 CkhpLAoKT24gMDcvMTcvMjAxNSAwMzozMSBQTSwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3 cm90ZToKPiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+ Cj4gVGhlIGludGVuZGVkIHVzYWdlIG1vZGVsIGZvciBzdHJ1Y3QgZmVuY2UgaXMgdGhhdCB0aGUg c2lnbmFsbGVkIHN0YXR1cyBzaG91bGQgYmUKPiBzZXQgb24gZGVtYW5kIHJhdGhlciB0aGFuIHBv bGxlZC4gVGhhdCBpcywgdGhlcmUgc2hvdWxkIG5vdCBiZSBhIG5lZWQgZm9yIGEKPiAnc2lnbmFs ZWQnIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBldmVyeXRpbWUgdGhlIHN0YXR1cyBpcyBxdWVyaWVk LiBJbnN0ZWFkLAo+ICdzb21ldGhpbmcnIHNob3VsZCBiZSBkb25lIHRvIGVuYWJsZSBhIHNpZ25h bCBjYWxsYmFjayBmcm9tIHRoZSBoYXJkd2FyZSB3aGljaAo+IHdpbGwgdXBkYXRlIHRoZSBzdGF0 ZSBkaXJlY3RseS4gSW4gdGhlIGNhc2Ugb2YgcmVxdWVzdHMsIHRoaXMgaXMgdGhlIHNlcW5vCj4g dXBkYXRlIGludGVycnVwdC4gVGhlIGlkZWEgaXMgdGhhdCB0aGlzIGNhbGxiYWNrIHdpbGwgb25s eSBiZSBlbmFibGVkIG9uIGRlbWFuZAo+IHdoZW4gc29tZXRoaW5nIGFjdHVhbGx5IHRyaWVzIHRv IHdhaXQgb24gdGhlIGZlbmNlLgo+Cj4gVGhpcyBjaGFuZ2UgcmVtb3ZlcyB0aGUgcG9sbGluZyB0 ZXN0IGFuZCByZXBsYWNlcyBpdCB3aXRoIHRoZSBjYWxsYmFjayBzY2hlbWUuCj4gRWFjaCBmZW5j ZSBpcyBhZGRlZCB0byBhICdwbGVhc2UgcG9rZSBtZScgbGlzdCBhdCB0aGUgc3RhcnQgb2YKPiBp OTE1X2FkZF9yZXF1ZXN0KCkuIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciB0aGVuIHNjYW5zIHRocm91 Z2ggdGhlICdwb2tlIG1lJyBsaXN0Cj4gd2hlbiBhIG5ldyBzZXFubyBwb3BzIG91dCBhbmQgc2ln bmFscyBhbnkgbWF0Y2hpbmcgZmVuY2UvcmVxdWVzdC4gVGhlIGZlbmNlIGlzCj4gdGhlbiByZW1v dmVkIGZyb20gdGhlIGxpc3Qgc28gdGhlIGVudGlyZSByZXF1ZXN0IHN0YWNrIGRvZXMgbm90IG5l ZWQgdG8gYmUKPiBzY2FubmVkIGV2ZXJ5IHRpbWUuIE5vdGUgdGhhdCB0aGUgZmVuY2UgaXMgYWRk ZWQgdG8gdGhlIGxpc3QgYmVmb3JlIHRoZSBjb21tYW5kcwo+IHRvIGdlbmVyYXRlIHRoZSBzZXFu byBpbnRlcnJ1cHQgYXJlIGFkZGVkIHRvIHRoZSByaW5nLiBUaHVzIHRoZSBzZXF1ZW5jZSBpcwo+ IGd1YXJhbnRlZWQgdG8gYmUgcmFjZSBmcmVlIGlmIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBl bmFibGVkLgo+Cj4gTm90ZSB0aGF0IHRoZSBpbnRlcnJ1cHQgaXMgb25seSBlbmFibGVkIG9uIGRl bWFuZCAoaS5lLiB3aGVuIF9fd2FpdF9yZXF1ZXN0KCkgaXMKPiBjYWxsZWQpLiBUaHVzIHRoZXJl IGlzIHN0aWxsIGEgcG90ZW50aWFsIHJhY2Ugd2hlbiBlbmFibGluZyB0aGUgaW50ZXJydXB0IGFz IHRoZQo+IHJlcXVlc3QgbWF5IGFscmVhZHkgaGF2ZSBjb21wbGV0ZWQuIEhvd2V2ZXIsIHRoaXMg aXMgc2ltcGx5IHNvbHZlZCBieSBjYWxsaW5nCj4gdGhlIGludGVycnVwdCBwcm9jZXNzaW5nIGNv ZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgZW5hYmxpbmcgdGhlIGludGVycnVwdCBhbmQKPiB0aGVyZWJ5 IGNoZWNraW5nIGZvciBhbHJlYWR5IGNvbXBsZXRlZCByZXF1ZXN0cy4KPgo+IExhc3RseSwgdGhl IHJpbmcgY2xlYW4gdXAgY29kZSBoYXMgdGhlIHBvc3NpYmlsaXR5IHRvIGNhbmNlbCBvdXRzdGFu ZGluZwo+IHJlcXVlc3RzIChlLmcuIGJlY2F1c2UgVERSIGhhcyByZXNldCB0aGUgcmluZykuIFRo ZXNlIHJlcXVlc3RzIHdpbGwgbmV2ZXIgZ2V0Cj4gc2lnbmFsbGVkIGFuZCBzbyBtdXN0IGJlIHJl bW92ZWQgZnJvbSB0aGUgc2lnbmFsIGxpc3QgbWFudWFsbHkuIFRoaXMgaXMgZG9uZSBieQo+IHNl dHRpbmcgYSAnY2FuY2VsbGVkJyBmbGFnIGFuZCB0aGVuIGNhbGxpbmcgdGhlIHJlZ3VsYXIgbm90 aWZ5L3JldGlyZSBjb2RlIHBhdGgKPiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIGR1cGxpY2F0 ZSB0aGUgbGlzdCBtYW5pcHVsYXRhdGlvbiBhbmQgY2xlYW4gdXAgY29kZSBpbgo+IG11bHRpcGxl IHBsYWNlcy4gVGhpcyBhbHNvIGF2b2lkIGFueSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgY2Fu Y2VsbGF0aW9uCj4gcmVxdWVzdCBtaWdodCBvY2N1ciBhZnRlci9kdXJpbmcgdGhlIGNvbXBsZXRp b24gaW50ZXJydXB0IGFjdHVhbGx5IGFycml2aW5nLgo+Cj4gdjI6IFVwZGF0ZWQgdG8gdGFrZSBh ZHZhbnRhZ2Ugb2YgdGhlIHJlcXVlc3QgdW5yZWZlcmVuY2Ugbm8gbG9uZ2VyIHJlcXVpcmluZyB0 aGUKPiBtdXRleCBsb2NrLgo+Cj4gRm9yOiBWSVotNTE5MAo+IFNpZ25lZC1vZmYtYnk6IEpvaG4g SGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDggKysKPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgIHwgICAy ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgMSArCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDEgKwo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAxICsKPiAgIDYgZmlsZXMg Y2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA2MWMzZGIyLi5kN2YxYWE1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gQEAgLTIxNjMsNyArMjE2MywxMSBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2Zi KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCj4gICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3Qgewo+ICAgCS8qKiBVbmRlcmx5aW5nIG9iamVjdCBmb3IgaW1wbGVtZW50aW5nIHRo ZSBzaWduYWwvd2FpdCBzdHVmZi4gKi8KPiAgIAlzdHJ1Y3QgZmVuY2UgZmVuY2U7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIHNpZ25hbF9saXN0Owo+ICsJc3RydWN0IGxpc3RfaGVhZCB1bnNpZ25hbF9s aXN0OwoKSW4gYWRkaXRpb24gdG8gd2hhdCBEYW5pZWwgc2FpZCAob25lIGxpc3RfaGVhZCBsb29r cyBlbm91Z2gpIGl0IGlzIApjdXN0b21hcnkgdG8gY2FsbCBpdCBfbGluay4KCj4gICAJc3RydWN0 IGxpc3RfaGVhZCBkZWxheV9mcmVlX2xpc3Q7Cj4gKwlib29sIGNhbmNlbGxlZDsKPiArCWJvb2wg aXJxX2VuYWJsZWQ7Cj4KPiAgIAkvKiogT24gV2hpY2ggcmluZyB0aGlzIHJlcXVlc3Qgd2FzIGdl bmVyYXRlZCAqLwo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+IEBAIC0yMjQx LDYgKzIyNDUsMTAgQEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKPiAgIAkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJl cV9vdXQpOwo+ICAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSk7Cj4KPiArdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9l bmFibGVfaW50ZXJydXB0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPiArdm9p ZCBpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsK PiArCj4gICBpbnQgaTkxNV9jcmVhdGVfZmVuY2VfdGltZWxpbmUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICAgCQkJICAg ICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IGluZGV4IDQ4MjgzNWEuLjdjNTg5YTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBAQCAtMTIyMiw2ICsxMjIyLDExIEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpc3Qp KQo+ICAgCQlyZXR1cm4gMDsKPgo+ICsJLyoKPiArCSAqIEVuYWJsZSBpbnRlcnJ1cHQgY29tcGxl dGlvbiBvZiB0aGUgcmVxdWVzdC4KPiArCSAqLwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVf aW50ZXJydXB0KHJlcSk7Cj4gKwo+ICAgCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChy ZXEpKQo+ICAgCQlyZXR1cm4gMDsKPgo+IEBAIC0xMzgyLDYgKzEzODcsMTAgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQo+ICAgCWxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpc3QpOwo+ICAgCWk5MTVfZ2Vt X3JlcXVlc3RfcmVtb3ZlX2Zyb21fY2xpZW50KHJlcXVlc3QpOwo+Cj4gKwkvKiBJbiBjYXNlIHRo ZSByZXF1ZXN0IGlzIHN0aWxsIGluIHRoZSBzaWduYWwgcGVuZGluZyBsaXN0ICovCj4gKwlpZiAo IWxpc3RfZW1wdHkoJnJlcXVlc3QtPnNpZ25hbF9saXN0KSkKPiArCQlyZXF1ZXN0LT5jYW5jZWxs ZWQgPSB0cnVlOwo+ICsKPiAgIAlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJlcXVlc3Qp Owo+ICAgfQo+Cj4gQEAgLTI1MzQsNiArMjU0MywxMiBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVz dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4gICAJICovCj4gICAJcmVx dWVzdC0+cG9zdGZpeCA9IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZ2J1Zik7Cj4KPiArCS8qCj4g KwkgKiBBZGQgdGhlIGZlbmNlIHRvIHRoZSBwZW5kaW5nIGxpc3QgYmVmb3JlIGVtaXR0aW5nIHRo ZSBjb21tYW5kcyB0bwo+ICsJICogZ2VuZXJhdGUgYSBzZXFubyBub3RpZmljYXRpb24gaW50ZXJy dXB0Lgo+ICsJICovCj4gKwlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0KTsKPiArCj4g ICAJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAgIAkJcmV0ID0gcmluZy0+ZW1pdF9yZXF1 ZXN0KHJlcXVlc3QpOwo+ICAgCWVsc2Ugewo+IEBAIC0yNjUzLDYgKzI2NjgsOSBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCj4gICAJCWk5MTVfZ2VtX2NvbnRleHRfdW5yZWZlcmVuY2UoY3R4KTsKPiAgIAl9Cj4KPiAr CWlmIChyZXEtPmlycV9lbmFibGVkKQo+ICsJCXJlcS0+cmluZy0+aXJxX3B1dChyZXEtPnJpbmcp Owo+ICsKCldlIGdldCBoZXJlIHdpdGggaW50ZXJydXB0cyBzdGlsbCBlbmFibGVkIG9ubHkgaWYg dXNlcnNwYWNlIGlzIAphYmFuZG9uaW5nIGEgd2FpdCBvbiBhbiB1bnNpZ25hbGVkIGZlbmNlLCBk aWQgSSBnZXQgdGhhdCByaWdodD8KCj4gICAJa21lbV9jYWNoZV9mcmVlKHJlcS0+aTkxNS0+cmVx dWVzdHMsIHJlcSk7Cj4gICB9Cj4KPiBAQCAtMjY2OCwyNCArMjY4NiwxMDUgQEAgc3RhdGljIGNv bnN0IGNoYXIgKmk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3RpbWVsaW5lX25hbWUoc3RydWN0IGZlbmNl ICpyZXFfZmVuY2UpCj4gICAJcmV0dXJuIHJlcS0+cmluZy0+bmFtZTsKPiAgIH0KPgo+IC1zdGF0 aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpy ZXFfZmVuY2UpCj4gKy8qCj4gKyAqIFRoZSByZXF1ZXN0IGhhcyBiZWVuIHN1Ym1pdHRlZCB0byB0 aGUgaGFyZHdhcmUgc28gYWRkIHRoZSBmZW5jZSB0byB0aGUKPiArICogbGlzdCBvZiBzaWduYWxh YmxlIGZlbmNlcy4KPiArICoKPiArICogTkI6IFRoaXMgZG9lcyBub3QgZW5hYmxlIGludGVycnVw dHMgeWV0LiBUaGF0IG9ubHkgb2NjdXJzIG9uIGRlbWFuZCB3aGVuCj4gKyAqIHRoZSByZXF1ZXN0 IGlzIGFjdHVhbGx5IHdhaXRlZCBvbi4gSG93ZXZlciwgYWRkaW5nIGl0IHRvIHRoZSBsaXN0IGVh cmx5Cj4gKyAqIGVuc3VyZXMgdGhhdCB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbiB3aGVyZSB0 aGUgaW50ZXJydXB0IGNvdWxkIHBvcAo+ICsgKiBvdXQgcHJlbWF0dXJlbHkgYW5kIHRodXMgYmUg Y29tcGxldGVseSBsb3N0LiBUaGUgcmFjZSBpcyBtZXJlbHkgdGhhdCB0aGUKPiArICogaW50ZXJy dXB0IG11c3QgYmUgbWFudWFsbHkgY2hlY2tlZCBmb3IgYWZ0ZXIgYmVpbmcgZW5hYmxlZC4KPiAr ICovCj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQkvKiBJbnRlcnJ1cHQgZHJpdmVuIGZlbmNlcyBhcmUgbm90 IGltcGxlbWVudGVkIHlldC4qLwo+IC0JV0FSTih0cnVlLCAiVGhpcyBzaG91bGQgbm90IGJlIGNh bGxlZCEiKTsKPiAtCXJldHVybiB0cnVlOwo+ICsJZmVuY2VfZW5hYmxlX3N3X3NpZ25hbGluZygm cmVxLT5mZW5jZSk7Cj4gICB9Cj4KPiAtc3RhdGljIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9pc19j b21wbGV0ZWQoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UpCj4gKy8qCj4gKyAqIFRoZSByZXF1ZXN0 IGlzIGJlaW5nIGFjdGl2ZWx5IHdhaXRlZCBvbiwgc28gZW5hYmxlIGludGVycnVwdCBiYXNlZAo+ ICsgKiBjb21wbGV0aW9uIHNpZ25hbGxpbmcuCj4gKyAqLwo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVl c3RfZW5hYmxlX2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAr ewo+ICsJaWYgKHJlcS0+aXJxX2VuYWJsZWQpCj4gKwkJcmV0dXJuOwo+ICsKPiArCVdBUk5fT04o IXJlcS0+cmluZy0+aXJxX2dldChyZXEtPnJpbmcpKTsKPiArCXJlcS0+aXJxX2VuYWJsZWQgPSB0 cnVlOwoKcmVxLT5pcnFfZW5hYmxlZCBtYW5pcHVsYXRpb25zIGxvb2sgcmFjeS4gSGVyZSBhbmQg aW4gcmVxdWVzdCBmcmVlIGl0IGlzIApwcm90ZWN0ZWQgYnkgc3RydWN0X211dGV4LCBidXQgdGhh dCBpcyBub3QgaGVsZCBpbiAKaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkuIEluaXRpYWwgZmVlbGlu ZyBpcyB5b3Ugc2hvdWxkIHVzZSAKcmluZy0+ZmVuY2VfbG9jayBldmVyeXBsYWNlIHlvdSBxdWVy eS9tYW5pcHVsYXRlIHJlcS0+aXJxX2VuYWJsZWQuCgo+ICsKPiArCS8qCj4gKwkgKiBCZWNhdXNl IHRoZSBpbnRlcnJ1cHQgaXMgb25seSBlbmFibGVkIG9uIGRlbWFuZCwgdGhlcmUgaXMgYSByYWNl Cj4gKwkgKiB3aGVyZSB0aGUgaW50ZXJydXB0IGNhbiBmaXJlIGJlZm9yZSBhbnlvbmUgaXMgbG9v a2luZyBmb3IgaXQuIFNvCj4gKwkgKiBkbyBhbiBleHBsaWNpdCBjaGVjayBmb3IgbWlzc2VkIGlu dGVycnVwdHMuCj4gKwkgKi8KPiArCWk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHJlcS0+cmluZyk7 Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGlu ZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfZmVuY2UsCj4gICAJCQkJCQkgdHlwZW9m KCpyZXEpLCBmZW5jZSk7Cj4gKwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9yZWZlcmVuY2UocmVxKTsK PiArCVdBUk5fT04oIWxpc3RfZW1wdHkoJnJlcS0+c2lnbmFsX2xpc3QpKTsKCkl0IGxvb2tzIHZl cnkgdW5zYWZlIHRvIHByb2NlZWQgbm9ybWFsbHkgYWZ0ZXIgdGhpcyBXQVJOX09OLiBJdCBzaG91 bGQgCnByb2JhYmx5IHJldHVybiBmYWxzZSBoZXJlIHRvIHByZXNlcnZlIGRhdGEgc3RydWN0dXJl IHNhbml0eS4KCj4gKwlsaXN0X2FkZF90YWlsKCZyZXEtPnNpZ25hbF9saXN0LCAmcmVxLT5yaW5n LT5mZW5jZV9zaWduYWxfbGlzdCk7Cj4gKwo+ICsJLyoKPiArCSAqIE5vdGUgdGhhdCBzaWduYWxs aW5nIGlzIGFsd2F5cyBlbmFibGVkIGZvciBldmVyeSByZXF1ZXN0IGJlZm9yZQo+ICsJICogdGhh dCByZXF1ZXN0IGlzIHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUuIFRoZXJlZm9yZSB0aGVyZSBp cwo+ICsJICogbm8gcmFjZSBjb25kaXRpb24gd2hlcmVieSB0aGUgc2lnbmFsIGNvdWxkIHBvcCBv dXQgYmVmb3JlIHRoZQo+ICsJICogcmVxdWVzdCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgbGlzdC4g SGVuY2Ugbm8gbmVlZCB0byBjaGVjawo+ICsJICogZm9yIGNvbXBsZXRpb24sIHVuZG8gdGhlIGxp c3QgYWRkIGFuZCByZXR1cm4gZmFsc2UuCj4gKwkgKgo+ICsJICogTkI6IEludGVycnVwdHMgYXJl IG9ubHkgZW5hYmxlZCBvbiBkZW1hbmQuIFRodXMgdGhlcmUgaXMgc3RpbGwgYQo+ICsJICogcmFj ZSB3aGVyZSB0aGUgcmVxdWVzdCBjb3VsZCBjb21wbGV0ZSBiZWZvcmUgdGhlIGludGVycnVwdCBo YXMKPiArCSAqIGJlZW4gZW5hYmxlZC4gVGh1cyBjYXJlIG11c3QgYmUgdGFrZW4gYXQgdGhhdCBw b2ludC4KPiArCSAqLwo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVf Z2VtX3JlcXVlc3Rfbm90aWZ5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCAqcmVxX25leHQ7Cj4gKwl1bnNpZ25l ZCBsb25nIGZsYWdzOwo+ICAgCXUzMiBzZXFubzsKPiArCUxJU1RfSEVBRChmcmVlX2xpc3QpOwo+ Cj4gLQlCVUdfT04ocmVxID09IE5VTEwpOwo+ICsJaWYgKGxpc3RfZW1wdHkoJnJpbmctPmZlbmNl X3NpZ25hbF9saXN0KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJc2Vxbm8gPSByaW5nLT5nZXRfc2Vx bm8ocmluZywgZmFsc2UpOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZyaW5nLT5mZW5jZV9s b2NrLCBmbGFncyk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVxLCByZXFfbmV4dCwg JnJpbmctPmZlbmNlX3NpZ25hbF9saXN0LCBzaWduYWxfbGlzdCkgewo+ICsJCWlmICghcmVxLT5j YW5jZWxsZWQpIHsKPiArCQkJaWYgKCFpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFu bykpCj4gKwkJCQljb250aW51ZTsKPgo+IC0Jc2Vxbm8gPSByZXEtPnJpbmctPmdldF9zZXFubyhy ZXEtPnJpbmcsIGZhbHNlLypsYXp5X2NvaGVyZW5jeSovKTsKPiArCQkJZmVuY2Vfc2lnbmFsX2xv Y2tlZCgmcmVxLT5mZW5jZSk7Cj4gKwkJfQo+ICsKPiArCQlsaXN0X2RlbF9pbml0KCZyZXEtPnNp Z25hbF9saXN0KTsKCkkgaGF2ZW4ndCBtYW5hZ2VkIHRvIGZpZ3VyZSBvdXQgd2h5IGlzIHRoaXMg YXBwYXJlbnRseSByZW1vdmluZyByZXF1ZXN0cyAKd2hpY2ggaGF2ZSBub3QgYmVlbiBzaWduYWxs ZWQgZnJvbSB0aGUgc2lnbmFsX2xpc3Q/CgpTaG91bGRuJ3QgdGhleSBiZSBtb3ZlZCB0byBmcmVl X2xpc3Qgb25seSBpZiBpOTE1X3NlcW5vX3Bhc3NlZD8KCj4gKwkJaWYgKHJlcS0+aXJxX2VuYWJs ZWQpIHsKPiArCQkJcmVxLT5yaW5nLT5pcnFfcHV0KHJlcS0+cmluZyk7Cj4gKwkJCXJlcS0+aXJx X2VuYWJsZWQgPSBmYWxzZTsKPiArCQl9Cj4KPiAtCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChz ZXFubywgcmVxLT5zZXFubyk7Cj4gKwkJLyogQ2FuJ3QgdW5yZWZlcmVuY2UgaGVyZSBiZWNhdXNl IHRoYXQgbWlnaHQgZ3JhYiBmZW5jZV9sb2NrICovCj4gKwkJbGlzdF9hZGRfdGFpbCgmcmVxLT51 bnNpZ25hbF9saXN0LCAmZnJlZV9saXN0KTsKPiArCX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnJpbmctPmZlbmNlX2xvY2ssIGZsYWdzKTsKPiArCj4gKwkvKiBJdCBzaG91bGQgbm93IGJl IHNhZmUgdG8gYWN0dWFsbHkgZnJlZSB0aGUgcmVxdWVzdHMgKi8KPiArCXdoaWxlICghbGlzdF9l bXB0eSgmZnJlZV9saXN0KSkgewo+ICsJCXJlcSA9IGxpc3RfZmlyc3RfZW50cnkoJmZyZWVfbGlz dCwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsIHVuc2lnbmFsX2xp c3QpOwo+ICsJCWxpc3RfZGVsKCZyZXEtPnVuc2lnbmFsX2xpc3QpOwo+ICsKPiArCQlpOTE1X2dl bV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJlcSk7Cj4gKwl9Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lk IGk5MTVfZmVuY2VfdGltZWxpbmVfdmFsdWVfc3RyKHN0cnVjdCBmZW5jZSAqZmVuY2UsIGNoYXIg KnN0ciwgaW50IHNpemUpCj4gQEAgLTI3MTEsNyArMjgxMCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmVuY2Vfb3BzIGk5MTVfZ2VtX3JlcXVlc3RfZm9wcyA9IHsKPiAgIAkuZ2V0X2RyaXZlcl9u YW1lCT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZHJpdmVyX25hbWUsCj4gICAJLmdldF90aW1lbGlu ZV9uYW1lCT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfdGltZWxpbmVfbmFtZSwKPiAgIAkuZW5hYmxl X3NpZ25hbGluZwk9IGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGluZywKPiAtCS5zaWdu YWxlZAkJPSBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZCwKPiAgIAkud2FpdAkJCT0gZmVu Y2VfZGVmYXVsdF93YWl0LAo+ICAgCS5yZWxlYXNlCQk9IGk5MTVfZ2VtX3JlcXVlc3RfcmVsZWFz ZSwKPiAgIAkuZmVuY2VfdmFsdWVfc3RyCT0gaTkxNV9mZW5jZV92YWx1ZV9zdHIsCj4gQEAgLTI3 OTEsNiArMjg4OSw3IEBAIGludCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gICAJCWdvdG8gZXJyOwo+ICAgCX0KPgo+ICsJSU5JVF9MSVNUX0hF QUQoJnJlcS0+c2lnbmFsX2xpc3QpOwo+ICAgCWZlbmNlX2luaXQoJnJlcS0+ZmVuY2UsICZpOTE1 X2dlbV9yZXF1ZXN0X2ZvcHMsICZyaW5nLT5mZW5jZV9sb2NrLAo+ICAgCQkgICBjdHgtPmVuZ2lu ZVtyaW5nLT5pZF0uZmVuY2VfdGltZWxpbmUuZmVuY2VfY29udGV4dCwKPiAgIAkJICAgaTkxNV9m ZW5jZV90aW1lbGluZV9nZXRfbmV4dF9zZXFubygmY3R4LT5lbmdpbmVbcmluZy0+aWRdLmZlbmNl X3RpbWVsaW5lKSk7Cj4gQEAgLTI5MTMsNiArMzAxMiwxMyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dl bV9yZXNldF9yaW5nX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ Cj4gICAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHJlcXVlc3QpOwo+ICAgCX0KPiArCj4gKwkv Kgo+ICsJICogTWFrZSBzdXJlIGFueSByZXF1ZXN0cyB0aGF0IHdlcmUgb24gdGhlIHNpZ25hbCBw ZW5kaW5nIGxpc3QgZ2V0Cj4gKwkgKiBjbGVhbmVkIHVwLgo+ICsJICovCj4gKwlpOTE1X2dlbV9y ZXF1ZXN0X25vdGlmeShyaW5nKTsKPiArCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHJp bmcpOwoKV291bGQgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcgYmUgZW5vdWdoIGdpdmVu IGhvdyBpdCBjYWxscyAKaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkgaXRzZWxmIGFzIHRoZSBmaXJz dCB0aGluZyBiZWxvdz8KCj4gICB9Cj4KPiAgIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtMjk2OCw2ICszMDc0LDEzIEBAIGk5MTVfZ2Vt X3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB7 Cj4gICAJV0FSTl9PTihpOTE1X3ZlcmlmeV9saXN0cyhyaW5nLT5kZXYpKTsKPgo+ICsJLyoKPiAr CSAqIElmIG5vLW9uZSBoYXMgd2FpdGVkIG9uIGEgcmVxdWVzdCByZWNlbnRseSB0aGVuIGludGVy cnVwdHMgd2lsbAo+ICsJICogbm90IGhhdmUgYmVlbiBlbmFibGVkIGFuZCB0aHVzIG5vIHJlcXVl c3RzIHdpbGwgZXZlciBiZSBtYXJrZWQgYXMKPiArCSAqIGNvbXBsZXRlZC4gU28gZG8gYW4gaW50 ZXJydXB0IGNoZWNrIG5vdy4KPiArCSAqLwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkocmlu Zyk7Cj4gKwo+ICAgCS8qIFJldGlyZSByZXF1ZXN0cyBmaXJzdCBhcyB3ZSB1c2UgaXQgYWJvdmUg Zm9yIHRoZSBlYXJseSByZXR1cm4uCj4gICAJICogSWYgd2UgcmV0aXJlIHJlcXVlc3RzIGxhc3Qs IHdlIG1heSB1c2UgYSBsYXRlciBzZXFubyBhbmQgc28gY2xlYXIKPiAgIAkgKiB0aGUgcmVxdWVz dHMgbGlzdHMgd2l0aG91dCBjbGVhcmluZyB0aGUgYWN0aXZlIGxpc3QsIGxlYWRpbmcgdG8KPiBA QCAtNTM0NSw2ICs1NDU4LDcgQEAgaW5pdF9yaW5nX2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcpCj4gICB7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFjdGl2ZV9saXN0KTsK PiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKPiArCUlOSVRfTElTVF9I RUFEKCZyaW5nLT5mZW5jZV9zaWduYWxfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnJpbmct PmRlbGF5ZWRfZnJlZV9saXN0KTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGlu ZGV4IGQ4N2YxNzMuLmU0NDY1MDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAt ODUzLDYgKzg1Myw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcpCj4KPiAgIAl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShyaW5nKTsK Pgo+ICsJaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkocmluZyk7Cj4gKwoKSG93IG1hbnkgcmVxdWVz dHMgYXJlIHR5cGljYWxseSBvbiBzaWduYWxfbGlzdCBvbiBzb21lIHR5cGljYWwgCndvcmtsb2Fk cz8gVGhpcyBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGNoYW5nZSBzaW5jZSBv biBldmVyeSAKdXNlciBpbnRlcnJ1cHQgaXQgd291bGQgdGFsayBpdCBhbGwgcG90ZW50aWFsbHkg b25seSByZW1vdmluZyBvbmUgCnJlcXVlc3QgYXQgYSB0aW1lLgoKVGhlc2UgYXJlIGp1c3QgcmV2 aWV3IGNvbW1lbnRzIG9uIHRoaXMgcGFydGljdWxhciBwYXRjaCB3aXRob3V0IHRoaW5raW5nIAp5 ZXQgb2YgdGhlIGJpZ2dlciBkZXNpZ24gcXVlc3Rpb25zIERhbmllbCBoYXMgcmFpc2VkLgoKUmVn YXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=