From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH 23/34] drm/i915: Share per-timeline HWSP using a slab suballocator Date: Tue, 22 Jan 2019 11:12:40 +0000 Message-ID: <154815556048.1277.17377298538707403556@skylake-alporthouse-com> References: <20190121222117.23305-1-chris@chris-wilson.co.uk> <20190121222117.23305-24-chris@chris-wilson.co.uk> <5e4b1d6d-c9ca-c300-bc77-bb6c33a74676@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6C266E2F6 for ; Tue, 22 Jan 2019 11:12:46 +0000 (UTC) In-Reply-To: <5e4b1d6d-c9ca-c300-bc77-bb6c33a74676@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBUdnJ0a28gVXJzdWxpbiAoMjAxOS0wMS0yMiAxMDo0NzoxMSkKPiAKPiBPbiAyMS8w MS8yMDE5IDIyOjIxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiBJZiB3ZSByZXN0cmljdCBvdXJz ZWx2ZXMgdG8gb25seSB1c2luZyBhIGNhY2hlbGluZSBmb3IgZWFjaCB0aW1lbGluZSdzCj4gPiBI V1NQICh3ZSBjb3VsZCBnbyBzbWFsbGVyLCBidXQgd2FudCB0byBhdm9pZCBuZWVkbGVzcyBwb2xs dXRpbmcKPiA+IGNhY2hlbGluZXMgb24gZGlmZmVyZW50IGVuZ2luZXMgYmV0d2VlbiBkaWZmZXJl bnQgY29udGV4dHMpLCB0aGVuIHdlIGNhbgo+ID4gc3ViYWxsb2NhdGUgYSBzaW5nbGUgNGsgcGFn ZSBpbnRvIDY0IGRpZmZlcmVudCB0aW1lbGluZSBIV1NQLiBCeQo+ID4gdHJlYXRpbmcgZWFjaCBm cmVzaCBhbGxvY2F0aW9uIGFzIGEgc2xhYiBvZiA2NCBlbnRyaWVzLCB3ZSBjYW4ga2VlcCBpdAo+ ID4gYXJvdW5kIGZvciB0aGUgbmV4dCA2NCBhbGxvY2F0aW9uIGF0dGVtcHRzIHVudGlsIHdlIG5l ZWQgdG8gcmVmcmVzaCB0aGUKPiA+IHNsYWIgY2FjaGUuCj4gPiAKPiA+IEpvaG4gSGFycmlzb24g bm90ZWQgdGhlIGlzc3VlIG9mIGZyYWdtZW50YXRpb24gbGVhZGluZyB0byB0aGUgc2FtZSB3b3Jz dAo+ID4gY2FzZSBwZXJmb3JtYW5jZSBvZiBvbmUgcGFnZSBwZXIgdGltZWxpbmUgYXMgYmVmb3Jl LCB3aGljaCBjYW4gYmUKPiA+IG1pdGlnYXRlZCBieSBhZG9wdGluZyBhIGZyZWVsaXN0Lgo+ID4g Cj4gPiB2MjogS2VlcCBhbGwgcGFydGlhbGx5IGFsbG9jYXRlZCBIV1NQIG9uIGEgZnJlZWxpc3QK PiA+IAo+ID4gVGhpcyBpcyBzdGlsbCB3aXRob3V0IG1pZ3JhdGlvbiwgc28gaXQgaXMgcG9zc2li bGUgZm9yIHRoZSBzeXN0ZW0gdG8gZW5kCj4gPiB1cCB3aXRoIGVhY2ggdGltZWxpbmUgaW4gaXRz IG93biBwYWdlLCBidXQgd2UgZW5zdXJlIHRoYXQgbm8gbmV3Cj4gPiBhbGxvY2F0aW9uIHdvdWxk IG5lZWRsZXNzIGFsbG9jYXRlIGEgZnJlc2ggcGFnZSEKPiA+IAo+ID4gdjM6IFRocm93IGEgc2Vs ZnRlc3QgYXQgdGhlIGFsbG9jYXRvciB0byB0cnkgYW5kIGNhdGNoIGludmFsaWQgY2FjaGVsaW5l Cj4gPiByZXVzZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gPiBDYzogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29u QEludGVsLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgICAgICAgfCAgIDQgKwo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Rp bWVsaW5lLmMgICAgICAgICAgfCAxMTcgKysrKysrKysrKysrLS0tCj4gPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaCAgICAgICAgICB8ICAgMSArCj4gPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAgICAgICB8ICAxMiArKwo+ID4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yYW5kb20uYyAgfCAgMzMgKysrKy0KPiA+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmFuZG9tLmggIHwgICAzICsK PiA+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jICAgIHwgMTQw ICsrKysrKysrKysrKysrKysrKwo+ID4gICA3IGZpbGVzIGNoYW5nZWQsIDI4MiBpbnNlcnRpb25z KCspLCAyOCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBp bmRleCAzNjQwNjdmODExZjcuLmMwMGVhZjI4ODlmYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiA+IEBAIC0xOTc4LDYgKzE5NzgsMTAgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgewo+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgewo+ID4gICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtdXRleCBtdXRleDsgLyogcHJvdGVjdHMgbGlzdCwg dGFpbnRlZCBieSBHUFUgKi8KPiA+ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAgLyogUGFjayBtdWx0aXBs ZSB0aW1lbGluZXMnIHNlcW5vcyBpbnRvIHRoZSBzYW1lIHBhZ2UgKi8KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBzcGlubG9ja190IGh3c3BfbG9jazsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIGh3c3BfZnJlZV9saXN0Owo+ID4gICAgICAgICAgICAgICB9IHRp bWVsaW5lczsKPiA+ICAgCj4gPiAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZl X3JpbmdzOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxp bmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYwo+ID4gaW5kZXggOGQ1 NzkyMzExYThmLi42OWVlMzNkZmEzNDAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3RpbWVsaW5lLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dGltZWxpbmUuYwo+ID4gQEAgLTksNiArOSwxMiBAQAo+ID4gICAjaW5jbHVkZSAiaTkxNV90aW1l bGluZS5oIgo+ID4gICAjaW5jbHVkZSAiaTkxNV9zeW5jbWFwLmgiCj4gPiAgIAo+ID4gK3N0cnVj dCBpOTE1X3RpbWVsaW5lX2h3c3Agewo+ID4gKyAgICAgc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4g PiArICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfbGluazsKPiA+ICsgICAgIHU2NCBmcmVlX2Jp dG1hcDsKPiA+ICt9Owo+ID4gKwo+ID4gICBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpfX2h3c3Bf YWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gPiAgIHsKPiA+ICAgICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiBAQCAtMjcsMjggKzMzLDkyIEBAIHN0 YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiA+ICAgICAgIHJldHVybiB2bWE7Cj4gPiAgIH0KPiA+ICAgCj4gPiAtc3RhdGlj IGludCBod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiA+ICtzdGF0 aWMgc3RydWN0IGk5MTVfdm1hICoKPiA+ICtod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0aW1lbGluZSwgaW50ICpvZmZzZXQpCj4gPiAgIHsKPiA+IC0gICAgIHN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+ID4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0aW1lbGlu ZS0+aTkxNTsKPiA+ICsgICAgIHN0cnVjdCBpOTE1X2d0X3RpbWVsaW5lcyAqZ3QgPSAmaTkxNS0+ Z3QudGltZWxpbmVzOwo+ID4gKyAgICAgc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdzcDsK PiA+ICsgICAgIGludCBjYWNoZWxpbmU7Cj4gPiAgIAo+ID4gLSAgICAgdm1hID0gX19od3NwX2Fs bG9jKHRpbWVsaW5lLT5pOTE1KTsKPiA+IC0gICAgIGlmIChJU19FUlIodm1hKSkKPiA+IC0gICAg ICAgICAgICAgcmV0dXJuIFBUUl9FUlIodm1hKTsKPiA+ICsgICAgIEJVSUxEX0JVR19PTihCSVRT X1BFUl9UWVBFKHU2NCkgKiBDQUNIRUxJTkVfQllURVMgPiBQQUdFX1NJWkUpOwo+ID4gICAKPiA+ IC0gICAgIHRpbWVsaW5lLT5od3NwX2dndHQgPSB2bWE7Cj4gPiAtICAgICB0aW1lbGluZS0+aHdz cF9vZmZzZXQgPSAwOwo+ID4gKyAgICAgc3Bpbl9sb2NrKCZndC0+aHdzcF9sb2NrKTsKPiA+ICAg Cj4gPiAtICAgICByZXR1cm4gMDsKPiA+ICsgICAgIC8qIGh3c3BfZnJlZV9saXN0IG9ubHkgY29u dGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZhaWxhYmxlIGNhY2hlbGluZXMgKi8KPiA+ICsgICAgIGh3 c3AgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmd0LT5od3NwX2ZyZWVfbGlzdCwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKCpod3NwKSwgZnJlZV9s aW5rKTsKPiA+ICsgICAgIGlmICghaHdzcCkgewo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgc3Bpbl91bmxvY2soJmd0LT5od3Nw X2xvY2spOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBod3NwID0ga21hbGxvYyhzaXplb2YoKmh3 c3ApLCBHRlBfS0VSTkVMKTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFod3NwKQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4gKwo+ID4gKyAgICAg ICAgICAgICB2bWEgPSBfX2h3c3BfYWxsb2MoaTkxNSk7Cj4gPiArICAgICAgICAgICAgIGlmIChJ U19FUlIodm1hKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGtmcmVlKGh3c3ApOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2bWE7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ ICsKPiA+ICsgICAgICAgICAgICAgdm1hLT5wcml2YXRlID0gaHdzcDsKPiA+ICsgICAgICAgICAg ICAgaHdzcC0+dm1hID0gdm1hOwo+ID4gKyAgICAgICAgICAgICBod3NwLT5mcmVlX2JpdG1hcCA9 IH4wdWxsOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBzcGluX2xvY2soJmd0LT5od3NwX2xvY2sp Owo+ID4gKyAgICAgICAgICAgICBsaXN0X2FkZCgmaHdzcC0+ZnJlZV9saW5rLCAmZ3QtPmh3c3Bf ZnJlZV9saXN0KTsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIEdFTV9CVUdfT04oIWh3c3At PmZyZWVfYml0bWFwKTsKPiA+ICsgICAgIGNhY2hlbGluZSA9IF9fZmZzNjQoaHdzcC0+ZnJlZV9i aXRtYXApOwo+ID4gKyAgICAgaHdzcC0+ZnJlZV9iaXRtYXAgJj0gfkJJVF9VTEwoY2FjaGVsaW5l KTsKPiA+ICsgICAgIGlmICghaHdzcC0+ZnJlZV9iaXRtYXApCj4gPiArICAgICAgICAgICAgIGxp c3RfZGVsKCZod3NwLT5mcmVlX2xpbmspOwo+ID4gKwo+ID4gKyAgICAgc3Bpbl91bmxvY2soJmd0 LT5od3NwX2xvY2spOwo+ID4gKwo+ID4gKyAgICAgR0VNX0JVR19PTihod3NwLT52bWEtPnByaXZh dGUgIT0gaHdzcCk7Cj4gPiArCj4gPiArICAgICAqb2Zmc2V0ID0gY2FjaGVsaW5lICogQ0FDSEVM SU5FX0JZVEVTOwo+ID4gKyAgICAgcmV0dXJuIGh3c3AtPnZtYTsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHZvaWQgaHdzcF9mcmVlKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiA+ ICt7Cj4gPiArICAgICBzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0ID0gJnRpbWVsaW5lLT5p OTE1LT5ndC50aW1lbGluZXM7Cj4gPiArICAgICBzdHJ1Y3QgaTkxNV90aW1lbGluZV9od3NwICpo d3NwOwo+ID4gKwo+ID4gKyAgICAgaHdzcCA9IGk5MTVfdGltZWxpbmVfaHdzcCh0aW1lbGluZSk7 Cj4gPiArICAgICBpZiAoIWh3c3ApIC8qIGxlYXZlIGdsb2JhbCBIV1NQIGFsb25lISAqLwo+IAo+ IExhdGVyIHlvdSBhZGQgaTkxNV90aW1lbGluZV9pc19nbG9iYWwgc28gY291bGQgdXNlIGl0IGhl cmUuCgpEaWZmZXJlbmNlIGlzIHRoYXQgd2Ugd2FudCB0aGUgaHdzcCBmb3IgdXNlIGluIHRoaXMg ZnVuY3Rpb24/CgppZiAoaTkxNV90aW1lbGluZV9pc19nbG9iYWwodGltZWxpbmUpKQoJcmV0dXJu OwoKaHdzcCA9IGk5MTVfdGltZWxpbmVfaHdzcCh0aW1lbGluZSk7CgpJIHN1cHBvc2UgaGFzIHRo ZSBmZWVsaW5nIG9mIGJlaW5nIG1vcmUgZGVzY3JpcHRpdmUgYW5kIHRoZSBjb21waWxlcgpzaG91 bGQgYmUgc21hcnQgZW5vdWdoIHRvIGR0cnQuCj4gCj4gPiArICAgICAgICAgICAgIHJldHVybjsK PiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7Cj4gPiArCj4gPiArICAg ICAvKiBBcyBhIGNhY2hlbGluZSBiZWNvbWVzIGF2YWlsYWJsZSwgcHVibGlzaCB0aGUgSFdTUCBv biB0aGUgZnJlZWxpc3QgKi8KPiAKPiBUaGFuayB5b3UhIDopCj4gCj4gPiArICAgICBpZiAoIWh3 c3AtPmZyZWVfYml0bWFwKQo+ID4gKyAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZod3NwLT5m cmVlX2xpbmssICZndC0+aHdzcF9mcmVlX2xpc3QpOwo+ID4gKwo+ID4gKyAgICAgaHdzcC0+ZnJl ZV9iaXRtYXAgfD0gQklUX1VMTCh0aW1lbGluZS0+aHdzcF9vZmZzZXQgLyBDQUNIRUxJTkVfQllU RVMpOwo+ID4gKwo+ID4gKyAgICAgLyogQW5kIGlmIG5vIG9uZSBpcyBsZWZ0IHVzaW5nIGl0LCBn aXZlIHRoZSBwYWdlIGJhY2sgdG8gdGhlIHN5c3RlbSAqLwo+ID4gKyAgICAgaWYgKGh3c3AtPmZy ZWVfYml0bWFwID09IH4wdWxsKSB7Cj4gPiArICAgICAgICAgICAgIGk5MTVfdm1hX3B1dChod3Nw LT52bWEpOwo+ID4gKyAgICAgICAgICAgICBsaXN0X2RlbCgmaHdzcC0+ZnJlZV9saW5rKTsKPiA+ ICsgICAgICAgICAgICAga2ZyZWUoaHdzcCk7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBz cGluX3VubG9jaygmZ3QtPmh3c3BfbG9jayk7Cj4gPiAgIH0KPiA+ICAgCj4gPiAgIGludCBpOTE1 X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gPiAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsCj4gPiAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAo+ID4gLSAgICAgICAgICAgICAgICAgICAg c3RydWN0IGk5MTVfdm1hICpnbG9iYWxfaHdzcCkKPiA+ICsgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpOTE1X3ZtYSAqaHdzcCkKPiA+ICAgewo+ID4gICAgICAgc3RydWN0IGk5MTVfZ3RfdGlt ZWxpbmVzICpndCA9ICZpOTE1LT5ndC50aW1lbGluZXM7Cj4gPiAgICAgICB2b2lkICp2YWRkcjsK PiA+IC0gICAgIGludCBlcnI7Cj4gPiAgIAo+ID4gICAgICAgLyoKPiA+ICAgICAgICAqIElkZWFs bHkgd2Ugd2FudCBhIHNldCBvZiBlbmdpbmVzIG9uIGEgc2luZ2xlIGxlYWYgYXMgd2UgZXhwZWN0 Cj4gPiBAQCAtNjQsMTggKzEzNCwxOCBAQCBpbnQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAo+ID4gICAgICAgdGltZWxpbmUtPm5hbWUgPSBuYW1lOwo+ ID4gICAgICAgdGltZWxpbmUtPnBpbl9jb3VudCA9IDA7Cj4gPiAgIAo+ID4gLSAgICAgaWYgKGds b2JhbF9od3NwKSB7Cj4gPiAtICAgICAgICAgICAgIHRpbWVsaW5lLT5od3NwX2dndHQgPSBpOTE1 X3ZtYV9nZXQoZ2xvYmFsX2h3c3ApOwo+ID4gLSAgICAgICAgICAgICB0aW1lbGluZS0+aHdzcF9v ZmZzZXQgPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUjsKPiA+IC0gICAgIH0gZWxzZSB7Cj4gPiAt ICAgICAgICAgICAgIGVyciA9IGh3c3BfYWxsb2ModGltZWxpbmUpOwo+ID4gLSAgICAgICAgICAg ICBpZiAoZXJyKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPiArICAg ICB0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUjsKPiAKPiBD b3VsZCBiZSBjbGVhcmVyIHRvIHB1dCB0aGlzIG9uIHRoZSBlbHNlIGJyYW5jaC4KCkhleSEgSSBy ZXdyb3RlIHRoaXMgYmVjYXVzZSBJIHRob3VnaHQgaXQgd2FzIHRpZGllciB3aXRob3V0IHRoZSBl bHNlIGFuZApyZXBlYXRlZCBpOTE1X3ZtYV9nZXQoKSA6KQoKPiA+IC12b2lkIGk5MTVfcmFuZG9t X3Jlb3JkZXIodW5zaWduZWQgaW50ICpvcmRlciwgdW5zaWduZWQgaW50IGNvdW50LAo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0ZSkKPiA+ICt2b2lkIGk5 MTVfcHJhbmRvbV9zaHVmZmxlKHZvaWQgKmFyciwgc2l6ZV90IGVsc3osIHNpemVfdCBjb3VudCwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBybmRfc3RhdGUgKnN0YXRlKQo+ID4g ICB7Cj4gPiAtICAgICB1bnNpZ25lZCBpbnQgaSwgajsKPiA+ICsgICAgIGNoYXIgc3RhY2tbMTI4 XTsKPiA+ICsKPiA+ICsgICAgIGlmIChXQVJOX09OKGVsc3ogPiBzaXplb2Yoc3RhY2spIHx8IGNv dW50ID4gVTMyX01BWCkpCj4gCj4gSSB3b25kZXIgaWYgdGhlIGVsc3ogPiBzaXplb2Yoc3RhY2sp IHdvdWxkIHdvcmsgYXMgYSBCVUlMRF9CVUdfT04gaWYgCj4gZWxzeiB3YXMgbWFya2VkIGFzIGNv bnN0LiBTZWVtcyB0byBiZSBjb25zdCBhdCBib3RoIGNhbGwgc2l0ZXMuCgpCVUlMRF9CVUdfT04g aXMgY3BwLWlzaCwgc28gaXQgbmVlZHMgdG8gcHJvdmFibHkgY29uc3RhbnQsIHNvIGluIHRoZSBz YW1lCnRyYW5zbGF0aW9uIHVuaXQuCgo+IFN0ZXAgZnVydGhlciBzaXppbmcgdGhlIHN0YWNrIGJ5 IGl0LCBidXQuLiB0aGF0J3Mgc29tZSBHQ0MgZXh0ZW5zaW9uIHdlIAo+IHNob3VsZCBub3QgdXNl IHJpZ2h0PwoKUmlnaHQuIE5vIGNoYXIgc3RhY2tbZWxzel0gZm9yIHVzLiBBbHRlcm5hdGl2ZWx5 IGlzIHRvIG1ha2UgdGhpcyBpbnRvIGEKbWFjcm8tYnVpbGRlciBhbmQgaGF2ZSBhIGN1c3RvbSBz aHVmZmxlIGZvciBldmVyeSB0eXBlLiBGb3Igc2VsZnRlc3RpbmcsCmp1c3Qgbm90IHdvcnRoIGl0 LiAoVW50aWwgd2UgaGF2ZSBhbiBleGFtcGxlIHdlcmUgd2UgYXJlIHNldmVyZWx5CmxpbWl0ZWQg aW4gb3VyIHRlc3RpbmcgYnkgaG93IGxvbmcgaXQgdGFrZXMgdG8gc2h1ZmZsZSBudW1iZXJzLi4u IEJ1dCB3ZQpjYW4gcHJvYmFibHkganVzdCBjaGFuZ2UgYW55IHRlc3QgdG8gc2h1ZmZsZSBsZXNz LikKCj4gPiArc3RhdGljIGludCBfX21vY2tfaHdzcF90aW1lbGluZShzdHJ1Y3QgbW9ja19od3Nw X2ZyZWVsaXN0ICpzdGF0ZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBjb3VudCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBmbGFncykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGw7Cj4g PiArICAgICB1bnNpZ25lZCBpbnQgaWR4Owo+ID4gKwo+ID4gKyAgICAgd2hpbGUgKGNvdW50LS0p IHsKPiA+ICsgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjYWNoZWxpbmU7Cj4gPiArICAgICAg ICAgICAgIGludCBlcnI7Cj4gPiArCj4gPiArICAgICAgICAgICAgIHRsID0gaTkxNV90aW1lbGlu ZV9jcmVhdGUoc3RhdGUtPmk5MTUsICJtb2NrIiwgTlVMTCk7Cj4gPiArICAgICAgICAgICAgIGlm IChJU19FUlIodGwpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHRs KTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgY2FjaGVsaW5lID0gaHdzcF9jYWNoZWxpbmUodGwp Owo+ID4gKyAgICAgICAgICAgICBlcnIgPSByYWRpeF90cmVlX2luc2VydCgmc3RhdGUtPmNhY2hl bGluZXMsIGNhY2hlbGluZSwgdGwpOwo+ID4gKyAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA9PSAtRUVYSVNUKSB7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcl9lcnIoIkhXU1AgY2FjaGVsaW5lICVsdSBhbHJlYWR5IHVz ZWQ7IGR1cGxpY2F0ZSBhbGxvY2F0aW9uIVxuIiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYWNoZWxpbmUpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIH0KPiAK PiBSYWRpeCB0cmVlIGlzIGp1c3QgdG8gbG9va3VwIHBvdGVudGlhbCBvZmZzZXQgZHVwbGljYXRl cz8gSSBtZWFuLCB0byAKPiBhdm9pZCBkb2luZyBhIGxpbmVhciBzZWFyY2ggb24gdGhlIGhpc3Rv cnkgYXJyYXk/IElmIHNvIGlzIGl0IHdvcnRoIGl0IAo+IHNpbmNlIHRoZXJlIGFyZW4ndCB0aGF0 IG1hbnkgdGltZWxpbmVzIHVzZWQgaW4gdGVzdD8gQ291bGQgYmUgc2luY2UgCj4gYmVsb3cgSSBm aWd1cmVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lbGluZXMgdGVzdCB3aWxsIHVzZS4uLgoK UmFkaXggdHJlZSBiZWNhdXNlIHRoYXQncyB3aGVyZSBJIHN0YXJ0ZWQgd2l0aCB0aGUgdGVzdDog SSB3YW50IHRvCmRldGVjdCBkdXBsaWNhdGUgY2FjaGVsaW5lcy4KCj4gPiArICAgICAgICAgICAg ICAgICAgICAgaTkxNV90aW1lbGluZV9wdXQodGwpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg IHJldHVybiBlcnI7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAg aWR4ID0gc3RhdGUtPmNvdW50KysgJSBzdGF0ZS0+bWF4Owo+ID4gKyAgICAgICAgICAgICBfX21v Y2tfaHdzcF9yZWNvcmQoc3RhdGUsIGlkeCwgdGwpOwo+IAo+IFRoaXMgZG9lc24ndCBoaXQgInJl Y3ljbGluZyIgb2Ygc2xvdHMgcmlnaHQ/IE1heCBjb3VudCBpcyAyICogCj4gQ0FDSEVMSU5FU19Q RVJfUEFHRSA9IDEyOCB3aGlsZSBzdGF0ZS0+bWF4IGlzIDUxMi4KClRoZSBoaXN0b3J5IGlzIGtl cHQgb3ZlciB0aGUgZGlmZmVyZW50IHBoYXNlcy4gV2UgYWRkIGEgYmxvY2ssIHJlbW92ZSBhCnNt YWxsZXIgYmxvY2s7IHJlcGVhdC4gTXkgdGhpbmtpbmcgd2FzIHRoYXQgd291bGQgY3JlYXRlIGEg bW9yZQppbnRlcmVzdGluZyBmcmVlbGlzdCBwYXR0ZXJuLgoKPiA+ICsgICAgIH0KPiA+ICsKPiA+ ICsgICAgIGlmIChmbGFncyAmIFNIVUZGTEUpCj4gPiArICAgICAgICAgICAgIGk5MTVfcHJhbmRv bV9zaHVmZmxlKHN0YXRlLT5oaXN0b3J5LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoKnN0YXRlLT5oaXN0b3J5KSwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWluKHN0YXRlLT5jb3VudCwgc3RhdGUtPm1heCksCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0ZS0+cHJuZyk7Cj4gPiArCj4gPiArICAg ICBjb3VudCA9IGk5MTVfcHJhbmRvbV91MzJfbWF4X3N0YXRlKG1pbihzdGF0ZS0+Y291bnQsIHN0 YXRlLT5tYXgpLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm c3RhdGUtPnBybmcpOwo+ID4gKyAgICAgd2hpbGUgKGNvdW50LS0pIHsKPiA+ICsgICAgICAgICAg ICAgaWR4ID0gLS1zdGF0ZS0+Y291bnQgJSBzdGF0ZS0+bWF4Owo+ID4gKyAgICAgICAgICAgICBf X21vY2tfaHdzcF9yZWNvcmQoc3RhdGUsIGlkeCwgTlVMTCk7Cj4gPiArICAgICB9Cj4gCj4gVGhl cmUgaXMgbm8gYWxsb2NhdGlvbnMgYWZ0ZXIgc2h1ZmZsaW5nLCBzbyB0aGUgY29kZSBwYXRoIG9m IGFsbG9jYXRpbmcgCj4gZnJvbSBod3NwIGZyZWUgbGlzdCB3aWxsIG5vdCBiZSBleGVyY2lzZWQg SSB0aGluay4KCldlIGtlZXAgaGlzdG9yeSBmcm9tIG9uZSBpdGVyYXRpb24gdG8gdGhlIG5leHQu IEkgdGhpbmsgaWYgd2UgYWRkZWQgYSBsb29wCmhlcmUgKF9fX19tb2NrX2h3c3BfdGltZWxpbmUh KSB5b3Ugd291bGQgYmUgaGFwcGllciBvdmVyYWxsLgoKPiA+ICsgICAgIHJldHVybiAwOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IG1vY2tfaHdzcF9mcmVlbGlzdCh2b2lkICphcmcpCj4g PiArewo+ID4gKyAgICAgc3RydWN0IG1vY2tfaHdzcF9mcmVlbGlzdCBzdGF0ZTsKPiA+ICsgICAg IGNvbnN0IHN0cnVjdCB7Cj4gPiArICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gPiAr ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKPiA+ICsgICAgIH0gcGhhc2VzW10gPSB7 Cj4gPiArICAgICAgICAgICAgIHsgImxpbmVhciIsIDAgfSwKPiA+ICsgICAgICAgICAgICAgeyAi c2h1ZmZsZWQiLCBTSFVGRkxFIH0sCj4gPiArICAgICAgICAgICAgIHsgfSwKPiA+ICsgICAgIH0s ICpwOwo+ID4gKyAgICAgdW5zaWduZWQgaW50IG5hOwo+ID4gKyAgICAgaW50IGVyciA9IDA7Cj4g PiArCj4gPiArICAgICBJTklUX1JBRElYX1RSRUUoJnN0YXRlLmNhY2hlbGluZXMsIEdGUF9LRVJO RUwpOwo+ID4gKyAgICAgc3RhdGUucHJuZyA9IEk5MTVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKGk5 MTVfc2VsZnRlc3QucmFuZG9tX3NlZWQpOwo+ID4gKwo+ID4gKyAgICAgc3RhdGUuaTkxNSA9IG1v Y2tfZ2VtX2RldmljZSgpOwo+ID4gKyAgICAgaWYgKCFzdGF0ZS5pOTE1KQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBDcmVh dGUgYSBidW5jaCBvZiB0aW1lbGluZXMgYW5kIGNoZWNrIHRoYXQgdGhlaXIgSFdTUCBkbyBub3Qg b3ZlcmxhcC4KPiA+ICsgICAgICAqIEZyZWUgc29tZSwgYW5kIHRyeSBhZ2Fpbi4KPiA+ICsgICAg ICAqLwo+ID4gKwo+ID4gKyAgICAgc3RhdGUubWF4ID0gUEFHRV9TSVpFIC8gc2l6ZW9mKCpzdGF0 ZS5oaXN0b3J5KTsKPiAKPiBTbyBtYXhpbXVtIGxpdmUgbnVtYmVyIG9mIHRpbWVsaW5lcyBpcyA1 MTIgb24gNjQtYml0IHdoaWNoIHNob3VsZCAKPiB0cmFuc2xhdGUgdG8gOCBtYXggcGFnZXMgb2Yg aHdzcCBiYWNraW5nIHN0b3JlLgoKRG8geW91IGZlZWwgbGlrZSB3ZSBuZWVkIG1vcmUgb3IgbGVz cz8gSSB0aGluayB0aGF0J3MgYSByZWFzb25hYmxlCm51bWJlciwgaXQgbWVhbnMgd2Ugc2hvdWxk IGhhdmUgc29tZSBwYWdlcyBldmVudHVhbGx5IG9uIHRoZSBmcmVlbGlzdC4KQW5kIG5vdCBzbyBt YW55IHRoYXQgcmV1c2UgaXMgc3BvcmFkaWMgKGFsdGhvdWdoIHRoZSBhbGxvY2F0b3IgaXMgZ2Vh cmVkCnRvd2FyZHMga2VlcGluZyB0aGUgc2FtZSBwYWdlIGZvciByZXVzZSB1bnRpbCBmdWxsKS4K LUNocmlzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=