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 38AFCC7EE2E for ; Wed, 7 Jun 2023 20:18:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 92EE141D62; Wed, 7 Jun 2023 20:18:02 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 92EE141D62 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=VixbyzfG 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 OzPS17JSTM94; Wed, 7 Jun 2023 20:18:00 +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 62039418A6; Wed, 7 Jun 2023 20:17:59 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 62039418A6 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 389AFC0087; Wed, 7 Jun 2023 20:17:59 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id B47AFC0029 for ; Wed, 7 Jun 2023 20:17:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 8EBB260FE7 for ; Wed, 7 Jun 2023 20:17:57 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 8EBB260FE7 Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=VixbyzfG X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id avfeCztr5UwD for ; Wed, 7 Jun 2023 20:17:55 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 37A6460FB6 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 37A6460FB6 for ; Wed, 7 Jun 2023 20:17:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686169073; 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=+TLWG1bKA3D4s3g7wckUglwK9v5/dLu6jT8A4pzstd4=; b=VixbyzfG3nzClrapNqFWJ4xvJtXLRDU9Sdtdj/kjHKAReZU4X9XYqFTm2vcKCb5rDsuHOk 0TiLWL2jjD+V6F8+7UPZnuNdMl9NvU6JJTOK1kBxocxb9jOitmLkBCeJc6HaWjys4lSzmP TUYtQN1nJRFdTCPXZp4VyFwSaYIHSuA= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-60--kInE9T2PmK1s3haS7QjFg-1; Wed, 07 Jun 2023 16:17:52 -0400 X-MC-Unique: -kInE9T2PmK1s3haS7QjFg-1 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-30c5d31b567so2811080f8f.2 for ; Wed, 07 Jun 2023 13:17:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686169071; x=1688761071; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+TLWG1bKA3D4s3g7wckUglwK9v5/dLu6jT8A4pzstd4=; b=iFHgpS8L7M/86U8LnwpaJJJk5pM3PtXpjHkoIzBJHCxpULcg8zmL5m9oGRwHqC8dJD dHNAxeaZJlxn1Wwhe40g4E+6DHVJpnoLccECNUGP/36fuE6b6yGaKRIpat/pY8hfDHjq wYmj7gxNiMhj6025sVdgTfOHcut3qobW3iabJzSBqUoJ4ddeBw0JHgmG24sJuxFgVoBv wiDGvYrV9opatqdTakv6IZkZrRYtK1kxWJaxDt99CyQrOKtqT0pXqJVgzoM88iPZ9/2z dmbHZXG5tk/40XhALwFIHBT0LDwUaLCtSMmlkMsiJXMvgeC/8eg/DRo8I8Z3y8PRF0/b KFmQ== X-Gm-Message-State: AC+VfDyg5x49Gf6+EGlTpmLrcRZ1Vyev5etcgPkccCETsQpRSDonsnlT cq3neXYl/VfxnaKXtRdD3y3ellBwtTRn9YFWwPI7EBlfdtAj81VRjdhZiYrqRk8ztmif/X3j1je rhFskj02mfnDza99wJxqYMJQRZYoeAm8TX54CRg/dOg== X-Received: by 2002:adf:de92:0:b0:2ef:bada:2f25 with SMTP id w18-20020adfde92000000b002efbada2f25mr5371524wrl.67.1686169070969; Wed, 07 Jun 2023 13:17:50 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4r3XCgUjwFWhUPjNSIhsTEOAC86mcly4W7rXVbWFx/VMJGrXNulQtX2GqMbx2fI82AKuPs6w== X-Received: by 2002:adf:de92:0:b0:2ef:bada:2f25 with SMTP id w18-20020adfde92000000b002efbada2f25mr5371507wrl.67.1686169070541; Wed, 07 Jun 2023 13:17:50 -0700 (PDT) Received: from redhat.com ([2.55.41.2]) by smtp.gmail.com with ESMTPSA id y14-20020a5d470e000000b002fed865c55esm16256176wrq.56.2023.06.07.13.17.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jun 2023 13:17:49 -0700 (PDT) Date: Wed, 7 Jun 2023 16:17:45 -0400 From: "Michael S. Tsirkin" To: Liang Chen Subject: Re: [PATCH net-next 2/5] virtio_net: Add page_pool support to improve performance Message-ID: <20230607161724-mutt-send-email-mst@kernel.org> References: <20230526054621.18371-1-liangchen.linux@gmail.com> <20230526054621.18371-2-liangchen.linux@gmail.com> <20230528021708-mutt-send-email-mst@kernel.org> <20230529055439-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: xuanzhuo@linux.alibaba.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, alexander.duyck@gmail.com, virtualization@lists.linux-foundation.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gV2VkLCBKdW4gMDcsIDIwMjMgYXQgMDU6MDg6NTlQTSArMDgwMCwgTGlhbmcgQ2hlbiB3cm90 ZToKPiBPbiBUdWUsIE1heSAzMCwgMjAyMyBhdCA5OjE54oCvQU0gTGlhbmcgQ2hlbiA8bGlhbmdj aGVuLmxpbnV4QGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gTW9uLCBNYXkgMjksIDIwMjMg YXQgNTo1NeKAr1BNIE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+IHdyb3RlOgo+ ID4gPgo+ID4gPiBPbiBNb24sIE1heSAyOSwgMjAyMyBhdCAwMzoyNzo1NlBNICswODAwLCBMaWFu ZyBDaGVuIHdyb3RlOgo+ID4gPiA+IE9uIFN1biwgTWF5IDI4LCAyMDIzIGF0IDI6MjDigK9QTSBN aWNoYWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29tPiB3cm90ZToKPiA+ID4gPiA+Cj4gPiA+ ID4gPiBPbiBGcmksIE1heSAyNiwgMjAyMyBhdCAwMTo0NjoxOFBNICswODAwLCBMaWFuZyBDaGVu IHdyb3RlOgo+ID4gPiA+ID4gPiBUaGUgaW1wbGVtZW50YXRpb24gYXQgdGhlIG1vbWVudCB1c2Vz IG9uZSBwYWdlIHBlciBwYWNrZXQgaW4gYm90aCB0aGUKPiA+ID4gPiA+ID4gbm9ybWFsIGFuZCBY RFAgcGF0aC4gSW4gYWRkaXRpb24sIGludHJvZHVjaW5nIGEgbW9kdWxlIHBhcmFtZXRlciB0byBl bmFibGUKPiA+ID4gPiA+ID4gb3IgZGlzYWJsZSB0aGUgdXNhZ2Ugb2YgcGFnZSBwb29sIChkaXNh YmxlZCBieSBkZWZhdWx0KS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSW4gc2luZ2xlLWNvcmUg dm0gdGVzdGluZyBlbnZpcm9ubWVudHMsIGl0IGdpdmVzIGEgbW9kZXN0IHBlcmZvcm1hbmNlIGdh aW4KPiA+ID4gPiA+ID4gaW4gdGhlIG5vcm1hbCBwYXRoLgo+ID4gPiA+ID4gPiAgIFVwc3RyZWFt IGNvZGViYXNlOiA0Ny41IEdiaXRzL3NlYwo+ID4gPiA+ID4gPiAgIFVwc3RyZWFtIGNvZGViYXNl ICsgcGFnZV9wb29sIHN1cHBvcnQ6IDUwLjIgR2JpdHMvc2VjCj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IEluIG11bHRpLWNvcmUgdm0gdGVzdGluZyBlbnZpcm9ubWVudHMsIFRoZSBtb3N0IHNpZ25p ZmljYW50IHBlcmZvcm1hbmNlCj4gPiA+ID4gPiA+IGdhaW4gaXMgb2JzZXJ2ZWQgaW4gWERQIGNw dW1hcDoKPiA+ID4gPiA+ID4gICBVcHN0cmVhbSBjb2RlYmFzZTogMS4zOCBHYml0cy9zZWMKPiA+ ID4gPiA+ID4gICBVcHN0cmVhbSBjb2RlYmFzZSArIHBhZ2VfcG9vbCBzdXBwb3J0OiA5Ljc0IEdi aXRzL3NlYwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBXaXRoIHRoaXMgZm91bmRhdGlvbiwgd2Ug Y2FuIGZ1cnRoZXIgaW50ZWdyYXRlIHBhZ2UgcG9vbCBmcmFnbWVudGF0aW9uIGFuZAo+ID4gPiA+ ID4gPiBETUEgbWFwL3VubWFwIHN1cHBvcnQuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IExpYW5nIENoZW4gPGxpYW5nY2hlbi5saW51eEBnbWFpbC5jb20+Cj4gPiA+ID4g Pgo+ID4gPiA+ID4gV2h5IG9mZiBieSBkZWZhdWx0Pwo+ID4gPiA+ID4gSSBhbSBndWVzc2luZyBp dCBzb21ldGltZXMgaGFzIHBlcmZvcm1hbmNlIGNvc3RzIHRvbz8KPiA+ID4gPiA+Cj4gPiA+ID4g Pgo+ID4gPiA+ID4gV2hhdCBoYXBwZW5zIGlmIHdlIHVzZSBwYWdlIHBvb2wgZm9yIGJpZyBtb2Rl IHRvbz8KPiA+ID4gPiA+IFRoZSBsZXNzIG1vZGVzIHdlIGhhdmUgdGhlIGJldHRlci4uLgo+ID4g PiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBTdXJlLCBub3cgSSBiZWxpZXZlIGl0IG1h a2VzIHNlbnNlIHRvIGVuYWJsZSBpdCBieSBkZWZhdWx0LiBXaGVuIHRoZQo+ID4gPiA+IHBhY2tl dCBzaXplIGlzIHZlcnkgc21hbGwsIGl0IHJlZHVjZXMgdGhlIGxpa2VsaWhvb2Qgb2Ygc2tiCj4g PiA+ID4gY29hbGVzY2luZy4gQnV0IHN1Y2ggY2FzZXMgYXJlIHJhcmUuCj4gPiA+Cj4gPiA+IHNt YWxsIHBhY2tldHMgYXJlIHJhcmU/IFRoZXNlIHdvcmtsb2FkcyBhcmUgZWFzeSB0byBjcmVhdGUg YWN0dWFsbHkuCj4gPiA+IFBscyB0cnkgYW5kIGluY2x1ZGUgYmVuY2htYXJrIHdpdGggc21hbGwg cGFja2V0IHNpemUuCj4gPiA+Cj4gPgo+ID4gU3VyZSwgVGhhbmtzIQo+IAo+IEJlZm9yZSBnb2lu ZyBhaGVhZCBhbmQgcG9zdGluZyB2MiBwYXRjaCwgSSB3b3VsZCBsaWtlIHRvIGhlYXIgbW9yZQo+ IGFkdmljZSBmb3IgdGhlIGNhc2VzIG9mIHNtYWxsIHBhY2tldHMuIEkgaGF2ZSBkb25lIG1vcmUg cGVyZm9ybWFuY2UKPiBiZW5jaG1hcmsgd2l0aCBzbWFsbCBwYWNrZXRzIHNpbmNlIHRoZW4uIEhl cmUgaXMgYSBsaXN0IG9mIGlwZXJmCj4gb3V0cHV0LAo+IAo+IFdpdGggUFAgYW5kIFBQIGZyYWdt ZW50aW5nOgo+IDI1Nks6ICAgWyAgNV0gNTA1LjAwLTUxMC4wMCBzZWMgIDEuMzQgR0J5dGVzICAy LjMxIEdiaXRzL3NlYyAgICAwICAgIDE0NCBLQnl0ZXMKPiAxSzogICAgICAgWyAgNV0gIDMwLjAw LTM1LjAwICBzZWMgIDQuNjMgR0J5dGVzICA3Ljk1IEdiaXRzL3NlYyAgICAwCj4gMjIzIEtCeXRl cwo+IDJLOiAgICAgICBbICA1XSAgNjUuMDAtNzAuMDAgIHNlYyAgOC4zMyBHQnl0ZXMgIDE0LjMg R2JpdHMvc2VjICAgIDAKPiAzMjQgS0J5dGVzCj4gNEs6ICAgICAgIFsgIDVdICAzMC4wMC0zNS4w MCAgc2VjICAxMy4zIEdCeXRlcyAgMjIuOCBHYml0cy9zZWMgICAgMAo+IDEuMDggTUJ5dGVzCj4g OEs6ICAgICAgIFsgIDVdICA1MC4wMC01NS4wMCAgc2VjICAxOC45IEdCeXRlcyAgMzIuNCBHYml0 cy9zZWMgICAgMAo+IDc0NCBLQnl0ZXMKPiAxNks6ICAgICBbICA1XSAgMjUuMDAtMzAuMDAgIHNl YyAgMjQuNiBHQnl0ZXMgIDQyLjMgR2JpdHMvc2VjICAgIDAgICAgOTYzIEtCeXRlcwo+IDMySzog ICAgIFsgIDVdICA0NS4wMC01MC4wMCAgc2VjICAyOS44IEdCeXRlcyAgNTEuMiBHYml0cy9zZWMg ICAgMCAgIDEuMjUgTUJ5dGVzCj4gNjRLOiAgICAgWyAgNV0gIDM1LjAwLTQwLjAwICBzZWMgIDM0 LjAgR0J5dGVzICA1OC40IEdiaXRzL3NlYyAgICAwICAgMS43MCBNQnl0ZXMKPiAxMjhLOiAgIFsg IDVdICA0NS4wMC01MC4wMCAgc2VjICAzNi43IEdCeXRlcyAgNjMuMSBHYml0cy9zZWMgICAgMCAg IDQuMjYgTUJ5dGVzCj4gMjU2SzogICBbICA1XSAgMzAuMDAtMzUuMDAgIHNlYyAgNDAuMCBHQnl0 ZXMgIDY4LjggR2JpdHMvc2VjICAgIDAgICAzLjIwIE1CeXRlcwo+IAo+IFdpdGhvdXQgUFA6Cj4g MjU2OiAgICAgWyAgNV0gNjgwLjAwLTY4NS4wMCBzZWMgIDEuNTcgR0J5dGVzICAyLjY5IEdiaXRz L3NlYyAgICAwICAgIDM1OSBLQnl0ZXMKPiAxSzogICAgICBbICA1XSAgNzUuMDAtODAuMDAgIHNl YyAgNS40NyBHQnl0ZXMgIDkuNDAgR2JpdHMvc2VjICAgIDAgICAgNzMwIEtCeXRlcwo+IDJLOiAg ICAgIFsgIDVdICA2NS4wMC03MC4wMCAgc2VjICA5LjQ2IEdCeXRlcyAgMTYuMiBHYml0cy9zZWMg ICAgMCAgIDEuOTkgTUJ5dGVzCj4gNEs6ICAgICAgWyAgNV0gIDMwLjAwLTM1LjAwICBzZWMgIDE0 LjUgR0J5dGVzICAyNS4wIEdiaXRzL3NlYyAgICAwICAgMS4yMCBNQnl0ZXMKPiA4SzogICAgICBb ICA1XSAgNDUuMDAtNTAuMDAgIHNlYyAgMTkuOSBHQnl0ZXMgIDM0LjEgR2JpdHMvc2VjICAgIDAg ICAxLjcyIE1CeXRlcwo+IDE2SzogICAgWyAgNV0gICA1LjAwLTEwLjAwICBzZWMgIDIzLjggR0J5 dGVzICA0MC45IEdiaXRzL3NlYyAgICAwICAgMi45MCBNQnl0ZXMKPiAzMks6ICAgIFsgIDVdICAx NS4wMC0yMC4wMCAgc2VjICAyOC4wIEdCeXRlcyAgNDguMSBHYml0cy9zZWMgICAgMCAgIDMuMDMg TUJ5dGVzCj4gNjRLOiAgICBbICA1XSAgNjAuMDAtNjUuMDAgIHNlYyAgMzEuOCBHQnl0ZXMgIDU0 LjYgR2JpdHMvc2VjICAgIDAgICAzLjA1IE1CeXRlcwo+IDEyOEs6ICBbICA1XSAgNDUuMDAtNTAu MDAgIHNlYyAgMzMuMCBHQnl0ZXMgIDU2LjYgR2JpdHMvc2VjICAgIDEgICAzLjAzIE1CeXRlcwo+ IDI1Nks6ICBbICA1XSAgMjUuMDAtMzAuMDAgIHNlYyAgMzQuNyBHQnl0ZXMgIDU5LjYgR2JpdHMv c2VjICAgIDAgICAzLjExIE1CeXRlcwo+IAo+IAo+IFRoZSBtYWpvciBmYWN0b3IgY29udHJpYnV0 aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBkcm9wIGlzIHRoZSByZWR1Y3Rpb24KPiBvZiBza2IgY29h bGVzY2luZy4gQWRkaXRpb25hbGx5LCB3aXRob3V0IHRoZSBwYWdlIHBvb2wsIHNtYWxsIHBhY2tl dHMKPiBjYW4gc3RpbGwgYmVuZWZpdCBmcm9tIHRoZSBhbGxvY2F0aW9uIG9mIDggY29udGludW91 cyBwYWdlcyBieQo+IGJyZWFraW5nIHRoZW0gZG93biBpbnRvIHNtYWxsZXIgcGllY2VzLiBUaGlz IGVmZmVjdGl2ZWx5IHJlZHVjZXMgdGhlCj4gZnJlcXVlbmN5IG9mIHBhZ2UgYWxsb2NhdGlvbiBm cm9tIHRoZSBidWRkeSBzeXN0ZW0uIEZvciBpbnN0YW5jZSwgdGhlCj4gYXJyaXZhbCBvZiAzMiAx SyBwYWNrZXRzIG9ubHkgdHJpZ2dlcnMgb25lIGFsbG9jX3BhZ2UgY2FsbC4gVGhlcmVmb3JlLAo+ IHRoZSBiZW5lZml0cyBvZiB1c2luZyBhIHBhZ2UgcG9vbCBhcmUgbGltaXRlZCBpbiBzdWNoIGNh c2VzLiBJbiBmYWN0LAo+IHdpdGhvdXQgcGFnZSBwb29sIGZyYWdtZW50aW5nIGVuYWJsZWQsIGl0 IGNhbiBldmVuIGhpbmRlciBwZXJmb3JtYW5jZQo+IGZyb20gdGhpcyBwZXJzcGVjdGl2ZS4KPiAK PiBVcG9uIGZ1cnRoZXIgY29uc2lkZXJhdGlvbiwgSSB0ZW5kIHRvIGJlbGlldmUgbWFraW5nIHBh Z2UgcG9vbCB0aGUKPiBkZWZhdWx0IG9wdGlvbiBtYXkgbm90IGJlIGFwcHJvcHJpYXRlLiBBcyB5 b3UgcG9pbnRlZCBvdXQsIHdlIGNhbm5vdAo+IHNpbXBseSBpZ25vcmUgdGhlIHBlcmZvcm1hbmNl IGltcGFjdCBvbiBzbWFsbCBwYWNrZXRzLiBBbnkgY29tbWVudHMgb24KPiB0aGlzIHdpbGwgYmUg bXVjaCBhcHByZWNpYXRlZC4KPiAKPiAKPiBUaGFua3MsCj4gTGlhbmcKCgpTbywgbGV0J3Mgb25s eSB1c2UgcGFnZSBwb29sIGZvciBYRFAgdGhlbj8KCj4gCj4gPiA+ID4gVGhlIHVzYWdlIG9mIHBh Z2UgcG9vbCBmb3IgYmlnIG1vZGUgaXMgYmVpbmcgZXZhbHVhdGVkIG5vdy4gVGhhbmtzIQo+ID4g PiA+Cj4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiAgZHJpdmVycy9uZXQvdmlydGlvX25ldC5j IHwgMTg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gPiA+ID4g PiAgMSBmaWxlIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQu YyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+ID4gPiA+ID4gPiBpbmRleCBjNWRjYTBkOTJl NjQuLjk5YzBjYTBjMTc4MSAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvdmly dGlvX25ldC5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwo+ID4g PiA+ID4gPiBAQCAtMzEsNiArMzEsOSBAQCBtb2R1bGVfcGFyYW0oY3N1bSwgYm9vbCwgMDQ0NCk7 Cj4gPiA+ID4gPiA+ICBtb2R1bGVfcGFyYW0oZ3NvLCBib29sLCAwNDQ0KTsKPiA+ID4gPiA+ID4g IG1vZHVsZV9wYXJhbShuYXBpX3R4LCBib29sLCAwNjQ0KTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gK3N0YXRpYyBib29sIHBhZ2VfcG9vbF9lbmFibGVkOwo+ID4gPiA+ID4gPiArbW9kdWxlX3Bh cmFtKHBhZ2VfcG9vbF9lbmFibGVkLCBib29sLCAwNDAwKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiAgLyogRklYTUU6IE1UVSBpbiBjb25maWcuICovCj4gPiA+ID4gPiA+ICAjZGVmaW5lIEdP T0RfUEFDS0VUX0xFTiAoRVRIX0hMRU4gKyBWTEFOX0hMRU4gKyBFVEhfREFUQV9MRU4pCj4gPiA+ ID4gPiA+ICAjZGVmaW5lIEdPT0RfQ09QWV9MRU4gICAgICAgIDEyOAo+ID4gPiA+ID4gPiBAQCAt MTU5LDYgKzE2Miw5IEBAIHN0cnVjdCByZWNlaXZlX3F1ZXVlIHsKPiA+ID4gPiA+ID4gICAgICAg LyogQ2hhaW4gcGFnZXMgYnkgdGhlIHByaXZhdGUgcHRyLiAqLwo+ID4gPiA+ID4gPiAgICAgICBz dHJ1Y3QgcGFnZSAqcGFnZXM7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICsgICAgIC8qIFBhZ2Ug cG9vbCAqLwo+ID4gPiA+ID4gPiArICAgICBzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gICAgICAgLyogQXZlcmFnZSBwYWNrZXQgbGVuZ3RoIGZv ciBtZXJnZWFibGUgcmVjZWl2ZSBidWZmZXJzLiAqLwo+ID4gPiA+ID4gPiAgICAgICBzdHJ1Y3Qg ZXdtYV9wa3RfbGVuIG1yZ19hdmdfcGt0X2xlbjsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQEAg LTQ1OSw2ICs0NjUsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0bmV0X2J1aWxkX3Nr Yih2b2lkICpidWYsIHVuc2lnbmVkIGludCBidWZsZW4sCj4gPiA+ID4gPiA+ICAgICAgIHJldHVy biBza2I7Cj4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICtzdGF0aWMgdm9p ZCB2aXJ0bmV0X3B1dF9wYWdlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwgc3RydWN0IHBhZ2Ug KnBhZ2UpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsgICAgIGlmIChycS0+cGFnZV9wb29s KQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIHBhZ2VfcG9vbF9wdXRfZnVsbF9wYWdlKHJxLT5w YWdlX3Bvb2wsIHBhZ2UsIHRydWUpOwo+ID4gPiA+ID4gPiArICAgICBlbHNlCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gIC8qIENhbGxlZCBmcm9tIGJvdHRvbSBoYWxmIGNvbnRleHQgKi8KPiA+ ID4gPiA+ID4gIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGFnZV90b19za2Ioc3RydWN0IHZpcnRu ZXRfaW5mbyAqdmksCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSwKPiA+ID4gPiA+ID4gQEAgLTU1NSw3ICs1NjksNyBA QCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhZ2VfdG9fc2tiKHN0cnVjdCB2aXJ0bmV0X2luZm8g KnZpLAo+ID4gPiA+ID4gPiAgICAgICBoZHIgPSBza2Jfdm5ldF9oZHIoc2tiKTsKPiA+ID4gPiA+ ID4gICAgICAgbWVtY3B5KGhkciwgaGRyX3AsIGhkcl9sZW4pOwo+ID4gPiA+ID4gPiAgICAgICBp ZiAocGFnZV90b19mcmVlKQo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2Vf dG9fZnJlZSk7Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwg cGFnZV90b19mcmVlKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAgcmV0dXJuIHNrYjsK PiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gQEAgLTgwMiw3ICs4MTYsNyBAQCBzdGF0aWMgaW50 IHZpcnRuZXRfeGRwX3htaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gICAg ICAgcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLXN0 YXRpYyB2b2lkIHB1dF94ZHBfZnJhZ3Moc3RydWN0IHhkcF9idWZmICp4ZHApCj4gPiA+ID4gPiA+ ICtzdGF0aWMgdm9pZCBwdXRfeGRwX2ZyYWdzKHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCBzdHJ1Y3Qg cmVjZWl2ZV9xdWV1ZSAqcnEpCj4gPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiA+ICAgICAgIHN0cnVj dCBza2Jfc2hhcmVkX2luZm8gKnNoaW5mbzsKPiA+ID4gPiA+ID4gICAgICAgc3RydWN0IHBhZ2Ug KnhkcF9wYWdlOwo+ID4gPiA+ID4gPiBAQCAtODEyLDcgKzgyNiw3IEBAIHN0YXRpYyB2b2lkIHB1 dF94ZHBfZnJhZ3Moc3RydWN0IHhkcF9idWZmICp4ZHApCj4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgc2hpbmZvID0geGRwX2dldF9zaGFyZWRfaW5mb19mcm9tX2J1ZmYoeGRwKTsKPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2hpbmZvLT5ucl9mcmFnczsgaSsrKSB7 Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICB4ZHBfcGFnZSA9IHNrYl9mcmFnX3Bh Z2UoJnNoaW5mby0+ZnJhZ3NbaV0pOwo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg cHV0X3BhZ2UoeGRwX3BhZ2UpOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgdmly dG5ldF9wdXRfcGFnZShycSwgeGRwX3BhZ2UpOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIH0K PiA+ID4gPiA+ID4gICAgICAgfQo+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiBAQCAtOTAzLDcg KzkxNywxMSBAQCBzdGF0aWMgc3RydWN0IHBhZ2UgKnhkcF9saW5lYXJpemVfcGFnZShzdHJ1Y3Qg cmVjZWl2ZV9xdWV1ZSAqcnEsCj4gPiA+ID4gPiA+ICAgICAgIGlmIChwYWdlX29mZiArICpsZW4g KyB0YWlscm9vbSA+IFBBR0VfU0laRSkKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICByZXR1cm4g TlVMTDsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLSAgICAgcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQ X0FUT01JQyk7Cj4gPiA+ID4gPiA+ICsgICAgIGlmIChycS0+cGFnZV9wb29sKQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgIHBhZ2UgPSBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzKHJxLT5wYWdl X3Bvb2wpOwo+ID4gPiA+ID4gPiArICAgICBlbHNlCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0FUT01JQyk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g ICAgICAgaWYgKCFwYWdlKQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBAQCAtOTI2LDIxICs5NDQsMjQgQEAgc3RhdGljIHN0cnVj dCBwYWdlICp4ZHBfbGluZWFyaXplX3BhZ2Uoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLAo+ID4g PiA+ID4gPiAgICAgICAgICAgICAgICAqIGlzIHNlbmRpbmcgcGFja2V0IGxhcmdlciB0aGFuIHRo ZSBNVFUuCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICovCj4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgaWYgKChwYWdlX29mZiArIGJ1ZmxlbiArIHRhaWxyb29tKSA+IFBBR0VfU0laRSkgewo+ ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgcHV0X3BhZ2UocCk7Cj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICB2aXJ0bmV0X3B1dF9wYWdlKHJxLCBwKTsKPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2J1ZjsKPiA+ID4gPiA+ID4gICAgICAg ICAgICAgICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgbWVtY3B5KHBh Z2VfYWRkcmVzcyhwYWdlKSArIHBhZ2Vfb2ZmLAo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICBwYWdlX2FkZHJlc3MocCkgKyBvZmYsIGJ1Zmxlbik7Cj4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgcGFnZV9vZmYgKz0gYnVmbGVuOwo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgIHB1dF9w YWdlKHApOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHAp Owo+ID4gPiA+ID4gPiAgICAgICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgICAgIC8qIEhl YWRyb29tIGRvZXMgbm90IGNvbnRyaWJ1dGUgdG8gcGFja2V0IGxlbmd0aCAqLwo+ID4gPiA+ID4g PiAgICAgICAqbGVuID0gcGFnZV9vZmYgLSBWSVJUSU9fWERQX0hFQURST09NOwo+ID4gPiA+ID4g PiAgICAgICByZXR1cm4gcGFnZTsKPiA+ID4gPiA+ID4gIGVycl9idWY6Cj4gPiA+ID4gPiA+IC0g ICAgIF9fZnJlZV9wYWdlcyhwYWdlLCAwKTsKPiA+ID4gPiA+ID4gKyAgICAgaWYgKHJxLT5wYWdl X3Bvb2wpCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgcGFnZV9wb29sX3B1dF9mdWxsX3BhZ2Uo cnEtPnBhZ2VfcG9vbCwgcGFnZSwgdHJ1ZSk7Cj4gPiA+ID4gPiA+ICsgICAgIGVsc2UKPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBfX2ZyZWVfcGFnZXMocGFnZSwgMCk7Cj4gPiA+ID4gPiA+ICAg ICAgIHJldHVybiBOVUxMOwo+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBA QCAtMTE0NCw3ICsxMTY1LDcgQEAgc3RhdGljIHZvaWQgbWVyZ2VhYmxlX2J1Zl9mcmVlKHN0cnVj dCByZWNlaXZlX3F1ZXVlICpycSwgaW50IG51bV9idWYsCj4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgfQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHN0YXRzLT5ieXRlcyArPSBsZW47Cj4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgcGFnZSA9IHZpcnRfdG9faGVhZF9wYWdlKGJ1Zik7Cj4gPiA+ ID4gPiA+IC0gICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZSk7Cj4gPiA+ID4gPiA+ICAgICAgIH0KPiA+ ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQEAgLTEyNjQsNyArMTI4NSw3IEBA IHN0YXRpYyBpbnQgdmlydG5ldF9idWlsZF94ZHBfYnVmZl9tcmcoc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBjdXJfZnJhZ19zaXplID0gdHJ1ZXNpemU7 Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgeGRwX2ZyYWdzX3RydWVzeiArPSBjdXJfZnJhZ19z aXplOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShsZW4gPiB0cnVlc2l6 ZSAtIHJvb20gfHwgY3VyX2ZyYWdfc2l6ZSA+IFBBR0VfU0laRSkpIHsKPiA+ID4gPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZSk7Cj4gPiA+ID4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICBwcl9kZWJ1ZygiJXM6IHJ4IGVycm9yOiBsZW4gJXUgZXhjZWVkcyB0 cnVlc2l6ZSAlbHVcbiIsCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXYtPm5hbWUsIGxlbiwgKHVuc2lnbmVkIGxvbmcpKHRydWVzaXplIC0gcm9vbSkpOwo+ID4g PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5zdGF0cy5yeF9sZW5ndGhfZXJyb3Jz Kys7Cj4gPiA+ID4gPiA+IEBAIC0xMjgzLDcgKzEzMDQsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRf YnVpbGRfeGRwX2J1ZmZfbXJnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ICAg ICAgIHJldHVybiAwOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgZXJyOgo+ID4gPiA+ID4gPiAt ICAgICBwdXRfeGRwX2ZyYWdzKHhkcCk7Cj4gPiA+ID4gPiA+ICsgICAgIHB1dF94ZHBfZnJhZ3Mo eGRwLCBycSk7Cj4gPiA+ID4gPiA+ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiAg fQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBAQCAtMTM0NCw3ICsxMzY1LDEwIEBAIHN0YXRpYyB2 b2lkICptZXJnZWFibGVfeGRwX2dldF9idWYoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgaWYgKCpsZW4gKyB4ZHBfcm9vbSA+IFBBR0VfU0laRSkKPiA+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiAtICAgICAgICAgICAgIHhkcF9wYWdlID0gYWxsb2NfcGFnZShHRlBfQVRPTUlD KTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAocnEtPnBhZ2VfcG9vbCkKPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIHhkcF9wYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvY19w YWdlcyhycS0+cGFnZV9wb29sKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBlbHNlCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICB4ZHBfcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0FU T01JQyk7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgaWYgKCF4ZHBfcGFnZSkKPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiBAQCAtMTM1NCw3ICsxMzc4LDcgQEAgc3RhdGljIHZvaWQgKm1lcmdlYWJsZV94ZHBfZ2V0 X2J1ZihzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAg ICAgKmZyYW1lX3N6ID0gUEFHRV9TSVpFOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAtICAgICBw dXRfcGFnZSgqcGFnZSk7Cj4gPiA+ID4gPiA+ICsgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsICpw YWdlKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAgKnBhZ2UgPSB4ZHBfcGFnZTsKPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gQEAgLTE0MDAsNiArMTQyNCw4IEBAIHN0YXRpYyBzdHJ1Y3Qg c2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFibGVfeGRwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgaGVhZF9za2IgPSBidWlsZF9za2JfZnJvbV94ZHBfYnVm ZihkZXYsIHZpLCAmeGRwLCB4ZHBfZnJhZ3NfdHJ1ZXN6KTsKPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICBpZiAodW5saWtlbHkoIWhlYWRfc2tiKSkKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGlmIChycS0+cGFnZV9wb29s KQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgc2tiX21hcmtfZm9yX3JlY3ljbGUo aGVhZF9za2IpOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHJldHVybiBoZWFkX3NrYjsKPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAgY2FzZSBYRFBfVFg6Cj4gPiA+ID4gPiA+IEBAIC0x NDEwLDEwICsxNDM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFi bGVfeGRwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg YnJlYWs7Cj4gPiA+ID4gPiA+ICAgICAgIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLSAgICAg cHV0X3hkcF9mcmFncygmeGRwKTsKPiA+ID4gPiA+ID4gKyAgICAgcHV0X3hkcF9mcmFncygmeGRw LCBycSk7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICBlcnJfeGRwOgo+ID4gPiA+ID4gPiAtICAg ICBwdXRfcGFnZShwYWdlKTsKPiA+ID4gPiA+ID4gKyAgICAgdmlydG5ldF9wdXRfcGFnZShycSwg cGFnZSk7Cj4gPiA+ID4gPiA+ICAgICAgIG1lcmdlYWJsZV9idWZfZnJlZShycSwgbnVtX2J1Ziwg ZGV2LCBzdGF0cyk7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgICAgIHN0YXRzLT54ZHBfZHJv cHMrKzsKPiA+ID4gPiA+ID4gQEAgLTE0NjcsNiArMTQ5Myw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tf YnVmZiAqcmVjZWl2ZV9tZXJnZWFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ ID4gICAgICAgaGVhZF9za2IgPSBwYWdlX3RvX3NrYih2aSwgcnEsIHBhZ2UsIG9mZnNldCwgbGVu LCB0cnVlc2l6ZSwgaGVhZHJvb20pOwo+ID4gPiA+ID4gPiAgICAgICBjdXJyX3NrYiA9IGhlYWRf c2tiOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiArICAgICBpZiAocnEtPnBhZ2VfcG9vbCkKPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICBza2JfbWFya19mb3JfcmVjeWNsZShjdXJyX3NrYik7Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gICAgICAgaWYgKHVubGlrZWx5KCFjdXJyX3NrYikpCj4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgZ290byBlcnJfc2tiOwo+ID4gPiA+ID4gPiAgICAgICB3 aGlsZSAoLS1udW1fYnVmKSB7Cj4gPiA+ID4gPiA+IEBAIC0xNTA5LDYgKzE1MzgsOCBAQCBzdGF0 aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3NrYiA9IG5za2I7Cj4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBoZWFkX3NrYi0+dHJ1ZXNpemUgKz0gbnNr Yi0+dHJ1ZXNpemU7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBudW1fc2tiX2Zy YWdzID0gMDsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChycS0+cGFnZV9w b29sKQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2JfbWFya19m b3JfcmVjeWNsZShjdXJyX3NrYik7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgfQo+ID4gPiA+ ID4gPiAgICAgICAgICAgICAgIGlmIChjdXJyX3NrYiAhPSBoZWFkX3NrYikgewo+ID4gPiA+ID4g PiAgICAgICAgICAgICAgICAgICAgICAgaGVhZF9za2ItPmRhdGFfbGVuICs9IGxlbjsKPiA+ID4g PiA+ID4gQEAgLTE1MTcsNyArMTU0OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2 ZV9tZXJnZWFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICB9Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgb2Zmc2V0ID0gYnVmIC0gcGFnZV9hZGRy ZXNzKHBhZ2UpOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGlmIChza2JfY2FuX2NvYWxlc2Nl KGN1cnJfc2tiLCBudW1fc2tiX2ZyYWdzLCBwYWdlLCBvZmZzZXQpKSB7Cj4gPiA+ID4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHBhZ2UpOwo+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgc2tiX2NvYWxlc2NlX3J4X2ZyYWcoY3Vycl9za2IsIG51bV9za2Jf ZnJhZ3MgLSAxLAo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGVuLCB0cnVlc2l6ZSk7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgfSBlbHNl IHsKPiA+ID4gPiA+ID4gQEAgLTE1MzAsNyArMTU2MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVm ZiAqcmVjZWl2ZV9tZXJnZWFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4g ICAgICAgcmV0dXJuIGhlYWRfc2tiOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgZXJyX3NrYjoK PiA+ID4gPiA+ID4gLSAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ICsgICAgIHZpcnRu ZXRfcHV0X3BhZ2UocnEsIHBhZ2UpOwo+ID4gPiA+ID4gPiAgICAgICBtZXJnZWFibGVfYnVmX2Zy ZWUocnEsIG51bV9idWYsIGRldiwgc3RhdHMpOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgZXJy X2J1ZjoKPiA+ID4gPiA+ID4gQEAgLTE3MzcsMzEgKzE3NjgsNDAgQEAgc3RhdGljIGludCBhZGRf cmVjdmJ1Zl9tZXJnZWFibGUoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ID4gPiA+ICAg ICAgICAqIGRpc2FibGVkIEdTTyBmb3IgWERQLCBpdCB3b24ndCBiZSBhIGJpZyBpc3N1ZS4KPiA+ ID4gPiA+ID4gICAgICAgICovCj4gPiA+ID4gPiA+ICAgICAgIGxlbiA9IGdldF9tZXJnZWFibGVf YnVmX2xlbihycSwgJnJxLT5tcmdfYXZnX3BrdF9sZW4sIHJvb20pOwo+ID4gPiA+ID4gPiAtICAg ICBpZiAodW5saWtlbHkoIXNrYl9wYWdlX2ZyYWdfcmVmaWxsKGxlbiArIHJvb20sIGFsbG9jX2Zy YWcsIGdmcCkpKQo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4g PiA+ID4gPiArICAgICBpZiAocnEtPnBhZ2VfcG9vbCkgewo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgIHN0cnVjdCBwYWdlICpwYWdlOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAtICAgICBidWYg PSAoY2hhciAqKXBhZ2VfYWRkcmVzcyhhbGxvY19mcmFnLT5wYWdlKSArIGFsbG9jX2ZyYWctPm9m ZnNldDsKPiA+ID4gPiA+ID4gLSAgICAgYnVmICs9IGhlYWRyb29tOyAvKiBhZHZhbmNlIGFkZHJl c3MgbGVhdmluZyBob2xlIGF0IGZyb250IG9mIHBrdCAqLwo+ID4gPiA+ID4gPiAtICAgICBnZXRf cGFnZShhbGxvY19mcmFnLT5wYWdlKTsKPiA+ID4gPiA+ID4gLSAgICAgYWxsb2NfZnJhZy0+b2Zm c2V0ICs9IGxlbiArIHJvb207Cj4gPiA+ID4gPiA+IC0gICAgIGhvbGUgPSBhbGxvY19mcmFnLT5z aXplIC0gYWxsb2NfZnJhZy0+b2Zmc2V0Owo+ID4gPiA+ID4gPiAtICAgICBpZiAoaG9sZSA8IGxl biArIHJvb20pIHsKPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAvKiBUbyBhdm9pZCBpbnRlcm5h bCBmcmFnbWVudGF0aW9uLCBpZiB0aGVyZSBpcyB2ZXJ5IGxpa2VseSBub3QKPiA+ID4gPiA+ID4g LSAgICAgICAgICAgICAgKiBlbm91Z2ggc3BhY2UgZm9yIGFub3RoZXIgYnVmZmVyLCBhZGQgdGhl IHJlbWFpbmluZyBzcGFjZSB0bwo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAqIHRoZSBjdXJy ZW50IGJ1ZmZlci4KPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgKiBYRFAgY29yZSBhc3N1bWVz IHRoYXQgZnJhbWVfc2l6ZSBvZiB4ZHBfYnVmZiBhbmQgdGhlIGxlbmd0aAo+ID4gPiA+ID4gPiAt ICAgICAgICAgICAgICAqIG9mIHRoZSBmcmFnIGFyZSBQQUdFX1NJWkUsIHNvIHdlIGRpc2FibGUg dGhlIGhvbGUgbWVjaGFuaXNtLgo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAqLwo+ID4gPiA+ ID4gPiAtICAgICAgICAgICAgIGlmICghaGVhZHJvb20pCj4gPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICBsZW4gKz0gaG9sZTsKPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICBhbGxvY19m cmFnLT5vZmZzZXQgKz0gaG9sZTsKPiA+ID4gPiA+ID4gLSAgICAgfQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgIHBhZ2UgPSBwYWdlX3Bvb2xfZGV2X2FsbG9jX3BhZ2VzKHJxLT5wYWdlX3Bvb2wp Owo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGlmICh1bmxpa2VseSghcGFnZSkpCj4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICBidWYgPSAoY2hhciAqKXBhZ2VfYWRkcmVzcyhwYWdlKTsKPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICBidWYgKz0gaGVhZHJvb207IC8qIGFkdmFuY2UgYWRkcmVzcyBsZWF2aW5n IGhvbGUgYXQgZnJvbnQgb2YgcGt0ICovCj4gPiA+ID4gPiA+ICsgICAgIH0gZWxzZSB7Cj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFza2JfcGFnZV9mcmFnX3JlZmlsbChs ZW4gKyByb29tLCBhbGxvY19mcmFnLCBnZnApKSkKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgIGJ1ZiA9IChjaGFyICopcGFnZV9hZGRyZXNzKGFsbG9jX2ZyYWctPnBhZ2UpICsgYWxsb2Nf ZnJhZy0+b2Zmc2V0Owo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGJ1ZiArPSBoZWFkcm9vbTsg LyogYWR2YW5jZSBhZGRyZXNzIGxlYXZpbmcgaG9sZSBhdCBmcm9udCBvZiBwa3QgKi8KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBnZXRfcGFnZShhbGxvY19mcmFnLT5wYWdlKTsKPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICBhbGxvY19mcmFnLT5vZmZzZXQgKz0gbGVuICsgcm9vbTsKPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBob2xlID0gYWxsb2NfZnJhZy0+c2l6ZSAtIGFsbG9jX2ZyYWct Pm9mZnNldDsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAoaG9sZSA8IGxlbiArIHJvb20p IHsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIC8qIFRvIGF2b2lkIGludGVybmFs IGZyYWdtZW50YXRpb24sIGlmIHRoZXJlIGlzIHZlcnkgbGlrZWx5IG5vdAo+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICogZW5vdWdoIHNwYWNlIGZvciBhbm90aGVyIGJ1ZmZlciwg YWRkIHRoZSByZW1haW5pbmcgc3BhY2UgdG8KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAqIHRoZSBjdXJyZW50IGJ1ZmZlci4KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAqIFhEUCBjb3JlIGFzc3VtZXMgdGhhdCBmcmFtZV9zaXplIG9mIHhkcF9idWZmIGFuZCB0 aGUgbGVuZ3RoCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKiBvZiB0aGUgZnJh ZyBhcmUgUEFHRV9TSVpFLCBzbyB3ZSBkaXNhYmxlIHRoZSBob2xlIG1lY2hhbmlzbS4KPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgaWYgKCFoZWFkcm9vbSkKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGVuICs9IGhvbGU7Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBh bGxvY19mcmFnLT5vZmZzZXQgKz0gaG9sZTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICB9Cj4g PiA+ID4gPiA+ICsgICAgIH0KPiA+ID4gPiA+ID4gICAgICAgc2dfaW5pdF9vbmUocnEtPnNnLCBi dWYsIGxlbik7Cj4gPiA+ID4gPiA+ICAgICAgIGN0eCA9IG1lcmdlYWJsZV9sZW5fdG9fY3R4KGxl biArIHJvb20sIGhlYWRyb29tKTsKPiA+ID4gPiA+ID4gICAgICAgZXJyID0gdmlydHF1ZXVlX2Fk ZF9pbmJ1Zl9jdHgocnEtPnZxLCBycS0+c2csIDEsIGJ1ZiwgY3R4LCBnZnApOwo+ID4gPiA+ID4g PiAgICAgICBpZiAoZXJyIDwgMCkKPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICBwdXRfcGFnZSh2 aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICB2aXJ0bmV0 X3B1dF9wYWdlKHJxLCB2aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsKPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gICAgICAgcmV0dXJuIGVycjsKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gQEAgLTE5 OTQsOCArMjAzNCwxNSBAQCBzdGF0aWMgaW50IHZpcnRuZXRfZW5hYmxlX3F1ZXVlX3BhaXIoc3Ry dWN0IHZpcnRuZXRfaW5mbyAqdmksIGludCBxcF9pbmRleCkKPiA+ID4gPiA+ID4gICAgICAgaWYg KGVyciA8IDApCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gLSAgICAgZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnZp LT5ycVtxcF9pbmRleF0ueGRwX3J4cSwKPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUVNX1RZUEVfUEFHRV9TSEFSRUQsIE5VTEwpOwo+ID4gPiA+ID4g PiArICAgICBpZiAodmktPnJxW3FwX2luZGV4XS5wYWdlX3Bvb2wpCj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnZpLT5ycVtxcF9pbmRl eF0ueGRwX3J4cSwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNRU1fVFlQRV9QQUdFX1BPT0wsCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmktPnJxW3FwX2luZGV4XS5wYWdl X3Bvb2wpOwo+ID4gPiA+ID4gPiArICAgICBlbHNlCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnZpLT5ycVtxcF9pbmRleF0ueGRwX3J4 cSwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNRU1fVFlQRV9QQUdFX1NIQVJFRCwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiAgICAgICBpZiAoZXJyIDwgMCkKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBnb3RvIGVy cl94ZHBfcmVnX21lbV9tb2RlbDsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQEAgLTI5NTEsNiAr Mjk5OCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRuZXRfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwgdTMyIHN0cmluZ3NldCwgdTggKmRhdGEpCj4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV0aHRvb2xfc3ByaW50ZigmcCwgInR4X3F1ZXVlXyV1XyVzIiwg aSwKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZpcnRuZXRfc3Ffc3RhdHNfZGVzY1tqXS5kZXNjKTsKPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICB9Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNf Z2V0X3N0cmluZ3MocCk7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4g PiA+ICAgICAgIH0KPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gQEAgLTI5NjIsMTIgKzMwMTAs MzAgQEAgc3RhdGljIGludCB2aXJ0bmV0X2dldF9zc2V0X2NvdW50KHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIGludCBzc2V0KQo+ID4gPiA+ID4gPiAgICAgICBzd2l0Y2ggKHNzZXQpIHsKPiA+ID4g PiA+ID4gICAgICAgY2FzZSBFVEhfU1NfU1RBVFM6Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg cmV0dXJuIHZpLT5jdXJyX3F1ZXVlX3BhaXJzICogKFZJUlRORVRfUlFfU1RBVFNfTEVOICsKPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklS VE5FVF9TUV9TVEFUU19MRU4pOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWSVJUTkVUX1NRX1NUQVRTX0xFTiArCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZV9wb29sX2Vu YWJsZWQgJiYgdmktPm1lcmdlYWJsZV9yeF9idWZzID8KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3Bvb2xfZXRodG9vbF9zdGF0 c19nZXRfY291bnQoKSA6IDApKTsKPiA+ID4gPiA+ID4gICAgICAgZGVmYXVsdDoKPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiA+ID4gPiA+ICAgICAgIH0K PiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHZpcnRu ZXRfZ2V0X3BhZ2VfcG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1NjQgKmRhdGEp Cj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsjaWZkZWYgQ09ORklHX1BBR0VfUE9PTF9TVEFU Uwo+ID4gPiA+ID4gPiArICAgICBzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2 KGRldik7Cj4gPiA+ID4gPiA+ICsgICAgIHN0cnVjdCBwYWdlX3Bvb2xfc3RhdHMgcHBfc3RhdHMg PSB7fTsKPiA+ID4gPiA+ID4gKyAgICAgaW50IGk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g KyAgICAgZm9yIChpID0gMDsgaSA8IHZpLT5jdXJyX3F1ZXVlX3BhaXJzOyBpKyspIHsKPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBpZiAoIXZpLT5ycVtpXS5wYWdlX3Bvb2wpCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICBwYWdlX3Bvb2xfZ2V0X3N0YXRzKHZpLT5ycVtpXS5wYWdlX3Bvb2wsICZwcF9zdGF0cyk7Cj4g PiA+ID4gPiA+ICsgICAgIH0KPiA+ID4gPiA+ID4gKyAgICAgcGFnZV9wb29sX2V0aHRvb2xfc3Rh dHNfZ2V0KGRhdGEsICZwcF9zdGF0cyk7Cj4gPiA+ID4gPiA+ICsjZW5kaWYgLyogQ09ORklHX1BB R0VfUE9PTF9TVEFUUyAqLwo+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICBzdGF0aWMgdm9pZCB2aXJ0bmV0X2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKQo+ID4gPiA+ID4gPiAgewo+ID4g PiA+ID4gPiBAQCAtMzAwMyw2ICszMDY5LDggQEAgc3RhdGljIHZvaWQgdmlydG5ldF9nZXRfZXRo dG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4gPiA+ID4gPiAgICAgICAgICAg ICAgIH0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeSgmc3EtPnN0YXRzLnN5bmNwLCBzdGFy dCkpOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGlkeCArPSBWSVJUTkVUX1NRX1NUQVRTX0xF TjsKPiA+ID4gPiA+ID4gICAgICAgfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgIHZp cnRuZXRfZ2V0X3BhZ2VfcG9vbF9zdGF0cyhkZXYsICZkYXRhW2lkeF0pOwo+ID4gPiA+ID4gPiAg fQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgc3RhdGljIHZvaWQgdmlydG5ldF9nZXRfY2hhbm5l bHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gQEAgLTM2MjMsNiArMzY5MSw4 IEBAIHN0YXRpYyB2b2lkIHZpcnRuZXRfZnJlZV9xdWV1ZXMoc3RydWN0IHZpcnRuZXRfaW5mbyAq dmkpCj4gPiA+ID4gPiA+ICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aS0+bWF4X3F1ZXVlX3BhaXJz OyBpKyspIHsKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBfX25ldGlmX25hcGlfZGVsKCZ2aS0+ cnFbaV0ubmFwaSk7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgX19uZXRpZl9uYXBpX2RlbCgm dmktPnNxW2ldLm5hcGkpOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGlmICh2aS0+cnFbaV0u cGFnZV9wb29sKQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcGFnZV9wb29sX2Rl c3Ryb3kodmktPnJxW2ldLnBhZ2VfcG9vbCk7Cj4gPiA+ID4gPiA+ICAgICAgIH0KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gICAgICAgLyogV2UgY2FsbGVkIF9fbmV0aWZfbmFwaV9kZWwoKSwKPiA+ ID4gPiA+ID4gQEAgLTM2NzksMTIgKzM3NDksMTkgQEAgc3RhdGljIHZvaWQgdmlydG5ldF9ycV9m cmVlX3VudXNlZF9idWYoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIHZvaWQgKmJ1ZikKPiA+ID4gPiA+ ID4gICAgICAgc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSB2cS0+dmRldi0+cHJpdjsKPiA+ID4g PiA+ID4gICAgICAgaW50IGkgPSB2cTJyeHEodnEpOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAt ICAgICBpZiAodmktPm1lcmdlYWJsZV9yeF9idWZzKQo+ID4gPiA+ID4gPiAtICAgICAgICAgICAg IHB1dF9wYWdlKHZpcnRfdG9faGVhZF9wYWdlKGJ1ZikpOwo+ID4gPiA+ID4gPiAtICAgICBlbHNl IGlmICh2aS0+YmlnX3BhY2tldHMpCj4gPiA+ID4gPiA+ICsgICAgIGlmICh2aS0+bWVyZ2VhYmxl X3J4X2J1ZnMpIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAodmktPnJxW2ldLnBhZ2Vf cG9vbCkgewo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcGFnZV9wb29sX3B1dF9m dWxsX3BhZ2UodmktPnJxW2ldLnBhZ2VfcG9vbCwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnRfdG9faGVhZF9wYWdlKGJ1ZiksCj4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 cnVlKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgcHV0X3BhZ2UodmlydF90b19oZWFkX3BhZ2UoYnVmKSk7Cj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiArICAgICB9IGVsc2UgaWYgKHZpLT5i aWdfcGFja2V0cykgewo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGdpdmVfcGFnZXMoJnZpLT5y cVtpXSwgYnVmKTsKPiA+ID4gPiA+ID4gLSAgICAgZWxzZQo+ID4gPiA+ID4gPiArICAgICB9IGVs c2Ugewo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHB1dF9wYWdlKHZpcnRfdG9faGVhZF9wYWdl KGJ1ZikpOwo+ID4gPiA+ID4gPiArICAgICB9Cj4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBmcmVlX3VudXNlZF9idWZzKHN0cnVjdCB2aXJ0bmV0X2lu Zm8gKnZpKQo+ID4gPiA+ID4gPiBAQCAtMzcxOCw2ICszNzk1LDI2IEBAIHN0YXRpYyB2b2lkIHZp cnRuZXRfZGVsX3ZxcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSkKPiA+ID4gPiA+ID4gICAgICAg dmlydG5ldF9mcmVlX3F1ZXVlcyh2aSk7Cj4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ICtzdGF0aWMgdm9pZCB2aXJ0bmV0X2FsbG9jX3BhZ2VfcG9vbChzdHJ1Y3QgcmVjZWl2 ZV9xdWV1ZSAqcnEpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsgICAgIHN0cnVjdCB2aXJ0 aW9fZGV2aWNlICp2ZGV2ID0gcnEtPnZxLT52ZGV2Owo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICsgICAgIHN0cnVjdCBwYWdlX3Bvb2xfcGFyYW1zIHBwX3BhcmFtcyA9IHsKPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAub3JkZXIgPSAwLAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIC5wb29s X3NpemUgPSBycS0+dnEtPm51bV9tYXgsCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgLm5pZCA9 IGRldl90b19ub2RlKHZkZXYtPmRldi5wYXJlbnQpLAo+ID4gPiA+ID4gPiArICAgICAgICAgICAg IC5kZXYgPSB2ZGV2LT5kZXYucGFyZW50LAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIC5vZmZz ZXQgPSAwLAo+ID4gPiA+ID4gPiArICAgICB9Owo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsg ICAgIHJxLT5wYWdlX3Bvb2wgPSBwYWdlX3Bvb2xfY3JlYXRlKCZwcF9wYXJhbXMpOwo+ID4gPiA+ ID4gPiArICAgICBpZiAoSVNfRVJSKHJxLT5wYWdlX3Bvb2wpKSB7Cj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgZGV2X3dhcm4oJnZkZXYtPmRldiwgInBhZ2UgcG9vbCBjcmVhdGlvbiBmYWlsZWQ6 ICVsZFxuIiwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBQVFJfRVJSKHJxLT5w YWdlX3Bvb2wpKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBycS0+cGFnZV9wb29sID0gTlVM TDsKPiA+ID4gPiA+ID4gKyAgICAgfQo+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ICAvKiBIb3cgbGFyZ2Ugc2hvdWxkIGEgc2luZ2xlIGJ1ZmZlciBiZSBzbyBhIHF1ZXVl IGZ1bGwgb2YgdGhlc2UgY2FuIGZpdCBhdAo+ID4gPiA+ID4gPiAgICogbGVhc3Qgb25lIGZ1bGwg cGFja2V0Pwo+ID4gPiA+ID4gPiAgICogTG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgbWVyZ2VhYmxl IGJ1ZmZlciBoZWFkZXIgaXMgdXNlZC4KPiA+ID4gPiA+ID4gQEAgLTM4MDEsNiArMzg5OCwxMyBA QCBzdGF0aWMgaW50IHZpcnRuZXRfZmluZF92cXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpCj4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgdmktPnJxW2ldLnZxID0gdnFzW3J4cTJ2cShpKV07Cj4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgdmktPnJxW2ldLm1pbl9idWZfbGVuID0gbWVyZ2VhYmxl X21pbl9idWZfbGVuKHZpLCB2aS0+cnFbaV0udnEpOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAg IHZpLT5zcVtpXS52cSA9IHZxc1t0eHEydnEoaSldOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgaWYgKHBhZ2VfcG9vbF9lbmFibGVkICYmIHZpLT5tZXJnZWFibGVfcnhf YnVmcykKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHZpcnRuZXRfYWxsb2NfcGFn ZV9wb29sKCZ2aS0+cnFbaV0pOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGVsc2UKPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKCZ2aS0+dmRldi0+ZGV2LAo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhZ2UgcG9vbCBvbmx5IHN1 cHBvcnQgbWVyZ2VhYmxlIG1vZGVcbiIpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAgICAg IH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAgLyogcnVuIGhlcmU6IHJldCA9PSAwLiAq Lwo+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiAyLjMxLjEKPiA+ID4gPiA+Cj4gPiA+CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlv biBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcK aHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVh bGl6YXRpb24=