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 ADA9BA3160 for ; Thu, 10 Oct 2019 23:07:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ED2D51E8FE; Thu, 10 Oct 2019 23:07:44 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60073.outbound.protection.outlook.com [40.107.6.73]) by dpdk.org (Postfix) with ESMTP id AAE281E8EC for ; Thu, 10 Oct 2019 23:07:43 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TKqx12kIqKV3wv2bOXFXAdd+Flzci+wJHhULy4BFbtEI1CJyS8c8XGcc4wKe2XtNEst8eW2rA7c4qXa9/adEWdhMtyX91vCnh/5vfPQw2lP84sq2rymAfU3taHtcakPOfL01iUa2GnjRuWkNYKAEsvI6K7A5UacyXQaf0d9hFF/+YbjuJmInkcBbNUlud4hlQh7UeeDMt91srFH+kn8E5eboq0FGC5RB+oCMQnx7rJhToJ3U8p6OMUiyAzKkSvIr3D36FnqQOYw+qZBXWdHeQgRzdfEIvV2++9dpx+mmQZus2D3ZFW8yoB9UIdQCMDrVcWLLYtUis6aldb+x4/C3LA== 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=CIa4PZTsYCUWqbiXKmh51+rc/8d5uPZd5FolxGtPoK4=; b=NT1aqj0qz6nHzONsNEsx+M7tW0GuvqxZitvAjm2liBEni2cFlcejx8IEiLg4UiQyRhvO9sjU0npPinV5VDF/tc/lmQxRa7LimL6AkhzM5mO31fFZX0wW1UdCp0afgv8qXLVIpG+gw6Lt/DqekZxKxppWHU7JFyhpOiL1p2X8NUqvsfAMn2XpJbEd/eV1Rf/cRRTGggf8bB0QH6b7psoUc9NY5uLDAK9pWNeY5mTvzxQKr0rv+Eq40YLlZDvoFQOPoJGEjRKgLB90Sjp6ubVMx8C4d2E68ezqIk8zj7OOjP9mWfDM5QYwZd1mrojB4L0MrrUHAPHvzJlphXG1nbNfJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CIa4PZTsYCUWqbiXKmh51+rc/8d5uPZd5FolxGtPoK4=; b=hwvAF4uS5en2BaWUDa0A1FB/uqmppjjixBIqFYc7kP2Sp57BQ93DfabGGeBNJ21VKnycT/QS8Valj9wcPprKzfL6eNETwYNoq6fQ7wK7sS/xnW77UV9MNYNGjXm/5se8HVtG0tUn5AFhC9Nb3vA1Jk9fAKIqRLGnvqNU/Ntcsc0= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.190.15) by AM4PR05MB3154.eurprd05.prod.outlook.com (10.170.125.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2327.24; Thu, 10 Oct 2019 21:07:41 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::70a7:a312:cbc6:d178]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::70a7:a312:cbc6:d178%7]) with mapi id 15.20.2347.016; Thu, 10 Oct 2019 21:07:41 +0000 From: Ori Kam To: Andrew Rybchenko , Thomas Monjalon , Ferruh Yigit CC: "dev@dpdk.org" , "jingjing.wu@intel.com" , "stephen@networkplumber.org" Thread-Topic: [PATCH v2 01/14] ethdev: add support for hairpin queue Thread-Index: AQHVffMHybYyw5O7WEitZ70VVWVWEKdUVOhA Date: Thu, 10 Oct 2019 21:07:41 +0000 Message-ID: References: <1569479349-36962-1-git-send-email-orika@mellanox.com> <1570218855-73478-1-git-send-email-orika@mellanox.com> <1570218855-73478-2-git-send-email-orika@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [185.175.35.255] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7901be4a-30e9-4b24-addc-08d74dc5e39a x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: AM4PR05MB3154: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-forefront-prvs: 018632C080 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(366004)(346002)(39850400004)(136003)(396003)(13464003)(199004)(189003)(6436002)(14444005)(52536014)(71200400001)(8936002)(446003)(6246003)(476003)(33656002)(486006)(55016002)(7696005)(99286004)(102836004)(14454004)(186003)(25786009)(229853002)(9686003)(76176011)(71190400001)(478600001)(11346002)(53546011)(256004)(6506007)(4326008)(26005)(305945005)(74316002)(81166006)(7736002)(76116006)(2906002)(5660300002)(8676002)(86362001)(30864003)(316002)(54906003)(81156014)(110136005)(66066001)(66556008)(64756008)(66476007)(6116002)(66446008)(66946007)(3846002)(559001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3154; H:AM4PR05MB3425.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ButaAvLQ0BNIpBN3j3zbcboW75YkHWXdpHkvN3YGWKy/ZDlF3UWH2eQTO+UbQzTrj9V1KFxHbAAgceuJ7QnsoqxeYC41PJ7viNDV+P5dGAuPMFwh3UdNoHcsg3o7ccm4nlooT9oB2zs/Dp7xLG9s6LdD2HQAOkYkPREaaR/fuLybeonbyD9jiiHAB+oBu8CIfoNenaVVHYq9G8itCOKHXAPLfutFQOU/tlPgNqOPAjmrBpM5/wdgln4KRblbNKXRCA4kwW4CcxEm/bBnpOcgmUZyHKiAEcoh0PBmXWphwrf5Yre3JxbwJ4eZ18zx8pWcpYJClMcC444tmOSF5hE2kJn2xIX/L5UP6Dzg7GR2QQe+MBkNB5iyc9Kxvpat4Pbb/20T8udQDlkhgljbpT1RcuF6zm+U9/0YUsHdi5U3LL4= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7901be4a-30e9-4b24-addc-08d74dc5e39a X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2019 21:07:41.6996 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2gX1+umsqVdmjz0CJlVXCRNkdUBpwsaRNp/6kdlSZra6vup5EArqGskcxNsll70VPNnBMCN8ck8RHBDk119+mA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3154 Subject: Re: [dpdk-dev] [PATCH v2 01/14] ethdev: add support for hairpin queue 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" SGkgQW5kcmV3LA0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMsDQoNClBTQiwNCk9yaQ0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJldyBSeWJjaGVua28gPGFy eWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgOCwgMjAx OSA3OjExIFBNDQo+IFRvOiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+OyBUaG9tYXMgTW9u amFsb24NCj4gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdp dEBpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7IGppbmdqaW5nLnd1QGludGVsLmNvbTsg c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAwMS8x NF0gZXRoZGV2OiBhZGQgc3VwcG9ydCBmb3IgaGFpcnBpbiBxdWV1ZQ0KPiANCj4gSGkgT3JpLA0K PiANCj4gdGhhbmtzIGZvciB1cGRhdGVkIHZlcnNpb24uIFNlZSBteSBub3RlcyBiZWxvdy4NCj4g DQo+IFRoZXJlIGFyZSBmZXcgc3R5bGUgbm90ZXMgYWJvdXQgbGluZSBicmVha3Mgd2hpY2ggYXJl IG5vdCBkZWZpbmVkIGluDQo+IGNvZGluZyBzdHlsZS4gT2YgY291cnNlLCBpdCBtYXkgYmUgaWdu b3JlZC4NCj4gDQoNCkkgd2lsbCBmaXggd2hhdCBJIGNhbi4NCg0KPiBPbiAxMC80LzE5IDEwOjU0 IFBNLCBPcmkgS2FtIHdyb3RlOg0KPiA+IFRoaXMgY29tbWl0IGludHJvZHVjZSBoYWlycGluIHF1 ZXVlIHR5cGUuDQo+ID4NCj4gPiBUaGUgaGFpcnBpbiBxdWV1ZSBpbiBidWlsZCBmcm9tIFJ4IHF1 ZXVlIGJpbmRlZCB0byBUeCBxdWV1ZS4NCj4gPiBJdCBpcyB1c2VkIHRvIG9mZmxvYWQgdHJhZmZp YyBjb21pbmcgZnJvbSB0aGUgd2lyZSBhbmQgcmVkaXJlY3QgaXQgYmFjaw0KPiA+IHRvIHRoZSB3 aXJlLg0KPiA+DQo+ID4gVGhlcmUgYXJlIDMgbmV3IGZ1bmN0aW9uczoNCj4gPiAtIHJ0ZV9ldGhf ZGV2X2hhaXJwaW5fY2FwYWJpbGl0eV9nZXQNCj4gPiAtIHJ0ZV9ldGhfcnhfaGFpcnBpbl9xdWV1 ZV9zZXR1cA0KPiA+IC0gcnRlX2V0aF90eF9oYWlycGluX3F1ZXVlX3NldHVwDQo+ID4NCj4gPiBJ biBvcmRlciB0byB1c2UgdGhlIHF1ZXVlLCB0aGVyZSBpcyBhIG5lZWQgdG8gY3JlYXRlIHJ0ZV9m bG93DQo+ID4gd2l0aCBxdWV1ZSAvIFJTUyBhY3Rpb24gdGhhdCB0YXJnZXRzIG9uZSBvciBtb3Jl IG9mIHRoZSBSeCBxdWV1ZXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBPcmkgS2FtIDxvcmlr YUBtZWxsYW5veC5jb20+DQo+IA0KPiBydGVfZXRoX2Rldl9bcnRdeF9xdWV1ZV9zdG9wKCkgc2hv dWxkIHJldHVybiBlcnJvciBpZiB1c2VkIGZvciBoYWlycGluDQo+IHF1ZXVlLg0KPiBSaWdodCBu b3cgcnRlX2V0aF9kZXZfW3J0XXhfcXVldWVfc3RhcnQoKSB3aWxsIHJldHVybiAwLiBOb3Qgc3Vy ZSBhYm91dCBpdC4NCj4gV2hhdCBhYm91dCBydGVfZXRoX3J4X3F1ZXVlX2luZm9fZ2V0KCkgYW5k IHJ0ZV9ldGhfdHhfcXVldWVfaW5mb19nZXQoKT8NCj4gQW55IG90aGVyIFJ4L1R4IHF1ZXVlIGZ1 bmN0aW9ucz8NCj4gDQoNCkkgd2lsbCBhZGQgZXJyb3IgdG8gYm90aCBmdW5jdGlvbnMgKFR4L1J4 KQ0KSSBkb24ndCBzZWUgYW55IG90aGVyIGZ1bmN0aW9uIChvbmx5IHRoZSBpbmZvX2dldCBhbmQg cXVldWVfc3RvcCkNCg0KPiA+IC0tLQ0KPiA+IFYyOg0KPiA+ICAgLSB1cGRhdGUgYWNjb3JkaW5n IHRvIE1MIGNvbW1lbnRzLg0KPiA+DQo+ID4gLS0tDQo+ID4gICBsaWIvbGlicnRlX2V0aGRldi9y dGVfZXRoZGV2LmMgICAgICAgICAgIHwgMjE0DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0NCj4gPiAgIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaCAgICAgICAgICAgfCAx MjYgKysrKysrKysrKysrKysrKysrDQo+ID4gICBsaWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2 X2NvcmUuaCAgICAgIHwgIDI3ICsrKy0NCj4gPiAgIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhk ZXZfdmVyc2lvbi5tYXAgfCAgIDUgKw0KPiA+ICAgNCBmaWxlcyBjaGFuZ2VkLCAzNjggaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRl X2V0aGRldi9ydGVfZXRoZGV2LmMgYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMNCj4g PiBpbmRleCBhZjgyMzYwLi5lZThhZjQyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfZXRo ZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ICsrKyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYu Yw0KPiA+IEBAIC0xNzUyLDEyICsxNzUyLDEwMiBAQCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKg0KPiA+ ICAgCQlpZiAoIWRldi0+ZGF0YS0+bWluX3J4X2J1Zl9zaXplIHx8DQo+ID4gICAJCSAgICBkZXYt PmRhdGEtPm1pbl9yeF9idWZfc2l6ZSA+IG1icF9idWZfc2l6ZSkNCj4gPiAgIAkJCWRldi0+ZGF0 YS0+bWluX3J4X2J1Zl9zaXplID0gbWJwX2J1Zl9zaXplOw0KPiA+ICsJCWlmIChkZXYtPmRhdGEt PnJ4X3F1ZXVlX3N0YXRlW3J4X3F1ZXVlX2lkXSA9PQ0KPiA+ICsJCSAgICBSVEVfRVRIX1FVRVVF X1NUQVRFX0hBSVJQSU4pDQo+ID4gKwkJCWRldi0+ZGF0YS0+cnhfcXVldWVfc3RhdGVbcnhfcXVl dWVfaWRdID0NCj4gPiArCQkJCVJURV9FVEhfUVVFVUVfU1RBVEVfU1RPUFBFRDsNCj4gDQo+IEkg ZG9uJ3QgdW5kZXJzdGFuZCBpdC4gV2h5IGlzIHJ0ZV9ldGhfcnhfcXVldWVfc2V0dXAoKSBjaGFu Z2VkPw0KPiANCg0KVGhpcyB3YXMgZG9uZSBzbyB1c2VyIGNhbiByZXNldCB0aGUgcXVldWUgYmFj ayB0byBub3JtYWwgcXVldWUuDQoNCj4gPiAgIAl9DQo+ID4NCj4gPiAgIAlyZXR1cm4gZXRoX2Vy cihwb3J0X2lkLCByZXQpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQNCj4gPiArcnRlX2V0aF9y eF9oYWlycGluX3F1ZXVlX3NldHVwKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHJ4X3F1ZXVl X2lkLA0KPiA+ICsJCQkgICAgICAgdWludDE2X3QgbmJfcnhfZGVzYywNCj4gPiArCQkJICAgICAg IGNvbnN0IHN0cnVjdCBydGVfZXRoX2hhaXJwaW5fY29uZiAqY29uZikNCj4gPiArew0KPiA+ICsJ aW50IHJldDsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2Ow0KPiA+ICsJc3RydWN0IHJ0 ZV9ldGhfaGFpcnBpbl9jYXAgY2FwOw0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gZGV2 X2luZm87DQo+ID4gKwl2b2lkICoqcnhxOw0KPiA+ICsJaW50IGk7DQo+ID4gKwlpbnQgY291bnQg PSAwOw0KPiA+ICsNCj4gPiArCVJURV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQocG9ydF9p ZCwgLUVJTlZBTCk7DQo+ID4gKw0KPiA+ICsJZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lk XTsNCj4gPiArCWlmIChyeF9xdWV1ZV9pZCA+PSBkZXYtPmRhdGEtPm5iX3J4X3F1ZXVlcykgew0K PiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgUlggcXVldWVfaWQ9JXVcbiIsDQo+ IHJ4X3F1ZXVlX2lkKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArCVJU RV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9vcHMtPmRldl9pbmZvc19nZXQsIC0NCj4g RU5PVFNVUCk7DQo+ID4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLT5o YWlycGluX2NhcF9nZXQsDQo+ID4gKwkJCQktRU5PVFNVUCk7DQo+ID4gKwlSVEVfRlVOQ19QVFJf T1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLQ0KPiA+cnhfaGFpcnBpbl9xdWV1ZV9zZXR1cCwNCj4g PiArCQkJCS1FTk9UU1VQKTsNCj4gPiArCXJ0ZV9ldGhfZGV2X2hhaXJwaW5fY2FwYWJpbGl0eV9n ZXQocG9ydF9pZCwgJmNhcCk7DQo+IA0KPiBSZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGNoZWNrZWQu IEl0IG1ha2VzwqAgaGFpcnBpbl9jYXBfZ2V0IGNoZWNrIGFib3ZlDQo+IHVubmVjZXNzYXJ5Lg0K PiANCkkgd2lsbCBhZGQgYSBjaGVjay4NCiANCj4gPiArCS8qIFVzZSBkZWZhdWx0IHNwZWNpZmll ZCBieSBkcml2ZXIsIGlmIG5iX3J4X2Rlc2MgaXMgemVybyAqLw0KPiA+ICsJaWYgKG5iX3J4X2Rl c2MgPT0gMCkNCj4gPiArCQluYl9yeF9kZXNjID0gY2FwLm1heF9uYl9kZXNjOw0KPiA+ICsJaWYg KG5iX3J4X2Rlc2MgPiBjYXAubWF4X25iX2Rlc2MpIHsNCj4gPiArCQlSVEVfRVRIREVWX0xPRyhF UlIsDQo+ID4gKwkJCSAgICAgICAiSW52YWxpZCB2YWx1ZSBmb3IgbmJfcnhfZGVzYyg9JWh1KSwg c2hvdWxkIGJlOiAiDQo+ID4gKwkJCSAgICAgICAiPD0gJWh1IiwgbmJfcnhfZGVzYywgY2FwLm1h eF9uYl9kZXNjKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArCXJldCA9 IHJ0ZV9ldGhfZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ID4gKwlpZiAocmV0 ICE9IDApDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCWlmIChkZXYtPmRhdGEtPmRldl9zdGFy dGVkICYmDQo+ID4gKwkJIShkZXZfaW5mby5kZXZfY2FwYSAmDQo+ID4gKwkJICBSVEVfRVRIX0RF Vl9DQVBBX1JVTlRJTUVfUlhfUVVFVUVfU0VUVVApKQ0KPiA+ICsJCXJldHVybiAtRUJVU1k7DQo+ ID4gKwlpZiAoZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCAmJg0KPiA+ICsJCShkZXYtPmRhdGEtPnJ4 X3F1ZXVlX3N0YXRlW3J4X3F1ZXVlX2lkXSAhPQ0KPiA+ICsJCSBSVEVfRVRIX1FVRVVFX1NUQVRF X1NUT1BQRUQpKQ0KPiA+ICsJCXJldHVybiAtRUJVU1k7DQo+ID4gKwlpZiAoY29uZi0+cGVlcl9u ID4gY2FwLm1heF9yeF8yX3R4KSB7DQo+ID4gKwkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+ICsJ CQkgICAgICAgIkludmFsaWQgdmFsdWUgZm9yIG51bWJlciBvZiBwZWVycyg9JWh1KSwgIg0KPiA+ ICsJCQkgICAgICAgInNob3VsZCBiZTogPD0gJWh1IiwgY29uZi0+cGVlcl9uLA0KPiA+ICsJCQkg ICAgICAgY2FwLm1heF9yeF8yX3R4KTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0N Cj4gPiArCWlmIChjb25mLT5wZWVyX24gPT0gMCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVS UiwNCj4gPiArCQkJICAgICAgICJJbnZhbGlkIHZhbHVlIGZvciBudW1iZXIgb2YgcGVlcnMoPSVo dSksICINCj4gPiArCQkJICAgICAgICJzaG91bGQgYmU6ID4gMCIsIGNvbmYtPnBlZXJfbik7DQo+ ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKwlpZiAoY2FwLm1heF9uX3F1ZXVl cyAhPSAtMSkgew0KPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBkZXYtPmRhdGEtPm5iX3J4X3F1ZXVl czsgaSsrKSB7DQo+ID4gKwkJCWlmIChkZXYtPmRhdGEtPnJ4X3F1ZXVlX3N0YXRlW2ldID09DQo+ ID4gKwkJCSAgICBSVEVfRVRIX1FVRVVFX1NUQVRFX0hBSVJQSU4pDQo+ID4gKwkJCQljb3VudCsr Ow0KPiA+ICsJCX0NCj4gPiArCQlpZiAoY291bnQgPiBjYXAubWF4X25fcXVldWVzKSB7DQo+ID4g KwkJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiArCQkJCSAgICAgICAiVG8gbWFueSBSeCBoYWly cGluIHF1ZXVlcyAlZCIsIGNvdW50KTsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJ fQ0KPiA+ICsJfQ0KPiA+ICsJcnhxID0gZGV2LT5kYXRhLT5yeF9xdWV1ZXM7DQo+ID4gKwlpZiAo cnhxW3J4X3F1ZXVlX2lkXSkgew0KPiANCj4gUGxlYXNlLCBjb21wYXJlIHdpdGggTlVMTCAoSSBr bm93IHRoYXQgcnRlX2V0aF9yeF9xdWV1ZV9zZXR1cCgpIGRvZXMNCj4gbGlrZSBhYm92ZSkuDQo+ DQoNCk8uSy4gSSB3aWxsIGNoYW5nZSwgYnV0IG1heSBJIGFzayB3aHk/IElmIGluIHRoZSBydGVf ZXRoX3J4X3F1ZXVlX3NldHVwIGZ1bmN0aW9uIGl0IGlzIHdyaXR0ZW4gdGhlIHNhbWUgd2F5LA0K d2h5IGRvIHlvdSB3YW50IHRoaXMgY2hhbmdlPw0KDQo+ID4gKwkJUlRFX0ZVTkNfUFRSX09SX0VS Ul9SRVQoKmRldi0+ZGV2X29wcy0NCj4gPnJ4X3F1ZXVlX3JlbGVhc2UsDQo+ID4gKwkJCQkJLUVO T1RTVVApOw0KPiA+ICsJCSgqZGV2LT5kZXZfb3BzLT5yeF9xdWV1ZV9yZWxlYXNlKShyeHFbcnhf cXVldWVfaWRdKTsNCj4gPiArCQlyeHFbcnhfcXVldWVfaWRdID0gTlVMTDsNCj4gPiArCX0NCj4g PiArCXJldCA9ICgqZGV2LT5kZXZfb3BzLT5yeF9oYWlycGluX3F1ZXVlX3NldHVwKShkZXYsIHJ4 X3F1ZXVlX2lkLA0KPiA+ICsJCQkJCQkgICAgICBuYl9yeF9kZXNjLCBjb25mKTsNCj4gPiArCWlm ICghcmV0KQ0KPiANCj4gUGxlYXNlLCBjb21wYXJlIHdpdGggMA0KPiANCg0KV2lsbCBkbywgYnV0 IGFnYWluIGp1c3QgZm9yIG15IGtub3dsZWRnZSB3aHk/DQoNCj4gPiArCQlkZXYtPmRhdGEtPnJ4 X3F1ZXVlX3N0YXRlW3J4X3F1ZXVlX2lkXSA9DQo+ID4gKwkJCVJURV9FVEhfUVVFVUVfU1RBVEVf SEFJUlBJTjsNCj4gPiArCXJldHVybiBldGhfZXJyKHBvcnRfaWQsIHJldCk7DQo+ID4gK30NCj4g PiArDQo+ID4gK2ludA0KPiA+ICAgcnRlX2V0aF90eF9xdWV1ZV9zZXR1cCh1aW50MTZfdCBwb3J0 X2lkLCB1aW50MTZfdCB0eF9xdWV1ZV9pZCwNCj4gPiAgIAkJICAgICAgIHVpbnQxNl90IG5iX3R4 X2Rlc2MsIHVuc2lnbmVkIGludCBzb2NrZXRfaWQsDQo+ID4gICAJCSAgICAgICBjb25zdCBzdHJ1 Y3QgcnRlX2V0aF90eGNvbmYgKnR4X2NvbmYpDQo+ID4gQEAgLTE4NTEsOSArMTk0MSw5NyBAQCBz dHJ1Y3QgcnRlX2V0aF9kZXYgKg0KPiA+ICAgCQkJX19mdW5jX18pOw0KPiA+ICAgCQlyZXR1cm4g LUVJTlZBTDsNCj4gPiAgIAl9DQo+ID4gKwlyZXQgPSAoKmRldi0+ZGV2X29wcy0+dHhfcXVldWVf c2V0dXApKGRldiwgdHhfcXVldWVfaWQsIG5iX3R4X2Rlc2MsDQo+ID4gKwkJCQkJICAgICAgc29j a2V0X2lkLCAmbG9jYWxfY29uZik7DQo+ID4gKwlpZiAoIXJldCkNCj4gPiArCQlpZiAoZGV2LT5k YXRhLT50eF9xdWV1ZV9zdGF0ZVt0eF9xdWV1ZV9pZF0gPT0NCj4gPiArCQkgICAgUlRFX0VUSF9R VUVVRV9TVEFURV9IQUlSUElOKQ0KPiA+ICsJCQlkZXYtPmRhdGEtPnR4X3F1ZXVlX3N0YXRlW3R4 X3F1ZXVlX2lkXSA9DQo+ID4gKwkJCQlSVEVfRVRIX1FVRVVFX1NUQVRFX1NUT1BQRUQ7DQo+IA0K PiBXaHkgaXMgaXQgY2hhbmdlZD8NCj4gDQoNCkxpa2UgaW4gdGhlIFJ4IHRvIGVuYWJsZSBzd2l0 Y2hpbmcgYmFjayB0byBub3JtYWwgcXVldWUuDQoNCj4gPiArCXJldHVybiBldGhfZXJyKHBvcnRf aWQsIHJldCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtydGVfZXRoX3R4X2hhaXJw aW5fcXVldWVfc2V0dXAodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QgdHhfcXVldWVfaWQsDQo+ ID4gKwkJCSAgICAgICB1aW50MTZfdCBuYl90eF9kZXNjLA0KPiA+ICsJCQkgICAgICAgY29uc3Qg c3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9jb25mICpjb25mKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldjsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2hhaXJwaW5fY2FwIGNhcDsN Cj4gPiArCXN0cnVjdCBydGVfZXRoX2Rldl9pbmZvIGRldl9pbmZvOw0KPiA+ICsJdm9pZCAqKnR4 cTsNCj4gPiArCWludCBpOw0KPiA+ICsJaW50IGNvdW50ID0gMDsNCj4gPiArCWludCByZXQ7DQo+ ID4NCj4gPiAtCXJldHVybiBldGhfZXJyKHBvcnRfaWQsICgqZGV2LT5kZXZfb3BzLT50eF9xdWV1 ZV9zZXR1cCkoZGV2LA0KPiA+IC0JCSAgICAgICB0eF9xdWV1ZV9pZCwgbmJfdHhfZGVzYywgc29j a2V0X2lkLCAmbG9jYWxfY29uZikpOw0KPiA+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJS X1JFVChwb3J0X2lkLCAtRUlOVkFMKTsNCj4gPiArCWRldiA9ICZydGVfZXRoX2RldmljZXNbcG9y dF9pZF07DQo+ID4gKwlpZiAodHhfcXVldWVfaWQgPj0gZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXMp IHsNCj4gPiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIFRYIHF1ZXVlX2lkPSV1XG4i LA0KPiB0eF9xdWV1ZV9pZCk7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4g KwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLT5kZXZfaW5mb3NfZ2V0LCAt DQo+IEVOT1RTVVApOw0KPiA+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29w cy0+aGFpcnBpbl9jYXBfZ2V0LA0KPiA+ICsJCQkJLUVOT1RTVVApOw0KPiA+ICsJUlRFX0ZVTkNf UFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0NCj4gPnR4X2hhaXJwaW5fcXVldWVfc2V0dXAs DQo+ID4gKwkJCQktRU5PVFNVUCk7DQo+ID4gKwlydGVfZXRoX2Rldl9pbmZvX2dldChwb3J0X2lk LCAmZGV2X2luZm8pOw0KPiANCj4gcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBjaGVja2VkLg0KPiAN Cj4gPiArCXJ0ZV9ldGhfZGV2X2hhaXJwaW5fY2FwYWJpbGl0eV9nZXQocG9ydF9pZCwgJmNhcCk7 DQo+IA0KPiBDaGVjayByZXR1cm4gdmFsdWUgYW5kIHlvdSBjYW4gcmVseSBvbsKgIGhhaXJwaW5f Y2FwX2dldCBjaGVjayBpbnNpZGUuDQo+IA0KDQpTYW1lIGFzIGFib3ZlIEkgd2lsbCBhZGQgYSBj aGVjayBidXQgSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2Vjb25kIHBhcnQNCkp1c3Qg dG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCwgeW91IGFyZSB0YWxraW5nIGFib3V0IHRoYXQgaWYg SSBkb24ndCBjaGVjaw0KdGhlIHJldHVybiB2YWx1ZSBJJ20gbm90IGFsbG93ZWQgdG8gY2hlY2sg dGhlIGNhcCByaWdodD8NCg0KPiA+ICsJLyogVXNlIGRlZmF1bHQgc3BlY2lmaWVkIGJ5IGRyaXZl ciwgaWYgbmJfdHhfZGVzYyBpcyB6ZXJvICovDQo+ID4gKwlpZiAobmJfdHhfZGVzYyA9PSAwKQ0K PiA+ICsJCW5iX3R4X2Rlc2MgPSBjYXAubWF4X25iX2Rlc2M7DQo+ID4gKwlpZiAobmJfdHhfZGVz YyA+IGNhcC5tYXhfbmJfZGVzYykgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiAr CQkJICAgICAgICJJbnZhbGlkIHZhbHVlIGZvciBuYl90eF9kZXNjKD0laHUpLCBzaG91bGQgYmU6 ICINCj4gPiArCQkJICAgICAgICI8PSAlaHUiLCBuYl90eF9kZXNjLCBjYXAubWF4X25iX2Rlc2Mp Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGNvbmYtPnBlZXJf biA+IGNhcC5tYXhfdHhfMl9yeCkgew0KPiA+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPiAr CQkJICAgICAgICJJbnZhbGlkIHZhbHVlIGZvciBudW1iZXIgb2YgcGVlcnMoPSVodSksICINCj4g PiArCQkJICAgICAgICJzaG91bGQgYmU6IDw9ICVodSIsIGNvbmYtPnBlZXJfbiwNCj4gPiArCQkJ ICAgICAgIGNhcC5tYXhfdHhfMl9yeCk7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9 DQo+ID4gKwlpZiAoY29uZi0+cGVlcl9uID09IDApIHsNCj4gPiArCQlSVEVfRVRIREVWX0xPRyhF UlIsDQo+ID4gKwkJCSAgICAgICAiSW52YWxpZCB2YWx1ZSBmb3IgbnVtYmVyIG9mIHBlZXJzKD0l aHUpLCAiDQo+ID4gKwkJCSAgICAgICAic2hvdWxkIGJlOiA+IDAiLCBjb25mLT5wZWVyX24pOw0K PiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGNhcC5tYXhfbl9xdWV1 ZXMgIT0gLTEpIHsNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5uYl90eF9xdWV1 ZXM7IGkrKykgew0KPiA+ICsJCQlpZiAoZGV2LT5kYXRhLT50eF9xdWV1ZV9zdGF0ZVtpXSA9PQ0K PiA+ICsJCQkgICAgUlRFX0VUSF9RVUVVRV9TVEFURV9IQUlSUElOKQ0KPiA+ICsJCQkJY291bnQr KzsNCj4gPiArCQl9DQo+ID4gKwkJaWYgKGNvdW50ID4gY2FwLm1heF9uX3F1ZXVlcykgew0KPiA+ ICsJCQlSVEVfRVRIREVWX0xPRyhFUlIsDQo+ID4gKwkJCQkgICAgICAgIlRvIG1hbnkgUnggaGFp cnBpbiBxdWV1ZXMgJWQiLCBjb3VudCk7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJ CX0NCj4gPiArCX0NCj4gPiArCWlmIChkZXYtPmRhdGEtPmRldl9zdGFydGVkICYmDQo+ID4gKwkJ IShkZXZfaW5mby5kZXZfY2FwYSAmDQo+ID4gKwkJICBSVEVfRVRIX0RFVl9DQVBBX1JVTlRJTUVf VFhfUVVFVUVfU0VUVVApKQ0KPiA+ICsJCXJldHVybiAtRUJVU1k7DQo+ID4gKwlpZiAoZGV2LT5k YXRhLT5kZXZfc3RhcnRlZCAmJg0KPiA+ICsJCShkZXYtPmRhdGEtPnR4X3F1ZXVlX3N0YXRlW3R4 X3F1ZXVlX2lkXSAhPQ0KPiA+ICsJCSBSVEVfRVRIX1FVRVVFX1NUQVRFX1NUT1BQRUQpKQ0KPiA+ ICsJCXJldHVybiAtRUJVU1k7DQo+ID4gKwl0eHEgPSBkZXYtPmRhdGEtPnR4X3F1ZXVlczsNCj4g PiArCWlmICh0eHFbdHhfcXVldWVfaWRdKSB7DQo+IA0KPiBQbGVhc2UsIGNvbXBhcmUgd2l0aCBO VUxMDQo+IA0KDQpPLksuDQoNCj4gPiArCQlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5k ZXZfb3BzLQ0KPiA+dHhfcXVldWVfcmVsZWFzZSwNCj4gPiArCQkJCQktRU5PVFNVUCk7DQo+ID4g KwkJKCpkZXYtPmRldl9vcHMtPnR4X3F1ZXVlX3JlbGVhc2UpKHR4cVt0eF9xdWV1ZV9pZF0pOw0K PiA+ICsJCXR4cVt0eF9xdWV1ZV9pZF0gPSBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsJcmV0ID0gKCpk ZXYtPmRldl9vcHMtPnR4X2hhaXJwaW5fcXVldWVfc2V0dXApDQo+ID4gKwkJKGRldiwgdHhfcXVl dWVfaWQsIG5iX3R4X2Rlc2MsIGNvbmYpOw0KPiA+ICsJaWYgKCFyZXQpDQo+IA0KPiBQbGVhc2Us IGNvbXBhcmUgd2l0aCAwDQo+IA0KDQpPLksuDQoNCj4gPiArCQlkZXYtPmRhdGEtPnR4X3F1ZXVl X3N0YXRlW3R4X3F1ZXVlX2lkXSA9DQo+ID4gKwkJCVJURV9FVEhfUVVFVUVfU1RBVEVfSEFJUlBJ TjsNCj4gPiArCXJldHVybiBldGhfZXJyKHBvcnRfaWQsIHJldCk7DQo+ID4gICB9DQo+ID4NCj4g PiAgIHZvaWQNCj4gPiBAQCAtMzk4MSwxMiArNDE1OSwyMCBAQCBpbnQgcnRlX2V0aF9zZXRfcXVl dWVfcmF0ZV9saW1pdCh1aW50MTZfdA0KPiBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZHgsDQo+ ID4gICAJcnRlX2Vycm5vID0gRU5PVFNVUDsNCj4gPiAgIAlyZXR1cm4gTlVMTDsNCj4gPiAgICNl bmRpZg0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXY7DQo+ID4gKw0KPiA+ICAgCS8qIGNo ZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8NCj4gPiAgIAlpZiAoIXJ0ZV9ldGhfZGV2X2lzX3ZhbGlk X3BvcnQocG9ydF9pZCkgfHwgZm4gPT0gTlVMTCB8fA0KPiA+ICAgCQkgICAgcXVldWVfaWQgPj0g cnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdLmRhdGEtPm5iX3J4X3F1ZXVlcykgew0KPiA+ICAgCQly dGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gICAJCXJldHVybiBOVUxMOw0KPiA+ICAgCX0NCj4gPiAr CWRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKwlpZiAoZGV2LT5kYXRhLT5y eF9xdWV1ZV9zdGF0ZVtxdWV1ZV9pZF0gPT0NCj4gPiArCSAgICBSVEVfRVRIX1FVRVVFX1NUQVRF X0hBSVJQSU4pIHsNCj4gDQo+IEl0IGxvb2tzIGxpa2UgbGluZSBicmVhayBpcyBub3QgcmVxdWly ZWQgYWJvdmUuIEp1c3QgdG8gbWFrZSBjb2RlIGEgYml0DQo+IHNob3J0ZXIuDQo+IA0KDQpXaWxs IGZpeCBpZiBwb3NzaWJsZS4NCg0KPiA+ICsJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiArCQly ZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiAgIAlzdHJ1Y3QgcnRlX2V0aF9yeHR4X2NhbGxiYWNr ICpjYiA9IHJ0ZV96bWFsbG9jKE5VTEwsIHNpemVvZigqY2IpLCAwKTsNCj4gPg0KPiA+ICAgCWlm IChjYiA9PSBOVUxMKSB7DQo+ID4gQEAgLTQwNTgsNiArNDI0NCw4IEBAIGludCBydGVfZXRoX3Nl dF9xdWV1ZV9yYXRlX2xpbWl0KHVpbnQxNl90IHBvcnRfaWQsDQo+IHVpbnQxNl90IHF1ZXVlX2lk eCwNCj4gPiAgIAlydGVfZXJybm8gPSBFTk9UU1VQOw0KPiA+ICAgCXJldHVybiBOVUxMOw0KPiA+ ICAgI2VuZGlmDQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArDQo+ID4gICAJ LyogY2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLw0KPiA+ICAgCWlmICghcnRlX2V0aF9kZXZfaXNf dmFsaWRfcG9ydChwb3J0X2lkKSB8fCBmbiA9PSBOVUxMIHx8DQo+ID4gICAJCSAgICBxdWV1ZV9p ZCA+PSBydGVfZXRoX2RldmljZXNbcG9ydF9pZF0uZGF0YS0+bmJfdHhfcXVldWVzKSB7DQo+ID4g QEAgLTQwNjUsNiArNDI1MywxMyBAQCBpbnQgcnRlX2V0aF9zZXRfcXVldWVfcmF0ZV9saW1pdCh1 aW50MTZfdA0KPiBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZHgsDQo+ID4gICAJCXJldHVybiBO VUxMOw0KPiA+ICAgCX0NCj4gPg0KPiA+ICsJZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lk XTsNCj4gPiArCWlmIChkZXYtPmRhdGEtPnR4X3F1ZXVlX3N0YXRlW3F1ZXVlX2lkXSA9PQ0KPiA+ ICsJICAgIFJURV9FVEhfUVVFVUVfU1RBVEVfSEFJUlBJTikgew0KPiANCj4gSXQgbG9va3MgbGlr ZSBsaW5lIGJyZWFrIGlzIG5vdCByZXF1aXJlZCBhYm92ZS4gSnVzdCB0byBtYWtlIGNvZGUgYSBi aXQNCj4gc2hvcnRlci4NCj4gDQoNCldpbGwgZml4Lg0KDQo+ID4gKwkJcnRlX2Vycm5vID0gRUlO VkFMOw0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAgIAlzdHJ1Y3Qg cnRlX2V0aF9yeHR4X2NhbGxiYWNrICpjYiA9IHJ0ZV96bWFsbG9jKE5VTEwsIHNpemVvZigqY2Ip LCAwKTsNCj4gPg0KPiA+ICAgCWlmIChjYiA9PSBOVUxMKSB7DQo+ID4gQEAgLTQ1MTAsNiArNDcw NSwyMSBAQCBpbnQgcnRlX2V0aF9zZXRfcXVldWVfcmF0ZV9saW1pdCh1aW50MTZfdA0KPiBwb3J0 X2lkLCB1aW50MTZfdCBxdWV1ZV9pZHgsDQo+ID4gICB9DQo+ID4NCj4gPiAgIGludA0KPiA+ICty dGVfZXRoX2Rldl9oYWlycGluX2NhcGFiaWxpdHlfZ2V0KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4g KwkJCQkgICBzdHJ1Y3QgcnRlX2V0aF9oYWlycGluX2NhcCAqY2FwKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPiArDQo+ID4gKwlSVEVfRVRIX1ZBTElEX1BPUlRJ RF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FSU5WQUwpOw0KPiA+ICsNCj4gPiArCWRldiA9ICZydGVf ZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2 LT5kZXZfb3BzLT5oYWlycGluX2NhcF9nZXQsDQo+ID4gKwkJCQktRU5PVFNVUCk7DQo+IA0KPiBJ IHRoaW5rIGl0IHdvdWxkIGJlIHVzZWZ1bCB0byBtZW1zZXQoKSBjYXAgd2l0aCAwIHRvIGJlIHN1 cmUgdGhhdCBpdCBpcw0KPiBpbml0aWFsaXplZC4NCj4gDQoNCk8uSyBidXQgaWYgd2UgZm9sbG93 IHlvdXIgY29tbWVudHMgZnJvbSBhYm92ZSwgdGhlIHJlc3VsdCBpcyBub3QgdmFsaWQgaWYgd2Ug cmV0dXJuDQplcnJvciwgc28gaXQgaXMgbm90IGEgbXVzdCwgYnV0IGxpa2UgSSBzYWlkIEkgZG9u J3QgY2FyZSB0byBhZGQgaXQuDQoNCj4gPiArCXJldHVybiBldGhfZXJyKHBvcnRfaWQsICgqZGV2 LT5kZXZfb3BzLT5oYWlycGluX2NhcF9nZXQpDQo+ID4gKwkJICAgICAgIChkZXYsIGNhcCkpOw0K PiANCj4gDQo+IFBsZWFzZSwgY29uc2lkZXIgdG8gYXZvaWQgbGluZSBicmVha3MgYWJvdmUgdG8g bWFrZSBjb2RlIGEgYml0IHNob3J0ZXIuDQo+IE9mIGNvdXJzZSwgaXQgc2hvdWxkIG5vdCBleGNl ZWQgbGluZSBsZW5ndGggbGltaXQuDQo+IA0KDQpXaWxsIGNoZWNrLg0KDQo+ID4gK30NCj4gPiAr DQo+ID4gK2ludA0KPiA+ICAgcnRlX2V0aF9kZXZfcG9vbF9vcHNfc3VwcG9ydGVkKHVpbnQxNl90 IHBvcnRfaWQsIGNvbnN0IGNoYXIgKnBvb2wpDQo+ID4gICB7DQo+ID4gICAJc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXY7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhk ZXYuaCBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+IGluZGV4IGQ5MzdmYjQu LjI5ZGNmZWEgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5o DQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4gQEAgLTgwNCw2 ICs4MDQsNDYgQEAgc3RydWN0IHJ0ZV9ldGhfdHhjb25mIHsNCj4gPiAgIH07DQo+ID4NCj4gPiAg IC8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJ IG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gbm90aWNlDQo+ID4g KyAqDQo+ID4gKyAqIEEgc3RydWN0dXJlIHVzZWQgdG8gcmV0dXJuIHRoZSBoYWlycGluIGNhcGFi aWxpdGllcyB0aGF0IGFyZSBzdXBwb3J0ZC4NCj4gDQo+IHN1cHBvcnRkIC0+IHN1cHBvcnRlZA0K Pg0KDQpXaWxsIGZpeC4NCiANCj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfZXRoX2hhaXJwaW5f Y2FwIHsNCj4gPiArCWludDE2X3QgbWF4X25fcXVldWVzOw0KPiA+ICsJLyoqPCBUaGUgbWF4IG51 bWJlciBvZiBoYWlycGluIHF1ZXVlc2kuIC0xIG5vIGxpbWl0LiAqLw0KPiANCj4gSSdtIG5vdCBz dXJlIHRoYXQgSSBsaWtlIHR5cGUgZGlmZmVyZW5jZSBmcm9tIG1heF9yeF9xdWV1ZXMgaGVyZS4N Cj4gSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdXNlIHVpbnQxNl90LiBJIHdvdWxkIHNh eSB0aGVyZSBpcyBwb2ludA0KPiB0byBoaWdobGlnaHQgbm8gbGltaXQgKGZpcnN0IG9mIGFsbCBJ J20gbm90IHN1cmUgdGhhdCBpdCBtYWtlcyBzZW5zZSwNCj4gc2Vjb25kLCBVSU5UMTZfTUFYIHdp bGwgb2J2aW91c2x5IGRvIHRoZSBqb2IgaW4gdWludDE2X3QuDQo+IA0KPiBJcyBpdCBib3RoIFJ4 IGFuZCBUeD8NCj4gDQo+ID4gKwlpbnQxNl90IG1heF9yeF8yX3R4Ow0KPiA+ICsJLyoqPCBNYXgg bnVtYmVyIG9mIFJ4IHF1ZXVlcyB0byBiZSBjb25uZWN0ZWQgdG8gb25lIFR4IHF1ZXVlLiAqLw0K PiA+ICsJaW50MTZfdCBtYXhfdHhfMl9yeDsNCj4gPiArCS8qKjwgTWF4IG51bWJlciBvZiBUeCBx dWV1ZXMgdG8gYmUgY29ubmVjdGVkIHRvIG9uZSBSeCBxdWV1ZS4gKi8NCj4gDQo+IEkgd291bGQg cHJlZmVyIHRvIGhhdmUgdWludDE2X3QgaGVyZSBhcyB3ZWxsLiBNYWlubHkgZm9yIGNvbnNpc3Rl bmN5Lg0KPiANCg0KQWdyZWUsIHdpbGwgZml4LA0KDQo+ID4gKwl1aW50MTZfdCBtYXhfbmJfZGVz YzsgLyoqPCBUaGUgbWF4IG51bSBvZiBkZXNjcmlwdG9ycy4gKi8NCj4gDQo+IElzIGl0IGNvbW1v biBmb3IgUnggYW5kIFR4PyBXaGF0IGFib3V0IG1pbj8NCj4gDQoNCkkgdGhpbmsgbWluIGlzIGFs d2F5cyAxLCBieSAgZGVmaW5pdGlvbi4NCg0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBS VEVfRVRIX01BWF9IQUlSUElOX1BFRVJTIDMyDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdh cm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlLCBvciBi ZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+IG5vdGljZQ0KPiA+ICsgKg0KPiA+ICsgKiBBIHN0 cnVjdHVyZSB1c2VkIHRvIGhvbGQgaGFpcnBpbiBwZWVyIGRhdGEuDQo+ID4gKyAqLw0KPiA+ICtz dHJ1Y3QgcnRlX2V0aF9oYWlycGluX3BlZXIgew0KPiA+ICsJdWludDE2X3QgcG9ydDsgLyoqPCBQ ZWVyIHBvcnQuICovDQo+ID4gKwl1aW50MTZfdCBxdWV1ZTsgLyoqPCBQZWVyIHF1ZXVlLiAqLw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVY UEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBw cmlvcg0KPiBub3RpY2UNCj4gPiArICoNCj4gPiArICogQSBzdHJ1Y3R1cmUgdXNlZCB0byBjb25m aWd1cmUgaGFpcnBpbiBiaW5kaW5nLg0KPiANCj4gSXQgc2hvdWxkIGJlIGV4cGxhaW5lZCB3aGF0 IGhhcHBlbnMgaWYgUnggcXVldWUgaGFzIG1hbnkgVHggcXVldWVzLg0KPiBJcyBwYWNrZXQgZHVw bGljYXRlZD8gT3IgZGlzdHJpYnV0ZWQ/DQo+IA0KDQpMaWtlIHdlIHNhaWQgYmVmb3JlLCBJIGRv bid0IGtub3cgaXQgZGVwZW5kcyBvbiB0aGUgTmljLiANCkluIGNhc2Ugb2YgTWVsbGFub3ggd2Ug ZG9uJ3Qgc3VwcG9ydCAxIHRvIG1hbnkuDQoNCj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfZXRo X2hhaXJwaW5fY29uZiB7DQo+ID4gKwl1aW50MTZfdCBwZWVyX247IC8qKjwgVGhlIG51bWJlciBv ZiBwZWVycy4gKi8NCj4gPiArCXN0cnVjdCBydGVfZXRoX2hhaXJwaW5fcGVlciBwZWVyc1tSVEVf RVRIX01BWF9IQUlSUElOX1BFRVJTXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICAg ICogQSBzdHJ1Y3R1cmUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgSFcgZGVzY3JpcHRvciBy aW5nIGxpbWl0YXRpb25zLg0KPiA+ICAgICovDQo+ID4gICBzdHJ1Y3QgcnRlX2V0aF9kZXNjX2xp bSB7DQo+ID4gQEAgLTEwODAsNiArMTEyMCw4IEBAIHN0cnVjdCBydGVfZXRoX2NvbmYgew0KPiA+ ICAgLyoqPCBEZXZpY2Ugc3VwcG9ydHMgUnggcXVldWUgc2V0dXAgYWZ0ZXIgZGV2aWNlIHN0YXJ0 ZWQqLw0KPiA+ICAgI2RlZmluZSBSVEVfRVRIX0RFVl9DQVBBX1JVTlRJTUVfVFhfUVVFVUVfU0VU VVAgMHgwMDAwMDAwMg0KPiA+ICAgLyoqPCBEZXZpY2Ugc3VwcG9ydHMgVHggcXVldWUgc2V0dXAg YWZ0ZXIgZGV2aWNlIHN0YXJ0ZWQqLw0KPiA+ICsjZGVmaW5lIFJURV9FVEhfREVWX0NBUEFfSEFJ UlBJTl9TVVBQT1JUIDB4MDAwMDAwMDQNCj4gPiArLyoqPCBEZXZpY2Ugc3VwcG9ydHMgaGFpcnBp biBxdWV1ZXMuICovDQo+IA0KPiBEbyB3ZSByZWFsbHkgbmVlZCBpdD8gSXNuJ3QgcnRlX2V0aF9k ZXZfaGFpcnBpbl9jYXBhYmlsaXR5X2dldCgpIHJldHVybmluZw0KPiAtRU5PVFNVUCBzdWZmaWNp ZW50Pw0KPg0KDQpJIGFncmVlIHdpdGggeW91LCBidXQgbXkgdGhpbmtpbmcgd2FzIHRoYXQgdXNp bmcgdGhlIGNhcCB0aGUgYXBwbGljYXRpb24gDQpjYW4gYXZvaWQgY2FsbGluZyB0byBmdW5jdGlv biB0aGF0IHdpbGwgZmFpbC4NCklmIHlvdSBhcHByb3ZlIEkgd2lsbCByZW1vdmUgdGhpcyBjYXAu DQogDQo+ID4gICAvKg0KPiA+ICAgICogSWYgbmV3IFR4IG9mZmxvYWQgY2FwYWJpbGl0aWVzIGFy ZSBkZWZpbmVkLCB0aGV5IGFsc28gbXVzdCBiZQ0KPiA+IEBAIC0xMjc3LDYgKzEzMTksNyBAQCBz dHJ1Y3QgcnRlX2V0aF9kY2JfaW5mbyB7DQo+ID4gICAgKi8NCj4gPiAgICNkZWZpbmUgUlRFX0VU SF9RVUVVRV9TVEFURV9TVE9QUEVEIDANCj4gPiAgICNkZWZpbmUgUlRFX0VUSF9RVUVVRV9TVEFU RV9TVEFSVEVEIDENCj4gPiArI2RlZmluZSBSVEVfRVRIX1FVRVVFX1NUQVRFX0hBSVJQSU4gMg0K PiA+DQo+ID4gICAjZGVmaW5lIFJURV9FVEhfQUxMIFJURV9NQVhfRVRIUE9SVFMNCj4gPg0KPiA+ IEBAIC0xNzcxLDYgKzE4MTQsMzQgQEAgaW50IHJ0ZV9ldGhfcnhfcXVldWVfc2V0dXAodWludDE2 X3QgcG9ydF9pZCwNCj4gdWludDE2X3QgcnhfcXVldWVfaWQsDQo+ID4gICAJCXN0cnVjdCBydGVf bWVtcG9vbCAqbWJfcG9vbCk7DQo+ID4NCj4gPiAgIC8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQs IHdpdGhvdXQgcHJpb3INCj4gbm90aWNlDQo+ID4gKyAqDQo+ID4gKyAqIEFsbG9jYXRlIGFuZCBz ZXQgdXAgYSBoYWlycGluIHJlY2VpdmUgcXVldWUgZm9yIGFuIEV0aGVybmV0IGRldmljZS4NCj4g PiArICoNCj4gPiArICogVGhlIGZ1bmN0aW9uIHNldCB1cCB0aGUgc2VsZWN0ZWQgcXVldWUgdG8g YmUgdXNlZCBpbiBoYWlycGluLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+ ICsgKiAgIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVybmV0IGRldmljZS4NCj4gPiAr ICogQHBhcmFtIHJ4X3F1ZXVlX2lkDQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSByZWNlaXZl IHF1ZXVlIHRvIHNldCB1cC4NCj4gPiArICogICBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFu Z2UgWzAsIG5iX3J4X3F1ZXVlIC0gMV0gcHJldmlvdXNseSBzdXBwbGllZA0KPiA+ICsgKiAgIHRv IHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpLg0KPiA+ICsgKiBAcGFyYW0gbmJfcnhfZGVzYw0KPiA+ ICsgKiAgIFRoZSBudW1iZXIgb2YgcmVjZWl2ZSBkZXNjcmlwdG9ycyB0byBhbGxvY2F0ZSBmb3Ig dGhlIHJlY2VpdmUgcmluZy4NCj4gDQo+IElzIGl0IGFsbG93cyB0byBzcGVjaWZ5IDAgdG8gcGlj ayBkcml2ZXIgcmVjb21tZW5kZWQgdmFsdWU/DQo+IA0KDQpZZXMsIChhc3N1bWluZyB5b3UgYXJl IHRhbGtpbmcgYWJvdXQgdGhlIG5iX3J4X2Rlc2MpDQoNCj4gPiArICogQHBhcmFtIGNvbmYNCj4g PiArICogICBUaGUgcG9pbnRlciB0byB0aGUgaGFpcnBpbiBjb25maWd1cmF0aW9uLg0KPiA+ICsg KiBAcmV0dXJuDQo+ID4gKyAqICAgLSAwOiBTdWNjZXNzLCByZWNlaXZlIHF1ZXVlIGNvcnJlY3Rs eSBzZXQgdXAuDQo+ID4gKyAqICAgLSAtRUlOVkFMOiBTZWxlY3RlZCBRdWV1ZSBjYW4ndCBiZSBj b25maWd1cmVkIGZvciBoYWlycGluLg0KPiA+ICsgKiAgIC0gLUVOT01FTTogVW5hYmxlIHRvIGFs bG9jYXRlIHRoZSByZXNvdXJjZXMgcmVxdWlyZWQgZm9yIHRoZSBxdWV1ZS4NCj4gDQo+IFBsZWFz ZSwgZm9sbG93IHJldHVybiB2YWx1ZSBkZXNjcmlwdGlvbiBzdHlsZSBzaW1pbGFyIHRvDQo+IHJ0 ZV9ldGhfZGV2X2luZm9fZ2V0KCkNCj4gd2hpY2ggaXMgbW9yZSBjb21tb24gdG8gdGhlIGZpbGUu DQo+IA0KDQpPLksNCg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK2lu dCBydGVfZXRoX3J4X2hhaXJwaW5fcXVldWVfc2V0dXANCj4gPiArCSh1aW50MTZfdCBwb3J0X2lk LCB1aW50MTZfdCByeF9xdWV1ZV9pZCwgdWludDE2X3QgbmJfcnhfZGVzYywNCj4gPiArCSBjb25z dCBzdHJ1Y3QgcnRlX2V0aF9oYWlycGluX2NvbmYgKmNvbmYpOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gICAgKiBBbGxvY2F0ZSBhbmQgc2V0IHVwIGEgdHJhbnNtaXQgcXVldWUgZm9yIGFuIEV0aGVy bmV0IGRldmljZS4NCj4gPiAgICAqDQo+ID4gICAgKiBAcGFyYW0gcG9ydF9pZA0KPiA+IEBAIC0x ODIzLDYgKzE4OTQsMzMgQEAgaW50IHJ0ZV9ldGhfdHhfcXVldWVfc2V0dXAodWludDE2X3QgcG9y dF9pZCwNCj4gdWludDE2X3QgdHhfcXVldWVfaWQsDQo+ID4gICAJCWNvbnN0IHN0cnVjdCBydGVf ZXRoX3R4Y29uZiAqdHhfY29uZik7DQo+ID4NCj4gPiAgIC8qKg0KPiA+ICsgKiBAd2FybmluZw0K PiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92 ZWQsIHdpdGhvdXQgcHJpb3INCj4gbm90aWNlDQo+ID4gKyAqDQo+ID4gKyAqIEFsbG9jYXRlIGFu ZCBzZXQgdXAgYSB0cmFuc21pdCBoYWlycGluIHF1ZXVlIGZvciBhbiBFdGhlcm5ldCBkZXZpY2Uu DQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgVGhlIHBvcnQgaWRl bnRpZmllciBvZiB0aGUgRXRoZXJuZXQgZGV2aWNlLg0KPiA+ICsgKiBAcGFyYW0gdHhfcXVldWVf aWQNCj4gPiArICogICBUaGUgaW5kZXggb2YgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIHNldCB1cC4N Cj4gPiArICogICBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAsIG5iX3R4X3F1ZXVl IC0gMV0gcHJldmlvdXNseSBzdXBwbGllZA0KPiA+ICsgKiAgIHRvIHJ0ZV9ldGhfZGV2X2NvbmZp Z3VyZSgpLg0KPiA+ICsgKiBAcGFyYW0gbmJfdHhfZGVzYw0KPiA+ICsgKiAgIFRoZSBudW1iZXIg b2YgdHJhbnNtaXQgZGVzY3JpcHRvcnMgdG8gYWxsb2NhdGUgZm9yIHRoZSB0cmFuc21pdCByaW5n Lg0KPiANCj4gSXMgaXQgYWxsb3dzIHRvIHNwZWNpZnkgMCB0byBwaWNrIGRyaXZlciByZWNvbW1l bmRlZCB2YWx1ZT8NCj4gDQoNCkxpa2UgYWJvdmUgeWVzLCANCg0KPiA+ICsgKiBAcGFyYW0gY29u Zg0KPiA+ICsgKiAgIFRoZSBoYWlycGluIGNvbmZpZ3VyYXRpb24uDQo+ID4gKyAqDQo+ID4gKyAq IEByZXR1cm4NCj4gPiArICogICAtIDA6IFN1Y2Nlc3MsIHRyYW5zbWl0IHF1ZXVlIGNvcnJlY3Rs eSBzZXQgdXAuDQo+ID4gKyAqICAgLSAtRUlOVkFMOiBTZWxlY3RlZCBRdWV1ZSBjYW4ndCBiZSBj b25maWd1cmVkIGZvciBoYWlycGluLg0KPiA+ICsgKiAgIC0gLUVOT01FTTogVW5hYmxlIHRvIGFs bG9jYXRlIHRoZSByZXNvdXJjZXMgcmVxdWlyZWQgZm9yIHRoZSBxdWV1ZS4NCj4gDQo+IFBsZWFz ZSwgZm9sbG93IHJldHVybiB2YWx1ZSBkZXNjcmlwdGlvbiBzdHlsZSBzaW1pbGFyIHRvDQo+IHJ0 ZV9ldGhfZGV2X2luZm9fZ2V0KCkNCj4gd2hpY2ggaXMgbW9yZSBjb21tb24gdG8gdGhlIGZpbGUu DQo+IA0KDQpXaWxsIGZpeC4NCg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ ID4gK2ludCBydGVfZXRoX3R4X2hhaXJwaW5fcXVldWVfc2V0dXANCj4gPiArCSh1aW50MTZfdCBw b3J0X2lkLCB1aW50MTZfdCB0eF9xdWV1ZV9pZCwgdWludDE2X3QgbmJfdHhfZGVzYywNCj4gPiAr CSBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9oYWlycGluX2NvbmYgKmNvbmYpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gICAgKiBSZXR1cm4gdGhlIE5VTUEgc29ja2V0IHRvIHdoaWNoIGFuIEV0aGVybmV0 IGRldmljZSBpcyBjb25uZWN0ZWQNCj4gPiAgICAqDQo+ID4gICAgKiBAcGFyYW0gcG9ydF9pZA0K PiA+IEBAIC00MDM3LDYgKzQxMzUsMjIgQEAgaW50IHJ0ZV9ldGhfZGV2X2FkanVzdF9uYl9yeF90 eF9kZXNjKHVpbnQxNl90DQo+IHBvcnRfaWQsDQo+ID4gICB2b2lkICoNCj4gPiAgIHJ0ZV9ldGhf ZGV2X2dldF9zZWNfY3R4KHVpbnQxNl90IHBvcnRfaWQpOw0KPiA+DQo+ID4gKy8qKg0KPiA+ICsg KiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Us IG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gbm90aWNlDQo+ID4gKyAqDQo+ID4gKyAq IFF1ZXJ5IHRoZSBkZXZpY2UgaGFpcnBpbiBjYXBhYmlsaXRpZXMuDQo+ID4gKyAqDQo+ID4gKyAq IEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRo ZXJuZXQgZGV2aWNlLg0KPiA+ICsgKiBAcGFyYW0gY2FwDQo+ID4gKyAqICAgUG9pbnRlciB0byBh IHN0cnVjdHVyZSB0aGF0IHdpbGwgaG9sZCB0aGUgaGFpcnBpbiBjYXBhYmlsaXRpZXMuDQo+ID4g KyAqIEByZXR1cm4NCj4gPiArICogICAtIDAgb24gc3VjY2VzcywgLUVOT1RTVVAgaWYgdGhlIGRl dmljZSBkb2Vzbid0IHN1cHBvcnQgaGFpcnBpbi4NCj4gDQo+IFBsZWFzZSwgZm9sbG93IHJldHVy biB2YWx1ZSBkZXNjcmlwdGlvbiBzdHlsZSBzaW1pbGFyIHRvDQo+IHJ0ZV9ldGhfZGV2X2luZm9f Z2V0KCkNCj4gd2hpY2ggaXMgbW9yZSBjb21tb24gdG8gdGhlIGZpbGUuDQo+IA0KDQpXaWxsIGZp eC4NCg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK2ludCBydGVfZXRo X2Rldl9oYWlycGluX2NhcGFiaWxpdHlfZ2V0KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJCQkg ICAgICAgc3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9jYXAgKmNhcCk7DQo+ID4NCj4gPiAgICNpbmNs dWRlIDxydGVfZXRoZGV2X2NvcmUuaD4NCj4gPg0KPiA+IEBAIC00MTM3LDYgKzQyNTEsMTIgQEAg aW50IHJ0ZV9ldGhfZGV2X2FkanVzdF9uYl9yeF90eF9kZXNjKHVpbnQxNl90DQo+IHBvcnRfaWQs DQo+ID4gICAJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgUlggcXVldWVfaWQ9JXVcbiIs DQo+IHF1ZXVlX2lkKTsNCj4gPiAgIAkJcmV0dXJuIDA7DQo+ID4gICAJfQ0KPiA+ICsJaWYgKGRl di0+ZGF0YS0+cnhfcXVldWVfc3RhdGVbcXVldWVfaWRdID09DQo+ID4gKwkgICAgUlRFX0VUSF9R VUVVRV9TVEFURV9IQUlSUElOKSB7DQo+ID4gKwkJUlRFX0VUSERFVl9MT0coRVJSLCAiUlggcXVl dWVfaWQ9JXUgaXMgaGFpcnBpbiBxdWV1ZVxuIiwNCj4gPiArCQkJICAgICAgIHF1ZXVlX2lkKTsN Cj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiAgICNlbmRpZg0KPiA+ICAgCW5iX3J4ID0g KCpkZXYtPnJ4X3BrdF9idXJzdCkoZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcXVldWVfaWRdLA0KPiA+ ICAgCQkJCSAgICAgcnhfcGt0cywgbmJfcGt0cyk7DQo+ID4gQEAgLTQ0MDMsNiArNDUyMywxMiBA QCBzdGF0aWMgaW5saW5lIGludA0KPiBydGVfZXRoX3R4X2Rlc2NyaXB0b3Jfc3RhdHVzKHVpbnQx Nl90IHBvcnRfaWQsDQo+ID4gICAJCVJURV9FVEhERVZfTE9HKEVSUiwgIkludmFsaWQgVFggcXVl dWVfaWQ9JXVcbiIsDQo+IHF1ZXVlX2lkKTsNCj4gPiAgIAkJcmV0dXJuIDA7DQo+ID4gICAJfQ0K PiA+ICsJaWYgKGRldi0+ZGF0YS0+dHhfcXVldWVfc3RhdGVbcXVldWVfaWRdID09DQo+ID4gKwkg ICAgUlRFX0VUSF9RVUVVRV9TVEFURV9IQUlSUElOKSB7DQo+ID4gKwkJUlRFX0VUSERFVl9MT0co RVJSLCAiVFggcXVldWVfaWQ9JXUgaXMgaGFpcnBpbiBxdWV1ZVxuIiwNCj4gPiArCQkJICAgICAg IHF1ZXVlX2lkKTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiAgICNlbmRpZg0KPiA+ DQo+ID4gICAjaWZkZWYgUlRFX0VUSERFVl9SWFRYX0NBTExCQUNLUw0KPiA+IGRpZmYgLS1naXQg YS9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X2NvcmUuaA0KPiBiL2xpYi9saWJydGVfZXRo ZGV2L3J0ZV9ldGhkZXZfY29yZS5oDQo+ID4gaW5kZXggZGNiNWFlNi4uZWY0NmU3MSAxMDA2NDQN Cj4gPiAtLS0gYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X2NvcmUuaA0KPiA+ICsrKyBi L2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5oDQo+ID4gQEAgLTI1MCw2ICsyNTAs MTIgQEAgdHlwZWRlZiBpbnQgKCpldGhfcnhfcXVldWVfc2V0dXBfdCkoc3RydWN0DQo+IHJ0ZV9l dGhfZGV2ICpkZXYsDQo+ID4gICAJCQkJICAgIHN0cnVjdCBydGVfbWVtcG9vbCAqbWJfcG9vbCk7 DQo+ID4gICAvKio8IEBpbnRlcm5hbCBTZXQgdXAgYSByZWNlaXZlIHF1ZXVlIG9mIGFuIEV0aGVy bmV0IGRldmljZS4gKi8NCj4gPg0KPiA+ICt0eXBlZGVmIGludCAoKmV0aF9yeF9oYWlycGluX3F1 ZXVlX3NldHVwX3QpDQo+ID4gKwkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHJ4 X3F1ZXVlX2lkLA0KPiA+ICsJIHVpbnQxNl90IG5iX3J4X2Rlc2MsDQo+ID4gKwkgY29uc3Qgc3Ry dWN0IHJ0ZV9ldGhfaGFpcnBpbl9jb25mICpjb25mKTsNCj4gPiArLyoqPCBAaW50ZXJuYWwgU2V0 IHVwIGEgcmVjZWl2ZSBoYWlycGluIHF1ZXVlIG9mIGFuIEV0aGVybmV0IGRldmljZS4gKi8NCj4g PiArDQo+ID4gICB0eXBlZGVmIGludCAoKmV0aF90eF9xdWV1ZV9zZXR1cF90KShzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwNCj4gPiAgIAkJCQkgICAgdWludDE2X3QgdHhfcXVldWVfaWQsDQo+ID4g ICAJCQkJICAgIHVpbnQxNl90IG5iX3R4X2Rlc2MsDQo+ID4gQEAgLTI1Nyw2ICsyNjMsMTIgQEAg dHlwZWRlZiBpbnQgKCpldGhfdHhfcXVldWVfc2V0dXBfdCkoc3RydWN0DQo+IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ID4gICAJCQkJICAgIGNvbnN0IHN0cnVjdCBydGVfZXRoX3R4Y29uZiAqdHhfY29u Zik7DQo+ID4gICAvKio8IEBpbnRlcm5hbCBTZXR1cCBhIHRyYW5zbWl0IHF1ZXVlIG9mIGFuIEV0 aGVybmV0IGRldmljZS4gKi8NCj4gPg0KPiA+ICt0eXBlZGVmIGludCAoKmV0aF90eF9oYWlycGlu X3F1ZXVlX3NldHVwX3QpDQo+ID4gKwkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90 IHR4X3F1ZXVlX2lkLA0KPiA+ICsJIHVpbnQxNl90IG5iX3R4X2Rlc2MsDQo+ID4gKwkgY29uc3Qg c3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9jb25mICpoYWlycGluX2NvbmYpOw0KPiA+ICsvKio8IEBp bnRlcm5hbCBTZXR1cCBhIHRyYW5zbWl0IGhhaXJwaW4gcXVldWUgb2YgYW4gRXRoZXJuZXQgZGV2 aWNlLiAqLw0KPiA+ICsNCj4gPiAgIHR5cGVkZWYgaW50ICgqZXRoX3J4X2VuYWJsZV9pbnRyX3Qp KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAgCQkJCSAgICB1aW50MTZfdCByeF9xdWV1 ZV9pZCk7DQo+ID4gICAvKio8IEBpbnRlcm5hbCBFbmFibGUgaW50ZXJydXB0IG9mIGEgcmVjZWl2 ZSBxdWV1ZSBvZiBhbiBFdGhlcm5ldCBkZXZpY2UuICovDQo+ID4gQEAgLTUwNSw2ICs1MTcsMTAg QEAgdHlwZWRlZiBpbnQgKCpldGhfcG9vbF9vcHNfc3VwcG9ydGVkX3QpKHN0cnVjdA0KPiBydGVf ZXRoX2RldiAqZGV2LA0KPiA+ICAgCQkJCQkJY29uc3QgY2hhciAqcG9vbCk7DQo+ID4gICAvKio8 IEBpbnRlcm5hbCBUZXN0IGlmIGEgcG9ydCBzdXBwb3J0cyBzcGVjaWZpYyBtZW1wb29sIG9wcyAq Lw0KPiA+DQo+ID4gK3R5cGVkZWYgaW50ICgqZXRoX2hhaXJwaW5fY2FwX2dldF90KShzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwNCj4gPiArCQkJCSAgICAgc3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9j YXAgKmNhcCk7DQo+ID4gKy8qKjwgQGludGVybmFsIGdldCB0aGUgaGFpcnBpbiBjYXBhYmlsaXRp ZXMuICovDQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgKiBAaW50ZXJuYWwgQSBzdHJ1Y3R1cmUg Y29udGFpbmluZyB0aGUgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IGFuIEV0aGVybmV0DQo+IGRyaXZl ci4NCj4gPiAgICAqLw0KPiA+IEBAIC01NTcsNiArNTczLDggQEAgc3RydWN0IGV0aF9kZXZfb3Bz IHsNCj4gPiAgIAlldGhfcXVldWVfc3RhcnRfdCAgICAgICAgICB0eF9xdWV1ZV9zdGFydDsvKio8 IFN0YXJ0IFRYIGZvciBhIHF1ZXVlLiAqLw0KPiA+ICAgCWV0aF9xdWV1ZV9zdG9wX3QgICAgICAg ICAgIHR4X3F1ZXVlX3N0b3A7IC8qKjwgU3RvcCBUWCBmb3IgYSBxdWV1ZS4gKi8NCj4gPiAgIAll dGhfcnhfcXVldWVfc2V0dXBfdCAgICAgICByeF9xdWV1ZV9zZXR1cDsvKio8IFNldCB1cCBkZXZp Y2UgUlgNCj4gcXVldWUuICovDQo+ID4gKwlldGhfcnhfaGFpcnBpbl9xdWV1ZV9zZXR1cF90IHJ4 X2hhaXJwaW5fcXVldWVfc2V0dXA7DQo+ID4gKwkvKio8IFNldCB1cCBkZXZpY2UgUlggaGFpcnBp biBxdWV1ZS4gKi8NCj4gPiAgIAlldGhfcXVldWVfcmVsZWFzZV90ICAgICAgICByeF9xdWV1ZV9y ZWxlYXNlOyAvKio8IFJlbGVhc2UgUlggcXVldWUuDQo+ICovDQo+ID4gICAJZXRoX3J4X3F1ZXVl X2NvdW50X3QgICAgICAgcnhfcXVldWVfY291bnQ7DQo+ID4gICAJLyoqPCBHZXQgdGhlIG51bWJl ciBvZiB1c2VkIFJYIGRlc2NyaXB0b3JzLiAqLw0KPiA+IEBAIC01NjgsNiArNTg2LDggQEAgc3Ry dWN0IGV0aF9kZXZfb3BzIHsNCj4gPiAgIAlldGhfcnhfZW5hYmxlX2ludHJfdCAgICAgICByeF9x dWV1ZV9pbnRyX2VuYWJsZTsgIC8qKjwgRW5hYmxlIFJ4IHF1ZXVlDQo+IGludGVycnVwdC4gKi8N Cj4gPiAgIAlldGhfcnhfZGlzYWJsZV9pbnRyX3QgICAgICByeF9xdWV1ZV9pbnRyX2Rpc2FibGU7 IC8qKjwgRGlzYWJsZSBSeCBxdWV1ZQ0KPiBpbnRlcnJ1cHQuICovDQo+ID4gICAJZXRoX3R4X3F1 ZXVlX3NldHVwX3QgICAgICAgdHhfcXVldWVfc2V0dXA7LyoqPCBTZXQgdXAgZGV2aWNlIFRYDQo+ IHF1ZXVlLiAqLw0KPiA+ICsJZXRoX3R4X2hhaXJwaW5fcXVldWVfc2V0dXBfdCB0eF9oYWlycGlu X3F1ZXVlX3NldHVwOw0KPiA+ICsJLyoqPCBTZXQgdXAgZGV2aWNlIFRYIGhhaXJwaW4gcXVldWUu ICovDQo+ID4gICAJZXRoX3F1ZXVlX3JlbGVhc2VfdCAgICAgICAgdHhfcXVldWVfcmVsZWFzZTsg LyoqPCBSZWxlYXNlIFRYIHF1ZXVlLiAqLw0KPiA+ICAgCWV0aF90eF9kb25lX2NsZWFudXBfdCAg ICAgIHR4X2RvbmVfY2xlYW51cDsvKio8IEZyZWUgdHggcmluZyBtYnVmcyAqLw0KPiA+DQo+ID4g QEAgLTYzOSw2ICs2NTksOSBAQCBzdHJ1Y3QgZXRoX2Rldl9vcHMgew0KPiA+DQo+ID4gICAJZXRo X3Bvb2xfb3BzX3N1cHBvcnRlZF90IHBvb2xfb3BzX3N1cHBvcnRlZDsNCj4gPiAgIAkvKio8IFRl c3QgaWYgYSBwb3J0IHN1cHBvcnRzIHNwZWNpZmljIG1lbXBvb2wgb3BzICovDQo+ID4gKw0KPiA+ ICsJZXRoX2hhaXJwaW5fY2FwX2dldF90IGhhaXJwaW5fY2FwX2dldDsNCj4gPiArCS8qKjwgUmV0 dXJucyB0aGUgaGFpcnBpbiBjYXBhYmlsaXRpZXMuICovDQo+ID4gICB9Ow0KPiA+DQo+ID4gICAv KioNCj4gPiBAQCAtNzQ2LDkgKzc2OSw5IEBAIHN0cnVjdCBydGVfZXRoX2Rldl9kYXRhIHsNCj4g PiAgIAkJZGV2X3N0YXJ0ZWQgOiAxLCAgIC8qKjwgRGV2aWNlIHN0YXRlOiBTVEFSVEVEKDEpIC8g U1RPUFBFRCgwKS4NCj4gKi8NCj4gPiAgIAkJbHJvICAgICAgICAgOiAxOyAgIC8qKjwgUlggTFJP IGlzIE9OKDEpIC8gT0ZGKDApICovDQo+ID4gICAJdWludDhfdCByeF9xdWV1ZV9zdGF0ZVtSVEVf TUFYX1FVRVVFU19QRVJfUE9SVF07DQo+ID4gLQkJCS8qKjwgUXVldWVzIHN0YXRlOiBTVEFSVEVE KDEpIC8gU1RPUFBFRCgwKS4gKi8NCj4gPiArCQkvKio8IFF1ZXVlcyBzdGF0ZTogSEFJUlBJTigy KSAvIFNUQVJURUQoMSkgLyBTVE9QUEVEKDApLiAqLw0KPiA+ICAgCXVpbnQ4X3QgdHhfcXVldWVf c3RhdGVbUlRFX01BWF9RVUVVRVNfUEVSX1BPUlRdOw0KPiA+IC0JCQkvKio8IFF1ZXVlcyBzdGF0 ZTogU1RBUlRFRCgxKSAvIFNUT1BQRUQoMCkuICovDQo+ID4gKwkJLyoqPCBRdWV1ZXMgc3RhdGU6 IEhBSVJQSU4oMikgU1RBUlRFRCgxKSAvIFNUT1BQRUQoMCkuICovDQo+ID4gICAJdWludDMyX3Qg ZGV2X2ZsYWdzOyAgICAgICAgICAgICAvKio8IENhcGFiaWxpdGllcy4gKi8NCj4gPiAgIAllbnVt IHJ0ZV9rZXJuZWxfZHJpdmVyIGtkcnY7ICAgIC8qKjwgS2VybmVsIGRyaXZlciBwYXNzdGhyb3Vn aC4gKi8NCj4gPiAgIAlpbnQgbnVtYV9ub2RlOyAgICAgICAgICAgICAgICAgIC8qKjwgTlVNQSBu b2RlIGNvbm5lY3Rpb24uICovDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0 ZV9ldGhkZXZfdmVyc2lvbi5tYXANCj4gYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X3Zl cnNpb24ubWFwDQo+ID4gaW5kZXggNmRmNDJhNC4uNzdiMGE4NiAxMDA2NDQNCj4gPiAtLS0gYS9s aWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X3ZlcnNpb24ubWFwDQo+ID4gKysrIGIvbGliL2xp YnJ0ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJzaW9uLm1hcA0KPiA+IEBAIC0yODMsNCArMjgzLDkg QEAgRVhQRVJJTUVOVEFMIHsNCj4gPg0KPiA+ICAgCSMgYWRkZWQgaW4gMTkuMDgNCj4gPiAgIAly dGVfZXRoX3JlYWRfY2xvY2s7DQo+ID4gKw0KPiA+ICsJIyBhZGRlZCBpbiAxOS4xMQ0KPiA+ICsJ cnRlX2V0aF9yeF9oYWlycGluX3F1ZXVlX3NldHVwOw0KPiA+ICsJcnRlX2V0aF90eF9oYWlycGlu X3F1ZXVlX3NldHVwOw0KPiA+ICsJcnRlX2V0aF9kZXZfaGFpcnBpbl9jYXBhYmlsaXR5X2dldDsN Cj4gPiAgIH07DQoNCg==