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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 79E1DEB64DA for ; Thu, 15 Jun 2023 13:28:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WdRBWaxh5A2Eme79IXq1uFGXW2x9w+ljzdcR0VoWRxc=; b=vXTpHyKQOA5oDs thLt6/pnULr6UFN8zVRQbacBPVqOCwnyHT1kwszG+AKextzNe8d//9vQIVEYerLwmyk4ie+gg0/1g e9P0UM9v4L54zkOLCg8qRWVbtjOpMkK+gZT/VY0C5LQbGZO2nFK4q7+sMR2Br4aob53UD/RDZN+o/ 4n2Jg6nNayvh81QuHI6XoxHRBMxivu+N7HXTbRnL9uid7hEZzygf/Nl+yAIAHmqTJ3GOD1Iw/VFNq Tdn1+ayE2i+mWxn1O1FS8tKIjg2CCK9AyLXoDdhE5qjV9csJLC3WORbFyJHGxkf28+TAAFp0lwBTe lNVEM+Tfpqf75DGgUxOA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q9n1A-00Ezns-0c; Thu, 15 Jun 2023 13:28:04 +0000 Received: from smtp-relay-internal-0.canonical.com ([185.125.188.122]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q9n16-00Ezn0-1r for linux-arm-kernel@lists.infradead.org; Thu, 15 Jun 2023 13:28:02 +0000 Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 4C2623F18A for ; Thu, 15 Jun 2023 13:27:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1686835679; bh=pmiNPwgE3KMFqmooTFrN6Vn4u5JSaY1Dw1DCIEOod+Q=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=UtaKZPdhuJyfTbIMelyxar6Ulvwz/qNXADNe+69vxf8nju1d22Srdo5O6oV6R9xYu mDD1JrBuXD5sVxkg2qgxEoDFV9p0l8o12yKPKoDdk93D+ZT4h39txEZM9YnGKrIHst 0akWnvr2qRjhUVKq4hHns1JKWOfBHB5gP6Eh5AHz6UBD2NUXfMirezwStymOFVIN5T cVe4B5S/vt6pmyQ0oEdWAWXaA0ULwj+l5bP3aXfw1jFplQXCVAMMAqR+LYmTtP2dCU TF7Dhldu+1UJl6c8hogBl+4btn0dC8vNn4gsdpi7X2EdsApcr1A4sovUroTgolauhM Q4M7+0MlNrioA== Received: by mail-lf1-f71.google.com with SMTP id 2adb3069b0e04-4edb90ccaadso6536434e87.3 for ; Thu, 15 Jun 2023 06:27:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686835678; x=1689427678; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pmiNPwgE3KMFqmooTFrN6Vn4u5JSaY1Dw1DCIEOod+Q=; b=XPm8eDUqD0EC2K0YzRgduItsYV80Q/8FgCaZKWGkFYLfq+yRZkIZ3X6jfHDfOVRs5z 7nlPOebtOMQGa6ZBs26oldUmi0uUIdWCPyFwoNJmavoGap3u6dVay/rNSkBo96KCyJ8e t92VG6LFhWsfdNoxh4MNSCyjDqyDzMKQbJzA4N+7JziRqb96czexUpndabdeOsdkPIpc Nsd8bYemRFv92rRXYRxjS3q/7gDQajuZkmKo/rD4bI+nISrU2Uf2Z6wYn+NhHh5Nsbu5 grdK3QPXIBf9cR8hNqVCPfU44MbxhLHv1TxO7Hk3110YkDD2Ck+kOF8BsDXOmSSYp+uR PUQA== X-Gm-Message-State: AC+VfDyHaOCf3wgPqPNvEJZju23v4q8gQKp23NzlA9mR6aqVAZI0WnnR SOgP+G5a5kJoT7KdQnZE4WuL7+KP6miBLuKmIhlcA/w76jWiVVcDyVpn1ep8S4OEaeyhfxD8eJQ 4DoJ1v4lNPuF6zar67vWHBf93hO4hdNguKRDXhKovehyO06r7er7B X-Received: by 2002:adf:d0c7:0:b0:30f:d1e3:22b7 with SMTP id z7-20020adfd0c7000000b0030fd1e322b7mr4523139wrh.6.1686835657060; Thu, 15 Jun 2023 06:27:37 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5tc18E1shmQlP6r5bTT/RRUzeEmZ44GxOZaz29SXvOsOZC9mLd47i2MmyxuogDSrd+n91t+A== X-Received: by 2002:adf:d0c7:0:b0:30f:d1e3:22b7 with SMTP id z7-20020adfd0c7000000b0030fd1e322b7mr4523106wrh.6.1686835656550; Thu, 15 Jun 2023 06:27:36 -0700 (PDT) Received: from [192.168.123.67] (ip-084-119-033-219.um24.pools.vodafone-ip.de. [84.119.33.219]) by smtp.gmail.com with ESMTPSA id h17-20020a5d4311000000b003048477729asm21028155wrq.81.2023.06.15.06.27.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 15 Jun 2023 06:27:36 -0700 (PDT) Message-ID: <51af30bd-9913-8ba6-fa5e-d38e4617a7ef@canonical.com> Date: Thu, 15 Jun 2023 15:27:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v2 07/10] drivers: perf: Implement perf event mmap support in the SBI backend Content-Language: en-US To: Atish Patra Cc: Alexandre Ghiti , Jonathan Corbet , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Will Deacon , Rob Herring , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Aurelien Jarno , Andreas Schwab , Andrew Jones References: <20230512085321.13259-1-alexghiti@rivosinc.com> <20230512085321.13259-8-alexghiti@rivosinc.com> <20230531-7e3740ca04a3fe6e2fd25a01@orel> From: Heinrich Schuchardt In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230615_062800_803570_B78A06E3 X-CRM114-Status: GOOD ( 36.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gNi8xNS8yMyAxMDo0MSwgQXRpc2ggUGF0cmEgd3JvdGU6Cj4gT24gV2VkLCBNYXkgMzEsIDIw MjMgYXQgODowMuKAr0FNIEFuZHJldyBKb25lcyA8YWpvbmVzQHZlbnRhbmFtaWNyby5jb20+IHdy b3RlOgo+Pgo+PiBPbiBGcmksIE1heSAxMiwgMjAyMyBhdCAxMDo1MzoxOEFNICswMjAwLCBBbGV4 YW5kcmUgR2hpdGkgd3JvdGU6Cj4+PiBXZSB1c2VkIHRvIHVuY29uZGl0aW9ubmFsbHkgZXhwb3Nl IHRoZSBjeWNsZSBhbmQgaW5zdHJldCBjc3JzIHRvCj4+PiB1c2Vyc3BhY2UsIHdoaWNoIGdpdmVz IHJpc2UgdG8gc2VjdXJpdHkgY29uY2VybnMuCj4+Pgo+Pj4gU28gbm93IHdlIG9ubHkgYWxsb3cg YWNjZXNzIHRvIGh3IGNvdW50ZXJzIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHBlcmYKPj4+ IGZyYW1ld29yayB3aGljaCB3aWxsIGhhbmRsZSBjb250ZXh0IHN3aXRjaGVzLCBwZXItdGFzayBl dmVudHMuLi5ldGMuIEJ1dAo+Pj4gYXMgd2UgY2Fubm90IGJyZWFrIHVzZXJzcGFjZSwgd2UgZ2l2 ZSB0aGUgdXNlciB0aGUgY2hvaWNlIHRvIGdvIGJhY2sgdG8KPj4+IHRoZSBwcmV2aW91cyBiZWhh dmlvdXIgYnkgc2V0dGluZyB0aGUgc3lzY3RsIHBlcmZfdXNlcl9hY2Nlc3MuCj4+Pgo+Pj4gU2ln bmVkLW9mZi1ieTogQWxleGFuZHJlIEdoaXRpIDxhbGV4Z2hpdGlAcml2b3NpbmMuY29tPgo+Pj4g LS0tCj4+PiAgIGFyY2gvcmlzY3Yva2VybmVsL3BlcmZfZXZlbnQuYyB8ICAxOCArKy0KPj4+ICAg ZHJpdmVycy9wZXJmL3Jpc2N2X3BtdV9zYmkuYyAgIHwgMTk0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLQo+Pj4gICAyIGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9wZXJm X2V2ZW50LmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wZXJmX2V2ZW50LmMKPj4+IGluZGV4IDk0MTc0 YTBmYzI1MS4uM2FmOWNhNDViNDNmIDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwv cGVyZl9ldmVudC5jCj4+PiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wZXJmX2V2ZW50LmMKPj4+ IEBAIC0xLDkgKzEsMTMgQEAKPj4+ICAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9wZXJmL3Jpc2N2X3BtdS5oPgo+Pj4gICAjaW5j bHVkZSA8bGludXgvc2NoZWRfY2xvY2suaD4KPj4+Cj4+PiAgIHZvaWQgYXJjaF9wZXJmX3VwZGF0 ZV91c2VycGFnZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcGVyZl9ldmVudF9tbWFwX3BhZ2UgKnVzZXJwZywgdTY0IG5v dykKPj4+ICAgewo+Pj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfUE1VX1NCSQo+Pj4gKyAgICAgc3Ry dWN0IHJpc2N2X3BtdSAqcnZwbXUgPSB0b19yaXNjdl9wbXUoZXZlbnQtPnBtdSk7Cj4+PiArI2Vu ZGlmCj4+Cj4+IENhbiBhdm9pZCB0aGlzIHBhaXIgb2YgI2lmZGVmLyNlbmRpZidzIGJ5IGp1c3Qg ZGVjbGFyaW5nIHJ2cG11IGluc2lkZSB0aGUKPj4gaWYgYmxvY2sgYmVsb3cgd2hlcmUgaXQncyBu ZWVkZWQuIE9yIGV2ZW4ganVzdCB1c2luZyB0b19yaXNjdl9wbXUoKQo+PiBkaXJlY3RseSBpbiBw bGFjZSBvZiBydnBtdS4KPj4KPj4+ICAgICAgICBzdHJ1Y3QgY2xvY2tfcmVhZF9kYXRhICpyZDsK Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgc2VxOwo+Pj4gICAgICAgIHU2NCBuczsKPj4+IEBAIC0x NCw3ICsxOCwxOSBAQCB2b2lkIGFyY2hfcGVyZl91cGRhdGVfdXNlcnBhZ2Uoc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50LAo+Pj4gICAgICAgIHVzZXJwZy0+Y2FwX3VzZXJfcmRwbWMgPQo+Pj4gICAg ICAgICAgICAgICAgISEoZXZlbnQtPmh3LmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfUkVB RF9DTlQpOwo+Pj4KPj4+IC0gICAgIHVzZXJwZy0+cG1jX3dpZHRoID0gNjQ7Cj4+PiArI2lmZGVm IENPTkZJR19SSVNDVl9QTVVfU0JJCj4+PiArICAgICAvKgo+Pj4gKyAgICAgICogVGhlIGNvdW50 ZXJzIGFyZSA2NC1iaXQgYnV0IHRoZSBwcml2IHNwZWMgZG9lc24ndCBtYW5kYXRlIGFsbCB0aGUK Pj4+ICsgICAgICAqIGJpdHMgdG8gYmUgaW1wbGVtZW50ZWQ6IHRoYXQncyB3aHksIGNvdW50ZXIg d2lkdGggY2FuIHZhcnkgYmFzZWQgb24KPj4+ICsgICAgICAqIHRoZSBjcHUgdmVuZG9yLgo+Pj4g KyAgICAgICovCj4+PiArICAgICBpZiAoZXZlbnQtPnBtdS0+bmFtZSAmJgo+Pj4gKyAgICAgICAg ICFzdHJuY21wKGV2ZW50LT5wbXUtPm5hbWUsCj4+PiArICAgICAgICAgICAgICAgICAgUklTQ1Zf UE1VX1BERVZfTkFNRSwgc2l6ZW9mKFJJU0NWX1BNVV9QREVWX05BTUUpKSkKPj4+ICsgICAgICAg ICAgICAgdXNlcnBnLT5wbWNfd2lkdGggPSBydnBtdS0+Y3RyX2dldF93aWR0aChldmVudC0+aHcu aWR4KSArIDE7Cj4+PiArICAgICBlbHNlCj4+PiArI2VuZGlmCj4+PiArICAgICAgICAgICAgIHVz ZXJwZy0+cG1jX3dpZHRoID0gNjQ7Cj4+Cj4+IENhbiBsZWF2ZSB0aGUgaW5pdGlhbGl6YXRpb24g dG8gNjQgYWJvdmUgdGhlICNpZmRlZiBDT05GSUdfUklTQ1ZfUE1VX1NCSQo+PiBhcyBpcyBhbmQg ZHJvcCB0aGUgZWxzZS4KPj4KPj4+Cj4+PiAgICAgICAgZG8gewo+Pj4gICAgICAgICAgICAgICAg cmQgPSBzY2hlZF9jbG9ja19yZWFkX2JlZ2luKCZzZXEpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGVyZi9yaXNjdl9wbXVfc2JpLmMgYi9kcml2ZXJzL3BlcmYvcmlzY3ZfcG11X3NiaS5jCj4+ PiBpbmRleCAzYjBlZTIxNDgwNTQuLmQ5YmNjNWNjNmRmNSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvcGVyZi9yaXNjdl9wbXVfc2JpLmMKPj4+ICsrKyBiL2RyaXZlcnMvcGVyZi9yaXNjdl9wbXVf c2JpLmMKPj4+IEBAIC0yNCw2ICsyNCwxNCBAQAo+Pj4gICAjaW5jbHVkZSA8YXNtL3NiaS5oPgo+ Pj4gICAjaW5jbHVkZSA8YXNtL2h3Y2FwLmg+Cj4+Pgo+Pj4gKyNkZWZpbmUgU1lTQ1RMX05PX1VT RVJfQUNDRVNTICAgICAgICAwCj4+PiArI2RlZmluZSBTWVNDVExfVVNFUl9BQ0NFU1MgICAxCj4+ PiArI2RlZmluZSBTWVNDVExfTEVHQUNZICAgICAgICAgICAgICAgIDIKPj4+ICsKPj4+ICsjZGVm aW5lIFBFUkZfRVZFTlRfRkxBR19OT19VU0VSX0FDQ0VTUyAgICAgICBCSVQoU1lTQ1RMX05PX1VT RVJfQUNDRVNTKQo+Pj4gKyNkZWZpbmUgUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUNDRVNTICBCSVQo U1lTQ1RMX1VTRVJfQUNDRVNTKQo+Pj4gKyNkZWZpbmUgUEVSRl9FVkVOVF9GTEFHX0xFR0FDWSAg ICAgICAgICAgICAgIEJJVChTWVNDVExfTEVHQUNZKQo+Pj4gKwo+Pj4gICBQTVVfRk9STUFUX0FU VFIoZXZlbnQsICJjb25maWc6MC00NyIpOwo+Pj4gICBQTVVfRk9STUFUX0FUVFIoZmlybXdhcmUs ICJjb25maWc6NjMiKTsKPj4+Cj4+PiBAQCAtNDMsNiArNTEsOSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCAqcmlzY3ZfcG11X2F0dHJfZ3JvdXBzW10gPSB7Cj4+PiAgICAg ICAgTlVMTCwKPj4+ICAgfTsKPj4+Cj4+PiArLyogQWxsb3cgbGVnYWN5IGFjY2VzcyBieSBkZWZh dWx0ICovCj4+PiArc3RhdGljIGludCBzeXNjdGxfcGVyZl91c2VyX2FjY2VzcyBfX3JlYWRfbW9z dGx5ID0gU1lTQ1RMX0xFR0FDWTsKPj4+ICsKPj4KPj4gSSdtIHN0aWxsIG5vdCBpbiBmYXZvciBv ZiB0aGlzLiBIb3BlZnVsbHkgdGhlIGRpc3RybyBkaXNjdXNzaW9ucyByZXN1bHQgaW4KPj4gaXQg YmVpbmcgY2hhbmdlZC4KPj4KPiAKPiBJIGRpZCBub3Qgc2VlIGFueSBmZWVkYmFjayBmcm9tIGRp c3RybyBndXlzLiBJIHRhbGtlZCB0byBEYXZpZCAoZmVkb3JhCj4gbWFpbnRhaW5lcikgYW5kIGhl IGlzIGV2ZW4gb2theSB3aXRoCj4gU1lTQ1RMX05PX1VTRVJfQUNDRVNTIDopLiBJIHdvdWxkIGxv dmUgdG8gaGVhciBiYWNrIGZyb20gb3RoZXJzIChjYydkCj4gYSBmZXcgZGlzdHJvIGZvbGtzIHRv IHRoaXMgdGhyZWFkKS4KCkluIGZ1dHVyZSB3ZSB3aWxsIGhhdmUgdG8gc3VwcG9ydCBzY2VuYXJp b3MgZm9yIGNvbmZpZGVudGlhbCBjb21wdXRlLiAKSGVyZSB3ZSBoYXZlIHRvIGF2b2lkIHRpbWlu ZyBhdHRhY2tzIGFnYWluc3QgdmlydHVhbCBtYWNoaW5lcy4gSWYgYWNjZXNzIAp0byB0aGUgY3lj bGUgcmVnaXN0ZXIgaXMgY3JpdGljYWwsIHRoaXMgaW1wbGllcyB0aGF0IGhpZGluZyBpdCBiZWhp bmQgYSAKc3lzY3RsIHNldHRpbmcgaXMgbm90IGdvb2QgZW5vdWdoLgoKSWYgd2Uga2VlcCB0aGlz IHN5c2N0bCBiYXNlZCBhY2Nlc3MgYXQgYWxsLCBpdCBzaG91bGQgYmUgYmVoaW5kIGEgCktjb25m aWcgc2V0dGluZyB0aGF0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIHdlcmUgdGhlIGhlbHAg dGV4dCAKY2xlYXJseSBpbmRpY2F0ZXMgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCkJlc3Qg cmVnYXJkcwoKSGVpbnJpY2gKCj4gCj4+PiAgIC8qCj4+PiAgICAqIFJJU0MtViBkb2Vzbid0IGhh dmUgaGV0ZXJvZ2VuZW91cyBoYXJ0cyB5ZXQuIFRoaXMgbmVlZCB0byBiZSBwYXJ0IG9mCj4+PiAg ICAqIHBlcl9jcHUgaW4gY2FzZSBvZiBoYXJ0cyB3aXRoIGRpZmZlcmVudCBwbXUgY291bnRlcnMK Pj4+IEBAIC0zMDEsNiArMzEyLDExIEBAIGludCByaXNjdl9wbXVfZ2V0X2hwbV9pbmZvKHUzMiAq aHdfY3RyX3dpZHRoLCB1MzIgKm51bV9od19jdHIpCj4+PiAgIH0KPj4+ICAgRVhQT1JUX1NZTUJP TF9HUEwocmlzY3ZfcG11X2dldF9ocG1faW5mbyk7Cj4+Pgo+Pj4gK3N0YXRpYyB1aW50OF90IHBt dV9zYmlfY3NyX2luZGV4KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPj4+ICt7Cj4+PiArICAg ICByZXR1cm4gcG11X2N0cl9saXN0W2V2ZW50LT5ody5pZHhdLmNzciAtIENTUl9DWUNMRTsKPj4+ ICt9Cj4+PiArCj4+PiAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHBtdV9zYmlfZ2V0X2ZpbHRlcl9m bGFncyhzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCj4+PiAgIHsKPj4+ICAgICAgICB1bnNpZ25l ZCBsb25nIGNmbGFncyA9IDA7Cj4+PiBAQCAtMzI5LDE4ICszNDUsMzQgQEAgc3RhdGljIGludCBw bXVfc2JpX2N0cl9nZXRfaWR4KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPj4+ICAgICAgICBz dHJ1Y3QgY3B1X2h3X2V2ZW50cyAqY3B1YyA9IHRoaXNfY3B1X3B0cihydnBtdS0+aHdfZXZlbnRz KTsKPj4+ICAgICAgICBzdHJ1Y3Qgc2JpcmV0IHJldDsKPj4+ICAgICAgICBpbnQgaWR4Owo+Pj4g LSAgICAgdWludDY0X3QgY2Jhc2UgPSAwOwo+Pj4gKyAgICAgdWludDY0X3QgY2Jhc2UgPSAwLCBj bWFzayA9IHJ2cG11LT5jbWFzazsKPj4+ICAgICAgICB1bnNpZ25lZCBsb25nIGNmbGFncyA9IDA7 Cj4+Pgo+Pj4gICAgICAgIGNmbGFncyA9IHBtdV9zYmlfZ2V0X2ZpbHRlcl9mbGFncyhldmVudCk7 Cj4+PiArCj4+PiArICAgICAvKgo+Pj4gKyAgICAgICogSW4gbGVnYWN5IG1vZGUsIHdlIGhhdmUg dG8gZm9yY2UgdGhlIGZpeGVkIGNvdW50ZXJzIGZvciB0aG9zZSBldmVudHMKPj4+ICsgICAgICAq IGJ1dCBub3QgaW4gdGhlIHVzZXIgYWNjZXNzIG1vZGUgYXMgd2Ugd2FudCB0byB1c2UgdGhlIG90 aGVyIGNvdW50ZXJzCj4+PiArICAgICAgKiB0aGF0IHN1cHBvcnQgc2FtcGxpbmcvZmlsdGVyaW5n Lgo+Pj4gKyAgICAgICovCj4+PiArICAgICBpZiAoaHdjLT5mbGFncyAmIFBFUkZfRVZFTlRfRkxB R19MRUdBQ1kpIHsKPj4+ICsgICAgICAgICAgICAgaWYgKGV2ZW50LT5hdHRyLmNvbmZpZyA9PSBQ RVJGX0NPVU5UX0hXX0NQVV9DWUNMRVMpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBjZmxh Z3MgfD0gU0JJX1BNVV9DRkdfRkxBR19TS0lQX01BVENIOwo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgIGNtYXNrID0gMTsKPj4+ICsgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC0+YXR0ci5j b25maWcgPT0gUEVSRl9DT1VOVF9IV19JTlNUUlVDVElPTlMpIHsKPj4+ICsgICAgICAgICAgICAg ICAgICAgICBjZmxhZ3MgfD0gU0JJX1BNVV9DRkdfRkxBR19TS0lQX01BVENIOwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIGNtYXNrID0gMVVMIDw8IChDU1JfSU5TVFJFVCAtIENTUl9DWUNMRSk7 Cj4+PiArICAgICAgICAgICAgIH0KPj4+ICsgICAgIH0KPj4+ICsKPj4+ICAgICAgICAvKiByZXRy aWV2ZSB0aGUgYXZhaWxhYmxlIGNvdW50ZXIgaW5kZXggKi8KPj4+ICAgI2lmIGRlZmluZWQoQ09O RklHXzMyQklUKQo+Pj4gICAgICAgIHJldCA9IHNiaV9lY2FsbChTQklfRVhUX1BNVSwgU0JJX0VY VF9QTVVfQ09VTlRFUl9DRkdfTUFUQ0gsIGNiYXNlLAo+Pj4gLSAgICAgICAgICAgICAgICAgICAg IHJ2cG11LT5jbWFzaywgY2ZsYWdzLCBod2MtPmV2ZW50X2Jhc2UsIGh3Yy0+Y29uZmlnLAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgIGNtYXNrLCBjZmxhZ3MsIGh3Yy0+ZXZlbnRfYmFzZSwgaHdj LT5jb25maWcsCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGh3Yy0+Y29uZmlnID4+IDMyKTsK Pj4+ICAgI2Vsc2UKPj4+ICAgICAgICByZXQgPSBzYmlfZWNhbGwoU0JJX0VYVF9QTVUsIFNCSV9F WFRfUE1VX0NPVU5URVJfQ0ZHX01BVENILCBjYmFzZSwKPj4+IC0gICAgICAgICAgICAgICAgICAg ICBydnBtdS0+Y21hc2ssIGNmbGFncywgaHdjLT5ldmVudF9iYXNlLCBod2MtPmNvbmZpZywgMCk7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgY21hc2ssIGNmbGFncywgaHdjLT5ldmVudF9iYXNl LCBod2MtPmNvbmZpZywgMCk7Cj4+PiAgICNlbmRpZgo+Pj4gICAgICAgIGlmIChyZXQuZXJyb3Ip IHsKPj4+ICAgICAgICAgICAgICAgIHByX2RlYnVnKCJOb3QgYWJsZSB0byBmaW5kIGEgY291bnRl ciBmb3IgZXZlbnQgJWx4IGNvbmZpZyAlbGx4XG4iLAo+Pj4gQEAgLTQ3NCw2ICs1MDYsMTQgQEAg c3RhdGljIHU2NCBwbXVfc2JpX2N0cl9yZWFkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPj4+ ICAgICAgICByZXR1cm4gdmFsOwo+Pj4gICB9Cj4+Pgo+Pj4gK3N0YXRpYyB2b2lkIHBtdV9zYmlf c2V0X3Njb3VudGVyZW4odm9pZCAqYXJnKQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCA9IChzdHJ1Y3QgcGVyZl9ldmVudCAqKWFyZzsKPj4+ICsKPj4+ICsgICAgIGNz cl93cml0ZShDU1JfU0NPVU5URVJFTiwKPj4+ICsgICAgICAgICAgICAgICBjc3JfcmVhZChDU1Jf U0NPVU5URVJFTikgfCAoMSA8PCBwbXVfc2JpX2Nzcl9pbmRleChldmVudCkpKTsKPj4+ICt9Cj4+ PiArCj4+PiAgIHN0YXRpYyB2b2lkIHBtdV9zYmlfY3RyX3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCwgdTY0IGl2YWwpCj4+PiAgIHsKPj4+ICAgICAgICBzdHJ1Y3Qgc2JpcmV0IHJldDsK Pj4+IEBAIC00OTAsNiArNTMwLDE4IEBAIHN0YXRpYyB2b2lkIHBtdV9zYmlfY3RyX3N0YXJ0KHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdTY0IGl2YWwpCj4+PiAgICAgICAgaWYgKHJldC5lcnJv ciAmJiAocmV0LmVycm9yICE9IFNCSV9FUlJfQUxSRUFEWV9TVEFSVEVEKSkKPj4+ICAgICAgICAg ICAgICAgIHByX2VycigiU3RhcnRpbmcgY291bnRlciBpZHggJWQgZmFpbGVkIHdpdGggZXJyb3Ig JWRcbiIsCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGh3Yy0+aWR4LCBzYmlfZXJyX21hcF9s aW51eF9lcnJubyhyZXQuZXJyb3IpKTsKPj4+ICsKPj4+ICsgICAgIGlmIChod2MtPmZsYWdzICYg UEVSRl9FVkVOVF9GTEFHX1VTRVJfQUNDRVNTICYmCj4+PiArICAgICAgICAgaHdjLT5mbGFncyAm IFBFUkZfRVZFTlRfRkxBR19VU0VSX1JFQURfQ05UKQo+Pj4gKyAgICAgICAgICAgICBwbXVfc2Jp X3NldF9zY291bnRlcmVuKCh2b2lkICopZXZlbnQpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg dm9pZCBwbXVfc2JpX3Jlc2V0X3Njb3VudGVyZW4odm9pZCAqYXJnKQo+Pj4gK3sKPj4+ICsgICAg IHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCA9IChzdHJ1Y3QgcGVyZl9ldmVudCAqKWFyZzsKPj4+ ICsKPj4+ICsgICAgIGNzcl93cml0ZShDU1JfU0NPVU5URVJFTiwKPj4+ICsgICAgICAgICAgICAg ICBjc3JfcmVhZChDU1JfU0NPVU5URVJFTikgJiB+KDEgPDwgcG11X3NiaV9jc3JfaW5kZXgoZXZl bnQpKSk7Cj4+PiAgIH0KPj4+Cj4+PiAgIHN0YXRpYyB2b2lkIHBtdV9zYmlfY3RyX3N0b3Aoc3Ry dWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1bnNpZ25lZCBsb25nIGZsYWcpCj4+PiBAQCAtNDk3LDYg KzU0OSwxMCBAQCBzdGF0aWMgdm9pZCBwbXVfc2JpX2N0cl9zdG9wKHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCwgdW5zaWduZWQgbG9uZyBmbGFnKQo+Pj4gICAgICAgIHN0cnVjdCBzYmlyZXQgcmV0 Owo+Pj4gICAgICAgIHN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3Owo+Pj4K Pj4+ICsgICAgIGlmIChod2MtPmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUNDRVNTICYm Cj4+PiArICAgICAgICAgaHdjLT5mbGFncyAmIFBFUkZfRVZFTlRfRkxBR19VU0VSX1JFQURfQ05U KQo+Pj4gKyAgICAgICAgICAgICBwbXVfc2JpX3Jlc2V0X3Njb3VudGVyZW4oKHZvaWQgKilldmVu dCk7Cj4+PiArCj4+PiAgICAgICAgcmV0ID0gc2JpX2VjYWxsKFNCSV9FWFRfUE1VLCBTQklfRVhU X1BNVV9DT1VOVEVSX1NUT1AsIGh3Yy0+aWR4LCAxLCBmbGFnLCAwLCAwLCAwKTsKPj4+ICAgICAg ICBpZiAocmV0LmVycm9yICYmIChyZXQuZXJyb3IgIT0gU0JJX0VSUl9BTFJFQURZX1NUT1BQRUQp ICYmCj4+PiAgICAgICAgICAgICAgICBmbGFnICE9IFNCSV9QTVVfU1RPUF9GTEFHX1JFU0VUKQo+ Pj4gQEAgLTcwNCwxMCArNzYwLDEzIEBAIHN0YXRpYyBpbnQgcG11X3NiaV9zdGFydGluZ19jcHUo dW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpCj4+PiAgICAgICAgc3Ry dWN0IGNwdV9od19ldmVudHMgKmNwdV9od19ldnQgPSB0aGlzX2NwdV9wdHIocG11LT5od19ldmVu dHMpOwo+Pj4KPj4+ICAgICAgICAvKgo+Pj4gLSAgICAgICogRW5hYmxlIHRoZSBhY2Nlc3MgZm9y IENZQ0xFLCBUSU1FLCBhbmQgSU5TVFJFVCBDU1JzIGZyb20gdXNlcnNwYWNlLAo+Pj4gLSAgICAg ICogYXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIHVBQkkgY29tcGF0aWJpbGl0eS4KPj4+ICsg ICAgICAqIFdlIGtlZXAgZW5hYmxpbmcgdXNlcnNwYWNlIGFjY2VzcyB0byBDWUNMRSwgVElNRSBh bmQgSU5TUkVUIHZpYSB0aGUKPj4+ICsgICAgICAqIGxlZ2FjeSBvcHRpb24gYnV0IHRoYXQgd2ls bCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCj4+PiAgICAgICAgICovCj4+PiAtICAgICBjc3Jf d3JpdGUoQ1NSX1NDT1VOVEVSRU4sIDB4Nyk7Cj4+PiArICAgICBpZiAoc3lzY3RsX3BlcmZfdXNl cl9hY2Nlc3MgPT0gU1lTQ1RMX0xFR0FDWSkKPj4+ICsgICAgICAgICAgICAgY3NyX3dyaXRlKENT Ul9TQ09VTlRFUkVOLCAweDcpOwo+Pj4gKyAgICAgZWxzZQo+Pj4gKyAgICAgICAgICAgICBjc3Jf d3JpdGUoQ1NSX1NDT1VOVEVSRU4sIDB4Mik7Cj4+Pgo+Pj4gICAgICAgIC8qIFN0b3AgYWxsIHRo ZSBjb3VudGVycyBzbyB0aGF0IHRoZXkgY2FuIGJlIGVuYWJsZWQgZnJvbSBwZXJmICovCj4+PiAg ICAgICAgcG11X3NiaV9zdG9wX2FsbChwbXUpOwo+Pj4gQEAgLTg1MSw2ICs5MTAsMTIzIEBAIHN0 YXRpYyB2b2lkIHJpc2N2X3BtdV9kZXN0cm95KHN0cnVjdCByaXNjdl9wbXUgKnBtdSkKPj4+ICAg ICAgICBjcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2UoQ1BVSFBfQVBfUEVSRl9SSVNDVl9TVEFS VElORywgJnBtdS0+bm9kZSk7Cj4+PiAgIH0KPj4+Cj4+PiArc3RhdGljIHZvaWQgcG11X3NiaV9l dmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPj4+ICt7Cj4+PiArICAgICAvKgo+ Pj4gKyAgICAgICogVGhlIHBlcm1pc3Npb25zIGFyZSBzZXQgYXQgZXZlbnRfaW5pdCBzbyB0aGF0 IHdlIGRvIG5vdCBkZXBlbmQKPj4+ICsgICAgICAqIG9uIHRoZSBzeXNjdGwgdmFsdWUgdGhhdCBj YW4gY2hhbmdlLgo+Pj4gKyAgICAgICovCj4+PiArICAgICBpZiAoc3lzY3RsX3BlcmZfdXNlcl9h Y2Nlc3MgPT0gU1lTQ1RMX05PX1VTRVJfQUNDRVNTKQo+Pj4gKyAgICAgICAgICAgICBldmVudC0+ aHcuZmxhZ3MgfD0gUEVSRl9FVkVOVF9GTEFHX05PX1VTRVJfQUNDRVNTOwo+Pj4gKyAgICAgZWxz ZSBpZiAoc3lzY3RsX3BlcmZfdXNlcl9hY2Nlc3MgPT0gU1lTQ1RMX1VTRVJfQUNDRVNTKQo+Pj4g KyAgICAgICAgICAgICBldmVudC0+aHcuZmxhZ3MgfD0gUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUND RVNTOwo+Pj4gKyAgICAgZWxzZQo+Pj4gKyAgICAgICAgICAgICBldmVudC0+aHcuZmxhZ3MgfD0g UEVSRl9FVkVOVF9GTEFHX0xFR0FDWTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgcG11 X3NiaV9ldmVudF9tYXBwZWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBzdHJ1Y3QgbW1fc3Ry dWN0ICptbSkKPj4+ICt7Cj4+PiArICAgICBpZiAoZXZlbnQtPmh3LmZsYWdzICYgUEVSRl9FVkVO VF9GTEFHX05PX1VTRVJfQUNDRVNTKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm47Cj4+PiArCj4+ PiArICAgICAvKiBJbiBsZWdhY3kgbW9kZSwgdGhlIGZpcnN0IDMgQ1NScyBhcmUgYXZhaWxhYmxl LiAqLwo+Pgo+PiBmaXJzdCBhbmQgdGhpcmQKPj4KPj4+ICsgICAgIGlmIChldmVudC0+aHcuZmxh Z3MgJiBQRVJGX0VWRU5UX0ZMQUdfTEVHQUNZKSB7Cj4+PiArICAgICAgICAgICAgIGlmIChldmVu dC0+YXR0ci5jb25maWcgIT0gUEVSRl9DT1VOVF9IV19DUFVfQ1lDTEVTICYmCj4+PiArICAgICAg ICAgICAgICAgICBldmVudC0+YXR0ci5jb25maWcgIT0gUEVSRl9DT1VOVF9IV19JTlNUUlVDVElP TlMpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cj4+PiArICAgICAgICAgICAg IH0KPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAgIC8qCj4+PiArICAgICAgKiBUaGUgdXNlciBt bWFwcGVkIHRoZSBldmVudCB0byBkaXJlY3RseSBhY2Nlc3MgaXQ6IHRoaXMgaXMgd2hlcmUKPj4+ ICsgICAgICAqIHdlIGRldGVybWluZSBiYXNlZCBvbiBzeXNjdGxfcGVyZl91c2VyX2FjY2VzcyBp ZiB3ZSBncmFudCB1c2Vyc3BhY2UKPj4+ICsgICAgICAqIHRoZSBkaXJlY3QgYWNjZXNzIHRvIHRo aXMgZXZlbnQuIFRoYXQgbWVhbnMgdGhhdCB3aXRoaW4gdGhlIHNhbWUKPj4+ICsgICAgICAqIHRh c2ssIHNvbWUgZXZlbnRzIG1heSBiZSBkaXJlY3RseSBhY2Nlc3NpYmxlIGFuZCBzb21lIG90aGVy IG1heSBub3QsCj4+PiArICAgICAgKiBpZiB0aGUgdXNlciBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBz eXNjdGxfcGVyZl91c2VyX2FjY2Vzc3MgaW4gdGhlCj4+PiArICAgICAgKiBtZWFudGltZS4KPj4+ ICsgICAgICAqLwo+Pj4gKwo+Pj4gKyAgICAgZXZlbnQtPmh3LmZsYWdzIHw9IFBFUkZfRVZFTlRf RkxBR19VU0VSX1JFQURfQ05UOwo+Pj4gKwo+Pj4gKyAgICAgLyoKPj4+ICsgICAgICAqIFdlIG11 c3QgZW5hYmxlIHVzZXJzcGFjZSBhY2Nlc3MgKmJlZm9yZSogYWR2ZXJ0aXNpbmcgaW4gdGhlIHVz ZXIgcGFnZQo+Pj4gKyAgICAgICogdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBkbyBzbyB0byBhdm9p ZCBhbnkgcmFjZS4KPj4+ICsgICAgICAqIEFuZCB3ZSBtdXN0IG5vdGlmeSBhbGwgY3B1cyBoZXJl IGJlY2F1c2UgdGhyZWFkcyB0aGF0IGN1cnJlbnRseSBydW4KPj4+ICsgICAgICAqIG9uIG90aGVy IGNwdXMgd2lsbCB0cnkgdG8gZGlyZWN0bHkgYWNjZXNzIHRoZSBjb3VudGVyIHRvbyB3aXRob3V0 Cj4+PiArICAgICAgKiBjYWxsaW5nIHBtdV9zYmlfY3RyX3N0YXJ0Lgo+Pj4gKyAgICAgICovCj4+ PiArICAgICBpZiAoZXZlbnQtPmh3LmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUNDRVNT KQo+Pj4gKyAgICAgICAgICAgICBvbl9lYWNoX2NwdV9tYXNrKG1tX2NwdW1hc2sobW0pLAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtdV9zYmlfc2V0X3Njb3VudGVyZW4sICh2 b2lkICopZXZlbnQsIDEpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBwbXVfc2JpX2V2 ZW50X3VubWFwcGVkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IG1tX3N0cnVjdCAq bW0pCj4+PiArewo+Pj4gKyAgICAgaWYgKGV2ZW50LT5ody5mbGFncyAmIFBFUkZfRVZFTlRfRkxB R19OT19VU0VSX0FDQ0VTUykKPj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+Pj4gKwo+Pj4gKyAg ICAgLyogSW4gbGVnYWN5IG1vZGUsIHRoZSBmaXJzdCAzIENTUnMgYXJlIGF2YWlsYWJsZS4gKi8K Pj4KPj4gZmlyc3QgYW5kIHRoaXJkCj4+Cj4+PiArICAgICBpZiAoZXZlbnQtPmh3LmZsYWdzICYg UEVSRl9FVkVOVF9GTEFHX0xFR0FDWSkgewo+Pj4gKyAgICAgICAgICAgICBpZiAoZXZlbnQtPmF0 dHIuY29uZmlnICE9IFBFUkZfQ09VTlRfSFdfQ1BVX0NZQ0xFUyAmJgo+Pj4gKyAgICAgICAgICAg ICAgICAgZXZlbnQtPmF0dHIuY29uZmlnICE9IFBFUkZfQ09VTlRfSFdfSU5TVFJVQ1RJT05TKSB7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4gKyAgICAgICAgICAgICB9Cj4+ PiArICAgICB9Cj4+PiArCj4+PiArICAgICAvKgo+Pj4gKyAgICAgICogSGVyZSB3ZSBjYW4gZGly ZWN0bHkgcmVtb3ZlIHVzZXIgYWNjZXNzIHNpbmNlIHRoZSB1c2VyIGRvZXMgbm90IGhhdmUKPj4+ ICsgICAgICAqIGFjY2VzcyB0byB0aGUgdXNlciBwYWdlIGFueW1vcmUgc28gd2UgYXZvaWQgdGhl IHJhY3kgd2luZG93IHdoZXJlIHRoZQo+Pj4gKyAgICAgICogdXNlciBjb3VsZCBoYXZlIHJlYWQg Y2FwX3VzZXJfcmRwbWMgdG8gdHJ1ZSByaWdodCBiZWZvcmUgd2UgZGlzYWJsZQo+Pj4gKyAgICAg ICogaXQuCj4+PiArICAgICAgKi8KPj4+ICsgICAgIGV2ZW50LT5ody5mbGFncyAmPSB+UEVSRl9F VkVOVF9GTEFHX1VTRVJfUkVBRF9DTlQ7Cj4+PiArCj4+PiArICAgICBpZiAoZXZlbnQtPmh3LmZs YWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUNDRVNTKQo+Pj4gKyAgICAgICAgICAgICBvbl9l YWNoX2NwdV9tYXNrKG1tX2NwdW1hc2sobW0pLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBtdV9zYmlfcmVzZXRfc2NvdW50ZXJlbiwgKHZvaWQgKilldmVudCwgMSk7Cj4+PiAr fQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHJpc2N2X3BtdV91cGRhdGVfY291bnRlcl9hY2Nlc3Mo dm9pZCAqaW5mbykKPj4+ICt7Cj4+PiArICAgICBpZiAoc3lzY3RsX3BlcmZfdXNlcl9hY2Nlc3Mg PT0gU1lTQ1RMX0xFR0FDWSkKPj4+ICsgICAgICAgICAgICAgY3NyX3dyaXRlKENTUl9TQ09VTlRF UkVOLCAweDcpOwo+Pj4gKyAgICAgZWxzZQo+Pj4gKyAgICAgICAgICAgICBjc3Jfd3JpdGUoQ1NS X1NDT1VOVEVSRU4sIDB4Mik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgcmlzY3ZfcG11 X3Byb2NfdXNlcl9hY2Nlc3NfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRlLCB2b2lk ICpidWZmZXIsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAqbGVucCwgbG9mZl90ICpwcG9zKQo+Pj4gK3sKPj4+ICsgICAgIGludCBwcmV2ID0g c3lzY3RsX3BlcmZfdXNlcl9hY2Nlc3M7Cj4+PiArICAgICBpbnQgcmV0ID0gcHJvY19kb2ludHZl Y19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbnAsIHBwb3MpOwo+Pj4gKwo+Pj4gKyAg ICAgLyoKPj4+ICsgICAgICAqIFRlc3QgYWdhaW5zdCB0aGUgcHJldmlvdXMgdmFsdWUgc2luY2Ug d2UgY2xlYXIgU0NPVU5URVJFTiB3aGVuCj4+PiArICAgICAgKiBzeXNjdGxfcGVyZl91c2VyX2Fj Y2VzcyBpcyBzZXQgdG8gU1lTQ1RMX1VTRVJfQUNDRVNTLCBidXQgd2Ugc2hvdWxkCj4+PiArICAg ICAgKiBub3QgZG8gdGhhdCBpZiB0aGF0IHdhcyBhbHJlYWR5IHRoZSBjYXNlLgo+Pj4gKyAgICAg ICovCj4+PiArICAgICBpZiAocmV0IHx8ICF3cml0ZSB8fCBwcmV2ID09IHN5c2N0bF9wZXJmX3Vz ZXJfYWNjZXNzKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4gKwo+Pj4gKyAgICAg b25fZWFjaF9jcHUocmlzY3ZfcG11X3VwZGF0ZV9jb3VudGVyX2FjY2VzcywgKHZvaWQgKikmcHJl diwgMSk7Cj4+Cj4+IEluc3RlYWQgb2YgcGFzc2luZyBwcmV2IHNob3VsZG4ndCB3ZSBwYXNzIE5V TEwsIGFzIGl0J3Mgbm90IHVzZWQ/Cj4+Cj4+PiArCj4+PiArICAgICByZXR1cm4gMDsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgc2JpX3BtdV9zeXNjdGxfdGFibGVb XSA9IHsKPj4+ICsgICAgIHsKPj4+ICsgICAgICAgICAgICAgLnByb2NuYW1lICAgICAgID0gInBl cmZfdXNlcl9hY2Nlc3MiLAo+Pj4gKyAgICAgICAgICAgICAuZGF0YSAgICAgICAgICAgPSAmc3lz Y3RsX3BlcmZfdXNlcl9hY2Nlc3MsCj4+PiArICAgICAgICAgICAgIC5tYXhsZW4gICAgICAgICA9 IHNpemVvZih1bnNpZ25lZCBpbnQpLAo+Pj4gKyAgICAgICAgICAgICAubW9kZSAgICAgICAgICAg PSAwNjQ0LAo+Pj4gKyAgICAgICAgICAgICAucHJvY19oYW5kbGVyICAgPSByaXNjdl9wbXVfcHJv Y191c2VyX2FjY2Vzc19oYW5kbGVyLAo+Pj4gKyAgICAgICAgICAgICAuZXh0cmExICAgICAgICAg PSBTWVNDVExfWkVSTywKPj4+ICsgICAgICAgICAgICAgLmV4dHJhMiAgICAgICAgID0gU1lTQ1RM X1RXTywKPj4+ICsgICAgIH0sCj4+PiArICAgICB7IH0KPj4+ICt9Owo+Pj4gKwo+Pj4gICBzdGF0 aWMgaW50IHBtdV9zYmlfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4+PiAgIHsKPj4+ICAgICAgICBzdHJ1Y3QgcmlzY3ZfcG11ICpwbXUgPSBOVUxMOwo+Pj4gQEAg LTg4OCw2ICsxMDY0LDEwIEBAIHN0YXRpYyBpbnQgcG11X3NiaV9kZXZpY2VfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ICAgICAgICBwbXUtPmN0cl9nZXRfd2lkdGggPSBw bXVfc2JpX2N0cl9nZXRfd2lkdGg7Cj4+PiAgICAgICAgcG11LT5jdHJfY2xlYXJfaWR4ID0gcG11 X3NiaV9jdHJfY2xlYXJfaWR4Owo+Pj4gICAgICAgIHBtdS0+Y3RyX3JlYWQgPSBwbXVfc2JpX2N0 cl9yZWFkOwo+Pj4gKyAgICAgcG11LT5ldmVudF9pbml0ID0gcG11X3NiaV9ldmVudF9pbml0Owo+ Pj4gKyAgICAgcG11LT5ldmVudF9tYXBwZWQgPSBwbXVfc2JpX2V2ZW50X21hcHBlZDsKPj4+ICsg ICAgIHBtdS0+ZXZlbnRfdW5tYXBwZWQgPSBwbXVfc2JpX2V2ZW50X3VubWFwcGVkOwo+Pj4gKyAg ICAgcG11LT5jc3JfaW5kZXggPSBwbXVfc2JpX2Nzcl9pbmRleDsKPj4+Cj4+PiAgICAgICAgcmV0 ID0gY3B1aHBfc3RhdGVfYWRkX2luc3RhbmNlKENQVUhQX0FQX1BFUkZfUklTQ1ZfU1RBUlRJTkcs ICZwbXUtPm5vZGUpOwo+Pj4gICAgICAgIGlmIChyZXQpCj4+PiBAQCAtOTAxLDYgKzEwODEsOCBA QCBzdGF0aWMgaW50IHBtdV9zYmlfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4+PiAgICAgICAgaWYgKHJldCkKPj4+ICAgICAgICAgICAgICAgIGdvdG8gb3V0X3Vu cmVnaXN0ZXI7Cj4+Pgo+Pj4gKyAgICAgcmVnaXN0ZXJfc3lzY3RsKCJrZXJuZWwiLCBzYmlfcG11 X3N5c2N0bF90YWJsZSk7Cj4+PiArCj4+PiAgICAgICAgcmV0dXJuIDA7Cj4+Pgo+Pj4gICBvdXRf dW5yZWdpc3RlcjoKPj4+IC0tCj4+PiAyLjM3LjIKPj4+Cj4+Cj4+IFRoYW5rcywKPj4gZHJldwo+ IAo+IAo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK