From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) by gabe.freedesktop.org (Postfix) with ESMTPS id A25636E83F for ; Wed, 17 Mar 2021 18:03:06 +0000 (UTC) Received: by mail-ed1-x536.google.com with SMTP id b16so3403897eds.7 for ; Wed, 17 Mar 2021 11:03:06 -0700 (PDT) MIME-Version: 1.0 References: <20210317144610.108372-1-zbigniew.kempczynski@intel.com> <20210317144610.108372-3-zbigniew.kempczynski@intel.com> <20210317174343.GB120205@zkempczy-mobl2> In-Reply-To: <20210317174343.GB120205@zkempczy-mobl2> From: Jason Ekstrand Date: Wed, 17 Mar 2021 13:02:53 -0500 Message-ID: Subject: Re: [igt-dev] [PATCH i-g-t v26 02/35] lib/igt_list: igt_hlist implementation. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: =?UTF-8?Q?Zbigniew_Kempczy=C5=84ski?= Cc: IGT GPU Tools List-ID: T24gV2VkLCBNYXIgMTcsIDIwMjEgYXQgMTI6NDMgUE0gWmJpZ25pZXcgS2VtcGN6ecWEc2tpCjx6 Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+IHdyb3RlOgo+Cj4gT24gV2VkLCBNYXIgMTcs IDIwMjEgYXQgMTE6NDM6MzhBTSAtMDUwMCwgSmFzb24gRWtzdHJhbmQgd3JvdGU6Cj4gPiBXb3Vs ZCBpdCBiZSBiZXR0ZXIgdG8gcHVsbCB0aGUgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiBmcm9t IE1lc2E/Cj4gPiBPciB1c2UgaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9+YW5ob2x0L2hh c2hfdGFibGUvIHdoaWNoIHNob3VsZAo+ID4gYmUgaWRlbnRpY2FsLCB0aG91Z2ggaXQgbWF5IGJl IGEgYml0IG91dC1vZi1kYXRlLiAgSSd2ZSBwb3VyZWQgZW5vdWdoCj4gPiBob3VycyBvZiBteSBs aWZlIGludG8gZmluZGluZyBhbmQgZml4aW5nIHRoZSBidWdzIGluIHRoZSBNZXNhIGhhc2gKPiA+ IHRhYmxlIHRoYXQgSUdUIHJvbGxpbmcgaXRzIG93biBkb2Vzbid0IHJlYWxseSBmaWxsIG1lIHdp dGggaGFwcHkKPiA+IGZlZWxpbmdzLgo+ID4KPiA+IC0tSmFzb24KPgo+IEknbSBub3QgZ29pbmcg dG8gYmUgYSBkZXZpbCBhZHZvY2F0ZSwgSSdsbCBqdXN0IGFzayBEb21pbmlrIGhvdwo+IGNvbmZp ZGVudCBpcyBoZSBhYm91dCB0aGF0IGltcGxlbWVudGF0aW9uLCBhdCBsZWFzdCB3ZSBjYW4gcHJv dmlkZQo+IHNvbWUgc3RyZXNzIHRlc3Qgd2l0aCBtdWx0aXRocmVhZGluZyBzY2VuYXJpb3MuCj4K PiBIZSdzIHBvcnRlZCBrZXJuZWwgaGFzaHRhYmxlIHNvIGlmIGhlIGRpZG4ndCBpbnRyb2R1Y2Ug YSBub24gb2J2aW91cwo+IGJ1ZyBpdCBzaG91bGQgd29yay4KCklmIHRoaXMgaXMsIGluZGVlZCwg YSBwb3J0IG9mIHRoZSBrZXJuZWwgaGFzaCB0YWJsZSwgdGhlbiBpdCdzCnByb2JhYmx5IG9rLiAg Tm90IHN1cmUgaG93IHRoYXQgd29ya3Mgb3V0IG9uIGxpY2Vuc2VzLCBidXQgaXQgc2hvdWxkCmJl IGNvcnJlY3QuICBJZiB0aGlzIGhhcyBiZWVuIGZyZXNobHkgaGFuZC1yb2xsZWQgZXhwcmVzc2x5 IGZvciB0aGlzCnB1cnBvc2UsIHRoZW4gaXQgbWFrZXMgbWUgbmVydm91cy4KCj4gUmVnYXJkaW5n IEVyaWMgaW1wbGVtZW50YXRpb24gLSB3ZSBuZWVkIHRvIGFkb3B0IHRoYXQgaW1wbGVtZW50YXRp b24KPiB0byBhdCBsZWFzdCByZW5hbWUgdG8gaWd0XyogYW5kIGZpeCB0aGUgY29kZSB3aGljaCBp cyB1c2luZy4KPiBTaG91bGQgdGFrZSBmZXcgZGF5cyBtYXguCj4KPiBJZiB5b3UnbGwgdGFrZSBh IGxvb2sgdG8gdGVzdHMgYXBpX2ludGVsX2FsbG9jYXRvckB0d28tbGV2ZWwtaW5jZXB0aW9uCj4g eW91J2xsIHNlZSB3ZSdyZSBzdHJlc3MgdGVzdGluZyB0aGF0IGhhc2h0YWJsZSBtdWNoIGZyb20g bWFueQo+IHByb2Nlc3NlcyAvIHRocmVhZHMgYW5kIHdlIHNlZSBubyBwcm9ibGVtIHdpdGggbG9z aW5nIGRhdGEgY29oZXJlbmN5Cj4gaW4gdGhlIG1hcC4KCkknbSBsZXNzIHdvcnJpZWQgYWJvdXQg dGhyZWFkcywgc28gbG9uZyBhcyBpdCdzIGxvY2tlZCwgYXMgSSBhbSBhYm91dAp3ZWlyZCBpbnNl cnQvcmVtb3ZlIHBhdHRlcm5zLiAgTW9zdCBvZiB0aGUgYnVncyBJJ3ZlIGhhZCB0byBmaXggaW4K bWVzYSB3ZXJlIGJlY2F1c2UgY2VydGFpbiBwYXR0ZXJucyBvZiBpbnNlcnQvcmVtb3ZlIHdpdGgg dGhlIHJpZ2h0Cmhhc2hlcyB3b3VsZCBjYXVzZSBpdCB0byBibG93IHVwLiAgSWYgbW9zdCBvZiB3 aGF0IHlvdSBkbyBpcyBqdXN0IGFkZAphIGJ1bmNoIG9mIHN0dWZmIHdpdGhvdXQgYSBsb3Qgb2Yg cmVtb3ZhbCwgdGhleSBjYW4gYmUgdW5saWtlbHkgYW5kCmhhcmQgdG8gZmluZC4gIFRoYXQgc2Fp ZCwgZ2l2ZW4gdGhhdCBpdCdzIGxpbmtlZCBsaXN0IGJhc2VkIGFuZCBub3QKcmUtaGFzaCBiYXNl ZCwgYSBsb3Qgb2YgdGhvc2UgY29ybmVyIGNhc2VzIGFyZSBsZXNzIGxpa2VseSB0aGFuIHRoZXkK d2VyZSB3aXRoIHRoZSBNZXNhIGltcGxlbWVudGF0aW9uLiAgQWdhaW4sIG15IHByaW1hcnkgY29u Y2VybiBpcyB3aXRoCmEgTkVXIGhhc2ggdGFibGUgaW1wbC4gOi0pCgotLUphc29uCgo+IC0tCj4g WmJpZ25pZXcKPiA+Cj4gPiBPbiBXZWQsIE1hciAxNywgMjAyMSBhdCA5OjQ2IEFNIFpiaWduaWV3 IEtlbXBjennFhHNraQo+ID4gPHpiaWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4gd3JvdGU6 Cj4gPiA+Cj4gPiA+IEZyb206IERvbWluaWsgR3J6ZWdvcnplayA8ZG9taW5pay5ncnplZ29yemVr QGludGVsLmNvbT4KPiA+ID4KPiA+ID4gRG91YmxlIGxpbmtlZCBsaXN0cyB3aXRoIGEgc2luZ2xl IHBvaW50ZXIgbGlzdCBoZWFkIGltcGxlbWVudGF0aW9uLAo+ID4gPiBiYXNlZCBvbiBzaW1pbGFy IGluIHRoZSBrZXJuZWwuCj4gPiA+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IERvbWluaWsgR3J6ZWdv cnplayA8ZG9taW5pay5ncnplZ29yemVrQGludGVsLmNvbT4KPiA+ID4gQ2M6IFpiaWduaWV3IEtl bXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgo+ID4gPiBDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gPiA+IEFja2VkLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiAtLS0KPiA+ID4gIGxpYi9p Z3RfbGlzdC5jIHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiA+ID4gIGxpYi9pZ3RfbGlzdC5oIHwgNTAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2xpc3QuYyBi L2xpYi9pZ3RfbGlzdC5jCj4gPiA+IGluZGV4IDM3YWUxMzljNC4uNDMyMDBmOWIzIDEwMDY0NAo+ ID4gPiAtLS0gYS9saWIvaWd0X2xpc3QuYwo+ID4gPiArKysgYi9saWIvaWd0X2xpc3QuYwo+ID4g PiBAQCAtMjIsNiArMjIsNyBAQAo+ID4gPiAgICoKPiA+ID4gICAqLwo+ID4gPgo+ID4gPiArI2lu Y2x1ZGUgImFzc2VydC5oIgo+ID4gPiAgI2luY2x1ZGUgImlndF9saXN0LmgiCj4gPiA+Cj4gPiA+ ICB2b2lkIElHVF9JTklUX0xJU1RfSEVBRChzdHJ1Y3QgaWd0X2xpc3RfaGVhZCAqbGlzdCkKPiA+ ID4gQEAgLTgxLDMgKzgyLDc0IEBAIGJvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGln dF9saXN0X2hlYWQgKmhlYWQpCj4gPiA+ICB7Cj4gPiA+ICAgICAgICAgcmV0dXJuIGhlYWQtPm5l eHQgPT0gaGVhZDsKPiA+ID4gIH0KPiA+ID4gKwo+ID4gPiArdm9pZCBpZ3RfaGxpc3RfaW5pdChz dHJ1Y3QgaWd0X2hsaXN0X25vZGUgKmgpCj4gPiA+ICt7Cj4gPiA+ICsgICAgICAgaC0+bmV4dCA9 IE5VTEw7Cj4gPiA+ICsgICAgICAgaC0+cHByZXYgPSBOVUxMOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtpbnQgaWd0X2hsaXN0X3VuaGFzaGVkKGNvbnN0IHN0cnVjdCBpZ3RfaGxpc3Rfbm9kZSAq aCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgICByZXR1cm4gIWgtPnBwcmV2Owo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtpbnQgaWd0X2hsaXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBpZ3RfaGxpc3RfaGVh ZCAqaCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgICByZXR1cm4gIWgtPmZpcnN0Owo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBfX2lndF9obGlzdF9kZWwoc3RydWN0IGlndF9obGlz dF9ub2RlICpuKQo+ID4gPiArewo+ID4gPiArICAgICAgIHN0cnVjdCBpZ3RfaGxpc3Rfbm9kZSAq bmV4dCA9IG4tPm5leHQ7Cj4gPiA+ICsgICAgICAgc3RydWN0IGlndF9obGlzdF9ub2RlICoqcHBy ZXYgPSBuLT5wcHJldjsKPiA+ID4gKwo+ID4gPiArICAgICAgICpwcHJldiA9IG5leHQ7Cj4gPiA+ ICsgICAgICAgaWYgKG5leHQpCj4gPiA+ICsgICAgICAgICAgICAgICBuZXh0LT5wcHJldiA9IHBw cmV2Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2b2lkIGlndF9obGlzdF9kZWwoc3RydWN0IGln dF9obGlzdF9ub2RlICpuKQo+ID4gPiArewo+ID4gPiArICAgICAgIF9faWd0X2hsaXN0X2RlbChu KTsKPiA+ID4gKyAgICAgICBuLT5uZXh0ID0gTlVMTDsKPiA+ID4gKyAgICAgICBuLT5wcHJldiA9 IE5VTEw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3ZvaWQgaWd0X2hsaXN0X2RlbF9pbml0KHN0 cnVjdCBpZ3RfaGxpc3Rfbm9kZSAqbikKPiA+ID4gK3sKPiA+ID4gKyAgICAgICBpZiAoIWlndF9o bGlzdF91bmhhc2hlZChuKSkgewo+ID4gPiArICAgICAgICAgICAgICAgX19pZ3RfaGxpc3RfZGVs KG4pOwo+ID4gPiArICAgICAgICAgICAgICAgaWd0X2hsaXN0X2luaXQobik7Cj4gPiA+ICsgICAg ICAgfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2b2lkIGlndF9obGlzdF9hZGRfaGVhZChzdHJ1 Y3QgaWd0X2hsaXN0X25vZGUgKm4sIHN0cnVjdCBpZ3RfaGxpc3RfaGVhZCAqaCkKPiA+ID4gK3sK PiA+ID4gKyAgICAgICBzdHJ1Y3QgaWd0X2hsaXN0X25vZGUgKmZpcnN0ID0gaC0+Zmlyc3Q7Cj4g PiA+ICsKPiA+ID4gKyAgICAgICBuLT5uZXh0ID0gZmlyc3Q7Cj4gPiA+ICsgICAgICAgaWYgKGZp cnN0KQo+ID4gPiArICAgICAgICAgICAgICAgZmlyc3QtPnBwcmV2ID0gJm4tPm5leHQ7Cj4gPiA+ ICsgICAgICAgaC0+Zmlyc3QgPSBuOwo+ID4gPiArICAgICAgIG4tPnBwcmV2ID0gJmgtPmZpcnN0 Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2b2lkIGlndF9obGlzdF9hZGRfYmVmb3JlKHN0cnVj dCBpZ3RfaGxpc3Rfbm9kZSAqbiwgc3RydWN0IGlndF9obGlzdF9ub2RlICpuZXh0KQo+ID4gPiAr ewo+ID4gPiArICAgICAgIGFzc2VydChuZXh0KTsKPiA+ID4gKyAgICAgICBuLT5wcHJldiA9IG5l eHQtPnBwcmV2Owo+ID4gPiArICAgICAgIG4tPm5leHQgPSBuZXh0Owo+ID4gPiArICAgICAgIG5l eHQtPnBwcmV2ID0gJm4tPm5leHQ7Cj4gPiA+ICsgICAgICAgKihuLT5wcHJldikgPSBuOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICt2b2lkIGlndF9obGlzdF9hZGRfYmVoaW5kKHN0cnVjdCBpZ3Rf aGxpc3Rfbm9kZSAqbiwgc3RydWN0IGlndF9obGlzdF9ub2RlICpwcmV2KQo+ID4gPiArewo+ID4g PiArICAgICAgIG4tPm5leHQgPSBwcmV2LT5uZXh0Owo+ID4gPiArICAgICAgIHByZXYtPm5leHQg PSBuOwo+ID4gPiArICAgICAgIG4tPnBwcmV2ID0gJnByZXYtPm5leHQ7Cj4gPiA+ICsKPiA+ID4g KyAgICAgICBpZiAobi0+bmV4dCkKPiA+ID4gKyAgICAgICAgICAgICAgIG4tPm5leHQtPnBwcmV2 ICA9ICZuLT5uZXh0Owo+ID4gPiArfQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9saXN0Lmgg Yi9saWIvaWd0X2xpc3QuaAo+ID4gPiBpbmRleCBjYzkzZDdhMGQuLjc4ZTc2MWUwNSAxMDA2NDQK PiA+ID4gLS0tIGEvbGliL2lndF9saXN0LmgKPiA+ID4gKysrIGIvbGliL2lndF9saXN0LmgKPiA+ ID4gQEAgLTQwLDYgKzQwLDEwIEBACj4gPiA+ICAgKiBpZ3RfbGlzdCBpcyBhIGRvdWJseS1saW5r ZWQgbGlzdCB3aGVyZSBhbiBpbnN0YW5jZSBvZiBpZ3RfbGlzdF9oZWFkIGlzIGEKPiA+ID4gICAq IGhlYWQgc2VudGluZWwgYW5kIGhhcyB0byBiZSBpbml0aWFsaXplZC4KPiA+ID4gICAqCj4gPiA+ ICsgKiBpZ3RfaGlzdCBpcyBhbHNvIGFuIGRvdWJsZSBsaW5rZWQgbGlzdHMsIGJ1dCB3aXRoIGEg c2luZ2xlIHBvaW50ZXIgbGlzdCBoZWFkLgo+ID4gPiArICogTW9zdGx5IHVzZWZ1bCBmb3IgaGFz aCB0YWJsZXMgd2hlcmUgdGhlIHR3byBwb2ludGVyIGxpc3QgaGVhZCBpcwo+ID4gPiArICogdG9v IHdhc3RlZnVsLiBZb3UgbG9zZSB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgdGhlIHRhaWwgaW4gTygx KS4KPiA+ID4gKyAqCj4gPiA+ICAgKiBFeGFtcGxlIHVzYWdlOgo+ID4gPiAgICoKPiA+ID4gICAq IHxbPCEtLSBsYW5ndWFnZT0iQyIgLS0+Cj4gPiA+IEBAIC03MSw2ICs3NSwxMyBAQCBzdHJ1Y3Qg aWd0X2xpc3RfaGVhZCB7Cj4gPiA+ICAgICAgICAgc3RydWN0IGlndF9saXN0X2hlYWQgKm5leHQ7 Cj4gPiA+ICB9Owo+ID4gPgo+ID4gPiArc3RydWN0IGlndF9obGlzdF9oZWFkIHsKPiA+ID4gKyAg ICAgICBzdHJ1Y3QgaWd0X2hsaXN0X25vZGUgKmZpcnN0Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4g PiArc3RydWN0IGlndF9obGlzdF9ub2RlIHsKPiA+ID4gKyAgICAgICBzdHJ1Y3QgaWd0X2hsaXN0 X25vZGUgKm5leHQsICoqcHByZXY7Cj4gPiA+ICt9Owo+ID4gPgo+ID4gPiAgdm9pZCBJR1RfSU5J VF9MSVNUX0hFQUQoc3RydWN0IGlndF9saXN0X2hlYWQgKmhlYWQpOwo+ID4gPiAgdm9pZCBpZ3Rf bGlzdF9hZGQoc3RydWN0IGlndF9saXN0X2hlYWQgKmVsZW0sIHN0cnVjdCBpZ3RfbGlzdF9oZWFk ICpoZWFkKTsKPiA+ID4gQEAgLTgxLDYgKzkyLDE3IEBAIHZvaWQgaWd0X2xpc3RfbW92ZV90YWls KHN0cnVjdCBpZ3RfbGlzdF9oZWFkICplbGVtLCBzdHJ1Y3QgaWd0X2xpc3RfaGVhZCAqbGlzdCk7 Cj4gPiA+ICBpbnQgaWd0X2xpc3RfbGVuZ3RoKGNvbnN0IHN0cnVjdCBpZ3RfbGlzdF9oZWFkICpo ZWFkKTsKPiA+ID4gIGJvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGlndF9saXN0X2hl YWQgKmhlYWQpOwo+ID4gPgo+ID4gPiArdm9pZCBpZ3RfaGxpc3RfaW5pdChzdHJ1Y3QgaWd0X2hs aXN0X25vZGUgKmgpOwo+ID4gPiAraW50IGlndF9obGlzdF91bmhhc2hlZChjb25zdCBzdHJ1Y3Qg aWd0X2hsaXN0X25vZGUgKmgpOwo+ID4gPiAraW50IGlndF9obGlzdF9lbXB0eShjb25zdCBzdHJ1 Y3QgaWd0X2hsaXN0X2hlYWQgKmgpOwo+ID4gPiArdm9pZCBpZ3RfaGxpc3RfZGVsKHN0cnVjdCBp Z3RfaGxpc3Rfbm9kZSAqbik7Cj4gPiA+ICt2b2lkIGlndF9obGlzdF9kZWxfaW5pdChzdHJ1Y3Qg aWd0X2hsaXN0X25vZGUgKm4pOwo+ID4gPiArdm9pZCBpZ3RfaGxpc3RfYWRkX2hlYWQoc3RydWN0 IGlndF9obGlzdF9ub2RlICpuLCBzdHJ1Y3QgaWd0X2hsaXN0X2hlYWQgKmgpOwo+ID4gPiArdm9p ZCBpZ3RfaGxpc3RfYWRkX2JlZm9yZShzdHJ1Y3QgaWd0X2hsaXN0X25vZGUgKm4sCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlndF9obGlzdF9ub2RlICpuZXh0KTsKPiA+ ID4gK3ZvaWQgaWd0X2hsaXN0X2FkZF9iZWhpbmQoc3RydWN0IGlndF9obGlzdF9ub2RlICpuLAo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZ3RfaGxpc3Rfbm9kZSAqcHJl dik7Cj4gPiA+ICsKPiA+ID4gICNkZWZpbmUgaWd0X2NvbnRhaW5lcl9vZihwdHIsIHNhbXBsZSwg bWVtYmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiAgICAgICAgIChfX3R5cGVv Zl9fKHNhbXBsZSkpKChjaGFyICopKHB0cikgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoX190eXBlb2Zf Xygqc2FtcGxlKSwgbWVtYmVyKSkKPiA+ID4gQEAgLTk2LDkgKzExOCwxMCBAQCBib29sIGlndF9s aXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBpZ3RfbGlzdF9oZWFkICpoZWFkKTsKPiA+ID4gICAqIFNh ZmUgYWdhaW5zdCByZW1vdmVsIG9mIHRoZSAqY3VycmVudCogbGlzdCBlbGVtZW50LiBUbyBhY2hp dmUgdGhpcyBpdAo+ID4gPiAgICogcmVxdWlyZXMgYW4gZXh0cmEgaGVscGVyIHZhcmlhYmxlIGB0 bXBgIHdpdGggdGhlIHNhbWUgdHlwZSBhcyBgcG9zYC4KPiA+ID4gICAqLwo+ID4gPiAtI2RlZmlu ZSBpZ3RfbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgdG1wLCBoZWFkLCBtZW1iZXIpICAg ICAgICAgICAgICAgICAgIFwKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBpZ3RfbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKHBvcywgdG1wLCBoZWFkLCBtZW1iZXIpICAgICAgICAgICBcCj4gPiA+ICAg ICAgICAgZm9yIChwb3MgPSBpZ3RfY29udGFpbmVyX29mKChoZWFkKS0+bmV4dCwgcG9zLCBtZW1i ZXIpLCAgICAgICAgIFwKPiA+ID4gLSAgICAgICAgICAgIHRtcCA9IGlndF9jb250YWluZXJfb2Yo KHBvcyktPm1lbWJlci5uZXh0LCB0bXAsIG1lbWJlcik7ICAgXAo+ID4gPiArICAgICAgICAgICAg dG1wID0gaWd0X2NvbnRhaW5lcl9vZigocG9zKS0+bWVtYmVyLm5leHQsIHRtcCwgbWVtYmVyKTsg ICBcCj4gPiA+ICAgICAgICAgICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gICAgICAgICAgICAgIHBvcyA9IHRtcCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiAg ICAgICAgICAgICAgdG1wID0gaWd0X2NvbnRhaW5lcl9vZigocG9zKS0+bWVtYmVyLm5leHQsIHRt cCwgbWVtYmVyKSkKPiA+ID4gQEAgLTEwOCw2ICsxMzEsMjcgQEAgYm9vbCBpZ3RfbGlzdF9lbXB0 eShjb25zdCBzdHJ1Y3QgaWd0X2xpc3RfaGVhZCAqaGVhZCk7Cj4gPiA+ICAgICAgICAgICAgICAm cG9zLT5tZW1iZXIgIT0gKGhlYWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiA+ID4gICAgICAgICAgICAgIHBvcyA9IGlndF9jb250YWluZXJfb2YoKHBvcyktPm1lbWJl ci5wcmV2LCBwb3MsIG1lbWJlcikpCj4gPiA+Cj4gPiA+ICsjZGVmaW5lIGlndF9saXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmVfcmV2ZXJzZShwb3MsIHRtcCwgaGVhZCwgbWVtYmVyKSAgICAgICAgICAg XAo+ID4gPiArICAgICAgIGZvciAocG9zID0gaWd0X2NvbnRhaW5lcl9vZigoaGVhZCktPnByZXYs IHBvcywgbWVtYmVyKSwgICAgICAgICBcCj4gPiA+ICsgICAgICAgICAgICB0bXAgPSBpZ3RfY29u dGFpbmVyX29mKChwb3MpLT5tZW1iZXIucHJldiwgdG1wLCBtZW1iZXIpOyAgIFwKPiA+ID4gKyAg ICAgICAgICAgICZwb3MtPm1lbWJlciAhPSAoaGVhZCk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+ID4gPiArICAgICAgICAgICAgcG9zID0gdG1wLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiA+ICsgICAgICAgICAgICB0 bXAgPSBpZ3RfY29udGFpbmVyX29mKChwb3MpLT5tZW1iZXIucHJldiwgdG1wLCBtZW1iZXIpKQo+ ID4gPiArCj4gPiA+ICsjZGVmaW5lIGlndF9obGlzdF9lbnRyeV9zYWZlKHB0ciwgc2FtcGxlLCBt ZW1iZXIpIFwKPiA+ID4gKyAgICAgICAoeyB0eXBlb2YocHRyKSBfX19fcHRyID0gKHB0cik7IFwK PiA+ID4gKyAgICAgICAgICBfX19fcHRyID8gaWd0X2NvbnRhaW5lcl9vZihfX19fcHRyLCBzYW1w bGUsIG1lbWJlcikgOiBOVUxMOyBcCj4gPiA+ICsgICAgICAgfSkKPiA+ID4gKwo+ID4gPiArI2Rl ZmluZSBpZ3RfaGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBoZWFkLCBtZW1iZXIpICAgICAgICAg ICAgICAgICAgICBcCj4gPiA+ICsgICAgICAgZm9yIChwb3MgPSBpZ3RfaGxpc3RfZW50cnlfc2Fm ZSgoaGVhZCktPmZpcnN0LCBwb3MsIG1lbWJlcik7ICAgIFwKPiA+ID4gKyAgICAgICAgICAgIHBv czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gPiArICAgICAgICAgICAgcG9zID0gaWd0X2hsaXN0X2VudHJ5X3NhZmUoKHBvcyktPm1l bWJlci5uZXh0LCBwb3MsIG1lbWJlcikpCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgaWd0X2hsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBoZWFkLCBtZW1iZXIpICAgICAgICAgICAgXAo+ ID4gPiArICAgICAgIGZvciAocG9zID0gaWd0X2hsaXN0X2VudHJ5X3NhZmUoKGhlYWQpLT5maXJz dCwgcG9zLCBtZW1iZXIpOyAgICBcCj4gPiA+ICsgICAgICAgICAgICBwb3MgJiYgKHsgbiA9IHBv cy0+bWVtYmVyLm5leHQ7IDE7IH0pOyAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gKyAgICAg ICAgICAgIHBvcyA9IGlndF9obGlzdF9lbnRyeV9zYWZlKG4sIHBvcywgbWVtYmVyKSkKPiA+ID4K PiA+ID4gIC8qIElHVCBjdXN0b20gaGVscGVycyAqLwo+ID4gPgo+ID4gPiBAQCAtMTI3LDQgKzE3 MSw2IEBAIGJvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGlndF9saXN0X2hlYWQgKmhl YWQpOwo+ID4gPiAgI2RlZmluZSBpZ3RfbGlzdF9sYXN0X2VudHJ5KGhlYWQsIHR5cGUsIG1lbWJl cikgXAo+ID4gPiAgICAgICAgIGlndF9jb250YWluZXJfb2YoKGhlYWQpLT5wcmV2LCAodHlwZSks IG1lbWJlcikKPiA+ID4KPiA+ID4gKyNkZWZpbmUgSUdUX0lOSVRfSExJU1RfSEVBRChwdHIpICgo cHRyKS0+Zmlyc3QgPSBOVUxMKQo+ID4gPiArCj4gPiA+ICAjZW5kaWYgLyogSUdUX0xJU1RfSCAq Lwo+ID4gPiAtLQo+ID4gPiAyLjI2LjAKPiA+ID4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pZ3QtZGV2Cg==