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 73D5A105F781 for ; Fri, 13 Mar 2026 09:18:02 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D7D7B10EB61; Fri, 13 Mar 2026 09:18:01 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=onurozkan.dev header.i=@onurozkan.dev header.b="o6V5EXYb"; dkim-atps=neutral Received: from forward100a.mail.yandex.net (forward100a.mail.yandex.net [178.154.239.83]) by gabe.freedesktop.org (Postfix) with ESMTPS id 717A710EB56 for ; Fri, 13 Mar 2026 09:17:56 +0000 (UTC) Received: from mail-nwsmtp-smtp-production-main-81.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-81.vla.yp-c.yandex.net [IPv6:2a02:6b8:c0f:571a:0:640:23e3:0]) by forward100a.mail.yandex.net (Yandex) with ESMTPS id 1F36BC0210; Fri, 13 Mar 2026 12:17:55 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-81.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 3HEusrTGkmI0-lTVYqrRv; Fri, 13 Mar 2026 12:17:54 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=onurozkan.dev; s=mail; t=1773393474; bh=9dj0+25F18WQitVKF1FKkRi87RpcIXAE7se35EAxq/U=; h=Cc:Message-ID:References:Date:In-Reply-To:Subject:To:From; b=o6V5EXYbZIrlufNMT5CY6vcHF7CLZMGWPOQIIQNWOypaP9l6gc+r731hUx6nvR8zA 1SDMpbmI/bhyJmP/hzKn5QuXQ73NRm+kLVhDQeHKxs7sY/Sj0jJH3z8Sw7bG6kSm5p EFx1e4qthJCkZb97tKcrNIBUk9452wNT+ztqElNs= Authentication-Results: mail-nwsmtp-smtp-production-main-81.vla.yp-c.yandex.net; dkim=pass header.i=@onurozkan.dev From: =?UTF-8?q?Onur=20=C3=96zkan?= To: linux-kernel@vger.kernel.org Cc: dakr@kernel.org, aliceryhl@google.com, daniel.almeida@collabora.com, airlied@gmail.com, simona@ffwll.ch, dri-devel@lists.freedesktop.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Onur=20=C3=96zkan?= , Deborah Brouwer Subject: [PATCH v1 RESEND 4/4] drm/tyr: add GPU reset handling Date: Fri, 13 Mar 2026 12:16:44 +0300 Message-ID: <20260313091646.16938-5-work@onurozkan.dev> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20260313091646.16938-1-work@onurozkan.dev> References: <20260313091646.16938-1-work@onurozkan.dev> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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" TW92ZSBUeXIgcmVzZXQgbG9naWMgaW50byBhIG5ldyByZXNldCBtb2R1bGUgYW5kIGFkZCBhc3lu YyByZXNldCB3b3JrLgoKVGhpcyBhZGRzOgotIFJlc2V0SGFuZGxlIHdpdGggaW50ZXJuYWwgY29u dHJvbGxlciBzdGF0ZQotIGEgZGVkaWNhdGVkIG9yZGVyZWQgcmVzZXQgd29ya3F1ZXVlCi0gYSBw ZW5kaW5nIGZsYWcgdG8gYXZvaWQgZHVwbGljYXRlIHF1ZXVlZCByZXNldHMKLSBydW5fcmVzZXQo KSBhcyB0aGUgc2hhcmVkIHN5bmNocm9ub3VzIHJlc2V0IGhlbHBlcgoKUHJvYmUgbm93IGNhbGxz IHJlc2V0OjpydW5fcmVzZXQoKSBiZWZvcmUgbm9ybWFsIGluaXQuIERyaXZlciBkYXRhIG5vdwpr ZWVwcyBSZXNldEhhbmRsZSBzbyByZXNldCB3b3JrIGlzIGRyYWluZWQgYmVmb3JlIGNsb2NrcyBh bmQgcmVndWxhdG9ycwphcmUgZHJvcHBlZC4KClRlc3RlZC1ieTogRGVib3JhaCBCcm91d2VyIDxk ZWJvcmFoLmJyb3V3ZXJAY29sbGFib3JhLmNvbT4KU2lnbmVkLW9mZi1ieTogT251ciDDlnprYW4g PHdvcmtAb251cm96a2FuLmRldj4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdHlyL2RyaXZlci5ycyB8 ICA0MCArKystLS0tLQogZHJpdmVycy9ncHUvZHJtL3R5ci9yZXNldC5ycyAgfCAxODAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3R5ci90eXIucnMg ICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3R5ci9yZXNldC5ycwoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzIGIvZHJpdmVycy9ncHUv ZHJtL3R5ci9kcml2ZXIucnMKaW5kZXggZjc5NTE4MDRlNGUwLi5jODAyMzhhMjFmZjIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS90eXIvZHJpdmVyLnJzCkBAIC02LDExICs2LDggQEAKICAgICAgICAgT3B0aW9uYWxDbGssIC8v CiAgICAgfSwKICAgICBkZXZpY2U6OnsKLSAgICAgICAgQm91bmQsCi0gICAgICAgIENvcmUsCi0g ICAgICAgIERldmljZSwgLy8KKyAgICAgICAgQ29yZSwgLy8KICAgICB9LAotICAgIGRldnJlczo6 RGV2cmVzLAogICAgIGRtYTo6ewogICAgICAgICBEZXZpY2UgYXMgRG1hRGV2aWNlLAogICAgICAg ICBEbWFNYXNrLCAvLwpAQCAtMjIsMTAgKzE5LDcgQEAKICAgICAgICAgUmVnaXN0ZXJlZCwKICAg ICAgICAgVW5yZWdpc3RlcmVkRGV2aWNlLCAvLwogICAgIH0sCi0gICAgaW86OnBvbGwsCi0gICAg bmV3X211dGV4LAotICAgIG9mLAotICAgIHBsYXRmb3JtLAorICAgIG5ld19tdXRleCwgb2YsIHBs YXRmb3JtLAogICAgIHByZWx1ZGU6OiosCiAgICAgcmVndWxhdG9yLAogICAgIHJlZ3VsYXRvcjo6 UmVndWxhdG9yLApAQCAtMzUsMTcgKzI5LDE1IEBACiAgICAgICAgIEFyYywKICAgICAgICAgTXV0 ZXgsIC8vCiAgICAgfSwKLSAgICB0aW1lLCAvLwogfTsKIAogdXNlIGNyYXRlOjp7CiAgICAgZmls ZTo6VHlyRHJtRmlsZURhdGEsCiAgICAgZnc6OkZpcm13YXJlLAogICAgIGdlbTo6Qm9EYXRhLAot ICAgIGdwdSwKICAgICBncHU6OkdwdUluZm8sCiAgICAgbW11OjpNbXUsCi0gICAgcmVncywgLy8K KyAgICByZXNldCwgLy8KIH07CiAKIHB1YihjcmF0ZSkgdHlwZSBJb01lbSA9IGtlcm5lbDo6aW86 Om1lbTo6SW9NZW08U1pfMk0+OwpAQCAtNjIsNiArNTQsMTEgQEAgcHViKGNyYXRlKSBzdHJ1Y3Qg VHlyUGxhdGZvcm1Ecml2ZXJEYXRhIHsKIAogI1twaW5fZGF0YV0KIHB1YihjcmF0ZSkgc3RydWN0 IFR5ckRybURldmljZURhdGEgeworICAgIC8vIGBSZXNldEhhbmRsZTo6ZHJvcCgpYCBkcmFpbnMg cXVldWVkL3J1bm5pbmcgd29ya3MgYW5kIHRoaXMgbXVzdCBoYXBwZW4KKyAgICAvLyBiZWZvcmUg Y2xvY2tzL3JlZ3VsYXRvcnMgYXJlIGRyb3BwZWQuIFNvIGtlZXAgdGhpcyBmaWVsZCBiZWZvcmUg dGhlbSB0bworICAgIC8vIGVuc3VyZSB0aGUgY29ycmVjdCBkcm9wIG9yZGVyLgorICAgIHB1Yihj cmF0ZSkgcmVzZXQ6IHJlc2V0OjpSZXNldEhhbmRsZSwKKwogICAgIHB1YihjcmF0ZSkgcGRldjog QVJlZjxwbGF0Zm9ybTo6RGV2aWNlPiwKIAogICAgIHB1YihjcmF0ZSkgZnc6IEFyYzxGaXJtd2Fy ZT4sCkBAIC05MCwyMiArODcsNiBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBUeXJEcm1EZXZpY2VE YXRhIHt9CiAvLyBTQUZFVFk6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHBhdGNo LgogdW5zYWZlIGltcGwgU3luYyBmb3IgVHlyRHJtRGV2aWNlRGF0YSB7fQogCi1mbiBpc3N1ZV9z b2Z0X3Jlc2V0KGRldjogJkRldmljZTxCb3VuZD4sIGlvbWVtOiAmRGV2cmVzPElvTWVtPikgLT4g UmVzdWx0IHsKLSAgICAvLyBDbGVhciBhbnkgc3RhbGUgcmVzZXQtY29tcGxldGUgSVJRIHN0YXRl IGJlZm9yZSBpc3N1aW5nIGEgbmV3IHNvZnQgcmVzZXQuCi0gICAgcmVnczo6R1BVX0lSUV9DTEVB Ui53cml0ZShkZXYsIGlvbWVtLCByZWdzOjpHUFVfSVJRX1JBV1NUQVRfUkVTRVRfQ09NUExFVEVE KT87Ci0gICAgcmVnczo6R1BVX0NNRC53cml0ZShkZXYsIGlvbWVtLCByZWdzOjpHUFVfQ01EX1NP RlRfUkVTRVQpPzsKLQotICAgIHBvbGw6OnJlYWRfcG9sbF90aW1lb3V0KAotICAgICAgICB8fCBy ZWdzOjpHUFVfSVJRX1JBV1NUQVQucmVhZChkZXYsIGlvbWVtKSwKLSAgICAgICAgfHN0YXR1c3wg KnN0YXR1cyAmIHJlZ3M6OkdQVV9JUlFfUkFXU1RBVF9SRVNFVF9DT01QTEVURUQgIT0gMCwKLSAg ICAgICAgdGltZTo6RGVsdGE6OmZyb21fbWlsbGlzKDEpLAotICAgICAgICB0aW1lOjpEZWx0YTo6 ZnJvbV9taWxsaXMoMTAwKSwKLSAgICApCi0gICAgLmluc3BlY3RfZXJyKHxffCBkZXZfZXJyIShk ZXYsICJHUFUgcmVzZXQgZmFpbGVkLiIpKT87Ci0KLSAgICBPaygoKSkKLX0KLQoga2VybmVsOjpv Zl9kZXZpY2VfdGFibGUhKAogICAgIE9GX1RBQkxFLAogICAgIE1PRFVMRV9PRl9UQUJMRSwKQEAg LTEzOCw4ICsxMTksNyBAQCBmbiBwcm9iZSgKICAgICAgICAgbGV0IHJlcXVlc3QgPSBwZGV2Lmlv X3JlcXVlc3RfYnlfaW5kZXgoMCkub2tfb3IoRU5PREVWKT87CiAgICAgICAgIGxldCBpb21lbSA9 IEFyYzo6cGluX2luaXQocmVxdWVzdC5pb21hcF9zaXplZDo6PFNaXzJNPigpLCBHRlBfS0VSTkVM KT87CiAKLSAgICAgICAgaXNzdWVfc29mdF9yZXNldChwZGV2LmFzX3JlZigpLCAmaW9tZW0pPzsK LSAgICAgICAgZ3B1OjpsMl9wb3dlcl9vbihwZGV2LmFzX3JlZigpLCAmaW9tZW0pPzsKKyAgICAg ICAgcmVzZXQ6OnJ1bl9yZXNldChwZGV2LmFzX3JlZigpLCAmaW9tZW0pPzsKIAogICAgICAgICBs ZXQgZ3B1X2luZm8gPSBHcHVJbmZvOjpuZXcocGRldi5hc19yZWYoKSwgJmlvbWVtKT87CiAgICAg ICAgIGdwdV9pbmZvLmxvZyhwZGV2KTsKQEAgLTE1Myw2ICsxMzMsNyBAQCBmbiBwcm9iZSgKIAog ICAgICAgICBsZXQgdW5pbml0X2RkZXYgPSBVbnJlZ2lzdGVyZWREZXZpY2U6OjxUeXJEcm1Ecml2 ZXI+OjpuZXcocGRldi5hc19yZWYoKSk/OwogICAgICAgICBsZXQgcGxhdGZvcm06IEFSZWY8cGxh dGZvcm06OkRldmljZT4gPSBwZGV2LmludG8oKTsKKyAgICAgICAgbGV0IHJlc2V0ID0gcmVzZXQ6 OlJlc2V0SGFuZGxlOjpuZXcocGxhdGZvcm0uY2xvbmUoKSwgaW9tZW0uY2xvbmUoKSk/OwogCiAg ICAgICAgIGxldCBtbXUgPSBNbXU6Om5ldyhwZGV2LCBpb21lbS5hc19hcmNfYm9ycm93KCksICZn cHVfaW5mbyk/OwogCkBAIC0xNzgsNiArMTU5LDcgQEAgZm4gcHJvYmUoCiAgICAgICAgICAgICAg ICAgICAgIF9tYWxpOiBtYWxpX3JlZ3VsYXRvciwKICAgICAgICAgICAgICAgICAgICAgX3NyYW06 IHNyYW1fcmVndWxhdG9yLAogICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgIHJl c2V0LAogICAgICAgICAgICAgICAgIGdwdV9pbmZvLAogICAgICAgICB9KTsKICAgICAgICAgbGV0 IGRkZXYgPSBSZWdpc3RyYXRpb246Om5ld19mb3JlaWduX293bmVkKHVuaW5pdF9kZGV2LCBwZGV2 LmFzX3JlZigpLCBkYXRhLCAwKT87CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHlyL3Jl c2V0LnJzIGIvZHJpdmVycy9ncHUvZHJtL3R5ci9yZXNldC5ycwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5ZGZhZTk4YjBkZAotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS90eXIvcmVzZXQucnMKQEAgLTAsMCArMSwxODAgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIG9yIE1JVAorCisvLyEgUHJvdmlkZXMgYXN5bmNocm9u b3VzIHJlc2V0IGhhbmRsaW5nIGZvciB0aGUgVHlyIERSTSBkcml2ZXIgdmlhCisvLyEgW2BSZXNl dEhhbmRsZWBdLCB3aGljaCBydW5zIHJlc2V0IHdvcmsgb24gYSBkZWRpY2F0ZWQgb3JkZXJlZAor Ly8hIHdvcmtxdWV1ZSBhbmQgYXZvaWRzIGR1cGxpY2F0ZSBwZW5kaW5nIHJlc2V0cy4KKwordXNl IGtlcm5lbDo6eworICAgIGRldmljZTo6eworICAgICAgICBCb3VuZCwKKyAgICAgICAgRGV2aWNl LCAvLworICAgIH0sCisgICAgZGV2cmVzOjpEZXZyZXMsCisgICAgaW86OnBvbGwsCisgICAgcGxh dGZvcm0sCisgICAgcHJlbHVkZTo6KiwKKyAgICBzeW5jOjp7CisgICAgICAgIGFyZWY6OkFSZWYs CisgICAgICAgIGF0b21pYzo6eworICAgICAgICAgICAgQWNxdWlyZSwKKyAgICAgICAgICAgIEF0 b21pYywKKyAgICAgICAgICAgIFJlbGF4ZWQsCisgICAgICAgICAgICBSZWxlYXNlLCAvLworICAg ICAgICB9LAorICAgICAgICBBcmMsCisgICAgfSwKKyAgICB0aW1lLAorICAgIHdvcmtxdWV1ZTo6 eworICAgICAgICBzZWxmLAorICAgICAgICBXb3JrLCAvLworICAgIH0sCit9OworCit1c2UgY3Jh dGU6OnsKKyAgICBkcml2ZXI6OklvTWVtLAorICAgIGdwdSwKKyAgICByZWdzLCAvLworfTsKKwor Ly8vIE1hbmFnZXMgYXN5bmNocm9ub3VzIEdQVSByZXNldCBoYW5kbGluZyBhbmQgZW5zdXJlcyBv bmx5IGEgc2luZ2xlIHJlc2V0CisvLy8gd29yayBpcyBwZW5kaW5nIGF0IGEgdGltZS4KKyNbcGlu X2RhdGFdCitzdHJ1Y3QgQ29udHJvbGxlciB7CisgICAgLy8vIFBsYXRmb3JtIGRldmljZSByZWZl cmVuY2UgbmVlZGVkIGZvciByZXNldCBvcGVyYXRpb25zIGFuZCBsb2dnaW5nLgorICAgIHBkZXY6 IEFSZWY8cGxhdGZvcm06OkRldmljZT4sCisgICAgLy8vIE1hcHBlZCByZWdpc3RlciBzcGFjZSBu ZWVkZWQgZm9yIHJlc2V0IG9wZXJhdGlvbnMuCisgICAgaW9tZW06IEFyYzxEZXZyZXM8SW9NZW0+ PiwKKyAgICAvLy8gQXRvbWljIGZsYWcgZm9yIGNvbnRyb2xsaW5nIHRoZSBzY2hlZHVsaW5nIHBl bmRpbmcgc3RhdGUuCisgICAgcGVuZGluZzogQXRvbWljPGJvb2w+LAorICAgIC8vLyBEZWRpY2F0 ZWQgb3JkZXJlZCB3b3JrcXVldWUgZm9yIHJlc2V0IG9wZXJhdGlvbnMuCisgICAgd3E6IHdvcmtx dWV1ZTo6T3JkZXJlZFF1ZXVlLAorICAgIC8vLyBXb3JrIGl0ZW0gYmFja2luZyBhc3luYyByZXNl dCBwcm9jZXNzaW5nLgorICAgICNbcGluXQorICAgIHdvcms6IFdvcms8Q29udHJvbGxlcj4sCit9 CisKK2tlcm5lbDo6aW1wbF9oYXNfd29yayEgeworICAgIGltcGwgSGFzV29yazxDb250cm9sbGVy PiBmb3IgQ29udHJvbGxlciB7IHNlbGYud29yayB9Cit9CisKK2ltcGwgd29ya3F1ZXVlOjpXb3Jr SXRlbSBmb3IgQ29udHJvbGxlciB7CisgICAgdHlwZSBQb2ludGVyID0gQXJjPFNlbGY+OworCisg ICAgZm4gcnVuKHRoaXM6IEFyYzxTZWxmPikgeworICAgICAgICB0aGlzLnJlc2V0X3dvcmsoKTsK KyAgICB9Cit9CisKK2ltcGwgQ29udHJvbGxlciB7CisgICAgLy8vIENyZWF0ZXMgYSBbYENvbnRy b2xsZXJgXSBpbnN0YW5jZS4KKyAgICBmbiBuZXcocGRldjogQVJlZjxwbGF0Zm9ybTo6RGV2aWNl PiwgaW9tZW06IEFyYzxEZXZyZXM8SW9NZW0+PikgLT4gUmVzdWx0PEFyYzxTZWxmPj4geworICAg ICAgICBsZXQgd3EgPSB3b3JrcXVldWU6Ok9yZGVyZWRRdWV1ZTo6bmV3KGMidHlyLXJlc2V0LXdx IiwgMCk/OworCisgICAgICAgIEFyYzo6cGluX2luaXQoCisgICAgICAgICAgICB0cnlfcGluX2lu aXQhKFNlbGYgeworICAgICAgICAgICAgICAgIHBkZXYsCisgICAgICAgICAgICAgICAgaW9tZW0s CisgICAgICAgICAgICAgICAgcGVuZGluZzogQXRvbWljOjpuZXcoZmFsc2UpLAorICAgICAgICAg ICAgICAgIHdxLAorICAgICAgICAgICAgICAgIHdvcmsgPC0ga2VybmVsOjpuZXdfd29yayEoInR5 cjo6cmVzZXQiKSwKKyAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgR0ZQX0tFUk5FTCwKKyAg ICAgICAgKQorICAgIH0KKworICAgIC8vLyBQcm9jZXNzZXMgb25lIHNjaGVkdWxlZCByZXNldCBy ZXF1ZXN0LgorICAgIC8vLworICAgIC8vLyBQYW50aG9yIHJlZmVyZW5jZToKKyAgICAvLy8gLSBk cml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2RldmljZS5jOjpwYW50aG9yX2RldmljZV9y ZXNldF93b3JrKCkKKyAgICBmbiByZXNldF93b3JrKHNlbGY6ICZBcmM8U2VsZj4pIHsKKyAgICAg ICAgZGV2X2luZm8hKHNlbGYucGRldi5hc19yZWYoKSwgIkdQVSByZXNldCB3b3JrIGlzIHN0YXJ0 ZWQuXG4iKTsKKworICAgICAgICAvLyBTQUZFVFk6IGBDb250cm9sbGVyYCBpcyBwYXJ0IG9mIGRy aXZlci1wcml2YXRlIGRhdGEgYW5kIG9ubHkgZXhpc3RzCisgICAgICAgIC8vIHdoaWxlIHRoZSBw bGF0Zm9ybSBkZXZpY2UgaXMgYm91bmQuCisgICAgICAgIGxldCBwZGV2ID0gdW5zYWZlIHsgc2Vs Zi5wZGV2LmFzX3JlZigpLmFzX2JvdW5kKCkgfTsKKyAgICAgICAgaWYgbGV0IEVycihlKSA9IHJ1 bl9yZXNldChwZGV2LCAmc2VsZi5pb21lbSkgeworICAgICAgICAgICAgZGV2X2VyciEoc2VsZi5w ZGV2LmFzX3JlZigpLCAiR1BVIHJlc2V0IGZhaWxlZDogezo/fVxuIiwgZSk7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICBkZXZfaW5mbyEoc2VsZi5wZGV2LmFzX3JlZigpLCAiR1BVIHJl c2V0IHdvcmsgaXMgZG9uZS5cbiIpOworICAgICAgICB9CisKKyAgICAgICAgc2VsZi5wZW5kaW5n LnN0b3JlKGZhbHNlLCBSZWxlYXNlKTsKKyAgICB9Cit9CisKKy8vLyBSZXNldCBoYW5kbGUgdGhh dCBzaHV0cyBkb3duIHBlbmRpbmcgd29yayBncmFjZWZ1bGx5IG9uIGRyb3AuCitwdWIoY3JhdGUp IHN0cnVjdCBSZXNldEhhbmRsZShBcmM8Q29udHJvbGxlcj4pOworCitpbXBsIFJlc2V0SGFuZGxl IHsKKyAgICAvLy8gQ3JlYXRlcyBhIFtgUmVzZXRIYW5kbGVgXSBpbnN0YW5jZS4KKyAgICBwdWIo Y3JhdGUpIGZuIG5ldyhwZGV2OiBBUmVmPHBsYXRmb3JtOjpEZXZpY2U+LCBpb21lbTogQXJjPERl dnJlczxJb01lbT4+KSAtPiBSZXN1bHQ8U2VsZj4geworICAgICAgICBPayhTZWxmKENvbnRyb2xs ZXI6Om5ldyhwZGV2LCBpb21lbSk/KSkKKyAgICB9CisKKyAgICAvLy8gU2NoZWR1bGVzIHJlc2V0 IHdvcmsuCisgICAgI1tleHBlY3QoZGVhZF9jb2RlKV0KKyAgICBwdWIoY3JhdGUpIGZuIHNjaGVk dWxlKCZzZWxmKSB7CisgICAgICAgIC8vIFRPRE86IFNpbWlsYXIgdG8gYHBhbnRob3JfZGV2aWNl X3NjaGVkdWxlX3Jlc2V0KClgIGluIFBhbnRob3IsIGFkZCBhCisgICAgICAgIC8vIHBvd2VyIG1h bmFnZW1lbnQgY2hlY2sgb25jZSBUeXIgc3VwcG9ydHMgaXQuCisKKyAgICAgICAgLy8gS2VlcCBv bmx5IG9uZSByZXNldCByZXF1ZXN0IHJ1bm5pbmcgb3IgcXVldWVkLiBJZiBvbmUgaXMgYWxyZWFk eSBwZW5kaW5nLAorICAgICAgICAvLyB3ZSBpZ25vcmUgbmV3IHNjaGVkdWxlIHJlcXVlc3RzLgor ICAgICAgICBpZiBzZWxmLjAucGVuZGluZy5jbXB4Y2hnKGZhbHNlLCB0cnVlLCBSZWxheGVkKS5p c19vaygpCisgICAgICAgICAgICAmJiBzZWxmLjAud3EuZW5xdWV1ZShzZWxmLjAuY2xvbmUoKSku aXNfZXJyKCkKKyAgICAgICAgeworICAgICAgICAgICAgc2VsZi4wLnBlbmRpbmcuc3RvcmUoZmFs c2UsIFJlbGVhc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8vIFJldHVybnMgdHJ1ZSBp ZiBhIHJlc2V0IGlzIHF1ZXVlZCBvciBpbiBwcm9ncmVzcy4KKyAgICAvLy8KKyAgICAvLy8gTm90 ZSB0aGF0IHRoZSBzdGF0ZSBjYW4gY2hhbmdlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSByZXR1cm4u CisgICAgI1tpbmxpbmVdCisgICAgI1tleHBlY3QoZGVhZF9jb2RlKV0KKyAgICBwdWIoY3JhdGUp IGZuIGlzX3BlbmRpbmcoJnNlbGYpIC0+IGJvb2wgeworICAgICAgICBzZWxmLjAucGVuZGluZy5s b2FkKEFjcXVpcmUpCisgICAgfQorfQorCitpbXBsIERyb3AgZm9yIFJlc2V0SGFuZGxlIHsKKyAg ICBmbiBkcm9wKCZtdXQgc2VsZikgeworICAgICAgICAvLyBEcmFpbiBxdWV1ZWQvcnVubmluZyB3 b3JrIGFuZCBibG9jayBmdXR1cmUgcXVldWVpbmcgYXR0ZW1wdHMgZm9yIHRoaXMKKyAgICAgICAg Ly8gd29yayBpdGVtIGJlZm9yZSBjbG9ja3MvcmVndWxhdG9ycyBhcmUgdG9ybiBkb3duLgorICAg ICAgICAvLyBTQUZFVFk6IGRyb3AgZXhlY3V0ZXMgaW4gYSBzbGVlcGFibGUgY29udGV4dC4KKyAg ICAgICAgdW5zYWZlIHsgc2VsZi4wLndvcmsuZGlzYWJsZV9zeW5jKCkgfTsKKyAgICB9Cit9CisK Ky8vLyBJc3N1ZXMgYSBzb2Z0IHJlc2V0IGNvbW1hbmQgYW5kIHdhaXRzIGZvciByZXNldC1jb21w bGV0ZSBJUlEgc3RhdHVzLgorZm4gaXNzdWVfc29mdF9yZXNldChkZXY6ICZEZXZpY2U8Qm91bmQ+ LCBpb21lbTogJkRldnJlczxJb01lbT4pIC0+IFJlc3VsdCB7CisgICAgLy8gQ2xlYXIgYW55IHN0 YWxlIHJlc2V0LWNvbXBsZXRlIElSUSBzdGF0ZSBiZWZvcmUgaXNzdWluZyBhIG5ldyBzb2Z0IHJl c2V0LgorICAgIHJlZ3M6OkdQVV9JUlFfQ0xFQVIud3JpdGUoZGV2LCBpb21lbSwgcmVnczo6R1BV X0lSUV9SQVdTVEFUX1JFU0VUX0NPTVBMRVRFRCk/OworICAgIHJlZ3M6OkdQVV9DTUQud3JpdGUo ZGV2LCBpb21lbSwgcmVnczo6R1BVX0NNRF9TT0ZUX1JFU0VUKT87CisKKyAgICBwb2xsOjpyZWFk X3BvbGxfdGltZW91dCgKKyAgICAgICAgfHwgcmVnczo6R1BVX0lSUV9SQVdTVEFULnJlYWQoZGV2 LCBpb21lbSksCisgICAgICAgIHxzdGF0dXN8ICpzdGF0dXMgJiByZWdzOjpHUFVfSVJRX1JBV1NU QVRfUkVTRVRfQ09NUExFVEVEICE9IDAsCisgICAgICAgIHRpbWU6OkRlbHRhOjpmcm9tX21pbGxp cygxKSwKKyAgICAgICAgdGltZTo6RGVsdGE6OmZyb21fbWlsbGlzKDEwMCksCisgICAgKQorICAg IC5pbnNwZWN0X2Vycih8X3wgZGV2X2VyciEoZGV2LCAiR1BVIHJlc2V0IGZhaWxlZC4iKSk/Owor CisgICAgT2soKCkpCit9CisKKy8vLyBSdW5zIG9uZSBzeW5jaHJvbm91cyBHUFUgcmVzZXQgcGFz cy4KKy8vLworLy8vIEl0cyB2aXNpYmlsaXR5IGlzIGBwdWIoc3VwZXIpYCBvbmx5IHNvIHRoZSBw cm9iZSBwYXRoIGNhbiBydW4gYW4KKy8vLyBpbml0aWFsIHJlc2V0OyBpdCBpcyBub3QgcGFydCBv ZiB0aGlzIG1vZHVsZSdzIHB1YmxpYyBBUEkuCisvLy8KKy8vLyBPbiBzdWNjZXNzLCB0aGUgR1BV IGlzIGxlZnQgaW4gYSBzdGF0ZSBzdWl0YWJsZSBmb3IgcmVpbml0aWFsaXphdGlvbi4KKy8vLwor Ly8vIFRoZSByZXNldCBzZXF1ZW5jZSBpcyBhcyBmb2xsb3dzOgorLy8vIDEuIFRyaWdnZXIgYSBH UFUgc29mdCByZXNldC4KKy8vLyAyLiBXYWl0IGZvciB0aGUgcmVzZXQtY29tcGxldGUgSVJRIHN0 YXR1cy4KKy8vLyAzLiBQb3dlciBMMiBiYWNrIG9uLgorcHViKHN1cGVyKSBmbiBydW5fcmVzZXQo ZGV2OiAmRGV2aWNlPEJvdW5kPiwgaW9tZW06ICZEZXZyZXM8SW9NZW0+KSAtPiBSZXN1bHQgewor ICAgIGlzc3VlX3NvZnRfcmVzZXQoZGV2LCBpb21lbSk/OworICAgIGdwdTo6bDJfcG93ZXJfb24o ZGV2LCBpb21lbSk/OworICAgIE9rKCgpKQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3R5ci90eXIucnMgYi9kcml2ZXJzL2dwdS9kcm0vdHlyL3R5ci5ycwppbmRleCAxOGIwNjY4YmIy MTcuLmQwMzQ5YmM0OWYyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R5ci90eXIucnMK KysrIGIvZHJpdmVycy9ncHUvZHJtL3R5ci90eXIucnMKQEAgLTE0LDYgKzE0LDcgQEAKIG1vZCBn cHU7CiBtb2QgbW11OwogbW9kIHJlZ3M7Cittb2QgcmVzZXQ7CiBtb2Qgc2xvdDsKIG1vZCB2bTsK IAotLSAKMi41MS4yCgo=