Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp11034637rwb; Fri, 25 Nov 2022 10:17:23 -0800 (PST) X-Google-Smtp-Source: AA0mqf5G9oIzY/yL6JI7qrNOjEfV8PnBaZ93JxTg2i7OPKK2wB5EGeRewyg6ViHNR+sKlcWUeE3o X-Received: by 2002:a17:90b:2647:b0:219:7a3:2168 with SMTP id pa7-20020a17090b264700b0021907a32168mr6341440pjb.160.1669400243198; Fri, 25 Nov 2022 10:17:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669400243; cv=none; d=google.com; s=arc-20160816; b=MrIvSdwtgK47EbSOf6e3w2CzFaIVRllzGLv/XYh/iiOOsLdn1RSywqkVLPoiy21ICZ d/iniWe5w119jB8IU9MmOAUVL+dkVvRYPknsTzY7FthbmTFlR0e/HDCdj4GP1q2vJmvP 7Fltospt6H0YGN2VHszQEv6cl41gVOb4+mi5fQeH/r6nm1bLHOF8Kou3X9c6qfHQTIwi zoNU/xVi9LbGifrMFdjDovhA3mdUPkZJnxW6VDueP6qfZyY7rOpBAKuw0VTt1lL9ZZbE pBSfQXOBGRYqw1bXwVVum/2FdG7+D+RYWZj3Nr1Nm4hrXCNVaD0LKr2syH9Y1akjsFSj yA/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=ql77uGu/Palxfhx5tOIxZcAYn3XCSN8xPcKIUYuh8t8=; b=ebUhgbEB4V2k9WBnsQI08XDEtD3g1boO+pqhukH76zWlbqZlAymbQrhdHObr1bUHlI 1e99IDkl+JgUrBp/BBRIiYUps7pGczMmIw2SexqKVHhKMzk39KkS6WDJwPuG2pmTzgAr 3Hc8lpTyQ04Loed5gyZDX3UVhELfsFndkohFaiMcQqMkJyYgnNMZimwbQNV/IqjRwKCL QDw7UJRPX/qHa/ziDgAINwA3o84l3GsgFffFgCmzCR2r2f46FfmrFQM5tzYw9vcnpqpU jnzlwnrWzRmEjE6SDO1LHNPxHTfWNQompqEtr+SLVkY63S7E5YV+lLr43xRpNRt+ckTa 6ZWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=FDBiDEeO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z3-20020aa78883000000b0056cac533dfdsi4978318pfe.261.2022.11.25.10.17.12; Fri, 25 Nov 2022 10:17:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=FDBiDEeO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230026AbiKYRPP (ORCPT + 85 others); Fri, 25 Nov 2022 12:15:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229487AbiKYRPM (ORCPT ); Fri, 25 Nov 2022 12:15:12 -0500 Received: from mx.sberdevices.ru (mx.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E702651325; Fri, 25 Nov 2022 09:15:10 -0800 (PST) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 418EA5FD0B; Fri, 25 Nov 2022 20:15:09 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1669396509; bh=ql77uGu/Palxfhx5tOIxZcAYn3XCSN8xPcKIUYuh8t8=; h=From:To:Subject:Date:Message-ID:Content-Type:MIME-Version; b=FDBiDEeOS2k6hDA1qGlNX/3DzsK8GoWCLEst8zAU5Krmzwg0kabLhIU7CYaIgugZM uow4bkx6KB4iQmhrTUS2Uwp4aEWipuLNMnw2Q+CyEEbxiVI+7R3EqAhlpwc2p47/6k jjrzisgIXUghk7rvpDZ4UaFLfhPZWFvjerWzY66Bt0PJkZiw9cGTGtjNF2ldb4o0Ql jGX4pCa55Xb66sWfxdwCXR/5HQUV0IRCPhzeJYRhMWZdkPpXTuQ8e7ttf92hwjT7U8 rvSD5sclqD3o2sNqX0NHVrrm7brcip/OObd+zXkHXDipI8jM+8LQVwzHMPpmUPb0h4 cKyGmbTVmf+4w== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Fri, 25 Nov 2022 20:15:08 +0300 (MSK) From: Arseniy Krasnov To: Stefano Garzarella , "David S. Miller" , "edumazet@google.com" , "Jakub Kicinski" , Paolo Abeni , "kys@microsoft.com" , "haiyangz@microsoft.com" , "wei.liu@kernel.org" , "Dexuan Cui" , Bryan Tan , Vishnu Dasa , Arseniy Krasnov , "Krasnov Arseniy" , Bobby Eshleman , Bobby Eshleman CC: "linux-kernel@vger.kernel.org" , "netdev@vger.kernel.org" , "virtualization@lists.linux-foundation.org" , "linux-hyperv@vger.kernel.org" , kernel Subject: [RFC PATCH v2 6/6] test/vsock: vsock_perf utility Thread-Topic: [RFC PATCH v2 6/6] test/vsock: vsock_perf utility Thread-Index: AQHZAPF3e7KytiwPOk+Ft+TrN7czrQ== Date: Fri, 25 Nov 2022 17:15:08 +0000 Message-ID: <93a19249-e3f3-c1f8-c58a-0f549b94f1b5@sberdevices.ru> In-Reply-To: <9d96f6c6-1d4f-8197-b3bc-8957124c8933@sberdevices.ru> Accept-Language: en-US, ru-RU Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.1.12] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2022/11/25 14:59:00 #20610704 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBhZGRzIHV0aWxpdHkgdG8gY2hlY2sgdnNvY2sgcngvdHggcGVyZm9ybWFuY2UuDQoNClVz YWdlIGFzIHNlbmRlcjoNCi4vdnNvY2tfcGVyZiAtcCA8cG9ydD4gLW0gPGJ5dGVzIHRvIHNlbmQp DQpVc2FnZSBhcyByZWNlaXZlcjoNCi4vdnNvY2tfcGVyZiAtYyA8Y2lkPiAtcCA8cG9ydD4gLXIg PFNPX1JDVkxPV0FUPg0KDQpTaWduZWQtb2ZmLWJ5OiBBcnNlbml5IEtyYXNub3YgPEFWS3Jhc25v dkBzYmVyZGV2aWNlcy5ydT4NCi0tLQ0KIHRvb2xzL3Rlc3RpbmcvdnNvY2svTWFrZWZpbGUgICAg IHwgICAxICsNCiB0b29scy90ZXN0aW5nL3Zzb2NrL1JFQURNRSAgICAgICB8ICAzNCArKysNCiB0 b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3BlcmYuYyB8IDQwMCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQogMyBmaWxlcyBjaGFuZ2VkLCA0MzUgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3BlcmYuYw0KDQpkaWZmIC0t Z2l0IGEvdG9vbHMvdGVzdGluZy92c29jay9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2sv TWFrZWZpbGUNCmluZGV4IGY4MjkzYzY5MTBjOS4uZDM2ZmRkNTlmZTJlIDEwMDY0NA0KLS0tIGEv dG9vbHMvdGVzdGluZy92c29jay9NYWtlZmlsZQ0KKysrIGIvdG9vbHMvdGVzdGluZy92c29jay9N YWtlZmlsZQ0KQEAgLTMsNiArMyw3IEBAIGFsbDogdGVzdA0KIHRlc3Q6IHZzb2NrX3Rlc3QgdnNv Y2tfZGlhZ190ZXN0DQogdnNvY2tfdGVzdDogdnNvY2tfdGVzdC5vIHRpbWVvdXQubyBjb250cm9s Lm8gdXRpbC5vDQogdnNvY2tfZGlhZ190ZXN0OiB2c29ja19kaWFnX3Rlc3QubyB0aW1lb3V0Lm8g Y29udHJvbC5vIHV0aWwubw0KK3Zzb2NrX3BlcmY6IHZzb2NrX3BlcmYubw0KIA0KIENGTEFHUyAr PSAtZyAtTzIgLVdlcnJvciAtV2FsbCAtSS4gLUkuLi8uLi9pbmNsdWRlIC1JLi4vLi4vLi4vdXNy L2luY2x1ZGUgLVduby1wb2ludGVyLXNpZ24gLWZuby1zdHJpY3Qtb3ZlcmZsb3cgLWZuby1zdHJp Y3QtYWxpYXNpbmcgLWZuby1jb21tb24gLU1NRCAtVV9GT1JUSUZZX1NPVVJDRSAtRF9HTlVfU09V UkNFDQogLlBIT05ZOiBhbGwgdGVzdCBjbGVhbg0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcv dnNvY2svUkVBRE1FIGIvdG9vbHMvdGVzdGluZy92c29jay9SRUFETUUNCmluZGV4IDRkNTA0NWU3 ZDJjMy4uZGJlYmExZDYyMDE2IDEwMDY0NA0KLS0tIGEvdG9vbHMvdGVzdGluZy92c29jay9SRUFE TUUNCisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svUkVBRE1FDQpAQCAtMzUsMyArMzUsMzcgQEAg SW52b2tlIHRlc3QgYmluYXJpZXMgaW4gYm90aCBkaXJlY3Rpb25zIGFzIGZvbGxvd3M6DQogICAg ICAgICAgICAgICAgICAgICAgICAtLWNvbnRyb2wtcG9ydD0kR1VFU1RfSVAgXA0KICAgICAgICAg ICAgICAgICAgICAgICAgLS1jb250cm9sLXBvcnQ9MTIzNCBcDQogICAgICAgICAgICAgICAgICAg ICAgICAtLXBlZXItY2lkPTMNCisNCit2c29ja19wZXJmIHV0aWxpdHkNCistLS0tLS0tLS0tLS0t LS0tLS0tDQorJ3Zzb2NrX3BlcmYnIGlzIHNpbXBsZSB0b29sIHRvIG1lYXN1cmUgdnNvY2sgcGVy Zm9ybWFuY2UuIEl0IHdvcmtzIGluDQorc2VuZGVyL3JlY2VpdmVyIG1vZGVzOiBzZW5kZXIgd2Fp dHMgZm9yIGNvbm5lY3Rpb24gYXQgc3BlY2lmaWVkIHBvcnQsDQorYW5kIGFmdGVyIGFjY2VwdCwg c3RhcnRzIGRhdGEgdHJhbnNtaXNzaW9uIHRvIHJlY2VpdmVyLiBBZnRlciBkYXRhDQorcHJvY2Vz c2luZyBpcyBkb25lLCBpdCBwcmludHMgc2V2ZXJhbCBtZXRyaWNzKHNlZSBiZWxvdykuDQorDQor VXNhZ2U6DQorIyBydW4gYXMgc2VuZGVyDQorIyBsaXN0ZW4gcG9ydCAxMjM0LCB0eCBidWZmZXIg c2l6ZSBpcyAxTUIsIHNlbmQgb2YgZGF0YSAxRw0KKy4vdnNvY2tfcGVyZiAtcyAtcCAxMjM0IC1i IDFNQiAtbSAxRw0KKw0KK091dHB1dDoNCit0eCBwZXJmb3JtYW5jZTogQSBHYi9zDQorDQorT3V0 cHV0IGV4cGxhbmF0aW9uOg0KK0EgaXMgY2FsY3VsYXRlZCBhcyAibnVtYmVyIG9mIGJ5dGVzIHRv IHNlbmQiIC8gInRpbWUgaW4gdHggbG9vcCINCisNCisjIHJ1biBhcyByZWNlaXZlcg0KKyMgY29u bmVjdCB0byBDSUQgMiwgcG9ydCAxMjM0LCByeCBidWZmZXIgc2l6ZSBpcyAxTUIsIHBlZXIgYnVm IGlzIDFHLCBTT19SQ1ZMT1dBVCBpcyA2NTUzNg0KKy4vdnNvY2tfcGVyZiAtYyAyIC1wIDEyMzQg LWIgMU1CIC12IDFHIC1yIDY1NTM2DQorDQorT3V0cHV0Og0KK3J4IHBlcmZvcm1hbmNlOiBBIEdi L3MNCit0b3RhbCBpbiAncmVhZCgpJzogQiBzZWMNCitQT0xMSU4gd2FrZXVwczogQw0KK2F2ZXJh Z2UgaW4gJ3JlYWQoKSc6IEQgbnMNCisNCitPdXRwdXQgZXhwbGFuYXRpb246DQorQSBpcyBjYWxj dWxhdGVkIGFzICJudW1iZXIgb2YgcmVjZWl2ZWQgYnl0ZXMiIC8gInRpbWUgaW4gcnggbG9vcCIu DQorQiBpcyB0aW1lLCBzcGVudCBpbiAncmVhZCgpJyBzeXN0ZW0gY2FsbChleGNsdWRpbmcgJ3Bv bGwoKScpDQorQyBpcyBudW1iZXIgb2YgJ3BvbGwoKScgd2FrZSB1cHMgd2l0aCBQT0xMSU4gYml0 IHNldC4NCitEIGlzIEIgLyBDLCBlLmcuIGF2ZXJhZ2UgYW1vdW50IG9mIHRpbWUsIHNwZW50IGlu IHNpbmdsZSAncmVhZCgpJy4NCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2Nr X3BlcmYuYyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfcGVyZi5jDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5iY2EyMDI3ZGU1MmQNCi0tLSAvZGV2L251bGwN CisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfcGVyZi5jDQpAQCAtMCwwICsxLDQwMCBA QA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCisvKg0KKyAqIHZz b2NrX3BlcmYgLSBiZW5jaG1hcmsgdXRpbGl0eSBmb3IgdnNvY2suDQorICoNCisgKiBDb3B5cmln aHQgKEMpIDIwMjIgU2JlckRldmljZXMuDQorICoNCisgKiBBdXRob3I6IEFyc2VuaXkgS3Jhc25v diA8QVZLcmFzbm92QHNiZXJkZXZpY2VzLnJ1Pg0KKyAqLw0KKyNpbmNsdWRlIDxnZXRvcHQuaD4N CisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0 ZGJvb2wuaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUgPGVycm5vLmg+DQorI2lu Y2x1ZGUgPHVuaXN0ZC5oPg0KKyNpbmNsdWRlIDx0aW1lLmg+DQorI2luY2x1ZGUgPHN5cy9tbWFu Lmg+DQorI2luY2x1ZGUgPHN0ZGludC5oPg0KKyNpbmNsdWRlIDxwb2xsLmg+DQorI2luY2x1ZGUg PHN5cy9zb2NrZXQuaD4NCisjaW5jbHVkZSA8bGludXgvdm1fc29ja2V0cy5oPg0KKw0KKyNkZWZp bmUgREVGQVVMVF9CVUZfU0laRV9CWVRFUwkoMTI4ICogMTAyNCkNCisjZGVmaW5lIERFRkFVTFRf VE9fU0VORF9CWVRFUwkoNjQgKiAxMDI0KQ0KKyNkZWZpbmUgREVGQVVMVF9WU09DS19CVUZfQllU RVMgKDI1NiAqIDEwMjQpDQorI2RlZmluZSBERUZBVUxUX1JDVkxPV0FUX0JZVEVTCTENCisjZGVm aW5lIERFRkFVTFRfUE9SVAkJMTIzNA0KKyNkZWZpbmUgREVGQVVMVF9DSUQJCTINCisNCisjZGVm aW5lIEJZVEVTX1BFUl9HQgkJKDEwMjQgKiAxMDI0ICogMTAyNFVMTCkNCisjZGVmaW5lIE5TRUNf UEVSX1NFQwkJKDEwMDAwMDAwMDBVTEwpDQorDQorc3RhdGljIHVuc2lnbmVkIGludCBwb3J0ID0g REVGQVVMVF9QT1JUOw0KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGJ1Zl9zaXplX2J5dGVzID0gREVG QVVMVF9CVUZfU0laRV9CWVRFUzsNCitzdGF0aWMgdW5zaWduZWQgbG9uZyB2c29ja19idWZfYnl0 ZXMgPSBERUZBVUxUX1ZTT0NLX0JVRl9CWVRFUzsNCisNCitzdGF0aWMgaW5saW5lIHRpbWVfdCBj dXJyZW50X25zZWModm9pZCkNCit7DQorCXN0cnVjdCB0aW1lc3BlYyB0czsNCisNCisJaWYgKGNs b2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cykpIHsNCisJCXBlcnJvcigiY2xvY2tfZ2V0 dGltZSIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCXJldHVybiAodHMudHZf c2VjICogTlNFQ19QRVJfU0VDKSArIHRzLnR2X25zZWM7DQorfQ0KKw0KKy8qIEZyb20gbGliL2Nt ZGxpbmUuYy4gKi8NCitzdGF0aWMgdW5zaWduZWQgbG9uZyBtZW1wYXJzZShjb25zdCBjaGFyICpw dHIpDQorew0KKwljaGFyICplbmRwdHI7DQorDQorCXVuc2lnbmVkIGxvbmcgbG9uZyByZXQgPSBz dHJ0b3VsbChwdHIsICZlbmRwdHIsIDApOw0KKw0KKwlzd2l0Y2ggKCplbmRwdHIpIHsNCisJY2Fz ZSAnRSc6DQorCWNhc2UgJ2UnOg0KKwkJcmV0IDw8PSAxMDsNCisJY2FzZSAnUCc6DQorCWNhc2Ug J3AnOg0KKwkJcmV0IDw8PSAxMDsNCisJY2FzZSAnVCc6DQorCWNhc2UgJ3QnOg0KKwkJcmV0IDw8 PSAxMDsNCisJY2FzZSAnRyc6DQorCWNhc2UgJ2cnOg0KKwkJcmV0IDw8PSAxMDsNCisJY2FzZSAn TSc6DQorCWNhc2UgJ20nOg0KKwkJcmV0IDw8PSAxMDsNCisJY2FzZSAnSyc6DQorCWNhc2UgJ2sn Og0KKwkJcmV0IDw8PSAxMDsNCisJCWVuZHB0cisrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQor CX0NCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIHZvaWQgdnNvY2tfaW5jcmVhc2Vf YnVmX3NpemUoaW50IGZkKQ0KK3sNCisJaWYgKHNldHNvY2tvcHQoZmQsIEFGX1ZTT0NLLCBTT19W TV9TT0NLRVRTX0JVRkZFUl9NQVhfU0laRSwNCisJCSAgICAgICAmdnNvY2tfYnVmX2J5dGVzLCBz aXplb2YodnNvY2tfYnVmX2J5dGVzKSkpIHsNCisJCXBlcnJvcigic2V0c29ja29wdCIpOw0KKwkJ ZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCWlmIChzZXRzb2Nrb3B0KGZkLCBBRl9WU09D SywgU09fVk1fU09DS0VUU19CVUZGRVJfU0laRSwNCisJCSAgICAgICAmdnNvY2tfYnVmX2J5dGVz LCBzaXplb2YodnNvY2tfYnVmX2J5dGVzKSkpIHsNCisJCXBlcnJvcigic2V0c29ja29wdCIpOw0K KwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyBpbnQgdnNvY2tfY29u bmVjdCh1bnNpZ25lZCBpbnQgY2lkLCB1bnNpZ25lZCBpbnQgcG9ydCkNCit7DQorCXVuaW9uIHsN CisJCXN0cnVjdCBzb2NrYWRkciBzYTsNCisJCXN0cnVjdCBzb2NrYWRkcl92bSBzdm07DQorCX0g YWRkciA9IHsNCisJCS5zdm0gPSB7DQorCQkJLnN2bV9mYW1pbHkgPSBBRl9WU09DSywNCisJCQku c3ZtX3BvcnQgPSBwb3J0LA0KKwkJCS5zdm1fY2lkID0gY2lkLA0KKwkJfSwNCisJfTsNCisJaW50 IGZkOw0KKw0KKwlmZCA9IHNvY2tldChBRl9WU09DSywgU09DS19TVFJFQU0sIDApOw0KKw0KKwlp ZiAoZmQgPCAwKQ0KKwkJcmV0dXJuIC0xOw0KKw0KKwl2c29ja19pbmNyZWFzZV9idWZfc2l6ZShm ZCk7DQorDQorCWlmIChjb25uZWN0KGZkLCAmYWRkci5zYSwgc2l6ZW9mKGFkZHIuc3ZtKSkgPCAw KSB7DQorCQljbG9zZShmZCk7DQorCQlyZXR1cm4gLTE7DQorCX0NCisNCisJcmV0dXJuIGZkOw0K K30NCisNCitzdGF0aWMgZmxvYXQgZ2V0X2dicHModW5zaWduZWQgbG9uZyBieXRlcywgdGltZV90 IG5zX2RlbHRhKQ0KK3sNCisJcmV0dXJuICgoZmxvYXQpYnl0ZXMgLyBCWVRFU19QRVJfR0IpIC8N CisJICAgICAgICgoZmxvYXQpbnNfZGVsdGEgLyBOU0VDX1BFUl9TRUMpOw0KK30NCisNCitzdGF0 aWMgdm9pZCBydW5fc2VuZGVyKHVuc2lnbmVkIGxvbmcgdG9fc2VuZF9ieXRlcykNCit7DQorCXRp bWVfdCB0eF9iZWdpbl9uczsNCisJc2l6ZV90IHRvdGFsX3NlbmQ7DQorCWludCBjbGllbnRfZmQ7 DQorCWNoYXIgKmRhdGE7DQorCWludCBmZDsNCisJdW5pb24gew0KKwkJc3RydWN0IHNvY2thZGRy IHNhOw0KKwkJc3RydWN0IHNvY2thZGRyX3ZtIHN2bTsNCisJfSBhZGRyID0gew0KKwkJLnN2bSA9 IHsNCisJCQkuc3ZtX2ZhbWlseSA9IEFGX1ZTT0NLLA0KKwkJCS5zdm1fcG9ydCA9IHBvcnQsDQor CQkJLnN2bV9jaWQgPSBWTUFERFJfQ0lEX0FOWSwNCisJCX0sDQorCX07DQorCXVuaW9uIHsNCisJ CXN0cnVjdCBzb2NrYWRkciBzYTsNCisJCXN0cnVjdCBzb2NrYWRkcl92bSBzdm07DQorCX0gY2xp ZW50YWRkcjsNCisNCisJc29ja2xlbl90IGNsaWVudGFkZHJfbGVuID0gc2l6ZW9mKGNsaWVudGFk ZHIuc3ZtKTsNCisNCisJcHJpbnRmKCJSdW4gYXMgc2VuZGVyXG4iKTsNCisJcHJpbnRmKCJMaXN0 ZW4gcG9ydCAldVxuIiwgcG9ydCk7DQorCXByaW50ZigiU2VuZCAlbHUgYnl0ZXNcbiIsIHRvX3Nl bmRfYnl0ZXMpOw0KKwlwcmludGYoIlRYIGJ1ZmZlciAlbHUgYnl0ZXNcbiIsIGJ1Zl9zaXplX2J5 dGVzKTsNCisJcHJpbnRmKCJQZWVyIGJ1ZmZlciAlbHUgYnl0ZXNcbiIsIHZzb2NrX2J1Zl9ieXRl cyk7DQorDQorCWZkID0gc29ja2V0KEFGX1ZTT0NLLCBTT0NLX1NUUkVBTSwgMCk7DQorDQorCWlm IChmZCA8IDApIHsNCisJCXBlcnJvcigic29ja2V0Iik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7 DQorCX0NCisNCisJaWYgKGJpbmQoZmQsICZhZGRyLnNhLCBzaXplb2YoYWRkci5zdm0pKSA8IDAp IHsNCisJCXBlcnJvcigiYmluZCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQor CWlmIChsaXN0ZW4oZmQsIDEpIDwgMCkgew0KKwkJcGVycm9yKCJsaXN0ZW4iKTsNCisJCWV4aXQo RVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwljbGllbnRfZmQgPSBhY2NlcHQoZmQsICZjbGllbnRh ZGRyLnNhLCAmY2xpZW50YWRkcl9sZW4pOw0KKw0KKwlpZiAoY2xpZW50X2ZkIDwgMCkgew0KKwkJ cGVycm9yKCJhY2NlcHQiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwl2c29j a19pbmNyZWFzZV9idWZfc2l6ZShjbGllbnRfZmQpOw0KKw0KKwlkYXRhID0gbWFsbG9jKGJ1Zl9z aXplX2J5dGVzKTsNCisNCisJaWYgKCFkYXRhKSB7DQorCQlwcmludGYoIm1hbGxvYyBmYWlsZWRc biIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCW1lbXNldChkYXRhLCAwLCBi dWZfc2l6ZV9ieXRlcyk7DQorCXRvdGFsX3NlbmQgPSAwOw0KKwl0eF9iZWdpbl9ucyA9IGN1cnJl bnRfbnNlYygpOw0KKw0KKwl3aGlsZSAodG90YWxfc2VuZCA8IHRvX3NlbmRfYnl0ZXMpIHsNCisJ CXNzaXplX3Qgc2VudDsNCisNCisJCXNlbnQgPSB3cml0ZShjbGllbnRfZmQsIGRhdGEsIGJ1Zl9z aXplX2J5dGVzKTsNCisNCisJCWlmIChzZW50IDw9IDApIHsNCisJCQlwZXJyb3IoIndyaXRlIik7 DQorCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwkJfQ0KKw0KKwkJdG90YWxfc2VuZCArPSBzZW50 Ow0KKwl9DQorDQorCXByaW50ZigidHggcGVyZm9ybWFuY2U6ICVmIEdiL3NcbiIsDQorCSAgICAg ICBnZXRfZ2Jwcyh0b3RhbF9zZW5kLCBjdXJyZW50X25zZWMoKSAtIHR4X2JlZ2luX25zKSk7DQor DQorCWNsb3NlKGNsaWVudF9mZCk7DQorCWNsb3NlKGZkKTsNCisNCisJZnJlZShkYXRhKTsNCit9 DQorDQorc3RhdGljIHZvaWQgcnVuX3JlY2VpdmVyKGludCBwZWVyX2NpZCwgdW5zaWduZWQgbG9u ZyByY3Zsb3dhdF9ieXRlcykNCit7DQorCXVuc2lnbmVkIGludCByZWFkX2NudDsNCisJdGltZV90 IHJ4X2JlZ2luX25zOw0KKwl0aW1lX3QgaW5fcmVhZF9uczsNCisJc2l6ZV90IHRvdGFsX3JlY3Y7 DQorCXZvaWQgKmRhdGE7DQorCWludCBmZDsNCisNCisJcHJpbnRmKCJSdW4gYXMgcmVjZWl2ZXJc biIpOw0KKwlwcmludGYoIkNvbm5lY3QgdG8gJWk6JXVcbiIsIHBlZXJfY2lkLCBwb3J0KTsNCisJ cHJpbnRmKCJSWCBidWZmZXIgJWx1IGJ5dGVzXG4iLCBidWZfc2l6ZV9ieXRlcyk7DQorCXByaW50 ZigiUGVlciBidWZmZXIgJWx1IGJ5dGVzXG4iLCB2c29ja19idWZfYnl0ZXMpOw0KKwlwcmludGYo IlNPX1JDVkxPV0FUICVsdSBieXRlc1xuIiwgcmN2bG93YXRfYnl0ZXMpOw0KKw0KKwlmZCA9IHZz b2NrX2Nvbm5lY3QocGVlcl9jaWQsIHBvcnQpOw0KKw0KKwlpZiAoZmQgPCAwKSB7DQorCQlwZXJy b3IoInNvY2tldCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCWlmIChzZXRz b2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19SQ1ZMT1dBVCwNCisJCSAgICAgICAmcmN2bG93YXRf Ynl0ZXMsDQorCQkgICAgICAgc2l6ZW9mKHJjdmxvd2F0X2J5dGVzKSkpIHsNCisJCXBlcnJvcigi c2V0c29ja29wdCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCWRhdGEgPSBt bWFwKE5VTEwsIGJ1Zl9zaXplX2J5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLA0KKwkJICAg IE1BUF9BTk9OWU1PVVMgfCBNQVBfUFJJVkFURSB8IE1BUF9QT1BVTEFURSwgLTEsIDApOw0KKw0K KwlpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKSB7DQorCQlwZXJyb3IoIm1tYXAiKTsNCisJCWV4aXQo RVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlyZWFkX2NudCA9IDA7DQorCWluX3JlYWRfbnMgPSAw Ow0KKwl0b3RhbF9yZWN2ID0gMDsNCisJcnhfYmVnaW5fbnMgPSBjdXJyZW50X25zZWMoKTsNCisN CisJd2hpbGUgKDEpIHsNCisJCXN0cnVjdCBwb2xsZmQgZmRzID0geyAwIH07DQorDQorCQlmZHMu ZmQgPSBmZDsNCisJCWZkcy5ldmVudHMgPSBQT0xMSU4gfCBQT0xMRVJSIHwgUE9MTEhVUCB8DQor CQkJICAgICBQT0xMUkRIVVAgfCBQT0xMTlZBTDsNCisNCisJCWlmIChwb2xsKCZmZHMsIDEsIC0x KSA8IDApIHsNCisJCQlwZXJyb3IoInBvbGwiKTsNCisJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQor CQl9DQorDQorCQlpZiAoZmRzLnJldmVudHMgJiBQT0xMRVJSKSB7DQorCQkJcHJpbnRmKCIncG9s bCgpJyBlcnJvclxuIik7DQorCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwkJfQ0KKw0KKwkJaWYg KGZkcy5yZXZlbnRzICYgUE9MTElOKSB7DQorCQkJc3NpemVfdCBieXRlc19yZWFkOw0KKwkJCXRp bWVfdCB0Ow0KKw0KKwkJCXQgPSBjdXJyZW50X25zZWMoKTsNCisJCQlieXRlc19yZWFkID0gcmVh ZChmZCwgZGF0YSwgYnVmX3NpemVfYnl0ZXMpOw0KKwkJCWluX3JlYWRfbnMgKz0gKGN1cnJlbnRf bnNlYygpIC0gdCk7DQorCQkJcmVhZF9jbnQrKzsNCisNCisJCQlpZiAoIWJ5dGVzX3JlYWQpDQor CQkJCWJyZWFrOw0KKw0KKwkJCWlmIChieXRlc19yZWFkIDwgMCkgew0KKwkJCQlwZXJyb3IoInJl Y3YiKTsNCisJCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwkJCX0NCisNCisJCQl0b3RhbF9yZWN2 ICs9IGJ5dGVzX3JlYWQ7DQorCQl9DQorDQorCQlpZiAoZmRzLnJldmVudHMgJiAoUE9MTEhVUCB8 IFBPTExSREhVUCkpDQorCQkJYnJlYWs7DQorCX0NCisNCisJcHJpbnRmKCJyeCBwZXJmb3JtYW5j ZTogJWYgR2Ivc1xuIiwNCisJICAgICAgIGdldF9nYnBzKHRvdGFsX3JlY3YsIGN1cnJlbnRfbnNl YygpIC0gcnhfYmVnaW5fbnMpKTsNCisJcHJpbnRmKCJ0b3RhbCBpbiAncmVhZCgpJzogJWYgc2Vj XG4iLCAoZmxvYXQpaW5fcmVhZF9ucyAvIE5TRUNfUEVSX1NFQyk7DQorCXByaW50ZigiUE9MTElO IHdha2V1cHM6ICVpXG4iLCByZWFkX2NudCk7DQorCXByaW50ZigiYXZlcmFnZSBpbiAncmVhZCgp JzogJWYgbnNcbiIsIChmbG9hdClpbl9yZWFkX25zIC8gcmVhZF9jbnQpOw0KKw0KKwltdW5tYXAo ZGF0YSwgYnVmX3NpemVfYnl0ZXMpOw0KKwljbG9zZShmZCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lk IHVzYWdlKHZvaWQpDQorew0KKwlwcmludGYoIkhlbHA6XG4iDQorCSAgICAgICAiXG4iDQorCSAg ICAgICAiVGhpcyBpcyBiZW5jaG1hcmtpbmcgdXRpbGl0eSwgdG8gdGVzdCB2c29jayBwZXJmb3Jt YW5jZS5cbiINCisJICAgICAgICJJdCBydW5zIGluIHR3byBtb2Rlczogc2VuZGVyIG9yIHJlY2Vp dmVyLiBJbiBzZW5kZXIgbW9kZSwgaXQgd2FpdHNcbiINCisJICAgICAgICJjb25uZWN0aW9uIGZy b20gcmVjZWl2ZXIsIGFuZCB3aGVuIGVzdGFibGlzaGVkLCBzZW5kZXIgc3RhcnRzIGRhdGFcbiIN CisJICAgICAgICJ0cmFuc21pc3Npb24uXG4iDQorCSAgICAgICAiXG4iDQorCSAgICAgICAiT3B0 aW9uczpcbiINCisJICAgICAgICIgIC1oCQkJCVRoaXMgaGVscCBtZXNzYWdlXG4iDQorCSAgICAg ICAiICAtcwkJCQlTZW5kZXIgbW9kZShyZWNlaXZlciBkZWZhdWx0KVxuIg0KKwkgICAgICAgIiAg LXAgPHBvcnQ+CQkJUG9ydCAoJWQpXG4iDQorCSAgICAgICAiICAtYyA8Y2lkPgkJCUNJRCBvZiB0 aGUgcGVlciAoJWQpXG4iDQorCSAgICAgICAiICAtbSA8Ynl0ZXMgdG8gc2VuZD4JCUJ5dGVzIHRv IHNlbmQgKCVkKVxuIg0KKwkgICAgICAgIiAgLWIgPGJ1ZmZlciBzaXplPgkJUngvVHggYnVmZmVy IHNpemUgKCVkKS4gSW4gc2VuZGVyIG1vZGVcbiINCisJICAgICAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGl0IGlzIHNpemUgb2YgYnVmZmVyIHBhc3NlZCB0byAnd3JpdGUoKScu XG4iDQorCSAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiByZWNlaXZl ciBtb2RlIGl0IGlzIHNpemUgb2YgYnVmZmVyIHBhc3NlZFxuIg0KKwkgICAgICAgIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8gJ3JlYWQoKScuXG4iDQorCSAgICAgICAiICAtdiA8 cGVlciBidWZmZXIgc2l6ZT4JCVBlZXIgYnVmZmVyIHNpemUgKCVkKVxuIg0KKwkgICAgICAgIiAg LXIgPFNPX1JDVkxPV0FUPgkJU09fUkNWTE9XQVQgKCVkKVxuIg0KKwkgICAgICAgIlxuIiwgREVG QVVMVF9QT1JULCBERUZBVUxUX0NJRCwgREVGQVVMVF9UT19TRU5EX0JZVEVTLA0KKwkgICAgICAg REVGQVVMVF9CVUZfU0laRV9CWVRFUywgREVGQVVMVF9WU09DS19CVUZfQllURVMsDQorCSAgICAg ICBERUZBVUxUX1JDVkxPV0FUX0JZVEVTKTsNCisJZXhpdChFWElUX0ZBSUxVUkUpOw0KK30NCisN CitzdGF0aWMgbG9uZyBzdHJ0b2x4KGNvbnN0IGNoYXIgKmFyZykNCit7DQorCWxvbmcgdmFsdWU7 DQorCWNoYXIgKmVuZDsNCisNCisJdmFsdWUgPSBzdHJ0b2woYXJnLCAmZW5kLCAxMCk7DQorDQor CWlmIChlbmQgIT0gYXJnICsgc3RybGVuKGFyZykpDQorCQl1c2FnZSgpOw0KKw0KKwlyZXR1cm4g dmFsdWU7DQorfQ0KKw0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCit7DQorCXVu c2lnbmVkIGxvbmcgdG9fc2VuZF9ieXRlcyA9IERFRkFVTFRfVE9fU0VORF9CWVRFUzsNCisJdW5z aWduZWQgbG9uZyByY3Zsb3dhdF9ieXRlcyA9IERFRkFVTFRfUkNWTE9XQVRfQllURVM7DQorCWJv b2wgcmVjZWl2ZXJfbW9kZSA9IHRydWU7DQorCWludCBwZWVyX2NpZCA9IERFRkFVTFRfQ0lEOw0K KwlpbnQgYzsNCisNCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJ2OnI6YzpwOm06 YjpzaCIpKSAhPSAtMSkgew0KKwkJc3dpdGNoIChjKSB7DQorCQljYXNlICd2JzogLyogUGVlciBi dWZmZXIgc2l6ZS4gKi8NCisJCQl2c29ja19idWZfYnl0ZXMgPSBtZW1wYXJzZShvcHRhcmcpOw0K KwkJCWJyZWFrOw0KKwkJY2FzZSAncic6IC8qIFNPX1JDVkxPV0FUIHZhbHVlLiAqLw0KKwkJCXJj dmxvd2F0X2J5dGVzID0gbWVtcGFyc2Uob3B0YXJnKTsNCisJCQlicmVhazsNCisJCWNhc2UgJ2Mn OiAvKiBDSUQgdG8gY29ubmVjdCB0by4gKi8NCisJCQlwZWVyX2NpZCA9IHN0cnRvbHgob3B0YXJn KTsNCisJCQlicmVhazsNCisJCWNhc2UgJ3AnOiAvKiBQb3J0IHRvIGNvbm5lY3QgdG8uICovDQor CQkJcG9ydCA9IHN0cnRvbHgob3B0YXJnKTsNCisJCQlicmVhazsNCisJCWNhc2UgJ20nOiAvKiBC eXRlcyB0byBzZW5kLiAqLw0KKwkJCXRvX3NlbmRfYnl0ZXMgPSBtZW1wYXJzZShvcHRhcmcpOw0K KwkJCWJyZWFrOw0KKwkJY2FzZSAnYic6IC8qIFNpemUgb2YgcngvdHggYnVmZmVyLiAqLw0KKwkJ CWJ1Zl9zaXplX2J5dGVzID0gbWVtcGFyc2Uob3B0YXJnKTsNCisJCQlicmVhazsNCisJCWNhc2Ug J3MnOiAvKiBTZW5kZXIgbW9kZS4gKi8NCisJCQlyZWNlaXZlcl9tb2RlID0gZmFsc2U7DQorCQkJ YnJlYWs7DQorCQljYXNlICdoJzogLyogSGVscC4gKi8NCisJCQl1c2FnZSgpOw0KKwkJCWJyZWFr Ow0KKwkJZGVmYXVsdDoNCisJCQl1c2FnZSgpOw0KKwkJfQ0KKwl9DQorDQorCWlmIChyZWNlaXZl cl9tb2RlKQ0KKwkJcnVuX3JlY2VpdmVyKHBlZXJfY2lkLCByY3Zsb3dhdF9ieXRlcyk7DQorCWVs c2UNCisJCXJ1bl9zZW5kZXIodG9fc2VuZF9ieXRlcyk7DQorDQorCXJldHVybiAwOw0KK30NCi0t IA0KMi4yNS4xDQo=