From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 43/46] drm/i915: Allocate a status page for each timeline Date: Wed, 16 Jan 2019 13:06:36 -0800 Message-ID: <8892d2cc-bd4c-8658-d855-5ba6b9235e61@Intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-43-chris@chris-wilson.co.uk> <1e5f4aa4-cf67-6737-1b31-9849eed945eb@Intel.com> <154754581324.30063.14174147249526138105@skylake-alporthouse-com> <74dc0106-68f7-b6b9-fd9a-1566f1267fd8@Intel.com> <154757781911.30063.11406468337612552966@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 579806E222 for ; Wed, 16 Jan 2019 21:06:52 +0000 (UTC) In-Reply-To: <154757781911.30063.11406468337612552966@skylake-alporthouse-com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMS8xNS8yMDE5IDEwOjQzLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gUXVvdGluZyBKb2huIEhh cnJpc29uICgyMDE5LTAxLTE1IDE4OjE3OjIxKQo+PiBPbiAxLzE1LzIwMTkgMDE6NTAsIENocmlz IFdpbHNvbiB3cm90ZToKPj4+IFF1b3RpbmcgSm9obiBIYXJyaXNvbiAoMjAxOS0wMS0xNSAwMDo1 NjoxMykKPj4+PiBPbiAxLzcvMjAxOSAwMzo1NSwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+Pj4+PiAr c3RhdGljIGludCBhbGxvY19od3NwKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPj4+ Pj4gK3sKPj4+Pj4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0aW1lbGlu ZS0+aTkxNTsKPj4+Pj4gKyAgICAgc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4+Pj4+ICsgICAgIGlu dCBvZmZzZXQ7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgbXV0ZXhfbG9jaygmaTkxNS0+Z3QudGltZWxp bmVfbG9jayk7Cj4+Pj4+ICsKPj4+Pj4gK3Jlc3RhcnQ6Cj4+Pj4+ICsgICAgIG9mZnNldCA9IGZp bmRfZmlyc3RfY2FjaGVsaW5lKGk5MTUpOwo+Pj4+PiArICAgICBpZiAob2Zmc2V0ID09IE5CSVRT ICYmIGk5MTUtPmd0LnRpbWVsaW5lX2h3c3ApIHsKPj4+Pj4gKyAgICAgICAgICAgICBpOTE1X3Zt YV9wdXQoaTkxNS0+Z3QudGltZWxpbmVfaHdzcCk7Cj4+Pj4+ICsgICAgICAgICAgICAgaTkxNS0+ Z3QudGltZWxpbmVfaHdzcCA9IE5VTEw7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAg ICB2bWEgPSBpOTE1LT5ndC50aW1lbGluZV9od3NwOwo+Pj4+PiArICAgICBpZiAoIXZtYSkgewo+ Pj4+PiArICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpibzsKPj4+Pj4g Kwo+Pj4+PiArICAgICAgICAgICAgIC8qIERyb3AgdGhlIGxvY2sgYmVmb3JlIGFsbG9jYXRpb25z ICovCj4+Pj4+ICsgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZpOTE1LT5ndC50aW1lbGluZV9s b2NrKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIEJVSUxEX0JVR19PTihOQklUUyAqIENB Q0hFTElORV9CWVRFUyA+IFBBR0VfU0laRSk7Cj4+Pj4+ICsgICAgICAgICAgICAgYm8gPSBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7Cj4+Pj4+ICsgICAg ICAgICAgICAgaWYgKElTX0VSUihibykpCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUihibyk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICBpOTE1X2dlbV9vYmpl Y3Rfc2V0X2NhY2hlX2xldmVsKGJvLCBJOTE1X0NBQ0hFX0xMQyk7Cj4+Pj4+ICsKPj4+Pj4gKyAg ICAgICAgICAgICB2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShibywgJmk5MTUtPmdndHQudm0sIE5V TEwpOwo+Pj4+PiArICAgICAgICAgICAgIGlmIChJU19FUlIodm1hKSkKPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHZtYSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAg ICAgICBtdXRleF9sb2NrKCZpOTE1LT5ndC50aW1lbGluZV9sb2NrKTsKPj4+Pj4gKyAgICAgICAg ICAgICBpZiAoaTkxNS0+Z3QudGltZWxpbmVfaHdzcCkgewo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgaTkxNV9nZW1fb2JqZWN0X3B1dChibyk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICBnb3RvIHJlc3RhcnQ7Cj4+Pj4+ICsgICAgICAgICAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAg ICAgICAgICAgaTkxNS0+Z3QudGltZWxpbmVfaHdzcCA9IHZtYTsKPj4+Pj4gKyAgICAgICAgICAg ICBpOTE1LT5ndC50aW1lbGluZV9mcmVlID0gfjB1bGw7Cj4+Pj4+ICsgICAgICAgICAgICAgb2Zm c2V0ID0gMDsKPj4+Pj4gKyAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGk5MTUtPmd0LnRpbWVs aW5lX2ZyZWUgJj0gfkJJVF9VTEwob2Zmc2V0KTsKPj4+Pj4gKwo+Pj4+PiArICAgICB0aW1lbGlu ZS0+aHdzcF9nZ3R0ID0gaTkxNV92bWFfZ2V0KHZtYSk7Cj4+Pj4+ICsgICAgIHRpbWVsaW5lLT5o d3NwX29mZnNldCA9IG9mZnNldCAqIENBQ0hFTElORV9CWVRFUzsKPj4+Pj4gKwo+Pj4+PiArICAg ICBtdXRleF91bmxvY2soJmk5MTUtPmd0LnRpbWVsaW5lX2xvY2spOwo+Pj4+PiArCj4+Pj4+ICsg ICAgIHJldHVybiAwOwo+Pj4+PiArfQo+Pj4+IElmIEknbSByZWFkaW5nIHRoaXMgY29ycmVjdGx5 IHRoZW4gZ3QudGltZWxpbmVfaHdzcC9mcmVlIGlzIHRoZSBhIGNhY2hlZAo+Pj4+IGNvcHkgb2Yg dGhlIG1vc3QgcmVjZW50bHkgYWxsb2NhdGVkIGJ1dCBub3QgeWV0IGZpbGxlZCBiYW5rIG9mIHNl cW5vCj4+Pj4gbG9jYXRpb25zLiBXaGVuIGl0IGdldHMgZnVsbCwgdGhlIGk5MTUtPmd0IHJlZmVy ZW5jZSBnZXRzIGRyb3BwZWQgYW5kIGEKPj4+PiBuZXcgcGFnZSBpcyBhbGxvY2F0ZWQgYW5kIHVz ZWQgdXAgbGluZSBieSBsaW5lLiBNZWFud2hpbGUsIGVhY2ggdGltZWxpbmUKPj4+PiBoYXMgaXQn cyBvd24gcHJpdmF0ZSByZWZlcmVuY2UgdG8gdGhlIHBhZ2Ugc28gZHJvcHBpbmcgdGhlIGk5MTUt Pmd0Cj4+Pj4gcmVmZXJlbmNlIGlzIHNhZmUuIEFuZCBvbmNlIHRoZSBsYXN0IHRpbWVsaW5lIHVz aW5nIGEgZ2l2ZW4gcGFnZSBpcwo+Pj4+IGZyZWVkLCB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhh dCBwYWdlIHdpbGwgYmUgZHJvcHBlZCBhbmQgc28gdGhlIHBhZ2UKPj4+PiBpdHNlbGYgd2lsbCBh bHNvIGJlIGZyZWVkLiBJZiBhIHRpbWVsaW5lIGlzIGZyZWVkIGJlZm9yZSB0aGUgY3VycmVudGx5 Cj4+Pj4gY2FjaGVkIHBhZ2UgaXMgZmlsbGVkLCB0aGVuIHRoYXQgdGltZWxpbmUncyBzbG90IHdp bGwgYmUgcmVsZWFzZWQgYW5kCj4+Pj4gcmUtdXNlZCBieSB0aGUgbmV4dCB0aW1lbGluZSB0byBi ZSBjcmVhdGVkLgo+Pj4+Cj4+Pj4gQnV0IHdoYXQgYWJvdXQgdGhlIHNjZW5hcmlvIG9mIGEgbG9u ZyBydW5uaW5nIHN5c3RlbSB3aXRoIGEgc21hbGwgYnV0Cj4+Pj4gZ3Jvd2luZyBudW1iZXIgb2Yg cGVyc2lzdGVudCB0YXNrcyBpbnRlcnNwZXJzZWQgd2l0aCBtYW55IHNob3J0IGxpdmVkCj4+Pj4g dGFza3M/IEluIHRoYXQgY2FzZSwgeW91IHdvdWxkIGVuZCB1cCB3aXRoIG1hbnkgc3BhcnNlbHkg cG9wdWxhdGVkIHBhZ2VzCj4+Pj4gdGhhdCB3aG9zZSBmcmVlIHNsb3RzIHdpbGwgbm90IGdldCBy ZS11c2VkLiBZb3UgY291bGQgaGF2ZSBhIGxpbmtlZCBsaXN0Cj4+Pj4gb2YgY2FjaGVkIHBhZ2Vz LiBXaGVuIGEgcGFnZSBpcyBmaWxsZWQsIG1vdmUgaXQgdG8gYSAnZnVsbCcgbGlzdC4gV2hlbiBh Cj4+Pj4gdGltZWxpbmUgaXMgZnJlZWQsIGlmIGl0J3MgcGFnZSB3YXMgb24gdGhlICdmdWxsJyBs aXN0LCBjbGVhciB0aGUgc2xvdAo+Pj4+IGFuZCBtb3ZlIGl0IGJhY2sgdG8gdGhlICdhdmFpbGFi bGUnIGxpc3QuCj4+PiBZZXMuIE15IHRoaW5raW5nIHdhcyBhIHBsYWluIHNsYWIgY2FjaGUgd2Fz IGEgcXVpY2stYW5kLWRpcnR5Cj4+PiBpbXByb3ZlbWVudCBvdmVyIGEgcGFnZS1wZXItdGltZWxp bmUuIEFuZCBhIGZyZWVsaXN0IHdvdWxkIGJlIHRoZSBuZXh0Cj4+PiBzdGVwLgo+Pj4KPj4+PiBP ciBpcyB0aGUgaWRlYSB0aGF0IGEgd29yc3QgY2FzZSBvZiBhIHNpbmdsZSBwYWdlIHZtYSBhbGxv Y2F0aW9uIHBlcgo+Pj4+IHRpbWVsaW5lIGlzIHRoZSBsZWFzdCBvZiBvdXIgd29ycmllcyBpZiB0 aGVyZSBpcyBhbiBldmVyIGdyb3dpbmcgbnVtYmVyCj4+Pj4gb2YgdGltZWxpbmVzL2NvbnRleHRz L3VzZXJzIGluIHRoZSBzeXN0ZW0/Cj4+PiBOYWgsIGl0IHdhcyBqdXN0IGFuIGF0dGVtcHQgdG8g cXVpY2tseSByZWR1Y2UgdGhlIG51bWJlciBvZiBhbGxvY2F0aW9ucywKPj4+IHdoZXJlIHRoZSB3 b3JzdCBjYXNlIG9mIG9uZSBwYWdlK3ZtYSBwZXIgdGltZWxpbmUgd2FzIHRoZSBzdGFydGluZwo+ Pj4gcG9pbnQuCj4+Pgo+Pj4gV2Ugc2hvdWxkIGJyZWFrIHRoaXMgcGF0Y2ggZG93biBpbnRvIDEp IG9uZS1wYWdlLXBlci10aW1lbGluZSwgMikgc2xhYgo+Pj4gY2FjaGUsIDMpIGZyZWUgbGlzdCA0 KSBwcm9maXQuCj4+Pgo+Pj4gQXQgb3RoZXIgdGltZXMgd2UgaGF2ZSBiZWVuIHdhbnRpbmcgdG8g YmUgYWJsZSB0byBzdWJhbGxvY2F0ZSBwYWdlcywKPj4+IHNvbWV0aGluZyB0byBrZWVwIGluIG1p bmQgd291bGQgYmUgZXh0ZW5kaW5nIHRoaXMgdG8gYXJiaXRyYXJ5IGNhY2hlbGluZQo+Pj4gYWxs b2NhdGlvbnMuCj4+IFRoZSBtdWx0aS1zdGFnZSBhcHByb2FjaCBzb3VuZHMgZ29vZC4gS2VlcCB0 aGluZ3Mgc2ltcGxlIGluIHRoaXMgcGF0Y2gKPj4gYW5kIHRoZW4gaW1wcm92ZSB0aGUgc2l0dWF0 aW9uIGxhdGVyLiBPbmUgdGhpbmcgdG8gYmUgY2FyZWZ1bCBvZiB3aXRoIGEKPj4gY2FjaGVsaW5l IGFsbG9jYXRvciB3b3VsZCBiZSBtYWtlIHN1cmUgd2hhdGV2ZXIgaXMgYmVpbmcgY29udmVydGVk Cj4+IHdhc24ndCB1c2luZyBmdWxsIHBhZ2VzIGZvciBzZWN1cml0eSByZWFzb25zLiBJLmUuIGEg cGFnZSBjYW4gYmUgcHJpdmF0ZQo+PiB0byBhIHByb2Nlc3MsIGEgY2FjaGVsaW5lIHdpbGwgYmUg c2hhcmVkIGJ5IG1hbnkuIEkgZ3Vlc3MgdGhhdCB3b3VsZAo+PiBvbmx5IHJlYWxseSBhcHBseSB0 byBhbGxvY2F0aW9ucyBiZWluZyBwYXNzZWQgdG8gdXNlciBsYW5kIGFzIHRoZSBrZXJuZWwKPj4g aXMgY29uc2lkZXJlZCBzZWN1cmU/IE9yIGNhbiBhIHVzZXIgYmF0Y2ggYnVmZmVyIHdyaXRlIHRv IGFyYml0cmFyeQo+PiBsb2NhdGlvbnMgd2l0aGluIHRoZSBwcEhXU1AgYW5kIHRoZXJlYnkgc3Bs YXQgc29tZW9uZSBlbHNlJ3Mgc2Vxbm8/Cj4gcHBIV1NQLCB5ZXMuIEJ1dCBmb3IgaW50ZXJuYWwg YWxsb2NhdGlvbnMsIG9ubHkgYWNjZXNzaWJsZSB2aWEgdGhlIHJpbmcKPiArIEdHVFQsIHNob3Vs ZCBiZSBubyBwcm9ibGVtLiBJIGFncmVlIHRoYXQgd2UgZGVmaW5pdGVseSBkb24ndCB3YW50IHRv Cj4gZXhwb3NlIHN1YnBhZ2Ugc2hhcmluZyBhY3Jvc3MgdGhlIHVzZXJzcGFjZSBib3VuZGFyeSAo YWxsIGlzb2xhdGlvbgo+IGNvbnRyb2xzIGFyZSBvbmx5IG9uIHBhZ2VzIGFuZCBhYm92ZSkuCj4K PiBJZiB1c2Vyc3BhY2Ugd2FudHMgc3ViYWxsb2NhdGlvbnMsIGl0IGNhbiAoYW5kIGRvZXMpIGRv IHRoZW0gZm9yIGl0c2VsZgo+IGFuZCBzaG91bGQgcmVndWxhdGUgaXRzIG93biBzaGFyaW5nLgoK SSdtIGEgbGl0dGxlIGNvbmZ1c2VkLiBBcmUgeW91IHNheWluZyB0aGF0IGEgcm9ndWUgYmF0Y2gg YnVmZmVyIGNvdWxkIApzcGxhdCBzb21lIG90aGVyIGNvbnRleHQncyBwcEhXU1Agc2Vxbm8gb3Ig dGhhdCBpdCBjYW4ndD8gSXQgd291bGQgYmUgCmJhZCBpZiBvbmUgZG9kZ3kgdXNlciBjb3VsZCBj YXVzZSBoYW5nY2hlY2tzIGluIGFub3RoZXIgdXNlcidzIGJhdGNoIGJ5IApzcGxhdHRpbmcgdGhl aXIgc2Vxbm9zLgoKPgo+Pj4+PiArICAgICBpZiAoZ2xvYmFsX2h3c3ApIHsKPj4+Pj4gKyAgICAg ICAgICAgICB0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaTkxNV92bWFfZ2V0KGdsb2JhbF9od3NwKTsK Pj4+Pj4gKyAgICAgICAgICAgICB0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSBJOTE1X0dFTV9IV1Nf U0VRTk9fQUREUjsKPj4+Pj4gKyAgICAgfSBlbHNlIHsKPj4+Pj4gKyAgICAgICAgICAgICBlcnIg PSBhbGxvY19od3NwKHRpbWVsaW5lKTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+Pj4+ PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+Pj4gKyAgICAgfQo+Pj4+PiAr Cj4+Pj4+ICsgICAgIHZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodGltZWxpbmUtPmh3 c3BfZ2d0dC0+b2JqLCBJOTE1X01BUF9XQik7Cj4+Pj4+ICsgICAgIGlmIChJU19FUlIodmFkZHIp KSB7IC8qIGxlYWsgdGhlIGNhY2hlbGluZSwgYnV0IHdpbGwgY2xlYW4gdXAgbGF0ZXIgKi8KPj4+ PiBDYW4geW91IGV4cGxhaW4gdGhpcyBjb21tZW50IG1vcmU/IFdoZXJlL3doZW4gaXMgdGhlIGxh dGVyPwo+Pj4gT24gZmFpbHVyZSBoZXJlLCB0aGUgY2FjaGVsaW5lIGlzIHN0aWxsIG1hcmtlZCBh cyBhbGxvY2F0ZWQgaW4gdGhlIHNsYWIsCj4+PiBidXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgcGFn ZSBpcyByZWxlYXNlZC4gU28gdGhlIGJhY2tpbmcgcGFnZSB3aWxsIGJlCj4+PiByZWxlYXNlZCB3 aGVuIGV2ZXJ5b25lIGVsc2UgZmluYWxseSBkcm9wcyB0aGVpciByZWZlcmVuY2UuCj4+Pgo+Pj4g SnVzdCBsYXppbmVzcywgc2luY2Ugd2UgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXR1cm4gdGhlIGNh Y2hlbGluZSBsYXRlcgo+Pj4gb24uLi4KPj4gTWVhbmluZyB0aGUgYWN0dWFsIGxlYWsgaXMgdGhl IGJpdCBpbiAnaTkxNS0+Z3QudGltZWxpbmVfZnJlZScgdGhhdCBzYXlzCj4+IHRoaXMgY2FjaGVs aW5lIGNhbiBvciBjYW4ndCBiZSB1c2VkIGZvciB0aGUgbmV4dCBhbGxvY2F0aW9uPyBQcmVzdW1h Ymx5Cj4+IHlvdSBjb3VsZCBkbyB0aGUgYml0IG1hcCBtdW5naW5nIGluIHRoZSBjYXNlIHRoYXQg J2dsb2JhbF9od3NwJyBpcyBudWxsLAo+PiBidXQgdGhlIGNvZGUgd291bGQgY2VydGFpbmx5IGJl IG1lc3NpZXIgZm9yIG5vdCBhIGxvdCBvZiBnYWluLgo+IEhhdmluZyBiZWVuIHBvaW50ZWQgb3V0 IHRoYXQgSSB3YXMgYmVpbmcgbGF6eSwgYSBiaXQgb2YgcmVmYWN0b3JpbmcKPiBsYXRlciBzaG93 ZWQgaG93IGxhenkgSSB3YXMuCkRvZXMgdGhhdCBtZWFuIHlvdSBhcmUgZ29pbmcgdG8gcmUtd29y ayB0aGlzIHBhdGNoIG9yIGZvbGxvdyBpdCB1cCB3aXRoIAphIHN1YnNlcXVlbnQgb25lPwoKPgo+ Pj4+PiBAQCAtMjYxNiw3ICsyNjI4LDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9k ZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+Pj4+PiAgICAgICAg ICAgICAgICAgZ290byBlcnJvcl9kZXJlZl9vYmo7Cj4+Pj4+ICAgICAgICAgfQo+Pj4+PiAgICAg Cj4+Pj4+IC0gICAgIHRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoY3R4LT5pOTE1LCBj dHgtPm5hbWUpOwo+Pj4+PiArICAgICB0aW1lbGluZSA9IGk5MTVfdGltZWxpbmVfY3JlYXRlKGN0 eC0+aTkxNSwgY3R4LT5uYW1lLCBOVUxMKTsKPj4+PiBXaHkgZG9lcyB0aGlzIHVzZSB0aGUgZ2xv YmFsIEhXU1AgcmF0aGVyIHRoYW4gYSBwZXIgY29udGV4dCBvbmU/Cj4+PiAuZ2xvYmFsX2h3c3Ag PSBOVUxMID0+IGl0IGFsbG9jYXRlcyBpdHMgb3duIEhXU1AuCj4+Pgo+Pj4gV2VyZSB5b3UgdGhp bmtpbmcgb2YgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbigpIHdoaWNoIGlzIHN0aWxsIHVzaW5n Cj4+PiB0aGUgZ2xvYmFsIEhXU1AgYXQgdGhpcyBwb2ludCBpbiB0aW1lPwo+PiBEb2guIEJyYWlu IGZhcnQuIFByZXN1bWFibHkgdGhlIGVuZ2luZSBvbmUgd2lsbCBkaXNhcHBlYXIgY29tcGxldGVs eT8gT3IKPj4gaXMgaXQgc3RpbGwgbmVlZGVkIGZvciBsZWdhY3kgbW9kZT8KPiBJdCAodGhlIHRp bWVsaW5lIGVtYmVkZGVkIGluc2lkZSB0aGUgZW5naW5lKSBpcyBraWxsZWQgbGF0ZXIsIG9uY2UK PiB0aGUgaW50ZXJuYWwgY2xpZW50cyAocGVyZi9wbXUsIGhhbmdjaGVjayBhbmQgaWRsaW5nIGF0 IHRoZSBsYXN0IGNvdW50KQo+IGFyZSByZWFkeSBmb3IgdGhlIGxhY2sgb2YgZ2xvYmFsbHkgb3Jk ZXJlZCBleGVjdXRpb24gcXVldWUuIFRoZSBzaW5nbGUKPiByaW5nYnVmZmVyICsgdGltZWxpbmUg cGVyc2lzdHMgZm9yIGxlZ2FjeS4gKE11bHRpcGxlIHRpbWVsaW5lcyBmb3IgZ2VuNywKPiBjb21p bmcgbGF0ZXIhKQo+IC1DaHJpcwpTb3VuZHMgZ29vZCA6KS4KCkpvaG4uCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK