From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/vblank: Document and fix vblank count barrier semantics Date: Tue, 3 Sep 2019 17:46:13 +0200 Message-ID: <20190903154613.GC2112@phenom.ffwll.local> References: <20190719170654.GQ5942@intel.com> <20190723131337.22031-1-daniel.vetter@ffwll.ch> <20190903124703.7ldnm6owxu6r2fsm@smtp.gmail.com> <20190903150922.GY2112@phenom.ffwll.local> <20190903151712.ecv7wczevdmdqpes@smtp.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190903151712.ecv7wczevdmdqpes@smtp.gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Siqueira Cc: Daniel Vetter , Intel Graphics Development , DRI Development , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBTZXAgMDMsIDIwMTkgYXQgMTE6MTc6MTJBTSAtMDQwMCwgUm9kcmlnbyBTaXF1ZWly YSB3cm90ZToKPiBIaSwgdGhhbmtzIGZvciB0aGUgZXhwbGFuYXRpb24uCj4gCj4gSSBub3RpY2Vk IHRoYXQgSSBmb3Jnb3QgdG8gYWRkIG15IHItYi4KPiAKPiBSZXZpZXdlZC1ieTogUm9kcmlnbyBT aXF1ZWlyYSA8cm9kcmlnb3NpcXVlaXJhbWVsb0BnbWFpbC5jb20+CgpVaCBJIGp1c3QgcHVzaGVk LCBzbyBjYW4ndCBhZGQgeW91ciByLWIgbm93IDotLwoKU3J5LgotRGFuaWVsCgo+IAo+IE9uIDA5 LzAzLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gT24gVHVlLCBTZXAgMDMsIDIwMTkgYXQgMDg6 NDc6MDNBTSAtMDQwMCwgUm9kcmlnbyBTaXF1ZWlyYSB3cm90ZToKPiA+ID4gSGkgRGFuaWVsLAo+ ID4gPiAKPiA+ID4gQWxsIHRoZSBzZXJpZXMgbG9vayByZWFsbHkgZ29vZCBmb3IgbWUuIEkganVz dCBoYXZlIHNvbWUgZmV3IHF1ZXN0aW9ucwo+ID4gPiBoZXJlLgo+ID4gPiAKPiA+ID4gT24gMDcv MjMsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gTm90aWNlZCB3aGlsZSByZXZpZXdpbmcg Y29kZS4gSSdtIG5vdCBzdXJlIHdoZXRoZXIgdGhpcyBtaWdodCBvciBtaWdodAo+ID4gPiA+IG5v dCBleHBsYWluIHNvbWUgb2YgdGhlIG1pc3NlZCB2YmxhbmsgaGlsYXJpdHkgd2UndmUgYmVlbiBz ZWVpbmcuIEkKPiA+ID4gCj4gPiA+IEkgaGF2ZSB0byBhZG1pdCB0aGF0IEknbSBhIGxpdHRsZSBi aXQgY29uZnVzZWQgYWJvdXQgdGhlICJtaXNzZWQgdmJsYW5rCj4gPiA+IGhpbGFyaXR5IHdlJ3Zl IGJlZW4gc2VlaW5nIi4gQ291bGQgeW91IGVsYWJvcmF0ZSBhIGxpdHRsZSBiaXQgbW9yZSBhYm91 dAo+ID4gPiB0aGlzIHByb2JsZW0gaW4gdGhlIGNvbW1pdCBtZXNzYWdlPwo+ID4gCj4gPiBXZSd2 ZSBoYWQgdmFyaW91cyByZXBvcnRzIG9uIHZhcmlvdXMgZHJpdmVycyB0aGF0IGh3IHZibGFua3Mg c2VlbSB0byBnZXQKPiA+IGxvc3QgYW5kIHRoZSBkcml2ZXIgc3R1Y2sgb24gdmJsYW5rIHdhaXRz LiBJIHRoaW5rIG1vc3Qgb2YgdGhvc2Ugd2hlcmUKPiA+IGp1c3QgZHJpdmVyIGJ1Z3MsIGJ1dCBj b3VsZCBiZSBhbHNvIHRoYXQgdGhlcmUncyBzb21lIGlzc3VlcyBpbiB0aGUgdmJsYW5rCj4gPiBj b3JlLgo+ID4gCj4gPiA+IEFkZGl0aW9uYWxseSwgaG93IGFib3V0IGJyZWFrIHRoaXMgY29tbWl0 IGluIHR3bz8gT25lIGRlZGljYXRlZCB0byB0aGUgYmFycmllcnMKPiA+ID4gYW5kIHRoZSBhdG9t aWM2NCwgYW5kIHRoZSBvdGhlciByZWxhdGVkIHRvIHRoZSBkb2N1bWVudGF0aW9uPwo+ID4gPiAK PiA+ID4gPiB0aGluayB0aG9zZSBhbGwgZ28gdGhyb3VnaCB0aGUgdmJsYW5rIGNvbXBsZXRpb24g ZXZlbnQsIHdoaWNoIGhhcwo+ID4gPiA+IHVuY29uZGl0aW9uYWwgYmFycmllcnMgLSBpdCBhbHdh eXMgdGFrZXMgdGhlIHNwaW5sb2NrLiBUaGVyZWZvcmUgbm8KPiA+ID4gPiBjYyBzdGFibGUuCj4g PiA+ID4gCj4gPiA+ID4gdjI6Cj4gPiA+ID4gLSBCYXJycmllcnMgYXJlIGhhcmQsIHB1dCB0aGVt IGluIGluIHRoZSByaWdodCBvcmRlciAoQ2hyaXMpLgo+ID4gPiA+IC0gSW1wcm92ZSB0aGUgY29t bWVudHMgYSBiaXQuCj4gPiA+ID4gCj4gPiA+ID4gdjM6Cj4gPiA+ID4gCj4gPiA+ID4gVmlsbGUg bm90aWNlZCB0aGF0IG9uIDMyYml0IHdlIG1pZ2h0IGJlIGJyZWFraW5nIHVwIHRoZSBsb2FkL3N0 b3JlcywKPiA+ID4gPiBub3cgdGhhdCB0aGUgdmJsYW5rIGNvdW50ZXIgaGFzIGJlZW4gc3dpdGNo ZWQgb3ZlciB0byBiZSA2NCBiaXQuIEZpeAo+ID4gPiA+IHRoYXQgdXAgYnkgc3dpdGNoaW5nIHRv IGF0b21pYzY0X3QuIFRoaXMgdGhpcyBoYXBwZW5zIHNvIHJhcmVseSBpbgo+ID4gPiA+IHByYWN0 aWNlIEkgZmlndXJlZCBubyBuZWVkIHRvIGNjOiBzdGFibGUgLi4uCj4gPiA+ID4gCj4gPiA+ID4g Q2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ ID4gQ2M6IEtlaXRoIFBhY2thcmQgPGtlaXRocEBrZWl0aHAuY29tPgo+ID4gPiA+IFJlZmVyZW5j ZXM6IDU3MGU4Njk2M2E1MSAoImRybTogV2lkZW4gdmJsYW5rIGNvdW50IHRvIDY0LWJpdHMgW3Yz XSIpCj4gPiA+ID4gQ2M6IFJvZHJpZ28gU2lxdWVpcmEgPHJvZHJpZ29zaXF1ZWlyYW1lbG9AZ21h aWwuY29tPgo+ID4gPiA+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGlu dGVsLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV92Ymxhbmsu YyB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+ID4gPiA+ICBpbmNs dWRlL2RybS9kcm1fdmJsYW5rLmggICAgIHwgMTUgKysrKysrKysrKy0tCj4gPiA+ID4gIDIgZmls ZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiA+ID4gPiAKPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fdmJsYW5rLmMKPiA+ID4gPiBpbmRleCA2MDNhYjEwNTEyNWQuLjAzZTM3YmNl YWM5YyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCj4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwo+ID4gPiA+IEBAIC0xMDcs NyArMTA3LDcgQEAgc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ID4gPiA+ICAKPiA+ID4gPiAgCXdyaXRlX3NlcWxvY2so JnZibGFuay0+c2VxbG9jayk7Cj4gPiA+ID4gIAl2YmxhbmstPnRpbWUgPSB0X3ZibGFuazsKPiA+ ID4gPiAtCXZibGFuay0+Y291bnQgKz0gdmJsYW5rX2NvdW50X2luYzsKPiA+ID4gPiArCWF0b21p YzY0X2FkZCh2YmxhbmtfY291bnRfaW5jLCAmdmJsYW5rLT5jb3VudCk7Cj4gPiA+ID4gIAl3cml0 ZV9zZXF1bmxvY2soJnZibGFuay0+c2VxbG9jayk7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ ID4gQEAgLTI3Myw3ICsyNzMsOCBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3Vu dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPiA+ID4gPiAgCj4g PiA+ID4gIAlEUk1fREVCVUdfVkJMKCJ1cGRhdGluZyB2YmxhbmsgY291bnQgb24gY3J0YyAldToi Cj4gPiA+ID4gIAkJICAgICAgIiBjdXJyZW50PSVsbHUsIGRpZmY9JXUsIGh3PSV1IGh3X2xhc3Q9 JXVcbiIsCj4gPiA+ID4gLQkJICAgICAgcGlwZSwgdmJsYW5rLT5jb3VudCwgZGlmZiwgY3VyX3Zi bGFuaywgdmJsYW5rLT5sYXN0KTsKPiA+ID4gPiArCQkgICAgICBwaXBlLCBhdG9taWM2NF9yZWFk KCZ2YmxhbmstPmNvdW50KSwgZGlmZiwKPiA+ID4gPiArCQkgICAgICBjdXJfdmJsYW5rLCB2Ymxh bmstPmxhc3QpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCWlmIChkaWZmID09IDApIHsKPiA+ID4gPiAg CQlXQVJOX09OX09OQ0UoY3VyX3ZibGFuayAhPSB2YmxhbmstPmxhc3QpOwo+ID4gPiA+IEBAIC0y OTUsMTEgKzI5NiwyMyBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPiA+ID4gPiAgc3RhdGljIHU2 NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBw aXBlKQo+ID4gPiA+ICB7Cj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2Ymxhbmsg PSAmZGV2LT52YmxhbmtbcGlwZV07Cj4gPiA+ID4gKwl1NjQgY291bnQ7Cj4gPiA+ID4gIAo+ID4g PiA+ICAJaWYgKFdBUk5fT04ocGlwZSA+PSBkZXYtPm51bV9jcnRjcykpCj4gPiA+ID4gIAkJcmV0 dXJuIDA7Cj4gPiA+ID4gIAo+ID4gPiA+IC0JcmV0dXJuIHZibGFuay0+Y291bnQ7Cj4gPiA+ID4g Kwljb3VudCA9IGF0b21pYzY0X3JlYWQoJnZibGFuay0+Y291bnQpOwo+ID4gPiA+ICsKPiA+ID4g PiArCS8qCj4gPiA+ID4gKwkgKiBUaGlzIHJlYWQgYmFycmllciBjb3JyZXNwb25kcyB0byB0aGUg aW1wbGljaXQgd3JpdGUgYmFycmllciBvZiB0aGUKPiA+ID4gPiArCSAqIHdyaXRlIHNlcWxvY2sg aW4gc3RvcmVfdmJsYW5rKCkuIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHBsYWNlCj4gPiA+ ID4gKwkgKiB3aGVyZSB3ZSBuZWVkIGFuIGV4cGxpY2l0IGJhcnJpZXIsIHNpbmNlIGFsbCBvdGhl ciBhY2Nlc3MgZ29lcwo+ID4gPiA+ICsJICogdGhyb3VnaCBkcm1fdmJsYW5rX2NvdW50X2FuZF90 aW1lKCksIHdoaWNoIGFscmVhZHkgaGFzIHRoZSByZXF1aXJlZAo+ID4gPiA+ICsJICogcmVhZCBi YXJyaWVyIGN1cnRlc3kgb2YgdGhlIHJlYWQgc2VxbG9jay4KPiA+ID4gPiArCSAqLwo+ID4gPiA+ ICsJc21wX3JtYigpOwo+ID4gPiAKPiA+ID4gSSB0aGluayBJIGRpZCBub3QgZ2V0IGFsbCB0aGUg aWRlYSBiZWhpbmQgdGhlIHNtcF9ybWIoKSBpbiB0aGlzIGZ1bmN0aW9uLiBGV0lVLAo+ID4gPiBz bXBfeHh4IGFyZSB1c2VkIGZvciBwcmV2ZW50aW5nIHJhY2UgY29uZGl0aW9ucyBpbiBhIG11bHRp cHJvY2Vzc29yIHN5c3RlbSwKPiA+ID4gcmlnaHQ/IEluIHRoaXMgc2Vuc2UsIEkgY2FuIHByZXN1 bWUgdGhhdCB0aGlzIGNoYW5nZSBjYW4gYnJpbmcgYmVuZWZpdHMgZm9yCj4gPiA+IFZLTVMgb3Ig YW55IG90aGVyIHZpcnR1YWwgZHJpdmVyOyBvbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyB3aWxsIG5v dCBicmluZyBhbnkKPiA+ID4gYWR2YW50YWdlIG9uIHJlYWwgZHJpdmVycyBsaWtlIGk5MTUgYW5k IGFtZGdwdSBzaW5jZSB0aGVzZSBkZXZpY2VzIGFyZSBub3QKPiA+ID4gcmVsYXRlZCB3aXRoIHNt cCBzdHVmZiwgcmlnaHQ/Cj4gPiAKPiA+IHNtcCBvciBub3Qgc21wIGlzIGFib3V0IHRoZSBjcHUg eW91ciBkcml2ZXIgaXMgcnVubmluZyBvbiwgbm90IGFueXRoaW5nIHRvCj4gPiBkbyB3aXRoIHRo ZSBkZXZpY2UgaGFyZHdhcmUgaXRzZWxmLiBBbmQgbm93YWRheXMgdGhlcmUncyBzaW1wbHkgbm8K PiA+IHNpbmdsZS10aHJlYWRlZCBwcm9jZXNzb3JzIGFueW1vcmUsIGV2ZXJ5dGhpbmcgaGFzIGF0 IGxlYXN0IDIgY29yZXMgKGV2ZW4KPiA+IHRoZSB0aW5pZXN0IHNvYykuIFNvIHllYWgsIHRoaXMg bWF0dGVycyBmb3IgZXZlcnlvbmUuCj4gPiAKPiA+IHNtcF8qIGZ1bmN0aW9ucyBvbmx5IGdldCBj b21waWxlZCBvdXQgdG8gbm90aGluZyBpZiB5b3UgaGF2ZSBDT05GSUdfVVAKPiA+ICh3aGljaCBt ZWFucyBvbmx5IDEgY3B1IGNvcmUgd2l0aCBvbmx5IDEgU01UIHRocmVhZCBpcyBzdXBwb3J0ZWQp Lgo+ID4gCj4gPiBBbmQgeWVhaCBjb3JyZWN0bHkgcGxhY2luZyBzbXAgYmFycmllcnMgaXMgUmVh bCBIYXJkIFN0dWZmICh0bSkuCj4gPiAtRGFuaWVsCj4gPiAKPiA+ICAKPiA+ID4gVGhhbmtzCj4g PiA+IAo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiBjb3VudDsKPiA+ID4gPiAgfQo+ID4gPiA+ ICAKPiA+ID4gPiAgLyoqCj4gPiA+ID4gQEAgLTc2NCw2ICs3NzcsMTQgQEAgZHJtX2dldF9sYXN0 X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwK PiA+ID4gPiAgICogdmJsYW5rIGludGVycnVwdCAoc2luY2UgaXQgb25seSByZXBvcnRzIHRoZSBz b2Z0d2FyZSB2YmxhbmsgY291bnRlciksIHNlZQo+ID4gPiA+ICAgKiBkcm1fY3J0Y19hY2N1cmF0 ZV92YmxhbmtfY291bnQoKSBmb3Igc3VjaCB1c2UtY2FzZXMuCj4gPiA+ID4gICAqCj4gPiA+ID4g KyAqIE5vdGUgdGhhdCBmb3IgYSBnaXZlbiB2YmxhbmsgY291bnRlciB2YWx1ZSBkcm1fY3J0Y19o YW5kbGVfdmJsYW5rKCkKPiA+ID4gPiArICogYW5kIGRybV9jcnRjX3ZibGFua19jb3VudCgpIG9y IGRybV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZSgpCj4gPiA+ID4gKyAqIHByb3ZpZGUgYSBi YXJyaWVyOiBBbnkgd3JpdGVzIGRvbmUgYmVmb3JlIGNhbGxpbmcKPiA+ID4gPiArICogZHJtX2Ny dGNfaGFuZGxlX3ZibGFuaygpIHdpbGwgYmUgdmlzaWJsZSB0byBjYWxsZXJzIG9mIHRoZSBsYXRl cgo+ID4gPiA+ICsgKiBmdW5jdGlvbnMsIGlmZiB0aGUgdmJsYW5rIGNvdW50IGlzIHRoZSBzYW1l IG9yIGEgbGF0ZXIgb25lLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBTZWUgYWxzbyAmZHJtX3Zi bGFua19jcnRjLmNvdW50Lgo+ID4gPiA+ICsgKgo+ID4gPiA+ICAgKiBSZXR1cm5zOgo+ID4gPiA+ ICAgKiBUaGUgc29mdHdhcmUgdmJsYW5rIGNvdW50ZXIuCj4gPiA+ID4gICAqLwo+ID4gPiA+IEBA IC04MDEsNyArODIyLDcgQEAgc3RhdGljIHU2NCBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ID4gPiA+ICAKPiA+ID4g PiAgCWRvIHsKPiA+ID4gPiAgCQlzZXEgPSByZWFkX3NlcWJlZ2luKCZ2YmxhbmstPnNlcWxvY2sp Owo+ID4gPiA+IC0JCXZibGFua19jb3VudCA9IHZibGFuay0+Y291bnQ7Cj4gPiA+ID4gKwkJdmJs YW5rX2NvdW50ID0gYXRvbWljNjRfcmVhZCgmdmJsYW5rLT5jb3VudCk7Cj4gPiA+ID4gIAkJKnZi bGFua3RpbWUgPSB2YmxhbmstPnRpbWU7Cj4gPiA+ID4gIAl9IHdoaWxlIChyZWFkX3NlcXJldHJ5 KCZ2YmxhbmstPnNlcWxvY2ssIHNlcSkpOwo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtODE4LDYgKzgz OSwxNCBAQCBzdGF0aWMgdTY0IGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4gPiA+ID4gICAqIHZibGFuayBldmVudHMg c2luY2UgdGhlIHN5c3RlbSB3YXMgYm9vdGVkLCBpbmNsdWRpbmcgbG9zdCBldmVudHMgZHVlIHRv Cj4gPiA+ID4gICAqIG1vZGVzZXR0aW5nIGFjdGl2aXR5LiBSZXR1cm5zIGNvcnJlc3BvbmRpbmcg c3lzdGVtIHRpbWVzdGFtcCBvZiB0aGUgdGltZQo+ID4gPiA+ICAgKiBvZiB0aGUgdmJsYW5rIGlu dGVydmFsIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQgdmJsYW5rIGNvdW50ZXIgdmFs dWUuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIE5vdGUgdGhhdCBmb3IgYSBnaXZlbiB2Ymxhbmsg Y291bnRlciB2YWx1ZSBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCkKPiA+ID4gPiArICogYW5kIGRy bV9jcnRjX3ZibGFua19jb3VudCgpIG9yIGRybV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZSgp Cj4gPiA+ID4gKyAqIHByb3ZpZGUgYSBiYXJyaWVyOiBBbnkgd3JpdGVzIGRvbmUgYmVmb3JlIGNh bGxpbmcKPiA+ID4gPiArICogZHJtX2NydGNfaGFuZGxlX3ZibGFuaygpIHdpbGwgYmUgdmlzaWJs ZSB0byBjYWxsZXJzIG9mIHRoZSBsYXRlcgo+ID4gPiA+ICsgKiBmdW5jdGlvbnMsIGlmZiB0aGUg dmJsYW5rIGNvdW50IGlzIHRoZSBzYW1lIG9yIGEgbGF0ZXIgb25lLgo+ID4gPiA+ICsgKgo+ID4g PiA+ICsgKiBTZWUgYWxzbyAmZHJtX3ZibGFua19jcnRjLmNvdW50Lgo+ID4gPiA+ICAgKi8KPiA+ ID4gPiAgdTY0IGRybV9jcnRjX3ZibGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gPiA+ID4gIAkJCQkgICBrdGltZV90ICp2Ymxhbmt0aW1lKQo+ID4gPiA+IEBAIC0x NzkxLDYgKzE4MjAsMTQgQEAgRVhQT1JUX1NZTUJPTChkcm1faGFuZGxlX3ZibGFuayk7Cj4gPiA+ ID4gICAqCj4gPiA+ID4gICAqIFRoaXMgaXMgdGhlIG5hdGl2ZSBLTVMgdmVyc2lvbiBvZiBkcm1f aGFuZGxlX3ZibGFuaygpLgo+ID4gPiA+ICAgKgo+ID4gPiA+ICsgKiBOb3RlIHRoYXQgZm9yIGEg Z2l2ZW4gdmJsYW5rIGNvdW50ZXIgdmFsdWUgZHJtX2NydGNfaGFuZGxlX3ZibGFuaygpCj4gPiA+ ID4gKyAqIGFuZCBkcm1fY3J0Y192YmxhbmtfY291bnQoKSBvciBkcm1fY3J0Y192YmxhbmtfY291 bnRfYW5kX3RpbWUoKQo+ID4gPiA+ICsgKiBwcm92aWRlIGEgYmFycmllcjogQW55IHdyaXRlcyBk b25lIGJlZm9yZSBjYWxsaW5nCj4gPiA+ID4gKyAqIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoKSB3 aWxsIGJlIHZpc2libGUgdG8gY2FsbGVycyBvZiB0aGUgbGF0ZXIKPiA+ID4gPiArICogZnVuY3Rp b25zLCBpZmYgdGhlIHZibGFuayBjb3VudCBpcyB0aGUgc2FtZSBvciBhIGxhdGVyIG9uZS4KPiA+ ID4gPiArICoKPiA+ID4gPiArICogU2VlIGFsc28gJmRybV92YmxhbmtfY3J0Yy5jb3VudC4KPiA+ ID4gPiArICoKPiA+ID4gPiAgICogUmV0dXJuczoKPiA+ID4gPiAgICogVHJ1ZSBpZiB0aGUgZXZl bnQgd2FzIHN1Y2Nlc3NmdWxseSBoYW5kbGVkLCBmYWxzZSBvbiBmYWlsdXJlLgo+ID4gPiA+ICAg Ki8KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oIGIvaW5jbHVk ZS9kcm0vZHJtX3ZibGFuay5oCj4gPiA+ID4gaW5kZXggOWZlNGJhOGJjNjIyLi5jMTZjNDQwNTJi M2QgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gPiA+ID4g KysrIGIvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gPiA+ID4gQEAgLTEwOSw5ICsxMDksMjAg QEAgc3RydWN0IGRybV92YmxhbmtfY3J0YyB7Cj4gPiA+ID4gIAlzZXFsb2NrX3Qgc2VxbG9jazsK PiA+ID4gPiAgCj4gPiA+ID4gIAkvKioKPiA+ID4gPiAtCSAqIEBjb3VudDogQ3VycmVudCBzb2Z0 d2FyZSB2YmxhbmsgY291bnRlci4KPiA+ID4gPiArCSAqIEBjb3VudDoKPiA+ID4gPiArCSAqCj4g PiA+ID4gKwkgKiBDdXJyZW50IHNvZnR3YXJlIHZibGFuayBjb3VudGVyLgo+ID4gPiA+ICsJICoK PiA+ID4gPiArCSAqIE5vdGUgdGhhdCBmb3IgYSBnaXZlbiB2YmxhbmsgY291bnRlciB2YWx1ZSBk cm1fY3J0Y19oYW5kbGVfdmJsYW5rKCkKPiA+ID4gPiArCSAqIGFuZCBkcm1fY3J0Y192Ymxhbmtf Y291bnQoKSBvciBkcm1fY3J0Y192YmxhbmtfY291bnRfYW5kX3RpbWUoKQo+ID4gPiA+ICsJICog cHJvdmlkZSBhIGJhcnJpZXI6IEFueSB3cml0ZXMgZG9uZSBiZWZvcmUgY2FsbGluZwo+ID4gPiA+ ICsJICogZHJtX2NydGNfaGFuZGxlX3ZibGFuaygpIHdpbGwgYmUgdmlzaWJsZSB0byBjYWxsZXJz IG9mIHRoZSBsYXRlcgo+ID4gPiA+ICsJICogZnVuY3Rpb25zLCBpZmYgdGhlIHZibGFuayBjb3Vu dCBpcyB0aGUgc2FtZSBvciBhIGxhdGVyIG9uZS4KPiA+ID4gPiArCSAqCj4gPiA+ID4gKwkgKiBJ TVBPUlRBTlQ6IFRoaXMgZ3VhcmFudGVlIHJlcXVpcmVzIGJhcnJpZXJzLCB0aGVyZWZvciBuZXZl ciBhY2Nlc3MKPiA+ID4gPiArCSAqIHRoaXMgZmllbGQgZGlyZWN0bHkuIFVzZSBkcm1fY3J0Y192 YmxhbmtfY291bnQoKSBpbnN0ZWFkLgo+ID4gPiA+ICAJICovCj4gPiA+ID4gLQl1NjQgY291bnQ7 Cj4gPiA+ID4gKwlhdG9taWM2NF90IGNvdW50Owo+ID4gPiA+ICAJLyoqCj4gPiA+ID4gIAkgKiBA dGltZTogVmJsYW5rIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIEBjb3VudC4KPiA+ID4gPiAg CSAqLwo+ID4gPiA+IC0tIAo+ID4gPiA+IDIuMjIuMAo+ID4gPiA+IAo+ID4gPiAKPiA+ID4gLS0g Cj4gPiA+IFJvZHJpZ28gU2lxdWVpcmEKPiA+ID4gU29mdHdhcmUgRW5naW5lZXIsIEFkdmFuY2Vk IE1pY3JvIERldmljZXMgKEFNRCkKPiA+ID4gaHR0cHM6Ly9zaXF1ZWlyYS50ZWNoCj4gPiAKPiA+ IAo+ID4gCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo+ID4gCj4gPiAKPiA+IC0tIAo+ID4gRGFuaWVsIFZldHRlcgo+ ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiBodHRwOi8vYmxvZy5m ZndsbC5jaAo+IAo+IC0tIAo+IFJvZHJpZ28gU2lxdWVpcmEKPiBTb2Z0d2FyZSBFbmdpbmVlciwg QWR2YW5jZWQgTWljcm8gRGV2aWNlcyAoQU1EKQo+IGh0dHBzOi8vc2lxdWVpcmEudGVjaAoKCgot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4