From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 10516A0583; Thu, 19 Mar 2020 15:22:43 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 64F1BFEB; Thu, 19 Mar 2020 15:22:42 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 8E22DFEB for ; Thu, 19 Mar 2020 15:22:40 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 02JEFAVV024160; Thu, 19 Mar 2020 07:22:37 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=dWIM5GTqBNt3t+8s8w3w+kbw+xtuNxSiogeGrWyT0p8=; b=ASjT9l+j3L+NOBWiLQC0BxDLg78R89NeF7pQZVUxIMVNSeWv7SkjE6TlDEr2fetzkD9+ v/AjDf5qLqI8K2/6N07uF9+/W/CakxC+Uew2JueSMdrJTYRKB4xy7pvNwQ/yosGDNaGy FUwWa+0fXX38ZO6VUsRzchbmLJL9ewEAZd1wNbGAoQcdVELuzWyCBsp82sK9KEmOW0+7 ywnNW3pVoj05wNMdN7GWfXIuIGHj7TuesKXCiK7y2ZnrUyvble2N/HhrjJt30K3BKxIg nUYcd3dlz/TC1a+F7AiJB8poytAySfdcsxhswsUvX+cmQ3IlNEeT0KKQV45m2zx0aF0h BA== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 2yu8pqr5jf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 19 Mar 2020 07:22:37 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 19 Mar 2020 07:22:36 -0700 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (104.47.37.56) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Thu, 19 Mar 2020 07:22:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wlit8Vsj/wVmiyO3ITemudBpmAuCh62kJjUfNpY1Q7R9ZDH0uiunFMLkTDQrM/RQMaV/O8noxuuW1qhyNJp2wwAXYaOYk4iZd7nrTQPmA/0WHWpthTKPc9nKaYfUd/dNPsYJ5IYyZs8ZtMCDOpU4p8StScpgLOfTWNFOXbKI+qTn6A8vJI1BGxwZM2BL6kwFKAgkf9dIDo8IdW8mvWEPCSCHIz2bMqUt2lP5MWjT0SxYQgyIj9nmRZOLBpMUB3ULl22TecjzR4q7epTcZ8vb36RwIjtmN6cxPcHbhqgWf9uaGHTEx9KXKMn8mP5WiyJPsR3iYgPUH0HoNlJlFEDE5A== 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=dWIM5GTqBNt3t+8s8w3w+kbw+xtuNxSiogeGrWyT0p8=; b=QH7TQBF64TgwMAzWTVP3yHiw9rnrcyOKHl/r4Hy/dTTGRpYYMtGn2/0e7tBVrBFpe0szulMSL3TK9m83YvKvSsF7Xlaq3Iezs0vGElqrSD0C479kPlXX9Os0KxQXA4hRAcUjB8aVamd64EEXxCV7k2FnG5rlpnSwrZMpwbrcChpr7eOhKUEgMPRkJoXXN3GHdtg+6Jjo5CL43PvGftJhiuKHD8A18JN0upgquazwyMyI+kvyyG0ZRZfuuXaEgaOi9UOp+n2zJrtvfF1a/Q50O5Ra9Rdjx1SB/c++xLFJVM9iX2VizjozFuMhCgyWMjFBEd5khzeG+1TL9U0CW09m9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dWIM5GTqBNt3t+8s8w3w+kbw+xtuNxSiogeGrWyT0p8=; b=YejY5hl2tyv7TXIvo2LzUFvFvuBo1mPUkIlpqFUAF9kfH0noB2YvN2eqqceNI/G51hsaWiLkLI7vrTcZDucNLHICgwWg8mPvSyb0EgujTol+1sQcwwWfh8GcPsk9oAAX+R5qg6S/qHgmfsvGjvX+iQIibStfwCJirRHznVQZTz4= Received: from CY4PR1801MB1863.namprd18.prod.outlook.com (2603:10b6:910:7b::32) by CY4PR1801MB2008.namprd18.prod.outlook.com (2603:10b6:910:7b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2814.23; Thu, 19 Mar 2020 14:22:34 +0000 Received: from CY4PR1801MB1863.namprd18.prod.outlook.com ([fe80::3ce0:be16:b19f:6383]) by CY4PR1801MB1863.namprd18.prod.outlook.com ([fe80::3ce0:be16:b19f:6383%7]) with mapi id 15.20.2814.021; Thu, 19 Mar 2020 14:22:34 +0000 From: Pavan Nikhilesh Bhagavatula To: Ray Kinsella , Jerin Jacob Kollanukkaran , Nithin Kumar Dabilpuram CC: "dev@dpdk.org" , "thomas@monjalon.net" , "david.marchand@redhat.com" , "mattias.ronnblom@ericsson.com" , Kiran Kumar Kokkilagadda Thread-Topic: [EXT] Re: [dpdk-dev] [PATCH v1 20/26] node: ipv4 lookup for x86 Thread-Index: AQHV/W1QZK9hb7vUJEq1M59lDqobbqhP2A4AgAAbR1A= Date: Thu, 19 Mar 2020 14:22:34 +0000 Message-ID: References: <20200318213551.3489504-1-jerinj@marvell.com> <20200318213551.3489504-21-jerinj@marvell.com> <02c4c25a-83ba-dac5-20e6-7b140cbcb4f1@ashroe.eu> In-Reply-To: <02c4c25a-83ba-dac5-20e6-7b140cbcb4f1@ashroe.eu> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [122.172.110.222] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f07c2227-4e47-4bd3-8c23-08d7cc10f7a7 x-ms-traffictypediagnostic: CY4PR1801MB2008: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-forefront-prvs: 0347410860 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(199004)(55016002)(81166006)(86362001)(81156014)(66946007)(76116006)(26005)(66476007)(54906003)(66446008)(64756008)(9686003)(6506007)(8676002)(66556008)(186003)(8936002)(498600001)(52536014)(110136005)(5660300002)(71200400001)(4326008)(6636002)(33656002)(7696005)(107886003)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1801MB2008; H:CY4PR1801MB1863.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jPLWiIT9tP73x1ec6t2uM2KOEfGK1wey2I/9my/flhf4ud0JkUxdN0NUKB6ehkoyuqaxm1cMggR1EvW+F4hnJ0qfizBCiT9uii0m745S40I47UQuCWH91Jcg3IrNhYy4I96Z8ijlM3Xfb+v+QqtjbpKby2Ota5vi5/OyNhl+NTRAlpbvuKXD60M8SfXuCRLXB5b7M8e7sI21FDSwDqYRm+6o7rK7RKTvoAl/+Z5b7WWkpF5X7RmMwwPravQUEknn2hSoc6aDDyy845w1U6Bp1w2Up5YzmOkjvEVshPnOZgNhzSwl9KlegbZcxQd/thzHBkSgWKXKhTP81cXUnPAyBK3AKqPoUH7QAtM+5S0WAAlwIMlILzltCajblXkbZqNnZvcKxnlEjignfkOhSBKyxqdctep4ywFYz8ctOp+0b5j2xh24LyaFWVJ4McsKunlw x-ms-exchange-antispam-messagedata: gct0Ra24gHDiKAvNELs7Ms0nquT22TUsyU1sfsfTh2Nnkcuj0zDV6bjo5NbHJ34IIq5qQAZprFwPf5/LcgNIAeYwH/BJ6WcdYQYJL4Kvk+j8ntt7eF1WsKYMZb0AlbcbJce1MvOk6xTm8W7HwT5phA== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: f07c2227-4e47-4bd3-8c23-08d7cc10f7a7 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2020 14:22:34.1657 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pzOClklMYLfwNch/6JJVFZcrQt2eOulXVWV2R4AufCRgLGi9EJCngApszh3G3itTGMqdtRyw4cfnFj7FMOqXrjQc8FU0kJ53dazAfU9oJCw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1801MB2008 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.645 definitions=2020-03-19_05:2020-03-19, 2020-03-19 signatures=0 Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v1 20/26] node: ipv4 lookup for x86 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Pk9uIDE4LzAzLzIwMjAgMjE6MzUsIGplcmluakBtYXJ2ZWxsLmNvbSB3cm90ZToNCj4+IEZyb206 IFBhdmFuIE5pa2hpbGVzaCA8cGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tPg0KPj4NCj4+IEFkZCBJ UHY0IGxvb2t1cCBwcm9jZXNzIGZ1bmN0aW9uIGZvciBpcDRfbG9va3VwDQo+PiBydGVfbm9kZS4g VGhpcyBub2RlIHBlcmZvcm1zIExQTSBsb29rdXAgdXNpbmcgeDg2XzY0DQo+PiB2ZWN0b3Igc3Vw cG9ydGVkIFJURV9MUE0gQVBJIG9uIGV2ZXJ5IHBhY2tldCByZWNlaXZlZA0KPj4gYW5kIGZvcndh cmRzIGl0IHRvIGEgbmV4dCBub2RlIHRoYXQgaXMgaWRlbnRpZmllZCBieQ0KPj4gbG9va3VwIHJl c3VsdC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBQYXZhbiBOaWtoaWxlc2ggPHBiaGFnYXZhdHVs YUBtYXJ2ZWxsLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IE5pdGhpbiBEYWJpbHB1cmFtIDxuZGFi aWxwdXJhbUBtYXJ2ZWxsLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IEtpcmFuIEt1bWFyIEsgPGtp cmFua3VtYXJrQG1hcnZlbGwuY29tPg0KPj4gLS0tDQo+PiAgbGliL2xpYnJ0ZV9ub2RlL2lwNF9s b29rdXAuYyB8IDI0NQ0KPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAg MSBmaWxlIGNoYW5nZWQsIDI0NSBpbnNlcnRpb25zKCspDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2xp Yi9saWJydGVfbm9kZS9pcDRfbG9va3VwLmMNCj5iL2xpYi9saWJydGVfbm9kZS9pcDRfbG9va3Vw LmMNCj4+IGluZGV4IGQ3ZmNkMTE1OC4uYzAwM2U5YzkxIDEwMDY0NA0KPj4gLS0tIGEvbGliL2xp YnJ0ZV9ub2RlL2lwNF9sb29rdXAuYw0KPj4gKysrIGIvbGliL2xpYnJ0ZV9ub2RlL2lwNF9sb29r dXAuYw0KPj4gQEAgLTI2NCw2ICsyNjQsMjUxIEBAIGlwNF9sb29rdXBfbm9kZV9wcm9jZXNzKHN0 cnVjdCBydGVfZ3JhcGgNCj4qZ3JhcGgsIHN0cnVjdCBydGVfbm9kZSAqbm9kZSwNCj4+ICAJcmV0 dXJuIG5iX29ianM7DQo+PiAgfQ0KPj4NCj4+ICsjZWxpZiBkZWZpbmVkKFJURV9BUkNIX1g4NikN Cj4+ICsNCj4+ICsvKiBYODYgU1NFICovDQo+PiArc3RhdGljIHVpbnQxNl90DQo+PiAraXA0X2xv b2t1cF9ub2RlX3Byb2Nlc3Moc3RydWN0IHJ0ZV9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBydGVfbm9k ZQ0KPipub2RlLA0KPj4gKwkJCXZvaWQgKipvYmpzLCB1aW50MTZfdCBuYl9vYmpzKQ0KPj4gK3sN Cj4+ICsJc3RydWN0IHJ0ZV9tYnVmICptYnVmMCwgKm1idWYxLCAqbWJ1ZjIsICptYnVmMywgKipw a3RzOw0KPj4gKwlydGVfZWRnZV90IG5leHQwLCBuZXh0MSwgbmV4dDIsIG5leHQzLCBuZXh0X2lu ZGV4Ow0KPj4gKwlzdHJ1Y3QgcnRlX2lwdjRfaGRyICppcHY0X2hkcjsNCj4+ICsJc3RydWN0IHJ0 ZV9ldGhlcl9oZHIgKmV0aF9oZHI7DQo+PiArCXVpbnQzMl90IGlwMCwgaXAxLCBpcDIsIGlwMzsN Cj4+ICsJdm9pZCAqKnRvX25leHQsICoqZnJvbTsNCj4+ICsJdWludDE2X3QgbGFzdF9zcGVjID0g MDsNCj4+ICsJdWludDE2X3Qgbl9sZWZ0X2Zyb207DQo+PiArCXN0cnVjdCBydGVfbHBtICpscG07 DQo+PiArCXVpbnQxNl90IGhlbGQgPSAwOw0KPj4gKwl1aW50MzJfdCBkcm9wX25oOw0KPj4gKwly dGVfeG1tX3QgZHN0Ow0KPj4gKwlfX20xMjhpIGRpcDsgLyogU1NFIHJlZ2lzdGVyICovDQo+PiAr CWludCByYywgaTsNCj4+ICsNCj4+ICsJLyogU3BlY3VsYXRpdmUgbmV4dCAqLw0KPj4gKwluZXh0 X2luZGV4ID0gUlRFX05PREVfSVA0X0xPT0tVUF9ORVhUX1JFV1JJVEU7DQo+PiArCS8qIERyb3Ag bm9kZSAqLw0KPj4gKwlkcm9wX25oID0NCj4oKHVpbnQzMl90KVJURV9OT0RFX0lQNF9MT09LVVBf TkVYVF9QS1RfRFJPUCkgPDwgMTY7DQo+PiArDQo+PiArCS8qIEdldCBzb2NrZXQgc3BlY2lmaWMg TFBNIGZyb20gY3R4ICovDQo+PiArCWxwbSA9ICooKHN0cnVjdCBydGVfbHBtICoqKW5vZGUtPmN0 eCk7DQo+PiArDQo+PiArCXBrdHMgPSAoc3RydWN0IHJ0ZV9tYnVmICoqKW9ianM7DQo+PiArCWZy b20gPSBvYmpzOw0KPj4gKwluX2xlZnRfZnJvbSA9IG5iX29ianM7DQo+DQo+SSBkb3VidCB0aGlz IGluaXRpYWwgcHJlZmV0Y2ggb2YgdGhlIGZpcnN0IDQgcGFja2V0cyBoYXMgYW55IGJlbmVmaXQu DQoNCkFjayB3aWxsIHJlbW92ZSBpbiB2MiBmb3IgeDg2Lg0KDQo+DQo+PiArCWlmIChuX2xlZnRf ZnJvbSA+PSA0KSB7DQo+PiArCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7DQo+PiArCQkJcnRl X3ByZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNbaV0sDQo+PiArCQkJCQkJICAgICAgIHN0 cnVjdCBydGVfZXRoZXJfaGRyDQo+KikgKw0KPj4gKwkJCQkgICAgICAxKTsNCj4+ICsJCX0NCj4+ ICsJfQ0KPj4gKw0KPj4gKwkvKiBHZXQgc3RyZWFtIGZvciB0aGUgc3BlY3VsYXRlZCBuZXh0IG5v ZGUgKi8NCj4+ICsJdG9fbmV4dCA9IHJ0ZV9ub2RlX25leHRfc3RyZWFtX2dldChncmFwaCwgbm9k ZSwNCj5uZXh0X2luZGV4LCBuYl9vYmpzKTsNCj4NCj5TdWdnZXN0IHlvdSBkb24ndCByZXVzZSB0 aGUgaGFuZC11bnJvbGxpbmcgb3B0aW1pemF0aW9uIGZyb20gRkQuaW8NCj5WUFAuDQo+SSBoYXZl IG5ldmVyIGZvdW5kIGFueSBwZXJmb3JtYW5jZSBiZW5lZml0IGZyb20gdGhlbSwgYW5kIHRoZXkN Cj5tYWtlIHRoZSBjb2RlIHVubmVjZXNzYXJpbHkgdmVyYm9zZS4NCj4NCg0KSG93IHdvdWxkIGJl IHRha2UgdGhlIGJlbmVmaXQgb2YgcnRlX2xwbV9sb29rdXB4NCB3aXRob3V0IHVucm9sbGluZyB0 aGUgbG9vcD8uDQpBbHNvLCBpbiBmdXR1cmUgaWYgd2UgYXJlIHVzaW5nIHJ0ZV9yaWIgYW5kIGZp YiB3aXRoIGEgQ1BVIHN1cHBvcnRpbmcgd2lkZXIgU0lNRCB3ZSBtaWdodA0KbmVlZCB0byB1bnJv bGwgdGhlbSBmdXJ0aGVyIChBVlgyNTYgQU5EIDUxMiBjdXJyZW50bHkgcnRlX2xwbV9sb29rdXAg dXNlcyBvbmx5IDEyOGJpdA0Kc2luY2UgaXQgaXMgb25seSB1c2VzIFNTRSBleHRlbnNpb24pLiAN Cg0KPg0KPj4gKwl3aGlsZSAobl9sZWZ0X2Zyb20gPj0gNCkgew0KPj4gKwkJLyogUHJlZmV0Y2gg bmV4dC1uZXh0IG1idWZzICovDQo+PiArCQlpZiAobGlrZWx5KG5fbGVmdF9mcm9tID49IDExKSkg ew0KPj4gKwkJCXJ0ZV9wcmVmZXRjaDAocGt0c1s4XSk7DQo+PiArCQkJcnRlX3ByZWZldGNoMChw a3RzWzldKTsNCj4+ICsJCQlydGVfcHJlZmV0Y2gwKHBrdHNbMTBdKTsNCj4+ICsJCQlydGVfcHJl ZmV0Y2gwKHBrdHNbMTFdKTsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCS8qIFByZWZldGNoIG5leHQg bWJ1ZiBkYXRhICovDQo+PiArCQlpZiAobGlrZWx5KG5fbGVmdF9mcm9tID49IDcpKSB7DQo+PiAr CQkJcnRlX3ByZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNbNF0sDQo+PiArCQkJCQkJICAg ICAgIHN0cnVjdCBydGVfZXRoZXJfaGRyDQo+KikgKw0KPj4gKwkJCQkgICAgICAxKTsNCj4+ICsJ CQlydGVfcHJlZmV0Y2gwKHJ0ZV9wa3RtYnVmX210b2QocGt0c1s1XSwNCj4+ICsJCQkJCQkgICAg ICAgc3RydWN0IHJ0ZV9ldGhlcl9oZHINCj4qKSArDQo+PiArCQkJCSAgICAgIDEpOw0KPj4gKwkJ CXJ0ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZChwa3RzWzZdLA0KPj4gKwkJCQkJCSAgICAg ICBzdHJ1Y3QgcnRlX2V0aGVyX2hkcg0KPiopICsNCj4+ICsJCQkJICAgICAgMSk7DQo+PiArCQkJ cnRlX3ByZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kKHBrdHNbN10sDQo+PiArCQkJCQkJICAgICAg IHN0cnVjdCBydGVfZXRoZXJfaGRyDQo+KikgKw0KPj4gKwkJCQkgICAgICAxKTsNCj4+ICsJCX0N Cj4+ICsNCj4+ICsJCW1idWYwID0gcGt0c1swXTsNCj4+ICsJCW1idWYxID0gcGt0c1sxXTsNCj4+ ICsJCW1idWYyID0gcGt0c1syXTsNCj4+ICsJCW1idWYzID0gcGt0c1szXTsNCj4+ICsNCj4+ICsJ CXBrdHMgKz0gNDsNCj4+ICsJCW5fbGVmdF9mcm9tIC09IDQ7DQo+PiArDQo+PiArCQkvKiBFeHRy YWN0IERJUCBvZiBtYnVmMCAqLw0KPj4gKwkJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1 ZjAsIHN0cnVjdA0KPnJ0ZV9ldGhlcl9oZHIgKik7DQo+PiArCQlpcHY0X2hkciA9IChzdHJ1Y3Qg cnRlX2lwdjRfaGRyICopKGV0aF9oZHIgKyAxKTsNCj4+ICsJCWlwMCA9IGlwdjRfaGRyLT5kc3Rf YWRkcjsNCj4+ICsJCS8qIEV4dHJhY3QgY2tzdW0sIHR0bCBhcyBpcHY0IGhkciBpcyBpbiBjYWNo ZSAqLw0KPj4gKwkJcnRlX25vZGVfbWJ1Zl9wcml2MShtYnVmMCktPmNrc3VtID0gaXB2NF9oZHIt DQo+Pmhkcl9jaGVja3N1bTsNCj4+ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjApLT50dGwg PSBpcHY0X2hkci0NCj4+dGltZV90b19saXZlOw0KPj4gKw0KPj4gKwkJLyogRXh0cmFjdCBESVAg b2YgbWJ1ZjEgKi8NCj4+ICsJCWV0aF9oZHIgPSBydGVfcGt0bWJ1Zl9tdG9kKG1idWYxLCBzdHJ1 Y3QNCj5ydGVfZXRoZXJfaGRyICopOw0KPj4gKwkJaXB2NF9oZHIgPSAoc3RydWN0IHJ0ZV9pcHY0 X2hkciAqKShldGhfaGRyICsgMSk7DQo+PiArCQlpcDEgPSBpcHY0X2hkci0+ZHN0X2FkZHI7DQo+ PiArCQkvKiBFeHRyYWN0IGNrc3VtLCB0dGwgYXMgaXB2NCBoZHIgaXMgaW4gY2FjaGUgKi8NCj4+ ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjEpLT5ja3N1bSA9IGlwdjRfaGRyLQ0KPj5oZHJf Y2hlY2tzdW07DQo+PiArCQlydGVfbm9kZV9tYnVmX3ByaXYxKG1idWYxKS0+dHRsID0gaXB2NF9o ZHItDQo+PnRpbWVfdG9fbGl2ZTsNCj4+ICsNCj4+ICsJCS8qIEV4dHJhY3QgRElQIG9mIG1idWYy ICovDQo+PiArCQlldGhfaGRyID0gcnRlX3BrdG1idWZfbXRvZChtYnVmMiwgc3RydWN0DQo+cnRl X2V0aGVyX2hkciAqKTsNCj4+ICsJCWlwdjRfaGRyID0gKHN0cnVjdCBydGVfaXB2NF9oZHIgKiko ZXRoX2hkciArIDEpOw0KPj4gKwkJaXAyID0gaXB2NF9oZHItPmRzdF9hZGRyOw0KPj4gKwkJLyog RXh0cmFjdCBja3N1bSwgdHRsIGFzIGlwdjQgaGRyIGlzIGluIGNhY2hlICovDQo+PiArCQlydGVf bm9kZV9tYnVmX3ByaXYxKG1idWYyKS0+Y2tzdW0gPSBpcHY0X2hkci0NCj4+aGRyX2NoZWNrc3Vt Ow0KPj4gKwkJcnRlX25vZGVfbWJ1Zl9wcml2MShtYnVmMiktPnR0bCA9IGlwdjRfaGRyLQ0KPj50 aW1lX3RvX2xpdmU7DQo+PiArDQo+PiArCQkvKiBFeHRyYWN0IERJUCBvZiBtYnVmMyAqLw0KPj4g KwkJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QobWJ1ZjMsIHN0cnVjdA0KPnJ0ZV9ldGhlcl9o ZHIgKik7DQo+PiArCQlpcHY0X2hkciA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICopKGV0aF9oZHIg KyAxKTsNCj4+ICsJCWlwMyA9IGlwdjRfaGRyLT5kc3RfYWRkcjsNCj4+ICsNCj4+ICsJCS8qIFBy ZXBhcmUgZm9yIGxvb2t1cCB4NCAqLw0KPj4gKwkJZGlwID0gX21tX3NldF9lcGkzMihpcDMsIGlw MiwgaXAxLCBpcDApOw0KPj4gKw0KPj4gKwkJLyogQnl0ZSBzd2FwIDQgSVBWNCBhZGRyZXNzZXMu ICovDQo+PiArCQljb25zdCBfX20xMjhpIGJzd2FwX21hc2sgPSBfbW1fc2V0X2VwaTgoDQo+PiAr CQkJMTIsIDEzLCAxNCwgMTUsIDgsIDksIDEwLCAxMSwgNCwgNSwgNiwgNywgMCwgMSwgMiwgMyk7 DQo+PiArCQlkaXAgPSBfbW1fc2h1ZmZsZV9lcGk4KGRpcCwgYnN3YXBfbWFzayk7DQo+PiArDQo+ PiArCQkvKiBFeHRyYWN0IGNrc3VtLCB0dGwgYXMgaXB2NCBoZHIgaXMgaW4gY2FjaGUgKi8NCj4+ ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjMpLT5ja3N1bSA9IGlwdjRfaGRyLQ0KPj5oZHJf Y2hlY2tzdW07DQo+PiArCQlydGVfbm9kZV9tYnVmX3ByaXYxKG1idWYzKS0+dHRsID0gaXB2NF9o ZHItDQo+PnRpbWVfdG9fbGl2ZTsNCj4+ICsNCj4+ICsJCS8qIFBlcmZvcm0gTFBNIGxvb2t1cCB0 byBnZXQgTkggYW5kIG5leHQgbm9kZSAqLw0KPj4gKwkJcnRlX2xwbV9sb29rdXB4NChscG0sIGRp cCwgZHN0LnUzMiwgZHJvcF9uaCk7DQo+PiArDQo+PiArCQkvKiBFeHRyYWN0IG5leHQgbm9kZSBp ZCBhbmQgTkggKi8NCj4+ICsJCXJ0ZV9ub2RlX21idWZfcHJpdjEobWJ1ZjApLT5uaCA9IGRzdC51 MzJbMF0gJg0KPjB4RkZGRjsNCj4+ICsJCW5leHQwID0gKGRzdC51MzJbMF0gPj4gMTYpOw0KPj4g Kw0KPj4gKwkJcnRlX25vZGVfbWJ1Zl9wcml2MShtYnVmMSktPm5oID0gZHN0LnUzMlsxXSAmDQo+ MHhGRkZGOw0KPj4gKwkJbmV4dDEgPSAoZHN0LnUzMlsxXSA+PiAxNik7DQo+PiArDQo+PiArCQly dGVfbm9kZV9tYnVmX3ByaXYxKG1idWYyKS0+bmggPSBkc3QudTMyWzJdICYNCj4weEZGRkY7DQo+ PiArCQluZXh0MiA9IChkc3QudTMyWzJdID4+IDE2KTsNCj4+ICsNCj4+ICsJCXJ0ZV9ub2RlX21i dWZfcHJpdjEobWJ1ZjMpLT5uaCA9IGRzdC51MzJbM10gJg0KPjB4RkZGRjsNCj4+ICsJCW5leHQz ID0gKGRzdC51MzJbM10gPj4gMTYpOw0KPj4gKw0KPj4gKwkJLyogRW5xdWV1ZSBmb3VyIHRvIG5l eHQgbm9kZSAqLw0KPj4gKwkJcnRlX2VkZ2VfdCBmaXhfc3BlYyA9DQo+PiArCQkJKG5leHRfaW5k ZXggXiBuZXh0MCkgfCAobmV4dF9pbmRleCBeIG5leHQxKSB8DQo+PiArCQkJKG5leHRfaW5kZXgg XiBuZXh0MikgfCAobmV4dF9pbmRleCBeIG5leHQzKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpa2Vs eShmaXhfc3BlYykpIHsNCj4+ICsJCQkvKiBDb3B5IHRoaW5ncyBzdWNjZXNzZnVsbHkgc3BlY3Vs YXRlZCB0aWxsIG5vdw0KPiovDQo+PiArCQkJcnRlX21lbWNweSh0b19uZXh0LCBmcm9tLCBsYXN0 X3NwZWMgKg0KPnNpemVvZihmcm9tWzBdKSk7DQo+PiArCQkJZnJvbSArPSBsYXN0X3NwZWM7DQo+ PiArCQkJdG9fbmV4dCArPSBsYXN0X3NwZWM7DQo+PiArCQkJaGVsZCArPSBsYXN0X3NwZWM7DQo+ PiArCQkJbGFzdF9zcGVjID0gMDsNCj4+ICsNCj4+ICsJCQkvKiBOZXh0MCAqLw0KPj4gKwkJCWlm IChuZXh0X2luZGV4ID09IG5leHQwKSB7DQo+PiArCQkJCXRvX25leHRbMF0gPSBmcm9tWzBdOw0K Pj4gKwkJCQl0b19uZXh0Kys7DQo+PiArCQkJCWhlbGQrKzsNCj4+ICsJCQl9IGVsc2Ugew0KPj4g KwkJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdyYXBoLCBub2RlLA0KPm5leHQwLA0KPj4gKwkJCQkJ CSAgICBmcm9tWzBdKTsNCj4+ICsJCQl9DQo+PiArDQo+PiArCQkJLyogTmV4dDEgKi8NCj4+ICsJ CQlpZiAobmV4dF9pbmRleCA9PSBuZXh0MSkgew0KPj4gKwkJCQl0b19uZXh0WzBdID0gZnJvbVsx XTsNCj4+ICsJCQkJdG9fbmV4dCsrOw0KPj4gKwkJCQloZWxkKys7DQo+PiArCQkJfSBlbHNlIHsN Cj4+ICsJCQkJcnRlX25vZGVfZW5xdWV1ZV94MShncmFwaCwgbm9kZSwNCj5uZXh0MSwNCj4+ICsJ CQkJCQkgICAgZnJvbVsxXSk7DQo+PiArCQkJfQ0KPj4gKw0KPj4gKwkJCS8qIE5leHQyICovDQo+ PiArCQkJaWYgKG5leHRfaW5kZXggPT0gbmV4dDIpIHsNCj4+ICsJCQkJdG9fbmV4dFswXSA9IGZy b21bMl07DQo+PiArCQkJCXRvX25leHQrKzsNCj4+ICsJCQkJaGVsZCsrOw0KPj4gKwkJCX0gZWxz ZSB7DQo+PiArCQkJCXJ0ZV9ub2RlX2VucXVldWVfeDEoZ3JhcGgsIG5vZGUsDQo+bmV4dDIsDQo+ PiArCQkJCQkJICAgIGZyb21bMl0pOw0KPj4gKwkJCX0NCj4+ICsNCj4+ICsJCQkvKiBOZXh0MyAq Lw0KPj4gKwkJCWlmIChuZXh0X2luZGV4ID09IG5leHQzKSB7DQo+PiArCQkJCXRvX25leHRbMF0g PSBmcm9tWzNdOw0KPj4gKwkJCQl0b19uZXh0Kys7DQo+PiArCQkJCWhlbGQrKzsNCj4+ICsJCQl9 IGVsc2Ugew0KPj4gKwkJCQlydGVfbm9kZV9lbnF1ZXVlX3gxKGdyYXBoLCBub2RlLA0KPm5leHQz LA0KPj4gKwkJCQkJCSAgICBmcm9tWzNdKTsNCj4+ICsJCQl9DQo+PiArDQo+PiArCQkJZnJvbSAr PSA0Ow0KPj4gKw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJCQlsYXN0X3NwZWMgKz0gNDsNCj4+ICsJ CX0NCj4+ICsJfQ0KPj4gKw0KPj4gKwl3aGlsZSAobl9sZWZ0X2Zyb20gPiAwKSB7DQo+PiArCQl1 aW50MzJfdCBuZXh0X2hvcDsNCj4+ICsNCj4+ICsJCW1idWYwID0gcGt0c1swXTsNCj4+ICsNCj4+ ICsJCXBrdHMgKz0gMTsNCj4+ICsJCW5fbGVmdF9mcm9tIC09IDE7DQo+PiArDQo+PiArCQkvKiBF eHRyYWN0IERJUCBvZiBtYnVmMCAqLw0KPj4gKwkJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2Qo bWJ1ZjAsIHN0cnVjdA0KPnJ0ZV9ldGhlcl9oZHIgKik7DQo+PiArCQlpcHY0X2hkciA9IChzdHJ1 Y3QgcnRlX2lwdjRfaGRyICopKGV0aF9oZHIgKyAxKTsNCj4+ICsJCS8qIEV4dHJhY3QgY2tzdW0s IHR0bCBhcyBpcHY0IGhkciBpcyBpbiBjYWNoZSAqLw0KPj4gKwkJcnRlX25vZGVfbWJ1Zl9wcml2 MShtYnVmMCktPmNrc3VtID0gaXB2NF9oZHItDQo+Pmhkcl9jaGVja3N1bTsNCj4+ICsJCXJ0ZV9u b2RlX21idWZfcHJpdjEobWJ1ZjApLT50dGwgPSBpcHY0X2hkci0NCj4+dGltZV90b19saXZlOw0K Pj4gKw0KPj4gKwkJcmMgPSBydGVfbHBtX2xvb2t1cChscG0sIHJ0ZV9iZV90b19jcHVfMzIoaXB2 NF9oZHItDQo+PmRzdF9hZGRyKSwNCj4+ICsJCQkJICAgICZuZXh0X2hvcCk7DQo+PiArCQluZXh0 X2hvcCA9IChyYyA9PSAwKSA/IG5leHRfaG9wIDogZHJvcF9uaDsNCj4+ICsNCj4+ICsJCXJ0ZV9u b2RlX21idWZfcHJpdjEobWJ1ZjApLT5uaCA9IG5leHRfaG9wICYNCj4weEZGRkY7DQo+PiArCQlu ZXh0MCA9IChuZXh0X2hvcCA+PiAxNik7DQo+PiArDQo+PiArCQlpZiAodW5saWtlbHkobmV4dF9p bmRleCBeIG5leHQwKSkgew0KPj4gKwkJCS8qIENvcHkgdGhpbmdzIHN1Y2Nlc3NmdWxseSBzcGVj dWxhdGVkIHRpbGwgbm93DQo+Ki8NCj4+ICsJCQlydGVfbWVtY3B5KHRvX25leHQsIGZyb20sIGxh c3Rfc3BlYyAqDQo+c2l6ZW9mKGZyb21bMF0pKTsNCj4+ICsJCQlmcm9tICs9IGxhc3Rfc3BlYzsN Cj4+ICsJCQl0b19uZXh0ICs9IGxhc3Rfc3BlYzsNCj4+ICsJCQloZWxkICs9IGxhc3Rfc3BlYzsN Cj4+ICsJCQlsYXN0X3NwZWMgPSAwOw0KPj4gKw0KPj4gKwkJCXJ0ZV9ub2RlX2VucXVldWVfeDEo Z3JhcGgsIG5vZGUsIG5leHQwLA0KPmZyb21bMF0pOw0KPj4gKwkJCWZyb20gKz0gMTsNCj4+ICsJ CX0gZWxzZSB7DQo+PiArCQkJbGFzdF9zcGVjICs9IDE7DQo+PiArCQl9DQo+PiArCX0NCj4+ICsN Cj4+ICsJLyogISEhIEhvbWUgcnVuICEhISAqLw0KPj4gKwlpZiAobGlrZWx5KGxhc3Rfc3BlYyA9 PSBuYl9vYmpzKSkgew0KPj4gKwkJcnRlX25vZGVfbmV4dF9zdHJlYW1fbW92ZShncmFwaCwgbm9k ZSwNCj5uZXh0X2luZGV4KTsNCj4+ICsJCXJldHVybiBuYl9vYmpzOw0KPj4gKwl9DQo+PiArDQo+ PiArCWhlbGQgKz0gbGFzdF9zcGVjOw0KPj4gKwkvKiBDb3B5IHRoaW5ncyBzdWNjZXNzZnVsbHkg c3BlY3VsYXRlZCB0aWxsIG5vdyAqLw0KPj4gKwlydGVfbWVtY3B5KHRvX25leHQsIGZyb20sIGxh c3Rfc3BlYyAqIHNpemVvZihmcm9tWzBdKSk7DQo+PiArCXJ0ZV9ub2RlX25leHRfc3RyZWFtX3B1 dChncmFwaCwgbm9kZSwgbmV4dF9pbmRleCwgaGVsZCk7DQo+PiArDQo+PiArCXJldHVybiBuYl9v YmpzOw0KPj4gK30NCj4+ICsNCj4+ICAjZWxzZQ0KPj4NCj4+ICBzdGF0aWMgdWludDE2X3QNCj4+ DQo=