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 5A2CBC433F5 for ; Mon, 28 Feb 2022 07:06:31 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id D74BB408FF; Mon, 28 Feb 2022 07:06:30 +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 xcMziDhVYDnB; Mon, 28 Feb 2022 07:06:28 +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 BF5CA408D9; Mon, 28 Feb 2022 07:06:27 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7C242C0033; Mon, 28 Feb 2022 07:06:27 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 327C0C001A for ; Mon, 28 Feb 2022 07:06:26 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 2D47681AEA for ; Mon, 28 Feb 2022 07:06:26 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pP3MvFrvMaZK for ; Mon, 28 Feb 2022 07:06:21 +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 smtp1.osuosl.org (Postfix) with ESMTPS id 96FA581ADE for ; Mon, 28 Feb 2022 07:06:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1646031980; 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=KgcRmsJXy2CY2+pWCcqbDT1r6DFwZ66nX1Olmo+npXM=; b=SgRqh2SUSEBp9zcPQT4qiVpgAiQK2OmH48PmdTl3DIECafEFW9AraBUdaXLhUydhk532u0 RE7T/D6GpR/uYefg4IvC45Uk1IMvssvArQQ0lX8KBjfnfLrnVzSC/ZpqrhnNLs+pLb/V8V LIEDkFRFLlhesLuU2gAq4lq4QbXzFQA= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-395-mWRZOsr4MuWfkrrwOimPiw-1; Mon, 28 Feb 2022 02:06:19 -0500 X-MC-Unique: mWRZOsr4MuWfkrrwOimPiw-1 Received: by mail-pj1-f72.google.com with SMTP id t7-20020a17090a3b4700b001bc366c58faso10848660pjf.4 for ; Sun, 27 Feb 2022 23:06:19 -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=KgcRmsJXy2CY2+pWCcqbDT1r6DFwZ66nX1Olmo+npXM=; b=pSnWupuVVYFytPsuiVA0bweX85mogfRiM9FQxVvab1H/fQ/it5Hq/k8960HqkQMRYn dHs7/S+lS5X/TewEGQzzxVh9M7zmwcX2LvGLx6w5egIGzoHzJDHlDtRucZrL5YRnqQoO YMZoOU5v+Ndt/r0l7X0Ol3jUHWZ8R1Z5jR2PN5fOpJl5neechl7MOTyqnSTzvKf7pdyS ZSkAXg9CXSh/8bbn8zXpjDc3no37/b2FrVTYWTTbuJ9B4XYFQSZbn52Uymyv8A9OOjW2 JEGt8ZjwFkZ8/8IAfZ9cuIbgOuXmtNFFMr/WQLr5DhuXy4oq2FG2Px4OQywDlVRYgrMJ odag== X-Gm-Message-State: AOAM531aV1kXh6yfzvYybsF+ZSeTwNcnAiZWtAEb6FdnOLA5Vu1REVlc plqafS8ggbjklElUcyMWIYltBmIfHjNjEPxVTOqlQPtoCw+n+YggJ5JPTFsLZUmhU1rCQ2mEtBF zY9oegXjAXT1S6a7X38upqRK0Idkjk6McGxPx4rPzRQ== X-Received: by 2002:a05:6a00:190c:b0:4f3:a27a:13ca with SMTP id y12-20020a056a00190c00b004f3a27a13camr20097149pfi.65.1646031977098; Sun, 27 Feb 2022 23:06:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJz/J8u3UIAJt7cnEQ1USx8d5Dn32xNvOqEHFeZW4KoDqn1t4P4udl7XQLj0qk/R9mhtYECG7g== X-Received: by 2002:a05:6a00:190c:b0:4f3:a27a:13ca with SMTP id y12-20020a056a00190c00b004f3a27a13camr20097113pfi.65.1646031976772; Sun, 27 Feb 2022 23:06:16 -0800 (PST) Received: from [10.72.13.215] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id s17-20020a17090a441100b001bc1b59fe1asm15921086pjg.38.2022.02.27.23.06.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 27 Feb 2022 23:06:16 -0800 (PST) Message-ID: <7f6f5118-4228-6dcb-f3d4-3e64aeb3608c@redhat.com> Date: Mon, 28 Feb 2022 15:06:05 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH v2 09/14] vhost: Add VhostIOVATree To: =?UTF-8?Q?Eugenio_P=c3=a9rez?= , qemu-devel@nongnu.org References: <20220227134111.3254066-1-eperezma@redhat.com> <20220227134111.3254066-10-eperezma@redhat.com> From: Jason Wang In-Reply-To: <20220227134111.3254066-10-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: "Michael S. Tsirkin" , virtualization@lists.linux-foundation.org, Eli Cohen , Eric Blake , Parav Pandit , Cindy Lu , "Fangyi \(Eric\)" , Markus Armbruster , yebiaoxiang@huawei.com, Liuxiangdong , Laurent Vivier , Eduardo Habkost , Richard Henderson , Gautam Dawar , Xiao W Wang , Stefan Hajnoczi , Harpreet Singh Anand , Paolo Bonzini , Lingshan 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" CuWcqCAyMDIyLzIvMjcg5LiL5Y2IOTo0MSwgRXVnZW5pbyBQw6lyZXog5YaZ6YGTOgo+IFRoaXMg dHJlZSBpcyBhYmxlIHRvIGxvb2sgZm9yIGEgdHJhbnNsYXRlZCBhZGRyZXNzIGZyb20gYW4gSU9W QSBhZGRyZXNzLgo+Cj4gQXQgZmlyc3QgZ2xhbmNlIGl0IGlzIHNpbWlsYXIgdG8gdXRpbC9pb3Zh LXRyZWUuIEhvd2V2ZXIsIFNWUSB3b3JraW5nIG9uCj4gZGV2aWNlcyB3aXRoIGxpbWl0ZWQgSU9W QSBzcGFjZSBuZWVkIG1vcmUgY2FwYWJpbGl0aWVzLCBsaWtlIGFsbG9jYXRpbmcKPiBJT1ZBIGNo dW5rcyBvciBwZXJmb3JtaW5nIHJldmVyc2UgdHJhbnNsYXRpb25zIChxZW11IGFkZHJlc3NlcyB0 byBpb3ZhKS4KPgo+IFRoZSBhbGxvY2F0aW9uIGNhcGFiaWxpdHksIGFzICJhc3NpZ24gYSBmcmVl IElPVkEgYWRkcmVzcyB0byB0aGlzIGNodW5rCj4gb2YgbWVtb3J5IGluIHFlbXUncyBhZGRyZXNz IHNwYWNlIiBhbGxvd3Mgc2hhZG93IHZpcnRxdWV1ZSB0byBjcmVhdGUgYQo+IG5ldyBhZGRyZXNz IHNwYWNlIHRoYXQgaXMgbm90IHJlc3RyaWN0ZWQgYnkgZ3Vlc3QncyBhZGRyZXNzYWJsZSBvbmUs IHNvCj4gd2UgY2FuIGFsbG9jYXRlIHNoYWRvdyB2cXMgdnJpbmdzIG91dHNpZGUgb2YgaXQuCj4K PiBJdCBkdXBsaWNhdGVzIHRoZSB0cmVlIHNvIGl0IGNhbiBzZWFyY2ggZWZmaWNpZW50bHkgaW4g Ym90aCBkaXJlY3Rpb25zLAo+IGFuZCBpdCB3aWxsIHNpZ25hbCBvdmVybGFwIGlmIGlvdmEgb3Ig dGhlIHRyYW5zbGF0ZWQgYWRkcmVzcyBpcyBwcmVzZW50Cj4gaW4gYW55IHRyZWUuCj4KPiBTaWdu ZWQtb2ZmLWJ5OiBFdWdlbmlvIFDDqXJleiA8ZXBlcmV6bWFAcmVkaGF0LmNvbT4KPiAtLS0KPiAg IGh3L3ZpcnRpby92aG9zdC1pb3ZhLXRyZWUuaCB8ICAyNyArKysrKysrCj4gICBody92aXJ0aW8v dmhvc3QtaW92YS10cmVlLmMgfCAxNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gICBody92aXJ0aW8vbWVzb24uYnVpbGQgICAgICAgfCAgIDIgKy0KPiAgIDMgZmlsZXMg Y2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBody92aXJ0aW8vdmhvc3QtaW92YS10cmVlLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBody92aXJ0aW8vdmhvc3QtaW92YS10cmVlLmMKPgo+IGRpZmYgLS1naXQgYS9ody92aXJ0aW8v dmhvc3QtaW92YS10cmVlLmggYi9ody92aXJ0aW8vdmhvc3QtaW92YS10cmVlLmgKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjZhNGYyNGUwZjkKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvaHcvdmlydGlvL3Zob3N0LWlvdmEtdHJlZS5oCj4gQEAgLTAsMCArMSwyNyBA QAo+ICsvKgo+ICsgKiB2aG9zdCBzb2Z0d2FyZSBsaXZlIG1pZ3JhdGlvbiBpb3ZhIHRyZWUKPiAr ICoKPiArICogU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogUmVkIEhhdCwgSW5jLiAyMDIxCj4gKyAq IFNQRFgtRmlsZUNvbnRyaWJ1dG9yOiBBdXRob3I6IEV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUBy ZWRoYXQuY29tPgo+ICsgKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v ci1sYXRlcgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgSFdfVklSVElPX1ZIT1NUX0lPVkFfVFJFRV9I Cj4gKyNkZWZpbmUgSFdfVklSVElPX1ZIT1NUX0lPVkFfVFJFRV9ICj4gKwo+ICsjaW5jbHVkZSAi cWVtdS9pb3ZhLXRyZWUuaCIKPiArI2luY2x1ZGUgImV4ZWMvbWVtb3J5LmgiCj4gKwo+ICt0eXBl ZGVmIHN0cnVjdCBWaG9zdElPVkFUcmVlIFZob3N0SU9WQVRyZWU7Cj4gKwo+ICtWaG9zdElPVkFU cmVlICp2aG9zdF9pb3ZhX3RyZWVfbmV3KHVpbnQ2NF90IGlvdmFfZmlyc3QsIHVpbnQ2NF90IGlv dmFfbGFzdCk7Cj4gK3ZvaWQgdmhvc3RfaW92YV90cmVlX2RlbGV0ZShWaG9zdElPVkFUcmVlICpp b3ZhX3RyZWUpOwo+ICtHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhWaG9zdElPVkFUcmVl LCB2aG9zdF9pb3ZhX3RyZWVfZGVsZXRlKTsKPiArCj4gK2NvbnN0IERNQU1hcCAqdmhvc3RfaW92 YV90cmVlX2ZpbmRfaW92YShjb25zdCBWaG9zdElPVkFUcmVlICppb3ZhX3RyZWUsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBETUFNYXAgKm1hcCk7Cj4g K2ludCB2aG9zdF9pb3ZhX3RyZWVfbWFwX2FsbG9jKFZob3N0SU9WQVRyZWUgKmlvdmFfdHJlZSwg RE1BTWFwICptYXApOwo+ICt2b2lkIHZob3N0X2lvdmFfdHJlZV9yZW1vdmUoVmhvc3RJT1ZBVHJl ZSAqaW92YV90cmVlLCBjb25zdCBETUFNYXAgKm1hcCk7Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0t Z2l0IGEvaHcvdmlydGlvL3Zob3N0LWlvdmEtdHJlZS5jIGIvaHcvdmlydGlvL3Zob3N0LWlvdmEt dHJlZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi4wMzQ5NmFj MDc1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2h3L3ZpcnRpby92aG9zdC1pb3ZhLXRyZWUuYwo+ IEBAIC0wLDAgKzEsMTU1IEBACj4gKy8qCj4gKyAqIHZob3N0IHNvZnR3YXJlIGxpdmUgbWlncmF0 aW9uIGlvdmEgdHJlZQo+ICsgKgo+ICsgKiBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiBSZWQgSGF0 LCBJbmMuIDIwMjEKPiArICogU1BEWC1GaWxlQ29udHJpYnV0b3I6IEF1dGhvcjogRXVnZW5pbyBQ w6lyZXogPGVwZXJlem1hQHJlZGhhdC5jb20+Cj4gKyAqCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgInFlbXUvb3Nk ZXAuaCIKPiArI2luY2x1ZGUgInFlbXUvaW92YS10cmVlLmgiCj4gKyNpbmNsdWRlICJ2aG9zdC1p b3ZhLXRyZWUuaCIKPiArCj4gKyNkZWZpbmUgaW92YV9taW5fYWRkciBxZW11X3JlYWxfaG9zdF9w YWdlX3NpemUKPiArCj4gKy8qKgo+ICsgKiBWaG9zdElPVkFUcmVlLCBhYmxlIHRvOgo+ICsgKiAt IFRyYW5zbGF0ZSBpb3ZhIGFkZHJlc3MKPiArICogLSBSZXZlcnNlIHRyYW5zbGF0ZSBpb3ZhIGFk ZHJlc3MgKGZyb20gdHJhbnNsYXRlZCB0byBpb3ZhKQo+ICsgKiAtIEFsbG9jYXRlIElPVkEgcmVn aW9ucyBmb3IgdHJhbnNsYXRlZCByYW5nZSAobGluZWFyIG9wZXJhdGlvbikKPiArICovCj4gK3N0 cnVjdCBWaG9zdElPVkFUcmVlIHsKPiArICAgIC8qIEZpcnN0IGFkZHJlc3NhYmxlIGlvdmEgYWRk cmVzcyBpbiB0aGUgZGV2aWNlICovCj4gKyAgICB1aW50NjRfdCBpb3ZhX2ZpcnN0Owo+ICsKPiAr ICAgIC8qIExhc3QgYWRkcmVzc2FibGUgaW92YSBhZGRyZXNzIGluIHRoZSBkZXZpY2UgKi8KPiAr ICAgIHVpbnQ2NF90IGlvdmFfbGFzdDsKPiArCj4gKyAgICAvKiBJT1ZBIGFkZHJlc3MgdG8gcWVt dSBtZW1vcnkgbWFwcy4gKi8KPiArICAgIElPVkFUcmVlICppb3ZhX3RhZGRyX21hcDsKPiArCj4g KyAgICAvKiBRRU1VIHZpcnR1YWwgbWVtb3J5IGFkZHJlc3MgdG8gaW92YSBtYXBzICovCj4gKyAg ICBHVHJlZSAqdGFkZHJfaW92YV9tYXA7Cj4gK307Cj4gKwo+ICtzdGF0aWMgZ2ludCB2aG9zdF9p b3ZhX3RyZWVfY21wX3RhZGRyKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBiLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGEpCj4gK3sK PiArICAgIGNvbnN0IERNQU1hcCAqbTEgPSBhLCAqbTIgPSBiOwo+ICsKPiArICAgIGlmIChtMS0+ dHJhbnNsYXRlZF9hZGRyID4gbTItPnRyYW5zbGF0ZWRfYWRkciArIG0yLT5zaXplKSB7Cj4gKyAg ICAgICAgcmV0dXJuIDE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKG0xLT50cmFuc2xhdGVkX2Fk ZHIgKyBtMS0+c2l6ZSA8IG0yLT50cmFuc2xhdGVkX2FkZHIpIHsKPiArICAgICAgICByZXR1cm4g LTE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogT3ZlcmxhcHBlZCAqLwo+ICsgICAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBDcmVhdGUgYSBuZXcgSU9WQSB0cmVlCj4gKyAqCj4gKyAq IFJldHVybnMgdGhlIG5ldyBJT1ZBIHRyZWUKPiArICovCj4gK1Zob3N0SU9WQVRyZWUgKnZob3N0 X2lvdmFfdHJlZV9uZXcoaHdhZGRyIGlvdmFfZmlyc3QsIGh3YWRkciBpb3ZhX2xhc3QpCj4gK3sK PiArICAgIFZob3N0SU9WQVRyZWUgKnRyZWUgPSBnX25ldyhWaG9zdElPVkFUcmVlLCAxKTsKPiAr Cj4gKyAgICAvKiBTb21lIGRldmljZXMgZG8gbm90IGxpa2UgMCBhZGRyZXNzZXMgKi8KPiArICAg IHRyZWUtPmlvdmFfZmlyc3QgPSBNQVgoaW92YV9maXJzdCwgaW92YV9taW5fYWRkcik7Cj4gKyAg ICB0cmVlLT5pb3ZhX2xhc3QgPSBpb3ZhX2xhc3Q7Cj4gKwo+ICsgICAgdHJlZS0+aW92YV90YWRk cl9tYXAgPSBpb3ZhX3RyZWVfbmV3KCk7Cj4gKyAgICB0cmVlLT50YWRkcl9pb3ZhX21hcCA9IGdf dHJlZV9uZXdfZnVsbCh2aG9zdF9pb3ZhX3RyZWVfY21wX3RhZGRyLCBOVUxMLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgZ19mcmVlKTsKPiArICAg IHJldHVybiB0cmVlOwo+ICt9Cj4gKwo+ICsvKioKPiArICogRGVsZXRlIGFuIGlvdmEgdHJlZQo+ ICsgKi8KPiArdm9pZCB2aG9zdF9pb3ZhX3RyZWVfZGVsZXRlKFZob3N0SU9WQVRyZWUgKmlvdmFf dHJlZSkKPiArewo+ICsgICAgaW92YV90cmVlX2Rlc3Ryb3koaW92YV90cmVlLT5pb3ZhX3RhZGRy X21hcCk7Cj4gKyAgICBnX3RyZWVfdW5yZWYoaW92YV90cmVlLT50YWRkcl9pb3ZhX21hcCk7Cj4g KyAgICBnX2ZyZWUoaW92YV90cmVlKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIEZpbmQgdGhlIElP VkEgYWRkcmVzcyBzdG9yZWQgZnJvbSBhIG1lbW9yeSBhZGRyZXNzCj4gKyAqCj4gKyAqIEB0cmVl ICAgICBUaGUgaW92YSB0cmVlCj4gKyAqIEBtYXAgICAgICBUaGUgbWFwIHdpdGggdGhlIG1lbW9y eSBhZGRyZXNzCj4gKyAqCj4gKyAqIFJldHVybiB0aGUgc3RvcmVkIG1hcHBpbmcsIG9yIE5VTEwg aWYgbm90IGZvdW5kLgo+ICsgKi8KPiArY29uc3QgRE1BTWFwICp2aG9zdF9pb3ZhX3RyZWVfZmlu ZF9pb3ZhKGNvbnN0IFZob3N0SU9WQVRyZWUgKnRyZWUsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBETUFNYXAgKm1hcCkKPiArewo+ICsgICAgcmV0dXJu IGdfdHJlZV9sb29rdXAodHJlZS0+dGFkZHJfaW92YV9tYXAsIG1hcCk7Cj4gK30KPiArCj4gKy8q Kgo+ICsgKiBBbGxvY2F0ZSBhIG5ldyBtYXBwaW5nCj4gKyAqCj4gKyAqIEB0cmVlICBUaGUgaW92 YSB0cmVlCj4gKyAqIEBtYXAgICBUaGUgaW92YSBtYXAKPiArICoKPiArICogUmV0dXJuczoKPiAr ICogLSBJT1ZBX09LIGlmIHRoZSBtYXAgZml0cyBpbiB0aGUgY29udGFpbmVyCj4gKyAqIC0gSU9W QV9FUlJfSU5WQUxJRCBpZiB0aGUgbWFwIGRvZXMgbm90IG1ha2Ugc2Vuc2UgKGxpa2Ugc2l6ZSBv dmVyZmxvdykKPiArICogLSBJT1ZBX0VSUl9PVkVSTEFQIGlmIHRoZSB0cmVlIGFscmVhZHkgY29u dGFpbnMgdGhhdCBtYXAKPiArICogLSBJT1ZBX0VSUl9OT01FTSBpZiB0cmVlIGNhbm5vdCBhbGxv Y2F0ZSBtb3JlIHNwYWNlLgo+ICsgKgo+ICsgKiBJdCByZXR1cm5zIGFzc2lnbmF0ZWQgaW92YSBp biBtYXAtPmlvdmEgaWYgcmV0dXJuIHZhbHVlIGlzIFZIT1NUX0RNQV9NQVBfT0suCj4gKyAqLwo+ ICtpbnQgdmhvc3RfaW92YV90cmVlX21hcF9hbGxvYyhWaG9zdElPVkFUcmVlICp0cmVlLCBETUFN YXAgKm1hcCkKPiArewo+ICsgICAgLyogU29tZSB2aG9zdCBkZXZpY2VzIGRvIG5vdCBsaWtlIGFk ZHIgMC4gU2tpcCBmaXJzdCBwYWdlICovCj4gKyAgICBod2FkZHIgaW92YV9maXJzdCA9IHRyZWUt PmlvdmFfZmlyc3QgPzogcWVtdV9yZWFsX2hvc3RfcGFnZV9zaXplOwo+ICsgICAgRE1BTWFwICpu ZXc7Cj4gKyAgICBpbnQgcjsKPiArCj4gKyAgICBpZiAobWFwLT50cmFuc2xhdGVkX2FkZHIgKyBt YXAtPnNpemUgPCBtYXAtPnRyYW5zbGF0ZWRfYWRkciB8fAo+ICsgICAgICAgIG1hcC0+cGVybSA9 PSBJT01NVV9OT05FKSB7Cj4gKyAgICAgICAgcmV0dXJuIElPVkFfRVJSX0lOVkFMSUQ7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgLyogQ2hlY2sgZm9yIGNvbGxpc2lvbnMgaW4gdHJhbnNsYXRlZCBhZGRy ZXNzZXMgKi8KPiArICAgIGlmICh2aG9zdF9pb3ZhX3RyZWVfZmluZF9pb3ZhKHRyZWUsIG1hcCkp IHsKPiArICAgICAgICByZXR1cm4gSU9WQV9FUlJfT1ZFUkxBUDsKPiArICAgIH0KPiArCj4gKyAg ICAvKiBBbGxvY2F0ZSBhIG5vZGUgaW4gSU9WQSBhZGRyZXNzICovCj4gKyAgICByID0gaW92YV90 cmVlX2FsbG9jX21hcCh0cmVlLT5pb3ZhX3RhZGRyX21hcCwgbWFwLCBpb3ZhX2ZpcnN0LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS0+aW92YV9sYXN0KTsKPiArICAgIGlmIChy ICE9IElPVkFfT0spIHsKPiArICAgICAgICByZXR1cm4gcjsKPiArICAgIH0KPiArCj4gKyAgICAv KiBBbGxvY2F0ZSBub2RlIGluIHFlbXUgLT4gaW92YSB0cmFuc2xhdGlvbnMgKi8KPiArICAgIG5l dyA9IGdfbWFsbG9jKHNpemVvZigqbmV3KSk7Cj4gKyAgICBtZW1jcHkobmV3LCBtYXAsIHNpemVv ZigqbmV3KSk7Cj4gKyAgICBnX3RyZWVfaW5zZXJ0KHRyZWUtPnRhZGRyX2lvdmFfbWFwLCBuZXcs IG5ldyk7CgoKQ2FuIHRoZSBjYWxsZXIgbWFwIHR3byBJT1ZBIHJhbmdlcyB0byB0aGUgc2FtZSBl LmcgR1BBIHJhbmdlPwoKVGhhbmtzCgoKPiArICAgIHJldHVybiBJT1ZBX09LOwo+ICt9Cj4gKwo+ ICsvKioKPiArICogUmVtb3ZlIGV4aXN0aW5nIG1hcHBpbmdzIGZyb20gaW92YSB0cmVlCj4gKyAq Cj4gKyAqIEBwYXJhbSAgaW92YV90cmVlICBUaGUgdmhvc3QgaW92YSB0cmVlCj4gKyAqIEBwYXJh bSAgbWFwICAgICAgICBUaGUgbWFwIHRvIHJlbW92ZQo+ICsgKi8KPiArdm9pZCB2aG9zdF9pb3Zh X3RyZWVfcmVtb3ZlKFZob3N0SU9WQVRyZWUgKmlvdmFfdHJlZSwgY29uc3QgRE1BTWFwICptYXAp Cj4gK3sKPiArICAgIGNvbnN0IERNQU1hcCAqb3ZlcmxhcDsKPiArCj4gKyAgICBpb3ZhX3RyZWVf cmVtb3ZlKGlvdmFfdHJlZS0+aW92YV90YWRkcl9tYXAsIG1hcCk7Cj4gKyAgICB3aGlsZSAoKG92 ZXJsYXAgPSB2aG9zdF9pb3ZhX3RyZWVfZmluZF9pb3ZhKGlvdmFfdHJlZSwgbWFwKSkpIHsKPiAr ICAgICAgICBnX3RyZWVfcmVtb3ZlKGlvdmFfdHJlZS0+dGFkZHJfaW92YV9tYXAsIG92ZXJsYXAp Owo+ICsgICAgfQo+ICt9Cj4gZGlmZiAtLWdpdCBhL2h3L3ZpcnRpby9tZXNvbi5idWlsZCBiL2h3 L3ZpcnRpby9tZXNvbi5idWlsZAo+IGluZGV4IDJkYzg3NjEzYmMuLjYwNDc2NzA4MDQgMTAwNjQ0 Cj4gLS0tIGEvaHcvdmlydGlvL21lc29uLmJ1aWxkCj4gKysrIGIvaHcvdmlydGlvL21lc29uLmJ1 aWxkCj4gQEAgLTExLDcgKzExLDcgQEAgc29mdG1tdV9zcy5hZGQod2hlbjogJ0NPTkZJR19BTEwn LCBpZl90cnVlOiBmaWxlcygndmhvc3Qtc3R1Yi5jJykpCj4gICAKPiAgIHZpcnRpb19zcyA9IHNz LnNvdXJjZV9zZXQoKQo+ICAgdmlydGlvX3NzLmFkZChmaWxlcygndmlydGlvLmMnKSkKPiAtdmly dGlvX3NzLmFkZCh3aGVuOiAnQ09ORklHX1ZIT1NUJywgaWZfdHJ1ZTogZmlsZXMoJ3Zob3N0LmMn LCAndmhvc3QtYmFja2VuZC5jJywgJ3Zob3N0LXNoYWRvdy12aXJ0cXVldWUuYycpKQo+ICt2aXJ0 aW9fc3MuYWRkKHdoZW46ICdDT05GSUdfVkhPU1QnLCBpZl90cnVlOiBmaWxlcygndmhvc3QuYycs ICd2aG9zdC1iYWNrZW5kLmMnLCAndmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5jJywgJ3Zob3N0LWlv dmEtdHJlZS5jJykpCj4gICB2aXJ0aW9fc3MuYWRkKHdoZW46ICdDT05GSUdfVkhPU1RfVVNFUics IGlmX3RydWU6IGZpbGVzKCd2aG9zdC11c2VyLmMnKSkKPiAgIHZpcnRpb19zcy5hZGQod2hlbjog J0NPTkZJR19WSE9TVF9WRFBBJywgaWZfdHJ1ZTogZmlsZXMoJ3Zob3N0LXZkcGEuYycpKQo+ICAg dmlydGlvX3NzLmFkZCh3aGVuOiAnQ09ORklHX1ZJUlRJT19CQUxMT09OJywgaWZfdHJ1ZTogZmls ZXMoJ3ZpcnRpby1iYWxsb29uLmMnKSkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlv bkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlv bi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==