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 smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 A770DC433F5 for ; Sun, 30 Jan 2022 05:58:14 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 073BB40362; Sun, 30 Jan 2022 05:58:14 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pHQeOseJCL5s; Sun, 30 Jan 2022 05:58:11 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id 46A9340361; Sun, 30 Jan 2022 05:58:11 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 28DF1C0011; Sun, 30 Jan 2022 05:58:11 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 099CEC000B for ; Sun, 30 Jan 2022 05:58:09 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id D6A0740362 for ; Sun, 30 Jan 2022 05:58:08 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yVENsnFrNT2q for ; Sun, 30 Jan 2022 05:58:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id 7BBE340361 for ; Sun, 30 Jan 2022 05:58:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1643522286; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Wo8jU5htwKnHyMET1V1N4qHSxP3dzjG81gz/TNRkDrc=; b=jMk6kU1Ez7+CIT2jAN+kxYyIEqyW7JEhtB2ki6Ezs1PmBzgt5BYMUu+w54asNyIRv28FDI NV9/OSfoOKceQfz5eURjfbXrvoDYWdCleAgTyqRCnRGKzO7WNwt1zMtTGHYgIRQ/P31F0d Atl3vlocrcpLDG594D4OJIlvd5OZXIM= Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-363-2Ojmw-6LNkqa427GAPYEoQ-1; Sun, 30 Jan 2022 00:58:04 -0500 X-MC-Unique: 2Ojmw-6LNkqa427GAPYEoQ-1 Received: by mail-pf1-f198.google.com with SMTP id f24-20020aa782d8000000b004bc00caa4c0so5542080pfn.3 for ; Sat, 29 Jan 2022 21:58:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=Wo8jU5htwKnHyMET1V1N4qHSxP3dzjG81gz/TNRkDrc=; b=J300JYSbfm0n175+2xtEvC1fY3o4EfemC4q7Sew3EVPkn/QpFMtwlt5phebIyunf1P 5rlmPhCyhzYisGhY5xreHg5eyZKs7mYlwA1N8yKWyLjqGK/IMTDRVhPFhMTdTVO5lkzi LqNNCBiTyRHXiATWG2ZC4oCQJZQeFPPEgO8VXC/C4aVsaPo1dnu2Mha6ss90ExAzVYku x+HCXUrqI2aLs4q+nHTmCa5w5Gux4nvK16x8htBewb+7t4wfnWsIECYpQZNryu7d1Bnc 8yS/7gQEs868P1gMCa82akWpj13qVU8jk/h0ynKFnqOQHiLQrQFj9xrfD1NHy9WD54kr VY9Q== X-Gm-Message-State: AOAM5337fiawq2Uz90mKh8m7dR990TfS5lyGGPaCNBbAEw+FjXEfNUNg tNhshLevxUc2gHnbq+5ZmAV5N5LVbK6tLoqG2X4FpNTFuWuNH4A8iqbs32Ymhh/Eu1SYM88B7SN sqLgbTxyus7UXvyR8ZQmobbFuIfpLxjG1NezIIQwNuA== X-Received: by 2002:a17:902:7ecf:: with SMTP id p15mr16062253plb.112.1643522283284; Sat, 29 Jan 2022 21:58:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJze25i7lOWhbcg5vtvFPGJ65Xg5TNjcuy8VXrDi7Fo4OhgVyIvEojG+jiRqIIU87w3LXHcZZA== X-Received: by 2002:a17:902:7ecf:: with SMTP id p15mr16062224plb.112.1643522282891; Sat, 29 Jan 2022 21:58:02 -0800 (PST) Received: from [192.168.72.150] ([114.249.198.133]) by smtp.gmail.com with ESMTPSA id p16sm1171893pgj.79.2022.01.29.21.57.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 29 Jan 2022 21:58:01 -0800 (PST) Message-ID: Date: Sun, 30 Jan 2022 13:57:54 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [PATCH 23/31] vdpa: Add custom IOTLB translations to SVQ To: =?UTF-8?Q?Eugenio_P=c3=a9rez?= , qemu-devel@nongnu.org References: <20220121202733.404989-1-eperezma@redhat.com> <20220121202733.404989-24-eperezma@redhat.com> From: Jason Wang In-Reply-To: <20220121202733.404989-24-eperezma@redhat.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: Laurent Vivier , Parav Pandit , Cindy Lu , "Michael S. Tsirkin" , Richard Henderson , Markus Armbruster , Gautam Dawar , virtualization@lists.linux-foundation.org, Eduardo Habkost , Harpreet Singh Anand , Xiao W Wang , Stefan Hajnoczi , Eli Cohen , Paolo Bonzini , Zhu Lingshan , Eric Blake X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CuWcqCAyMDIyLzEvMjIg5LiK5Y2INDoyNywgRXVnZW5pbyBQw6lyZXog5YaZ6YGTOgo+IFVzZSB0 cmFuc2xhdGlvbnMgYWRkZWQgaW4gVmhvc3RJT1ZBVHJlZSBpbiBTVlEuCj4KPiBPbmx5IGludHJv ZHVjZSB1c2FnZSBoZXJlLCBub3QgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLiBBcyB3aXRo Cj4gcHJldmlvdXMgcGF0Y2hlcywgd2UgdXNlIHRoZSBkZWFkIGNvZGUgcGF0aHMgb2Ygc2hhZG93 X3Zxc19lbmFibGVkIHRvCj4gYXZvaWQgY29tbWl0aW5nIHRvbyBtYW55IGNoYW5nZXMgYXQgb25j ZS4gVGhlc2UgYXJlIGltcG9zc2libGUgdG8gdGFrZQo+IGF0IHRoZSBtb21lbnQuCj4KPiBTaWdu ZWQtb2ZmLWJ5OiBFdWdlbmlvIFDDqXJleiA8ZXBlcmV6bWFAcmVkaGF0LmNvbT4KPiAtLS0KPiAg IGh3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmggfCAgIDMgKy0KPiAgIGluY2x1ZGUv aHcvdmlydGlvL3Zob3N0LXZkcGEuaCAgICAgfCAgIDMgKwo+ICAgaHcvdmlydGlvL3Zob3N0LXNo YWRvdy12aXJ0cXVldWUuYyB8IDExMSArKysrKysrKysrKysrKysrLS0tLQo+ICAgaHcvdmlydGlv L3Zob3N0LXZkcGEuYyAgICAgICAgICAgICB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAyMzggaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvaHcvdmlydGlvL3Zob3N0LXNoYWRvdy12aXJ0cXVldWUuaCBi L2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmgKPiBpbmRleCAxOWM5MzRhZjQ5Li5j NmY2N2Q2Zjc2IDEwMDY0NAo+IC0tLSBhL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVl LmgKPiArKysgYi9ody92aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5oCj4gQEAgLTEyLDYg KzEyLDcgQEAKPiAgIAo+ICAgI2luY2x1ZGUgImh3L3ZpcnRpby92aG9zdC5oIgo+ICAgI2luY2x1 ZGUgInFlbXUvZXZlbnRfbm90aWZpZXIuaCIKPiArI2luY2x1ZGUgImh3L3ZpcnRpby92aG9zdC1p b3ZhLXRyZWUuaCIKPiAgIAo+ICAgdHlwZWRlZiBzdHJ1Y3QgVmhvc3RTaGFkb3dWaXJ0cXVldWUg Vmhvc3RTaGFkb3dWaXJ0cXVldWU7Cj4gICAKPiBAQCAtMzcsNyArMzgsNyBAQCB2b2lkIHZob3N0 X3N2cV9zdGFydChWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxLCBWaXJ0SU9EZXZpY2UgKnZkZXYs Cj4gICAgICAgICAgICAgICAgICAgICAgICBWaXJ0UXVldWUgKnZxKTsKPiAgIHZvaWQgdmhvc3Rf c3ZxX3N0b3AoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSk7Cj4gICAKPiAtVmhvc3RTaGFkb3dW aXJ0cXVldWUgKnZob3N0X3N2cV9uZXcodWludDE2X3QgcXNpemUpOwo+ICtWaG9zdFNoYWRvd1Zp cnRxdWV1ZSAqdmhvc3Rfc3ZxX25ldyh1aW50MTZfdCBxc2l6ZSwgVmhvc3RJT1ZBVHJlZSAqaW92 YV9tYXApOwo+ICAgCj4gICB2b2lkIHZob3N0X3N2cV9mcmVlKFZob3N0U2hhZG93VmlydHF1ZXVl ICp2cSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody92aXJ0aW8vdmhvc3QtdmRwYS5o IGIvaW5jbHVkZS9ody92aXJ0aW8vdmhvc3QtdmRwYS5oCj4gaW5kZXggMDA5YTlmM2I2Yi4uY2Qy Mzg4YjNiZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2h3L3ZpcnRpby92aG9zdC12ZHBhLmgKPiAr KysgYi9pbmNsdWRlL2h3L3ZpcnRpby92aG9zdC12ZHBhLmgKPiBAQCAtMTQsNiArMTQsNyBAQAo+ ICAgCj4gICAjaW5jbHVkZSA8Z21vZHVsZS5oPgo+ICAgCj4gKyNpbmNsdWRlICJody92aXJ0aW8v dmhvc3QtaW92YS10cmVlLmgiCj4gICAjaW5jbHVkZSAiaHcvdmlydGlvL3ZpcnRpby5oIgo+ICAg I2luY2x1ZGUgInN0YW5kYXJkLWhlYWRlcnMvbGludXgvdmhvc3RfdHlwZXMuaCIKPiAgIAo+IEBA IC0zMCw2ICszMSw4IEBAIHR5cGVkZWYgc3RydWN0IHZob3N0X3ZkcGEgewo+ICAgICAgIE1lbW9y eUxpc3RlbmVyIGxpc3RlbmVyOwo+ICAgICAgIHN0cnVjdCB2aG9zdF92ZHBhX2lvdmFfcmFuZ2Ug aW92YV9yYW5nZTsKPiAgICAgICBib29sIHNoYWRvd192cXNfZW5hYmxlZDsKPiArICAgIC8qIElP VkEgbWFwcGluZyB1c2VkIGJ5IFNoYWRvdyBWaXJ0cXVldWUgKi8KPiArICAgIFZob3N0SU9WQVRy ZWUgKmlvdmFfdHJlZTsKPiAgICAgICBHUHRyQXJyYXkgKnNoYWRvd192cXM7Cj4gICAgICAgc3Ry dWN0IHZob3N0X2RldiAqZGV2Owo+ICAgICAgIFZob3N0VkRQQUhvc3ROb3RpZmllciBub3RpZmll cltWSVJUSU9fUVVFVUVfTUFYXTsKPiBkaWZmIC0tZ2l0IGEvaHcvdmlydGlvL3Zob3N0LXNoYWRv dy12aXJ0cXVldWUuYyBiL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmMKPiBpbmRl eCBhMWE0MDRmNjhmLi5jNzg4OGViOGNmIDEwMDY0NAo+IC0tLSBhL2h3L3ZpcnRpby92aG9zdC1z aGFkb3ctdmlydHF1ZXVlLmMKPiArKysgYi9ody92aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1 ZS5jCj4gQEAgLTExLDYgKzExLDcgQEAKPiAgICNpbmNsdWRlICJody92aXJ0aW8vdmhvc3Qtc2hh ZG93LXZpcnRxdWV1ZS5oIgo+ICAgI2luY2x1ZGUgImh3L3ZpcnRpby92aG9zdC5oIgo+ICAgI2lu Y2x1ZGUgImh3L3ZpcnRpby92aXJ0aW8tYWNjZXNzLmgiCj4gKyNpbmNsdWRlICJody92aXJ0aW8v dmhvc3QtaW92YS10cmVlLmgiCj4gICAjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92 aG9zdF90eXBlcy5oIgo+ICAgCj4gICAjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKPiBA QCAtNDUsNiArNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCBWaG9zdFNoYWRvd1ZpcnRxdWV1ZSB7Cj4g ICAgICAgLyogVmlydGlvIGRldmljZSAqLwo+ICAgICAgIFZpcnRJT0RldmljZSAqdmRldjsKPiAg IAo+ICsgICAgLyogSU9WQSBtYXBwaW5nICovCj4gKyAgICBWaG9zdElPVkFUcmVlICppb3ZhX3Ry ZWU7Cj4gKwo+ICAgICAgIC8qIE1hcCBmb3IgcmV0dXJuaW5nIGd1ZXN0J3MgZGVzY3JpcHRvcnMg Ki8KPiAgICAgICBWaXJ0UXVldWVFbGVtZW50ICoqcmluZ19pZF9tYXBzOwo+ICAgCj4gQEAgLTk3 LDEzICsxMDEsNyBAQCBib29sIHZob3N0X3N2cV92YWxpZF9kZXZpY2VfZmVhdHVyZXModWludDY0 X3QgKmRldl9mZWF0dXJlcykKPiAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgCj4gICAgICAg ICAgIGNhc2UgVklSVElPX0ZfQUNDRVNTX1BMQVRGT1JNOgo+IC0gICAgICAgICAgICAvKiBTVlEg ZG9lcyBub3Qga25vdyBob3cgdG8gdHJhbnNsYXRlIGFkZHJlc3NlcyAqLwo+IC0gICAgICAgICAg ICBpZiAoKmRldl9mZWF0dXJlcyAmIEJJVF9VTEwoYikpIHsKPiAtICAgICAgICAgICAgICAgIGNs ZWFyX2JpdChiLCBkZXZfZmVhdHVyZXMpOwo+IC0gICAgICAgICAgICAgICAgciA9IGZhbHNlOwo+ IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIGJyZWFrOwo+IC0KPiArICAgICAgICAgICAg LyogU1ZRIHRydXN0IGluIGhvc3QncyBJT01NVSB0byB0cmFuc2xhdGUgYWRkcmVzc2VzICovCj4g ICAgICAgICAgIGNhc2UgVklSVElPX0ZfVkVSU0lPTl8xOgo+ICAgICAgICAgICAgICAgLyogU1ZR IHRydXN0IHRoYXQgZ3Vlc3QgdnJpbmcgaXMgbGl0dGxlIGVuZGlhbiAqLwo+ICAgICAgICAgICAg ICAgaWYgKCEoKmRldl9mZWF0dXJlcyAmIEJJVF9VTEwoYikpKSB7Cj4gQEAgLTIwNSw3ICsyMDMs NTUgQEAgc3RhdGljIHZvaWQgdmhvc3Rfc3ZxX3NldF9ub3RpZmljYXRpb24oVmhvc3RTaGFkb3dW aXJ0cXVldWUgKnN2cSwgYm9vbCBlbmFibGUpCj4gICAgICAgfQo+ICAgfQo+ICAgCj4gKy8qKgo+ ICsgKiBUcmFuc2xhdGUgYWRkcmVzc2VzIGJldHdlZW4gcWVtdSdzIHZpcnR1YWwgYWRkcmVzcyBh bmQgU1ZRIElPVkEKPiArICoKPiArICogQHN2cSAgICBTaGFkb3cgVmlydFF1ZXVlCj4gKyAqIEB2 YWRkciAgVHJhbnNsYXRlZCBJT1ZBIGFkZHJlc3Nlcwo+ICsgKiBAaW92ZWMgIFNvdXJjZSBxZW11 J3MgVkEgYWRkcmVzc2VzCj4gKyAqIEBudW0gICAgTGVuZ3RoIG9mIGlvdmVjIGFuZCBtaW5pbXVt IGxlbmd0aCBvZiB2YWRkcgo+ICsgKi8KPiArc3RhdGljIGJvb2wgdmhvc3Rfc3ZxX3RyYW5zbGF0 ZV9hZGRyKGNvbnN0IFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqYWRkcnMsIGNvbnN0IHN0cnVjdCBpb3ZlYyAq aW92ZWMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVt KQo+ICt7Cj4gKyAgICBzaXplX3QgaTsKPiArCj4gKyAgICBpZiAobnVtID09IDApIHsKPiArICAg ICAgICByZXR1cm4gdHJ1ZTsKPiArICAgIH0KPiArCj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVt OyArK2kpIHsKPiArICAgICAgICBETUFNYXAgbmVlZGxlID0gewo+ICsgICAgICAgICAgICAudHJh bnNsYXRlZF9hZGRyID0gKGh3YWRkcilpb3ZlY1tpXS5pb3ZfYmFzZSwKPiArICAgICAgICAgICAg LnNpemUgPSBpb3ZlY1tpXS5pb3ZfbGVuLAo+ICsgICAgICAgIH07Cj4gKyAgICAgICAgc2l6ZV90 IG9mZjsKPiArCj4gKyAgICAgICAgY29uc3QgRE1BTWFwICptYXAgPSB2aG9zdF9pb3ZhX3RyZWVf ZmluZF9pb3ZhKHN2cS0+aW92YV90cmVlLCAmbmVlZGxlKTsKPiArICAgICAgICAvKgo+ICsgICAg ICAgICAqIE1hcCBjYW5ub3QgYmUgTlVMTCBzaW5jZSBpb3ZhIG1hcCBjb250YWlucyBhbGwgZ3Vl c3Qgc3BhY2UgYW5kCj4gKyAgICAgICAgICogcWVtdSBhbHJlYWR5IGhhcyBhIHBoeXNpY2FsIGFk ZHJlc3MgbWFwcGVkCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgaWYgKHVubGlrZWx5KCFtYXAp KSB7Cj4gKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiSW52YWxpZCBhZGRyZXNzIDB4JSJIV0FE RFJfUFJJeCIgZ2l2ZW4gYnkgZ3Vlc3QiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgbmVl ZGxlLnRyYW5zbGF0ZWRfYWRkcik7CgoKVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGd1ZXN0LCB3 ZSBuZWVkIHVzZSBvbmNlIG9yIGxvZ19ndWVzdF9lcnJvcigpIGV0Yy4KCgo+ICsgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAg ICAqIE1hcC0+aW92YSBjaHVuayBzaXplIGlzIGlnbm9yZWQuIFdoYXQgdG8gZG8gaWYgZGVzY3Jp cHRvcgo+ICsgICAgICAgICAqIChhZGRyLCBzaXplKSBkb2VzIG5vdCBmaXQgaXMgZGVsZWdhdGVk IHRvIHRoZSBkZXZpY2UuCj4gKyAgICAgICAgICovCgoKSSB0aGluayB3ZSBuZWVkIGF0IGxlYXN0 IGNoZWNrIHRoZSBzaXplIGFuZCBmYWlsIGlmIHRoZSBzaXplIGRvZXNuJ3QgCm1hdGNoIGhlcmUu IE9yIGlzIGl0IHBvc3NpYmxlIHRoYXQgd2UgaGF2ZSBhIGJ1ZmZlciB0aGF0IG1heSBjcm9zcyB0 d28gCm1lbW9yeSByZWdpb25zPwoKCj4gKyAgICAgICAgb2ZmID0gbmVlZGxlLnRyYW5zbGF0ZWRf YWRkciAtIG1hcC0+dHJhbnNsYXRlZF9hZGRyOwo+ICsgICAgICAgIGFkZHJzW2ldID0gKHZvaWQg KikobWFwLT5pb3ZhICsgb2ZmKTsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gdHJ1ZTsKPiAr fQo+ICsKPiAgIHN0YXRpYyB2b2lkIHZob3N0X3ZyaW5nX3dyaXRlX2Rlc2NzKFZob3N0U2hhZG93 VmlydHF1ZXVlICpzdnEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKiBjb25zdCAqdmFkZHJfc2csCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdmVjLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IG51bSwgYm9vbCBtb3JlX2Rlc2NzLCBib29sIHdyaXRlKQo+ ICAgewo+IEBAIC0yMjQsNyArMjcwLDcgQEAgc3RhdGljIHZvaWQgdmhvc3RfdnJpbmdfd3JpdGVf ZGVzY3MoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSwKPiAgICAgICAgICAgfSBlbHNlIHsKPiAg ICAgICAgICAgICAgIGRlc2NzW2ldLmZsYWdzID0gZmxhZ3M7Cj4gICAgICAgICAgIH0KPiAtICAg ICAgICBkZXNjc1tpXS5hZGRyID0gY3B1X3RvX2xlNjQoKGh3YWRkcilpb3ZlY1tuXS5pb3ZfYmFz ZSk7Cj4gKyAgICAgICAgZGVzY3NbaV0uYWRkciA9IGNwdV90b19sZTY0KChod2FkZHIpdmFkZHJf c2dbbl0pOwo+ICAgICAgICAgICBkZXNjc1tpXS5sZW4gPSBjcHVfdG9fbGUzMihpb3ZlY1tuXS5p b3ZfbGVuKTsKPiAgIAo+ICAgICAgICAgICBsYXN0ID0gaTsKPiBAQCAtMjM0LDQyICsyODAsNjAg QEAgc3RhdGljIHZvaWQgdmhvc3RfdnJpbmdfd3JpdGVfZGVzY3MoVmhvc3RTaGFkb3dWaXJ0cXVl dWUgKnN2cSwKPiAgICAgICBzdnEtPmZyZWVfaGVhZCA9IGxlMTZfdG9fY3B1KGRlc2NzW2xhc3Rd Lm5leHQpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB1bnNpZ25lZCB2aG9zdF9zdnFfYWRkX3NwbGl0 KFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZpcnRRdWV1ZUVsZW1lbnQgKmVsZW0pCj4gK3N0YXRpYyBib29sIHZob3N0X3N2 cV9hZGRfc3BsaXQoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWaXJ0UXVldWVFbGVtZW50ICplbGVtLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpoZWFkKQoKCkknZCBzdWdnZXN0IHRvIG1ha2Ug aXQgcmV0dXJucyBib29sIHNpbmNlIHRoZSBwYXRjaCB0aGF0IGludHJvZHVjZXMgdGhpcyAKZnVu Y3Rpb24uCgoKPiAgIHsKPiAtICAgIGludCBoZWFkOwo+ICAgICAgIHVuc2lnbmVkIGF2YWlsX2lk eDsKPiAgICAgICB2cmluZ19hdmFpbF90ICphdmFpbCA9IHN2cS0+dnJpbmcuYXZhaWw7Cj4gKyAg ICBib29sIG9rOwo+ICsgICAgZ19hdXRvZnJlZSB2b2lkICoqc2dzID0gZ19uZXcodm9pZCAqLCBN QVgoZWxlbS0+b3V0X251bSwgZWxlbS0+aW5fbnVtKSk7Cj4gICAKPiAtICAgIGhlYWQgPSBzdnEt PmZyZWVfaGVhZDsKPiArICAgICpoZWFkID0gc3ZxLT5mcmVlX2hlYWQ7Cj4gICAKPiAgICAgICAv KiBXZSBuZWVkIHNvbWUgZGVzY3JpcHRvcnMgaGVyZSAqLwo+ICAgICAgIGFzc2VydChlbGVtLT5v dXRfbnVtIHx8IGVsZW0tPmluX251bSk7Cj4gICAKPiAtICAgIHZob3N0X3ZyaW5nX3dyaXRlX2Rl c2NzKHN2cSwgZWxlbS0+b3V0X3NnLCBlbGVtLT5vdXRfbnVtLAo+ICsgICAgb2sgPSB2aG9zdF9z dnFfdHJhbnNsYXRlX2FkZHIoc3ZxLCBzZ3MsIGVsZW0tPm91dF9zZywgZWxlbS0+b3V0X251bSk7 Cj4gKyAgICBpZiAodW5saWtlbHkoIW9rKSkgewo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiAr ICAgIH0KPiArICAgIHZob3N0X3ZyaW5nX3dyaXRlX2Rlc2NzKHN2cSwgc2dzLCBlbGVtLT5vdXRf c2csIGVsZW0tPm91dF9udW0sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS0+ aW5fbnVtID4gMCwgZmFsc2UpOwo+IC0gICAgdmhvc3RfdnJpbmdfd3JpdGVfZGVzY3Moc3ZxLCBl bGVtLT5pbl9zZywgZWxlbS0+aW5fbnVtLCBmYWxzZSwgdHJ1ZSk7Cj4gKwo+ICsKPiArICAgIG9r ID0gdmhvc3Rfc3ZxX3RyYW5zbGF0ZV9hZGRyKHN2cSwgc2dzLCBlbGVtLT5pbl9zZywgZWxlbS0+ aW5fbnVtKTsKPiArICAgIGlmICh1bmxpa2VseSghb2spKSB7Cj4gKyAgICAgICAgcmV0dXJuIGZh bHNlOwo+ICsgICAgfQo+ICsKPiArICAgIHZob3N0X3ZyaW5nX3dyaXRlX2Rlc2NzKHN2cSwgc2dz LCBlbGVtLT5pbl9zZywgZWxlbS0+aW5fbnVtLCBmYWxzZSwgdHJ1ZSk7Cj4gICAKPiAgICAgICAv Kgo+ICAgICAgICAqIFB1dCBlbnRyeSBpbiBhdmFpbGFibGUgYXJyYXkgKGJ1dCBkb24ndCB1cGRh dGUgYXZhaWwtPmlkeCB1bnRpbCB0aGV5Cj4gICAgICAgICogZG8gc3luYykuCj4gICAgICAgICov Cj4gICAgICAgYXZhaWxfaWR4ID0gc3ZxLT5hdmFpbF9pZHhfc2hhZG93ICYgKHN2cS0+dnJpbmcu bnVtIC0gMSk7Cj4gLSAgICBhdmFpbC0+cmluZ1thdmFpbF9pZHhdID0gY3B1X3RvX2xlMTYoaGVh ZCk7Cj4gKyAgICBhdmFpbC0+cmluZ1thdmFpbF9pZHhdID0gY3B1X3RvX2xlMTYoKmhlYWQpOwo+ ICAgICAgIHN2cS0+YXZhaWxfaWR4X3NoYWRvdysrOwo+ICAgCj4gICAgICAgLyogVXBkYXRlIGF2 YWlsIGluZGV4IGFmdGVyIHRoZSBkZXNjcmlwdG9yIGlzIHdyb3RlICovCj4gICAgICAgc21wX3dt YigpOwo+ICAgICAgIGF2YWlsLT5pZHggPSBjcHVfdG9fbGUxNihzdnEtPmF2YWlsX2lkeF9zaGFk b3cpOwo+ICAgCj4gLSAgICByZXR1cm4gaGVhZDsKPiArICAgIHJldHVybiB0cnVlOwo+ICAgfQo+ ICAgCj4gLXN0YXRpYyB2b2lkIHZob3N0X3N2cV9hZGQoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2 cSwgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSkKPiArc3RhdGljIGJvb2wgdmhvc3Rfc3ZxX2FkZChW aG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxLCBWaXJ0UXVldWVFbGVtZW50ICplbGVtKQo+ICAgewo+ IC0gICAgdW5zaWduZWQgcWVtdV9oZWFkID0gdmhvc3Rfc3ZxX2FkZF9zcGxpdChzdnEsIGVsZW0p Owo+ICsgICAgdW5zaWduZWQgcWVtdV9oZWFkOwo+ICsgICAgYm9vbCBvayA9IHZob3N0X3N2cV9h ZGRfc3BsaXQoc3ZxLCBlbGVtLCAmcWVtdV9oZWFkKTsKPiArICAgIGlmICh1bmxpa2VseSghb2sp KSB7Cj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICsgICAgfQo+ICAgCj4gICAgICAgc3ZxLT5y aW5nX2lkX21hcHNbcWVtdV9oZWFkXSA9IGVsZW07Cj4gKyAgICByZXR1cm4gdHJ1ZTsKPiAgIH0K PiAgIAo+ICAgc3RhdGljIHZvaWQgdmhvc3Rfc3ZxX2tpY2soVmhvc3RTaGFkb3dWaXJ0cXVldWUg KnN2cSkKPiBAQCAtMzA5LDYgKzM3Myw3IEBAIHN0YXRpYyB2b2lkIHZob3N0X2hhbmRsZV9ndWVz dF9raWNrKFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEpCj4gICAKPiAgICAgICAgICAgd2hpbGUg KHRydWUpIHsKPiAgICAgICAgICAgICAgIFZpcnRRdWV1ZUVsZW1lbnQgKmVsZW07Cj4gKyAgICAg ICAgICAgIGJvb2wgb2s7Cj4gICAKPiAgICAgICAgICAgICAgIGlmIChzdnEtPm5leHRfZ3Vlc3Rf YXZhaWxfZWxlbSkgewo+ICAgICAgICAgICAgICAgICAgIGVsZW0gPSBnX3N0ZWFsX3BvaW50ZXIo JnN2cS0+bmV4dF9ndWVzdF9hdmFpbF9lbGVtKTsKPiBAQCAtMzM3LDcgKzQwMiwxMSBAQCBzdGF0 aWMgdm9pZCB2aG9zdF9oYW5kbGVfZ3Vlc3Rfa2ljayhWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3Zx KQo+ICAgICAgICAgICAgICAgICAgIHJldHVybjsKPiAgICAgICAgICAgICAgIH0KPiAgIAo+IC0g ICAgICAgICAgICB2aG9zdF9zdnFfYWRkKHN2cSwgZWxlbSk7Cj4gKyAgICAgICAgICAgIG9rID0g dmhvc3Rfc3ZxX2FkZChzdnEsIGVsZW0pOwo+ICsgICAgICAgICAgICBpZiAodW5saWtlbHkoIW9r KSkgewo+ICsgICAgICAgICAgICAgICAgLyogVlEgaXMgYnJva2VuLCBqdXN0IHJldHVybiBhbmQg aWdub3JlIGFueSBvdGhlciBraWNrcyAqLwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsg ICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICB2aG9zdF9zdnFfa2ljayhzdnEpOwo+ICAgICAg ICAgICB9Cj4gICAKPiBAQCAtNjE5LDEyICs2ODgsMTMgQEAgdm9pZCB2aG9zdF9zdnFfc3RvcChW aG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxKQo+ICAgICogbWV0aG9kcyBhbmQgZmlsZSBkZXNjcmlw dG9ycy4KPiAgICAqCj4gICAgKiBAcXNpemUgU2hhZG93IFZpcnRRdWV1ZSBzaXplCj4gKyAqIEBp b3ZhX3RyZWUgVHJlZSB0byBwZXJmb3JtIGRlc2NyaXB0b3JzIHRyYW5zbGF0aW9ucwo+ICAgICoK PiAgICAqIFJldHVybnMgdGhlIG5ldyB2aXJ0cXVldWUgb3IgTlVMTC4KPiAgICAqCj4gICAgKiBJ biBjYXNlIG9mIGVycm9yLCByZWFzb24gaXMgcmVwb3J0ZWQgdGhyb3VnaCBlcnJvcl9yZXBvcnQu Cj4gICAgKi8KPiAtVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnZob3N0X3N2cV9uZXcodWludDE2X3Qg cXNpemUpCj4gK1Zob3N0U2hhZG93VmlydHF1ZXVlICp2aG9zdF9zdnFfbmV3KHVpbnQxNl90IHFz aXplLCBWaG9zdElPVkFUcmVlICppb3ZhX3RyZWUpCj4gICB7Cj4gICAgICAgc2l6ZV90IGRlc2Nf c2l6ZSA9IHNpemVvZih2cmluZ19kZXNjX3QpICogcXNpemU7Cj4gICAgICAgc2l6ZV90IGRldmlj ZV9zaXplLCBkcml2ZXJfc2l6ZTsKPiBAQCAtNjU2LDYgKzcyNiw3IEBAIFZob3N0U2hhZG93Vmly dHF1ZXVlICp2aG9zdF9zdnFfbmV3KHVpbnQxNl90IHFzaXplKQo+ICAgICAgIG1lbXNldChzdnEt PnZyaW5nLmRlc2MsIDAsIGRyaXZlcl9zaXplKTsKPiAgICAgICBzdnEtPnZyaW5nLnVzZWQgPSBx ZW11X21lbWFsaWduKHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSwgZGV2aWNlX3NpemUpOwo+ICAg ICAgIG1lbXNldChzdnEtPnZyaW5nLnVzZWQsIDAsIGRldmljZV9zaXplKTsKPiArICAgIHN2cS0+ aW92YV90cmVlID0gaW92YV90cmVlOwo+ICAgICAgIHN2cS0+cmluZ19pZF9tYXBzID0gZ19uZXcw KFZpcnRRdWV1ZUVsZW1lbnQgKiwgcXNpemUpOwo+ICAgICAgIGV2ZW50X25vdGlmaWVyX3NldF9o YW5kbGVyKCZzdnEtPmhkZXZfY2FsbCwgdmhvc3Rfc3ZxX2hhbmRsZV9jYWxsKTsKPiAgICAgICBy ZXR1cm4gZ19zdGVhbF9wb2ludGVyKCZzdnEpOwo+IGRpZmYgLS1naXQgYS9ody92aXJ0aW8vdmhv c3QtdmRwYS5jIGIvaHcvdmlydGlvL3Zob3N0LXZkcGEuYwo+IGluZGV4IDBlNWMwMGVkN2UuLjI3 NmE1NTk2NDkgMTAwNjQ0Cj4gLS0tIGEvaHcvdmlydGlvL3Zob3N0LXZkcGEuYwo+ICsrKyBiL2h3 L3ZpcnRpby92aG9zdC12ZHBhLmMKPiBAQCAtMjA5LDYgKzIwOSwxOCBAQCBzdGF0aWMgdm9pZCB2 aG9zdF92ZHBhX2xpc3RlbmVyX3JlZ2lvbl9hZGQoTWVtb3J5TGlzdGVuZXIgKmxpc3RlbmVyLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWRkciwgc2VjdGlv bi0+cmVhZG9ubHkpOwo+ICAgCj4gICAgICAgbGxzaXplID0gaW50MTI4X3N1YihsbGVuZCwgaW50 MTI4X21ha2U2NChpb3ZhKSk7Cj4gKyAgICBpZiAodi0+c2hhZG93X3Zxc19lbmFibGVkKSB7Cj4g KyAgICAgICAgRE1BTWFwIG1lbV9yZWdpb24gPSB7Cj4gKyAgICAgICAgICAgIC50cmFuc2xhdGVk X2FkZHIgPSAoaHdhZGRyKXZhZGRyLAo+ICsgICAgICAgICAgICAuc2l6ZSA9IGludDEyOF9nZXQ2 NChsbHNpemUpIC0gMSwKPiArICAgICAgICAgICAgLnBlcm0gPSBJT01NVV9BQ0NFU1NfRkxBRyh0 cnVlLCBzZWN0aW9uLT5yZWFkb25seSksCj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAgaW50 IHIgPSB2aG9zdF9pb3ZhX3RyZWVfbWFwX2FsbG9jKHYtPmlvdmFfdHJlZSwgJm1lbV9yZWdpb24p Owo+ICsgICAgICAgIGFzc2VydChyID09IElPVkFfT0spOwoKCkl0J3MgYmV0dGVyIHRvIGZhaWwg b3Igd2FybiBoZXJlLgoKCj4gKwo+ICsgICAgICAgIGlvdmEgPSBtZW1fcmVnaW9uLmlvdmE7Cj4g KyAgICB9Cj4gICAKPiAgICAgICB2aG9zdF92ZHBhX2lvdGxiX2JhdGNoX2JlZ2luX29uY2Uodik7 Cj4gICAgICAgcmV0ID0gdmhvc3RfdmRwYV9kbWFfbWFwKHYsIGlvdmEsIGludDEyOF9nZXQ2NChs bHNpemUpLAo+IEBAIC0yNjEsNiArMjczLDIwIEBAIHN0YXRpYyB2b2lkIHZob3N0X3ZkcGFfbGlz dGVuZXJfcmVnaW9uX2RlbChNZW1vcnlMaXN0ZW5lciAqbGlzdGVuZXIsCj4gICAKPiAgICAgICBs bHNpemUgPSBpbnQxMjhfc3ViKGxsZW5kLCBpbnQxMjhfbWFrZTY0KGlvdmEpKTsKPiAgIAo+ICsg ICAgaWYgKHYtPnNoYWRvd192cXNfZW5hYmxlZCkgewo+ICsgICAgICAgIGNvbnN0IERNQU1hcCAq cmVzdWx0Owo+ICsgICAgICAgIGNvbnN0IHZvaWQgKnZhZGRyID0gbWVtb3J5X3JlZ2lvbl9nZXRf cmFtX3B0cihzZWN0aW9uLT5tcikgKwo+ICsgICAgICAgICAgICBzZWN0aW9uLT5vZmZzZXRfd2l0 aGluX3JlZ2lvbiArCj4gKyAgICAgICAgICAgIChpb3ZhIC0gc2VjdGlvbi0+b2Zmc2V0X3dpdGhp bl9hZGRyZXNzX3NwYWNlKTsKPiArICAgICAgICBETUFNYXAgbWVtX3JlZ2lvbiA9IHsKPiArICAg ICAgICAgICAgLnRyYW5zbGF0ZWRfYWRkciA9IChod2FkZHIpdmFkZHIsCj4gKyAgICAgICAgICAg IC5zaXplID0gaW50MTI4X2dldDY0KGxsc2l6ZSkgLSAxLAo+ICsgICAgICAgIH07Cj4gKwo+ICsg ICAgICAgIHJlc3VsdCA9IHZob3N0X2lvdmFfdHJlZV9maW5kX2lvdmEodi0+aW92YV90cmVlLCAm bWVtX3JlZ2lvbik7Cj4gKyAgICAgICAgaW92YSA9IHJlc3VsdC0+aW92YTsKPiArICAgICAgICB2 aG9zdF9pb3ZhX3RyZWVfcmVtb3ZlKHYtPmlvdmFfdHJlZSwgJm1lbV9yZWdpb24pOwo+ICsgICAg fQo+ICAgICAgIHZob3N0X3ZkcGFfaW90bGJfYmF0Y2hfYmVnaW5fb25jZSh2KTsKPiAgICAgICBy ZXQgPSB2aG9zdF92ZHBhX2RtYV91bm1hcCh2LCBpb3ZhLCBpbnQxMjhfZ2V0NjQobGxzaXplKSk7 Cj4gICAgICAgaWYgKHJldCkgewo+IEBAIC03ODMsMzMgKzgwOSw3MCBAQCBzdGF0aWMgaW50IHZo b3N0X3ZkcGFfc3ZxX3NldF9mZHMoc3RydWN0IHZob3N0X2RldiAqZGV2LAo+ICAgLyoqCj4gICAg KiBVbm1hcCBTVlEgYXJlYSBpbiB0aGUgZGV2aWNlCj4gICAgKi8KPiAtc3RhdGljIGJvb2wgdmhv c3RfdmRwYV9zdnFfdW5tYXBfcmluZyhzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwgaHdhZGRyIGlvdmEs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIHNpemUpCj4g K3N0YXRpYyBib29sIHZob3N0X3ZkcGFfc3ZxX3VubWFwX3Jpbmcoc3RydWN0IHZob3N0X3ZkcGEg KnYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRE1BTWFw ICpuZWVkbGUpCj4gICB7Cj4gKyAgICBjb25zdCBETUFNYXAgKnJlc3VsdCA9IHZob3N0X2lvdmFf dHJlZV9maW5kX2lvdmEodi0+aW92YV90cmVlLCBuZWVkbGUpOwo+ICsgICAgaHdhZGRyIHNpemU7 Cj4gICAgICAgaW50IHI7Cj4gICAKPiAtICAgIHNpemUgPSBST1VORF9VUChzaXplLCBxZW11X3Jl YWxfaG9zdF9wYWdlX3NpemUpOwo+IC0gICAgciA9IHZob3N0X3ZkcGFfZG1hX3VubWFwKHYsIGlv dmEsIHNpemUpOwo+ICsgICAgaWYgKHVubGlrZWx5KCFyZXN1bHQpKSB7Cj4gKyAgICAgICAgZXJy b3JfcmVwb3J0KCJVbmFibGUgdG8gZmluZCBTVlEgYWRkcmVzcyB0byB1bm1hcCIpOwo+ICsgICAg ICAgIHJldHVybiBmYWxzZTsKPiArICAgIH0KPiArCj4gKyAgICBzaXplID0gUk9VTkRfVVAocmVz dWx0LT5zaXplLCBxZW11X3JlYWxfaG9zdF9wYWdlX3NpemUpOwo+ICsgICAgciA9IHZob3N0X3Zk cGFfZG1hX3VubWFwKHYsIHJlc3VsdC0+aW92YSwgc2l6ZSk7Cj4gICAgICAgcmV0dXJuIHIgPT0g MDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJvb2wgdmhvc3RfdmRwYV9zdnFfdW5tYXBfcmluZ3Mo c3RydWN0IHZob3N0X2RldiAqZGV2LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSkKPiAgIHsKPiArICAgIERN QU1hcCBuZWVkbGU7Cj4gICAgICAgc3RydWN0IHZob3N0X3ZkcGEgKnYgPSBkZXYtPm9wYXF1ZTsK PiAgICAgICBzdHJ1Y3Qgdmhvc3RfdnJpbmdfYWRkciBzdnFfYWRkcjsKPiAtICAgIHNpemVfdCBk ZXZpY2Vfc2l6ZSA9IHZob3N0X3N2cV9kZXZpY2VfYXJlYV9zaXplKHN2cSk7Cj4gLSAgICBzaXpl X3QgZHJpdmVyX3NpemUgPSB2aG9zdF9zdnFfZHJpdmVyX2FyZWFfc2l6ZShzdnEpOwo+ICAgICAg IGJvb2wgb2s7Cj4gICAKPiAgICAgICB2aG9zdF9zdnFfZ2V0X3ZyaW5nX2FkZHIoc3ZxLCAmc3Zx X2FkZHIpOwo+ICAgCj4gLSAgICBvayA9IHZob3N0X3ZkcGFfc3ZxX3VubWFwX3Jpbmcodiwgc3Zx X2FkZHIuZGVzY191c2VyX2FkZHIsIGRyaXZlcl9zaXplKTsKPiArICAgIG5lZWRsZSA9IChETUFN YXApIHsKPiArICAgICAgICAudHJhbnNsYXRlZF9hZGRyID0gc3ZxX2FkZHIuZGVzY191c2VyX2Fk ZHIsCj4gKyAgICB9Owo+ICsgICAgb2sgPSB2aG9zdF92ZHBhX3N2cV91bm1hcF9yaW5nKHYsICZu ZWVkbGUpOwo+ICAgICAgIGlmICh1bmxpa2VseSghb2spKSB7Cj4gICAgICAgICAgIHJldHVybiBm YWxzZTsKPiAgICAgICB9Cj4gICAKPiAtICAgIHJldHVybiB2aG9zdF92ZHBhX3N2cV91bm1hcF9y aW5nKHYsIHN2cV9hZGRyLnVzZWRfdXNlcl9hZGRyLCBkZXZpY2Vfc2l6ZSk7Cj4gKyAgICBuZWVk bGUgPSAoRE1BTWFwKSB7Cj4gKyAgICAgICAgLnRyYW5zbGF0ZWRfYWRkciA9IHN2cV9hZGRyLnVz ZWRfdXNlcl9hZGRyLAo+ICsgICAgfTsKPiArICAgIHJldHVybiB2aG9zdF92ZHBhX3N2cV91bm1h cF9yaW5nKHYsICZuZWVkbGUpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogTWFwIFNWUSBhcmVhIGlu IHRoZSBkZXZpY2UKPiArICoKPiArICogQHYgICAgICAgICAgVmhvc3QtdmRwYSBkZXZpY2UKPiAr ICogQG5lZWRsZSAgICAgVGhlIGFyZWEgdG8gc2VhcmNoIGlvdmEKPiArICogQHJlYWRvbmx5ICAg UGVybWlzc2lvbnMgb2YgdGhlIGFyZWEKPiArICovCj4gK3N0YXRpYyBib29sIHZob3N0X3ZkcGFf c3ZxX21hcF9yaW5nKHN0cnVjdCB2aG9zdF92ZHBhICp2LCBjb25zdCBETUFNYXAgKm5lZWRsZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkb25seSkKPiAr ewo+ICsgICAgaHdhZGRyIG9mZjsKPiArICAgIGNvbnN0IERNQU1hcCAqcmVzdWx0ID0gdmhvc3Rf aW92YV90cmVlX2ZpbmRfaW92YSh2LT5pb3ZhX3RyZWUsIG5lZWRsZSk7Cj4gKyAgICBpbnQgcjsK PiArCj4gKyAgICBpZiAodW5saWtlbHkoIXJlc3VsdCkpIHsKPiArICAgICAgICBlcnJvcl9yZXBv cnQoIkNhbid0IGxvY2F0ZSBTVlEgcmluZyIpOwo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiAr ICAgIH0KPiArCj4gKyAgICBvZmYgPSBuZWVkbGUtPnRyYW5zbGF0ZWRfYWRkciAtIHJlc3VsdC0+ dHJhbnNsYXRlZF9hZGRyOwo+ICsgICAgciA9IHZob3N0X3ZkcGFfZG1hX21hcCh2LCByZXN1bHQt PmlvdmEgKyBvZmYsIG5lZWRsZS0+c2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZvaWQgKiluZWVkbGUtPnRyYW5zbGF0ZWRfYWRkciwgcmVhZG9ubHkpOwo+ICsgICAgcmV0dXJu IHIgPT0gMDsKPiAgIH0KPiAgIAo+ICAgLyoqCj4gQEAgLTgyMSwyMyArODg0LDI5IEBAIHN0YXRp YyBib29sIHZob3N0X3ZkcGFfc3ZxX3VubWFwX3JpbmdzKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwK PiAgIHN0YXRpYyBib29sIHZob3N0X3ZkcGFfc3ZxX21hcF9yaW5ncyhzdHJ1Y3Qgdmhvc3RfZGV2 ICpkZXYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmhv c3RTaGFkb3dWaXJ0cXVldWUgKnN2cSkKPiAgIHsKPiArICAgIERNQU1hcCBuZWVkbGU7Cj4gICAg ICAgc3RydWN0IHZob3N0X3ZkcGEgKnYgPSBkZXYtPm9wYXF1ZTsKPiAgICAgICBzdHJ1Y3Qgdmhv c3RfdnJpbmdfYWRkciBzdnFfYWRkcjsKPiAgICAgICBzaXplX3QgZGV2aWNlX3NpemUgPSB2aG9z dF9zdnFfZGV2aWNlX2FyZWFfc2l6ZShzdnEpOwo+ICAgICAgIHNpemVfdCBkcml2ZXJfc2l6ZSA9 IHZob3N0X3N2cV9kcml2ZXJfYXJlYV9zaXplKHN2cSk7Cj4gLSAgICBpbnQgcjsKPiArICAgIGJv b2wgb2s7Cj4gICAKPiAgICAgICB2aG9zdF9zdnFfZ2V0X3ZyaW5nX2FkZHIoc3ZxLCAmc3ZxX2Fk ZHIpOwo+ICAgCj4gLSAgICByID0gdmhvc3RfdmRwYV9kbWFfbWFwKHYsIHN2cV9hZGRyLmRlc2Nf dXNlcl9hZGRyLCBkcml2ZXJfc2l6ZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv aWQgKilzdnFfYWRkci5kZXNjX3VzZXJfYWRkciwgdHJ1ZSk7Cj4gLSAgICBpZiAodW5saWtlbHko ciAhPSAwKSkgewo+ICsgICAgbmVlZGxlID0gKERNQU1hcCkgewo+ICsgICAgICAgIC50cmFuc2xh dGVkX2FkZHIgPSBzdnFfYWRkci5kZXNjX3VzZXJfYWRkciwKPiArICAgICAgICAuc2l6ZSA9IGRy aXZlcl9zaXplLAo+ICsgICAgfTsKPiArICAgIG9rID0gdmhvc3RfdmRwYV9zdnFfbWFwX3Jpbmco diwgJm5lZWRsZSwgdHJ1ZSk7Cj4gKyAgICBpZiAodW5saWtlbHkoIW9rKSkgewo+ICAgICAgICAg ICByZXR1cm4gZmFsc2U7Cj4gICAgICAgfQo+ICAgCj4gLSAgICByID0gdmhvc3RfdmRwYV9kbWFf bWFwKHYsIHN2cV9hZGRyLnVzZWRfdXNlcl9hZGRyLCBkZXZpY2Vfc2l6ZSwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHZvaWQgKilzdnFfYWRkci51c2VkX3VzZXJfYWRkciwgZmFsc2Up Owo+IC0gICAgcmV0dXJuIHIgPT0gMDsKPiArICAgIG5lZWRsZSA9IChETUFNYXApIHsKPiArICAg ICAgICAudHJhbnNsYXRlZF9hZGRyID0gc3ZxX2FkZHIudXNlZF91c2VyX2FkZHIsCj4gKyAgICAg ICAgLnNpemUgPSBkZXZpY2Vfc2l6ZSwKPiArICAgIH07Cj4gKyAgICByZXR1cm4gdmhvc3RfdmRw YV9zdnFfbWFwX3JpbmcodiwgJm5lZWRsZSwgZmFsc2UpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMg Ym9vbCB2aG9zdF92ZHBhX3N2cV9zZXR1cChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsCj4gQEAgLTEw MDYsNiArMTA3NSwyMyBAQCBzdGF0aWMgaW50IHZob3N0X3ZkcGFfc2V0X293bmVyKHN0cnVjdCB2 aG9zdF9kZXYgKmRldikKPiAgICAgICByZXR1cm4gdmhvc3RfdmRwYV9jYWxsKGRldiwgVkhPU1Rf U0VUX09XTkVSLCBOVUxMKTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgYm9vbCB2aG9zdF92ZHBhX3N2 cV9nZXRfdnFfcmVnaW9uKHN0cnVjdCB2aG9zdF92ZHBhICp2LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICppb3ZhX2FkZHIp Cj4gK3sKPiArICAgIGNvbnN0IERNQU1hcCBuZWVkbGUgPSB7Cj4gKyAgICAgICAgLnRyYW5zbGF0 ZWRfYWRkciA9IGFkZHIsCj4gKyAgICB9Owo+ICsgICAgY29uc3QgRE1BTWFwICp0cmFuc2xhdGlv biA9IHZob3N0X2lvdmFfdHJlZV9maW5kX2lvdmEodi0+aW92YV90cmVlLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRsZSk7 Cj4gKyAgICBpZiAoIXRyYW5zbGF0aW9uKSB7Cj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICsg ICAgfQo+ICsKPiArICAgICppb3ZhX2FkZHIgPSB0cmFuc2xhdGlvbi0+aW92YSArIChhZGRyIC0g dHJhbnNsYXRpb24tPnRyYW5zbGF0ZWRfYWRkcik7Cj4gKyAgICByZXR1cm4gdHJ1ZTsKPiArfQo+ ICsKPiAgIHN0YXRpYyB2b2lkIHZob3N0X3ZkcGFfdnFfZ2V0X2d1ZXN0X2FkZHIoc3RydWN0IHZo b3N0X3ZyaW5nX2FkZHIgKmFkZHIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKQo+ICAgewo+IEBAIC0xMDIzLDEw ICsxMTA5LDIzIEBAIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV92cV9nZXRfYWRkcihzdHJ1Y3Qgdmhv c3RfZGV2ICpkZXYsCj4gICAgICAgYXNzZXJ0KGRldi0+dmhvc3Rfb3BzLT5iYWNrZW5kX3R5cGUg PT0gVkhPU1RfQkFDS0VORF9UWVBFX1ZEUEEpOwo+ICAgCj4gICAgICAgaWYgKHYtPnNoYWRvd192 cXNfZW5hYmxlZCkgewo+ICsgICAgICAgIHN0cnVjdCB2aG9zdF92cmluZ19hZGRyIHN2cV9hZGRy Owo+ICAgICAgICAgICBpbnQgaWR4ID0gdmhvc3RfdmRwYV9nZXRfdnFfaW5kZXgoZGV2LCBhZGRy LT5pbmRleCk7Cj4gICAgICAgICAgIFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEgPSBnX3B0cl9h cnJheV9pbmRleCh2LT5zaGFkb3dfdnFzLCBpZHgpOwo+ICAgCj4gLSAgICAgICAgdmhvc3Rfc3Zx X2dldF92cmluZ19hZGRyKHN2cSwgYWRkcik7Cj4gKyAgICAgICAgdmhvc3Rfc3ZxX2dldF92cmlu Z19hZGRyKHN2cSwgJnN2cV9hZGRyKTsKPiArICAgICAgICBpZiAoIXZob3N0X3ZkcGFfc3ZxX2dl dF92cV9yZWdpb24odiwgc3ZxX2FkZHIuZGVzY191c2VyX2FkZHIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyLT5kZXNjX3VzZXJfYWRkcikpIHsKPiAr ICAgICAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoIXZob3N0 X3ZkcGFfc3ZxX2dldF92cV9yZWdpb24odiwgc3ZxX2FkZHIuYXZhaWxfdXNlcl9hZGRyLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkci0+YXZhaWxfdXNl cl9hZGRyKSkgewo+ICsgICAgICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICAgICAgfQo+ICsgICAg ICAgIGlmICghdmhvc3RfdmRwYV9zdnFfZ2V0X3ZxX3JlZ2lvbih2LCBzdnFfYWRkci51c2VkX3Vz ZXJfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFk ZHItPnVzZWRfdXNlcl9hZGRyKSkgewo+ICsgICAgICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICAg ICAgfQo+ICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgIHZob3N0X3ZkcGFfdnFfZ2V0X2d1ZXN0 X2FkZHIoYWRkciwgdnEpOwo+ICAgICAgIH0KPiBAQCAtMTA5NSwxMyArMTE5NCwzNyBAQCBzdGF0 aWMgaW50IHZob3N0X3ZkcGFfaW5pdF9zdnEoc3RydWN0IHZob3N0X2RldiAqaGRldiwgc3RydWN0 IHZob3N0X3ZkcGEgKnYsCj4gICAKPiAgICAgICBzaGFkb3dfdnFzID0gZ19wdHJfYXJyYXlfbmV3 X2Z1bGwoaGRldi0+bnZxcywgdmhvc3RfcHN2cV9mcmVlKTsKPiAgICAgICBmb3IgKHVuc2lnbmVk IG4gPSAwOyBuIDwgaGRldi0+bnZxczsgKytuKSB7Cj4gLSAgICAgICAgVmhvc3RTaGFkb3dWaXJ0 cXVldWUgKnN2cSA9IHZob3N0X3N2cV9uZXcocXNpemUpOwo+IC0KPiArICAgICAgICBETUFNYXAg ZGV2aWNlX3JlZ2lvbiwgZHJpdmVyX3JlZ2lvbjsKPiArICAgICAgICBzdHJ1Y3Qgdmhvc3RfdnJp bmdfYWRkciBhZGRyOwo+ICsgICAgICAgIFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEgPSB2aG9z dF9zdnFfbmV3KHFzaXplLCB2LT5pb3ZhX3RyZWUpOwo+ICAgICAgICAgICBpZiAodW5saWtlbHko IXN2cSkpIHsKPiAgICAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIkNhbm5vdCBjcmVhdGUg c3ZxICV1Iiwgbik7Cj4gICAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gICAgICAgICAgIH0KPiAt ICAgICAgICBnX3B0cl9hcnJheV9hZGQodi0+c2hhZG93X3Zxcywgc3ZxKTsKPiArCj4gKyAgICAg ICAgdmhvc3Rfc3ZxX2dldF92cmluZ19hZGRyKHN2cSwgJmFkZHIpOwo+ICsgICAgICAgIGRyaXZl cl9yZWdpb24gPSAoRE1BTWFwKSB7Cj4gKyAgICAgICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSAo aHdhZGRyKWFkZHIuZGVzY191c2VyX2FkZHIsCj4gKwo+ICsgICAgICAgICAgICAvKgo+ICsgICAg ICAgICAgICAgKiBETUFNQXAuc2l6ZSBpbmNsdWRlIHRoZSBsYXN0IGJ5dGUgaW5jbHVkZWQgaW4g dGhlIHJhbmdlLCB3aGlsZQo+ICsgICAgICAgICAgICAgKiBzaXplb2YgbWFya3Mgb25lIHBhc3Qg aXQuIFN1YnN0cmFjdCBvbmUgYnl0ZSB0byBtYWtlIHRoZW0gbWF0Y2guCj4gKyAgICAgICAgICAg ICAqLwo+ICsgICAgICAgICAgICAuc2l6ZSA9IHZob3N0X3N2cV9kcml2ZXJfYXJlYV9zaXplKHN2 cSkgLSAxLAo+ICsgICAgICAgICAgICAucGVybSA9IFZIT1NUX0FDQ0VTU19STywKPiArICAgICAg ICB9Owo+ICsgICAgICAgIGRldmljZV9yZWdpb24gPSAoRE1BTWFwKSB7Cj4gKyAgICAgICAgICAg IC50cmFuc2xhdGVkX2FkZHIgPSAoaHdhZGRyKWFkZHIudXNlZF91c2VyX2FkZHIsCj4gKyAgICAg ICAgICAgIC5zaXplID0gdmhvc3Rfc3ZxX2RldmljZV9hcmVhX3NpemUoc3ZxKSAtIDEsCj4gKyAg ICAgICAgICAgIC5wZXJtID0gVkhPU1RfQUNDRVNTX1JXLAo+ICsgICAgICAgIH07Cj4gKwo+ICsg ICAgICAgIHIgPSB2aG9zdF9pb3ZhX3RyZWVfbWFwX2FsbG9jKHYtPmlvdmFfdHJlZSwgJmRyaXZl cl9yZWdpb24pOwo+ICsgICAgICAgIGFzc2VydChyID09IElPVkFfT0spOwoKCkxldCdzIGZhaWwg aW5zdGVhZCBvZiBhc3NlcnQgaGVyZS4KClRoYW5rcwoKCj4gKyAgICAgICAgciA9IHZob3N0X2lv dmFfdHJlZV9tYXBfYWxsb2Modi0+aW92YV90cmVlLCAmZGV2aWNlX3JlZ2lvbik7Cj4gKyAgICAg ICAgYXNzZXJ0KHIgPT0gSU9WQV9PSyk7Cj4gKwo+ICsgICAgICAgIGdfcHRyX2FycmF5X2FkZChz aGFkb3dfdnFzLCBzdnEpOwo+ICAgICAgIH0KPiAgIAo+ICAgb3V0OgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBs aXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlz dHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u