From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C011C43603 for ; Fri, 6 Dec 2019 19:40:30 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2874E205ED for ; Fri, 6 Dec 2019 19:40:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2874E205ED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D744F6E06B; Fri, 6 Dec 2019 19:40:29 +0000 (UTC) Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE5536E06B for ; Fri, 6 Dec 2019 19:40:27 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id w15so9076817wru.4 for ; Fri, 06 Dec 2019 11:40:27 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=8uPtI3qLcSahv6rhWLV+Jx1qN3/T9gwe90xLSWpdWUM=; b=rcLzVlcVXnvj2RN556VuqR5MR5f/hxjfR02O8wNEYb5x3gL4Hu3JM9Tr541Z0V4Z3Y zjv0OcXKy5vJ3c3t3GkIu3fEI/8ja7+VJU8xerGmGDyxrH3aj6r1Wsq5Ak4me9B0bMwQ LV9W2v7JiBT6xe6nsJaR5DPJ0/I02Oh4Tvu60Myqf3eZHPWaAAkcLyZYfq+h72dDGBCa BAdsttnToBgom9Szj+w1yjhia6VxxJD3pz+pw4HYtktXF44Frhi11fqjGfit3Wwfm0SJ /pTpdjM+p+qQeq0QtmqAOlL3heWANPbRgXh6RF027kgpm2PaCjm4VElX5sXXvssloDF1 E65g== X-Gm-Message-State: APjAAAUlV+jioOx8Vjnvp5jVKGfY+silRacniXTiH6qlhoZMki77pWyW RiFoXfbT5a8wVpaamt0/m/CrF9u9 X-Google-Smtp-Source: APXvYqyzg9iMEfW/7JetPyJDTjyngoc6CIn7edMzmZo8rfFengo/7OvEuBITvxWcKi0LH+lT8yD/mQ== X-Received: by 2002:a5d:4651:: with SMTP id j17mr18152261wrs.237.1575661226435; Fri, 06 Dec 2019 11:40:26 -0800 (PST) Received: from ?IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7? ([2a02:908:1252:fb60:be8a:bd56:1f94:86e7]) by smtp.gmail.com with ESMTPSA id h127sm4548272wme.31.2019.12.06.11.40.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 06 Dec 2019 11:40:25 -0800 (PST) Subject: Re: [PATCH 3/4] drm/amdgpu: allocate entities on demand To: Nirmoy Das , alexander.deucher@amd.com, kenny.ho@amd.com, christian.koenig@amd.com References: <20191206173304.3025-1-nirmoy.das@amd.com> <20191206173304.3025-3-nirmoy.das@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <94cc2b23-b3ac-8d71-72d5-12f774b1b698@gmail.com> Date: Fri, 6 Dec 2019 20:40:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20191206173304.3025-3-nirmoy.das@amd.com> Content-Language: en-US X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=8uPtI3qLcSahv6rhWLV+Jx1qN3/T9gwe90xLSWpdWUM=; b=ko37HRb4aGnq0wiJ8GPGzFQboOXN+uw662+FyNdxHdBQQrvTnhozFqwVMEk3LazRjK Hl5BnizH2+M1TNQ75rjCP6AdjNoP8SQrsnC3e2AGP3swz/glqlhwJbhTSgOfns2kd5sm ZOO1UTwXLVPBIA8f7EqRj7gKsIm6N5VyLY79kFh/bd7l885lpQAZ5HEsGEO2uK7xdbct eqHcyPVSp9i8kw6Ee7Rt0yZqCs5Bc7nqNjO/TChFwE/jg21WFVo8TVrZvcfPl5WYM2yo p3CAIPUNnf6AqQ0FzVFqkNJ49XCmQ/tkiB6uTlao0dEnyyZUHJeK3B8BamFB7a7km/ar QqpA== X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: christian.koenig@amd.com Cc: nirmoy.das@amd.com, amd-gfx@lists.freedesktop.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" QW0gMDYuMTIuMTkgdW0gMTg6MzMgc2NocmllYiBOaXJtb3kgRGFzOgo+IEN1cnJlbnRseSB3ZSBw cmUtYWxsb2NhdGUgZW50aXRpZXMgZm9yIGFsbCB0aGUgSFcgSVBzIG9uCj4gY29udGV4dCBjcmVh dGlvbiBhbmQgc29tZSBvZiB3aGljaCBhcmUgbWlnaHQgbmV2ZXIgYmUgdXNlZC4KPgo+IFRoaXMg cGF0Y2ggdHJpZXMgdG8gcmVzb2x2ZSBlbnRpdHkgd2FzdGFnZSBieSBjcmVhdGluZyBlbnRpdGll cwo+IGZvciBhIEhXIElQIG9ubHkgd2hlbiBpdCBpcyByZXF1aXJlZC4KClBsZWFzZSBkZWxheSB0 aGF0IHVudGlsIHdlIGhhdmUgZnVsbHkgY2xlYW5lZCB1cCB0aGUgc2NoZWR1bGVyIAppbml0aWFs aXphdGlvbi4KCkNocmlzdGlhbi4KCj4KPiBTaWduZWQtb2ZmLWJ5OiBOaXJtb3kgRGFzIDxuaXJt b3kuZGFzQGFtZC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfY3R4LmMgfCAxNzYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdl ZCwgOTcgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2N0eC5jCj4gaW5kZXggMWQ2ODUwYWY5OTA4Li5jNzY0M2FmODgyN2Yg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jCj4gQEAgLTY4LDEz ICs2OCw5OSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jdHhfcHJpb3JpdHlfcGVybWl0KHN0cnVjdCBk cm1fZmlsZSAqZmlscCwKPiAgIAlyZXR1cm4gLUVBQ0NFUzsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg aW50IGFtZGdwdV9jdHhfaW5pdF9lbnRpdHkoc3RydWN0IGFtZGdwdV9jdHggKmN0eCwgdTMyIGh3 X2lwKQo+ICt7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmdzW0FNREdQVV9NQVhfUklOR1Nd Owo+ICsJc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZF9saXN0W0FNREdQVV9NQVhfUklO R1NdOwo+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjdHgtPmFkZXY7Cj4gKwl1bnNp Z25lZCBudW1fcmluZ3MgPSAwOwo+ICsJdW5zaWduZWQgbnVtX3NjaGVkcyA9IDA7Cj4gKwl1bnNp Z25lZCBpLCBqOwo+ICsJaW50IHIgPSAwOwo+ICsKPiArCXN3aXRjaCAoaHdfaXApIHsKPiArCQlj YXNlIEFNREdQVV9IV19JUF9HRlg6Cj4gKwkJCXJpbmdzWzBdID0gJmFkZXYtPmdmeC5nZnhfcmlu Z1swXTsKPiArCQkJbnVtX3JpbmdzID0gMTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBBTURHUFVf SFdfSVBfQ09NUFVURToKPiArCQkJZm9yIChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1fY29tcHV0 ZV9yaW5nczsgKytpKQo+ICsJCQkJcmluZ3NbaV0gPSAmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tp XTsKPiArCQkJbnVtX3JpbmdzID0gYWRldi0+Z2Z4Lm51bV9jb21wdXRlX3JpbmdzOwo+ICsJCQli cmVhazsKPiArCQljYXNlIEFNREdQVV9IV19JUF9ETUE6Cj4gKwkJCWZvciAoaSA9IDA7IGkgPCBh ZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7ICsraSkKPiArCQkJCXJpbmdzW2ldID0gJmFkZXYtPnNk bWEuaW5zdGFuY2VbaV0ucmluZzsKPiArCQkJbnVtX3JpbmdzID0gYWRldi0+c2RtYS5udW1faW5z dGFuY2VzOwo+ICsJCQlicmVhazsKPiArCQljYXNlIEFNREdQVV9IV19JUF9VVkQ6Cj4gKwkJCXJp bmdzWzBdID0gJmFkZXYtPnV2ZC5pbnN0WzBdLnJpbmc7Cj4gKwkJCW51bV9yaW5ncyA9IDE7Cj4g KwkJCWJyZWFrOwo+ICsJCWNhc2UgQU1ER1BVX0hXX0lQX1ZDRToKPiArCQkJcmluZ3NbMF0gPSAm YWRldi0+dmNlLnJpbmdbMF07Cj4gKwkJCW51bV9yaW5ncyA9IDE7Cj4gKwkJCWJyZWFrOwo+ICsJ CWNhc2UgQU1ER1BVX0hXX0lQX1VWRF9FTkM6Cj4gKwkJCXJpbmdzWzBdID0gJmFkZXYtPnV2ZC5p bnN0WzBdLnJpbmdfZW5jWzBdOwo+ICsJCQludW1fcmluZ3MgPSAxOwo+ICsJCQlicmVhazsKPiAr CQljYXNlIEFNREdQVV9IV19JUF9WQ05fREVDOgo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgYWRldi0+ dmNuLm51bV92Y25faW5zdDsgKytpKSB7Cj4gKwkJCQlpZiAoYWRldi0+dmNuLmhhcnZlc3RfY29u ZmlnICYgKDEgPDwgaSkpCj4gKwkJCQkJY29udGludWU7Cj4gKwkJCQlyaW5nc1tudW1fcmluZ3Mr K10gPSAmYWRldi0+dmNuLmluc3RbaV0ucmluZ19kZWM7Cj4gKwkJCX0KPiArCQkJYnJlYWs7Cj4g KwkJY2FzZSBBTURHUFVfSFdfSVBfVkNOX0VOQzoKPiArCQkJZm9yIChpID0gMDsgaSA8IGFkZXYt PnZjbi5udW1fdmNuX2luc3Q7ICsraSkgewo+ICsJCQkJaWYgKGFkZXYtPnZjbi5oYXJ2ZXN0X2Nv bmZpZyAmICgxIDw8IGkpKQo+ICsJCQkJCWNvbnRpbnVlOwo+ICsJCQkJZm9yIChqID0gMDsgaiA8 IGFkZXYtPnZjbi5udW1fZW5jX3JpbmdzOyArK2opCj4gKwkJCQkJcmluZ3NbbnVtX3JpbmdzKytd ID0gJmFkZXYtPnZjbi5pbnN0W2ldLnJpbmdfZW5jW2pdOwo+ICsJCQl9Cj4gKwkJCWJyZWFrOwo+ ICsJCWNhc2UgQU1ER1BVX0hXX0lQX1ZDTl9KUEVHOgo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgYWRl di0+anBlZy5udW1fanBlZ19pbnN0OyArK2kpIHsKPiArCQkJCWlmIChhZGV2LT52Y24uaGFydmVz dF9jb25maWcgJiAoMSA8PCBpKSkKPiArCQkJCQljb250aW51ZTsKPiArCQkJCXJpbmdzW251bV9y aW5ncysrXSA9ICZhZGV2LT5qcGVnLmluc3RbaV0ucmluZ19kZWM7Cj4gKwkJCX0KPiArCQkJYnJl YWs7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG51bV9yaW5nczsgKytpKSB7Cj4gKwkJ aWYgKCFyaW5nc1tpXS0+YWRldikKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXNjaGVkX2xpc3Rb bnVtX3NjaGVkcysrXSA9ICZyaW5nc1tpXS0+c2NoZWQ7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0g MDsgaSA8IGFtZGdwdV9jdHhfbnVtX2VudGl0aWVzW2h3X2lwXTsgKytpKQo+ICsJCXIgPSBkcm1f c2NoZWRfZW50aXR5X2luaXQoJmN0eC0+ZW50aXRpZXNbaHdfaXBdW2ldLmVudGl0eSwKPiArCQkJ CWN0eC0+aW5pdF9wcmlvcml0eSwgc2NoZWRfbGlzdCwgbnVtX3NjaGVkcywgJmN0eC0+Z3VpbHR5 KTsKPiArCWlmIChyKQo+ICsJCWdvdG8gZXJyb3JfY2xlYW51cF9lbnRpdGllczsKPiArCj4gKwlm b3IgKGkgPSAwOyBpIDwgYW1kZ3B1X2N0eF9udW1fZW50aXRpZXNbaHdfaXBdOyArK2kpCj4gKwkJ Y3R4LT5lbnRpdGllc1tod19pcF1baV0uc2VxdWVuY2UgPSAxOwo+ICsKPiArCXJldHVybiAwOwo+ ICsKPiArZXJyb3JfY2xlYW51cF9lbnRpdGllczoKPiArCWZvciAoaSA9IDA7IGkgPCBhbWRncHVf Y3R4X251bV9lbnRpdGllc1tod19pcF07ICsraSkKPiArCQlkcm1fc2NoZWRfZW50aXR5X2Rlc3Ry b3koJmN0eC0+ZW50aXRpZXNbaHdfaXBdW2ldLmVudGl0eSk7Cj4gKwo+ICsJcmV0dXJuIHI7Cj4g K30KPiArCj4gICBzdGF0aWMgaW50IGFtZGdwdV9jdHhfaW5pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKPiAgIAkJCSAgIGVudW0gZHJtX3NjaGVkX3ByaW9yaXR5IHByaW9yaXR5LAo+ICAg CQkJICAgc3RydWN0IGRybV9maWxlICpmaWxwLAo+ICAgCQkJICAgc3RydWN0IGFtZGdwdV9jdHgg KmN0eCkKPiAgIHsKPiAgIAl1bnNpZ25lZCBudW1fZW50aXRpZXMgPSBhbWRncHVfY3R4X3RvdGFs X251bV9lbnRpdGllcygpOwo+IC0JdW5zaWduZWQgaSwgaiwgazsKPiArCXVuc2lnbmVkIGk7Cj4g ICAJaW50IHI7Cj4gICAKPiAgIAlpZiAocHJpb3JpdHkgPCAwIHx8IHByaW9yaXR5ID49IERSTV9T Q0hFRF9QUklPUklUWV9NQVgpCj4gQEAgLTEwMyw3ICsxODksNyBAQCBzdGF0aWMgaW50IGFtZGdw dV9jdHhfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAlmb3IgKGkgPSAwOyBp IDwgbnVtX2VudGl0aWVzOyArK2kpIHsKPiAgIAkJc3RydWN0IGFtZGdwdV9jdHhfZW50aXR5ICpl bnRpdHkgPSAmY3R4LT5lbnRpdGllc1swXVtpXTsKPiAgIAo+IC0JCWVudGl0eS0+c2VxdWVuY2Ug PSAxOwo+ICsJCWVudGl0eS0+c2VxdWVuY2UgPSAtMTsKPiAgIAkJZW50aXR5LT5mZW5jZXMgPSAm Y3R4LT5mZW5jZXNbYW1kZ3B1X3NjaGVkX2pvYnMgKiBpXTsKPiAgIAl9Cj4gICAJZm9yIChpID0g MTsgaSA8IEFNREdQVV9IV19JUF9OVU07ICsraSkKPiBAQCAtMTIwLDg1ICsyMDYsOCBAQCBzdGF0 aWMgaW50IGFtZGdwdV9jdHhfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAlj dHgtPmluaXRfcHJpb3JpdHkgPSBwcmlvcml0eTsKPiAgIAljdHgtPm92ZXJyaWRlX3ByaW9yaXR5 ID0gRFJNX1NDSEVEX1BSSU9SSVRZX1VOU0VUOwo+ICAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgQU1E R1BVX0hXX0lQX05VTTsgKytpKSB7Cj4gLQkJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nc1tBTURH UFVfTUFYX1JJTkdTXTsKPiAtCQlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkX2xpc3Rb QU1ER1BVX01BWF9SSU5HU107Cj4gLQkJdW5zaWduZWQgbnVtX3JpbmdzID0gMDsKPiAtCQl1bnNp Z25lZCBudW1fcnFzID0gMDsKPiAtCj4gLQkJc3dpdGNoIChpKSB7Cj4gLQkJY2FzZSBBTURHUFVf SFdfSVBfR0ZYOgo+IC0JCQlyaW5nc1swXSA9ICZhZGV2LT5nZnguZ2Z4X3JpbmdbMF07Cj4gLQkJ CW51bV9yaW5ncyA9IDE7Cj4gLQkJCWJyZWFrOwo+IC0JCWNhc2UgQU1ER1BVX0hXX0lQX0NPTVBV VEU6Cj4gLQkJCWZvciAoaiA9IDA7IGogPCBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7ICsr aikKPiAtCQkJCXJpbmdzW2pdID0gJmFkZXYtPmdmeC5jb21wdXRlX3Jpbmdbal07Cj4gLQkJCW51 bV9yaW5ncyA9IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5nczsKPiAtCQkJYnJlYWs7Cj4gLQkJ Y2FzZSBBTURHUFVfSFdfSVBfRE1BOgo+IC0JCQlmb3IgKGogPSAwOyBqIDwgYWRldi0+c2RtYS5u dW1faW5zdGFuY2VzOyArK2opCj4gLQkJCQlyaW5nc1tqXSA9ICZhZGV2LT5zZG1hLmluc3RhbmNl W2pdLnJpbmc7Cj4gLQkJCW51bV9yaW5ncyA9IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsKPiAt CQkJYnJlYWs7Cj4gLQkJY2FzZSBBTURHUFVfSFdfSVBfVVZEOgo+IC0JCQlyaW5nc1swXSA9ICZh ZGV2LT51dmQuaW5zdFswXS5yaW5nOwo+IC0JCQludW1fcmluZ3MgPSAxOwo+IC0JCQlicmVhazsK PiAtCQljYXNlIEFNREdQVV9IV19JUF9WQ0U6Cj4gLQkJCXJpbmdzWzBdID0gJmFkZXYtPnZjZS5y aW5nWzBdOwo+IC0JCQludW1fcmluZ3MgPSAxOwo+IC0JCQlicmVhazsKPiAtCQljYXNlIEFNREdQ VV9IV19JUF9VVkRfRU5DOgo+IC0JCQlyaW5nc1swXSA9ICZhZGV2LT51dmQuaW5zdFswXS5yaW5n X2VuY1swXTsKPiAtCQkJbnVtX3JpbmdzID0gMTsKPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSBBTURH UFVfSFdfSVBfVkNOX0RFQzoKPiAtCQkJZm9yIChqID0gMDsgaiA8IGFkZXYtPnZjbi5udW1fdmNu X2luc3Q7ICsraikgewo+IC0JCQkJaWYgKGFkZXYtPnZjbi5oYXJ2ZXN0X2NvbmZpZyAmICgxIDw8 IGopKQo+IC0JCQkJCWNvbnRpbnVlOwo+IC0JCQkJcmluZ3NbbnVtX3JpbmdzKytdID0gJmFkZXYt PnZjbi5pbnN0W2pdLnJpbmdfZGVjOwo+IC0JCQl9Cj4gLQkJCWJyZWFrOwo+IC0JCWNhc2UgQU1E R1BVX0hXX0lQX1ZDTl9FTkM6Cj4gLQkJCWZvciAoaiA9IDA7IGogPCBhZGV2LT52Y24ubnVtX3Zj bl9pbnN0OyArK2opIHsKPiAtCQkJCWlmIChhZGV2LT52Y24uaGFydmVzdF9jb25maWcgJiAoMSA8 PCBqKSkKPiAtCQkJCQljb250aW51ZTsKPiAtCQkJCWZvciAoayA9IDA7IGsgPCBhZGV2LT52Y24u bnVtX2VuY19yaW5nczsgKytrKQo+IC0JCQkJCXJpbmdzW251bV9yaW5ncysrXSA9ICZhZGV2LT52 Y24uaW5zdFtqXS5yaW5nX2VuY1trXTsKPiAtCQkJfQo+IC0JCQlicmVhazsKPiAtCQljYXNlIEFN REdQVV9IV19JUF9WQ05fSlBFRzoKPiAtCQkJZm9yIChqID0gMDsgaiA8IGFkZXYtPmpwZWcubnVt X2pwZWdfaW5zdDsgKytqKSB7Cj4gLQkJCQlpZiAoYWRldi0+dmNuLmhhcnZlc3RfY29uZmlnICYg KDEgPDwgaikpCj4gLQkJCQkJY29udGludWU7Cj4gLQkJCQlyaW5nc1tudW1fcmluZ3MrK10gPSAm YWRldi0+anBlZy5pbnN0W2pdLnJpbmdfZGVjOwo+IC0JCQl9Cj4gLQkJCWJyZWFrOwo+IC0JCX0K PiAtCj4gLQkJZm9yIChqID0gMDsgaiA8IG51bV9yaW5nczsgKytqKSB7Cj4gLQkJCWlmICghcmlu Z3Nbal0tPmFkZXYpCj4gLQkJCQljb250aW51ZTsKPiAtCj4gLQkJCXNjaGVkX2xpc3RbbnVtX3Jx cysrXSA9ICZyaW5nc1tqXS0+c2NoZWQ7Cj4gLQkJfQo+IC0KPiAtCQlmb3IgKGogPSAwOyBqIDwg YW1kZ3B1X2N0eF9udW1fZW50aXRpZXNbaV07ICsraikKPiAtCQkJciA9IGRybV9zY2hlZF9lbnRp dHlfaW5pdCgmY3R4LT5lbnRpdGllc1tpXVtqXS5lbnRpdHksCj4gLQkJCQkJCSAgcHJpb3JpdHks IHNjaGVkX2xpc3QsCj4gLQkJCQkJCSAgbnVtX3JxcywgJmN0eC0+Z3VpbHR5KTsKPiAtCQlpZiAo cikKPiAtCQkJZ290byBlcnJvcl9jbGVhbnVwX2VudGl0aWVzOwo+IC0JfQo+IC0KPiAgIAlyZXR1 cm4gMDsKPiAgIAo+IC1lcnJvcl9jbGVhbnVwX2VudGl0aWVzOgo+IC0JZm9yIChpID0gMDsgaSA8 IG51bV9lbnRpdGllczsgKytpKQo+IC0JCWRybV9zY2hlZF9lbnRpdHlfZGVzdHJveSgmY3R4LT5l bnRpdGllc1swXVtpXS5lbnRpdHkpOwo+IC0Ja2ZyZWUoY3R4LT5lbnRpdGllc1swXSk7Cj4gLQo+ ICAgZXJyb3JfZnJlZV9mZW5jZXM6Cj4gICAJa2ZyZWUoY3R4LT5mZW5jZXMpOwo+ICAgCWN0eC0+ ZmVuY2VzID0gTlVMTDsKPiBAQCAtMjI5LDYgKzIzOCw4IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9j dHhfZmluaShzdHJ1Y3Qga3JlZiAqcmVmKQo+ICAgaW50IGFtZGdwdV9jdHhfZ2V0X2VudGl0eShz dHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4LCB1MzIgaHdfaXAsIHUzMiBpbnN0YW5jZSwKPiAgIAkJCSAg dTMyIHJpbmcsIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICoqZW50aXR5KQo+ICAgewo+ICsJaW50 IHI7Cj4gKwo+ICAgCWlmIChod19pcCA+PSBBTURHUFVfSFdfSVBfTlVNKSB7Cj4gICAJCURSTV9F UlJPUigidW5rbm93biBIVyBJUCB0eXBlOiAlZFxuIiwgaHdfaXApOwo+ICAgCQlyZXR1cm4gLUVJ TlZBTDsKPiBAQCAtMjQ1LDYgKzI1NiwxMyBAQCBpbnQgYW1kZ3B1X2N0eF9nZXRfZW50aXR5KHN0 cnVjdCBhbWRncHVfY3R4ICpjdHgsIHUzMiBod19pcCwgdTMyIGluc3RhbmNlLAo+ICAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgIAl9Cj4gICAKPiArCWlmIChjdHgtPmVudGl0aWVzW2h3X2lwXVtyaW5n XS5zZXF1ZW5jZSA9PSAtMSkgewo+ICsJCXIgPSBhbWRncHVfY3R4X2luaXRfZW50aXR5KGN0eCwg aHdfaXApOwo+ICsKPiArCQlpZiAocikKPiArCQkJcmV0dXJuIHI7Cj4gKwl9Cj4gKwo+ICAgCSpl bnRpdHkgPSAmY3R4LT5lbnRpdGllc1tod19pcF1bcmluZ10uZW50aXR5Owo+ICAgCXJldHVybiAw Owo+ICAgfQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K YW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4