From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 64551A034F; Tue, 8 Jun 2021 07:26:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D0394410E7; Tue, 8 Jun 2021 07:26:26 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id CCEBD4013F for ; Tue, 8 Jun 2021 07:26:24 +0200 (CEST) IronPort-SDR: VYxAvFAWO2glrMY1zDvJ+DkroClAtO8JMj9fB4NTPGePeelzT9oVMxFXoS4EFSDTSzEk30/FTD EngrkaJ3m6DA== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="290403769" X-IronPort-AV: E=Sophos;i="5.83,256,1616482800"; d="scan'208";a="290403769" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 22:26:23 -0700 IronPort-SDR: GbZ5kZ6U4qw/VnsiffJtPKBlZtbkzG5ESiDWsRlSOgW+lOzzqzl/b1lQMbhqyKBkoJOFk3G3hc IAb333kgiNFQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,256,1616482800"; d="scan'208";a="634955544" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga006.fm.intel.com with ESMTP; 07 Jun 2021 22:26:23 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 22:26:22 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 7 Jun 2021 22:26:21 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Mon, 7 Jun 2021 22:26:21 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.102) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Mon, 7 Jun 2021 22:26:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OTG5ecYp0sEoIlu1WJqGvJA/kKmEurORdHYlKPsifQpfZxL34h8TIAbmfSfEIkYFeQz4Dzsn1spS70LKTDHDons8YBNQoCS7lhEMBnsjUJMW9OZ8M51XDOOFPJXGmnsuaaYtzWtO8+7x170IIAI8u9XNg+9/sXQ7mDiufEik1fyw4EhKmoOdBIKMpX6KkCfr+2V78uWkAAgE5mKrlfY9NXKEwj8Ba80LheCKgtU7fUTdF1zYfoPIJF7lsqJ5uBS44U7h+D/9138XK0bMdE+ufab23qtdPuq00UPhurJAWFz/tAkDOKH8yTTiSVy2rd+1NmkSs+vDlja0uDGZ1c+9yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gXkVmvIsE2FvEiOxAuetZpcQc/OgS3r+zlgnMD/xFtE=; b=oE2vuQf2t5DZOib2yyAyoE8xHXa4IcIbuegd+Dd2PErNEPgqApEH4ZEpcxsk3wON0dr+pvU8g3s4rVxCyt3GryIowTbiKSmhWRB/orY4HMqEnVsKbBYtTUglA004sG19qTm0JkKWbIug4Zps8p4cO6/HYQBaKw9LXLaaisdVEG9O86sZzM/BmQKddHcS3zw1WrtxysKsM3m5oLhQrG9d6eH16eRGZUKvggNqwegZD2pR6GdE5VKFqVRC+VQxxbyrMnIvdZKy+55bh1aHGBXcHP2WcOYgra9mHE6EsZzDCJyDk8D+19kFlM6Srx0z1wiBxasilFrDHAm7/LZ9F8Snug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gXkVmvIsE2FvEiOxAuetZpcQc/OgS3r+zlgnMD/xFtE=; b=lIDSAdOGbXivgh5nNgoVoVuoTvbe1Gz7c3Vu4yPs4SeZefJYE3bVo6Af/XyuJuF0cG0PEnPPPwXrc+vRVpA6VpJUFWHjIe8hii0otGSZwH5KepIx5as3NLtPLcYIqSzxffeQdZ77ZGy6WUPGLLUhW0r6tex4Z7bjLye2GljJR6A= Received: from SJ0PR11MB5006.namprd11.prod.outlook.com (2603:10b6:a03:2db::22) by BY5PR11MB4484.namprd11.prod.outlook.com (2603:10b6:a03:1c3::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.24; Tue, 8 Jun 2021 05:26:14 +0000 Received: from SJ0PR11MB5006.namprd11.prod.outlook.com ([fe80::7901:a8da:2d7b:15a8]) by SJ0PR11MB5006.namprd11.prod.outlook.com ([fe80::7901:a8da:2d7b:15a8%8]) with mapi id 15.20.4195.030; Tue, 8 Jun 2021 05:26:14 +0000 From: "Jiang, Cheng1" To: Maxime Coquelin , "maxime.coquelin@redhat.com" , "Xia, Chenbo" CC: "dev@dpdk.org" , "Hu, Jiayu" , "Yang, YvonneX" Thread-Topic: [PATCH 1/2] vhost: add unsafe API to drain pkts in async vhost Thread-Index: AQHXV2m+ssbxqxREo0+ri5xHYUBZwqsImBuAgAEFnGA= Date: Tue, 8 Jun 2021 05:26:14 +0000 Message-ID: References: <20210602042802.31943-1-cheng1.jiang@intel.com> <20210602042802.31943-2-cheng1.jiang@intel.com> <65444651-0a8e-3495-8d4e-91453d6b2069@redhat.com> In-Reply-To: <65444651-0a8e-3495-8d4e-91453d6b2069@redhat.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.52] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 713352e8-20b4-48f6-85e1-08d92a3def34 x-ms-traffictypediagnostic: BY5PR11MB4484: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:182; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 9zW+7NSRDJS6XYMJzZeKVfkvYsN4gJKRt7LUA6fz/uzyfvQNhgBkZvChDJO/7s7MvZEMtuG7hzOFQv4kEt/acj4YJqCIR4xdLpozAm6krH7OXKLV+g5JGVvGG6V/NyeDUK4R5qmCBySOWxRcrY4/AsbyQ6PD38bGZJL1BHGL009iS+B3OtjcfgK3/pOITsYU+UGsV+XP/nFbVFG1MSmdndFLhOUrbjAkYMpbj9H0+QzheM/A0dj0y4Z5VlPCKRkbIOHETqTGaJR6kJ92Q8jHPcpE0VH62KqiiKuo2GOIeRyNIev7YYMGSyXFwkq/lSHzc2m44gR9pceXSU6S51er51EhFZMWr1GvFPHjjITpcAupX+x2sOflhq3FX99io5ijcz8Ka2TESOmZHpbGZpmsCXnjq6Ey6gOj7NRWlehj3YsFDKWSlTIDrseKVU5/BJWB6I9Zz7dhLC51yDrVX6cOaTJeJ1RQ0QMFsTIzfshGdFtGgCuSOxRnankb7x8qGUgyUBsnuFuAt3djfBGzmMc9FeuzEuYNrVbdNkV5pdy4unlDzsg2WU7MGPZLUoSZ/2tl6Jhz9gP5hOAdQXoa2c9HQxCuz67QHC3cbvK0AycaNRA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB5006.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(366004)(376002)(346002)(136003)(396003)(4326008)(55016002)(76116006)(122000001)(54906003)(9686003)(38100700002)(8936002)(66556008)(64756008)(33656002)(71200400001)(66446008)(66476007)(107886003)(66946007)(6636002)(186003)(7696005)(53546011)(26005)(5660300002)(6506007)(2906002)(478600001)(8676002)(83380400001)(30864003)(316002)(52536014)(110136005)(86362001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bngyejR2MzF6VWZPZHlSc0ZWWHlIakdjU216UnIzRkx4ZTRQR091VzVLcDht?= =?utf-8?B?ampPOFMzM1pQV3YwaGRRcHZZTUZySWpNRm9iRWRCK05UcVF4QWVDeWJvSlhW?= =?utf-8?B?UXAxNTUxSUpaQXhYaDhUL3RpRXB6OWdPSlBDRmlBU0lWby8vSXFkYml6dnZv?= =?utf-8?B?YkxYNW44aFQ5STBUZUN5QTVOY29sa1FrK3p3OHlsRERzcDJ6TUJtTEtZYnBH?= =?utf-8?B?SGFrOFJ4RU5iUVFHSjBzakNjT1hmZ3dpemZKUGtuTVpRZmtvcFhNQWRieWM4?= =?utf-8?B?NEIrTVVjQUlINnNJV3U4UTRjR29FaGZhVzV6Ymp0bUgvbG5qaWZxdUIrM08r?= =?utf-8?B?VllVUGNwUkNqekdveUpZOFBoZ3dBYk9EbGR0ZlB5cGpMNE9QZFo5MmlzZjVm?= =?utf-8?B?dnBTZ2VNTW9VL2tXSGNQZDNTVy9mNkFzMEQ1MDlWKzlQT1R0RklJenM4K0tq?= =?utf-8?B?TEJYM0FESGVYUHdvUGwzTVloSnFISkpreENwcURhelR4Y2JRNjlQbHAwK3Js?= =?utf-8?B?ajI0eE1zdHlRcjZWSUdXNHFEZHF4SWxsc2JqdzE3TFhrK043T3R4V290ZzZU?= =?utf-8?B?K0F6b2RhQ21mQWF6eWNsZ3ltNDdwdVlNMi9sNnBKYVRaSWo2b2tNS093aGpO?= =?utf-8?B?QTI2R0UwRGtETnNZRlZ2aEljbmVyZkxmc0ovelJFSkVUZXNldFAxMldVclBw?= =?utf-8?B?ekYrMC9WOUUrVUxJMkJUclpXSXQzTlh3OUFqajZ2elJpVGVYNmpWcHZhaHpt?= =?utf-8?B?aXI5TmtkNWExbWhqS0x3RzdYOHJHQm00cXRsL0sxNXd4NFN2blN0RGtRck1I?= =?utf-8?B?eFRHdElNV0dnWWdTQTMyWk1ZUDhyeC9qVVVraVEweDNpVTVjbi9zN1NFQnNp?= =?utf-8?B?OXN4eTlBNGo0NGUyQk1HdXcycmc3L0w2cjIzLytGZCtnSXFUZUlqZE9TTGpx?= =?utf-8?B?ZGpoUXZ3NWx6dkxIUmplellGTU5yTmZ0YkNFNUM3Nzg5SXlVKzVtTGoza0lU?= =?utf-8?B?NUdYR2srZFRtUnUzQ3cxanlWbkd6SnVoQVhjdGdiWWZrenpoVndRblJTcTd5?= =?utf-8?B?YjhnVk9rd2twQXJTdWtOdnpyQjhOTGZ4NGZOUVZqc2s5R2hiR0ZGNUd1ZFM1?= =?utf-8?B?b29BdDMxOHZINGxxRy8wN2l0enMzZm5RY3RMeDVwcG12QlNBdlpBME1EWUFG?= =?utf-8?B?WU92ZFlQSGdqaWgwbXVLK3FIUldKTm1RaGE2MDMyN3BtQndMdFJIMmpLYlhv?= =?utf-8?B?WFU4SkZveGNsWDdCcXUybDB4OXpoOFNBdy9qZ00xTXhPQ3dFYzIrZjMrY3JF?= =?utf-8?B?MWYwb09YOFM2cHJUZ2x0UWNCaVBDVFV6OFdWcTBDaXRSenpHMnZxY3pjR0Nq?= =?utf-8?B?dk5KVGlybUU1U1NMUHNUVWRTbUFrK204NDJYNUpkLzF1RkhXUGo5NWFzVlZu?= =?utf-8?B?dENhSzZwMzBXbnR6dlVwaFNUMldNd29oZVhhU2Z0SllrQzZoOHlNaTRkOFpO?= =?utf-8?B?VHBkQVNXMk96bDYyc1dwZkFKT1dkWG0xM2RLKzFFVlZZeE55YUVYcVhVdjdJ?= =?utf-8?B?cUZCTTdqUlg2b3hJMlo2di9ZeitqRU1TVFlSemV2cEZ3S0k3OXE2emIrdW9Y?= =?utf-8?B?dFFRS0xDT0NPU2cvSzA3WCt4aS8wZVJPU0ZnMVNYbk44TzFWd1ovUlNoamJX?= =?utf-8?B?Z0taaThLSUh0enVUYWs5WWlOd0RFWjdycUtwS3Z4NGhjU1QyeFVCK1hRODFB?= =?utf-8?Q?n3O7QNldT60PqoKPNE=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5006.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 713352e8-20b4-48f6-85e1-08d92a3def34 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2021 05:26:14.2959 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VibfDRXGBDXOuazXLPnshCCkvhzw89ojbSKCQ5TABbAs+n7WmHHnn0TbvBdT4CTMclGdg4IH+mZS/RAWR3C74g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4484 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 1/2] vhost: add unsafe API to drain pkts in async vhost X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWNvcXVlbGlAcmVkaGF0LmNvbT4NCj4gU2VudDogTW9uZGF5LCBKdW5lIDcs IDIwMjEgOTo0NiBQTQ0KPiBUbzogSmlhbmcsIENoZW5nMSA8Y2hlbmcxLmppYW5nQGludGVsLmNv bT47IG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tOw0KPiBYaWEsIENoZW5ibyA8Y2hlbmJvLnhp YUBpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7IEh1LCBKaWF5dSA8amlheXUuaHVAaW50 ZWwuY29tPjsgWWFuZywgWXZvbm5lWA0KPiA8eXZvbm5leC55YW5nQGludGVsLmNvbT4NCj4gU3Vi amVjdDogUmU6IFtQQVRDSCAxLzJdIHZob3N0OiBhZGQgdW5zYWZlIEFQSSB0byBkcmFpbiBwa3Rz IGluIGFzeW5jIHZob3N0DQo+IA0KPiANCj4gDQo+IE9uIDYvMi8yMSA2OjI4IEFNLCBDaGVuZyBK aWFuZyB3cm90ZToNCj4gPiBBcHBsaWNhdGlvbnMgbmVlZCB0byBzdG9wIERNQSB0cmFuc2ZlcnMg YW5kIGZpbmlzaCBhbGwgdGhlIGluLWZsaWdodA0KPiA+IHBrdHMgd2hlbiBpbiBWTSBtZW1vcnkg aG90LXBsdWcgY2FzZSBhbmQgYXN5bmMgdmhvc3QgaXMgdXNlZC4gVGhpcw0KPiA+IHBhdGNoIGlz IHRvIHByb3ZpZGUgYW4gdW5zYWZlIEFQSSB0byBkcmFpbiBpbi1mbGlnaHQgcGt0cyB3aGljaCBh cmUNCj4gPiBzdWJtaXR0ZWQgdG8gRE1BIGVuZ2luZSBpbiB2aG9zdCBhc3luYyBkYXRhIHBhdGgu IEFuZCBlbmFibGUgaXQgaW4NCj4gPiB2aG9zdCBleGFtcGxlLg0KPiA+DQo+ID4gU2lnbmVkLW9m Zi1ieTogQ2hlbmcgSmlhbmcgPGNoZW5nMS5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4g IGV4YW1wbGVzL3Zob3N0L21haW4uYyAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKystDQo+ ID4gIGV4YW1wbGVzL3Zob3N0L21haW4uaCAgICAgICB8ICAxICsNCj4gPiAgbGliL3Zob3N0L3J0 ZV92aG9zdF9hc3luYy5oIHwgMjIgKysrKysrKysrDQo+ID4gIGxpYi92aG9zdC92ZXJzaW9uLm1h cCAgICAgICB8ICAzICsrDQo+ID4gIGxpYi92aG9zdC92aXJ0aW9fbmV0LmMgICAgICB8IDkwICsr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiAgNSBmaWxlcyBjaGFuZ2Vk LCAxMzkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pDQo+IA0KPiBQbGVhc2Ugc3BsaXQg ZXhhbXBsZSBhbmQgbGliIGNoYW5nZXMgaW4gZGVkaWNhdGVkIHBhdGNoZXMuDQoNClN1cmUsIGl0 IHdpbGwgYmUgZml4ZWQgaW4gdGhlbiBuZXh0IHZlcnNpb24uDQoNClRoYW5rcywNCkNoZW5nDQoN Cj4gDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvdmhvc3QvbWFpbi5jIGIvZXhhbXBs ZXMvdmhvc3QvbWFpbi5jIGluZGV4DQo+ID4gZDIxNzllYWRiOS4uNzBiYjY3YzdmOCAxMDA2NDQN Cj4gPiAtLS0gYS9leGFtcGxlcy92aG9zdC9tYWluLmMNCj4gPiArKysgYi9leGFtcGxlcy92aG9z dC9tYWluLmMNCj4gPiBAQCAtODUxLDggKzg1MSwxMSBAQCBjb21wbGV0ZV9hc3luY19wa3RzKHN0 cnVjdCB2aG9zdF9kZXYgKnZkZXYpDQo+ID4NCj4gPiAgCWNvbXBsZXRlX2NvdW50ID0gcnRlX3Zo b3N0X3BvbGxfZW5xdWV1ZV9jb21wbGV0ZWQodmRldi0+dmlkLA0KPiA+ICAJCQkJCVZJUlRJT19S WFEsIHBfY3BsLA0KPiBNQVhfUEtUX0JVUlNUKTsNCj4gPiAtCWlmIChjb21wbGV0ZV9jb3VudCkN Cj4gPiArCWlmIChjb21wbGV0ZV9jb3VudCkgew0KPiA+ICAJCWZyZWVfcGt0cyhwX2NwbCwgY29t cGxldGVfY291bnQpOw0KPiA+ICsJCV9fYXRvbWljX3N1Yl9mZXRjaCgmdmRldi0+cGt0c19pbmZs aWdodCwgY29tcGxldGVfY291bnQsDQo+IF9fQVRPTUlDX1NFUV9DU1QpOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiAgfQ0KPiA+DQo+ID4gIHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4g PiBAQCAtODk1LDYgKzg5OCw3IEBAIGRyYWluX3Zob3N0KHN0cnVjdCB2aG9zdF9kZXYgKnZkZXYp DQo+ID4gIAkJY29tcGxldGVfYXN5bmNfcGt0cyh2ZGV2KTsNCj4gPiAgCQlyZXQgPSBydGVfdmhv c3Rfc3VibWl0X2VucXVldWVfYnVyc3QodmRldi0+dmlkLA0KPiBWSVJUSU9fUlhRLA0KPiA+ICAJ CQkJCW0sIG5yX3htaXQsIG1fY3B1X2NwbCwNCj4gJmNwdV9jcGxfbnIpOw0KPiA+ICsJCV9fYXRv bWljX2FkZF9mZXRjaCgmdmRldi0+cGt0c19pbmZsaWdodCwgcmV0IC0gY3B1X2NwbF9uciwNCj4g PiArX19BVE9NSUNfU0VRX0NTVCk7DQo+ID4NCj4gPiAgCQlpZiAoY3B1X2NwbF9ucikNCj4gPiAg CQkJZnJlZV9wa3RzKG1fY3B1X2NwbCwgY3B1X2NwbF9ucik7DQo+ID4gQEAgLTEyMjYsNiArMTIz MCw5IEBAIGRyYWluX2V0aF9yeChzdHJ1Y3Qgdmhvc3RfZGV2ICp2ZGV2KQ0KPiA+ICAJCWVucXVl dWVfY291bnQgPSBydGVfdmhvc3Rfc3VibWl0X2VucXVldWVfYnVyc3QodmRldi0NCj4gPnZpZCwN Cj4gPiAgCQkJCQlWSVJUSU9fUlhRLCBwa3RzLCByeF9jb3VudCwNCj4gPiAgCQkJCQltX2NwdV9j cGwsICZjcHVfY3BsX25yKTsNCj4gPiArCQlfX2F0b21pY19hZGRfZmV0Y2goJnZkZXYtPnBrdHNf aW5mbGlnaHQsIGVucXVldWVfY291bnQNCj4gLSBjcHVfY3BsX25yLA0KPiA+ICsJCQkJCV9fQVRP TUlDX1NFUV9DU1QpOw0KPiA+ICsNCj4gPiAgCQlpZiAoY3B1X2NwbF9ucikNCj4gPiAgCQkJZnJl ZV9wa3RzKG1fY3B1X2NwbCwgY3B1X2NwbF9ucik7DQo+ID4NCj4gPiBAQCAtMTM5Nyw4ICsxNDA0 LDE1IEBAIGRlc3Ryb3lfZGV2aWNlKGludCB2aWQpDQo+ID4gIAkJIiglZCkgZGV2aWNlIGhhcyBi ZWVuIHJlbW92ZWQgZnJvbSBkYXRhIGNvcmVcbiIsDQo+ID4gIAkJdmRldi0+dmlkKTsNCj4gPg0K PiA+IC0JaWYgKGFzeW5jX3Zob3N0X2RyaXZlcikNCj4gPiArCWlmIChhc3luY192aG9zdF9kcml2 ZXIpIHsNCj4gPiArCQl1aW50MTZfdCBuX3BrdCA9IDA7DQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVm ICptX2NwbFt2ZGV2LT5wa3RzX2luZmxpZ2h0XTsNCj4gPiArCQluX3BrdCA9IHJ0ZV92aG9zdF9k cmFpbl9xdWV1ZV90aHJlYWRfdW5zYWZlKHZpZCwNCj4gVklSVElPX1JYUSwgbV9jcGwsDQo+ID4g KwkJCQkJCQl2ZGV2LT5wa3RzX2luZmxpZ2h0KTsNCj4gPiArDQo+ID4gKwkJZnJlZV9wa3RzKG1f Y3BsLCBuX3BrdCk7DQo+ID4gIAkJcnRlX3Zob3N0X2FzeW5jX2NoYW5uZWxfdW5yZWdpc3Rlcih2 aWQsIFZJUlRJT19SWFEpOw0KPiA+ICsJfQ0KPiA+DQo+ID4gIAlydGVfZnJlZSh2ZGV2KTsNCj4g PiAgfQ0KPiA+IEBAIC0xNDg3LDYgKzE1MDEsMzUgQEAgbmV3X2RldmljZShpbnQgdmlkKQ0KPiA+ ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3ZyaW5nX3N0 YXRlX2NoYW5nZWQoaW50IHZpZCwgdWludDE2X3QgcXVldWVfaWQsIGludCBlbmFibGUpIHsNCj4g PiArCXN0cnVjdCB2aG9zdF9kZXYgKnZkZXYgPSBOVUxMOw0KPiA+ICsNCj4gPiArCVRBSUxRX0ZP UkVBQ0godmRldiwgJnZob3N0X2Rldl9saXN0LCBnbG9iYWxfdmRldl9lbnRyeSkgew0KPiA+ICsJ CWlmICh2ZGV2LT52aWQgPT0gdmlkKQ0KPiA+ICsJCQlicmVhazsNCj4gPiArCX0NCj4gPiArCWlm ICghdmRldikNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJaWYgKHF1ZXVlX2lkICE9 IFZJUlRJT19SWFEpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJaWYgKGFzeW5jX3Zo b3N0X2RyaXZlcikgew0KPiA+ICsJCWlmICghZW5hYmxlKSB7DQo+ID4gKwkJCXVpbnQxNl90IG5f cGt0Ow0KPiA+ICsJCQlzdHJ1Y3QgcnRlX21idWYgKm1fY3BsW3ZkZXYtPnBrdHNfaW5mbGlnaHRd Ow0KPiA+ICsNCj4gPiArCQkJbl9wa3QgPSBydGVfdmhvc3RfZHJhaW5fcXVldWVfdGhyZWFkX3Vu c2FmZSh2aWQsDQo+IHF1ZXVlX2lkLA0KPiA+ICsJCQkJCQkJbV9jcGwsIHZkZXYtDQo+ID5wa3Rz X2luZmxpZ2h0KTsNCj4gPiArCQkJZnJlZV9wa3RzKG1fY3BsLCBuX3BrdCk7DQo+ID4gKwkJfQ0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKg0K PiA+ICAgKiBUaGVzZSBjYWxsYmFjayBhbGxvdyBkZXZpY2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBk YXRhIGNvcmUgd2hlbg0KPiBjb25maWd1cmF0aW9uDQo+ID4gICAqIGhhcyBiZWVuIGZ1bGx5IGNv bXBsZXRlLg0KPiA+IEBAIC0xNDk1LDYgKzE1MzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZo b3N0X2RldmljZV9vcHMNCj4gPiB2aXJ0aW9fbmV0X2RldmljZV9vcHMgPSAgew0KPiA+ICAJLm5l d19kZXZpY2UgPSAgbmV3X2RldmljZSwNCj4gPiAgCS5kZXN0cm95X2RldmljZSA9IGRlc3Ryb3lf ZGV2aWNlLA0KPiA+ICsJLnZyaW5nX3N0YXRlX2NoYW5nZWQgPSB2cmluZ19zdGF0ZV9jaGFuZ2Vk LA0KPiA+ICB9Ow0KPiA+DQo+ID4gIC8qDQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3Zob3N0 L21haW4uaCBiL2V4YW1wbGVzL3Zob3N0L21haW4uaCBpbmRleA0KPiA+IDBjY2RjZTRiNGEuLmU3 YjFhYzYwYTYgMTAwNjQ0DQo+ID4gLS0tIGEvZXhhbXBsZXMvdmhvc3QvbWFpbi5oDQo+ID4gKysr IGIvZXhhbXBsZXMvdmhvc3QvbWFpbi5oDQo+ID4gQEAgLTUxLDYgKzUxLDcgQEAgc3RydWN0IHZo b3N0X2RldiB7DQo+ID4gIAl1aW50NjRfdCBmZWF0dXJlczsNCj4gPiAgCXNpemVfdCBoZHJfbGVu Ow0KPiA+ICAJdWludDE2X3QgbnJfdnJpbmdzOw0KPiA+ICsJdWludDE2X3QgcGt0c19pbmZsaWdo dDsNCj4gPiAgCXN0cnVjdCBydGVfdmhvc3RfbWVtb3J5ICptZW07DQo+ID4gIAlzdHJ1Y3QgZGV2 aWNlX3N0YXRpc3RpY3Mgc3RhdHM7DQo+ID4gIAlUQUlMUV9FTlRSWSh2aG9zdF9kZXYpIGdsb2Jh bF92ZGV2X2VudHJ5OyBkaWZmIC0tZ2l0DQo+ID4gYS9saWIvdmhvc3QvcnRlX3Zob3N0X2FzeW5j LmggYi9saWIvdmhvc3QvcnRlX3Zob3N0X2FzeW5jLmggaW5kZXgNCj4gPiA2ZmFhMzFmNWFkLi4w NDFmNDBjZjA0IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi92aG9zdC9ydGVfdmhvc3RfYXN5bmMuaA0K PiA+ICsrKyBiL2xpYi92aG9zdC9ydGVfdmhvc3RfYXN5bmMuaA0KPiA+IEBAIC0xOTMsNCArMTkz LDI2IEBAIF9fcnRlX2V4cGVyaW1lbnRhbCAgdWludDE2X3QNCj4gPiBydGVfdmhvc3RfcG9sbF9l bnF1ZXVlX2NvbXBsZXRlZChpbnQgdmlkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPiAgCQlzdHJ1 Y3QgcnRlX21idWYgKipwa3RzLCB1aW50MTZfdCBjb3VudCk7DQo+ID4NCj4gPiArLyoqDQo+ID4g KyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGFzeW5jIGNvbXBsZXRpb24gc3RhdHVzIGFuZCBlbXB0 eSBhbGwgcGFrY2V0cw0KPiA+ICsgKiBmb3IgYSBzcGVjaWZpYyB2aG9zdCBkZXZpY2UgcXVldWUu IFBhY2tldHMgd2hpY2ggYXJlIGluZmxpZ2h0IHdpbGwNCj4gPiArICogYmUgcmV0dXJuZWQgaW4g YW4gYXJyYXkuDQo+ID4gKyAqDQo+ID4gKyAqIEBub3RlIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qg cGVyZm9ybSBhbnkgbG9ja2luZw0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gdmlkDQo+ID4gKyAq ICBpZCBvZiB2aG9zdCBkZXZpY2UgdG8gZW5xdWV1ZSBkYXRhDQo+ID4gKyAqIEBwYXJhbSBxdWV1 ZV9pZA0KPiA+ICsgKiAgcXVldWUgaWQgdG8gZW5xdWV1ZSBkYXRhDQo+ID4gKyAqIEBwYXJhbSBw a3RzDQo+ID4gKyAqICBibGFuayBhcnJheSB0byBnZXQgcmV0dXJuIHBhY2tldCBwb2ludGVyDQo+ ID4gKyAqIEBwYXJhbSBjb3VudA0KPiA+ICsgKiAgc2l6ZSBvZiB0aGUgcGFja2V0IGFycmF5DQo+ ID4gKyAqIEByZXR1cm4NCj4gPiArICogIG51bSBvZiBwYWNrZXRzIHJldHVybmVkDQo+ID4gKyAq Lw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiArdWludDE2X3QgcnRlX3Zob3N0X2RyYWlu X3F1ZXVlX3RocmVhZF91bnNhZmUoaW50IHZpZCwgdWludDE2X3QNCj4gcXVldWVfaWQsDQo+ID4g KwkJc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywgdWludDE2X3QgY291bnQpOw0KPiA+ICsNCj4gPiAg I2VuZGlmIC8qIF9SVEVfVkhPU1RfQVNZTkNfSF8gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3Zo b3N0L3ZlcnNpb24ubWFwIGIvbGliL3Zob3N0L3ZlcnNpb24ubWFwIGluZGV4DQo+ID4gOTEwM2Ey M2NkNC4uZjQ4MGYxODhhZiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvdmhvc3QvdmVyc2lvbi5tYXAN Cj4gPiArKysgYi9saWIvdmhvc3QvdmVyc2lvbi5tYXANCj4gPiBAQCAtNzksNCArNzksNyBAQCBF WFBFUklNRU5UQUwgew0KPiA+DQo+ID4gIAkjIGFkZGVkIGluIDIxLjA1DQo+ID4gIAlydGVfdmhv c3RfZ2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfZmVhdHVyZXM7DQo+ID4gKw0KPiA+ICsJIyBhZGRl ZCBpbiAyMS4wOA0KPiA+ICsJcnRlX3Zob3N0X2RyYWluX3F1ZXVlX3RocmVhZF91bnNhZmU7DQo+ ID4gIH07DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92aXJ0aW9fbmV0LmMgYi9saWIvdmhv c3QvdmlydGlvX25ldC5jIGluZGV4DQo+ID4gOGRhOGE4NmExMC4uNzkzNTEwOTc0YSAxMDA2NDQN Cj4gPiAtLS0gYS9saWIvdmhvc3QvdmlydGlvX25ldC5jDQo+ID4gKysrIGIvbGliL3Zob3N0L3Zp cnRpb19uZXQuYw0KPiA+IEBAIC0yMDgyLDM2ICsyMDgyLDE4IEBAIHdyaXRlX2JhY2tfY29tcGxl dGVkX2Rlc2NzX3BhY2tlZChzdHJ1Y3QNCj4gdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gPiAgCX0g d2hpbGUgKG5yX2xlZnQgPiAwKTsNCj4gPiAgfQ0KPiA+DQo+ID4gLXVpbnQxNl90IHJ0ZV92aG9z dF9wb2xsX2VucXVldWVfY29tcGxldGVkKGludCB2aWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+ ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1aW50MTZfdA0KPiA+ICt2aG9zdF9wb2xsX2Vu cXVldWVfY29tcGxldGVkKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHVpbnQxNl90DQo+ID4gK3F1 ZXVlX2lkLA0KPiA+ICAJCXN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsIHVpbnQxNl90IGNvdW50KSAg ew0KPiA+IC0Jc3RydWN0IHZpcnRpb19uZXQgKmRldiA9IGdldF9kZXZpY2UodmlkKTsNCj4gPiAg CXN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxOw0KPiA+ICAJdWludDE2X3Qgbl9wa3RzX2NwbCA9 IDAsIG5fcGt0c19wdXQgPSAwLCBuX2Rlc2NzID0gMCwgbl9idWZmZXJzID0gMDsNCj4gPiAgCXVp bnQxNl90IHN0YXJ0X2lkeCwgcGt0c19pZHgsIHZxX3NpemU7DQo+ID4gIAlzdHJ1Y3QgYXN5bmNf aW5mbGlnaHRfaW5mbyAqcGt0c19pbmZvOw0KPiA+ICAJdWludDE2X3QgZnJvbSwgaTsNCj4gPg0K PiA+IC0JaWYgKCFkZXYpDQo+ID4gLQkJcmV0dXJuIDA7DQo+ID4gLQ0KPiA+IC0JVkhPU1RfTE9H X0RBVEEoREVCVUcsICIoJWQpICVzXG4iLCBkZXYtPnZpZCwgX19mdW5jX18pOw0KPiA+IC0JaWYg KHVubGlrZWx5KCFpc192YWxpZF92aXJ0X3F1ZXVlX2lkeChxdWV1ZV9pZCwgMCwgZGV2LT5ucl92 cmluZykpKSB7DQo+ID4gLQkJVkhPU1RfTE9HX0RBVEEoRVJSLCAiKCVkKSAlczogaW52YWxpZCB2 aXJ0cXVldWUNCj4gaWR4ICVkLlxuIiwNCj4gPiAtCQkJZGV2LT52aWQsIF9fZnVuY19fLCBxdWV1 ZV9pZCk7DQo+ID4gLQkJcmV0dXJuIDA7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+ICAJdnEgPSBkZXYt PnZpcnRxdWV1ZVtxdWV1ZV9pZF07DQo+ID4NCj4gPiAtCWlmICh1bmxpa2VseSghdnEtPmFzeW5j X3JlZ2lzdGVyZWQpKSB7DQo+ID4gLQkJVkhPU1RfTE9HX0RBVEEoRVJSLCAiKCVkKSAlczogYXN5 bmMgbm90IHJlZ2lzdGVyZWQgZm9yDQo+IHF1ZXVlIGlkICVkLlxuIiwNCj4gPiAtCQkJZGV2LT52 aWQsIF9fZnVuY19fLCBxdWV1ZV9pZCk7DQo+ID4gLQkJcmV0dXJuIDA7DQo+ID4gLQl9DQo+ID4g LQ0KPiA+IC0JcnRlX3NwaW5sb2NrX2xvY2soJnZxLT5hY2Nlc3NfbG9jayk7DQo+ID4gLQ0KPiA+ ICAJcGt0c19pZHggPSB2cS0+YXN5bmNfcGt0c19pZHggJSB2cS0+c2l6ZTsNCj4gPiAgCXBrdHNf aW5mbyA9IHZxLT5hc3luY19wa3RzX2luZm87DQo+ID4gIAl2cV9zaXplID0gdnEtPnNpemU7DQo+ ID4gQEAgLTIxMTksMTQgKzIxMDEsMTQgQEAgdWludDE2X3QNCj4gcnRlX3Zob3N0X3BvbGxfZW5x dWV1ZV9jb21wbGV0ZWQoaW50IHZpZCwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gIAkJdnFfc2l6 ZSwgdnEtPmFzeW5jX3BrdHNfaW5mbGlnaHRfbik7DQo+ID4NCj4gPiAgCWlmIChjb3VudCA+IHZx LT5hc3luY19sYXN0X3BrdHNfbikNCj4gPiAtCQluX3BrdHNfY3BsID0gdnEtPmFzeW5jX29wcy5j aGVja19jb21wbGV0ZWRfY29waWVzKHZpZCwNCj4gPiArCQluX3BrdHNfY3BsID0gdnEtPmFzeW5j X29wcy5jaGVja19jb21wbGV0ZWRfY29waWVzKGRldi0NCj4gPnZpZCwNCj4gPiAgCQkJcXVldWVf aWQsIDAsIGNvdW50IC0gdnEtPmFzeW5jX2xhc3RfcGt0c19uKTsNCj4gPiAgCW5fcGt0c19jcGwg Kz0gdnEtPmFzeW5jX2xhc3RfcGt0c19uOw0KPiA+DQo+ID4gIAluX3BrdHNfcHV0ID0gUlRFX01J Tihjb3VudCwgbl9wa3RzX2NwbCk7DQo+ID4gIAlpZiAodW5saWtlbHkobl9wa3RzX3B1dCA9PSAw KSkgew0KPiA+ICAJCXZxLT5hc3luY19sYXN0X3BrdHNfbiA9IG5fcGt0c19jcGw7DQo+ID4gLQkJ Z290byBkb25lOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICAJfQ0KPiA+DQo+ID4gIAlpZiAodnFf aXNfcGFja2VkKGRldikpIHsNCj4gPiBAQCAtMjE2NSwxMiArMjE0Nyw3NCBAQCB1aW50MTZfdA0K PiBydGVfdmhvc3RfcG9sbF9lbnF1ZXVlX2NvbXBsZXRlZChpbnQgdmlkLCB1aW50MTZfdCBxdWV1 ZV9pZCwNCj4gPiAgCQkJdnEtPmxhc3RfYXN5bmNfZGVzY19pZHhfc3BsaXQgKz0gbl9kZXNjczsN Cj4gPiAgCX0NCj4gPg0KPiA+IC1kb25lOg0KPiA+ICsJcmV0dXJuIG5fcGt0c19wdXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3VpbnQxNl90IHJ0ZV92aG9zdF9wb2xsX2VucXVldWVfY29tcGxldGVk KGludCB2aWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+ICsJCXN0cnVjdCBydGVfbWJ1ZiAqKnBr dHMsIHVpbnQxNl90IGNvdW50KSB7DQo+ID4gKwlzdHJ1Y3QgdmlydGlvX25ldCAqZGV2ID0gZ2V0 X2RldmljZSh2aWQpOw0KPiA+ICsJc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7DQo+ID4gKwl1 aW50MTZfdCBuX3BrdHNfcHV0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoIWRldikNCj4gPiArCQly ZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlWSE9TVF9MT0dfREFUQShERUJVRywgIiglZCkgJXNcbiIs IGRldi0+dmlkLCBfX2Z1bmNfXyk7DQo+ID4gKwlpZiAodW5saWtlbHkoIWlzX3ZhbGlkX3ZpcnRf cXVldWVfaWR4KHF1ZXVlX2lkLCAwLCBkZXYtPm5yX3ZyaW5nKSkpIHsNCj4gPiArCQlWSE9TVF9M T0dfREFUQShFUlIsICIoJWQpICVzOiBpbnZhbGlkIHZpcnRxdWV1ZQ0KPiBpZHggJWQuXG4iLA0K PiA+ICsJCQlkZXYtPnZpZCwgX19mdW5jX18sIHF1ZXVlX2lkKTsNCj4gPiArCQlyZXR1cm4gMDsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwl2cSA9IGRldi0+dmlydHF1ZXVlW3F1ZXVlX2lkXTsNCj4g PiArDQo+ID4gKwlpZiAodW5saWtlbHkoIXZxLT5hc3luY19yZWdpc3RlcmVkKSkgew0KPiA+ICsJ CVZIT1NUX0xPR19EQVRBKEVSUiwgIiglZCkgJXM6IGFzeW5jIG5vdCByZWdpc3RlcmVkIGZvcg0K PiBxdWV1ZSBpZCAlZC5cbiIsDQo+ID4gKwkJCWRldi0+dmlkLCBfX2Z1bmNfXywgcXVldWVfaWQp Ow0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJ0ZV9zcGlubG9ja19s b2NrKCZ2cS0+YWNjZXNzX2xvY2spOw0KPiA+ICsNCj4gPiArCW5fcGt0c19wdXQgPSB2aG9zdF9w b2xsX2VucXVldWVfY29tcGxldGVkKGRldiwgcXVldWVfaWQsIHBrdHMsDQo+ID4gK2NvdW50KTsN Cj4gPiArDQo+ID4gIAlydGVfc3BpbmxvY2tfdW5sb2NrKCZ2cS0+YWNjZXNzX2xvY2spOw0KPiA+ DQo+ID4gIAlyZXR1cm4gbl9wa3RzX3B1dDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3VpbnQxNl90IHJ0 ZV92aG9zdF9kcmFpbl9xdWV1ZV90aHJlYWRfdW5zYWZlKGludCB2aWQsIHVpbnQxNl90DQo+IHF1 ZXVlX2lkLA0KPiA+ICsJCXN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsIHVpbnQxNl90IGNvdW50KSB7 DQo+ID4gKwlzdHJ1Y3QgdmlydGlvX25ldCAqZGV2ID0gZ2V0X2RldmljZSh2aWQpOw0KPiA+ICsJ c3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnE7DQo+ID4gKwl1aW50MTZfdCBuX3BrdHMgPSBjb3Vu dDsNCj4gPiArDQo+ID4gKwlpZiAoIWRldikNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4g KwlWSE9TVF9MT0dfREFUQShERUJVRywgIiglZCkgJXNcbiIsIGRldi0+dmlkLCBfX2Z1bmNfXyk7 DQo+ID4gKwlpZiAodW5saWtlbHkoIWlzX3ZhbGlkX3ZpcnRfcXVldWVfaWR4KHF1ZXVlX2lkLCAw LCBkZXYtPm5yX3ZyaW5nKSkpIHsNCj4gPiArCQlWSE9TVF9MT0dfREFUQShFUlIsICIoJWQpICVz OiBpbnZhbGlkIHZpcnRxdWV1ZQ0KPiBpZHggJWQuXG4iLA0KPiA+ICsJCQlkZXYtPnZpZCwgX19m dW5jX18sIHF1ZXVlX2lkKTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ID4g Kwl2cSA9IGRldi0+dmlydHF1ZXVlW3F1ZXVlX2lkXTsNCj4gPiArDQo+ID4gKwlpZiAodW5saWtl bHkoIXZxLT5hc3luY19yZWdpc3RlcmVkKSkgew0KPiA+ICsJCVZIT1NUX0xPR19EQVRBKEVSUiwg IiglZCkgJXM6IGFzeW5jIG5vdCByZWdpc3RlcmVkIGZvcg0KPiBxdWV1ZSBpZCAlZC5cbiIsDQo+ ID4gKwkJCWRldi0+dmlkLCBfX2Z1bmNfXywgcXVldWVfaWQpOw0KPiA+ICsJCXJldHVybiAwOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdoaWxlIChjb3VudCkNCj4gPiArCQljb3VudCAtPSB2aG9z dF9wb2xsX2VucXVldWVfY29tcGxldGVkKGRldiwgcXVldWVfaWQsDQo+IHBrdHMsIGNvdW50KTsN Cj4gPiArDQo+ID4gKwlyZXR1cm4gbl9wa3RzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMg X19ydGVfYWx3YXlzX2lubGluZSB1aW50MzJfdA0KPiA+ICB2aXJ0aW9fZGV2X3J4X2FzeW5jX3N1 Ym1pdChzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPiAgCXN0 cnVjdCBydGVfbWJ1ZiAqKnBrdHMsIHVpbnQzMl90IGNvdW50LA0KPiA+DQoNCg==