From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com [99.78.197.220]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07D0466B23 for ; Tue, 30 Jan 2024 09:39:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=99.78.197.220 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706607593; cv=none; b=W4l1ABN1EYhePFAqy3Xc+tNOxWTacvP1gDVV02d3L+xt0F36e0H0u6eX0p1sV8If/fYlkUwMREE7Pmz/4+mvIJ23iAtIlKRG6Qqjerp8IkiAHDAZMnQnuqaipVxkHvlUpkwk0SKgZD0pyu2Rqxi4gozMPI4tzhYiw1AkWuwyJu4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706607593; c=relaxed/simple; bh=IgEqs4D4sKQ5Yt+wRJw3KMM4BlLpNAp0YrmnFuDg86E=; h=Subject:From:To:CC:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=LG7U1RcFrhf2+rHzDVsDmEnchfslJYuM1GdwfWum6rdcOh5CXyyfcK155bC0T6KquBBVsJRpox+q7eti4kTOssCh0l2PUdNTODCkYzHcKSbv81X+7Kluf0u5YB30p5z4+lTRdFy0ll2EJj1EPhXPRWNhjvSSqZaGz5j02vlSHOA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.com; spf=pass smtp.mailfrom=amazon.com; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b=c4/BIVb9; arc=none smtp.client-ip=99.78.197.220 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="c4/BIVb9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1706607590; x=1738143590; h=from:to:cc:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version:subject; bh=IgEqs4D4sKQ5Yt+wRJw3KMM4BlLpNAp0YrmnFuDg86E=; b=c4/BIVb99jy8kDthCdZ75wUcCCwyW2tKHEBRZe/HJsEMfrWau/gMAvEj kEF3JgMA3Ti/P0Yp/7/AZlvHKS1FU/js3mslt8/+c6LmQ/EuIDE/GQyB6 eMiOhXWUpue6oIBBvxKAzMu6a/RNWg+8deibKODpRNIyCDJLSrE1Fuf4c k=; X-IronPort-AV: E=Sophos;i="6.05,707,1701129600"; d="scan'208";a="62219354" Subject: RE: [PATCH v1 net-next 11/11] net: ena: Reduce lines with longer column width boundary Thread-Topic: [PATCH v1 net-next 11/11] net: ena: Reduce lines with longer column width boundary Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-iad-1e-m6i4x-529f0975.us-east-1.amazon.com) ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jan 2024 09:39:42 +0000 Received: from smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38]) by email-inbound-relay-iad-1e-m6i4x-529f0975.us-east-1.amazon.com (Postfix) with ESMTPS id B56774A7A8; Tue, 30 Jan 2024 09:39:39 +0000 (UTC) Received: from EX19MTAEUC001.ant.amazon.com [10.0.17.79:13883] by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.33.250:2525] with esmtp (Farcaster) id 9ea4b73e-5fa0-471a-bcbc-9e32d4971303; Tue, 30 Jan 2024 09:39:38 +0000 (UTC) X-Farcaster-Flow-ID: 9ea4b73e-5fa0-471a-bcbc-9e32d4971303 Received: from EX19D030EUB004.ant.amazon.com (10.252.61.33) by EX19MTAEUC001.ant.amazon.com (10.252.51.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 30 Jan 2024 09:39:37 +0000 Received: from EX19D047EUB004.ant.amazon.com (10.252.61.5) by EX19D030EUB004.ant.amazon.com (10.252.61.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 30 Jan 2024 09:39:37 +0000 Received: from EX19D047EUB004.ant.amazon.com ([fe80::e4ef:7b7e:20b2:9c20]) by EX19D047EUB004.ant.amazon.com ([fe80::e4ef:7b7e:20b2:9c20%3]) with mapi id 15.02.1118.040; Tue, 30 Jan 2024 09:39:36 +0000 From: "Arinzon, David" To: "Nelson, Shannon" , David Miller , Jakub Kicinski , "netdev@vger.kernel.org" CC: "Woodhouse, David" , "Machulsky, Zorik" , "Matushevsky, Alexander" , "Bshara, Saeed" , "Wilson, Matt" , "Liguori, Anthony" , "Bshara, Nafea" , "Belgazal, Netanel" , "Saidi, Ali" , "Herrenschmidt, Benjamin" , "Kiyanovski, Arthur" , "Dagan, Noam" , "Agroskin, Shay" , "Itzko, Shahar" , "Abboud, Osama" , "Ostrovsky, Evgeny" , "Tabachnik, Ofir" , "Koler, Nati" Thread-Index: AQHaUxoRFpglEsiwSEK7bu4YBBcWQLDx6OgQ Date: Tue, 30 Jan 2024 09:39:36 +0000 Message-ID: References: <20240129085531.15608-1-darinzon@amazon.com> <20240129085531.15608-12-darinzon@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Precedence: Bulk PiBPbiAxLzI5LzIwMjQgMTI6NTUgQU0sIGRhcmluem9uQGFtYXpvbi5jb20gd3JvdGU6DQo+ID4N Cj4gPiBGcm9tOiBEYXZpZCBBcmluem9uIDxkYXJpbnpvbkBhbWF6b24uY29tPg0KPiA+DQo+ID4g VGhpcyBwYXRjaCByZWR1Y2VzIHNvbWUgb2YgdGhlIGxpbmVzIGJ5IHJlbW92aW5nIG5ld2xpbmVz DQo+ID4gd2hlcmUgbW9yZSB2YXJpYWJsZXMgb3IgcHJpbnQgc3RyaW5ncyBjYW4gYmUgcHVzaGVk IGJhY2sNCj4gPiB0byB0aGUgcHJldmlvdXMgbGluZSB3aGlsZSBzdGlsbCBhZGhlcmluZyB0byB0 aGUgc3R5bGluZw0KPiA+IGd1aWRlbGluZXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBEYXZp ZCBBcmluem9uIDxkYXJpbnpvbkBhbWF6b24uY29tPg0KPiA+IC0tLQ0KPiA+ICAgZHJpdmVycy9u ZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfY29tLmMgICAgIHwgMzE1ICsrKysrKystLS0tLS0t LS0tLQ0KPiA+ICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRoX2NvbS5j IHwgIDQ5ICsrLQ0KPiA+ICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRo X2NvbS5oIHwgIDE1ICstDQo+ID4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2Vu YV9uZXRkZXYuYyAgfCAgMzIgKy0NCj4gPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTUxIGluc2VydGlv bnMoKyksIDI2MCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9jb20uYw0KPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FtYXpvbi9lbmEvZW5hX2NvbS5jDQo+ID4gaW5kZXggNjc1ZWU3Mi4uOWU5ZTRhMCAxMDA2NDQN Cj4gPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9jb20uYw0KPiA+ ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2NvbS5jDQo+ID4gQEAg LTkwLDggKzkwLDcgQEAgc3RhdGljIGludCBlbmFfY29tX2FkbWluX2luaXRfc3Eoc3RydWN0DQo+ IGVuYV9jb21fYWRtaW5fcXVldWUgKmFkbWluX3F1ZXVlKQ0KPiA+ICAgICAgICAgIHN0cnVjdCBl bmFfY29tX2FkbWluX3NxICpzcSA9ICZhZG1pbl9xdWV1ZS0+c3E7DQo+ID4gICAgICAgICAgdTE2 IHNpemUgPSBBRE1JTl9TUV9TSVpFKGFkbWluX3F1ZXVlLT5xX2RlcHRoKTsNCj4gPg0KPiA+IC0g ICAgICAgc3EtPmVudHJpZXMgPSBkbWFfYWxsb2NfY29oZXJlbnQoYWRtaW5fcXVldWUtPnFfZG1h ZGV2LCBzaXplLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnNxLT5kbWFfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBzcS0+ZW50cmllcyA9IGRt YV9hbGxvY19jb2hlcmVudChhZG1pbl9xdWV1ZS0+cV9kbWFkZXYsIHNpemUsDQo+ICZzcS0+ZG1h X2FkZHIsIEdGUF9LRVJORUwpOw0KPiA+DQo+ID4gICAgICAgICAgaWYgKCFzcS0+ZW50cmllcykg ew0KPiA+ICAgICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAi TWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsNCj4gPiBAQCAtMTEzLDggKzExMiw3IEBAIHN0 YXRpYyBpbnQgZW5hX2NvbV9hZG1pbl9pbml0X2NxKHN0cnVjdA0KPiBlbmFfY29tX2FkbWluX3F1 ZXVlICphZG1pbl9xdWV1ZSkNCj4gPiAgICAgICAgICBzdHJ1Y3QgZW5hX2NvbV9hZG1pbl9jcSAq Y3EgPSAmYWRtaW5fcXVldWUtPmNxOw0KPiA+ICAgICAgICAgIHUxNiBzaXplID0gQURNSU5fQ1Ff U0laRShhZG1pbl9xdWV1ZS0+cV9kZXB0aCk7DQo+ID4NCj4gPiAtICAgICAgIGNxLT5lbnRyaWVz ID0gZG1hX2FsbG9jX2NvaGVyZW50KGFkbWluX3F1ZXVlLT5xX2RtYWRldiwgc2l6ZSwNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcS0+ZG1hX2FkZHIsIEdG UF9LRVJORUwpOw0KPiA+ICsgICAgICAgY3EtPmVudHJpZXMgPSBkbWFfYWxsb2NfY29oZXJlbnQo YWRtaW5fcXVldWUtPnFfZG1hZGV2LCBzaXplLA0KPiAmY3EtPmRtYV9hZGRyLCBHRlBfS0VSTkVM KTsNCj4gPg0KPiA+ICAgICAgICAgIGlmICghY3EtPmVudHJpZXMpIHsNCj4gPiAgICAgICAgICAg ICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIk1lbW9yeSBhbGxvY2F0aW9u IGZhaWxlZFxuIik7DQo+ID4gQEAgLTEzNiw4ICsxMzQsNyBAQCBzdGF0aWMgaW50IGVuYV9jb21f YWRtaW5faW5pdF9hZW5xKHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldiwNCj4gPg0KPiA+ ICAgICAgICAgIGVuYV9kZXYtPmFlbnEucV9kZXB0aCA9IEVOQV9BU1lOQ19RVUVVRV9ERVBUSDsN Cj4gPiAgICAgICAgICBzaXplID0gQURNSU5fQUVOUV9TSVpFKEVOQV9BU1lOQ19RVUVVRV9ERVBU SCk7DQo+ID4gLSAgICAgICBhZW5xLT5lbnRyaWVzID0gZG1hX2FsbG9jX2NvaGVyZW50KGVuYV9k ZXYtPmRtYWRldiwgc2l6ZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmFlbnEtPmRtYV9hZGRyLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgIGFlbnEt PmVudHJpZXMgPSBkbWFfYWxsb2NfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBzaXplLA0KPiAm YWVucS0+ZG1hX2FkZHIsIEdGUF9LRVJORUwpOw0KPiA+DQo+ID4gICAgICAgICAgaWYgKCFhZW5x LT5lbnRyaWVzKSB7DQo+ID4gICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5l dF9kZXZpY2UsICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOw0KPiA+IEBAIC0xNTUsMTQg KzE1MiwxMyBAQCBzdGF0aWMgaW50IGVuYV9jb21fYWRtaW5faW5pdF9hZW5xKHN0cnVjdA0KPiBl bmFfY29tX2RldiAqZW5hX2RldiwNCj4gPg0KPiA+ICAgICAgICAgIGFlbnFfY2FwcyA9IDA7DQo+ ID4gICAgICAgICAgYWVucV9jYXBzIHw9IGVuYV9kZXYtPmFlbnEucV9kZXB0aCAmDQo+IEVOQV9S RUdTX0FFTlFfQ0FQU19BRU5RX0RFUFRIX01BU0s7DQo+ID4gLSAgICAgICBhZW5xX2NhcHMgfD0g KHNpemVvZihzdHJ1Y3QgZW5hX2FkbWluX2FlbnFfZW50cnkpDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIDw8IEVOQV9SRUdTX0FFTlFfQ0FQU19BRU5RX0VOVFJZX1NJWkVfU0hJRlQpICYNCj4g PiAtICAgICAgICAgICAgICAgICAgICBFTkFfUkVHU19BRU5RX0NBUFNfQUVOUV9FTlRSWV9TSVpF X01BU0s7DQo+ID4gKyAgICAgICBhZW5xX2NhcHMgfD0NCj4gPiArICAgICAgICAgICAgICAgKHNp emVvZihzdHJ1Y3QgZW5hX2FkbWluX2FlbnFfZW50cnkpIDw8DQo+IEVOQV9SRUdTX0FFTlFfQ0FQ U19BRU5RX0VOVFJZX1NJWkVfU0hJRlQpICYNCj4gPiArICAgICAgICAgICAgICAgRU5BX1JFR1Nf QUVOUV9DQVBTX0FFTlFfRU5UUllfU0laRV9NQVNLOw0KPiANCj4gVGhpcyBtaWdodCBiZSBiZXR0 ZXIgc2VydmVkIGJ5IHVzaW5nIHRoZSBGSUVMRF9QUkVQIG1hY3JvDQo+IA0KDQpJIGFncmVlIHdp dGggeW91LCB3ZSBoYXZlIGEgcGxhbiB0byB1dGlsaXplIEZJRUxEX0dFVCBhbmQgRklFTERfUFJF UA0KbWFjcm9zIHRocm91Z2hvdXQgdGhlIGNvZGUsIGFzIHRoZXJlIGFyZSBtdWx0aXBsZSBwbGFj ZXMgdGhhdCANCmxvb2sgc2ltaWxhciB0byB0aGlzIG9uZSBhbmQgd291bGQgYmVuZWZpdCBmcm9t IHRoaXMgY2hhbmdlLg0KSSBwcmVmZXIgdG8gYWRkcmVzcyBpdCBpbiBhIHNlcGFyYXRlIHBhdGNo c2V0IGF0IGEgbGF0ZXIgc3RhZ2UsDQppZiB0aGF0J3MgT0sgd2l0aCB5b3UuDQoNCj4gPiAgICAg ICAgICB3cml0ZWwoYWVucV9jYXBzLCBlbmFfZGV2LT5yZWdfYmFyICsNCj4gRU5BX1JFR1NfQUVO UV9DQVBTX09GRik7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkoIWFlbnFfaGFuZGxl cnMpKSB7DQo+ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2Rldmlj ZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAiQUVOUSBoYW5kbGVycyBwb2ludGVy IGlzIE5VTExcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5l dF9kZXZpY2UsICJBRU5RIGhhbmRsZXJzIHBvaW50ZXIgaXMNCj4gTlVMTFxuIik7DQo+ID4gICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBA QCAtMTg5LDE0ICsxODUsMTIgQEAgc3RhdGljIHN0cnVjdCBlbmFfY29tcF9jdHgNCj4gKmdldF9j b21wX2N0eHQoc3RydWN0IGVuYV9jb21fYWRtaW5fcXVldWUgKmFkbWluX3F1ZXUNCj4gPiAgICAg ICAgICB9DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkoIWFkbWluX3F1ZXVlLT5jb21w X2N0eCkpIHsNCj4gPiAtICAgICAgICAgICAgICAgbmV0ZGV2X2VycihhZG1pbl9xdWV1ZS0+ZW5h X2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcGxl dGlvbiBjb250ZXh0IGlzIE5VTExcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBuZXRkZXZfZXJy KGFkbWluX3F1ZXVlLT5lbmFfZGV2LT5uZXRfZGV2aWNlLCAiQ29tcGxldGlvbg0KPiBjb250ZXh0 IGlzIE5VTExcbiIpOw0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gICAg ICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KGFkbWluX3F1ZXVlLT5jb21w X2N0eFtjb21tYW5kX2lkXS5vY2N1cGllZCAmJg0KPiBjYXB0dXJlKSkgew0KPiA+IC0gICAgICAg ICAgICAgICBuZXRkZXZfZXJyKGFkbWluX3F1ZXVlLT5lbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wbGV0aW9uIGNvbnRleHQgaXMgb2NjdXBp ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGFkbWluX3F1ZXVlLT5lbmFf ZGV2LT5uZXRfZGV2aWNlLCAiQ29tcGxldGlvbg0KPiBjb250ZXh0IGlzIG9jY3VwaWVkXG4iKTsN Cj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICAgICAgICAgIH0NCj4gPg0K PiA+IEBAIC0yMjYsOCArMjIwLDcgQEAgc3RhdGljIHN0cnVjdCBlbmFfY29tcF9jdHgNCj4gKl9f ZW5hX2NvbV9zdWJtaXRfYWRtaW5fY21kKHN0cnVjdCBlbmFfY29tX2FkbWluX3F1ZXUNCj4gPiAg ICAgICAgICAvKiBJbiBjYXNlIG9mIHF1ZXVlIEZVTEwgKi8NCj4gPiAgICAgICAgICBjbnQgPSAo dTE2KWF0b21pY19yZWFkKCZhZG1pbl9xdWV1ZS0+b3V0c3RhbmRpbmdfY21kcyk7DQo+ID4gICAg ICAgICAgaWYgKGNudCA+PSBhZG1pbl9xdWV1ZS0+cV9kZXB0aCkgew0KPiA+IC0gICAgICAgICAg ICAgICBuZXRkZXZfZGJnKGFkbWluX3F1ZXVlLT5lbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICJBZG1pbiBxdWV1ZSBpcyBmdWxsLlxuIik7DQo+ID4g KyAgICAgICAgICAgICAgIG5ldGRldl9kYmcoYWRtaW5fcXVldWUtPmVuYV9kZXYtPm5ldF9kZXZp Y2UsICJBZG1pbg0KPiBxdWV1ZSBpcyBmdWxsLlxuIik7DQo+ID4gICAgICAgICAgICAgICAgICBh ZG1pbl9xdWV1ZS0+c3RhdHMub3V0X29mX3NwYWNlKys7DQo+ID4gICAgICAgICAgICAgICAgICBy ZXR1cm4gRVJSX1BUUigtRU5PU1BDKTsNCj4gPiAgICAgICAgICB9DQo+ID4gQEAgLTI3NCw4ICsy NjcsNyBAQCBzdGF0aWMgaW50IGVuYV9jb21faW5pdF9jb21wX2N0eHQoc3RydWN0DQo+IGVuYV9j b21fYWRtaW5fcXVldWUgKmFkbWluX3F1ZXVlKQ0KPiA+ICAgICAgICAgIHN0cnVjdCBlbmFfY29t cF9jdHggKmNvbXBfY3R4Ow0KPiA+ICAgICAgICAgIHUxNiBpOw0KPiA+DQo+ID4gLSAgICAgICBh ZG1pbl9xdWV1ZS0+Y29tcF9jdHggPQ0KPiA+IC0gICAgICAgICAgICAgICBkZXZtX2t6YWxsb2Mo YWRtaW5fcXVldWUtPnFfZG1hZGV2LCBzaXplLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgIGFk bWluX3F1ZXVlLT5jb21wX2N0eCA9IGRldm1fa3phbGxvYyhhZG1pbl9xdWV1ZS0+cV9kbWFkZXYs DQo+IHNpemUsIEdGUF9LRVJORUwpOw0KPiA+ICAgICAgICAgIGlmICh1bmxpa2VseSghYWRtaW5f cXVldWUtPmNvbXBfY3R4KSkgew0KPiA+ICAgICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFf ZGV2LT5uZXRfZGV2aWNlLCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsNCj4gPiAgICAg ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+IEBAIC0zMzYsMjAgKzMyOCwxNyBAQCBz dGF0aWMgaW50IGVuYV9jb21faW5pdF9pb19zcShzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9k ZXYsDQo+ID4gICAgICAgICAgICAgICAgICBkZXZfbm9kZSA9IGRldl90b19ub2RlKGVuYV9kZXYt PmRtYWRldik7DQo+ID4gICAgICAgICAgICAgICAgICBzZXRfZGV2X25vZGUoZW5hX2Rldi0+ZG1h ZGV2LCBjdHgtPm51bWFfbm9kZSk7DQo+ID4gICAgICAgICAgICAgICAgICBpb19zcS0+ZGVzY19h ZGRyLnZpcnRfYWRkciA9DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZG1hX2FsbG9jX2Nv aGVyZW50KGVuYV9kZXYtPmRtYWRldiwgc2l6ZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmlvX3NxLT5kZXNjX2FkZHIucGh5c19hZGRyLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGRtYV9hbGxvY19jb2hlcmVudChlbmFfZGV2LT5kbWFkZXYs IHNpemUsICZpb19zcS0NCj4gPmRlc2NfYWRkci5waHlzX2FkZHIsDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsNCj4gPiAgICAgICAg ICAgICAgICAgIHNldF9kZXZfbm9kZShlbmFfZGV2LT5kbWFkZXYsIGRldl9ub2RlKTsNCj4gPiAg ICAgICAgICAgICAgICAgIGlmICghaW9fc3EtPmRlc2NfYWRkci52aXJ0X2FkZHIpIHsNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgaW9fc3EtPmRlc2NfYWRkci52aXJ0X2FkZHIgPQ0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hbGxvY19jb2hlcmVudChlbmFf ZGV2LT5kbWFkZXYsIHNpemUsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmlvX3NxLT5kZXNjX2FkZHIucGh5c19hZGRyLA0KPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwp Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZpb19zcS0+ZGVzY19hZGRyLnBoeXNfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gICAgICAgICAg ICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgIGlmICghaW9fc3EtPmRlc2NfYWRk ci52aXJ0X2FkZHIpIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVu YV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJNZW1vcnkgYWxsb2NhdGlvbg0K PiBmYWlsZWRcbiIpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsNCj4gPiAgICAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICB9DQo+ID4gQEAgLTM2Nywx NiArMzU2LDE0IEBAIHN0YXRpYyBpbnQgZW5hX2NvbV9pbml0X2lvX3NxKHN0cnVjdA0KPiBlbmFf Y29tX2RldiAqZW5hX2RldiwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgZGV2X25vZGUgPSBk ZXZfdG9fbm9kZShlbmFfZGV2LT5kbWFkZXYpOw0KPiA+ICAgICAgICAgICAgICAgICAgc2V0X2Rl dl9ub2RlKGVuYV9kZXYtPmRtYWRldiwgY3R4LT5udW1hX25vZGUpOw0KPiA+IC0gICAgICAgICAg ICAgICBpb19zcS0+Ym91bmNlX2J1Zl9jdHJsLmJhc2VfYnVmZmVyID0NCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICBkZXZtX2t6YWxsb2MoZW5hX2Rldi0+ZG1hZGV2LCBzaXplLCBHRlBfS0VS TkVMKTsNCj4gPiArICAgICAgICAgICAgICAgaW9fc3EtPmJvdW5jZV9idWZfY3RybC5iYXNlX2J1 ZmZlciA9IGRldm1fa3phbGxvYyhlbmFfZGV2LQ0KPiA+ZG1hZGV2LCBzaXplLCBHRlBfS0VSTkVM KTsNCj4gPiAgICAgICAgICAgICAgICAgIHNldF9kZXZfbm9kZShlbmFfZGV2LT5kbWFkZXYsIGRl dl9ub2RlKTsNCj4gPiAgICAgICAgICAgICAgICAgIGlmICghaW9fc3EtPmJvdW5jZV9idWZfY3Ry bC5iYXNlX2J1ZmZlcikNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgaW9fc3EtPmJvdW5j ZV9idWZfY3RybC5iYXNlX2J1ZmZlciA9DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2bV9remFsbG9jKGVuYV9kZXYtPmRtYWRldiwgc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ ID4NCj4gPiAgICAgICAgICAgICAgICAgIGlmICghaW9fc3EtPmJvdW5jZV9idWZfY3RybC5iYXNl X2J1ZmZlcikgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rl di0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJC b3VuY2UgYnVmZmVyIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAiQm91bmNlIGJ1 ZmZlciBtZW1vcnkNCj4gYWxsb2NhdGlvbiBmYWlsZWRcbiIpOw0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiAgICAgICAgICAgICAgICAgIH0NCj4gPg0K PiA+IEBAIC00MjUsMTMgKzQxMiwxMSBAQCBzdGF0aWMgaW50IGVuYV9jb21faW5pdF9pb19jcShz dHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4gICAgICAgICAgcHJldl9ub2RlID0g ZGV2X3RvX25vZGUoZW5hX2Rldi0+ZG1hZGV2KTsNCj4gPiAgICAgICAgICBzZXRfZGV2X25vZGUo ZW5hX2Rldi0+ZG1hZGV2LCBjdHgtPm51bWFfbm9kZSk7DQo+ID4gICAgICAgICAgaW9fY3EtPmNk ZXNjX2FkZHIudmlydF9hZGRyID0NCj4gPiAtICAgICAgICAgICAgICAgZG1hX2FsbG9jX2NvaGVy ZW50KGVuYV9kZXYtPmRtYWRldiwgc2l6ZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZpb19jcS0+Y2Rlc2NfYWRkci5waHlzX2FkZHIsIEdGUF9LRVJORUwpOw0KPiA+ ICsgICAgICAgICAgICAgICBkbWFfYWxsb2NfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBzaXpl LCAmaW9fY3EtDQo+ID5jZGVzY19hZGRyLnBoeXNfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gICAg ICAgICAgc2V0X2Rldl9ub2RlKGVuYV9kZXYtPmRtYWRldiwgcHJldl9ub2RlKTsNCj4gPiAgICAg ICAgICBpZiAoIWlvX2NxLT5jZGVzY19hZGRyLnZpcnRfYWRkcikgew0KPiA+ICAgICAgICAgICAg ICAgICAgaW9fY3EtPmNkZXNjX2FkZHIudmlydF9hZGRyID0NCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICBkbWFfYWxsb2NfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBzaXplLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW9fY3EtPmNkZXNjX2Fk ZHIucGh5c19hZGRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hbGxvY19jb2hl cmVudChlbmFfZGV2LT5kbWFkZXYsIHNpemUsICZpb19jcS0NCj4gPmNkZXNjX2FkZHIucGh5c19h ZGRyLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0ZQ X0tFUk5FTCk7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTUxNCw4ICs0OTksOCBAQCBz dGF0aWMgaW50IGVuYV9jb21fY29tcF9zdGF0dXNfdG9fZXJybm8oc3RydWN0DQo+IGVuYV9jb21f YWRtaW5fcXVldWUgKmFkbWluX3F1ZXVlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdTggY29tcF9zdGF0dXMpDQo+ID4gICB7DQo+ID4gICAgICAgICAgaWYg KHVubGlrZWx5KGNvbXBfc3RhdHVzICE9IDApKQ0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZf ZXJyKGFkbWluX3F1ZXVlLT5lbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICJBZG1pbiBjb21tYW5kIGZhaWxlZFsldV1cbiIsIGNvbXBfc3RhdHVzKTsN Cj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihhZG1pbl9xdWV1ZS0+ZW5hX2Rldi0+bmV0 X2RldmljZSwgIkFkbWluDQo+IGNvbW1hbmQgZmFpbGVkWyV1XVxuIiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBjb21wX3N0YXR1cyk7DQo+ID4NCj4gPiAgICAgICAgICBzd2l0Y2gg KGNvbXBfc3RhdHVzKSB7DQo+ID4gICAgICAgICAgY2FzZSBFTkFfQURNSU5fU1VDQ0VTUzoNCj4g PiBAQCAtNTgwLDggKzU2NSw3IEBAIHN0YXRpYyBpbnQNCj4gZW5hX2NvbV93YWl0X2FuZF9wcm9j ZXNzX2FkbWluX2NxX3BvbGxpbmcoc3RydWN0IGVuYV9jb21wX2N0eA0KPiAqY29tcF9jDQo+ID4g ICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KGNvbXBfY3R4LT5zdGF0 dXMgPT0gRU5BX0NNRF9BQk9SVEVEKSkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJy KGFkbWluX3F1ZXVlLT5lbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICJDb21tYW5kIHdhcyBhYm9ydGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAg bmV0ZGV2X2VycihhZG1pbl9xdWV1ZS0+ZW5hX2Rldi0+bmV0X2RldmljZSwgIkNvbW1hbmQNCj4g d2FzIGFib3J0ZWRcbiIpOw0KPiA+ICAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUo JmFkbWluX3F1ZXVlLT5xX2xvY2ssIGZsYWdzKTsNCj4gPiAgICAgICAgICAgICAgICAgIGFkbWlu X3F1ZXVlLT5zdGF0cy5hYm9ydGVkX2NtZCsrOw0KPiA+ICAgICAgICAgICAgICAgICAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmYWRtaW5fcXVldWUtPnFfbG9jaywgZmxhZ3MpOw0KPiA+IEBAIC01 ODksOCArNTczLDcgQEAgc3RhdGljIGludA0KPiBlbmFfY29tX3dhaXRfYW5kX3Byb2Nlc3NfYWRt aW5fY3FfcG9sbGluZyhzdHJ1Y3QgZW5hX2NvbXBfY3R4DQo+ICpjb21wX2MNCj4gPiAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyOw0KPiA+ICAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgV0FS Tihjb21wX2N0eC0+c3RhdHVzICE9IEVOQV9DTURfQ09NUExFVEVELCAiSW52YWxpZCBjb21wDQo+ IHN0YXR1cyAlZFxuIiwNCj4gPiAtICAgICAgICAgICAgY29tcF9jdHgtPnN0YXR1cyk7DQo+ID4g KyAgICAgICBXQVJOKGNvbXBfY3R4LT5zdGF0dXMgIT0gRU5BX0NNRF9DT01QTEVURUQsICJJbnZh bGlkIGNvbXANCj4gc3RhdHVzICVkXG4iLCBjb21wX2N0eC0+c3RhdHVzKTsNCj4gPg0KPiA+ICAg ICAgICAgIHJldCA9IGVuYV9jb21fY29tcF9zdGF0dXNfdG9fZXJybm8oYWRtaW5fcXVldWUsIGNv bXBfY3R4LQ0KPiA+Y29tcF9zdGF0dXMpOw0KPiA+ICAgZXJyOg0KPiA+IEBAIC02MzQsOCArNjE3 LDcgQEAgc3RhdGljIGludCBlbmFfY29tX3NldF9sbHEoc3RydWN0IGVuYV9jb21fZGV2DQo+ICpl bmFfZGV2KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVvZihyZXNwKSk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkocmV0KSkNCj4g PiAtICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gc2V0IExMUSBjb25maWd1cmF0aW9u czogJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+ bmV0X2RldmljZSwgIkZhaWxlZCB0byBzZXQgTExRDQo+IGNvbmZpZ3VyYXRpb25zOiAlZFxuIiwg cmV0KTsNCj4gPg0KPiA+ICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gICB9DQo+ID4gQEAgLTY1 OCw4ICs2NDAsNyBAQCBzdGF0aWMgaW50IGVuYV9jb21fY29uZmlnX2xscV9pbmZvKHN0cnVjdA0K PiBlbmFfY29tX2RldiAqZW5hX2RldiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgbGxx X2RlZmF1bHRfY2ZnLT5sbHFfaGVhZGVyX2xvY2F0aW9uOw0KPiA+ICAgICAgICAgIH0gZWxzZSB7 DQo+ID4gICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgaGVhZGVyIGxvY2F0aW9uIGNv bnRyb2wsIHN1cHBvcnRlZDogMHgleFxuIiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICBzdXBwb3J0ZWRfZmVhdCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFs aWQgaGVhZGVyIGxvY2F0aW9uIGNvbnRyb2wsIHN1cHBvcnRlZDogMHgleFxuIiwNCj4gc3VwcG9y dGVkX2ZlYXQpOw0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAg ICAgICAgfQ0KPiA+DQo+ID4gQEAgLTY4MSw4ICs2NjIsOCBAQCBzdGF0aWMgaW50IGVuYV9jb21f Y29uZmlnX2xscV9pbmZvKHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldiwNCj4gPg0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2Us DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlZmF1bHQgbGxxIHN0 cmlkZSBjdHJsIGlzIG5vdCBzdXBwb3J0ZWQsIHBlcmZvcm1pbmcNCj4gZmFsbGJhY2ssIGRlZmF1 bHQ6IDB4JXgsIHN1cHBvcnRlZDogMHgleCwgdXNlZDogMHgleFxuIiwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxscV9kZWZhdWx0X2NmZy0+bGxxX3N0cmlkZV9jdHJs LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2ZlYXQs IGxscV9pbmZvLT5kZXNjX3N0cmlkZV9jdHJsKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxscV9kZWZhdWx0X2NmZy0+bGxxX3N0cmlkZV9jdHJsLCBzdXBwb3J0ZWRf ZmVhdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxscV9pbmZvLT5k ZXNjX3N0cmlkZV9jdHJsKTsNCj4gDQo+IE1vc3Qgb2YgdGhlc2UgY2hhbmdlcyBtYWtlIHNlbnNl LCBidXQgc2VlbSBsZXNzIHVzZWZ1bCBpbiBjYXNlcyBsaWtlDQo+IHRoaXMgd2hlcmUgdGhlIGxp bmUgY291bnQgZG9lc24ndCBjaGFuZ2UuDQo+IA0KPiBzbG4NCj4gDQoNCkkgdW5kZXJzdGFuZCB5 b3VyIHBvaW50LCB0aGlzIGlzIGEgdW5pZm9ybSBhcHBsaWNhdGlvbiBvZiB0aGUgY2xhbmcgZm9y bWF0dGVyDQp0b29sIGFuZCB0aGUgcGVuYWx0aWVzIGFwcGxpZWQsIGdpdmVuIHNvbWUgY29tcHJv bWlzZXMuDQpNb3N0IG9mIHRoZSBjaGFuZ2VzIG1ha2UgdGhlIGNvZGUgYmV0dGVyIGFuZCBtb3Jl IHJlYWRhYmxlLCBidXQNCnRoZXJlIGFyZSBzb21lIGNvcm5lciBjYXNlcyB3aGljaCBhcmUgb2sv cmVhc29uYWJsZSwgYW5kIEkgcHJlZmVycmVkIHRvIG5vdA0KbWFrZSBtYW51YWwgY2hhbmdlcyBh bmQgb3ZlcnJpZGUgdGhlIG91dHB1dC4gTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmsuDQoNClRo YW5rcyENCkRhdmlkDQoNCj4gPiAgICAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICB9IGVs c2Ugew0KPiA+ICAgICAgICAgICAgICAgICAgbGxxX2luZm8tPmRlc2Nfc3RyaWRlX2N0cmwgPSAw Ow0KPiA+IEBAIC03MDQsOCArNjg1LDcgQEAgc3RhdGljIGludCBlbmFfY29tX2NvbmZpZ19sbHFf aW5mbyhzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgIGxscV9pbmZvLT5kZXNjX2xpc3RfZW50cnlfc2l6ZSA9IDI1NjsNCj4gPiAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGRl dl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJJbnZhbGlkIGVudHJ5X3NpemVfY3RybCwgc3VwcG9ydGVkOiAweCV4XG4iLA0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2ZlYXQpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZW50cnlfc2l6 ZV9jdHJsLCBzdXBwb3J0ZWQ6IDB4JXhcbiIsDQo+IHN1cHBvcnRlZF9mZWF0KTsNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAgICAgICAgICAgICAg ICB9DQo+ID4NCj4gPiBAQCAtNzUwLDggKzczMCw4IEBAIHN0YXRpYyBpbnQgZW5hX2NvbV9jb25m aWdfbGxxX2luZm8oc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2LA0KPiA+DQo+ID4gICAg ICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJEZWZhdWx0IGxscSBudW0gZGVzY3MgYmVmb3JlIGhlYWRl ciBpcyBub3Qgc3VwcG9ydGVkLA0KPiBwZXJmb3JtaW5nIGZhbGxiYWNrLCBkZWZhdWx0OiAweCV4 LCBzdXBwb3J0ZWQ6IDB4JXgsIHVzZWQ6IDB4JXhcbiIsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgbGxxX2RlZmF1bHRfY2ZnLT5sbHFfbnVtX2RlY3NfYmVmb3JlX2hlYWRlciwNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZmVhdCwgbGxxX2luZm8tPmRl c2NzX251bV9iZWZvcmVfaGVhZGVyKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBs bHFfZGVmYXVsdF9jZmctPmxscV9udW1fZGVjc19iZWZvcmVfaGVhZGVyLA0KPiBzdXBwb3J0ZWRf ZmVhdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBsbHFfaW5mby0+ZGVzY3NfbnVt X2JlZm9yZV9oZWFkZXIpOw0KPiA+ICAgICAgICAgIH0NCj4gPiAgICAgICAgICAvKiBDaGVjayBm b3IgYWNjZWxlcmF0ZWQgcXVldWUgc3VwcG9ydGVkICovDQo+ID4gICAgICAgICAgbGxxX2FjY2Vs X21vZGVfZ2V0ID0gbGxxX2ZlYXR1cmVzLT5hY2NlbF9tb2RlLnUuZ2V0Ow0KPiA+IEBAIC03Njcs OCArNzQ3LDcgQEAgc3RhdGljIGludCBlbmFfY29tX2NvbmZpZ19sbHFfaW5mbyhzdHJ1Y3QNCj4g ZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4NCj4gPiAgICAgICAgICByYyA9IGVuYV9jb21fc2V0 X2xscShlbmFfZGV2KTsNCj4gPiAgICAgICAgICBpZiAocmMpDQo+ID4gLSAgICAgICAgICAgICAg IG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAiQ2Fubm90IHNldCBMTFEgY29uZmlndXJhdGlvbjogJWRcbiIsIHJjKTsNCj4gPiAr ICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAiQ2Fubm90IHNl dCBMTFEgY29uZmlndXJhdGlvbjoNCj4gJWRcbiIsIHJjKTsNCj4gPg0KPiA+ICAgICAgICAgIHJl dHVybiByYzsNCj4gPiAgIH0NCj4gPiBAQCAtNzgwLDggKzc1OSw3IEBAIHN0YXRpYyBpbnQNCj4g ZW5hX2NvbV93YWl0X2FuZF9wcm9jZXNzX2FkbWluX2NxX2ludGVycnVwdHMoc3RydWN0IGVuYV9j b21wX2N0eA0KPiAqY29tDQo+ID4gICAgICAgICAgaW50IHJldDsNCj4gPg0KPiA+ICAgICAgICAg IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmY29tcF9jdHgtPndhaXRfZXZlbnQsDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlY3NfdG9famlmZmllcygNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluX3F1ZXVl LT5jb21wbGV0aW9uX3RpbWVvdXQpKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1c2Vjc190b19qaWZmaWVzKGFkbWluX3F1ZXVlLT5jb21wbGV0aW9uX3RpbWVvdXQp KTsNCj4gPg0KPiA+ICAgICAgICAgIC8qIEluIGNhc2UgdGhlIGNvbW1hbmQgd2Fzbid0IGNvbXBs ZXRlZCBmaW5kIG91dCB0aGUgcm9vdCBjYXVzZS4NCj4gPiAgICAgICAgICAgKiBUaGVyZSBtaWdo dCBiZSAyIGtpbmRzIG9mIGVycm9ycw0KPiA+IEBAIC03OTcsOCArNzc1LDcgQEAgc3RhdGljIGlu dA0KPiBlbmFfY29tX3dhaXRfYW5kX3Byb2Nlc3NfYWRtaW5fY3FfaW50ZXJydXB0cyhzdHJ1Y3Qg ZW5hX2NvbXBfY3R4DQo+ICpjb20NCj4gPiAgICAgICAgICAgICAgICAgIGlmIChjb21wX2N0eC0+ c3RhdHVzID09IEVOQV9DTURfQ09NUExFVEVEKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgIG5ldGRldl9lcnIoYWRtaW5fcXVldWUtPmVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBlbmEgZGV2aWNlIHNlbnQgYSBj b21wbGV0aW9uIGJ1dCB0aGUgZHJpdmVyIGRpZG4ndA0KPiByZWNlaXZlIGEgTVNJLVggaW50ZXJy dXB0IChjbWQgJWQpLCBhdXRvcG9sbGluZyBtb2RlIGlzICVzXG4iLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29tcF9jdHgtPmNtZF9vcGNvZGUsDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbl9xdWV1ZS0+YXV0b19wb2xsaW5nID8g Ik9OIiA6ICJPRkYiKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bXBfY3R4LT5jbWRfb3Bjb2RlLCBhZG1pbl9xdWV1ZS0+YXV0b19wb2xsaW5nID8NCj4gIk9OIiA6 ICJPRkYiKTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgZmFsbGJh Y2sgdG8gcG9sbGluZyBpcyBlbmFibGVkICovDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg IGlmIChhZG1pbl9xdWV1ZS0+YXV0b19wb2xsaW5nKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFkbWluX3F1ZXVlLT5wb2xsaW5nID0gdHJ1ZTsNCj4gPiBAQCAtODY3LDE1 ICs4NDQsMTMgQEAgc3RhdGljIHUzMiBlbmFfY29tX3JlZ19iYXJfcmVhZDMyKHN0cnVjdA0KPiBl bmFfY29tX2RldiAqZW5hX2RldiwgdTE2IG9mZnNldCkNCj4gPiAgICAgICAgICBpZiAodW5saWtl bHkoaSA9PSB0aW1lb3V0KSkgew0KPiA+ICAgICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFf ZGV2LT5uZXRfZGV2aWNlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVhZGlu ZyByZWcgZmFpbGVkIGZvciB0aW1lb3V0LiBleHBlY3RlZDogcmVxIGlkWyV1XQ0KPiBvZmZzZXRb JXVdIGFjdHVhbDogcmVxIGlkWyV1XSBvZmZzZXRbJXVdXG4iLA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIG1taW9fcmVhZC0+c2VxX251bSwgb2Zmc2V0LCByZWFkX3Jlc3AtPnJlcV9p ZCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3Jlc3AtPnJlZ19vZmYpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIG1taW9fcmVhZC0+c2VxX251bSwgb2Zmc2V0 LCByZWFkX3Jlc3AtPnJlcV9pZCwNCj4gcmVhZF9yZXNwLT5yZWdfb2ZmKTsNCj4gPiAgICAgICAg ICAgICAgICAgIHJldCA9IEVOQV9NTUlPX1JFQURfVElNRU9VVDsNCj4gPiAgICAgICAgICAgICAg ICAgIGdvdG8gZXJyOw0KPiA+ICAgICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAgIGlmIChyZWFk X3Jlc3AtPnJlZ19vZmYgIT0gb2Zmc2V0KSB7DQo+ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9l cnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAi UmVhZCBmYWlsdXJlOiB3cm9uZyBvZmZzZXQgcHJvdmlkZWRcbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJSZWFkIGZhaWx1cmU6IHdyb25n IG9mZnNldA0KPiBwcm92aWRlZFxuIik7DQo+ID4gICAgICAgICAgICAgICAgICByZXQgPSBFTkFf TU1JT19SRUFEX1RJTUVPVVQ7DQo+ID4gICAgICAgICAgfSBlbHNlIHsNCj4gPiAgICAgICAgICAg ICAgICAgIHJldCA9IHJlYWRfcmVzcC0+cmVnX3ZhbDsNCj4gPiBAQCAtOTM0LDggKzkwOSw3IEBA IHN0YXRpYyBpbnQgZW5hX2NvbV9kZXN0cm95X2lvX3NxKHN0cnVjdA0KPiBlbmFfY29tX2RldiAq ZW5hX2RldiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoZGVzdHJveV9yZXNwKSk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHko cmV0ICYmIChyZXQgIT0gLUVOT0RFVikpKQ0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJy KGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkZh aWxlZCB0byBkZXN0cm95IGlvIHNxIGVycm9yOiAlZFxuIiwgcmV0KTsNCj4gPiArICAgICAgICAg ICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAiRmFpbGVkIHRvIGRlc3Ryb3kg aW8gc3EgZXJyb3I6DQo+ICVkXG4iLCByZXQpOw0KPiA+DQo+ID4gICAgICAgICAgcmV0dXJuIHJl dDsNCj4gPiAgIH0NCj4gPiBAQCAtOTQ5LDggKzkyMyw3IEBAIHN0YXRpYyB2b2lkIGVuYV9jb21f aW9fcXVldWVfZnJlZShzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4gICAgICAg ICAgaWYgKGlvX2NxLT5jZGVzY19hZGRyLnZpcnRfYWRkcikgew0KPiA+ICAgICAgICAgICAgICAg ICAgc2l6ZSA9IGlvX2NxLT5jZGVzY19lbnRyeV9zaXplX2luX2J5dGVzICogaW9fY3EtPnFfZGVw dGg7DQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5hX2Rldi0+ ZG1hZGV2LCBzaXplLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19j cS0+Y2Rlc2NfYWRkci52aXJ0X2FkZHIsDQo+ID4gKyAgICAgICAgICAgICAgIGRtYV9mcmVlX2Nv aGVyZW50KGVuYV9kZXYtPmRtYWRldiwgc2l6ZSwgaW9fY3EtDQo+ID5jZGVzY19hZGRyLnZpcnRf YWRkciwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX2NxLT5jZGVz Y19hZGRyLnBoeXNfYWRkcik7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgIGlvX2NxLT5jZGVz Y19hZGRyLnZpcnRfYWRkciA9IE5VTEw7DQo+ID4gQEAgLTk1OSw4ICs5MzIsNyBAQCBzdGF0aWMg dm9pZCBlbmFfY29tX2lvX3F1ZXVlX2ZyZWUoc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2 LA0KPiA+ICAgICAgICAgIGlmIChpb19zcS0+ZGVzY19hZGRyLnZpcnRfYWRkcikgew0KPiA+ICAg ICAgICAgICAgICAgICAgc2l6ZSA9IGlvX3NxLT5kZXNjX2VudHJ5X3NpemUgKiBpb19zcS0+cV9k ZXB0aDsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICBkbWFfZnJlZV9jb2hlcmVudChlbmFfZGV2 LT5kbWFkZXYsIHNpemUsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlv X3NxLT5kZXNjX2FkZHIudmlydF9hZGRyLA0KPiA+ICsgICAgICAgICAgICAgICBkbWFfZnJlZV9j b2hlcmVudChlbmFfZGV2LT5kbWFkZXYsIHNpemUsIGlvX3NxLQ0KPiA+ZGVzY19hZGRyLnZpcnRf YWRkciwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvX3NxLT5kZXNj X2FkZHIucGh5c19hZGRyKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgaW9fc3EtPmRlc2Nf YWRkci52aXJ0X2FkZHIgPSBOVUxMOw0KPiA+IEBAIC05ODUsOCArOTU3LDcgQEAgc3RhdGljIGlu dCB3YWl0X2Zvcl9yZXNldF9zdGF0ZShzdHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsIHUz MiB0aW1lb3V0LA0KPiA+ICAgICAgICAgICAgICAgICAgdmFsID0gZW5hX2NvbV9yZWdfYmFyX3Jl YWQzMihlbmFfZGV2LA0KPiBFTkFfUkVHU19ERVZfU1RTX09GRik7DQo+ID4NCj4gPiAgICAgICAg ICAgICAgICAgIGlmICh1bmxpa2VseSh2YWwgPT0gRU5BX01NSU9fUkVBRF9USU1FT1VUKSkgew0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2Rldmlj ZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWcgcmVhZCB0aW1l b3V0IG9jY3VycmVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfZXJy KGVuYV9kZXYtPm5ldF9kZXZpY2UsICJSZWcgcmVhZCB0aW1lb3V0DQo+IG9jY3VycmVkXG4iKTsN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FVElNRTsNCj4gPiAgICAgICAg ICAgICAgICAgIH0NCj4gPg0KPiA+IEBAIC0xMDI2LDggKzk5Nyw3IEBAIHN0YXRpYyBpbnQgZW5h X2NvbV9nZXRfZmVhdHVyZV9leChzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4g ICAgICAgICAgaW50IHJldDsNCj4gPg0KPiA+ICAgICAgICAgIGlmICghZW5hX2NvbV9jaGVja19z dXBwb3J0ZWRfZmVhdHVyZV9pZChlbmFfZGV2LCBmZWF0dXJlX2lkKSkgew0KPiA+IC0gICAgICAg ICAgICAgICBuZXRkZXZfZGJnKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJGZWF0dXJlICVkIGlzbid0 DQo+IHN1cHBvcnRlZFxuIiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJl X2lkKTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5uZXRfZGV2aWNl LCAiRmVhdHVyZSAlZCBpc24ndA0KPiBzdXBwb3J0ZWRcbiIsIGZlYXR1cmVfaWQpOw0KPiA+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICAgICAgICAgIH0NCj4gPg0K PiA+IEBAIC0xMDY0LDggKzEwMzQsNyBAQCBzdGF0aWMgaW50IGVuYV9jb21fZ2V0X2ZlYXR1cmVf ZXgoc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2LA0KPiA+DQo+ID4gICAgICAgICAgaWYg KHVubGlrZWx5KHJldCkpDQo+ID4gICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYt Pm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBz dWJtaXQgZ2V0X2ZlYXR1cmUgY29tbWFuZCAlZCBlcnJvcjogJWRcbiIsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgZmVhdHVyZV9pZCwgcmV0KTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAiRmFpbGVkIHRvIHN1Ym1pdCBnZXRfZmVhdHVyZSBjb21tYW5kICVkIGVycm9y OiAlZFxuIiwNCj4gZmVhdHVyZV9pZCwgcmV0KTsNCj4gPg0KPiA+ICAgICAgICAgIHJldHVybiBy ZXQ7DQo+ID4gICB9DQo+ID4gQEAgLTExMDQsMTMgKzEwNzMsMTEgQEAgc3RhdGljIGludCBlbmFf Y29tX2hhc2hfa2V5X2FsbG9jYXRlKHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldikNCj4g PiAgIHsNCj4gPiAgICAgICAgICBzdHJ1Y3QgZW5hX3JzcyAqcnNzID0gJmVuYV9kZXYtPnJzczsN Cj4gPg0KPiA+IC0gICAgICAgaWYgKCFlbmFfY29tX2NoZWNrX3N1cHBvcnRlZF9mZWF0dXJlX2lk KGVuYV9kZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRU5BX0FETUlOX1JTU19IQVNIX0ZVTkNUSU9OKSkNCj4gPiArICAgICAgIGlmICghZW5h X2NvbV9jaGVja19zdXBwb3J0ZWRfZmVhdHVyZV9pZChlbmFfZGV2LA0KPiBFTkFfQURNSU5fUlNT X0hBU0hfRlVOQ1RJT04pKQ0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQ Ow0KPiA+DQo+ID4gLSAgICAgICByc3MtPmhhc2hfa2V5ID0NCj4gPiAtICAgICAgICAgICAgICAg ZG1hX2FsbG9jX2NvaGVyZW50KGVuYV9kZXYtPmRtYWRldiwgc2l6ZW9mKCpyc3MtPmhhc2hfa2V5 KSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc3MtPmhhc2hfa2V5 X2RtYV9hZGRyLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgIHJzcy0+aGFzaF9rZXkgPSBkbWFf YWxsb2NfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBzaXplb2YoKnJzcy0NCj4gPmhhc2hfa2V5 KSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJzcy0+ aGFzaF9rZXlfZG1hX2FkZHIsIEdGUF9LRVJORUwpOw0KPiA+DQo+ID4gICAgICAgICAgaWYgKHVu bGlrZWx5KCFyc3MtPmhhc2hfa2V5KSkNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5P TUVNOw0KPiA+IEBAIC0xMTIzLDggKzEwOTAsOCBAQCBzdGF0aWMgdm9pZCBlbmFfY29tX2hhc2hf a2V5X2Rlc3Ryb3koc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2KQ0KPiA+ICAgICAgICAg IHN0cnVjdCBlbmFfcnNzICpyc3MgPSAmZW5hX2Rldi0+cnNzOw0KPiA+DQo+ID4gICAgICAgICAg aWYgKHJzcy0+aGFzaF9rZXkpDQo+ID4gLSAgICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50 KGVuYV9kZXYtPmRtYWRldiwgc2l6ZW9mKCpyc3MtPmhhc2hfa2V5KSwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnNzLT5oYXNoX2tleSwgcnNzLT5oYXNoX2tleV9kbWFf YWRkcik7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KGVuYV9kZXYtPmRt YWRldiwgc2l6ZW9mKCpyc3MtPmhhc2hfa2V5KSwNCj4gcnNzLT5oYXNoX2tleSwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNzLT5oYXNoX2tleV9kbWFfYWRkcik7DQo+ ID4gICAgICAgICAgcnNzLT5oYXNoX2tleSA9IE5VTEw7DQo+ID4gICB9DQo+ID4NCj4gPiBAQCAt MTEzMiw5ICsxMDk5LDggQEAgc3RhdGljIGludCBlbmFfY29tX2hhc2hfY3RybF9pbml0KHN0cnVj dA0KPiBlbmFfY29tX2RldiAqZW5hX2RldikNCj4gPiAgIHsNCj4gPiAgICAgICAgICBzdHJ1Y3Qg ZW5hX3JzcyAqcnNzID0gJmVuYV9kZXYtPnJzczsNCj4gPg0KPiA+IC0gICAgICAgcnNzLT5oYXNo X2N0cmwgPQ0KPiA+IC0gICAgICAgICAgICAgICBkbWFfYWxsb2NfY29oZXJlbnQoZW5hX2Rldi0+ ZG1hZGV2LCBzaXplb2YoKnJzcy0+aGFzaF9jdHJsKSwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZyc3MtPmhhc2hfY3RybF9kbWFfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ ID4gKyAgICAgICByc3MtPmhhc2hfY3RybCA9IGRtYV9hbGxvY19jb2hlcmVudChlbmFfZGV2LT5k bWFkZXYsIHNpemVvZigqcnNzLQ0KPiA+aGFzaF9jdHJsKSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc3MtPmhhc2hfY3RybF9kbWFfYWRkciwgR0ZQ X0tFUk5FTCk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkoIXJzcy0+aGFzaF9jdHJs KSkNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+IEBAIC0xMTQ3LDgg KzExMTMsOCBAQCBzdGF0aWMgdm9pZCBlbmFfY29tX2hhc2hfY3RybF9kZXN0cm95KHN0cnVjdA0K PiBlbmFfY29tX2RldiAqZW5hX2RldikNCj4gPiAgICAgICAgICBzdHJ1Y3QgZW5hX3JzcyAqcnNz ID0gJmVuYV9kZXYtPnJzczsNCj4gPg0KPiA+ICAgICAgICAgIGlmIChyc3MtPmhhc2hfY3RybCkN Cj4gPiAtICAgICAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBz aXplb2YoKnJzcy0+aGFzaF9jdHJsKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnNzLT5oYXNoX2N0cmwsIHJzcy0+aGFzaF9jdHJsX2RtYV9hZGRyKTsNCj4gPiArICAg ICAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBzaXplb2YoKnJz cy0+aGFzaF9jdHJsKSwNCj4gcnNzLT5oYXNoX2N0cmwsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJzcy0+aGFzaF9jdHJsX2RtYV9hZGRyKTsNCj4gPiAgICAgICAgICBy c3MtPmhhc2hfY3RybCA9IE5VTEw7DQo+ID4gICB9DQo+ID4NCj4gPiBAQCAtMTE3NywxNSArMTE0 MywxMyBAQCBzdGF0aWMgaW50DQo+IGVuYV9jb21faW5kaXJlY3RfdGFibGVfYWxsb2NhdGUoc3Ry dWN0IGVuYV9jb21fZGV2ICplbmFfZGV2LA0KPiA+ICAgICAgICAgIHRibF9zaXplID0gKDFVTEwg PDwgbG9nX3NpemUpICoNCj4gPiAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgZW5hX2Fk bWluX3Jzc19pbmRfdGFibGVfZW50cnkpOw0KPiA+DQo+ID4gLSAgICAgICByc3MtPnJzc19pbmRf dGJsID0NCj4gPiAtICAgICAgICAgICAgICAgZG1hX2FsbG9jX2NvaGVyZW50KGVuYV9kZXYtPmRt YWRldiwgdGJsX3NpemUsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm cnNzLT5yc3NfaW5kX3RibF9kbWFfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICByc3Mt PnJzc19pbmRfdGJsID0gZG1hX2FsbG9jX2NvaGVyZW50KGVuYV9kZXYtPmRtYWRldiwgdGJsX3Np emUsDQo+ICZyc3MtPnJzc19pbmRfdGJsX2RtYV9hZGRyLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsNCj4gPiAgICAgICAgICBp ZiAodW5saWtlbHkoIXJzcy0+cnNzX2luZF90YmwpKQ0KPiA+ICAgICAgICAgICAgICAgICAgZ290 byBtZW1fZXJyMTsNCj4gPg0KPiA+ICAgICAgICAgIHRibF9zaXplID0gKDFVTEwgPDwgbG9nX3Np emUpICogc2l6ZW9mKHUxNik7DQo+ID4gLSAgICAgICByc3MtPmhvc3RfcnNzX2luZF90YmwgPQ0K PiA+IC0gICAgICAgICAgICAgICBkZXZtX2t6YWxsb2MoZW5hX2Rldi0+ZG1hZGV2LCB0Ymxfc2l6 ZSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICByc3MtPmhvc3RfcnNzX2luZF90YmwgPSBkZXZt X2t6YWxsb2MoZW5hX2Rldi0+ZG1hZGV2LCB0Ymxfc2l6ZSwNCj4gR0ZQX0tFUk5FTCk7DQo+ID4g ICAgICAgICAgaWYgKHVubGlrZWx5KCFyc3MtPmhvc3RfcnNzX2luZF90YmwpKQ0KPiA+ICAgICAg ICAgICAgICAgICAgZ290byBtZW1fZXJyMjsNCj4gPg0KPiA+IEBAIC0xMTk3LDggKzExNjEsNyBA QCBtZW1fZXJyMjoNCj4gPiAgICAgICAgICB0Ymxfc2l6ZSA9ICgxVUxMIDw8IGxvZ19zaXplKSAq DQo+ID4gICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGVuYV9hZG1pbl9yc3NfaW5kX3Rh YmxlX2VudHJ5KTsNCj4gPg0KPiA+IC0gICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5hX2Rldi0+ ZG1hZGV2LCB0Ymxfc2l6ZSwgcnNzLT5yc3NfaW5kX3RibCwNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgIHJzcy0+cnNzX2luZF90YmxfZG1hX2FkZHIpOw0KPiA+ICsgICAgICAgZG1hX2Zy ZWVfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCB0Ymxfc2l6ZSwgcnNzLT5yc3NfaW5kX3RibCwN Cj4gcnNzLT5yc3NfaW5kX3RibF9kbWFfYWRkcik7DQo+ID4gICAgICAgICAgcnNzLT5yc3NfaW5k X3RibCA9IE5VTEw7DQo+ID4gICBtZW1fZXJyMToNCj4gPiAgICAgICAgICByc3MtPnRibF9sb2df c2l6ZSA9IDA7DQo+ID4gQEAgLTEyNjEsOCArMTIyNCw3IEBAIHN0YXRpYyBpbnQgZW5hX2NvbV9j cmVhdGVfaW9fc3Eoc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2LA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWF0ZV9jbWQuc3FfYmEsDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb19zcS0+ZGVz Y19hZGRyLnBoeXNfYWRkcik7DQo+ID4gICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkocmV0 KSkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0 X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZW1vcnkg YWRkcmVzcyBzZXQgZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBuZXRk ZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJNZW1vcnkgYWRkcmVzcyBzZXQNCj4gZmFpbGVk XG4iKTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAgICAg ICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICB9DQo+ID4gQEAgLTEyNzMsOCArMTIzNSw3IEBA IHN0YXRpYyBpbnQgZW5hX2NvbV9jcmVhdGVfaW9fc3Eoc3RydWN0DQo+IGVuYV9jb21fZGV2ICpl bmFfZGV2LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzdHJ1Y3QgZW5hX2FkbWluX2FjcV9lbnRyeSAqKSZjbWRfY29tcGxldGlvbiwNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY21kX2NvbXBs ZXRpb24pKTsNCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkocmV0KSkgew0KPiA+IC0gICAgICAg ICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgSU8gU1EuIGVycm9yOiAlZFxuIiwgcmV0 KTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAi RmFpbGVkIHRvIGNyZWF0ZSBJTyBTUS4gZXJyb3I6DQo+ICVkXG4iLCByZXQpOw0KPiA+ICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMTI4 OSw4ICsxMjUwLDcgQEAgc3RhdGljIGludCBlbmFfY29tX2NyZWF0ZV9pb19zcShzdHJ1Y3QNCj4g ZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIGNtZF9j b21wbGV0aW9uLmxscV9kZXNjcmlwdG9yc19vZmZzZXQpOw0KPiA+ICAgICAgICAgIH0NCj4gPg0K PiA+IC0gICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5uZXRfZGV2aWNlLCAiQ3JlYXRlZCBzcVsl dV0sIGRlcHRoWyV1XVxuIiwNCj4gPiAtICAgICAgICAgICAgICAgICAgaW9fc3EtPmlkeCwgaW9f c3EtPnFfZGVwdGgpOw0KPiA+ICsgICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5uZXRfZGV2aWNl LCAiQ3JlYXRlZCBzcVsldV0sIGRlcHRoWyV1XVxuIiwNCj4gaW9fc3EtPmlkeCwgaW9fc3EtPnFf ZGVwdGgpOw0KPiA+DQo+ID4gICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAgIH0NCj4gPiBAQCAt MTQxNyw4ICsxMzc3LDcgQEAgaW50IGVuYV9jb21fY3JlYXRlX2lvX2NxKHN0cnVjdCBlbmFfY29t X2Rldg0KPiAqZW5hX2RldiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RydWN0IGVuYV9hZG1pbl9hY3FfZW50cnkgKikmY21kX2NvbXBsZXRpb24s DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGNtZF9jb21wbGV0aW9uKSk7DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KHJldCkpIHsNCj4g PiAtICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIElPIENRLiBlcnJvcjog JWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0 X2RldmljZSwgIkZhaWxlZCB0byBjcmVhdGUgSU8gQ1EuIGVycm9yOg0KPiAlZFxuIiwgcmV0KTsN Cj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ ID4gQEAgLTE0MzIsOCArMTM5MSw3IEBAIGludCBlbmFfY29tX2NyZWF0ZV9pb19jcShzdHJ1Y3Qg ZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICh1 MzIgX19pb21lbSAqKSgodWludHB0cl90KWVuYV9kZXYtPnJlZ19iYXIgKw0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICBjbWRfY29tcGxldGlvbi5udW1hX25vZGVfcmVnaXN0ZXJfb2Zmc2V0 KTsNCj4gPg0KPiA+IC0gICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5uZXRfZGV2aWNlLCAiQ3Jl YXRlZCBjcVsldV0sIGRlcHRoWyV1XVxuIiwNCj4gPiAtICAgICAgICAgICAgICAgICAgaW9fY3Et PmlkeCwgaW9fY3EtPnFfZGVwdGgpOw0KPiA+ICsgICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5u ZXRfZGV2aWNlLCAiQ3JlYXRlZCBjcVsldV0sIGRlcHRoWyV1XVxuIiwNCj4gaW9fY3EtPmlkeCwg aW9fY3EtPnFfZGVwdGgpOw0KPiA+DQo+ID4gICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAgIH0N Cj4gPiBAQCAtMTQ0Myw4ICsxNDAxLDcgQEAgaW50IGVuYV9jb21fZ2V0X2lvX2hhbmRsZXJzKHN0 cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldiwgdTE2IHFpZCwNCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBlbmFfY29tX2lvX2NxICoqaW9fY3EpDQo+ID4gICB7DQo+ ID4gICAgICAgICAgaWYgKHFpZCA+PSBFTkFfVE9UQUxfTlVNX1FVRVVFUykgew0KPiA+IC0gICAg ICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIkludmFsaWQgcXVldWUgbnVtYmVyICVkIGJ1dCB0aGUgbWF4IGlz ICVkXG4iLCBxaWQsDQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0 X2RldmljZSwgIkludmFsaWQgcXVldWUgbnVtYmVyICVkIGJ1dA0KPiB0aGUgbWF4IGlzICVkXG4i LCBxaWQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOQV9UT1RBTF9OVU1fUVVF VUVTKTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICAgICAgICAg IH0NCj4gPiBAQCAtMTQ4NCw4ICsxNDQxLDcgQEAgdm9pZCBlbmFfY29tX3dhaXRfZm9yX2Fib3J0 X2NvbXBsZXRpb24oc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2KQ0KPiA+ICAgICAgICAg IHNwaW5fbG9ja19pcnFzYXZlKCZhZG1pbl9xdWV1ZS0+cV9sb2NrLCBmbGFncyk7DQo+ID4gICAg ICAgICAgd2hpbGUgKGF0b21pY19yZWFkKCZhZG1pbl9xdWV1ZS0+b3V0c3RhbmRpbmdfY21kcykg IT0gMCkgew0KPiA+ICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRt aW5fcXVldWUtPnFfbG9jaywgZmxhZ3MpOw0KPiA+IC0gICAgICAgICAgICAgICBlbmFfZGVsYXlf ZXhwb25lbnRpYWxfYmFja29mZl91cyhleHArKywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hX2Rldi0+ZW5hX21pbl9wb2xsX2RlbGF5X3Vz KTsNCj4gPiArICAgICAgICAgICAgICAgZW5hX2RlbGF5X2V4cG9uZW50aWFsX2JhY2tvZmZfdXMo ZXhwKyssIGVuYV9kZXYtDQo+ID5lbmFfbWluX3BvbGxfZGVsYXlfdXMpOw0KPiA+ICAgICAgICAg ICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmFkbWluX3F1ZXVlLT5xX2xvY2ssIGZsYWdzKTsN Cj4gPiAgICAgICAgICB9DQo+ID4gICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRt aW5fcXVldWUtPnFfbG9jaywgZmxhZ3MpOw0KPiA+IEBAIC0xNTExLDggKzE0NjcsNyBAQCBpbnQg ZW5hX2NvbV9kZXN0cm95X2lvX2NxKHN0cnVjdCBlbmFfY29tX2Rldg0KPiAqZW5hX2RldiwNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZGVz dHJveV9yZXNwKSk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkocmV0ICYmIChyZXQg IT0gLUVOT0RFVikpKQ0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5l dF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBkZXN0 cm95IElPIENRLiBlcnJvcjogJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRl dl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIkZhaWxlZCB0byBkZXN0cm95IElPIENRLiBlcnJv cjoNCj4gJWRcbiIsIHJldCk7DQo+ID4NCj4gPiAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICAg fQ0KPiA+IEBAIC0xNTgwLDggKzE1MzUsNyBAQCBpbnQgZW5hX2NvbV9zZXRfYWVucV9jb25maWco c3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2LCB1MzIgZ3JvdXBzX2ZsYWcpDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlc3ApKTsN Cj4gPg0KPiA+ICAgICAgICAgIGlmICh1bmxpa2VseShyZXQpKQ0KPiA+IC0gICAgICAgICAgICAg ICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIkZhaWxlZCB0byBjb25maWcgQUVOUSByZXQ6ICVkXG4iLCByZXQpOw0KPiA+ICsg ICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJGYWlsZWQgdG8g Y29uZmlnIEFFTlEgcmV0Og0KPiAlZFxuIiwgcmV0KTsNCj4gPg0KPiA+ICAgICAgICAgIHJldHVy biByZXQ7DQo+ID4gICB9DQo+ID4gQEAgLTE2MDIsOCArMTU1Niw3IEBAIGludCBlbmFfY29tX2dl dF9kbWFfd2lkdGgoc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2KQ0KPiA+ICAgICAgICAg IG5ldGRldl9kYmcoZW5hX2Rldi0+bmV0X2RldmljZSwgIkVOQSBkbWEgd2lkdGg6ICVkXG4iLCB3 aWR0aCk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAoKHdpZHRoIDwgMzIpIHx8IHdpZHRoID4gRU5B X01BWF9QSFlTX0FERFJfU0laRV9CSVRTKSB7DQo+ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9l cnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIkRNQSB3aWR0aCBpbGxlZ2FsIHZhbHVlOg0KPiAlZFxu IiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCk7DQo+ID4gKyAgICAgICAg ICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIkRNQSB3aWR0aCBpbGxlZ2Fs IHZhbHVlOg0KPiAlZFxuIiwgd2lkdGgpOw0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTE2MjUsMTkgKzE1NzgsMTYgQEAg aW50IGVuYV9jb21fdmFsaWRhdGVfdmVyc2lvbihzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9k ZXYpDQo+ID4gICAgICAgICAgY3RybF92ZXIgPSBlbmFfY29tX3JlZ19iYXJfcmVhZDMyKGVuYV9k ZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOQV9S RUdTX0NPTlRST0xMRVJfVkVSU0lPTl9PRkYpOw0KPiA+DQo+ID4gLSAgICAgICBpZiAodW5saWtl bHkoKHZlciA9PSBFTkFfTU1JT19SRUFEX1RJTUVPVVQpIHx8DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgKGN0cmxfdmVyID09IEVOQV9NTUlPX1JFQURfVElNRU9VVCkpKSB7DQo+ID4gKyAgICAg ICBpZiAodW5saWtlbHkoKHZlciA9PSBFTkFfTU1JT19SRUFEX1RJTUVPVVQpIHx8IChjdHJsX3Zl ciA9PQ0KPiBFTkFfTU1JT19SRUFEX1RJTUVPVVQpKSkgew0KPiA+ICAgICAgICAgICAgICAgICAg bmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAiUmVnIHJlYWQgdGltZW91dA0KPiBvY2N1 cnJlZFxuIik7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVUSU1FOw0KPiA+ICAgICAg ICAgIH0NCj4gPg0KPiA+ICAgICAgICAgIGRldl9pbmZvKGVuYV9kZXYtPmRtYWRldiwgIkVOQSBk ZXZpY2UgdmVyc2lvbjogJWQuJWRcbiIsDQo+ID4gLSAgICAgICAgICAgICAgICAodmVyICYgRU5B X1JFR1NfVkVSU0lPTl9NQUpPUl9WRVJTSU9OX01BU0spID4+DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgIEVOQV9SRUdTX1ZFUlNJT05fTUFKT1JfVkVSU0lPTl9TSElGVCwNCj4gPiArICAg ICAgICAgICAgICAgICh2ZXIgJiBFTkFfUkVHU19WRVJTSU9OX01BSk9SX1ZFUlNJT05fTUFTSykg Pj4NCj4gRU5BX1JFR1NfVkVSU0lPTl9NQUpPUl9WRVJTSU9OX1NISUZULA0KPiA+ICAgICAgICAg ICAgICAgICAgIHZlciAmIEVOQV9SRUdTX1ZFUlNJT05fTUlOT1JfVkVSU0lPTl9NQVNLKTsNCj4g Pg0KPiA+IC0gICAgICAgZGV2X2luZm8oZW5hX2Rldi0+ZG1hZGV2LA0KPiA+IC0gICAgICAgICAg ICAgICAgIkVOQSBjb250cm9sbGVyIHZlcnNpb246ICVkLiVkLiVkIGltcGxlbWVudGF0aW9uIHZl cnNpb24NCj4gJWRcbiIsDQo+ID4gKyAgICAgICBkZXZfaW5mbyhlbmFfZGV2LT5kbWFkZXYsICJF TkEgY29udHJvbGxlciB2ZXJzaW9uOiAlZC4lZC4lZA0KPiBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9u ICVkXG4iLA0KPiA+ICAgICAgICAgICAgICAgICAgIChjdHJsX3ZlciAmDQo+IEVOQV9SRUdTX0NP TlRST0xMRVJfVkVSU0lPTl9NQUpPUl9WRVJTSU9OX01BU0spID4+DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICBFTkFfUkVHU19DT05UUk9MTEVSX1ZFUlNJT05fTUFKT1JfVkVSU0lPTl9T SElGVCwNCj4gPiAgICAgICAgICAgICAgICAgICAoY3RybF92ZXIgJg0KPiBFTkFfUkVHU19DT05U Uk9MTEVSX1ZFUlNJT05fTUlOT1JfVkVSU0lPTl9NQVNLKSA+Pg0KPiA+IEBAIC0xNjg2LDIwICsx NjM2LDE3IEBAIHZvaWQgZW5hX2NvbV9hZG1pbl9kZXN0cm95KHN0cnVjdA0KPiBlbmFfY29tX2Rl diAqZW5hX2RldikNCj4gPg0KPiA+ICAgICAgICAgIHNpemUgPSBBRE1JTl9TUV9TSVpFKGFkbWlu X3F1ZXVlLT5xX2RlcHRoKTsNCj4gPiAgICAgICAgICBpZiAoc3EtPmVudHJpZXMpDQo+ID4gLSAg ICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KGVuYV9kZXYtPmRtYWRldiwgc2l6ZSwgc3Et PmVudHJpZXMsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxLT5kbWFf YWRkcik7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KGVuYV9kZXYtPmRt YWRldiwgc2l6ZSwgc3EtPmVudHJpZXMsIHNxLQ0KPiA+ZG1hX2FkZHIpOw0KPiA+ICAgICAgICAg IHNxLT5lbnRyaWVzID0gTlVMTDsNCj4gPg0KPiA+ICAgICAgICAgIHNpemUgPSBBRE1JTl9DUV9T SVpFKGFkbWluX3F1ZXVlLT5xX2RlcHRoKTsNCj4gPiAgICAgICAgICBpZiAoY3EtPmVudHJpZXMp DQo+ID4gLSAgICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KGVuYV9kZXYtPmRtYWRldiwg c2l6ZSwgY3EtPmVudHJpZXMsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNxLT5kbWFfYWRkcik7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KGVu YV9kZXYtPmRtYWRldiwgc2l6ZSwgY3EtPmVudHJpZXMsIGNxLQ0KPiA+ZG1hX2FkZHIpOw0KPiA+ ICAgICAgICAgIGNxLT5lbnRyaWVzID0gTlVMTDsNCj4gPg0KPiA+ICAgICAgICAgIHNpemUgPSBB RE1JTl9BRU5RX1NJWkUoYWVucS0+cV9kZXB0aCk7DQo+ID4gICAgICAgICAgaWYgKGVuYV9kZXYt PmFlbnEuZW50cmllcykNCj4gPiAtICAgICAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5h X2Rldi0+ZG1hZGV2LCBzaXplLCBhZW5xLT5lbnRyaWVzLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZW5xLT5kbWFfYWRkcik7DQo+ID4gKyAgICAgICAgICAgICAgIGRt YV9mcmVlX2NvaGVyZW50KGVuYV9kZXYtPmRtYWRldiwgc2l6ZSwgYWVucS0+ZW50cmllcywNCj4g YWVucS0+ZG1hX2FkZHIpOw0KPiA+ICAgICAgICAgIGFlbnEtPmVudHJpZXMgPSBOVUxMOw0KPiA+ ICAgfQ0KPiA+DQo+ID4gQEAgLTE3MjUsMTAgKzE2NzIsOCBAQCBpbnQNCj4gZW5hX2NvbV9tbWlv X3JlZ19yZWFkX3JlcXVlc3RfaW5pdChzdHJ1Y3QgZW5hX2NvbV9kZXYgKmVuYV9kZXYpDQo+ID4g ICAgICAgICAgc3RydWN0IGVuYV9jb21fbW1pb19yZWFkICptbWlvX3JlYWQgPSAmZW5hX2Rldi0+ bW1pb19yZWFkOw0KPiA+DQo+ID4gICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJm1taW9fcmVhZC0+ bG9jayk7DQo+ID4gLSAgICAgICBtbWlvX3JlYWQtPnJlYWRfcmVzcCA9DQo+ID4gLSAgICAgICAg ICAgICAgIGRtYV9hbGxvY19jb2hlcmVudChlbmFfZGV2LT5kbWFkZXYsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm1taW9fcmVhZC0+cmVhZF9yZXNwKSwN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtbWlvX3JlYWQtPnJlYWRf cmVzcF9kbWFfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBtbWlvX3JlYWQtPnJlYWRf cmVzcCA9IGRtYV9hbGxvY19jb2hlcmVudChlbmFfZGV2LT5kbWFkZXYsDQo+IHNpemVvZigqbW1p b19yZWFkLT5yZWFkX3Jlc3ApLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJm1taW9fcmVhZC0+cmVhZF9yZXNwX2RtYV9hZGRyLA0KPiBHRlBf S0VSTkVMKTsNCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkoIW1taW9fcmVhZC0+cmVhZF9yZXNw KSkNCj4gPiAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOw0KPiA+DQo+ID4gQEAgLTE3NTksOCAr MTcwNCw4IEBAIHZvaWQNCj4gZW5hX2NvbV9tbWlvX3JlZ19yZWFkX3JlcXVlc3RfZGVzdHJveShz dHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYpDQo+ID4gICAgICAgICAgd3JpdGVsKDB4MCwg ZW5hX2Rldi0+cmVnX2JhciArIEVOQV9SRUdTX01NSU9fUkVTUF9MT19PRkYpOw0KPiA+ICAgICAg ICAgIHdyaXRlbCgweDAsIGVuYV9kZXYtPnJlZ19iYXIgKyBFTkFfUkVHU19NTUlPX1JFU1BfSElf T0ZGKTsNCj4gPg0KPiA+IC0gICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2 LCBzaXplb2YoKm1taW9fcmVhZC0NCj4gPnJlYWRfcmVzcCksDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICBtbWlvX3JlYWQtPnJlYWRfcmVzcCwgbW1pb19yZWFkLQ0KPiA+cmVhZF9yZXNw X2RtYV9hZGRyKTsNCj4gPiArICAgICAgIGRtYV9mcmVlX2NvaGVyZW50KGVuYV9kZXYtPmRtYWRl diwgc2l6ZW9mKCptbWlvX3JlYWQtDQo+ID5yZWFkX3Jlc3ApLCBtbWlvX3JlYWQtPnJlYWRfcmVz cCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG1taW9fcmVhZC0+cmVhZF9yZXNwX2Rt YV9hZGRyKTsNCj4gPg0KPiA+ICAgICAgICAgIG1taW9fcmVhZC0+cmVhZF9yZXNwID0gTlVMTDsN Cj4gPiAgIH0NCj4gPiBAQCAtMTc5Miw4ICsxNzM3LDcgQEAgaW50IGVuYV9jb21fYWRtaW5faW5p dChzdHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsDQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ ID4gICAgICAgICAgaWYgKCEoZGV2X3N0cyAmIEVOQV9SRUdTX0RFVl9TVFNfUkVBRFlfTUFTSykp IHsNCj4gPiAtICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLA0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICJEZXZpY2UgaXNuJ3QgcmVhZHksIGFib3J0 IGNvbSBpbml0XG4iKTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5u ZXRfZGV2aWNlLCAiRGV2aWNlIGlzbid0IHJlYWR5LCBhYm9ydCBjb20NCj4gaW5pdFxuIik7DQo+ ID4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4gPiAgICAgICAgICB9DQo+ID4N Cj4gPiBAQCAtMTg3MCw4ICsxODE0LDcgQEAgaW50IGVuYV9jb21fY3JlYXRlX2lvX3F1ZXVlKHN0 cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldiwNCj4gPiAgICAgICAgICBpbnQgcmV0Ow0KPiA+ DQo+ID4gICAgICAgICAgaWYgKGN0eC0+cWlkID49IEVOQV9UT1RBTF9OVU1fUVVFVUVTKSB7DQo+ ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAiUWlkICglZCkgaXMgYmlnZ2VyIHRoYW4gbWF4IG51 bSBvZiBxdWV1ZXMgKCVkKVxuIiwNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFf ZGV2LT5uZXRfZGV2aWNlLCAiUWlkICglZCkgaXMgYmlnZ2VyIHRoYW4gbWF4DQo+IG51bSBvZiBx dWV1ZXMgKCVkKVxuIiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5xaWQs IEVOQV9UT1RBTF9OVU1fUVVFVUVTKTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiA+ICAgICAgICAgIH0NCj4gPiBAQCAtMTg5Nyw4ICsxODQwLDcgQEAgaW50IGVuYV9j b21fY3JlYXRlX2lvX3F1ZXVlKHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldiwNCj4gPg0K PiA+ICAgICAgICAgIGlmIChjdHgtPmRpcmVjdGlvbiA9PSBFTkFfQ09NX0lPX1FVRVVFX0RJUkVD VElPTl9UWCkNCj4gPiAgICAgICAgICAgICAgICAgIC8qIGhlYWRlciBsZW5ndGggaXMgbGltaXRl ZCB0byA4IGJpdHMgKi8NCj4gPiAtICAgICAgICAgICAgICAgaW9fc3EtPnR4X21heF9oZWFkZXJf c2l6ZSA9DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgbWluX3QodTMyLCBlbmFfZGV2LT50 eF9tYXhfaGVhZGVyX3NpemUsIFNaXzI1Nik7DQo+ID4gKyAgICAgICAgICAgICAgIGlvX3NxLT50 eF9tYXhfaGVhZGVyX3NpemUgPSBtaW5fdCh1MzIsIGVuYV9kZXYtDQo+ID50eF9tYXhfaGVhZGVy X3NpemUsIFNaXzI1Nik7DQo+ID4NCj4gPiAgICAgICAgICByZXQgPSBlbmFfY29tX2luaXRfaW9f c3EoZW5hX2RldiwgY3R4LCBpb19zcSk7DQo+ID4gICAgICAgICAgaWYgKHJldCkNCj4gPiBAQCAt MTkzMCw4ICsxODcyLDcgQEAgdm9pZCBlbmFfY29tX2Rlc3Ryb3lfaW9fcXVldWUoc3RydWN0DQo+ IGVuYV9jb21fZGV2ICplbmFfZGV2LCB1MTYgcWlkKQ0KPiA+ICAgICAgICAgIHN0cnVjdCBlbmFf Y29tX2lvX2NxICppb19jcTsNCj4gPg0KPiA+ICAgICAgICAgIGlmIChxaWQgPj0gRU5BX1RPVEFM X05VTV9RVUVVRVMpIHsNCj4gPiAtICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5u ZXRfZGV2aWNlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICJRaWQgKCVkKSBpcyBi aWdnZXIgdGhhbiBtYXggbnVtIG9mIHF1ZXVlcyAoJWQpXG4iLA0KPiA+ICsgICAgICAgICAgICAg ICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJRaWQgKCVkKSBpcyBiaWdnZXIgdGhh biBtYXgNCj4gbnVtIG9mIHF1ZXVlcyAoJWQpXG4iLA0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBxaWQsIEVOQV9UT1RBTF9OVU1fUVVFVUVTKTsNCj4gPiAgICAgICAgICAgICAgICAg IHJldHVybjsNCj4gPiAgICAgICAgICB9DQo+ID4gQEAgLTE5NzUsOCArMTkxNiw3IEBAIGludCBl bmFfY29tX2dldF9kZXZfYXR0cl9mZWF0KHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2RldiwN Cj4gPiAgICAgICAgICAgICAgICAgIGlmIChyYykNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHJjOw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIGlmIChnZXRfcmVzcC51Lm1h eF9xdWV1ZV9leHQudmVyc2lvbiAhPQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgRU5BX0ZFQVRV UkVfTUFYX1FVRVVFX0VYVF9WRVIpDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChnZXRfcmVzcC51 Lm1heF9xdWV1ZV9leHQudmVyc2lvbiAhPQ0KPiBFTkFfRkVBVFVSRV9NQVhfUVVFVUVfRVhUX1ZF UikNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4NCj4g PiAgICAgICAgICAgICAgICAgIG1lbWNweSgmZ2V0X2ZlYXRfY3R4LT5tYXhfcXVldWVfZXh0LA0K PiAmZ2V0X3Jlc3AudS5tYXhfcXVldWVfZXh0LA0KPiA+IEBAIC0yMDE3LDE4ICsxOTU3LDE1IEBA IGludCBlbmFfY29tX2dldF9kZXZfYXR0cl9mZWF0KHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5h X2RldiwNCj4gPiAgICAgICAgICByYyA9IGVuYV9jb21fZ2V0X2ZlYXR1cmUoZW5hX2RldiwgJmdl dF9yZXNwLA0KPiBFTkFfQURNSU5fSFdfSElOVFMsIDApOw0KPiA+DQo+ID4gICAgICAgICAgaWYg KCFyYykNCj4gPiAtICAgICAgICAgICAgICAgbWVtY3B5KCZnZXRfZmVhdF9jdHgtPmh3X2hpbnRz LCAmZ2V0X3Jlc3AudS5od19oaW50cywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZihnZXRfcmVzcC51Lmh3X2hpbnRzKSk7DQo+ID4gKyAgICAgICAgICAgICAgIG1lbWNweSgmZ2V0 X2ZlYXRfY3R4LT5od19oaW50cywgJmdldF9yZXNwLnUuaHdfaGludHMsDQo+IHNpemVvZihnZXRf cmVzcC51Lmh3X2hpbnRzKSk7DQo+ID4gICAgICAgICAgZWxzZSBpZiAocmMgPT0gLUVPUE5PVFNV UFApDQo+ID4gLSAgICAgICAgICAgICAgIG1lbXNldCgmZ2V0X2ZlYXRfY3R4LT5od19oaW50cywg MHgwLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdldF9mZWF0X2N0eC0+aHdf aGludHMpKTsNCj4gPiArICAgICAgICAgICAgICAgbWVtc2V0KCZnZXRfZmVhdF9jdHgtPmh3X2hp bnRzLCAweDAsIHNpemVvZihnZXRfZmVhdF9jdHgtDQo+ID5od19oaW50cykpOw0KPiA+ICAgICAg ICAgIGVsc2UNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiByYzsNCj4gPg0KPiA+ICAgICAg ICAgIHJjID0gZW5hX2NvbV9nZXRfZmVhdHVyZShlbmFfZGV2LCAmZ2V0X3Jlc3AsIEVOQV9BRE1J Tl9MTFEsDQo+IDApOw0KPiA+ICAgICAgICAgIGlmICghcmMpDQo+ID4gLSAgICAgICAgICAgICAg IG1lbWNweSgmZ2V0X2ZlYXRfY3R4LT5sbHEsICZnZXRfcmVzcC51LmxscSwNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihnZXRfcmVzcC51LmxscSkpOw0KPiA+ICsgICAgICAgICAg ICAgICBtZW1jcHkoJmdldF9mZWF0X2N0eC0+bGxxLCAmZ2V0X3Jlc3AudS5sbHEsDQo+IHNpemVv ZihnZXRfcmVzcC51LmxscSkpOw0KPiA+ICAgICAgICAgIGVsc2UgaWYgKHJjID09IC1FT1BOT1RT VVBQKQ0KPiA+ICAgICAgICAgICAgICAgICAgbWVtc2V0KCZnZXRfZmVhdF9jdHgtPmxscSwgMHgw LCBzaXplb2YoZ2V0X2ZlYXRfY3R4LT5sbHEpKTsNCj4gPiAgICAgICAgICBlbHNlDQo+ID4gQEAg LTIwNzYsOCArMjAxMyw3IEBAIHZvaWQgZW5hX2NvbV9hZW5xX2ludHJfaGFuZGxlcihzdHJ1Y3QN Cj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYsIHZvaWQgKmRhdGEpDQo+ID4gICAgICAgICAgYWVucV9j b21tb24gPSAmYWVucV9lLT5hZW5xX2NvbW1vbl9kZXNjOw0KPiA+DQo+ID4gICAgICAgICAgLyog R28gb3ZlciBhbGwgdGhlIGV2ZW50cyAqLw0KPiA+IC0gICAgICAgd2hpbGUgKChSRUFEX09OQ0Uo YWVucV9jb21tb24tPmZsYWdzKSAmDQo+ID4gLSAgICAgICAgICAgICAgIEVOQV9BRE1JTl9BRU5R X0NPTU1PTl9ERVNDX1BIQVNFX01BU0spID09IHBoYXNlKSB7DQo+ID4gKyAgICAgICB3aGlsZSAo KFJFQURfT05DRShhZW5xX2NvbW1vbi0+ZmxhZ3MpICYNCj4gRU5BX0FETUlOX0FFTlFfQ09NTU9O X0RFU0NfUEhBU0VfTUFTSykgPT0gcGhhc2UpIHsNCj4gPiAgICAgICAgICAgICAgICAgIC8qIE1h a2Ugc3VyZSB0aGUgcGhhc2UgYml0IChvd25lcnNoaXApIGlzIGFzIGV4cGVjdGVkIGJlZm9yZQ0K PiA+ICAgICAgICAgICAgICAgICAgICogcmVhZGluZyB0aGUgcmVzdCBvZiB0aGUgZGVzY3JpcHRv ci4NCj4gPiAgICAgICAgICAgICAgICAgICAqLw0KPiA+IEBAIC0yMDg2LDggKzIwMjIsNyBAQCB2 b2lkIGVuYV9jb21fYWVucV9pbnRyX2hhbmRsZXIoc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFf ZGV2LCB2b2lkICpkYXRhKQ0KPiA+ICAgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gKHU2NClh ZW5xX2NvbW1vbi0+dGltZXN0YW1wX2xvdyB8DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICgodTY0KWFlbnFfY29tbW9uLT50aW1lc3RhbXBfaGlnaCA8PCAzMik7DQo+ID4NCj4gPiAtICAg ICAgICAgICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICJBRU5RISBHcm91cFsleF0gU3luZHJvbWVbJXhdIHRpbWVzdGFt cDogWyVsbHVzXVxuIiwNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2LT5u ZXRfZGV2aWNlLCAiQUVOUSEgR3JvdXBbJXhdDQo+IFN5bmRyb21lWyV4XSB0aW1lc3RhbXA6IFsl bGx1c11cbiIsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlbnFfY29tbW9uLT5n cm91cCwgYWVucV9jb21tb24tPnN5bmRyb21lLA0KPiB0aW1lc3RhbXApOw0KPiA+DQo+ID4gICAg ICAgICAgICAgICAgICAvKiBIYW5kbGUgc3BlY2lmaWMgZXZlbnQqLw0KPiA+IEBAIC0yMTE2LDgg KzIwNTEsNyBAQCB2b2lkIGVuYV9jb21fYWVucV9pbnRyX2hhbmRsZXIoc3RydWN0DQo+IGVuYV9j b21fZGV2ICplbmFfZGV2LCB2b2lkICpkYXRhKQ0KPiA+DQo+ID4gICAgICAgICAgLyogd3JpdGUg dGhlIGFlbnEgZG9vcmJlbGwgYWZ0ZXIgYWxsIEFFTlEgZGVzY3JpcHRvcnMgd2VyZSByZWFkICov DQo+ID4gICAgICAgICAgbWIoKTsNCj4gPiAtICAgICAgIHdyaXRlbF9yZWxheGVkKCh1MzIpYWVu cS0+aGVhZCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgIGVuYV9kZXYtPnJlZ19iYXIgKyBF TkFfUkVHU19BRU5RX0hFQURfREJfT0ZGKTsNCj4gPiArICAgICAgIHdyaXRlbF9yZWxheGVkKCh1 MzIpYWVucS0+aGVhZCwgZW5hX2Rldi0+cmVnX2JhciArDQo+IEVOQV9SRUdTX0FFTlFfSEVBRF9E Ql9PRkYpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQgZW5hX2NvbV9kZXZfcmVzZXQoc3RydWN0 IGVuYV9jb21fZGV2ICplbmFfZGV2LA0KPiA+IEBAIC0yMTI5LDE1ICsyMDYzLDEzIEBAIGludCBl bmFfY29tX2Rldl9yZXNldChzdHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsDQo+ID4gICAg ICAgICAgc3RhdCA9IGVuYV9jb21fcmVnX2Jhcl9yZWFkMzIoZW5hX2RldiwNCj4gRU5BX1JFR1Nf REVWX1NUU19PRkYpOw0KPiA+ICAgICAgICAgIGNhcCA9IGVuYV9jb21fcmVnX2Jhcl9yZWFkMzIo ZW5hX2RldiwgRU5BX1JFR1NfQ0FQU19PRkYpOw0KPiA+DQo+ID4gLSAgICAgICBpZiAodW5saWtl bHkoKHN0YXQgPT0gRU5BX01NSU9fUkVBRF9USU1FT1VUKSB8fA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgIChjYXAgPT0gRU5BX01NSU9fUkVBRF9USU1FT1VUKSkpIHsNCj4gPiArICAgICAgIGlm ICh1bmxpa2VseSgoc3RhdCA9PSBFTkFfTU1JT19SRUFEX1RJTUVPVVQpIHx8IChjYXAgPT0NCj4g RU5BX01NSU9fUkVBRF9USU1FT1VUKSkpIHsNCj4gPiAgICAgICAgICAgICAgICAgIG5ldGRldl9l cnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIlJlZyByZWFkMzIgdGltZW91dA0KPiBvY2N1cnJlZFxu Iik7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVUSU1FOw0KPiA+ICAgICAgICAgIH0N Cj4gPg0KPiA+ICAgICAgICAgIGlmICgoc3RhdCAmIEVOQV9SRUdTX0RFVl9TVFNfUkVBRFlfTUFT SykgPT0gMCkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9k ZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkRldmljZSBpc24ndCByZWFk eSwgY2FuJ3QgcmVzZXQgZGV2aWNlXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2Vy cihlbmFfZGV2LT5uZXRfZGV2aWNlLCAiRGV2aWNlIGlzbid0IHJlYWR5LCBjYW4ndCByZXNldA0K PiBkZXZpY2VcbiIpOw0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g ICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTIxNjAsOCArMjA5Miw3IEBAIGludCBlbmFfY29tX2Rl dl9yZXNldChzdHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsDQo+ID4gICAgICAgICAgcmMg PSB3YWl0X2Zvcl9yZXNldF9zdGF0ZShlbmFfZGV2LCB0aW1lb3V0LA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRU5BX1JFR1NfREVWX1NUU19SRVNFVF9JTl9QUk9HUkVT U19NQVNLKTsNCj4gPiAgICAgICAgICBpZiAocmMgIT0gMCkgew0KPiA+IC0gICAgICAgICAgICAg ICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIlJlc2V0IGluZGljYXRpb24gZGlkbid0IHR1cm4gb25cbiIpOw0KPiA+ICsgICAg ICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJSZXNldCBpbmRpY2F0 aW9uIGRpZG4ndCB0dXJuDQo+IG9uXG4iKTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiBy YzsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMjE2OSw4ICsyMTAwLDcgQEAgaW50IGVu YV9jb21fZGV2X3Jlc2V0KHN0cnVjdCBlbmFfY29tX2Rldg0KPiAqZW5hX2RldiwNCj4gPiAgICAg ICAgICB3cml0ZWwoMCwgZW5hX2Rldi0+cmVnX2JhciArIEVOQV9SRUdTX0RFVl9DVExfT0ZGKTsN Cj4gPiAgICAgICAgICByYyA9IHdhaXRfZm9yX3Jlc2V0X3N0YXRlKGVuYV9kZXYsIHRpbWVvdXQs IDApOw0KPiA+ICAgICAgICAgIGlmIChyYyAhPSAwKSB7DQo+ID4gLSAgICAgICAgICAgICAgIG5l dGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAiUmVzZXQgaW5kaWNhdGlvbiBkaWRuJ3QgdHVybiBvZmZcbiIpOw0KPiA+ICsgICAgICAg ICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJSZXNldCBpbmRpY2F0aW9u IGRpZG4ndCB0dXJuDQo+IG9mZlxuIik7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gcmM7 DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTIyMDcsOCArMjEzNyw3IEBAIHN0YXRpYyBp bnQgZW5hX2dldF9kZXZfc3RhdHMoc3RydWN0IGVuYV9jb21fZGV2DQo+ICplbmFfZGV2LA0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmdl dF9yZXNwKSk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHkocmV0KSkNCj4gPiAtICAg ICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IHN0YXRzLiBlcnJvcjogJWRcbiIsIHJl dCk7DQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwg IkZhaWxlZCB0byBnZXQgc3RhdHMuIGVycm9yOg0KPiAlZFxuIiwgcmV0KTsNCj4gPg0KPiA+ICAg ICAgICAgIHJldHVybiByZXQ7DQo+ID4gICB9DQo+ID4gQEAgLTIyMjAsOCArMjE0OSw3IEBAIGlu dCBlbmFfY29tX2dldF9lbmlfc3RhdHMoc3RydWN0IGVuYV9jb21fZGV2DQo+ICplbmFfZGV2LA0K PiA+ICAgICAgICAgIGludCByZXQ7DQo+ID4NCj4gPiAgICAgICAgICBpZiAoIWVuYV9jb21fZ2V0 X2NhcChlbmFfZGV2LCBFTkFfQURNSU5fRU5JX1NUQVRTKSkgew0KPiA+IC0gICAgICAgICAgICAg ICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIkNhcGFiaWxpdHkgJWQgaXNuJ3Qgc3VwcG9ydGVkXG4iLA0KPiA+ICsgICAgICAg ICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJDYXBhYmlsaXR5ICVkIGlz bid0DQo+IHN1cHBvcnRlZFxuIiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5B X0FETUlOX0VOSV9TVEFUUyk7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNV UFA7DQo+ID4gICAgICAgICAgfQ0KPiA+IEBAIC0yMjU4LDggKzIxODYsNyBAQCBpbnQgZW5hX2Nv bV9zZXRfZGV2X210dShzdHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsIHUzMiBtdHUpDQo+ ID4gICAgICAgICAgaW50IHJldDsNCj4gPg0KPiA+ICAgICAgICAgIGlmICghZW5hX2NvbV9jaGVj a19zdXBwb3J0ZWRfZmVhdHVyZV9pZChlbmFfZGV2LA0KPiBFTkFfQURNSU5fTVRVKSkgew0KPiA+ IC0gICAgICAgICAgICAgICBuZXRkZXZfZGJnKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJGZWF0dXJl ICVkIGlzbid0DQo+IHN1cHBvcnRlZFxuIiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICBFTkFfQURNSU5fTVRVKTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2RiZyhlbmFfZGV2 LT5uZXRfZGV2aWNlLCAiRmVhdHVyZSAlZCBpc24ndA0KPiBzdXBwb3J0ZWRcbiIsIEVOQV9BRE1J Tl9NVFUpOw0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICAg ICAgICAgIH0NCj4gPg0KPiA+IEBAIC0yMjc4LDggKzIyMDUsNyBAQCBpbnQgZW5hX2NvbV9zZXRf ZGV2X210dShzdHJ1Y3QgZW5hX2NvbV9kZXYNCj4gKmVuYV9kZXYsIHUzMiBtdHUpDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlc3ApKTsN Cj4gPg0KPiA+ICAgICAgICAgIGlmICh1bmxpa2VseShyZXQpKQ0KPiA+IC0gICAgICAgICAgICAg ICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIkZhaWxlZCB0byBzZXQgbXR1ICVkLiBlcnJvcjogJWRcbiIsIG10dSwgcmV0KTsN Cj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLCAiRmFp bGVkIHRvIHNldCBtdHUgJWQuIGVycm9yOg0KPiAlZFxuIiwgbXR1LCByZXQpOw0KPiA+DQo+ID4g ICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAgIH0NCj4gPiBAQCAtMjI5Myw4ICsyMjE5LDcgQEAg aW50IGVuYV9jb21fZ2V0X29mZmxvYWRfc2V0dGluZ3Moc3RydWN0DQo+IGVuYV9jb21fZGV2ICpl bmFfZGV2LA0KPiA+ICAgICAgICAgIHJldCA9IGVuYV9jb21fZ2V0X2ZlYXR1cmUoZW5hX2Rldiwg JnJlc3AsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTkFfQURNSU5f U1RBVEVMRVNTX09GRkxPQURfQ09ORklHLCAwKTsNCj4gPiAgICAgICAgICBpZiAodW5saWtlbHko cmV0KSkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZp Y2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgb2ZmbG9h ZCBjYXBhYmlsaXRpZXMgJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9l cnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIkZhaWxlZCB0byBnZXQgb2ZmbG9hZA0KPiBjYXBhYmls aXRpZXMgJWRcbiIsIHJldCk7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ ICAgICAgICAgIH0NCj4gPg0KPiA+IEBAIC0yMzEyLDggKzIyMzcsNyBAQCBpbnQgZW5hX2NvbV9z ZXRfaGFzaF9mdW5jdGlvbihzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYpDQo+ID4gICAg ICAgICAgc3RydWN0IGVuYV9hZG1pbl9nZXRfZmVhdF9yZXNwIGdldF9yZXNwOw0KPiA+ICAgICAg ICAgIGludCByZXQ7DQo+ID4NCj4gPiAtICAgICAgIGlmICghZW5hX2NvbV9jaGVja19zdXBwb3J0 ZWRfZmVhdHVyZV9pZChlbmFfZGV2LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVOQV9BRE1JTl9SU1NfSEFTSF9GVU5DVElPTikpIHsNCj4gPiAr ICAgICAgIGlmICghZW5hX2NvbV9jaGVja19zdXBwb3J0ZWRfZmVhdHVyZV9pZChlbmFfZGV2LA0K PiBFTkFfQURNSU5fUlNTX0hBU0hfRlVOQ1RJT04pKSB7DQo+ID4gICAgICAgICAgICAgICAgICBu ZXRkZXZfZGJnKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJGZWF0dXJlICVkIGlzbid0DQo+IHN1cHBv cnRlZFxuIiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5BX0FETUlOX1JTU19I QVNIX0ZVTkNUSU9OKTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsN Cj4gPiBAQCAtMjMyNiw4ICsyMjUwLDcgQEAgaW50IGVuYV9jb21fc2V0X2hhc2hfZnVuY3Rpb24o c3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2KQ0KPiA+ICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsNCj4gPg0KPiA+ICAgICAgICAgIGlmICghKGdldF9yZXNwLnUuZmxvd19oYXNoX2Z1 bmMuc3VwcG9ydGVkX2Z1bmMgJiBCSVQocnNzLQ0KPiA+aGFzaF9mdW5jKSkpIHsNCj4gPiAtICAg ICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICJGdW5jIGhhc2ggJWQgaXNuJ3Qgc3VwcG9ydGVkIGJ5IGRldmlj ZSwgYWJvcnRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0 X2RldmljZSwgIkZ1bmMgaGFzaCAlZCBpc24ndCBzdXBwb3J0ZWQNCj4gYnkgZGV2aWNlLCBhYm9y dFxuIiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNzLT5oYXNoX2Z1bmMpOw0K PiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICAgICAgICAgIH0N Cj4gPiBAQCAtMjM1Nyw4ICsyMjgwLDcgQEAgaW50IGVuYV9jb21fc2V0X2hhc2hfZnVuY3Rpb24o c3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgZW5hX2FkbWluX2FjcV9lbnRyeSAqKSZy ZXNwLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVvZihyZXNwKSk7DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KHJldCkpIHsNCj4gPiAtICAg ICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gc2V0IGhhc2ggZnVuY3Rpb24gJWQuIGVycm9y OiAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2 aWNlLCAiRmFpbGVkIHRvIHNldCBoYXNoIGZ1bmN0aW9uDQo+ICVkLiBlcnJvcjogJWRcbiIsDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzcy0+aGFzaF9mdW5jLCByZXQpOw0KPiA+ ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAgICAgICAgfQ0KPiA+IEBA IC0yMzkwLDE2ICsyMzEyLDE1IEBAIGludCBlbmFfY29tX2ZpbGxfaGFzaF9mdW5jdGlvbihzdHJ1 Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYsDQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4g cmM7DQo+ID4NCj4gPiAgICAgICAgICBpZiAoIShCSVQoZnVuYykgJiBnZXRfcmVzcC51LmZsb3df aGFzaF9mdW5jLnN1cHBvcnRlZF9mdW5jKSkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZf ZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg IkZsb3cgaGFzaCBmdW5jdGlvbiAlZCBpc24ndCBzdXBwb3J0ZWRcbiIsIGZ1bmMpOw0KPiA+ICsg ICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2UsICJGbG93IGhhc2gg ZnVuY3Rpb24gJWQgaXNuJ3QNCj4gc3VwcG9ydGVkXG4iLCBmdW5jKTsNCj4gPiAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiAgICAg ICAgICBpZiAoKGZ1bmMgPT0gRU5BX0FETUlOX1RPRVBMSVRaKSAmJiBrZXkpIHsNCj4gPiAgICAg ICAgICAgICAgICAgIGlmIChrZXlfbGVuICE9IHNpemVvZihoYXNoX2tleS0+a2V5KSkgew0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZpY2Us DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5IGxlbiAoJXUpIGRv ZXNuJ3QgZXF1YWwgdGhlIHN1cHBvcnRlZCBzaXplICglenUpXG4iLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga2V5X2xlbiwgc2l6ZW9mKGhhc2hfa2V5LT5rZXkpKTsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXkgbGVuICgldSkgZG9l c24ndCBlcXVhbCB0aGUgc3VwcG9ydGVkIHNpemUgKCV6dSlcbiIsDQo+IGtleV9sZW4sDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaGFzaF9rZXktPmtleSkp Ow0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAgICAg ICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgIG1lbWNweShoYXNoX2tleS0+a2V5 LCBrZXksIGtleV9sZW4pOw0KPiA+IEBAIC0yNDg3LDggKzI0MDgsNyBAQCBpbnQgZW5hX2NvbV9z ZXRfaGFzaF9jdHJsKHN0cnVjdCBlbmFfY29tX2Rldg0KPiAqZW5hX2RldikNCj4gPiAgICAgICAg ICBzdHJ1Y3QgZW5hX2FkbWluX3NldF9mZWF0X3Jlc3AgcmVzcDsNCj4gPiAgICAgICAgICBpbnQg cmV0Ow0KPiA+DQo+ID4gLSAgICAgICBpZiAoIWVuYV9jb21fY2hlY2tfc3VwcG9ydGVkX2ZlYXR1 cmVfaWQoZW5hX2RldiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFTkFfQURNSU5fUlNTX0hBU0hfSU5QVVQpKSB7DQo+ID4gKyAgICAgICBpZiAo IWVuYV9jb21fY2hlY2tfc3VwcG9ydGVkX2ZlYXR1cmVfaWQoZW5hX2RldiwNCj4gRU5BX0FETUlO X1JTU19IQVNIX0lOUFVUKSkgew0KPiA+ICAgICAgICAgICAgICAgICAgbmV0ZGV2X2RiZyhlbmFf ZGV2LT5uZXRfZGV2aWNlLCAiRmVhdHVyZSAlZCBpc24ndA0KPiBzdXBwb3J0ZWRcbiIsDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOQV9BRE1JTl9SU1NfSEFTSF9JTlBVVCk7DQo+ ID4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7DQo+ID4gQEAgLTI1MTksOCAr MjQzOSw3IEBAIGludCBlbmFfY29tX3NldF9oYXNoX2N0cmwoc3RydWN0IGVuYV9jb21fZGV2DQo+ ICplbmFfZGV2KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdHJ1Y3QgZW5hX2FkbWluX2FjcV9lbnRyeSAqKSZyZXNwLA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZXNwKSk7DQo+ID4gICAg ICAgICAgaWYgKHVubGlrZWx5KHJldCkpDQo+ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9lcnIo ZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFp bGVkIHRvIHNldCBoYXNoIGlucHV0LiBlcnJvcjogJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAg ICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIkZhaWxlZCB0byBzZXQgaGFz aCBpbnB1dC4NCj4gZXJyb3I6ICVkXG4iLCByZXQpOw0KPiA+DQo+ID4gICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiAgIH0NCj4gPiBAQCAtMjU5Nyw4ICsyNTE2LDcgQEAgaW50IGVuYV9jb21fZmls bF9oYXNoX2N0cmwoc3RydWN0IGVuYV9jb21fZGV2DQo+ICplbmFfZGV2LA0KPiA+ICAgICAgICAg IGludCByYzsNCj4gPg0KPiA+ICAgICAgICAgIGlmIChwcm90byA+PSBFTkFfQURNSU5fUlNTX1BS T1RPX05VTSkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9k ZXZpY2UsICJJbnZhbGlkIHByb3RvIG51bSAoJXUpXG4iLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgIHByb3RvKTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2 LT5uZXRfZGV2aWNlLCAiSW52YWxpZCBwcm90byBudW0gKCV1KVxuIiwNCj4gcHJvdG8pOw0KPiA+ ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ ID4gQEAgLTI2NTAsOCArMjU2OCw3IEBAIGludCBlbmFfY29tX2luZGlyZWN0X3RhYmxlX3NldChz dHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYpDQo+ID4gICAgICAgICAgc3RydWN0IGVuYV9h ZG1pbl9zZXRfZmVhdF9yZXNwIHJlc3A7DQo+ID4gICAgICAgICAgaW50IHJldDsNCj4gPg0KPiA+ IC0gICAgICAgaWYgKCFlbmFfY29tX2NoZWNrX3N1cHBvcnRlZF9mZWF0dXJlX2lkKA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgZW5hX2RldiwgRU5BX0FETUlOX1JTU19JTkRJUkVDVElPTl9UQUJM RV9DT05GSUcpKSB7DQo+ID4gKyAgICAgICBpZiAoIWVuYV9jb21fY2hlY2tfc3VwcG9ydGVkX2Zl YXR1cmVfaWQoZW5hX2RldiwNCj4gRU5BX0FETUlOX1JTU19JTkRJUkVDVElPTl9UQUJMRV9DT05G SUcpKSB7DQo+ID4gICAgICAgICAgICAgICAgICBuZXRkZXZfZGJnKGVuYV9kZXYtPm5ldF9kZXZp Y2UsICJGZWF0dXJlICVkIGlzbid0DQo+IHN1cHBvcnRlZFxuIiwNCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRU5BX0FETUlOX1JTU19JTkRJUkVDVElPTl9UQUJMRV9DT05GSUcpOw0K PiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+IEBAIC0yNjkxLDgg KzI2MDgsNyBAQCBpbnQgZW5hX2NvbV9pbmRpcmVjdF90YWJsZV9zZXQoc3RydWN0DQo+IGVuYV9j b21fZGV2ICplbmFfZGV2KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihyZXNwKSk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtlbHko cmV0KSkNCj4gPiAtICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2aWNl LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gc2V0IGluZGlyZWN0 IHRhYmxlLiBlcnJvcjogJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9l cnIoZW5hX2Rldi0+bmV0X2RldmljZSwgIkZhaWxlZCB0byBzZXQgaW5kaXJlY3QgdGFibGUuDQo+ IGVycm9yOiAlZFxuIiwgcmV0KTsNCj4gPg0KPiA+ICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4g ICB9DQo+ID4gQEAgLTI3NzEsOSArMjY4Nyw4IEBAIGludCBlbmFfY29tX2FsbG9jYXRlX2hvc3Rf aW5mbyhzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYpDQo+ID4gICB7DQo+ID4gICAgICAg ICAgc3RydWN0IGVuYV9ob3N0X2F0dHJpYnV0ZSAqaG9zdF9hdHRyID0gJmVuYV9kZXYtPmhvc3Rf YXR0cjsNCj4gPg0KPiA+IC0gICAgICAgaG9zdF9hdHRyLT5ob3N0X2luZm8gPQ0KPiA+IC0gICAg ICAgICAgICAgICBkbWFfYWxsb2NfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBTWl80SywNCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3N0X2F0dHItPmhvc3RfaW5m b19kbWFfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBob3N0X2F0dHItPmhvc3RfaW5m byA9IGRtYV9hbGxvY19jb2hlcmVudChlbmFfZGV2LT5kbWFkZXYsDQo+IFNaXzRLLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvc3RfYXR0 ci0+aG9zdF9pbmZvX2RtYV9hZGRyLA0KPiBHRlBfS0VSTkVMKTsNCj4gPiAgICAgICAgICBpZiAo dW5saWtlbHkoIWhvc3RfYXR0ci0+aG9zdF9pbmZvKSkNCj4gPiAgICAgICAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOw0KPiA+DQo+ID4gQEAgLTI4MTksOCArMjczNCw3IEBAIHZvaWQgZW5hX2Nv bV9kZWxldGVfZGVidWdfYXJlYShzdHJ1Y3QNCj4gZW5hX2NvbV9kZXYgKmVuYV9kZXYpDQo+ID4N Cj4gPiAgICAgICAgICBpZiAoaG9zdF9hdHRyLT5kZWJ1Z19hcmVhX3ZpcnRfYWRkcikgew0KPiA+ ICAgICAgICAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoZW5hX2Rldi0+ZG1hZGV2LCBob3N0 X2F0dHItDQo+ID5kZWJ1Z19hcmVhX3NpemUsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvc3RfYXR0ci0+ZGVidWdfYXJlYV92aXJ0X2FkZHIsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RfYXR0ci0+ZGVidWdfYXJlYV9kbWFfYWRkcik7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RfYXR0ci0+ZGVidWdf YXJlYV92aXJ0X2FkZHIsIGhvc3RfYXR0ci0NCj4gPmRlYnVnX2FyZWFfZG1hX2FkZHIpOw0KPiA+ ICAgICAgICAgICAgICAgICAgaG9zdF9hdHRyLT5kZWJ1Z19hcmVhX3ZpcnRfYWRkciA9IE5VTEw7 DQo+ID4gICAgICAgICAgfQ0KPiA+ICAgfQ0KPiA+IEBAIC0yODY5LDggKzI3ODMsNyBAQCBpbnQg ZW5hX2NvbV9zZXRfaG9zdF9hdHRyaWJ1dGVzKHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2Rl dikNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YocmVzcCkpOw0KPiA+DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KHJldCkpDQo+ID4gLSAg ICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHNldCBob3N0IGF0dHJpYnV0ZXM6ICVkXG4i LCByZXQpOw0KPiA+ICsgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9kZXYtPm5ldF9kZXZp Y2UsICJGYWlsZWQgdG8gc2V0IGhvc3QgYXR0cmlidXRlczoNCj4gJWRcbiIsIHJldCk7DQo+ID4N Cj4gPiAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICAgfQ0KPiA+IEBAIC0yODg4LDggKzI4MDEs NyBAQCBzdGF0aWMgaW50DQo+IGVuYV9jb21fdXBkYXRlX25vbmFkYXB0aXZlX21vZGVyYXRpb25f aW50ZXJ2YWwoc3RydWN0IGVuYV9jb21fZGV2DQo+ICplbg0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyICppbnRyX21vZGVy X2ludGVydmFsKQ0KPiA+ICAgew0KPiA+ICAgICAgICAgIGlmICghaW50cl9kZWxheV9yZXNvbHV0 aW9uKSB7DQo+ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2Rldmlj ZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBpbnRlcnJ1cHQgZGVs YXkgZ3JhbnVsYXJpdHkgdmFsdWVcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBuZXRkZXZfZXJy KGVuYV9kZXYtPm5ldF9kZXZpY2UsICJJbGxlZ2FsIGludGVycnVwdCBkZWxheQ0KPiBncmFudWxh cml0eSB2YWx1ZVxuIik7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCj4g PiAgICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMjkyNywxNCArMjgzOSwxMiBAQCBpbnQgZW5hX2Nv bV9pbml0X2ludGVycnVwdF9tb2RlcmF0aW9uKHN0cnVjdA0KPiBlbmFfY29tX2RldiAqZW5hX2Rl dikNCj4gPg0KPiA+ICAgICAgICAgIGlmIChyYykgew0KPiA+ICAgICAgICAgICAgICAgICAgaWYg KHJjID09IC1FT1BOT1RTVVBQKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2 X2RiZyhlbmFfZGV2LT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkZlYXR1cmUgJWQgaXNuJ3Qgc3VwcG9ydGVkXG4iLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIG5ldGRldl9kYmcoZW5hX2Rldi0+bmV0X2RldmljZSwgIkZlYXR1cmUgJWQg aXNuJ3QNCj4gc3VwcG9ydGVkXG4iLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVOQV9BRE1JTl9JTlRFUlJVUFRfTU9ERVJBVElPTik7DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgIHJjID0gMDsNCj4gPiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IGlu dGVycnVwdCBtb2RlcmF0aW9uIGFkbWluIGNtZC4gcmM6ICVkXG4iLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgaW50ZXJydXB0IG1vZGVyYXRpb24gYWRtaW4gY21k LiByYzoNCj4gJWRcbiIsIHJjKTsNCj4gPiAgICAgICAgICAgICAgICAgIH0NCj4gPg0KPiA+ICAg ICAgICAgICAgICAgICAgLyogbm8gbW9kZXJhdGlvbiBzdXBwb3J0ZWQsIGRpc2FibGUgYWRhcHRp dmUgc3VwcG9ydCAqLw0KPiA+IEBAIC0yOTgyLDggKzI4OTIsNyBAQCBpbnQgZW5hX2NvbV9jb25m aWdfZGV2X21vZGUoc3RydWN0DQo+IGVuYV9jb21fZGV2ICplbmFfZGV2LA0KPiA+ICAgICAgICAg ICAgICAgICAgKGxscV9pbmZvLT5kZXNjc19udW1fYmVmb3JlX2hlYWRlciAqIHNpemVvZihzdHJ1 Y3QNCj4gZW5hX2V0aF9pb190eF9kZXNjKSk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAodW5saWtl bHkoZW5hX2Rldi0+dHhfbWF4X2hlYWRlcl9zaXplID09IDApKSB7DQo+ID4gLSAgICAgICAgICAg ICAgIG5ldGRldl9lcnIoZW5hX2Rldi0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAiVGhlIHNpemUgb2YgdGhlIExMUSBlbnRyeSBpcyBzbWFsbGVyIHRoYW4gbmVl ZGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFfZGV2LT5uZXRfZGV2 aWNlLCAiVGhlIHNpemUgb2YgdGhlIExMUSBlbnRyeSBpcw0KPiBzbWFsbGVyIHRoYW4gbmVlZGVk XG4iKTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICAgICAgICAg IH0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5h L2VuYV9ldGhfY29tLmMNCj4gYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9l dGhfY29tLmMNCj4gPiBpbmRleCBmOWY4ODYyLi45MzNlNjE5IDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aF9jb20uYw0KPiA+ICsrKyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aF9jb20uYw0KPiA+IEBAIC0xOCw4 ICsxOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZW5hX2V0aF9pb19yeF9jZGVzY19iYXNlDQo+ICplbmFf Y29tX2dldF9uZXh0X3J4X2NkZXNjKA0KPiA+ICAgICAgICAgIGNkZXNjID0gKHN0cnVjdCBlbmFf ZXRoX2lvX3J4X2NkZXNjX2Jhc2UgKikoaW9fY3EtDQo+ID5jZGVzY19hZGRyLnZpcnRfYWRkcg0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICArIChoZWFkX21hc2tlZCAqIGlvX2NxLT5jZGVz Y19lbnRyeV9zaXplX2luX2J5dGVzKSk7DQo+ID4NCj4gPiAtICAgICAgIGRlc2NfcGhhc2UgPSAo UkVBRF9PTkNFKGNkZXNjLT5zdGF0dXMpICYNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgRU5B X0VUSF9JT19SWF9DREVTQ19CQVNFX1BIQVNFX01BU0spID4+DQo+ID4gKyAgICAgICBkZXNjX3Bo YXNlID0gKFJFQURfT05DRShjZGVzYy0+c3RhdHVzKSAmDQo+IEVOQV9FVEhfSU9fUlhfQ0RFU0Nf QkFTRV9QSEFTRV9NQVNLKSA+Pg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICBFTkFfRVRIX0lP X1JYX0NERVNDX0JBU0VfUEhBU0VfU0hJRlQ7DQo+ID4NCj4gPiAgICAgICAgICBpZiAoZGVzY19w aGFzZSAhPSBleHBlY3RlZF9waGFzZSkNCj4gPiBAQCAtNjUsOCArNjQsOCBAQCBzdGF0aWMgaW50 DQo+IGVuYV9jb21fd3JpdGVfYm91bmNlX2J1ZmZlcl90b19kZXYoc3RydWN0IGVuYV9jb21faW9f c3EgKmlvX3NxLA0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICBpb19zcS0+ZW50cmllc19pbl90 eF9idXJzdF9sZWZ0LS07DQo+ID4gICAgICAgICAgICAgICAgICBuZXRkZXZfZGJnKGVuYV9jb21f aW9fc3FfdG9fZW5hX2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIkRlY3JlYXNpbmcgZW50cmllc19pbl90eF9idXJzdF9sZWZ0IG9mIHF1ZXVl ICVkIHRvICVkXG4iLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGlvX3NxLT5xaWQs IGlvX3NxLT5lbnRyaWVzX2luX3R4X2J1cnN0X2xlZnQpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICJEZWNyZWFzaW5nIGVudHJpZXNfaW5fdHhfYnVyc3RfbGVmdCBvZiBxdWV1ZSAl ZCB0byAlZFxuIiwNCj4gaW9fc3EtPnFpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBpb19zcS0+ZW50cmllc19pbl90eF9idXJzdF9sZWZ0KTsNCj4gPiAgICAgICAgICB9DQo+ID4N Cj4gPiAgICAgICAgICAvKiBNYWtlIHN1cmUgZXZlcnl0aGluZyB3YXMgd3JpdHRlbiBpbnRvIHRo ZSBib3VuY2UgYnVmZmVyIGJlZm9yZQ0KPiA+IEBAIC03NSw4ICs3NCw4IEBAIHN0YXRpYyBpbnQN Cj4gZW5hX2NvbV93cml0ZV9ib3VuY2VfYnVmZmVyX3RvX2RldihzdHJ1Y3QgZW5hX2NvbV9pb19z cSAqaW9fc3EsDQo+ID4gICAgICAgICAgd21iKCk7DQo+ID4NCj4gPiAgICAgICAgICAvKiBUaGUg bGluZSBpcyBjb21wbGV0ZWQuIENvcHkgaXQgdG8gZGV2ICovDQo+ID4gLSAgICAgICBfX2lvd3Jp dGU2NF9jb3B5KGlvX3NxLT5kZXNjX2FkZHIucGJ1Zl9kZXZfYWRkciArIGRzdF9vZmZzZXQsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5jZV9idWZmZXIsIChsbHFfaW5mby0+ZGVz Y19saXN0X2VudHJ5X3NpemUpIC8gOCk7DQo+ID4gKyAgICAgICBfX2lvd3JpdGU2NF9jb3B5KGlv X3NxLT5kZXNjX2FkZHIucGJ1Zl9kZXZfYWRkciArIGRzdF9vZmZzZXQsDQo+IGJvdW5jZV9idWZm ZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIChsbHFfaW5mby0+ZGVzY19saXN0X2Vu dHJ5X3NpemUpIC8gOCk7DQo+ID4NCj4gPiAgICAgICAgICBpb19zcS0+dGFpbCsrOw0KPiA+DQo+ ID4gQEAgLTEwMiwxNiArMTAxLDE0IEBAIHN0YXRpYyBpbnQNCj4gZW5hX2NvbV93cml0ZV9oZWFk ZXJfdG9fYm91bmNlKHN0cnVjdCBlbmFfY29tX2lvX3NxICppb19zcSwNCj4gPiAgICAgICAgICBo ZWFkZXJfb2Zmc2V0ID0NCj4gPiAgICAgICAgICAgICAgICAgIGxscV9pbmZvLT5kZXNjc19udW1f YmVmb3JlX2hlYWRlciAqIGlvX3NxLT5kZXNjX2VudHJ5X3NpemU7DQo+ID4NCj4gPiAtICAgICAg IGlmICh1bmxpa2VseSgoaGVhZGVyX29mZnNldCArIGhlYWRlcl9sZW4pID4NCj4gPiAtICAgICAg ICAgICAgICAgICAgICBsbHFfaW5mby0+ZGVzY19saXN0X2VudHJ5X3NpemUpKSB7DQo+ID4gKyAg ICAgICBpZiAodW5saWtlbHkoKGhlYWRlcl9vZmZzZXQgKyBoZWFkZXJfbGVuKSA+IGxscV9pbmZv LQ0KPiA+ZGVzY19saXN0X2VudHJ5X3NpemUpKSB7DQo+ID4gICAgICAgICAgICAgICAgICBuZXRk ZXZfZXJyKGVuYV9jb21faW9fc3FfdG9fZW5hX2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcnlpbmcgdG8gd3JpdGUgaGVhZGVyIGxhcmdl ciB0aGFuIGxscSBlbnRyeSBjYW4NCj4gYWNjb21tb2RhdGVcbiIpOw0KPiA+ICAgICAgICAgICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAg aWYgKHVubGlrZWx5KCFib3VuY2VfYnVmZmVyKSkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRk ZXZfZXJyKGVuYV9jb21faW9fc3FfdG9fZW5hX2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgIkJvdW5jZSBidWZmZXIgaXMgTlVMTFxuIik7DQo+ ID4gKyAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2NvbV9pb19zcV90b19lbmFfZGV2KGlv X3NxKS0+bmV0X2RldmljZSwNCj4gIkJvdW5jZSBidWZmZXIgaXMgTlVMTFxuIik7DQo+ID4gICAg ICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBA QCAtMTI5LDggKzEyNiw3IEBAIHN0YXRpYyB2b2lkICpnZXRfc3FfZGVzY19sbHEoc3RydWN0IGVu YV9jb21faW9fc3ENCj4gKmlvX3NxKQ0KPiA+ICAgICAgICAgIGJvdW5jZV9idWZmZXIgPSBwa3Rf Y3RybC0+Y3Vycl9ib3VuY2VfYnVmOw0KPiA+DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KCFi b3VuY2VfYnVmZmVyKSkgew0KPiA+IC0gICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9jb21f aW9fc3FfdG9fZW5hX2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIkJvdW5jZSBidWZmZXIgaXMgTlVMTFxuIik7DQo+ID4gKyAgICAgICAgICAg ICAgIG5ldGRldl9lcnIoZW5hX2NvbV9pb19zcV90b19lbmFfZGV2KGlvX3NxKS0+bmV0X2Rldmlj ZSwNCj4gIkJvdW5jZSBidWZmZXIgaXMgTlVMTFxuIik7DQo+ID4gICAgICAgICAgICAgICAgICBy ZXR1cm4gTlVMTDsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMjQ3LDggKzI0Myw3IEBA IHN0YXRpYyB1MTYgZW5hX2NvbV9jZGVzY19yeF9wa3RfZ2V0KHN0cnVjdA0KPiBlbmFfY29tX2lv X2NxICppb19jcSwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgZW5hX2NvbV9jcV9pbmNfaGVh ZChpb19jcSk7DQo+ID4gICAgICAgICAgICAgICAgICBjb3VudCsrOw0KPiA+IC0gICAgICAgICAg ICAgICBsYXN0ID0gKFJFQURfT05DRShjZGVzYy0+c3RhdHVzKSAmDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgRU5BX0VUSF9JT19SWF9DREVTQ19CQVNFX0xBU1RfTUFTSykgPj4NCj4gPiAr ICAgICAgICAgICAgICAgbGFzdCA9IChSRUFEX09OQ0UoY2Rlc2MtPnN0YXR1cykgJg0KPiBFTkFf RVRIX0lPX1JYX0NERVNDX0JBU0VfTEFTVF9NQVNLKSA+Pg0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIEVOQV9FVEhfSU9fUlhfQ0RFU0NfQkFTRV9MQVNUX1NISUZUOw0KPiA+ICAgICAgICAg IH0gd2hpbGUgKCFsYXN0KTsNCj4gPg0KPiA+IEBAIC0zNjksOSArMzY0LDggQEAgc3RhdGljIHZv aWQgZW5hX2NvbV9yeF9zZXRfZmxhZ3Moc3RydWN0DQo+IGVuYV9jb21faW9fY3EgKmlvX2NxLA0K PiA+DQo+ID4gICAgICAgICAgbmV0ZGV2X2RiZyhlbmFfY29tX2lvX2NxX3RvX2VuYV9kZXYoaW9f Y3EpLT5uZXRfZGV2aWNlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgImwzX3Byb3RvICVkIGw0 X3Byb3RvICVkIGwzX2NzdW1fZXJyICVkIGw0X2NzdW1fZXJyICVkIGhhc2gNCj4gJWQgZnJhZyAl ZCBjZGVzY19zdGF0dXMgJXhcbiIsDQo+ID4gLSAgICAgICAgICAgICAgICAgIGVuYV9yeF9jdHgt PmwzX3Byb3RvLCBlbmFfcnhfY3R4LT5sNF9wcm90bywNCj4gPiAtICAgICAgICAgICAgICAgICAg ZW5hX3J4X2N0eC0+bDNfY3N1bV9lcnIsIGVuYV9yeF9jdHgtPmw0X2NzdW1fZXJyLA0KPiA+IC0g ICAgICAgICAgICAgICAgICBlbmFfcnhfY3R4LT5oYXNoLCBlbmFfcnhfY3R4LT5mcmFnLCBjZGVz Yy0+c3RhdHVzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgZW5hX3J4X2N0eC0+bDNfcHJvdG8s IGVuYV9yeF9jdHgtPmw0X3Byb3RvLCBlbmFfcnhfY3R4LQ0KPiA+bDNfY3N1bV9lcnIsDQo+ID4g KyAgICAgICAgICAgICAgICAgIGVuYV9yeF9jdHgtPmw0X2NzdW1fZXJyLCBlbmFfcnhfY3R4LT5o YXNoLCBlbmFfcnhfY3R4LT5mcmFnLA0KPiBjZGVzYy0+c3RhdHVzKTsNCj4gPiAgIH0NCj4gPg0K PiA+DQo+IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKiovDQo+ID4gQEAgLTQwMywxMyArMzk3LDEy IEBAIGludCBlbmFfY29tX3ByZXBhcmVfdHgoc3RydWN0IGVuYV9jb21faW9fc3ENCj4gKmlvX3Nx LA0KPiA+DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KGhlYWRlcl9sZW4gPiBpb19zcS0+dHhf bWF4X2hlYWRlcl9zaXplKSkgew0KPiA+ICAgICAgICAgICAgICAgICAgbmV0ZGV2X2VycihlbmFf Y29tX2lvX3NxX3RvX2VuYV9kZXYoaW9fc3EpLT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICJIZWFkZXIgc2l6ZSBpcyB0b28gbGFyZ2UgJWQgbWF4IGhlYWRlcjog JWRcbiIsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2xlbiwgaW9fc3Et PnR4X21heF9oZWFkZXJfc2l6ZSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkhl YWRlciBzaXplIGlzIHRvbyBsYXJnZSAlZCBtYXggaGVhZGVyOiAlZFxuIiwgaGVhZGVyX2xlbiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBpb19zcS0+dHhfbWF4X2hlYWRlcl9zaXpl KTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICAgICAgICAgIH0N Cj4gPg0KPiA+IC0gICAgICAgaWYgKHVubGlrZWx5KGlvX3NxLT5tZW1fcXVldWVfdHlwZSA9PQ0K PiBFTkFfQURNSU5fUExBQ0VNRU5UX1BPTElDWV9ERVYgJiYNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAhYnVmZmVyX3RvX3B1c2gpKSB7DQo+ID4gKyAgICAgICBpZiAodW5saWtlbHkoaW9fc3Et Pm1lbV9xdWV1ZV90eXBlID09DQo+IEVOQV9BRE1JTl9QTEFDRU1FTlRfUE9MSUNZX0RFViAmJiAh YnVmZmVyX3RvX3B1c2gpKSB7DQo+ID4gICAgICAgICAgICAgICAgICBuZXRkZXZfZXJyKGVuYV9j b21faW9fc3FfdG9fZW5hX2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJQdXNoIGhlYWRlciB3YXNuJ3QgcHJvdmlkZWQgaW4gTExRIG1vZGVc biIpOw0KPiA+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gQEAgLTU1Niwx MyArNTQ5LDExIEBAIGludCBlbmFfY29tX3J4X3BrdChzdHJ1Y3QgZW5hX2NvbV9pb19jcQ0KPiAq aW9fY3EsDQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAgbmV0ZGV2X2RiZyhlbmFf Y29tX2lvX2NxX3RvX2VuYV9kZXYoaW9fY3EpLT5uZXRfZGV2aWNlLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAiRmV0Y2ggcnggcGFja2V0OiBxdWV1ZSAlZCBjb21wbGV0ZWQgZGVzYzogJWRcbiIs IGlvX2NxLT5xaWQsDQo+ID4gLSAgICAgICAgICAgICAgICAgIG5iX2h3X2Rlc2MpOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAiRmV0Y2ggcnggcGFja2V0OiBxdWV1ZSAlZCBjb21wbGV0ZWQgZGVz YzogJWRcbiIsIGlvX2NxLT5xaWQsDQo+IG5iX2h3X2Rlc2MpOw0KPiA+DQo+ID4gICAgICAgICAg aWYgKHVubGlrZWx5KG5iX2h3X2Rlc2MgPiBlbmFfcnhfY3R4LT5tYXhfYnVmcykpIHsNCj4gPiAg ICAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2NvbV9pb19jcV90b19lbmFfZGV2KGlvX2Nx KS0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkg UlggY2Rlc2NzICglZCkgPiBNQVgoJWQpXG4iLCBuYl9od19kZXNjLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgIGVuYV9yeF9jdHgtPm1heF9idWZzKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAiVG9vIG1hbnkgUlggY2Rlc2NzICglZCkgPiBNQVgoJWQpXG4iLCBuYl9o d19kZXNjLA0KPiBlbmFfcnhfY3R4LT5tYXhfYnVmcyk7DQo+ID4gICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVOT1NQQzsNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiBAQCAtNTg2LDggKzU3Nyw4 IEBAIGludCBlbmFfY29tX3J4X3BrdChzdHJ1Y3QgZW5hX2NvbV9pb19jcSAqaW9fY3EsDQo+ID4g ICAgICAgICAgaW9fc3EtPm5leHRfdG9fY29tcCArPSBuYl9od19kZXNjOw0KPiA+DQo+ID4gICAg ICAgICAgbmV0ZGV2X2RiZyhlbmFfY29tX2lvX2NxX3RvX2VuYV9kZXYoaW9fY3EpLT5uZXRfZGV2 aWNlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAiWyVzXVtRSUQjJWRdIFVwZGF0aW5nIFNRIGhl YWQgdG86ICVkXG4iLCBfX2Z1bmNfXywNCj4gPiAtICAgICAgICAgICAgICAgICAgaW9fc3EtPnFp ZCwgaW9fc3EtPm5leHRfdG9fY29tcCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICJbJXNdW1FJ RCMlZF0gVXBkYXRpbmcgU1EgaGVhZCB0bzogJWRcbiIsIF9fZnVuY19fLCBpb19zcS0NCj4gPnFp ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgaW9fc3EtPm5leHRfdG9fY29tcCk7DQo+ID4NCj4g PiAgICAgICAgICAvKiBHZXQgcnggZmxhZ3MgZnJvbSB0aGUgbGFzdCBwa3QgKi8NCj4gPiAgICAg ICAgICBlbmFfY29tX3J4X3NldF9mbGFncyhpb19jcSwgZW5hX3J4X2N0eCwgY2Rlc2MpOw0KPiA+ IEBAIC02MjQsOCArNjE1LDggQEAgaW50IGVuYV9jb21fYWRkX3NpbmdsZV9yeF9kZXNjKHN0cnVj dA0KPiBlbmFfY29tX2lvX3NxICppb19zcSwNCj4gPiAgICAgICAgICBkZXNjLT5yZXFfaWQgPSBy ZXFfaWQ7DQo+ID4NCj4gPiAgICAgICAgICBuZXRkZXZfZGJnKGVuYV9jb21faW9fc3FfdG9fZW5h X2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICJbJXNdIEFk ZGluZyBzaW5nbGUgUlggZGVzYywgUXVldWU6ICV1LCByZXFfaWQ6ICV1XG4iLA0KPiA+IC0gICAg ICAgICAgICAgICAgICBfX2Z1bmNfXywgaW9fc3EtPnFpZCwgcmVxX2lkKTsNCj4gPiArICAgICAg ICAgICAgICAgICAgIlslc10gQWRkaW5nIHNpbmdsZSBSWCBkZXNjLCBRdWV1ZTogJXUsIHJlcV9p ZDogJXVcbiIsDQo+IF9fZnVuY19fLCBpb19zcS0+cWlkLA0KPiA+ICsgICAgICAgICAgICAgICAg ICByZXFfaWQpOw0KPiA+DQo+ID4gICAgICAgICAgZGVzYy0+YnVmZl9hZGRyX2xvID0gKHUzMill bmFfYnVmLT5wYWRkcjsNCj4gPiAgICAgICAgICBkZXNjLT5idWZmX2FkZHJfaGkgPQ0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9ldGhfY29tLmgN Cj4gYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9ldGhfY29tLmgNCj4gPiBp bmRleCA0ZDY1ZDgyLi43MmIwMTk3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2FtYXpvbi9lbmEvZW5hX2V0aF9jb20uaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2FtYXpvbi9lbmEvZW5hX2V0aF9jb20uaA0KPiA+IEBAIC0xNDMsOCArMTQzLDggQEAgc3Rh dGljIGlubGluZSBib29sDQo+IGVuYV9jb21faXNfZG9vcmJlbGxfbmVlZGVkKHN0cnVjdCBlbmFf Y29tX2lvX3NxICppb19zcSwNCj4gPiAgICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgICBuZXRk ZXZfZGJnKGVuYV9jb21faW9fc3FfdG9fZW5hX2Rldihpb19zcSktPm5ldF9kZXZpY2UsDQo+ID4g LSAgICAgICAgICAgICAgICAgICJRdWV1ZTogJWQgbnVtX2Rlc2NzOiAlZCBudW1fZW50cmllc19u ZWVkZWQ6ICVkXG4iLA0KPiA+IC0gICAgICAgICAgICAgICAgICBpb19zcS0+cWlkLCBudW1fZGVz Y3MsIG51bV9lbnRyaWVzX25lZWRlZCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICJRdWV1ZTog JWQgbnVtX2Rlc2NzOiAlZCBudW1fZW50cmllc19uZWVkZWQ6ICVkXG4iLA0KPiBpb19zcS0+cWlk LCBudW1fZGVzY3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgIG51bV9lbnRyaWVzX25lZWRlZCk7 DQo+ID4NCj4gPiAgICAgICAgICByZXR1cm4gbnVtX2VudHJpZXNfbmVlZGVkID4gaW9fc3EtPmVu dHJpZXNfaW5fdHhfYnVyc3RfbGVmdDsNCj4gPiAgIH0NCj4gPiBAQCAtMTU1LDE1ICsxNTUsMTQg QEAgc3RhdGljIGlubGluZSBpbnQNCj4gZW5hX2NvbV93cml0ZV9zcV9kb29yYmVsbChzdHJ1Y3Qg ZW5hX2NvbV9pb19zcSAqaW9fc3EpDQo+ID4gICAgICAgICAgdTE2IHRhaWwgPSBpb19zcS0+dGFp bDsNCj4gPg0KPiA+ICAgICAgICAgIG5ldGRldl9kYmcoZW5hX2NvbV9pb19zcV90b19lbmFfZGV2 KGlvX3NxKS0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgIldyaXRlIHN1Ym1p c3Npb24gcXVldWUgZG9vcmJlbGwgZm9yIHF1ZXVlOiAlZCB0YWlsOiAlZFxuIiwNCj4gPiAtICAg ICAgICAgICAgICAgICAgaW9fc3EtPnFpZCwgdGFpbCk7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICJXcml0ZSBzdWJtaXNzaW9uIHF1ZXVlIGRvb3JiZWxsIGZvciBxdWV1ZTogJWQgdGFpbDogJWRc biIsDQo+IGlvX3NxLT5xaWQsIHRhaWwpOw0KPiA+DQo+ID4gICAgICAgICAgd3JpdGVsKHRhaWws IGlvX3NxLT5kYl9hZGRyKTsNCj4gPg0KPiA+ICAgICAgICAgIGlmIChpc19sbHFfbWF4X3R4X2J1 cnN0X2V4aXN0cyhpb19zcSkpIHsNCj4gPiAgICAgICAgICAgICAgICAgIG5ldGRldl9kYmcoZW5h X2NvbV9pb19zcV90b19lbmFfZGV2KGlvX3NxKS0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAiUmVzZXQgYXZhaWxhYmxlIGVudHJpZXMgaW4gdHggYnVyc3QgZm9y IHF1ZXVlICVkIHRvICVkXG4iLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGlvX3Nx LT5xaWQsIG1heF9lbnRyaWVzX2luX3R4X2J1cnN0KTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAiUmVzZXQgYXZhaWxhYmxlIGVudHJpZXMgaW4gdHggYnVyc3QgZm9yIHF1ZXVlICVk IHRvICVkXG4iLA0KPiBpb19zcS0+cWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IG1heF9lbnRyaWVzX2luX3R4X2J1cnN0KTsNCj4gPiAgICAgICAgICAgICAgICAgIGlvX3NxLT5l bnRyaWVzX2luX3R4X2J1cnN0X2xlZnQgPSBtYXhfZW50cmllc19pbl90eF9idXJzdDsNCj4gPiAg ICAgICAgICB9DQo+ID4NCj4gPiBAQCAtMjI0LDggKzIyMyw4IEBAIHN0YXRpYyBpbmxpbmUgaW50 DQo+IGVuYV9jb21fdHhfY29tcF9yZXFfaWRfZ2V0KHN0cnVjdCBlbmFfY29tX2lvX2NxICppb19j cSwNCj4gPg0KPiA+ICAgICAgICAgICpyZXFfaWQgPSBSRUFEX09OQ0UoY2Rlc2MtPnJlcV9pZCk7 DQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KCpyZXFfaWQgPj0gaW9fY3EtPnFfZGVwdGgpKSB7 DQo+ID4gLSAgICAgICAgICAgICAgIG5ldGRldl9lcnIoZW5hX2NvbV9pb19jcV90b19lbmFfZGV2 KGlvX2NxKS0+bmV0X2RldmljZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52 YWxpZCByZXEgaWQgJWRcbiIsIGNkZXNjLT5yZXFfaWQpOw0KPiA+ICsgICAgICAgICAgICAgICBu ZXRkZXZfZXJyKGVuYV9jb21faW9fY3FfdG9fZW5hX2Rldihpb19jcSktPm5ldF9kZXZpY2UsDQo+ ICJJbnZhbGlkIHJlcSBpZCAlZFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBj ZGVzYy0+cmVxX2lkKTsNCj4gPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ ICAgICAgICAgIH0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9h bWF6b24vZW5hL2VuYV9uZXRkZXYuYw0KPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9l bmEvZW5hX25ldGRldi5jDQo+ID4gaW5kZXggY2E1NmRmZi4uNTI2YWIzZSAxMDA2NDQNCj4gPiAt LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYw0KPiA+ICsr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jDQo+ID4gQEAg LTE0MSwxMSArMTQxLDkgQEAgaW50IGVuYV94bWl0X2NvbW1vbihzdHJ1Y3QgZW5hX2FkYXB0ZXIN Cj4gKmFkYXB0ZXIsDQo+ID4gICAgICAgICAgaWYgKHVubGlrZWx5KHJjKSkgew0KPiA+ICAgICAg ICAgICAgICAgICAgbmV0aWZfZXJyKGFkYXB0ZXIsIHR4X3F1ZXVlZCwgYWRhcHRlci0+bmV0ZGV2 LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcHJlcGFyZSB0eCBi dWZzXG4iKTsNCj4gPiAtICAgICAgICAgICAgICAgZW5hX2luY3JlYXNlX3N0YXQoJnJpbmctPnR4 X3N0YXRzLnByZXBhcmVfY3R4X2VyciwgMSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnJpbmctPnN5bmNwKTsNCj4gPiArICAgICAgICAgICAgICAgZW5hX2luY3JlYXNl X3N0YXQoJnJpbmctPnR4X3N0YXRzLnByZXBhcmVfY3R4X2VyciwgMSwgJnJpbmctDQo+ID5zeW5j cCk7DQo+ID4gICAgICAgICAgICAgICAgICBpZiAocmMgIT0gLUVOT01FTSkNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICBlbmFfcmVzZXRfZGV2aWNlKGFkYXB0ZXIsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTkFfUkVHU19SRVNFVF9EUklWRVJfSU5W QUxJRF9TVEFURSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZW5hX3Jlc2V0X2Rldmlj ZShhZGFwdGVyLA0KPiBFTkFfUkVHU19SRVNFVF9EUklWRVJfSU5WQUxJRF9TVEFURSk7DQo+ID4g ICAgICAgICAgICAgICAgICByZXR1cm4gcmM7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4gQEAg LTUxMCw4ICs1MDgsNyBAQCBzdGF0aWMgc3RydWN0IHBhZ2UgKmVuYV9hbGxvY19tYXBfcGFnZShz dHJ1Y3QNCj4gZW5hX3JpbmcgKnJ4X3JpbmcsDQo+ID4gICAgICAgICAgICovDQo+ID4gICAgICAg ICAgcGFnZSA9IGRldl9hbGxvY19wYWdlKCk7DQo+ID4gICAgICAgICAgaWYgKCFwYWdlKSB7DQo+ ID4gLSAgICAgICAgICAgICAgIGVuYV9pbmNyZWFzZV9zdGF0KCZyeF9yaW5nLT5yeF9zdGF0cy5w YWdlX2FsbG9jX2ZhaWwsIDEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZyeF9yaW5nLT5zeW5jcCk7DQo+ID4gKyAgICAgICAgICAgICAgIGVuYV9pbmNyZWFzZV9zdGF0 KCZyeF9yaW5nLT5yeF9zdGF0cy5wYWdlX2FsbG9jX2ZhaWwsIDEsDQo+ICZyeF9yaW5nLT5zeW5j cCk7DQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PU1BDKTsNCj4gPiAg ICAgICAgICB9DQo+ID4NCj4gPiBAQCAtNTcwLDggKzU2Nyw4IEBAIHN0YXRpYyB2b2lkIGVuYV91 bm1hcF9yeF9idWZmX2F0dHJzKHN0cnVjdA0KPiBlbmFfcmluZyAqcnhfcmluZywNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGVuYV9yeF9idWZmZXIgKnJ4 X2luZm8sDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYXR0cnMpDQo+ID4gICB7DQo+ID4gLSAgICAgICBkbWFfdW5tYXBfcGFnZV9hdHRycyhy eF9yaW5nLT5kZXYsIHJ4X2luZm8tPmRtYV9hZGRyLA0KPiBFTkFfUEFHRV9TSVpFLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BX0JJRElSRUNUSU9OQUwsIGF0dHJzKTsNCj4g PiArICAgICAgIGRtYV91bm1hcF9wYWdlX2F0dHJzKHJ4X3JpbmctPmRldiwgcnhfaW5mby0+ZG1h X2FkZHIsDQo+IEVOQV9QQUdFX1NJWkUsIERNQV9CSURJUkVDVElPTkFMLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXR0cnMpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBzdGF0aWMg dm9pZCBlbmFfZnJlZV9yeF9wYWdlKHN0cnVjdCBlbmFfcmluZyAqcnhfcmluZywNCj4gPiBAQCAt ODQ0LDggKzg0MSw3IEBAIHN0YXRpYyBpbnQgZW5hX2NsZWFuX3R4X2lycShzdHJ1Y3QgZW5hX3Jp bmcgKnR4X3JpbmcsDQo+IHUzMiBidWRnZXQpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZyZXFfaWQpOw0KPiA+ICAgICAgICAgICAgICAgICAg aWYgKHJjKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShyYyA9 PSAtRUlOVkFMKSkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9p bnZhbGlkX3JlcV9pZCh0eF9yaW5nLCByZXFfaWQsIE5VTEwsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2ludmFsaWRfcmVxX2lkKHR4X3Jpbmcs IHJlcV9pZCwgTlVMTCwgZmFsc2UpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4gPiAgICAgICAgICAgICAgICAgIH0NCj4gPg0KPiA+IEBAIC0xMDcwLDggKzEwNjYsNyBA QCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVuYV9yeF9za2Ioc3RydWN0IGVuYV9yaW5nDQo+ICpy eF9yaW5nLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1B X0ZST01fREVWSUNFKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgaWYgKCFyZXVzZV9yeF9i dWZfcGFnZSkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBlbmFfdW5tYXBfcnhfYnVmZl9h dHRycyhyeF9yaW5nLCByeF9pbmZvLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERNQV9BVFRSX1NLSVBfQ1BVX1NZTkMpOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGVuYV91bm1hcF9yeF9idWZmX2F0dHJzKHJ4X3JpbmcsIHJ4X2luZm8s DQo+IERNQV9BVFRSX1NLSVBfQ1BVX1NZTkMpOw0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICBz a2JfYWRkX3J4X2ZyYWcoc2tiLCBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzLCByeF9pbmZvLT5w YWdlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2Vfb2Zmc2V0ICsg YnVmX29mZnNldCwgbGVuLCBidWZfbGVuKTsNCj4gPiBAQCAtMTM0Miw4ICsxMzM3LDcgQEAgZXJy b3I6DQo+ID4gICAgICAgICAgYWRhcHRlciA9IG5ldGRldl9wcml2KHJ4X3JpbmctPm5ldGRldik7 DQo+ID4NCj4gPiAgICAgICAgICBpZiAocmMgPT0gLUVOT1NQQykgew0KPiA+IC0gICAgICAgICAg ICAgICBlbmFfaW5jcmVhc2Vfc3RhdCgmcnhfcmluZy0+cnhfc3RhdHMuYmFkX2Rlc2NfbnVtLCAx LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnhfcmluZy0+c3luY3Ap Ow0KPiA+ICsgICAgICAgICAgICAgICBlbmFfaW5jcmVhc2Vfc3RhdCgmcnhfcmluZy0+cnhfc3Rh dHMuYmFkX2Rlc2NfbnVtLCAxLA0KPiAmcnhfcmluZy0+c3luY3ApOw0KPiA+ICAgICAgICAgICAg ICAgICAgZW5hX3Jlc2V0X2RldmljZShhZGFwdGVyLA0KPiBFTkFfUkVHU19SRVNFVF9UT09fTUFO WV9SWF9ERVNDUyk7DQo+ID4gICAgICAgICAgfSBlbHNlIHsNCj4gPiAgICAgICAgICAgICAgICAg IGVuYV9pbmNyZWFzZV9zdGF0KCZyeF9yaW5nLT5yeF9zdGF0cy5iYWRfcmVxX2lkLCAxLA0KPiA+ IEBAIC0xODMzLDggKzE4MjcsNyBAQCBzdGF0aWMgaW50IGVuYV9yc3NfY29uZmlndXJlKHN0cnVj dCBlbmFfYWRhcHRlcg0KPiAqYWRhcHRlcikNCj4gPiAgICAgICAgICBpZiAoIWVuYV9kZXYtPnJz cy50YmxfbG9nX3NpemUpIHsNCj4gPiAgICAgICAgICAgICAgICAgIHJjID0gZW5hX3Jzc19pbml0 X2RlZmF1bHQoYWRhcHRlcik7DQo+ID4gICAgICAgICAgICAgICAgICBpZiAocmMgJiYgKHJjICE9 IC1FT1BOT1RTVVBQKSkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG5ldGlmX2Vycihh ZGFwdGVyLCBpZnVwLCBhZGFwdGVyLT5uZXRkZXYsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJGYWlsZWQgdG8gaW5pdCBSU1MgcmM6ICVkXG4iLCByYyk7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgbmV0aWZfZXJyKGFkYXB0ZXIsIGlmdXAsIGFkYXB0ZXItPm5l dGRldiwgIkZhaWxlZCB0byBpbml0IFJTUyByYzoNCj4gJWRcbiIsIHJjKTsNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOw0KPiA+ICAgICAgICAgICAgICAgICAgfQ0KPiA+ ICAgICAgICAgIH0NCj4gPiBAQCAtMjc5MCw4ICsyNzgzLDcgQEAgc3RhdGljIHZvaWQgZW5hX2Nv bmZpZ19kZWJ1Z19hcmVhKHN0cnVjdA0KPiBlbmFfYWRhcHRlciAqYWRhcHRlcikNCj4gPiAgICAg ICAgICByYyA9IGVuYV9jb21fc2V0X2hvc3RfYXR0cmlidXRlcyhhZGFwdGVyLT5lbmFfZGV2KTsN Cj4gPiAgICAgICAgICBpZiAocmMpIHsNCj4gPiAgICAgICAgICAgICAgICAgIGlmIChyYyA9PSAt RU9QTk9UU1VQUCkNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBuZXRpZl93YXJuKGFkYXB0 ZXIsIGRydiwgYWRhcHRlci0+bmV0ZGV2LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkNhbm5vdCBzZXQgaG9zdCBhdHRyaWJ1dGVzXG4iKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBuZXRpZl93YXJuKGFkYXB0ZXIsIGRydiwgYWRhcHRlci0+bmV0ZGV2LCAi Q2Fubm90IHNldCBob3N0DQo+IGF0dHJpYnV0ZXNcbiIpOw0KPiA+ICAgICAgICAgICAgICAgICAg ZWxzZQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRpZl9lcnIoYWRhcHRlciwgZHJ2 LCBhZGFwdGVyLT5uZXRkZXYsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ2Fubm90IHNldCBob3N0IGF0dHJpYnV0ZXNcbiIpOw0KPiA+IEBAIC0zODMxLDggKzM4MjMs OCBAQCBzdGF0aWMgaW50IGVuYV9yc3NfaW5pdF9kZWZhdWx0KHN0cnVjdCBlbmFfYWRhcHRlcg0K PiAqYWRhcHRlcikNCj4gPiAgICAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICB9DQo+ID4N Cj4gPiAtICAgICAgIHJjID0gZW5hX2NvbV9maWxsX2hhc2hfZnVuY3Rpb24oZW5hX2RldiwgRU5B X0FETUlOX1RPRVBMSVRaLA0KPiBOVUxMLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFTkFfSEFTSF9LRVlfU0laRSwgMHhGRkZGRkZGRik7DQo+ID4gKyAgICAg ICByYyA9IGVuYV9jb21fZmlsbF9oYXNoX2Z1bmN0aW9uKGVuYV9kZXYsIEVOQV9BRE1JTl9UT0VQ TElUWiwNCj4gTlVMTCwgRU5BX0hBU0hfS0VZX1NJWkUsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYpOw0KPiA+ICAgICAgICAgIGlmICh1bmxp a2VseShyYyAmJiAocmMgIT0gLUVPUE5PVFNVUFApKSkgew0KPiA+ICAgICAgICAgICAgICAgICAg ZGV2X2VycihkZXYsICJDYW5ub3QgZmlsbCBoYXNoIGZ1bmN0aW9uXG4iKTsNCj4gPiAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyX2ZpbGxfaW5kaXI7DQo+ID4gLS0NCj4gPiAyLjQwLjENCj4gPg0K PiA+DQo=