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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 4FA21CD5BD5 for ; Thu, 28 May 2026 18:56:44 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 811B610F57E; Thu, 28 May 2026 18:56:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="YbJBEHFs"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6427E10F57E for ; Thu, 28 May 2026 18:56:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From: References:To:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To:Cc: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=X/4dOKqfdpaAMhOZRsLuzWvKhDAyX7Vs6E7WcICztQU=; b=YbJBEHFsIcoHlIU4jSXrU5lbtz pgQvYScW5CDYqjuNV9M12TpndJ3o0f27cAUVFePCar2QbwGAYxYx4pU61tBgxkDqa1BeZQ47SkVqL 0QLr0k8UgXtFkfazW+t1EmfcfZ304F7pG5Lhk0nCd2+voomS5kMuIKfgt9QChknyp54okjZeGCcpC CDWnqVZ1pmrOnwTjHGYXi/mq8RUHkUTEq/yZDbFBx6KiYhT7UfRF3P6iT58roTv2HYItuRPFBvJke LjtDPH7PdprxN90ADjQlNeR7hYPYQQ6L9lVVgrNNzBZ+hpIpxNW1oxtwmfE4s1nRk83zt1OW0nTdZ Ty+/Qb8Q==; Received: from [189.7.87.67] (helo=[192.168.0.2]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_128_GCM:128) (Exim) id 1wSfu5-009VbN-1A; Thu, 28 May 2026 20:56:25 +0200 Message-ID: <34b59ada-940b-46ce-b376-bc372190633b@igalia.com> Date: Thu, 28 May 2026 15:56:17 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3] accel: ethosu: Add performance counter support To: Tomeu Vizoso , "Rob Herring (Arm)" , Tomeu Vizoso , Oded Gabbay , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Kees Cook , "Gustavo A. R. Silva" , open list , "open list:ARM ETHOS-U NPU DRIVER" , open "list:KERNEL" HARDENING "(not" covered by other "areas):Keyword:b__counted_by(_le|_be)?b" References: <20260515032625.1880618-1-robh@kernel.org> <20260523083730.255310-1-tomeu@tomeuvizoso.net> From: =?UTF-8?Q?Ma=C3=ADra_Canal?= Content-Language: en-US Autocrypt: addr=mcanal@igalia.com; keydata= xsBNBGcCwywBCADgTji02Sv9zjHo26LXKdCaumcSWglfnJ93rwOCNkHfPIBll85LL9G0J7H8 /PmEL9y0LPo9/B3fhIpbD8VhSy9Sqz8qVl1oeqSe/rh3M+GceZbFUPpMSk5pNY9wr5raZ63d gJc1cs8XBhuj1EzeE8qbP6JAmsL+NMEmtkkNPfjhX14yqzHDVSqmAFEsh4Vmw6oaTMXvwQ40 SkFjtl3sr20y07cJMDe++tFet2fsfKqQNxwiGBZJsjEMO2T+mW7DuV2pKHr9aifWjABY5EPw G7qbrh+hXgfT+njAVg5+BcLz7w9Ju/7iwDMiIY1hx64Ogrpwykj9bXav35GKobicCAwHABEB AAHNIE1hw61yYSBDYW5hbCA8bWNhbmFsQGlnYWxpYS5jb20+wsCRBBMBCAA7FiEE+ORdfQEW dwcppnfRP/MOinaI+qoFAmcCwywCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ P/MOinaI+qoUBQgAqz2gzUP7K3EBI24+a5FwFlruQGtim85GAJZXToBtzsfGLLVUSCL3aF/5 O335Bh6ViSBgxmowIwVJlS/e+L95CkTGzIIMHgyUZfNefR2L3aZA6cgc9z8cfow62Wu8eXnq GM/+WWvrFQb/dBKKuohfBlpThqDWXxhozazCcJYYHradIuOM8zyMtCLDYwPW7Vqmewa+w994 7Lo4CgOhUXVI2jJSBq3sgHEPxiUBOGxvOt1YBg7H9C37BeZYZxFmU8vh7fbOsvhx7Aqu5xV7 FG+1ZMfDkv+PixCuGtR5yPPaqU2XdjDC/9mlRWWQTPzg74RLEw5sz/tIHQPPm6ROCACFls7A TQRnAsMsAQgAxTU8dnqzK6vgODTCW2A6SAzcvKztxae4YjRwN1SuGhJR2isJgQHoOH6oCItW Xc1CGAWnci6doh1DJvbbB7uvkQlbeNxeIz0OzHSiB+pb1ssuT31Hz6QZFbX4q+crregPIhr+ 0xeDi6Mtu+paYprI7USGFFjDUvJUf36kK0yuF2XUOBlF0beCQ7Jhc+UoI9Akmvl4sHUrZJzX LMeajARnSBXTcig6h6/NFVkr1mi1uuZfIRNCkxCE8QRYebZLSWxBVr3h7dtOUkq2CzL2kRCK T2rKkmYrvBJTqSvfK3Ba7QrDg3szEe+fENpL3gHtH6h/XQF92EOulm5S5o0I+ceREwARAQAB wsB2BBgBCAAgFiEE+ORdfQEWdwcppnfRP/MOinaI+qoFAmcCwywCGwwACgkQP/MOinaI+qpI zQf+NAcNDBXWHGA3lgvYvOU31+ik9bb30xZ7IqK9MIi6TpZqL7cxNwZ+FAK2GbUWhy+/gPkX it2gCAJsjo/QEKJi7Zh8IgHN+jfim942QZOkU+p/YEcvqBvXa0zqW0sYfyAxkrf/OZfTnNNE Tr+uBKNaQGO2vkn5AX5l8zMl9LCH3/Ieaboni35qEhoD/aM0Kpf93PhCvJGbD4n1DnRhrxm1 uEdQ6HUjWghEjC+Jh9xUvJco2tUTepw4OwuPxOvtuPTUa1kgixYyG1Jck/67reJzMigeuYFt raV3P8t/6cmtawVjurhnCDuURyhUrjpRhgFp+lW8OGr6pepHol/WFIOQEg== In-Reply-To: <20260523083730.255310-1-tomeu@tomeuvizoso.net> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGkgVG9tZXUsCgpPbiAyMy8wNS8yNiAwNTozNywgVG9tZXUgVml6b3NvIHdyb3RlOgo+IEZyb206 ICJSb2IgSGVycmluZyAoQXJtKSIgPHJvYmhAa2VybmVsLm9yZz4KPiAKPiBUaGUgQXJtIEV0aG9z LVUgTlBVcyBoYXZlIGEgUE1VIHdpdGggcGVyZm9ybWFuY2UgY291bnRlcnMuIFRoZSBQTVUgaC93 Cj4gc3VwcG9ydHMgdXAgdG8gNCAoVTY1KSBvciA4IChVODUpIGNvdW50ZXJzIHdoaWNoIGNhbiBi ZSBwcm9ncmFtbWVkIGZvcgo+IGRpZmZlcmVudCBldmVudHMuIFRoZXJlIGlzIGFsc28gYSBkZWRp Y2F0ZWQgY3ljbGUgY291bnRlci4KPiAKPiBUaGUgQUJJIGFuZCBpbXBsZW1lbnRhdGlvbiBhcmUg Y29waWVkIGZyb20gdGhlIFYzRCBkcml2ZXIuIFRoZSBtYWluCj4gZGlmZmVyZW5jZSBpbiB0aGUg QUJJIGlzIHRoZXJlIGlzIG5vIHF1ZXJ5IEFQSSBmb3IgdGhlIHRoZSBldmVudCBsaXN0Lgo+IFRo ZSBldmVudHMgZGlmZmVyIGJldHdlZW4gdGhlIFU2NSBhbmQgVTg1LCBzbyB0aGUgZXZlbnRzIGxp c3RzIGFyZQo+IG1haW50YWluZWQgaW4gdXNlcnNwYWNlIGFsb25nIHdpdGggb3RoZXIgZGlmZmVy ZW5jZXMgYmV0d2VlbiB0aGUgVTY1IGFuZAo+IFU4NS4KPiAKPiBUaGUgY3ljbGUgY291bnRlciBp cyBhbHdheXMgZW5hYmxlZCB3aGVuIHRoZSBQTVUgaXMgZW5hYmxlZC4gV2hlbiB0aGUKPiB1c2Vy IHJlcXVlc3RzIE4gZXZlbnRzLCByZWFkaW5nIHRoZSBjb3VudGVycyB3aWxsIHJldHVybiB0aGUg TiBldmVudHMKPiBwbHVzIHRoZSBjeWNsZSBjb3VudGVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJv YiBIZXJyaW5nIChBcm0pIDxyb2JoQGtlcm5lbC5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogVG9tZXUg Vml6b3NvIDx0b21ldUB0b21ldXZpem9zby5uZXQ+CgpSZXZpZXdlZC1ieTogTWHDrXJhIENhbmFs IDxtY2FuYWxAaWdhbGlhLmNvbT4KCkp1c3Qgc21hbGwgbml0cyBiZWxvdy4gRmVlbCBmcmVlIHRv IGZpeCBpdCB3aGVuIGFwcGx5aW5nIGl0LgoKPiAtLS0KPiB2MjoKPiAgIC0gVXNlIFhBcnJheSBp bnN0ZWFkIG9mIGlkcgo+ICAgLSBSZXdvcmsgbG9ja2luZyB0byB1c2UgcGVyIGRldmljZSBzcGlu bG9jayB0byBwcm90ZWN0IG1vZGlmeWluZyBhY3RpdmUKPiAgICAgcGVyZm1vbi4gQmFzZWQgb24g cGVuZGluZyBWM0QgY2hhbmdlczoKPiAgICAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIw MjYwNTA4LXYzZC1wZXJmbW9uLWxpZmV0aW1lLXYxLTEtZjViNTY0MmMwODVmQGlnYWxpYS5jb20v Cj4gICAtIEFkZCBtaXNzaW5nIHBlcmZtb24gcHV0cyBpbiBldGhvc3VfaW9jdGxfcGVyZm1vbl9z ZXRfZ2xvYmFsKCkgYW5kCj4gICAgIGV0aG9zdV9pb2N0bF9wZXJmbW9uX2dldF92YWx1ZXMoKSBl cnJvciBwYXRocy4KPiAgIC0gRml4IHJlYWRpbmcgbnVtYmVyIG9mIGNvdW50ZXJzIG9uIFU4NS4K PiAgIC0gQWRkIGRlZmluZXMgTlBVX1JFR19QTUNDTlRSX0NGRwo+IAo+IHYzOgo+ICAgLSBBZGQg ZXhwbGljaXQgcGFkZGluZyB0byBkcm1fZXRob3N1X3BlcmZtb25fZGVzdHJveQo+ICAgLSBGaXgg U1BEWCBsaWNlbnNlIGV4cHJlc3Npb24KPiAgIC0gRml4IGNvbW1lbnQgdHlwb3MKPiAgIC0gQ29u dmVydCBwZXJmbW9uIGxvY2sgZnJvbSBzcGlubG9jayB0byBtdXRleAo+ICAgLSBTaW1wbGlmeSBz d2l0Y2hfcGVyZm1vbiBjb25kaXRpb24gY2hlY2sKPiAgIC0gUmVtb3ZlIHVudXNlZCBldGhvc3Vf cGVyZm1vbl9pbml0Cj4gICAtIEFkZCBsb2NrZGVwX2Fzc2VydF9oZWxkIHRvIGV0aG9zdV9wZXJm bW9uX3N0b3BfbG9ja2VkCj4gLS0tCj4gICBkcml2ZXJzL2FjY2VsL2V0aG9zdS9NYWtlZmlsZSAg ICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZGV2aWNlLmgg IHwgIDMzICsrKwo+ICAgZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jICAgICB8ICAy MyArLQo+ICAgZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5oICAgICB8ICA2MSArKysr Ky0KPiAgIGRyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9qb2IuYyAgICAgfCAgMzkgKysrLQo+ ICAgZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2pvYi5oICAgICB8ICAgMiArCj4gICBkcml2 ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfcGVyZm1vbi5jIHwgMjk4ICsrKysrKysrKysrKysrKysr KysrKysrKysrCj4gICBpbmNsdWRlL3VhcGkvZHJtL2V0aG9zdV9hY2NlbC5oICAgICAgIHwgIDYw ICsrKysrLQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCA1MDQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRp b25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1 X3BlcmZtb24uYwo+IAoKWy4uLl0KCgo+IEBAIC0zMTIsMTEgKzMxOCwxNiBAQCBzdGF0aWMgaW50 IGV0aG9zdV9pbml0KHN0cnVjdCBldGhvc3VfZGV2aWNlICpldGhvc3VkZXYpCj4gICAKPiAgIAll dGhvc3VkZXYtPm5wdV9pbmZvLmlkID0gaWQgPSByZWFkbF9yZWxheGVkKGV0aG9zdWRldi0+cmVn cyArIE5QVV9SRUdfSUQpOwo+ICAgCWV0aG9zdWRldi0+bnB1X2luZm8uY29uZmlnID0gY29uZmln ID0gcmVhZGxfcmVsYXhlZChldGhvc3VkZXYtPnJlZ3MgKyBOUFVfUkVHX0NPTkZJRyk7Cj4gLQoK SSBiZWxpZXZlIHRoaXMgZG9lc24ndCBiZWxvbmcgdG8gdGhpcyBwYXRjaC4KCj4gICAJZXRob3N1 X3NyYW1faW5pdChldGhvc3VkZXYpOwo+ICAgCj4gKwlpZiAoIWV0aG9zdV9pc191NjUoZXRob3N1 ZGV2KSkKPiArCQlldGhvc3VkZXYtPnBtdV9yZWdzICs9IDB4MTAwMDsKPiArCj4gKwlldGhvc3Vk ZXYtPm5wdV9pbmZvLnBtdV9jb3VudGVycyA9IEZJRUxEX0dFVChQTUNSX05VTV9FVkVOVF9DTlRf TUFTSywKPiArCQlyZWFkbF9yZWxheGVkKGV0aG9zdWRldi0+cG11X3JlZ3MgKyBOUFVfUkVHX1BN Q1IpKTsKPiArCj4gICAJZGV2X2luZm8oZXRob3N1ZGV2LT5iYXNlLmRldiwKPiAtCQkgIkV0aG9z LVUgTlBVLCBhcmNoIHYlbGQuJWxkLiVsZCwgcmV2IHIlbGRwJWxkLCBjbWQgc3RyZWFtIHZlciVs ZCwgJWQgTUFDcywgJWRLQiBTUkFNXG4iLAo+ICsJCSAiRXRob3MtVSBOUFUsIGFyY2ggdiVsZC4l bGQuJWxkLCByZXYgciVsZHAlbGQsIGNtZCBzdHJlYW0gdmVyJWxkLCAlZCBNQUNzLCAlZEtCIFNS QU0sICVkIFBNVSBjbnRyc1xuIiwKPiAgIAkJIEZJRUxEX0dFVChJRF9BUkNIX01BSk9SX01BU0ss IGlkKSwKPiAgIAkJIEZJRUxEX0dFVChJRF9BUkNIX01JTk9SX01BU0ssIGlkKSwKPiAgIAkJIEZJ RUxEX0dFVChJRF9BUkNIX1BBVENIX01BU0ssIGlkKSwKPiBAQCAtMzI0LDcgKzMzNSw4IEBAIHN0 YXRpYyBpbnQgZXRob3N1X2luaXQoc3RydWN0IGV0aG9zdV9kZXZpY2UgKmV0aG9zdWRldikKPiAg IAkJIEZJRUxEX0dFVChJRF9WRVJfTUlOT1JfTUFTSywgaWQpLAo+ICAgCQkgRklFTERfR0VUKENP TkZJR19DTURfU1RSRUFNX1ZFUl9NQVNLLCBjb25maWcpLAo+ICAgCQkgMSA8PCBGSUVMRF9HRVQo Q09ORklHX01BQ1NfUEVSX0NDX01BU0ssIGNvbmZpZyksCj4gLQkJIGV0aG9zdWRldi0+bnB1X2lu Zm8uc3JhbV9zaXplIC8gMTAyNCk7Cj4gKwkJIGV0aG9zdWRldi0+bnB1X2luZm8uc3JhbV9zaXpl IC8gMTAyNCwKPiArCQkgZXRob3N1ZGV2LT5ucHVfaW5mby5wbXVfY291bnRlcnMpOwo+ICAgCj4g ICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTM0MywxMSArMzU1LDE2IEBAIHN0YXRpYyBpbnQgZXRo b3N1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gICAJZG1hX3NldF9tYXNr X2FuZF9jb2hlcmVudCgmcGRldi0+ZGV2LCBETUFfQklUX01BU0soNDApKTsKPiAgIAo+ICAgCWV0 aG9zdWRldi0+cmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsK PiArCWV0aG9zdWRldi0+cG11X3JlZ3MgPSBldGhvc3VkZXYtPnJlZ3M7Cj4gICAKPiAgIAlldGhv c3VkZXYtPm51bV9jbGtzID0gZGV2bV9jbGtfYnVsa19nZXRfYWxsKCZwZGV2LT5kZXYsICZldGhv c3VkZXYtPmNsa3MpOwo+ICAgCWlmIChldGhvc3VkZXYtPm51bV9jbGtzIDwgMCkKPiAgIAkJcmV0 dXJuIGV0aG9zdWRldi0+bnVtX2Nsa3M7Cj4gICAKPiArCXJldCA9IGRldm1fbXV0ZXhfaW5pdCgm cGRldi0+ZGV2LCAmZXRob3N1ZGV2LT5wZXJmbW9uX3N0YXRlLmxvY2spOwoKSSBiZWxpZXZlIHRo aXMgc2hvdWxkIGJlIGRybW1fbXV0ZXhfaW5pdCgpIGFzIGl0J3MgYm91bmRlZCBieSB0aGUgRFJN CmRldmljZS4KCj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAgCXJldCA9IGV0 aG9zdV9qb2JfaW5pdChldGhvc3VkZXYpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7 CgpbLi4uXQoKPiArCj4gK3ZvaWQgZXRob3N1X3BlcmZtb25fcHV0KHN0cnVjdCBldGhvc3VfcGVy Zm1vbiAqcGVyZm1vbikKPiArewo+ICsJaWYgKHBlcmZtb24gJiYgcmVmY291bnRfZGVjX2FuZF90 ZXN0KCZwZXJmbW9uLT5yZWZjbnQpKSB7Cj4gKwkJa2ZyZWUocGVyZm1vbik7Cj4gKwl9CgpObyBi cmFja2V0cyBuZWVkZWQuCgo+ICt9Cj4gKwo+ICt2b2lkIGV0aG9zdV9wZXJmbW9uX3N0YXJ0KHN0 cnVjdCBldGhvc3VfZGV2aWNlICpldGhvc3UsIHN0cnVjdCBldGhvc3VfcGVyZm1vbiAqcGVyZm1v bikKPiArewo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwl1OCBuY291bnRlcnM7Cj4gKwl1MzIgbWFz azsKCmxvY2tkZXBfYXNzZXJ0X2hlbGQ/Cgo+ICsKPiArCWlmIChXQVJOX09OX09OQ0UoIXBlcmZt b24gfHwgZXRob3N1LT5wZXJmbW9uX3N0YXRlLmFjdGl2ZSkpCj4gKwkJcmV0dXJuOwo+ICsKPiAr CXdyaXRlbF9yZWxheGVkKFBNQ1JfQ05UX0VOLCBldGhvc3UtPnBtdV9yZWdzICsgTlBVX1JFR19Q TUNSKTsKPiArCXdyaXRlbF9yZWxheGVkKFBNVV9FVl9UWVBFX0NZQ0xFUywgZXRob3N1LT5wbXVf cmVncyArIE5QVV9SRUdfUE1DQ05UUl9DRkcpOwo+ICsKPiArCW1hc2sgPSAweDgwMDAwMDAwOwo+ ICsJbmNvdW50ZXJzID0gcGVyZm1vbi0+bmNvdW50ZXJzIC0gMTsKPiArCWlmIChuY291bnRlcnMp Cj4gKwkJbWFzayB8PSBHRU5NQVNLKG5jb3VudGVycyAtIDEsIDApOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBuY291bnRlcnM7IGkrKykKPiArCQl3cml0ZWxfcmVsYXhlZChwZXJmbW9uLT5jb3Vu dGVyc1tpXSwgZXRob3N1LT5wbXVfcmVncyArIE5QVV9SRUdfUE1VX0VWVFlQRVIoaSkpOwo+ICsK PiArCXdyaXRlbF9yZWxheGVkKG1hc2ssIGV0aG9zdS0+cG11X3JlZ3MgKyBOUFVfUkVHX1BNQ05U RU5TRVQpOwo+ICsJd3JpdGVsX3JlbGF4ZWQoUE1DUl9DTlRfRU4gfCBQTUNSX0VWRU5UX0NOVF9S U1QgfCBQTUNSX0NZQ0xFX0NOVF9SU1QsCj4gKwkJZXRob3N1LT5wbXVfcmVncyArIE5QVV9SRUdf UE1DUik7Cj4gKwlldGhvc3UtPnBlcmZtb25fc3RhdGUuYWN0aXZlID0gcGVyZm1vbjsKPiArfQo+ ICsKPiArdm9pZCBldGhvc3VfcGVyZm1vbl9zdG9wX2xvY2tlZChzdHJ1Y3QgZXRob3N1X2Rldmlj ZSAqZXRob3N1LCBzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb24sCj4gKwkJCQlib29sIGNh cHR1cmUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBpOwo+ICsJdTggbmNvdW50ZXJzOwo+ICsJdTMy IG1hc2s7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZXRob3N1LT5wZXJmbW9uX3N0YXRl LmxvY2spOwo+ICsKPiArCWlmICghcGVyZm1vbiB8fCBwZXJmbW9uICE9IGV0aG9zdS0+cGVyZm1v bl9zdGF0ZS5hY3RpdmUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCW5jb3VudGVycyA9IHBlcmZtb24t Pm5jb3VudGVycyAtIDE7Cj4gKwo+ICsJaWYgKCFwbV9ydW50aW1lX2dldF9pZl9hY3RpdmUoZXRo b3N1LT5iYXNlLmRldikpIHsKPiArCQlldGhvc3UtPnBlcmZtb25fc3RhdGUuYWN0aXZlID0gTlVM TDsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJaWYgKGNhcHR1cmUpIHsKPiArCQlmb3IgKGkg PSAwOyBpIDwgbmNvdW50ZXJzOyBpKyspCj4gKwkJCXBlcmZtb24tPnZhbHVlc1tpXSArPSByZWFk bF9yZWxheGVkKGV0aG9zdS0+cG11X3JlZ3MgKyBOUFVfUkVHX1BNVV9FVkNOVFIoaSkpOwoKQSBu ZXcgbGluZSBoZXJlIHdvdWxkIG1ha2UgdGhlIGNvZGUgYSBiaXQgbW9yZSByZWFkYWJsZS4KCj4g KwkJcGVyZm1vbi0+dmFsdWVzW25jb3VudGVyc10gKz0KPiArCQkJcmVhZGxfcmVsYXhlZChldGhv c3UtPnBtdV9yZWdzICsgTlBVX1JFR19QTUNDTlRSX0xPKSB8Cj4gKwkJCSh1NjQpcmVhZGxfcmVs YXhlZChldGhvc3UtPnBtdV9yZWdzICsgTlBVX1JFR19QTUNDTlRSX0hJKSA8PCAzMjsKPiArCX0K PiArCj4gKwltYXNrID0gMHg4MDAwMDAwMDsKPiArCWlmIChuY291bnRlcnMpCj4gKwkJbWFzayB8 PSBHRU5NQVNLKG5jb3VudGVycyAtIDEsIDApOwo+ICsJd3JpdGVsX3JlbGF4ZWQobWFzaywgZXRo b3N1LT5wbXVfcmVncyArIE5QVV9SRUdfUE1DTlRFTkNMUik7Cj4gKwo+ICsJd3JpdGVsX3JlbGF4 ZWQoMCwgZXRob3N1LT5wbXVfcmVncyArIE5QVV9SRUdfUE1DUik7Cj4gKwlldGhvc3UtPnBlcmZt b25fc3RhdGUuYWN0aXZlID0gTlVMTDsKPiArCj4gKwlwbV9ydW50aW1lX3B1dChldGhvc3UtPmJh c2UuZGV2KTsKPiArfQo+ICsKPiArdm9pZCBldGhvc3VfcGVyZm1vbl9zdG9wKHN0cnVjdCBldGhv c3VfZGV2aWNlICpldGhvc3UsIHN0cnVjdCBldGhvc3VfcGVyZm1vbiAqcGVyZm1vbiwKPiArCQkJ IGJvb2wgY2FwdHVyZSkKPiArewo+ICsJaWYgKCFwZXJmbW9uKQo+ICsJCXJldHVybjsKPiArCj4g KwlndWFyZChtdXRleCkoJmV0aG9zdS0+cGVyZm1vbl9zdGF0ZS5sb2NrKTsKPiArCWV0aG9zdV9w ZXJmbW9uX3N0b3BfbG9ja2VkKGV0aG9zdSwgcGVyZm1vbiwgY2FwdHVyZSk7Cj4gK30KPiArCj4g K3N0cnVjdCBldGhvc3VfcGVyZm1vbiAqZXRob3N1X3BlcmZtb25fZmluZChzdHJ1Y3QgZXRob3N1 X2ZpbGVfcHJpdiAqZXRob3N1X3ByaXYsIGludCBpZCkKPiArewo+ICsJc3RydWN0IGV0aG9zdV9w ZXJmbW9uICpwZXJmbW9uOwo+ICsKPiArCXhhX2xvY2soJmV0aG9zdV9wcml2LT5wZXJmbW9ucyk7 Cj4gKwlwZXJmbW9uID0geGFfbG9hZCgmZXRob3N1X3ByaXYtPnBlcmZtb25zLCBpZCk7Cj4gKwll dGhvc3VfcGVyZm1vbl9nZXQocGVyZm1vbik7Cj4gKwl4YV91bmxvY2soJmV0aG9zdV9wcml2LT5w ZXJmbW9ucyk7Cj4gKwo+ICsJcmV0dXJuIHBlcmZtb247Cj4gK30KPiArCj4gK3ZvaWQgZXRob3N1 X3BlcmZtb25fb3Blbl9maWxlKHN0cnVjdCBldGhvc3VfZmlsZV9wcml2ICpldGhvc3VfcHJpdikK PiArewo+ICsJeGFfaW5pdF9mbGFncygmZXRob3N1X3ByaXYtPnBlcmZtb25zLCBYQV9GTEFHU19B TExPQzEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBldGhvc3VfcGVyZm1vbl9kZWxldGUoc3Ry dWN0IGV0aG9zdV9maWxlX3ByaXYgKmV0aG9zdV9wcml2LAo+ICsJCQkJIHN0cnVjdCBldGhvc3Vf cGVyZm1vbiAqcGVyZm1vbikKPiArewo+ICsJc3RydWN0IGV0aG9zdV9kZXZpY2UgKmV0aG9zdSA9 IGV0aG9zdV9wcml2LT5lZGV2Owo+ICsKPiArCS8qIElmIHRoZSBhY3RpdmUgcGVyZm1vbiBpcyBi ZWluZyBkZXN0cm95ZWQsIHN0b3AgaXQgZmlyc3QgKi8KPiArCXNjb3BlZF9ndWFyZChtdXRleCwg JmV0aG9zdS0+cGVyZm1vbl9zdGF0ZS5sb2NrKSB7Cj4gKwkJLyogSWYgdGhlIGdsb2JhbCBwZXJm bW9uIGlzIGJlaW5nIGRlc3Ryb3llZCwgc2V0IGl0IHRvIE5VTEwgKi8KPiArCQlpZiAoZXRob3N1 LT5nbG9iYWxfcGVyZm1vbiA9PSBwZXJmbW9uKSB7Cj4gKwkJCWV0aG9zdS0+Z2xvYmFsX3BlcmZt b24gPSBOVUxMOwo+ICsJCQlldGhvc3VfcGVyZm1vbl9wdXQocGVyZm1vbik7Cj4gKwkJfQo+ICsK PiArCQlldGhvc3VfcGVyZm1vbl9zdG9wX2xvY2tlZChldGhvc3UsIHBlcmZtb24sIGZhbHNlKTsK PiArCX0KPiArCj4gKwlldGhvc3VfcGVyZm1vbl9wdXQocGVyZm1vbik7Cj4gK30KPiArCj4gK3Zv aWQgZXRob3N1X3BlcmZtb25fY2xvc2VfZmlsZShzdHJ1Y3QgZXRob3N1X2ZpbGVfcHJpdiAqZXRo b3N1X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBldGhvc3VfcGVyZm1vbiAqcGVyZm1vbjsKPiArCXVu c2lnbmVkIGxvbmcgaWQ7Cj4gKwo+ICsJeGFfZm9yX2VhY2goJmV0aG9zdV9wcml2LT5wZXJmbW9u cywgaWQsIHBlcmZtb24pCj4gKwkJZXRob3N1X3BlcmZtb25fZGVsZXRlKGV0aG9zdV9wcml2LCBw ZXJmbW9uKTsKPiArCj4gKwl4YV9kZXN0cm95KCZldGhvc3VfcHJpdi0+cGVyZm1vbnMpOwo+ICt9 Cj4gKwo+ICtpbnQgZXRob3N1X2lvY3RsX3BlcmZtb25fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gKwkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp Cj4gK3sKPiArCXN0cnVjdCBldGhvc3VfZmlsZV9wcml2ICpldGhvc3VfcHJpdiA9IGZpbGVfcHJp di0+ZHJpdmVyX3ByaXY7Cj4gKwlzdHJ1Y3QgZHJtX2V0aG9zdV9wZXJmbW9uX2NyZWF0ZSAqcmVx ID0gZGF0YTsKPiArCXN0cnVjdCBldGhvc3VfZGV2aWNlICpldGhvc3UgPSB0b19ldGhvc3VfZGV2 aWNlKGRldik7Cj4gKwlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb247Cj4gKwl1bnNpZ25l ZCBpbnQgaSwgZXZlbnRfbWF4Owo+ICsJaW50IHJldDsKPiArCXUzMiBpZDsKPiArCj4gKwkvKiBO dW1iZXIgb2YgbW9uaXRvcmVkIGNvdW50ZXJzIGNhbm5vdCBleGNlZWQgSFcgbGltaXRzLiAqLwo+ ICsJaWYgKHJlcS0+bmNvdW50ZXJzID4gZXRob3N1LT5ucHVfaW5mby5wbXVfY291bnRlcnMpCgpG ZWVsIGZyZWUgdG8gaWdub3JlIHRoaXMgY29tbWVudCBpZiBJJ20gbWlzdGFrZW4sIGJ1dCBJSVVD LCBwbXVfY291bnRlcnMKaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvdW50ZXJzICppbmNsdWRp bmcqIGN5Y2xlIGNvdW50ZXIuIElmCnBtdV9jb3VudGVycyBpbmRlZWQgaW5jbHVkZXMgY3ljbGUg Y291bnRlciwgSSBiZWxpZXZlIHRoaXMgc2hvdWxkIGJlIGEgPj0uCgpCZXN0IHJlZ2FyZHMsCi0g TWHDrXJhCgo=