From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [RFC v2 8/8] drm/fence: add out-fences support Date: Thu, 28 Apr 2016 12:23:46 -0300 Message-ID: <20160428152346.GC3496@joana> References: <1461623608-29538-1-git-send-email-gustavo@padovan.org> <1461623608-29538-9-git-send-email-gustavo@padovan.org> <20160426145305.GY8291@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-f195.google.com (mail-yw0-f195.google.com [209.85.161.195]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C7A86ED6B for ; Thu, 28 Apr 2016 15:23:54 +0000 (UTC) Received: by mail-yw0-f195.google.com with SMTP id v81so5556582ywa.2 for ; Thu, 28 Apr 2016 08:23:54 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20160426145305.GY8291@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Greg Kroah-Hartman , linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, dri-devel@lists.freedesktop.org, Daniel Stone , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Riley Andrews , Rob Clark , Greg Hackmann , John Harrison , Maarten Lankhorst , Sumit Semwal , Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org MjAxNi0wNC0yNiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+OgoKPiBPbiBNb24sIEFw ciAyNSwgMjAxNiBhdCAwNzozMzoyOFBNIC0wMzAwLCBHdXN0YXZvIFBhZG92YW4gd3JvdGU6Cj4g PiBGcm9tOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+ Cj4gPiAKPiA+IFN1cHBvcnQgRFJNIG91dC1mZW5jZXMgY3JlYXRpbmcgYSBzeW5jX2ZpbGUgd2l0 aCBhIGZlbmNlIGZvciBlYWNoIGNydGMKPiA+IHVwZGF0ZSB3aXRoIHRoZSBEUk1fTU9ERV9BVE9N SUNfT1VUX0ZFTkNFIGZsYWcuCj4gPiAKPiA+IFdlIHRoZW4gc2VuZCBhbiBzdHJ1Y3QgZHJtX291 dF9mZW5jZXMgYXJyYXkgd2l0aCB0aGUgb3V0LWZlbmNlcyBmZHMgYmFjayBpbgo+ID4gdGhlIGRy bV9hdG9taWNfaW9jdGwoKSBhcyBhbiBvdXQgYXJnIGluIHRoZSBvdXRfZmVuY2VzX3B0ciBmaWVs ZC4KPiA+IAo+ID4gc3RydWN0IGRybV9vdXRfZmVuY2VzIHsKPiA+IAlfX3UzMiAgIGNydGNfaWQ7 Cj4gPiAJX191MzIgICBmZDsKPiA+IH07Cj4gPiAKPiA+IHYyOiBDb21tZW50IGJ5IFJvYiBDbGFy azoKPiA+IAktIFNxdWFzaCBjb21taXQgdGhhdCBhZGRzIERSTV9NT0RFX0FUT01JQ19PVVRfRkVO Q0UgZmxhZyBoZXJlLgo+ID4gCj4gPiAgICAgQ29tbWVudCBieSBEYW5pZWwgVmV0dGVyOgo+ID4g CS0gQWRkIGNsZWFuIHVwIGNvZGUgZm9yIG91dF9mZW5jZXMKPiA+IAo+ID4gU2lnbmVkLW9mZi1i eTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+ID4g LS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyB8IDE2MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2NydGMu aCAgICAgICB8ICAxMCArKysKPiA+ICBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggIHwgIDEx ICsrLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4gaW5kZXggNWY5ZDQzNC4uMDZjNjAwNyAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+IEBAIC0xNTY2LDYgKzE1NjYsMTMzIEBAIHZv aWQgZHJtX2F0b21pY19jbGVhbl9vbGRfZmIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICB9 Cj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2NsZWFuX29sZF9mYik7Cj4gPiAgCj4gPiAr c3RhdGljIHN0cnVjdCBkcm1fb3V0X2ZlbmNlX3N0YXRlICpnZXRfb3V0X2ZlbmNlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gPiArCQkJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKPiA+ICsJCQkJCQkgdWludDMyX3QgX191c2VyICpvdXRfZmVuY2VzX3B0ciwKPiA+ICsJCQkJ CQkgdWludDY0X3QgY291bnRfb3V0X2ZlbmNlcywKPiA+ICsJCQkJCQkgdWludDY0X3QgdXNlcl9k YXRhKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fb3V0X2ZlbmNlcyAqb3V0 X2ZlbmNlczsKPiA+ICsJc3RydWN0IGRybV9vdXRfZmVuY2Vfc3RhdGUgKmZlbmNlX3N0YXRlOwo+ ID4gKwlpbnQgbnVtX2ZlbmNlcyA9IDA7Cj4gPiArCWludCBpLCByZXQ7Cj4gPiArCj4gPiArCWlm IChjb3VudF9vdXRfZmVuY2VzID4gZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YykKPiA+ICsJCXJl dHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gKwo+ID4gKwlvdXRfZmVuY2VzID0ga2NhbGxvYyhj b3VudF9vdXRfZmVuY2VzLCBzaXplb2YoKm91dF9mZW5jZXMpLAo+ID4gKwkJCSAgICAgR0ZQX0tF Uk5FTCk7Cj4gPiArCWlmICghb3V0X2ZlbmNlcykKPiA+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwo+IAo+IEEgYml0IHRyaWNreSwgYnV0IHRoZSBhYm92ZSBrY2FsbG9jIGlzIHRoZSBvbmx5 IHRoaW5nIHRoYXQgY2F0Y2hlcyBpbnRlZ2VyCj4gb3ZlcmZsb3dzIGluIGNvdW50X291dF9mZW5j ZXMuIE5lZWRzIGEgY29tbWVudCBpbW8gc2luY2UgdGhpcyBjb3VsZCBiZSBhCj4gc2VjdXJpdHkg ZXhwbG9pdCBpZiB3ZSBhY2NpZGVudGFsbHkgc2NyZXcgaXQgdXAuCgpUaGUgY2hlY2sgYWJvdmUg bWFrZXMgc3VyZSB0aGF0IGNvdW50X291dF9mZW5jZXMgaXMgbm90IGJpZ2dlciB0aGFuCm51bV9j cnRjLiBEb24ndCB0aGF0IGZpeCB0aGlzPwoKPiAKPiBBbHNvIG5lZWRzIGEgdGVzdGNhc2UgaW1v Lgo+IAo+ID4gKwo+ID4gKwlmZW5jZV9zdGF0ZSA9IGtjYWxsb2MoY291bnRfb3V0X2ZlbmNlcywg c2l6ZW9mKCpmZW5jZV9zdGF0ZSksCj4gPiArCQkJICAgICBHRlBfS0VSTkVMKTsKPiA+ICsJaWYg KCFmZW5jZV9zdGF0ZSkgewo+ID4gKwkJa2ZyZWUob3V0X2ZlbmNlcyk7Cj4gPiArCQlyZXR1cm4g RVJSX1BUUigtRU5PTUVNKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwIDsgaSA8IGNv dW50X291dF9mZW5jZXMgOyBpKyspCj4gPiArCQlmZW5jZV9zdGF0ZVtpXS5mZCA9IC0xOwo+ID4g Kwo+ID4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBp KSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplOwo+ID4gKwkJc3Ry dWN0IGZlbmNlICpmZW5jZTsKPiA+ICsJCWNoYXIgbmFtZVszMl07Cj4gPiArCj4gPiArCQlmZW5j ZSA9IGt6YWxsb2Moc2l6ZW9mKCpmZW5jZSksIEdGUF9LRVJORUwpOwo+ID4gKwkJaWYgKCFmZW5j ZSkgewo+ID4gKwkJCXJldCA9IC1FTk9NRU07Cj4gPiArCQkJZ290byBvdXQ7Cj4gPiArCQl9Cj4g PiArCj4gPiArCQlmZW5jZV9pbml0KGZlbmNlLCAmZHJtX2NydGNfZmVuY2Vfb3BzLCAmY3J0Yy0+ ZmVuY2VfbG9jaywKPiA+ICsJCQkgICBjcnRjLT5mZW5jZV9jb250ZXh0LCBjcnRjLT5mZW5jZV9z ZXFubyk7Cj4gPiArCj4gPiArCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICJjcnRjLSVk XyVsdSIsCj4gPiArCQkJIGRybV9jcnRjX2luZGV4KGNydGMpLCBjcnRjLT5mZW5jZV9zZXFubysr KTsKPiAKPiBIbSAuLi4gZmVuY2VfaW5pdF93aXRoX25hbWU/IEknbSBraW5kYSBjb25mdXNlZCB3 aHkgd2Ugb25seSBuYW1lIGZlbmNlcwo+IHRoYXQgYXJlIGV4cG9ydGVkIHRob3VnaCwgYW5kIHdo eSBub3QgYWxsIG9mIHRoZW0uIERlYnVnZ2luZyBmZW5jZQo+IGRlYWRsb2NrcyBpcyByZWFsIGhh cmQsIHNvIGdpdmluZyB0aGVtIGFsbCBuYW1lcyBtaWdodCBiZSBhIGdvb2QgaWRlYS4KPiAKPiBB bnl3YXksIHNlZW1zIGxpa2UgbW9yZSByb29tIGZvciBhIGJpdCBtb3JlIHN5bmNfZmlsZS9zdHJ1 Y3QgZmVuY2UKPiBtZXJnaW5nLgoKV2UganVzdCByZW1vdmVkIG5hbWUgZnJvbSBzeW5jX2ZpbGVf Y3JlYXRlKCkgc28gc25wcmludGYoKSBpcyBub3QgZXZlbgpuZWNlc3NhcnkgaGVyZSBhbnltb3Jl LgoKPiAKPiA+ICsKPiA+ICsJCWZlbmNlX3N0YXRlW2ldLmZkID0gZ2V0X3VudXNlZF9mZF9mbGFn cyhPX0NMT0VYRUMpOwo+ID4gKwkJaWYgKGZlbmNlX3N0YXRlW2ldLmZkIDwgMCkgewo+ID4gKwkJ CWZlbmNlX3B1dChmZW5jZSk7Cj4gPiArCQkJcmV0ID0gZmVuY2Vfc3RhdGVbaV0uZmQ7Cj4gPiAr CQkJZ290byBvdXQ7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlmZW5jZV9zdGF0ZVtpXS5zeW5jX2Zp bGUgPSBzeW5jX2ZpbGVfY3JlYXRlKG5hbWUsIGZlbmNlKTsKPiA+ICsJCWlmKCFmZW5jZV9zdGF0 ZVtpXS5zeW5jX2ZpbGUpIHsKPiA+ICsJCQlmZW5jZV9wdXQoZmVuY2UpOwo+ID4gKwkJCXJldCA9 IC1FTk9NRU07Cj4gPiArCQkJZ290byBvdXQ7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlpZiAoY3J0 Y19zdGF0ZS0+ZXZlbnQpIHsKPiA+ICsJCQljcnRjX3N0YXRlLT5ldmVudC0+YmFzZS5mZW5jZSA9 IGZlbmNlOwo+ID4gKwkJfSBlbHNlIHsKPiAKPiBUaGlzIGxvb2tzIGEgYml0IGZ1bm55IC0gSSdk IGNoYW5nZSB0aGUgY3JlYXRlIGV2ZW50IGxvZ2ljIHRvIGNyZWF0ZSBhbgo+IGV2ZW50IGVpdGhl ciBpZiB3ZSBoYXZlIHRoZSBlaXRoZXIgZHJtIGV2ZW50IG9yIG91dC1mZW5jZSBmbGFnIHNldC4K Ck9rLgoKPiAKPiA+ICsJCQllID0gY3JlYXRlX3ZibGFua19ldmVudChkZXYsIE5VTEwsIGZlbmNl LCB1c2VyX2RhdGEpOwo+ID4gKwkJCWlmICghZSkgewo+ID4gKwkJCQlyZXQgPSAtRU5PTUVNOwo+ ID4gKwkJCQlnb3RvIG91dDsKPiA+ICsJCQl9Cj4gPiArCj4gPiArCQkJY3J0Y19zdGF0ZS0+ZXZl bnQgPSBlOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJb3V0X2ZlbmNlc1tudW1fZmVuY2VzXS5jcnRj X2lkID0gY3J0Yy0+YmFzZS5pZDsKPiA+ICsJCW91dF9mZW5jZXNbbnVtX2ZlbmNlc10uZmQgPSBm ZW5jZV9zdGF0ZVtpXS5mZDsKPiA+ICsJCW51bV9mZW5jZXMrKzsKPiA+ICsJfQo+ID4gKwo+ID4g KwlpZiAoY29weV90b191c2VyKG91dF9mZW5jZXNfcHRyLCBvdXRfZmVuY2VzLAo+ID4gKwkJCSBu dW1fZmVuY2VzICogc2l6ZW9mKCpvdXRfZmVuY2VzKSkpIHsKPiA+ICsJCXJldCA9IC1FRkFVTFQ7 Cj4gPiArCQlnb3RvIG91dDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlrZnJlZShvdXRfZmVuY2VzKTsK PiA+ICsKPiA+ICsJcmV0dXJuIGZlbmNlX3N0YXRlOwo+ID4gKwo+ID4gK291dDoKPiA+ICsJZm9y IChpID0gMCA7IGkgPCBjb3VudF9vdXRfZmVuY2VzIDsgaSsrKSB7Cj4gPiArCQlpZiAoZmVuY2Vf c3RhdGVbaV0uc3luY19maWxlKQo+ID4gKwkJCXN5bmNfZmlsZV9wdXQoZmVuY2Vfc3RhdGVbaV0u c3luY19maWxlKTsKPiA+ICsJCWlmIChmZW5jZV9zdGF0ZVtpXS5mZCA+PSAwKQo+ID4gKwkJCXB1 dF91bnVzZWRfZmQoZmVuY2Vfc3RhdGVbaV0uZmQpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWtmcmVl KGZlbmNlX3N0YXRlKTsKPiA+ICsJa2ZyZWUob3V0X2ZlbmNlcyk7Cj4gPiArCj4gPiArCXJldHVy biBFUlJfUFRSKHJldCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGluc3RhbGxfb3V0 X2ZlbmNlKHVpbnQ2NF90IGNvdW50X291dF9mZW5jZXMsCj4gPiArCQkJICAgICAgc3RydWN0IGRy bV9vdXRfZmVuY2Vfc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiAr CWZvciAoaSA9IDAgOyBpIDwgY291bnRfb3V0X2ZlbmNlcyA7IGkrKykgewo+ID4gKwkJaWYgKHN0 YXRlW2ldLnN5bmNfZmlsZSkKPiA+ICsJCQlzeW5jX2ZpbGVfaW5zdGFsbChzdGF0ZVtpXS5zeW5j X2ZpbGUsIHN0YXRlW2ldLmZkKTsKPiAKPiBJcyBzeW5jX2ZpbGVfaW5zdGFsbCBhbnl0aGluZyBt b3JlIHRoYW4gZmRfaW5zdGFsbD8gSW1vIGEgd3JhcHBlciBmb3IKPiBqdXN0IHRoYXQgZnVuY3Rp b24gaXMgb3ZlcmtpbGwgYW5kIGp1c3QgaGlkZXMgc3R1ZmYuIEknZCBudWtlIGl0IChhbm90aGVy Cj4gc3luY19maWxlIHBhdGNoIHRob3VnaCkuIEluIGRtYS1idWYgd2UgYWxzbyBkb24ndCB3cmFw IGl0LCB3ZSBvbmx5IGhhdmUgYQo+IGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHVzZXJzIHdobyB3 YW50IHRvIGNvbWJpbmUgdGhlCj4gZ2V0X3VudXNlZF9mbGFncytmZF9pbnN0YWxsIGluIG9uZSBn by4gQW5kIG1heWJlIGV2ZW4gdGhhdCBpcyBzaWxseS4KPiAKPiBPaywgSSB1bmxhemllZCBhbmQg aXQncyBpbmRlZWQganVzdCBhIHNpbGx5IHdyYXBwZXIuIFBsZWFzZSBudWtlIGl0LgoKYWxyZWFk eSBmaXhlZCBpbiB0aGUgc3luYyBmaWxlIGRlLXN0YWdlIHBhdGNoZXMuCgo+IAo+ID4gKwl9Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHJlbGVhc2Vfb3V0X2ZlbmNlKHVpbnQ2NF90IGNv dW50X291dF9mZW5jZXMsCj4gPiArCQkJICAgICAgc3RydWN0IGRybV9vdXRfZmVuY2Vfc3RhdGUg KnN0YXRlKQo+ID4gK3sKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCWZvciAoaSA9IDAgOyBpIDwg Y291bnRfb3V0X2ZlbmNlcyA7IGkrKykgewo+ID4gKwkJaWYgKHN0YXRlLT5zeW5jX2ZpbGUpCj4g PiArCQkJc3luY19maWxlX3B1dChzdGF0ZS0+c3luY19maWxlKTsKPiA+ICsJCWlmIChzdGF0ZS0+ ZmQgPj0gMCkKPiA+ICsJCQlwdXRfdW51c2VkX2ZkKHN0YXRlLT5mZCk7Cj4gPiArCX0KPiA+ICt9 Cj4gPiArCj4gPiAgaW50IGRybV9tb2RlX2F0b21pY19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4gIAkJCSAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCj4g PiAgewo+ID4gQEAgLTE1NzQsMTIgKzE3MDEsMTQgQEAgaW50IGRybV9tb2RlX2F0b21pY19pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIAl1aW50MzJfdCBfX3VzZXIgKmNvdW50X3By b3BzX3B0ciA9ICh1aW50MzJfdCBfX3VzZXIgKikodW5zaWduZWQgbG9uZykoYXJnLT5jb3VudF9w cm9wc19wdHIpOwo+ID4gIAl1aW50MzJfdCBfX3VzZXIgKnByb3BzX3B0ciA9ICh1aW50MzJfdCBf X3VzZXIgKikodW5zaWduZWQgbG9uZykoYXJnLT5wcm9wc19wdHIpOwo+ID4gIAl1aW50NjRfdCBf X3VzZXIgKnByb3BfdmFsdWVzX3B0ciA9ICh1aW50NjRfdCBfX3VzZXIgKikodW5zaWduZWQgbG9u ZykoYXJnLT5wcm9wX3ZhbHVlc19wdHIpOwo+ID4gKwl1aW50MzJfdCBfX3VzZXIgKm91dF9mZW5j ZXNfcHRyID0gKHVpbnQzMl90IF9fdXNlciAqKSh1bnNpZ25lZCBsb25nKShhcmctPm91dF9mZW5j ZXNfcHRyKTsKPiA+ICAJdW5zaWduZWQgaW50IGNvcGllZF9vYmpzLCBjb3BpZWRfcHJvcHM7Cj4g PiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiA+ICAJc3RydWN0IGRybV9tb2Rl c2V0X2FjcXVpcmVfY3R4IGN0eDsKPiA+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwo+ID4gKwlzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3RhdGUgPSBO VUxMOwo+ID4gIAl1bnNpZ25lZCBwbGFuZV9tYXNrOwo+ID4gIAlpbnQgcmV0ID0gMDsKPiA+ICAJ dW5zaWduZWQgaW50IGksIGo7Cj4gPiBAQCAtMTYwNSw5ICsxNzM0LDEzIEBAIGludCBkcm1fbW9k ZV9hdG9taWNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCQkhZGV2LT5tb2Rl X2NvbmZpZy5hc3luY19wYWdlX2ZsaXApCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ ICsJaWYgKChhcmctPmZsYWdzICYgRFJNX01PREVfQVRPTUlDX09VVF9GRU5DRSkgJiYgIWFyZy0+ Y291bnRfb3V0X2ZlbmNlcykKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+IAo+IFdlIG5lZWQgdGVz dGNhc2VzIHdoaWNoIGNoZWNrIHRoYXQgYXJnLT5jb3VudF9vdXRfZmVuY2VzIGFuZAo+IGFyZy0+ b3V0X2ZlbmNlcyBhcmUgMCB3aGVuIHRoZSBPVVRfRkVOQ0UgZmxhZyBpcyBub3Qgc2V0Lgo+IAo+ IERlZmluaXRlbHkgbmVlZHMgYW4gaWd0IHRlc3RjYXNlIGZvciB0aGlzIGludmFsaWQgaW5wdXQg Y2FzZS4gT2ZjIHdlIGFsc28KPiBuZWVkIHRlc3RzIHRoYXQgZ2l2ZSB0aGUga2VybmVsIG5vbnNl bnMgaW4gY291bnRfb3V0X2ZlbmNlcyBhbmQgb3V0X2ZlbmNlcwo+IHdpdGggdGhlIGZsYWcgc2V0 Lgo+IAo+ID4gKwo+ID4gIAkvKiBjYW4ndCB0ZXN0IGFuZCBleHBlY3QgYW4gZXZlbnQgYXQgdGhl IHNhbWUgdGltZS4gKi8KPiA+ICAJaWYgKChhcmctPmZsYWdzICYgRFJNX01PREVfQVRPTUlDX1RF U1RfT05MWSkgJiYKPiA+IC0JCQkoYXJnLT5mbGFncyAmIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVO VCkpCj4gPiArCQkJKGFyZy0+ZmxhZ3MgJiAoRFJNX01PREVfUEFHRV9GTElQX0VWRU5UCj4gPiAr CQkJIHwgRFJNX01PREVfQVRPTUlDX09VVF9GRU5DRSkpKQo+IAo+IElmIHlvdSBnbyB3aXRoIG15 IHN1Z2dlc3Rpb24gYWJvdmUgdG8gY3JlYXRlIHRoZSBldmVudCBpZiBlaXRoZXIgaXMgc2V0LAo+ IG1heWJlIGEgRFJNX01PREVfQVRPTUlDX0VWRU5UX01BU0sgd2l0aCBib3RoPyBXb3VsZCByZWFk IGVhc2llci4KCk9rLgoKR3VzdGF2bwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK