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 X-Spam-Level: X-Spam-Status: No, score=-11.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34EF1C4741F for ; Tue, 10 Nov 2020 02:45:09 +0000 (UTC) Received: from fraxinus.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 mail.kernel.org (Postfix) with ESMTPS id 6DB0B2063A for ; Tue, 10 Nov 2020 02:45:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="HzVHxIRi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6DB0B2063A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 4D52984A05; Tue, 10 Nov 2020 02:45:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y3X7Bo16DKWh; Tue, 10 Nov 2020 02:45:05 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id B1A3684ADC; Tue, 10 Nov 2020 02:45:05 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 93474C088B; Tue, 10 Nov 2020 02:45:05 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 95104C016F for ; Tue, 10 Nov 2020 02:45:04 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 802CB86771 for ; Tue, 10 Nov 2020 02:45:04 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xNtwq6RYhNdD for ; Tue, 10 Nov 2020 02:45:02 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by whitealder.osuosl.org (Postfix) with ESMTPS id 5D9DB86769 for ; Tue, 10 Nov 2020 02:45:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1604976300; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gVcCTPt/DQSmk5nVVeCDQo6qjri10lQFJQNMwGXzrpw=; b=HzVHxIRiq1pVQUsla45Q9oEMfOte+VJmcqzGnw0FyFu2kIZ/VjQ6+azjmNFo4tE3afgxuT AuoBNoBPlGQeOM45L1ToGVZhrcdL/u7ZAgPnfo6IvI1NOy58jGZXO+yWp+rK9J99hvpm6P QD3yYjRJQKaAlD2OUjppR1VwSixP8TM= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-318-0rVSLHbZObCGsV-OXuhlog-1; Mon, 09 Nov 2020 21:44:58 -0500 X-MC-Unique: 0rVSLHbZObCGsV-OXuhlog-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6B38C8015B1; Tue, 10 Nov 2020 02:44:57 +0000 (UTC) Received: from [10.72.13.94] (ovpn-13-94.pek2.redhat.com [10.72.13.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4F3466EF54; Tue, 10 Nov 2020 02:44:46 +0000 (UTC) Subject: Re: [PATCH 06/11] vhost: support delayed vq creation To: Mike Christie , martin.petersen@oracle.com, linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, mst@redhat.com, pbonzini@redhat.com, stefanha@redhat.com, virtualization@lists.linux-foundation.org References: <1604528804-2878-1-git-send-email-michael.christie@oracle.com> <1604528804-2878-7-git-send-email-michael.christie@oracle.com> <56056e8d-d6ff-9a6e-2a7e-1ea1737b1d27@redhat.com> <54285b79-637e-3dcd-382f-ddeff44f6019@oracle.com> From: Jason Wang Message-ID: <4bc43b8d-ddea-6504-468f-a451db48472e@redhat.com> Date: Tue, 10 Nov 2020 10:44:45 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <54285b79-637e-3dcd-382f-ddeff44f6019@oracle.com> Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 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" Ck9uIDIwMjAvMTEvMTAg5LiK5Y2IMjo0MSwgTWlrZSBDaHJpc3RpZSB3cm90ZToKPiBPbiAxMS84 LzIwIDEwOjAxIFBNLCBKYXNvbiBXYW5nIHdyb3RlOgo+Pgo+PiBPbiAyMDIwLzExLzUg5LiK5Y2I NjoyNiwgTWlrZSBDaHJpc3RpZSB3cm90ZToKPj4+IFRoaXMgYWxsb3dzIHZxIGNyZWF0aW9uIHRv IGJlIGRvbmUgd2hlbiBpdCdzIGZpcnN0IGFjY2Vzc2VkIGJ5Cj4+PiB1c2Vyc3BhY2UuIHZob3N0 LXNjc2kgZG9lc24ndCBrbm93IGhvdyBtYW55IHF1ZXVlcyB0aGUgdXNlciByZXF1ZXN0ZWQKPj4+ IHVudGlsIHRoZXkgYXJlIGZpcnN0IHNldHVwLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhbGxvY2F0 ZSByZXNvdXJjZXMKPj4+IGxpa2UgdGhlIGlvdmVjcyBmb3IgMTI4IHZxcyB3aGVuIHdlIGFyZSBv bmx5IHVzaW5nIDEgb3IgMiBtb3N0IG9mIHRoZQo+Pj4gdGltZS4gSW4gdGhlIG5leHQgcGF0aGNl cywgdmhvc3Qtc2NzaSB3aWxsIGFsc28gc3dpdGNoIHRvIHByZWFsbG9jYXRpbmcKPj4+IGNtZHMg cGVyIHZxIGluc3RlYWQgb2YgcGVyIGxpbyBzZXNzaW9uIGFuZCB3ZSBkb24ndCB3YW50IHRvIGFs bG9jYXRlCj4+PiB0aGVtIGZvciAxMjcgZXh0cmEgdnFzIGlmIHRoZXkgYXJlIG5vdCBpbiB1c2Uu Cj4+Pgo+Pj4gV2l0aCB0aGlzIHBhdGNoIHdoZW4gYSBkcml2ZXIgY2FsbHMgdmhvc3RfZGV2X2lu aXQgdGhleSBwYXNzIGluIHRoZQo+Pj4gbnVtYmVyIG9mIHZxcyB0aGF0IHRoZXkga25vdyB0aGV5 IG5lZWQgYW5kIHRoZSBtYXggdGhleSBjYW4gc3VwcG9ydC4KPj4+IFRoaXMgcGF0Y2ggaGFzIGFs bCB0aGUgZHJpdmVycyBwYXNzIGluIHRoZSBzYW1lIHZhbHVlIGZvciBib3RoIHRoZQo+Pj4gaW5p dGlhbCBudW1iZXIgb2YgdnFzIGFuZCB0aGUgbWF4LiBUaGUgbmV4dCBwYXRjaCB3aWxsIGNvbnZl cnQgc2NzaS4KPj4+IFRoZSBvdGhlciBkcml2ZXJzIGxpa2UgbmV0L3Zzb2NrIGhhdmUgdGhlaXIg dnFzIGhhcmQgY29kZWQgaW4gdGhlCj4+PiBrZXJuZWwgb3Igc2V0dXAvZGlzY292ZXJlZCB2aWEg b3RoZXIgbWV0aG9kcyBsaWtlIHdpdGggdmRwYS4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBNaWtl IENocmlzdGllIDxtaWNoYWVsLmNocmlzdGllQG9yYWNsZS5jb20+Cj4+Cj4+Cj4+IFRoaXMgbG9v a3MgbGlrZSBhIGRlbGF5ZWQgdnEgbWV0YWRhdGEgY3JlYXRpb24gaW5zdGVhZCBvZiB2cSBpdHNl bGYuID4KPj4gU2V2ZXJhbCBxdWVzdGlvbnM6Cj4+Cj4+IC0gY2FuIHdlIHNpbXBseSBpbnRyb2R1 Y2UgbmV3IGlvY3RscyB0byBzZXQgdGhlICNtYXhfdnFzIGZvciBTQ1NJPyBPciAKPgo+IFdlIGNh biBkbyB0aGlzIGNvZGUgd2lzZSwgYnV0IEkgd2FzIG5vdCBzdXJlIGFib3V0IHRoZSBzcGVjIGFu ZCAKPiBWSE9TVF9TRVRfT1dORVIncyByZXF1aXJlbWVudHMuIEZvciB0aGUgbGF0dGVyLCB0aGUg Zmlyc3QgaW9jdGwgY21kIAo+IHF1ZW11IGRvZXMgaXMgVkhPU1RfU0VUX09XTkVSLiBUaGUgdmhv c3RfZGV2X2lvY3RsIHRoZW4gcmVxdWlyZXMgdGhhdCAKPiB0aGUgY2FsbGVyIGJlIHRoZSBvd25l ciB0byBiZSBhYmxlIHRvIGRvIGFueSBvdGhlciBpb2N0bHMuIFRoZSAKPiBpbmRpdmlkdWFsIGRy aXZlcnMgbGlrZSBzY3NpLCBuZXQsIGV0YyBhbGxvdyB1c2Vyc3BhY2UgdG8gZG8gaW9jdGxzIAo+ IHdpdGhvdXQgYmVpbmcgdGhlIG93bmVyLCBhbmQgSSB3YXMgbm90IHN1cmUgaWYgdGhhdCBpcyBi eSBhY2NpZGVudCBvciAKPiBkZXNpZ24uCgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IG93bmVy IGlzIHJlcXVpcmVkIGZvciBtZW1vcnkgbWFwcGluZyAKb3BlcmF0aW9ucy4gRm9yIHNldHRpbmcg I21heF92cXMsIG5ldCB3aWxsIHRhbGsgd2l0aCB0aGUgYmFja2VuZCAKKFRVTi9UQVApIGluc3Rl YWQgb2Ygdmhvc3QuIEZvciBTQ1NJLCBpdCBsb29rcyBPSyB0byBkbyBpdCB3aXRob3V0IGFuIApv d25lciAobXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHZob3N0LXNjc2kgZG9lc24ndCBuZWVkIHRv IHRlbGwgI21heF92cXMgCnRvIHRoZSB1bmRlci1sYXllcikuCgoKPgo+PiBzaW1wbHkgaW50cm9k dWNlIFZSSU5HX0VOQUJMRSBpb2N0bCBmb3IgU0NTSSBhbmQgbGV0IHFlbXUgdG8gY2FsbCAKPj4g dGhhdCBpb2N0bCBmb3IgMS4wIGRldmljZSwgcWVtdSBjYW4gc2ltcGx5IGZvcndhcmQgdGhlIEVO QUJMRSBjb21tYW5kIHRvIAo+Cj4gSWYgaXQncyBhbGxvd2VkIHRvIGRvIGlvY3RsIGNtZHMgdGhh dCBzZXQgdmhvc3QgZHJpdmVyIHNldHRpbmdzIGJlZm9yZSAKPiBWSE9TVF9TRVRfT1dORVIgdGhl biB3ZSBjYW4gZG8gdGhlIFZSSU5HX0VOQUJMRSBjYWxscyBmaXJzdC4gRm9yIHRoYXQgCj4gdGhv dWdoLCBJIGhhZCBvbmUgcXVlc3Rpb24gYWJvdXQgdGhlIHNwZWMuIEluIHNlY3Rpb24gIjQuMS40 LjMuMiAKPiBEcml2ZXIgUmVxdWlyZW1lbnRzOiBDb21tb24gY29uZmlndXJhdGlvbiBzdHJ1Y3R1 cmUgbGF5b3V0IiBpdCBoYWQgdGhlIAo+IGxpbmU6Cj4KPiAtLS0tLQo+IFRoZSBkcml2ZXIgTVVT VCBjb25maWd1cmUgdGhlIG90aGVyIHZpcnRxdWV1ZSBmaWVsZHMgYmVmb3JlIGVuYWJsaW5nIAo+ IHRoZSB2aXJ0cXVldWUgd2l0aCBxdWV1ZV9lbmFibGUuCj4gLS0tLS0KPgo+IERvZXMgdGhhdCBh cHBseSB0byBvdXIgY2FzZSwgb3Igb25seSB3aGVuIGl0J3MgYmVpbmcgdXNlZCBpbiBhIAo+IHZp cnRpb19wY2lfY29tbW9uX2NmZyBzdHJ1Y3QgYmFzZWQgY29tbWFuZD8gCgoKVGhlIHNwZWMgaXMg Zm9yIHZpcnRpbyhwY2kpIG9ubHksIGZvciB2aG9zdCwgaXQgY291bGQgY2hvb3NlIHRvIGZvbGxv dyAKdGhlIHNwZWMgKHdoaWNoIHNob3VsZCBiZSBiZXR0ZXIpIG9yIG5vdC4KCgo+IElmIGl0IGFw cGxpZXMgdG8gb3VyIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBjaGFuZ2UgdXNlcnNwYWNlIHRvIHNl dCAKPiBjb25maWcgc2V0dGluZ3MgbGlrZSB0aGUgcXVldWVfc2l6ZSBhbmQgZmVhdHVyZXMgZWFy bGllciwgcmlnaHQ/CgoKWWVzLCBvciBkbyBWUklOR19FTkFCTEUgYWZ0ZXIgcXVldWVfc2l6ZSBh bmQgZmVhdHVyZXMgYXJlIHNldC4KCgo+Cj4gSSB3YXMgdGhpbmtpbmcgaWYgd2UgaGFkIHRvIGRl YWwgd2l0aCB0aGF0IHRoZW4gbWF5YmUgaXQncyBiZXR0ZXIgdG8gCj4gYWRkIGEgbmV3IGlvY3Rs IGxpa2UgVlJJTkdfQ1JFQVRFLiBJdCB3b3VsZCBiZSBkb25lIGZpcnN0LCBzaW5nbGVzIAo+IHRo YXQgdGhlIGtlcm5lbCBzaG91bGQgZG8gdGhlIHZxIGNyZWF0aW9uIChhbGxvY2F0aW9uLCBpbml0 IHN0ZXBzIHdlIAo+IGRvIGluIHZob3N0X2Rldl9pbml0LCBldGMpLgo+CgpUZWNobmljYWxseSwg dGhhdCdzIHBvc3NpYmxlLCBidXQgaXQgbG9va3MgbGlrZSBhIG5ldyB2ZXJzaW9uIG9mIHZob3N0 IAppb2N0bCBwcm90b2NvbCB3aGljaCByZXF1aXJlcyBuZXcgZmVhdHVyZXMgdG8gYmUgYWR2ZXJ0 aXNlZCB0byB1c2Vyc3BhY2UgCnRvIGNob29zZSBiZXR3ZWVuIHRoZSB0d28uIEknbSBub3Qgc3Vy ZSBpdCdzIHdvcnRoIHRvIGRvIHRoYXQuCgoKPgo+PiB2aG9zdC1zY3NpLCBmb3IgMC45eCBkZXZp Y2UgcWVtdSBjYW4gc2ltcGx5IGNoZWNrIHdoZXRoZXIgcmluZy5hZGRyIAo+PiBpcyB6ZXJvIG9y IG5vdAo+IEkgaGFkIGEgcXVlc3Rpb24gYWJvdXQgdGhhdCBhbmQgbXkgdGhyZWFkIHBlciB2cSBw YXRjaGVzLgo+Cj4gSWYgeW91IHdhbnQgdG8gcGFpciB0aGlzIHBhdGNoc2V0IGRvd24gdG8gaXQn cyBiYXJlIGJ1ZyBmaXhlcyB0aGF0IAo+IHByZXZlbnQgdXNlcnMgZnJvbSBnZXR0aW5nIElPIGVy cm9ycywgSSB3b3VsZCBkbyByaW5nLmFkZHIgY2hlY2sgb25seSAKPiBhcHByb2FjaCBmb3IgdGhp cyBidWcgZml4IHBhdGNoc2V0LgoKClllcywgSSB0aGluayBpdCB3b3VsZCBiZSBoZWxwZnVsIGlm IHdlIGNhbiBsaW1pdCB0aGUgY2hhbmdlcyB0byBidWcgZml4ZXMuCgoKPgo+IEZvciBteSBvdGhl ciBwYXRjaHNldCB0byBkbyBhIHZob3N0IHdvcmtlciB0aHJlYWQgcGVyIHZxLCBJIHRoaW5rIGl0 IAo+IHdvdWxkIGJlIGNsZWFuZXN0IHRvIGhhdmUgYSBuZXcgaW9jdGwgb3IgYSB1c2Vyc3BhY2Ug Y2hhbmdlLiBUaGUgCj4gcHJvYmxlbSBpcyB0aGF0IHdlIGNyZWF0ZSB0aGUgd29ya2VyIHRocmVh ZCBpbiB2aG9zdF9kZXZfc2V0X293bmVyIGFuZCAKPiBhdCB0aGF0IHRpbWUgd2UgZG8gbm90IGtu b3cgaG93IG1hbnkgdnFzIHRoZXJlIGFyZSBnb2luZyB0byBiZS4gRm9yIAo+IHRoYXQgd2UgY291 bGQ6Cj4gMS4gQWRkIGEgbmV3IFZIT1NUX1NFVF9PV05FUl9WMiB0aGF0IGhhcyBhbiBhcmcgd2hp Y2ggY29udGFpbnMgdGhlIAo+IG51bWJlciBvZiBxdWV1ZXMgb3Igd29ya2VyIHRocmVhZHMKPiAy LiBkbyB0aGUgVlJJTkdfRU5BQkxFIGFwcHJvYWNoIGlmIGFsbG93ZWQgc3BlYy9WSE9TVF9TRVRf T1dORVIgd2lzZS4KPiAzLiBhZGQgYSBuZXcgaW9jdGwgdGhhdCBpcyBkb25lIGJlZm9yZSBWSE9T VF9TRVRfT1dORVIKCgpDYW4gd2UganVzdCBjcmVhdGUgb25lIHdvcmtlciBkdXJpbmcgU0VUX09X TkVSIGFuZCBmb3IgdGhlIHJlc3QgZHVyaW5nIApWUklOR19FTkFCTEU/CgoKPgo+IElmIHdlIHNw bGl0IGl0IHVwIGxpa2UgdGhpcywgY3VycmVudCB1c2VycyBnZXQgdGhlIElPIGVycm9yIGJ1ZyBm aXhlcy4gCj4gVGhpcyBwYXRjaHNldCBnZXRzIGEgbG90IHNtYWxsZXIuIFVzZXJzIHdvdWxkIHRo ZW4gb25seSBoYXZlIHRvIAo+IHVwZ3JhZGUgdXNlcnNwYWNlIHRvIGdldCB0aGUgbXVsdHBsZSB0 aHJlYWQgZmVhdHVyZS4KCgpZZXMuCgoKPgo+IENvbXBhdCBzZXR1cCBzdXBwb3J0IG1pZ2h0IGJl IGNsZWFuZXIgdG9vLiBJZiB3ZSBkaWQgdGhlIAo+IFZIT1NUX1NFVF9PV05FUl9WMiBvciBhZGRl ZCBhIG5ldyBpb2N0bCB0aGVuIHZob3N0X2Rldl9zZXRfb3duZXIganVzdCAKPiB0YWtlcyB0aGUg bmV3IGFyZyBhbmQgbG9vcHMgbnVtX3F1ZXVlcy93b3JrZXJzIHRpbWVzIHRvIGNyZWF0ZSBtb3Jl IAo+IHRocmVhZHMuCj4KPgoKVGhhbmtzCgoKPj4gLSBpZiBub3QsIGl0J3MgYmV0dGVyIHRvIGNv bnZlcnQgYWxsIHRoZSBkZXZpY2VzL3F1ZXVlcyB0byBiZWhhdmUgYXMgCj4+IGlmIFNDU0kgdG8g aGF2ZSBhIGNvbnNpc3RlbnQgd2F5IGFsbG9jYXRlIG1ldGFkYXRhCj4+IC0gZG8gd2UgbmVlZCB0 byBjYXJlIGFib3V0IHZxIGZyZWUsIGUuZyBmcmVlIHZxcyBkdXJpbmcgcmVzZXQ/Cj4+Cj4+IFRo YW5rcwo+Pgo+Pgo+Pj4gLS0tCj4+PiDCoCBkcml2ZXJzL3Zob3N0L25ldC5jwqDCoCB8wqAgMiAr LQo+Pj4gwqAgZHJpdmVycy92aG9zdC9zY3NpLmPCoCB8wqAgNCArLS0KPj4+IMKgIGRyaXZlcnMv dmhvc3QvdGVzdC5jwqAgfMKgIDUgKystLQo+Pj4gwqAgZHJpdmVycy92aG9zdC92ZHBhLmPCoCB8 wqAgMiArLQo+Pj4gwqAgZHJpdmVycy92aG9zdC92aG9zdC5jIHwgNzEgCj4+PiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPj4+IMKgIGRyaXZlcnMv dmhvc3Qvdmhvc3QuaCB8wqAgNyArKystLQo+Pj4gwqAgZHJpdmVycy92aG9zdC92c29jay5jIHwg MTEgKysrKy0tLS0KPj4+IMKgIDcgZmlsZXMgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgMzYg ZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3QvbmV0LmMgYi9k cml2ZXJzL3Zob3N0L25ldC5jCj4+PiBpbmRleCBmZDMwYjUzLi5mY2U0NmYwIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy92aG9zdC9uZXQuYwo+Pj4gKysrIGIvZHJpdmVycy92aG9zdC9uZXQuYwo+ Pj4gQEAgLTEzMTYsNyArMTMxNiw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfbmV0X29wZW4oc3RydWN0 IGlub2RlICppbm9kZSwgCj4+PiBzdHJ1Y3QgZmlsZSAqZikKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBuLT52cXNbaV0ucnhfcmluZyA9IE5VTEw7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdmhvc3Rf bmV0X2J1Zl9pbml0KCZuLT52cXNbaV0ucnhxKTsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gLcKgwqDC oCBpZiAodmhvc3RfZGV2X2luaXQoZGV2LCB2cXMsIFZIT1NUX05FVF9WUV9NQVgsCj4+PiArwqDC oMKgIGlmICh2aG9zdF9kZXZfaW5pdChkZXYsIHZxcywgVkhPU1RfTkVUX1ZRX01BWCwgVkhPU1Rf TkVUX1ZRX01BWCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFVJT19NQVhJ T1YgKyBWSE9TVF9ORVRfQkFUQ0gsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBWSE9TVF9ORVRfUEtUX1dFSUdIVCwgVkhPU1RfTkVUX1dFSUdIVCwgdHJ1ZSwKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5VTEwpKQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmhvc3Qvc2NzaS5jIGIvZHJpdmVycy92aG9zdC9zY3NpLmMKPj4+IGluZGV4IGVkOGJhZjku LjViMzcyMGUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL3Zob3N0L3Njc2kuYwo+Pj4gKysrIGIv ZHJpdmVycy92aG9zdC9zY3NpLmMKPj4+IEBAIC0xNjMyLDggKzE2MzIsOCBAQCBzdGF0aWMgaW50 IHZob3N0X3Njc2lfb3BlbihzdHJ1Y3QgaW5vZGUgCj4+PiAqaW5vZGUsIHN0cnVjdCBmaWxlICpm KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHZxc1tpXSA9ICZ2cy0+dnFzW2ldLnZxOwo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIHZzLT52cXNbaV0udnEuaGFuZGxlX2tpY2sgPSB2aG9zdF9zY3NpX2hh bmRsZV9raWNrOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiAtwqDCoMKgIHIgPSB2aG9zdF9kZXZfaW5p dCgmdnMtPmRldiwgdnFzLCBWSE9TVF9TQ1NJX01BWF9WUSwgVUlPX01BWElPViwKPj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZIT1NUX1NDU0lfV0VJR0hULCAwLCB0cnVlLCBOVUxM KTsKPj4+ICvCoMKgwqAgciA9IHZob3N0X2Rldl9pbml0KCZ2cy0+ZGV2LCB2cXMsIFZIT1NUX1ND U0lfTUFYX1ZRLCAKPj4+IFZIT1NUX1NDU0lfTUFYX1ZRLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgVUlPX01BWElPViwgVkhPU1RfU0NTSV9XRUlHSFQsIDAsIHRydWUsIE5VTEwp Owo+Pj4gwqDCoMKgwqDCoCBpZiAocikKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9k ZXZfaW5pdDsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Rlc3QuYyBiL2RyaXZlcnMv dmhvc3QvdGVzdC5jCj4+PiBpbmRleCBjMjU1YWU1Li45ZDJiZmEzIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy92aG9zdC90ZXN0LmMKPj4+ICsrKyBiL2RyaXZlcnMvdmhvc3QvdGVzdC5jCj4+PiBA QCAtMTE5LDggKzExOSw5IEBAIHN0YXRpYyBpbnQgdmhvc3RfdGVzdF9vcGVuKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIAo+Pj4gc3RydWN0IGZpbGUgKmYpCj4+PiDCoMKgwqDCoMKgIGRldiA9ICZuLT5k ZXY7Cj4+PiDCoMKgwqDCoMKgIHZxc1tWSE9TVF9URVNUX1ZRXSA9ICZuLT52cXNbVkhPU1RfVEVT VF9WUV07Cj4+PiDCoMKgwqDCoMKgIG4tPnZxc1tWSE9TVF9URVNUX1ZRXS5oYW5kbGVfa2ljayA9 IGhhbmRsZV92cV9raWNrOwo+Pj4gLcKgwqDCoCBpZiAodmhvc3RfZGV2X2luaXQoZGV2LCB2cXMs IFZIT1NUX1RFU1RfVlFfTUFYLCBVSU9fTUFYSU9WLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgVkhPU1RfVEVTVF9QS1RfV0VJR0hULCBWSE9TVF9URVNUX1dFSUdIVCwgdHJ1ZSwg TlVMTCkKPj4+ICvCoMKgwqAgaWYgKHZob3N0X2Rldl9pbml0KGRldiwgdnFzLCBWSE9TVF9URVNU X1ZRX01BWCwgVkhPU1RfVEVTVF9WUV9NQVgsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBVSU9fTUFYSU9WLCBWSE9TVF9URVNUX1BLVF9XRUlHSFQsIFZIT1NUX1RFU1RfV0VJR0hU LAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHJ1ZSwgTlVMTCkKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIGVycl9kZXZfaW5pdDsKPj4+IMKgwqDCoMKgwqAgZi0+cHJpdmF0 ZV9kYXRhID0gbjsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3ZkcGEuYyBiL2RyaXZl cnMvdmhvc3QvdmRwYS5jCj4+PiBpbmRleCBjMTYxNWE3Li42YWJkOWQ4IDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy92aG9zdC92ZHBhLmMKPj4+ICsrKyBiL2RyaXZlcnMvdmhvc3QvdmRwYS5jCj4+ PiBAQCAtODI5LDcgKzgyOSw3IEBAIHN0YXRpYyBpbnQgdmhvc3RfdmRwYV9vcGVuKHN0cnVjdCBp bm9kZSAqaW5vZGUsIAo+Pj4gc3RydWN0IGZpbGUgKmZpbGVwKQo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIHZxc1tpXSA9ICZ2LT52cXNbaV07Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdnFzW2ldLT5o YW5kbGVfa2ljayA9IGhhbmRsZV92cV9raWNrOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiAtwqDCoMKg IHIgPSB2aG9zdF9kZXZfaW5pdChkZXYsIHZxcywgbnZxcywgMCwgMCwgMCwgZmFsc2UsCj4+PiAr wqDCoMKgIHIgPSB2aG9zdF9kZXZfaW5pdChkZXYsIHZxcywgbnZxcywgbnZxcywgMCwgMCwgMCwg ZmFsc2UsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2aG9zdF92ZHBhX3By b2Nlc3NfaW90bGJfbXNnKTsKPj4+IMKgwqDCoMKgwqAgaWYgKHIpCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgZ290byBlcnJfZGV2X2luaXQ7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92 aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jCj4+PiBpbmRleCBhNGE0NDUwLi4yY2EyZTcx IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jCj4+PiArKysgYi9kcml2ZXJz L3Zob3N0L3Zob3N0LmMKPj4+IEBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgdmhvc3Rf dnFfbWV0YV9yZXNldChzdHJ1Y3Qgdmhvc3RfZGV2IAo+Pj4gKmQpCj4+PiDCoCB7Cj4+PiDCoMKg wqDCoMKgIGludCBpOwo+Pj4gLcKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bnZxczsgKytpKQo+ Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bWF4X252cXM7ICsraSkKPj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBfX3Zob3N0X3ZxX21ldGFfcmVzZXQoZC0+dnFzW2ldKTsKPj4+IMKgIH0KPj4+ IEBAIC0zMzEsNiArMzMxLDcgQEAgc3RhdGljIHZvaWQgdmhvc3RfdnFfcmVzZXQoc3RydWN0IHZo b3N0X2RldiAqZGV2LAo+Pj4gwqDCoMKgwqDCoCB2cS0+YnVzeWxvb3BfdGltZW91dCA9IDA7Cj4+ PiDCoMKgwqDCoMKgIHZxLT51bWVtID0gTlVMTDsKPj4+IMKgwqDCoMKgwqAgdnEtPmlvdGxiID0g TlVMTDsKPj4+ICvCoMKgwqAgdnEtPmluaXRpYWxpemVkID0gZmFsc2U7Cj4+PiDCoMKgwqDCoMKg IHZob3N0X3ZyaW5nX2NhbGxfcmVzZXQoJnZxLT5jYWxsX2N0eCk7Cj4+PiDCoMKgwqDCoMKgIF9f dmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7Cj4+PiDCoCB9Cj4+PiBAQCAtNDExLDcgKzQxMiw3IEBA IHN0YXRpYyB2b2lkIHZob3N0X2Rldl9mcmVlX2lvdmVjcyhzdHJ1Y3QgCj4+PiB2aG9zdF9kZXYg KmRldikKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgaW50IGk7Cj4+PiAtwqDCoMKgIGZvciAoaSA9 IDA7IGkgPCBkZXYtPm52cXM7ICsraSkKPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGRldi0+ bWF4X252cXM7ICsraSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB2aG9zdF92cV9mcmVlX2lvdmVj cyhkZXYtPnZxc1tpXSk7Cj4+PiDCoCB9Cj4+PiBAQCAtNDU2LDcgKzQ1Nyw3IEBAIHN0YXRpYyBz aXplX3Qgdmhvc3RfZ2V0X2Rlc2Nfc2l6ZShzdHJ1Y3QgCj4+PiB2aG9zdF92aXJ0cXVldWUgKnZx LAo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gc2l6ZW9mKCp2cS0+ZGVzYykgKiBudW07Cj4+PiDCoCB9 Cj4+PiAtc3RhdGljIGludCB2aG9zdF92cV9pbml0KHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgc3Ry dWN0IAo+Pj4gdmhvc3RfdmlydHF1ZXVlICp2cSkKPj4+ICtzdGF0aWMgdm9pZCBfX3Zob3N0X3Zx X2luaXQoc3RydWN0IHZob3N0X2RldiAqZGV2LCBzdHJ1Y3QgCj4+PiB2aG9zdF92aXJ0cXVldWUg KnZxKQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCB2cS0+bG9nID0gTlVMTDsKPj4+IMKgwqDCoMKg wqAgdnEtPmluZGlyZWN0ID0gTlVMTDsKPj4+IEBAIC00NjcsMTIgKzQ2OCwyOSBAQCBzdGF0aWMg aW50IHZob3N0X3ZxX2luaXQoc3RydWN0IHZob3N0X2RldiAKPj4+ICpkZXYsIHN0cnVjdCB2aG9z dF92aXJ0cXVldWUgKnZxKQo+Pj4gwqDCoMKgwqDCoCBpZiAodnEtPmhhbmRsZV9raWNrKQo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIHZob3N0X3BvbGxfaW5pdCgmdnEtPnBvbGwsIHZxLT5oYW5kbGVf a2ljaywgRVBPTExJTiwgZGV2KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCB2aG9zdF92 cV9pbml0KHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgaW50IHZxX2lkeCkKPj4+ICt7Cj4+PiArwqDC oMKgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxOwo+Pj4gK8KgwqDCoCBpbnQgcmV0Owo+Pj4g Kwo+Pj4gK8KgwqDCoCBpZiAodnFfaWR4ID49IGRldi0+bWF4X252cXMpCj4+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FTk9CVUZTOwo+Pj4gKwo+Pj4gK8KgwqDCoCB2cSA9IGRldi0+dnFzW3Zx X2lkeF07Cj4+PiArwqDCoMKgIF9fdmhvc3RfdnFfaW5pdChkZXYsIHZxKTsKPj4+ICvCoMKgwqAg cmV0ID0gdmhvc3RfdnFfYWxsb2NfaW92ZWNzKGRldiwgdnEpOwo+Pj4gK8KgwqDCoCBpZiAocmV0 KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiAtwqDCoMKgIHJldHVybiB2aG9z dF92cV9hbGxvY19pb3ZlY3MoZGV2LCB2cSk7Cj4+PiArwqDCoMKgIHZxLT5pbml0aWFsaXplZCA9 IHRydWU7Cj4+PiArwqDCoMKgIGRldi0+bnZxcysrOwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ IMKgIH0KPj4+IMKgIGludCB2aG9zdF9kZXZfaW5pdChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsCj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqKnZxcywgaW50 IG52cXMsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAq KnZxcywgaW50IG52cXMsIGludCBtYXhfbnZxcywKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpbnQgaW92X2xpbWl0LCBpbnQgd2VpZ2h0LCBpbnQgYnl0ZV93ZWlnaHQsCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYm9vbCB1c2Vfd29ya2VyLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGludCAoKm1zZ19oYW5kbGVyKShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsCj4+PiBAQCAt NDgxLDcgKzQ5OSw4IEBAIGludCB2aG9zdF9kZXZfaW5pdChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYs Cj4+PiDCoMKgwqDCoMKgIGludCBpOwo+Pj4gwqDCoMKgwqDCoCBkZXYtPnZxcyA9IHZxczsKPj4+ IC3CoMKgwqAgZGV2LT5udnFzID0gbnZxczsKPj4+ICvCoMKgwqAgZGV2LT5udnFzID0gMDsKPj4+ ICvCoMKgwqAgZGV2LT5tYXhfbnZxcyA9IG1heF9udnFzOwo+Pj4gwqDCoMKgwqDCoCBtdXRleF9p bml0KCZkZXYtPm11dGV4KTsKPj4+IMKgwqDCoMKgwqAgZGV2LT5sb2dfY3R4ID0gTlVMTDsKPj4+ IMKgwqDCoMKgwqAgZGV2LT51bWVtID0gTlVMTDsKPj4+IEBAIC00OTksMTIgKzUxOCwxNSBAQCBp bnQgdmhvc3RfZGV2X2luaXQoc3RydWN0IHZob3N0X2RldiAqZGV2LAo+Pj4gwqDCoMKgwqDCoCBJ TklUX0xJU1RfSEVBRCgmZGV2LT5wZW5kaW5nX2xpc3QpOwo+Pj4gwqDCoMKgwqDCoCBzcGluX2xv Y2tfaW5pdCgmZGV2LT5pb3RsYl9sb2NrKTsKPj4+IC0KPj4+IC3CoMKgwqAgZm9yIChpID0gMDsg aSA8IGRldi0+bnZxczsgKytpKSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHZob3N0X3ZxX2lu aXQoZGV2LCBkZXYtPnZxc1tpXSkpCj4+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBudnFzOyAr K2kpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmhvc3RfdnFfaW5pdChkZXYsIGkpKQo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfdnFfaW5pdDsKPj4+IMKgwqDCoMKg wqAgfQo+Pj4gK8KgwqDCoCBmb3IgKDsgaSA8IGRldi0+bWF4X252cXM7ICsraSkKPj4+ICvCoMKg wqDCoMKgwqDCoCAvKiBKdXN0IHByZXAvY2xlYXIgdGhlIGZpZWxkcyBhbmQgc2V0IGluaXRpYWxp emVkPWZhbHNlICovCj4+PiArwqDCoMKgwqDCoMKgwqAgX192aG9zdF92cV9pbml0KGRldiwgZGV2 LT52cXNbaV0pOwo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIGVycl92cV9p bml0Ogo+Pj4gQEAgLTY1Miw3ICs2NzQsNyBAQCB2b2lkIHZob3N0X2Rldl9yZXNldF9vd25lcihz dHJ1Y3Qgdmhvc3RfZGV2IAo+Pj4gKmRldiwgc3RydWN0IHZob3N0X2lvdGxiICp1bWVtKQo+Pj4g wqDCoMKgwqDCoCAvKiBXZSBkb24ndCBuZWVkIFZRIGxvY2tzIGJlbG93IHNpbmNlIHZob3N0X2Rl dl9jbGVhbnVwIG1ha2VzIAo+Pj4gc3VyZQo+Pj4gwqDCoMKgwqDCoMKgICogVlFzIGFyZW4ndCBy dW5uaW5nLgo+Pj4gwqDCoMKgwqDCoMKgICovCj4+PiAtwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBk ZXYtPm52cXM7ICsraSkKPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGRldi0+bWF4X252cXM7 ICsraSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPnZxc1tpXS0+dW1lbSA9IHVtZW07Cj4+ PiDCoCB9Cj4+PiDCoCBFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF9kZXZfcmVzZXRfb3duZXIpOwo+ Pj4gQEAgLTY2MSw3ICs2ODMsNyBAQCB2b2lkIHZob3N0X2Rldl9zdG9wKHN0cnVjdCB2aG9zdF9k ZXYgKmRldikKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgaW50IGk7Cj4+PiAtwqDCoMKgIGZvciAo aSA9IDA7IGkgPCBkZXYtPm52cXM7ICsraSkgewo+Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwg ZGV2LT5tYXhfbnZxczsgKytpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRldi0+dnFz W2ldLT5raWNrICYmIGRldi0+dnFzW2ldLT5oYW5kbGVfa2ljaykgewo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdmhvc3RfcG9sbF9zdG9wKCZkZXYtPnZxc1tpXS0+cG9sbCk7Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2aG9zdF9wb2xsX2ZsdXNoKCZkZXYtPnZxc1tpXS0+ cG9sbCk7Cj4+PiBAQCAtNjkzLDcgKzcxNSw3IEBAIHZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3Ry dWN0IHZob3N0X2RldiAqZGV2KQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCBpbnQgaTsKPj4+IC3C oMKgwqAgZm9yIChpID0gMDsgaSA8IGRldi0+bnZxczsgKytpKSB7Cj4+PiArwqDCoMKgIGZvciAo aSA9IDA7IGkgPCBkZXYtPm1heF9udnFzOyArK2kpIHsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoZGV2LT52cXNbaV0tPmVycm9yX2N0eCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGV2ZW50ZmRfY3R4X3B1dChkZXYtPnZxc1tpXS0+ZXJyb3JfY3R4KTsKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoZGV2LT52cXNbaV0tPmtpY2spCj4+PiBAQCAtNzg3LDcgKzgwOSw3IEBAIHN0 YXRpYyBib29sIG1lbW9yeV9hY2Nlc3Nfb2soc3RydWN0IHZob3N0X2RldiAKPj4+ICpkLCBzdHJ1 Y3Qgdmhvc3RfaW90bGIgKnVtZW0sCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIGludCBpOwo+Pj4g LcKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bnZxczsgKytpKSB7Cj4+PiArwqDCoMKgIGZvciAo aSA9IDA7IGkgPCBkLT5tYXhfbnZxczsgKytpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYm9v bCBvazsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGxvZzsKPj4+IEBAIC05OTksMTQgKzEw MjEsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgdmhvc3RfcHV0X3VzZWRfaWR4KHN0cnVjdCAKPj4+ IHZob3N0X3ZpcnRxdWV1ZSAqdnEpCj4+PiDCoCBzdGF0aWMgdm9pZCB2aG9zdF9kZXZfbG9ja192 cXMoc3RydWN0IHZob3N0X2RldiAqZCkKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgaW50IGkgPSAw Owo+Pj4gLcKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bnZxczsgKytpKQo+Pj4gK8KgwqDCoCBm b3IgKGkgPSAwOyBpIDwgZC0+bWF4X252cXM7ICsraSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBt dXRleF9sb2NrX25lc3RlZCgmZC0+dnFzW2ldLT5tdXRleCwgaSk7Cj4+PiDCoCB9Cj4+PiDCoCBz dGF0aWMgdm9pZCB2aG9zdF9kZXZfdW5sb2NrX3ZxcyhzdHJ1Y3Qgdmhvc3RfZGV2ICpkKQo+Pj4g wqAgewo+Pj4gwqDCoMKgwqDCoCBpbnQgaSA9IDA7Cj4+PiAtwqDCoMKgIGZvciAoaSA9IDA7IGkg PCBkLT5udnFzOyArK2kpCj4+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBkLT5tYXhfbnZxczsg KytpKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmZC0+dnFzW2ldLT5tdXRl eCk7Cj4+PiDCoCB9Cj4+PiBAQCAtMTQ2Miw3ICsxNDg0LDcgQEAgc3RhdGljIGxvbmcgdmhvc3Rf c2V0X21lbW9yeShzdHJ1Y3Qgdmhvc3RfZGV2IAo+Pj4gKmQsIHN0cnVjdCB2aG9zdF9tZW1vcnkg X191c2VyICptKQo+Pj4gwqDCoMKgwqDCoCBkLT51bWVtID0gbmV3dW1lbTsKPj4+IMKgwqDCoMKg wqAgLyogQWxsIG1lbW9yeSBhY2Nlc3NlcyBhcmUgZG9uZSB1bmRlciBzb21lIFZRIG11dGV4LiAq Lwo+Pj4gLcKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bnZxczsgKytpKSB7Cj4+PiArwqDCoMKg IGZvciAoaSA9IDA7IGkgPCBkLT5tYXhfbnZxczsgKytpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgbXV0ZXhfbG9jaygmZC0+dnFzW2ldLT5tdXRleCk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg ZC0+dnFzW2ldLT51bWVtID0gbmV3dW1lbTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF91 bmxvY2soJmQtPnZxc1tpXS0+bXV0ZXgpOwo+Pj4gQEAgLTE1OTAsMTEgKzE2MTIsMTQgQEAgbG9u ZyB2aG9zdF92cmluZ19pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCAKPj4+IHVuc2lnbmVkIGlu dCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZwo+Pj4gwqDCoMKgwqDCoCByID0gZ2V0X3VzZXIoaWR4 LCBpZHhwKTsKPj4+IMKgwqDCoMKgwqAgaWYgKHIgPCAwKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByOwo+Pj4gLcKgwqDCoCBpZiAoaWR4ID49IGQtPm52cXMpCj4+PiAtwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FTk9CVUZTOwo+Pj4gLcKgwqDCoCBpZHggPSBhcnJheV9pbmRleF9ub3Nw ZWMoaWR4LCBkLT5udnFzKTsKPj4+ICvCoMKgwqAgaWR4ID0gYXJyYXlfaW5kZXhfbm9zcGVjKGlk eCwgZC0+bWF4X252cXMpOwo+Pj4gwqDCoMKgwqDCoCB2cSA9IGQtPnZxc1tpZHhdOwo+Pj4gK8Kg wqDCoCBpZiAoIXZxLT5pbml0aWFsaXplZCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIHIgPSB2aG9z dF92cV9pbml0KGQsIGlkeCk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHIpCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+ICvCoMKgwqAgfQo+Pj4gwqDCoMKgwqDCoCBp ZiAoaW9jdGwgPT0gVkhPU1RfU0VUX1ZSSU5HX05VTSB8fAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGlvY3RsID09IFZIT1NUX1NFVF9WUklOR19BRERSKSB7Cj4+PiBAQCAtMTcyNCw3ICsxNzQ5LDcg QEAgaW50IHZob3N0X2luaXRfZGV2aWNlX2lvdGxiKHN0cnVjdCB2aG9zdF9kZXYgCj4+PiAqZCwg Ym9vbCBlbmFibGVkKQo+Pj4gwqDCoMKgwqDCoCBvaW90bGIgPSBkLT5pb3RsYjsKPj4+IMKgwqDC oMKgwqAgZC0+aW90bGIgPSBuaW90bGI7Cj4+PiAtwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBkLT5u dnFzOyArK2kpIHsKPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGQtPm1heF9udnFzOyArK2kp IHsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSA9IGQt PnZxc1tpXTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF9sb2NrKCZ2cS0+bXV0ZXgpOwo+ Pj4gQEAgLTE3NzEsNyArMTc5Niw3IEBAIGxvbmcgdmhvc3RfZGV2X2lvY3RsKHN0cnVjdCB2aG9z dF9kZXYgKmQsIAo+Pj4gdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCkKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSAtRUZBVUxUOwo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gLcKgwqDC oMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBkLT5udnFzOyArK2kpIHsKPj4+ICvCoMKgwqDCoMKg wqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bWF4X252cXM7ICsraSkgewo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7Cj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB2b2lkIF9fdXNlciAqYmFzZSA9ICh2b2lkIF9fdXNlciAqKSh1bnNp Z25lZCBsb25nKXA7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2cSA9IGQtPnZxc1tp XTsKPj4+IEBAIC0xNzk0LDcgKzE4MTksNyBAQCBsb25nIHZob3N0X2Rldl9pb2N0bChzdHJ1Y3Qg dmhvc3RfZGV2ICpkLCAKPj4+IHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3Ap Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoCB9Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3dhcChjdHgsIGQtPmxvZ19jdHgpOwo+Pj4g LcKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBkLT5udnFzOyArK2kpIHsKPj4+ICvCoMKg wqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgZC0+bWF4X252cXM7ICsraSkgewo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmZC0+dnFzW2ldLT5tdXRleCk7Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkLT52cXNbaV0tPmxvZ19jdHggPSBkLT5sb2dfY3R4 Owo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZkLT52cXNbaV0t Pm11dGV4KTsKPj4+IEBAIC0yNjA5LDcgKzI2MzQsNyBAQCB2b2lkIHZob3N0X3NldF9iYWNrZW5k X2ZlYXR1cmVzKHN0cnVjdCAKPj4+IHZob3N0X2RldiAqZGV2LCB1NjQgZmVhdHVyZXMpCj4+PiDC oMKgwqDCoMKgIGludCBpOwo+Pj4gwqDCoMKgwqDCoCBtdXRleF9sb2NrKCZkZXYtPm11dGV4KTsK Pj4+IC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IGRldi0+bnZxczsgKytpKSB7Cj4+PiArwqDCoMKg IGZvciAoaSA9IDA7IGkgPCBkZXYtPm1heF9udnFzOyArK2kpIHsKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoCB2cSA9IGRldi0+dnFzW2ldOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X2xvY2so JnZxLT5tdXRleCk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdnEtPmFja2VkX2JhY2tlbmRfZmVh dHVyZXMgPSBmZWF0dXJlczsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Zob3N0L3Zob3N0Lmgg Yi9kcml2ZXJzL3Zob3N0L3Zob3N0LmgKPj4+IGluZGV4IDlhZDM0YjEuLjk2Nzc4NzAgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmgKPj4+ICsrKyBiL2RyaXZlcnMvdmhvc3Qv dmhvc3QuaAo+Pj4gQEAgLTEzMiw2ICsxMzIsOCBAQCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlIHsK Pj4+IMKgwqDCoMKgwqAgYm9vbCB1c2VyX2JlOwo+Pj4gwqAgI2VuZGlmCj4+PiDCoMKgwqDCoMKg IHUzMiBidXN5bG9vcF90aW1lb3V0Owo+Pj4gKwo+Pj4gK8KgwqDCoCBib29sIGluaXRpYWxpemVk Owo+Pj4gwqAgfTsKPj4+IMKgIHN0cnVjdCB2aG9zdF9tc2dfbm9kZSB7Cj4+PiBAQCAtMTQ4LDYg KzE1MCw3IEBAIHN0cnVjdCB2aG9zdF9kZXYgewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgbXV0ZXgg bXV0ZXg7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKip2cXM7Cj4+PiDC oMKgwqDCoMKgIGludCBudnFzOwo+Pj4gK8KgwqDCoCBpbnQgbWF4X252cXM7Cj4+PiDCoMKgwqDC oMKgIHN0cnVjdCBldmVudGZkX2N0eCAqbG9nX2N0eDsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGxs aXN0X2hlYWQgd29ya19saXN0Owo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKndv cmtlcjsKPj4+IEBAIC0xNjgsOCArMTcxLDggQEAgc3RydWN0IHZob3N0X2RldiB7Cj4+PiDCoCBi b29sIHZob3N0X2V4Y2VlZHNfd2VpZ2h0KHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLCBpbnQg cGt0cywgCj4+PiBpbnQgdG90YWxfbGVuKTsKPj4+IMKgIGludCB2aG9zdF9kZXZfaW5pdChzdHJ1 Y3Qgdmhvc3RfZGV2ICpkZXYsIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgCj4+PiAqKnZxcywKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgbnZxcywgaW50IGlvdl9saW1pdCwgaW50IHdlaWdo dCwgaW50IGJ5dGVfd2VpZ2h0LAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgdXNlX3dv cmtlciwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgbnZxcywgaW50IG1heF9udnFzLCBp bnQgaW92X2xpbWl0LCBpbnQgd2VpZ2h0LAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBi eXRlX3dlaWdodCwgYm9vbCB1c2Vfd29ya2VyLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGludCAoKm1zZ19oYW5kbGVyKShzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsCj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2aG9zdF9pb3RsYl9t c2cgKm1zZykpOwo+Pj4gwqAgbG9uZyB2aG9zdF9kZXZfc2V0X293bmVyKHN0cnVjdCB2aG9zdF9k ZXYgKmRldik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92c29jay5jIGIvZHJpdmVy cy92aG9zdC92c29jay5jCj4+PiBpbmRleCBjYWUwMDgzLi5iY2RmZDU4IDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy92aG9zdC92c29jay5jCj4+PiArKysgYi9kcml2ZXJzL3Zob3N0L3Zzb2NrLmMK Pj4+IEBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3Blbihz dHJ1Y3QgaW5vZGUgCj4+PiAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+Pj4gwqAgewo+Pj4g wqDCoMKgwqDCoCBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICoqdnFzOwo+Pj4gwqDCoMKgwqDCoCBz dHJ1Y3Qgdmhvc3RfdnNvY2sgKnZzb2NrOwo+Pj4gLcKgwqDCoCBpbnQgcmV0Owo+Pj4gK8KgwqDC oCBpbnQgcmV0LCBudnFzOwo+Pj4gwqDCoMKgwqDCoCAvKiBUaGlzIHN0cnVjdCBpcyBsYXJnZSBh bmQgYWxsb2NhdGlvbiBjb3VsZCBmYWlsLCBmYWxsIGJhY2sgCj4+PiB0byB2bWFsbG9jCj4+PiDC oMKgwqDCoMKgwqAgKiBpZiB0aGVyZSBpcyBubyBvdGhlciB3YXkuCj4+PiBAQCAtNjE1LDcgKzYx NSw4IEBAIHN0YXRpYyBpbnQgdmhvc3RfdnNvY2tfZGV2X29wZW4oc3RydWN0IGlub2RlIAo+Pj4g Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPj4+IMKgwqDCoMKgwqAgaWYgKCF2c29jaykKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4+IC3CoMKgwqAgdnFzID0ga21h bGxvY19hcnJheShBUlJBWV9TSVpFKHZzb2NrLT52cXMpLCBzaXplb2YoKnZxcyksIAo+Pj4gR0ZQ X0tFUk5FTCk7Cj4+PiArwqDCoMKgIG52cXMgPSBBUlJBWV9TSVpFKHZzb2NrLT52cXMpOwo+Pj4g K8KgwqDCoCB2cXMgPSBrbWFsbG9jX2FycmF5KG52cXMsIHNpemVvZigqdnFzKSwgR0ZQX0tFUk5F TCk7Cj4+PiDCoMKgwqDCoMKgIGlmICghdnFzKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 ID0gLUVOT01FTTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4+IEBAIC02MzAs OSArNjMxLDkgQEAgc3RhdGljIGludCB2aG9zdF92c29ja19kZXZfb3BlbihzdHJ1Y3QgaW5vZGUg Cj4+PiAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+Pj4gwqDCoMKgwqDCoCB2c29jay0+dnFz W1ZTT0NLX1ZRX1RYXS5oYW5kbGVfa2ljayA9IHZob3N0X3Zzb2NrX2hhbmRsZV90eF9raWNrOwo+ Pj4gwqDCoMKgwqDCoCB2c29jay0+dnFzW1ZTT0NLX1ZRX1JYXS5oYW5kbGVfa2ljayA9IHZob3N0 X3Zzb2NrX2hhbmRsZV9yeF9raWNrOwo+Pj4gLcKgwqDCoCByZXQgPSB2aG9zdF9kZXZfaW5pdCgm dnNvY2stPmRldiwgdnFzLCBBUlJBWV9TSVpFKHZzb2NrLT52cXMpLAo+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFVJT19NQVhJT1YsIFZIT1NUX1ZTT0NLX1BLVF9XRUlHSFQs Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkhPU1RfVlNPQ0tfV0VJR0hU LCB0cnVlLCBOVUxMKTsKPj4+ICvCoMKgwqAgcmV0ID0gdmhvc3RfZGV2X2luaXQoJnZzb2NrLT5k ZXYsIHZxcywgbnZxcywgbnZxcywgVUlPX01BWElPViwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBWSE9TVF9WU09DS19QS1RfV0VJR0hULCBWSE9TVF9WU09DS19XRUlHSFQs IHRydWUsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCk7Cj4+PiDC oMKgwqDCoMKgIGlmIChyZXQpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZGV2X2lu aXQ7Cj4+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f ClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1m b3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9s aXN0aW5mby92aXJ0dWFsaXphdGlvbg==