From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Y.b. Lu" Subject: [PATCH net-next v2, 1/4] enetc: add hardware timestamping support Date: Thu, 23 May 2019 02:33:29 +0000 Message-ID: <20190523023451.2933-2-yangbo.lu@nxp.com> References: <20190523023451.2933-1-yangbo.lu@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190523023451.2933-1-yangbo.lu@nxp.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org To: "netdev@vger.kernel.org" , Richard Cochran , David Miller , Claudiu Manoil , Shawn Guo , Rob Herring , Alexandru Marginean Cc: "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Y.b. Lu" List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBpcyB0byBhZGQgaGFyZHdhcmUgdGltZXN0YW1waW5nIHN1cHBvcnQNCmZvciBF TkVUQy4gT24gUngsIHRpbWVzdGFtcGluZyBpcyBlbmFibGVkIGZvciBhbGwNCmZyYW1lcy4gT24g VHgsIHdlIG9ubHkgaW5zdHJ1Y3QgdGhlIGhhcmR3YXJlIHRvDQp0aW1lc3RhbXAgdGhlIGZyYW1l cyBtYXJrZWQgYWNjb3JkaW5nbHkgYnkgdGhlIHN0YWNrLg0KDQpCZWNhdXNlIHRoZSBSWCBCRCBy aW5nIGR5bmFtaWMgYWxsb2NhdGlvbiBoYXMgbm90IGJlZW4NCnN1cHBvcnRlZCBhbmQgaXQgaXMg dG9vIGV4cGVuc2l2ZSB0byB1c2UgZXh0ZW5kZWQgUlggQkRzDQppZiB0aW1lc3RhbXBpbmcgaXMg bm90IHVzZWQsIGEgS2NvbmZpZyBvcHRpb24gaXMgdXNlZCB0bw0KZW5hYmxlIGV4dGVuZGVkIFJY IEJEcyBpbiBvcmRlciB0byBzdXBwb3J0IGhhcmR3YXJlDQp0aW1lc3RhbXBpbmcuIFRoaXMgb3B0 aW9uIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIFJYIEJEDQpyaW5nIGR5bmFtaWMgYWxsb2NhdGlvbiBp cyBpbXBsZW1lbnRlZC4NCg0KU2lnbmVkLW9mZi1ieTogWWFuZ2JvIEx1IDx5YW5nYm8ubHVAbnhw LmNvbT4NClNpZ25lZC1vZmYtYnk6IENsYXVkaXUgTWFub2lsIDxjbGF1ZGl1Lm1hbm9pbEBueHAu Y29tPg0KLS0tDQpDaGFuZ2VzIGZvciB2MjoNCgktIFJlcGhyYXNlZCBLY29uZmlnIGhlbHAgbWVz c2FnZS4NCgktIFJldmVyc2UgQ2hyaXN0bWFzIHRyZWUgb3JkZXIgZm9yIHZhcmlhYmxlIGRlZmlu aXRpb25zLg0KCS0gRHJvcHBlZCBnb3RvIGluIGVuZXRjX2NsZWFuX3R4X3JpbmcoKS4NCgktIFVz ZWQgbmFtZSBlbmV0Y19hY3RpdmVfb2ZmbG9hZHMgaW5zdGVhZCBvZiBlbmV0Y19od19mZWF0dXJl cy4NCgktIEZpeGVkIHVwIHJ4IHRzdGFtcCBpbXBsZW1lbnRhdGlvbi4NCgktIFJlcGhyYXNlZCBj b21taXQgbWVzc2FnZSBhbmQgYWRkZWQgQ2xhdWRpdS4NCi0tLQ0KIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnICB8ICAxMCArKw0KIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jICB8IDE1OCArKysrKysrKysrKysrKysrKy0NCiBk cml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCAgfCAgMTIgKy0NCiAu Li4vbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oICAgfCAgMTMgKysNCiAu Li4vbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jICAgfCAgIDEgKw0KIC4u Li9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMgICB8ICAgMSArDQogNiBm aWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCg0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWcNCmluZGV4IDg0MjlmNWMx ZDgxMC4uZWQwZDAxMGM3Y2YyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl ZXNjYWxlL2VuZXRjL0tjb25maWcNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2Fs ZS9lbmV0Yy9LY29uZmlnDQpAQCAtMjksMyArMjksMTMgQEAgY29uZmlnIEZTTF9FTkVUQ19QVFBf Q0xPQ0sNCiAJICBwYWNrZXRzIHVzaW5nIHRoZSBTT19USU1FU1RBTVBJTkcgQVBJLg0KIA0KIAkg IElmIGNvbXBpbGVkIGFzIG1vZHVsZSAoTSksIHRoZSBtb2R1bGUgbmFtZSBpcyBmc2wtZW5ldGMt cHRwLg0KKw0KK2NvbmZpZyBGU0xfRU5FVENfSFdfVElNRVNUQU1QSU5HDQorCWJvb2wgIkVORVRD IGhhcmR3YXJlIHRpbWVzdGFtcGluZyBzdXBwb3J0Ig0KKwlkZXBlbmRzIG9uIEZTTF9FTkVUQyB8 fCBGU0xfRU5FVENfVkYNCisJaGVscA0KKwkgIEVuYWJsZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcg c3VwcG9ydCBvbiB0aGUgRXRoZXJuZXQgcGFja2V0cw0KKwkgIHVzaW5nIHRoZSBTT19USU1FU1RB TVBJTkcgQVBJLiBCZWNhdXNlIHRoZSBSWCBCRCByaW5nIGR5bmFtaWMNCisJICBhbGxvY2F0aW9u IGhhcyBub3QgYmVlbiBzdXBwb3J0ZWQgYW5kIGl0IGlzIHRvbyBleHBlbnNpdmUgdG8gdXNlDQor CSAgZXh0ZW5kZWQgUlggQkRzIGlmIHRpbWVzdGFtcGluZyBpcyBub3QgdXNlZCwgdGhpcyBvcHRp b24gZW5hYmxlcw0KKwkgIGV4dGVuZGVkIFJYIEJEcyBpbiBvcmRlciB0byBzdXBwb3J0IGhhcmR3 YXJlIHRpbWVzdGFtcGluZy4NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVl c2NhbGUvZW5ldGMvZW5ldGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0 Yy9lbmV0Yy5jDQppbmRleCA0OTE0NzVkODc3MzYuLmQyYWNlMjk5YmVkMCAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jDQorKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYw0KQEAgLTEzLDcgKzEzLDgg QEANCiAjZGVmaW5lIEVORVRDX01BWF9TS0JfRlJBR1MJMTMNCiAjZGVmaW5lIEVORVRDX1RYQkRT X01BWF9ORUVERUQJRU5FVENfVFhCRFNfTkVFREVEKEVORVRDX01BWF9TS0JfRlJBR1MgKyAxKQ0K IA0KLXN0YXRpYyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZzKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3Jp bmcsIHN0cnVjdCBza19idWZmICpza2IpOw0KK3N0YXRpYyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZz KHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsDQorCQkJICAg ICAgaW50IGFjdGl2ZV9vZmZsb2Fkcyk7DQogDQogbmV0ZGV2X3R4X3QgZW5ldGNfeG1pdChzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikNCiB7DQpAQCAtMzMsNyAr MzQsNyBAQCBuZXRkZXZfdHhfdCBlbmV0Y194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2KQ0KIAkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOw0KIAl9DQogDQot CWNvdW50ID0gZW5ldGNfbWFwX3R4X2J1ZmZzKHR4X3JpbmcsIHNrYik7DQorCWNvdW50ID0gZW5l dGNfbWFwX3R4X2J1ZmZzKHR4X3JpbmcsIHNrYiwgcHJpdi0+YWN0aXZlX29mZmxvYWRzKTsNCiAJ aWYgKHVubGlrZWx5KCFjb3VudCkpDQogCQlnb3RvIGRyb3BfcGFja2V0X2VycjsNCiANCkBAIC0x MDUsNyArMTA2LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfZnJlZV90eF9za2Ioc3RydWN0IGVuZXRj X2JkciAqdHhfcmluZywNCiAJfQ0KIH0NCiANCi1zdGF0aWMgaW50IGVuZXRjX21hcF90eF9idWZm cyhzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KK3N0YXRp YyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZzKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIHN0cnVj dCBza19idWZmICpza2IsDQorCQkJICAgICAgaW50IGFjdGl2ZV9vZmZsb2FkcykNCiB7DQogCXN0 cnVjdCBlbmV0Y190eF9zd2JkICp0eF9zd2JkOw0KIAlzdHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0ICpm cmFnOw0KQEAgLTEzNyw3ICsxMzksMTAgQEAgc3RhdGljIGludCBlbmV0Y19tYXBfdHhfYnVmZnMo c3RydWN0IGVuZXRjX2JkciAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiAJY291bnQr KzsNCiANCiAJZG9fdmxhbiA9IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYik7DQotCWRvX3RzdGFt cCA9IHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9IV19UU1RBTVA7DQorCWRvX3Rz dGFtcCA9IChhY3RpdmVfb2ZmbG9hZHMgJiBFTkVUQ19GX1RYX1RTVEFNUCkgJiYNCisJCSAgICAo c2tiX3NoaW5mbyhza2IpLT50eF9mbGFncyAmIFNLQlRYX0hXX1RTVEFNUCk7DQorCXR4X3N3YmQt PmRvX3RzdGFtcCA9IGRvX3RzdGFtcDsNCisJdHhfc3diZC0+Y2hlY2tfd2IgPSB0eF9zd2JkLT5k b190c3RhbXA7DQogDQogCWlmIChkb192bGFuIHx8IGRvX3RzdGFtcCkNCiAJCWZsYWdzIHw9IEVO RVRDX1RYQkRfRkxBR1NfRVg7DQpAQCAtMjk5LDI0ICszMDQsNjkgQEAgc3RhdGljIGludCBlbmV0 Y19iZF9yZWFkeV9jb3VudChzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nLCBpbnQgY2kpDQogCXJl dHVybiBwaSA+PSBjaSA/IHBpIC0gY2kgOiB0eF9yaW5nLT5iZF9jb3VudCAtIGNpICsgcGk7DQog fQ0KIA0KK3N0YXRpYyB2b2lkIGVuZXRjX2dldF90eF90c3RhbXAoc3RydWN0IGVuZXRjX2h3ICpo dywgdW5pb24gZW5ldGNfdHhfYmQgKnR4YmQsDQorCQkJCXU2NCAqdHN0YW1wKQ0KK3sNCisJdTMy IGxvLCBoaTsNCisNCisJbG8gPSBlbmV0Y19yZChodywgRU5FVENfU0lDVFIwKTsNCisJaGkgPSBl bmV0Y19yZChodywgRU5FVENfU0lDVFIxKTsNCisJaWYgKGxvIDw9IHR4YmQtPndiLnRzdGFtcCkN CisJCWhpIC09IDE7DQorCSp0c3RhbXAgPSAodTY0KWhpIDw8IDMyIHwgdHhiZC0+d2IudHN0YW1w Ow0KK30NCisNCitzdGF0aWMgdm9pZCBlbmV0Y190c3RhbXBfdHgoc3RydWN0IHNrX2J1ZmYgKnNr YiwgdTY0IHRzdGFtcCkNCit7DQorCXN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyBzaGh3dHN0 YW1wczsNCisNCisJaWYgKHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9JTl9QUk9H UkVTUykgew0KKwkJbWVtc2V0KCZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7 DQorCQlzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKHRzdGFtcCk7DQorCQlza2Jf dHN0YW1wX3R4KHNrYiwgJnNoaHd0c3RhbXBzKTsNCisJfQ0KK30NCisNCiBzdGF0aWMgYm9vbCBl bmV0Y19jbGVhbl90eF9yaW5nKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIGludCBuYXBpX2J1 ZGdldCkNCiB7DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdHhfcmluZy0+bmRldjsNCiAJ aW50IHR4X2ZybV9jbnQgPSAwLCB0eF9ieXRlX2NudCA9IDA7DQogCXN0cnVjdCBlbmV0Y190eF9z d2JkICp0eF9zd2JkOw0KIAlpbnQgaSwgYmRzX3RvX2NsZWFuOw0KKwlib29sIGRvX3RzdGFtcDsN CisJdTY0IHRzdGFtcCA9IDA7DQogDQogCWkgPSB0eF9yaW5nLT5uZXh0X3RvX2NsZWFuOw0KIAl0 eF9zd2JkID0gJnR4X3JpbmctPnR4X3N3YmRbaV07DQogCWJkc190b19jbGVhbiA9IGVuZXRjX2Jk X3JlYWR5X2NvdW50KHR4X3JpbmcsIGkpOw0KIA0KKwlkb190c3RhbXAgPSBmYWxzZTsNCisNCiAJ d2hpbGUgKGJkc190b19jbGVhbiAmJiB0eF9mcm1fY250IDwgRU5FVENfREVGQVVMVF9UWF9XT1JL KSB7DQogCQlib29sIGlzX2VvZiA9ICEhdHhfc3diZC0+c2tiOw0KIA0KKwkJaWYgKHVubGlrZWx5 KHR4X3N3YmQtPmNoZWNrX3diKSkgew0KKwkJCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYg PSBuZXRkZXZfcHJpdihuZGV2KTsNCisJCQl1bmlvbiBlbmV0Y190eF9iZCAqdHhiZDsNCisNCisJ CQl0eGJkID0gRU5FVENfVFhCRCgqdHhfcmluZywgaSk7DQorDQorCQkJaWYgKHR4YmQtPmZsYWdz ICYgRU5FVENfVFhCRF9GTEFHU19XICYmDQorCQkJICAgIHR4X3N3YmQtPmRvX3RzdGFtcCkgew0K KwkJCQllbmV0Y19nZXRfdHhfdHN0YW1wKCZwcml2LT5zaS0+aHcsIHR4YmQsDQorCQkJCQkJICAg ICZ0c3RhbXApOw0KKwkJCQlkb190c3RhbXAgPSB0cnVlOw0KKwkJCX0NCisJCX0NCisNCiAJCWlm IChsaWtlbHkodHhfc3diZC0+ZG1hKSkNCiAJCQllbmV0Y191bm1hcF90eF9idWZmKHR4X3Jpbmcs IHR4X3N3YmQpOw0KIA0KIAkJaWYgKGlzX2VvZikgew0KKwkJCWlmICh1bmxpa2VseShkb190c3Rh bXApKSB7DQorCQkJCWVuZXRjX3RzdGFtcF90eCh0eF9zd2JkLT5za2IsIHRzdGFtcCk7DQorCQkJ CWRvX3RzdGFtcCA9IGZhbHNlOw0KKwkJCX0NCiAJCQluYXBpX2NvbnN1bWVfc2tiKHR4X3N3YmQt PnNrYiwgbmFwaV9idWRnZXQpOw0KIAkJCXR4X3N3YmQtPnNrYiA9IE5VTEw7DQogCQl9DQpAQCAt NDI1LDEwICs0NzUsMzcgQEAgc3RhdGljIGludCBlbmV0Y19yZWZpbGxfcnhfcmluZyhzdHJ1Y3Qg ZW5ldGNfYmRyICpyeF9yaW5nLCBjb25zdCBpbnQgYnVmZl9jbnQpDQogCXJldHVybiBqOw0KIH0N CiANCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCitzdGF0aWMgdm9p ZCBlbmV0Y19nZXRfcnhfdHN0YW1wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KKwkJCQl1bmlv biBlbmV0Y19yeF9iZCAqcnhiZCwNCisJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYikNCit7DQorCXN0 cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqc2hod3RzdGFtcHMgPSBza2JfaHd0c3RhbXBzKHNr Yik7DQorCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsN CisJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZwcml2LT5zaS0+aHc7DQorCXUzMiBsbywgaGk7DQor CXU2NCB0c3RhbXA7DQorDQorCWlmIChyeGJkLT5yLmZsYWdzICYgRU5FVENfUlhCRF9GTEFHX1RT VE1QKSB7DQorCQlsbyA9IGVuZXRjX3JkKGh3LCBFTkVUQ19TSUNUUjApOw0KKwkJaGkgPSBlbmV0 Y19yZChodywgRU5FVENfU0lDVFIxKTsNCisJCWlmIChsbyA8PSByeGJkLT5yLnRzdGFtcCkNCisJ CQloaSAtPSAxOw0KKw0KKwkJdHN0YW1wID0gKHU2NCloaSA8PCAzMiB8IHJ4YmQtPnIudHN0YW1w Ow0KKwkJbWVtc2V0KHNoaHd0c3RhbXBzLCAwLCBzaXplb2YoKnNoaHd0c3RhbXBzKSk7DQorCQlz aGh3dHN0YW1wcy0+aHd0c3RhbXAgPSBuc190b19rdGltZSh0c3RhbXApOw0KKwl9DQorfQ0KKyNl bmRpZg0KKw0KIHN0YXRpYyB2b2lkIGVuZXRjX2dldF9vZmZsb2FkcyhzdHJ1Y3QgZW5ldGNfYmRy ICpyeF9yaW5nLA0KIAkJCSAgICAgICB1bmlvbiBlbmV0Y19yeF9iZCAqcnhiZCwgc3RydWN0IHNr X2J1ZmYgKnNrYikNCiB7DQotCS8qIFRPRE86IGFkZCB0c3RhbXAsIGhhc2hpbmcgKi8NCisjaWZk ZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCisJc3RydWN0IGVuZXRjX25kZXZf cHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHJ4X3JpbmctPm5kZXYpOw0KKyNlbmRpZg0KKwkvKiBU T0RPOiBoYXNoaW5nICovDQogCWlmIChyeF9yaW5nLT5uZGV2LT5mZWF0dXJlcyAmIE5FVElGX0Zf UlhDU1VNKSB7DQogCQl1MTYgaW5ldF9jc3VtID0gbGUxNl90b19jcHUocnhiZC0+ci5pbmV0X2Nz dW0pOw0KIA0KQEAgLTQ0Miw2ICs1MTksMTAgQEAgc3RhdGljIHZvaWQgZW5ldGNfZ2V0X29mZmxv YWRzKHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsDQogCWlmIChsZTE2X3RvX2NwdShyeGJkLT5y LmZsYWdzKSAmIEVORVRDX1JYQkRfRkxBR19WTEFOKQ0KIAkJX192bGFuX2h3YWNjZWxfcHV0X3Rh Zyhza2IsIGh0b25zKEVUSF9QXzgwMjFRKSwNCiAJCQkJICAgICAgIGxlMTZfdG9fY3B1KHJ4YmQt PnIudmxhbl9vcHQpKTsNCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcN CisJaWYgKHByaXYtPmFjdGl2ZV9vZmZsb2FkcyAmIEVORVRDX0ZfUlhfVFNUQU1QKQ0KKwkJZW5l dGNfZ2V0X3J4X3RzdGFtcChyeF9yaW5nLT5uZGV2LCByeGJkLCBza2IpOw0KKyNlbmRpZg0KIH0N CiANCiBzdGF0aWMgdm9pZCBlbmV0Y19wcm9jZXNzX3NrYihzdHJ1Y3QgZW5ldGNfYmRyICpyeF9y aW5nLA0KQEAgLTEwNzQsNiArMTE1NSw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRy KHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcpDQogCWVuZXRj X3J4YmRyX3dyKGh3LCBpZHgsIEVORVRDX1JCSUNJUjAsIEVORVRDX1JCSUNJUjBfSUNFTiB8IDB4 MSk7DQogDQogCXJibXIgPSBFTkVUQ19SQk1SX0VOOw0KKyNpZmRlZiBDT05GSUdfRlNMX0VORVRD X0hXX1RJTUVTVEFNUElORw0KKwlyYm1yIHw9IEVORVRDX1JCTVJfQkRTOw0KKyNlbmRpZg0KIAlp ZiAocnhfcmluZy0+bmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkNCiAJ CXJibXIgfD0gRU5FVENfUkJNUl9WVEU7DQogDQpAQCAtMTM5Niw2ICsxNDgwLDcwIEBAIGludCBl bmV0Y19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQogCXJldHVybiAwOw0K IH0NCiANCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCitzdGF0aWMg aW50IGVuZXRjX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlm cmVxICppZnIpDQorew0KKwlzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3By aXYobmRldik7DQorCXN0cnVjdCBod3RzdGFtcF9jb25maWcgY29uZmlnOw0KKw0KKwlpZiAoY29w eV9mcm9tX3VzZXIoJmNvbmZpZywgaWZyLT5pZnJfZGF0YSwgc2l6ZW9mKGNvbmZpZykpKQ0KKwkJ cmV0dXJuIC1FRkFVTFQ7DQorDQorCXN3aXRjaCAoY29uZmlnLnR4X3R5cGUpIHsNCisJY2FzZSBI V1RTVEFNUF9UWF9PRkY6DQorCQlwcml2LT5hY3RpdmVfb2ZmbG9hZHMgJj0gfkVORVRDX0ZfVFhf VFNUQU1QOw0KKwkJYnJlYWs7DQorCWNhc2UgSFdUU1RBTVBfVFhfT046DQorCQlwcml2LT5hY3Rp dmVfb2ZmbG9hZHMgfD0gRU5FVENfRl9UWF9UU1RBTVA7DQorCQlicmVhazsNCisJZGVmYXVsdDoN CisJCXJldHVybiAtRVJBTkdFOw0KKwl9DQorDQorCXN3aXRjaCAoY29uZmlnLnJ4X2ZpbHRlcikg ew0KKwljYXNlIEhXVFNUQU1QX0ZJTFRFUl9OT05FOg0KKwkJcHJpdi0+YWN0aXZlX29mZmxvYWRz ICY9IH5FTkVUQ19GX1JYX1RTVEFNUDsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcHJpdi0+ YWN0aXZlX29mZmxvYWRzIHw9IEVORVRDX0ZfUlhfVFNUQU1QOw0KKwkJY29uZmlnLnJ4X2ZpbHRl ciA9IEhXVFNUQU1QX0ZJTFRFUl9BTEw7DQorCX0NCisNCisJcmV0dXJuIGNvcHlfdG9fdXNlcihp ZnItPmlmcl9kYXRhLCAmY29uZmlnLCBzaXplb2YoY29uZmlnKSkgPw0KKwkgICAgICAgLUVGQVVM VCA6IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZW5ldGNfaHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmcikNCit7DQorCXN0cnVjdCBlbmV0Y19uZGV2 X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsNCisJc3RydWN0IGh3dHN0YW1wX2NvbmZp ZyBjb25maWc7DQorDQorCWNvbmZpZy5mbGFncyA9IDA7DQorDQorCWlmIChwcml2LT5hY3RpdmVf b2ZmbG9hZHMgJiBFTkVUQ19GX1RYX1RTVEFNUCkNCisJCWNvbmZpZy50eF90eXBlID0gSFdUU1RB TVBfVFhfT047DQorCWVsc2UNCisJCWNvbmZpZy50eF90eXBlID0gSFdUU1RBTVBfVFhfT0ZGOw0K Kw0KKwljb25maWcucnhfZmlsdGVyID0gKHByaXYtPmFjdGl2ZV9vZmZsb2FkcyAmIEVORVRDX0Zf UlhfVFNUQU1QKSA/DQorCQkJICAgIEhXVFNUQU1QX0ZJTFRFUl9BTEwgOiBIV1RTVEFNUF9GSUxU RVJfTk9ORTsNCisNCisJcmV0dXJuIGNvcHlfdG9fdXNlcihpZnItPmlmcl9kYXRhLCAmY29uZmln LCBzaXplb2YoY29uZmlnKSkgPw0KKwkgICAgICAgLUVGQVVMVCA6IDA7DQorfQ0KKyNlbmRpZg0K Kw0KK2ludCBlbmV0Y19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlmcmVx ICpycSwgaW50IGNtZCkNCit7DQorI2lmZGVmIENPTkZJR19GU0xfRU5FVENfSFdfVElNRVNUQU1Q SU5HDQorCWlmIChjbWQgPT0gU0lPQ1NIV1RTVEFNUCkNCisJCXJldHVybiBlbmV0Y19od3RzdGFt cF9zZXQobmRldiwgcnEpOw0KKwlpZiAoY21kID09IFNJT0NHSFdUU1RBTVApDQorCQlyZXR1cm4g ZW5ldGNfaHd0c3RhbXBfZ2V0KG5kZXYsIHJxKTsNCisjZW5kaWYNCisJcmV0dXJuIC1FSU5WQUw7 DQorfQ0KKw0KIGludCBlbmV0Y19hbGxvY19tc2l4KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnBy aXYpDQogew0KIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHByaXYtPnNpLT5wZGV2Ow0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmgNCmluZGV4IGIyNzQxMzVj NTEwMy4uMjgxYmI0MzY4Yjk4IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl ZXNjYWxlL2VuZXRjL2VuZXRjLmgNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2Fs ZS9lbmV0Yy9lbmV0Yy5oDQpAQCAtMjEsNyArMjEsOSBAQCBzdHJ1Y3QgZW5ldGNfdHhfc3diZCB7 DQogCXN0cnVjdCBza19idWZmICpza2I7DQogCWRtYV9hZGRyX3QgZG1hOw0KIAl1MTYgbGVuOw0K LQl1MTYgaXNfZG1hX3BhZ2U7DQorCXU4IGlzX2RtYV9wYWdlOjE7DQorCXU4IGNoZWNrX3diOjE7 DQorCXU4IGRvX3RzdGFtcDoxOw0KIH07DQogDQogI2RlZmluZSBFTkVUQ19SWF9NQVhGUk1fU0la RQlFTkVUQ19NQUNfTUFYRlJNX1NJWkUNCkBAIC0xNjcsNiArMTY5LDEyIEBAIHN0cnVjdCBlbmV0 Y19jbHNfcnVsZSB7DQogDQogI2RlZmluZSBFTkVUQ19NQVhfQkRSX0lOVAkyIC8qIGZpeGVkIHRv IG1heCAjIG9mIGF2YWlsYWJsZSBjcHVzICovDQogDQorLyogVE9ETzogbW9yZSBoYXJkd2FyZSBv ZmZsb2FkcyAqLw0KK2VudW0gZW5ldGNfYWN0aXZlX29mZmxvYWRzIHsNCisJRU5FVENfRl9SWF9U U1RBTVAJPSBCSVQoMCksDQorCUVORVRDX0ZfVFhfVFNUQU1QCT0gQklUKDEpLA0KK307DQorDQog c3RydWN0IGVuZXRjX25kZXZfcHJpdiB7DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2Ow0KIAlz dHJ1Y3QgZGV2aWNlICpkZXY7IC8qIGRtYS1tYXBwaW5nIGRldmljZSAqLw0KQEAgLTE3OCw2ICsx ODYsNyBAQCBzdHJ1Y3QgZW5ldGNfbmRldl9wcml2IHsNCiAJdTE2IHJ4X2JkX2NvdW50LCB0eF9i ZF9jb3VudDsNCiANCiAJdTE2IG1zZ19lbmFibGU7DQorCWludCBhY3RpdmVfb2ZmbG9hZHM7DQog DQogCXN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmdbMTZdOw0KIAlzdHJ1Y3QgZW5ldGNfYmRyICpy eF9yaW5nWzE2XTsNCkBAIC0yMTYsNiArMjI1LDcgQEAgbmV0ZGV2X3R4X3QgZW5ldGNfeG1pdChz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7DQogc3RydWN0IG5l dF9kZXZpY2Vfc3RhdHMgKmVuZXRjX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7 DQogaW50IGVuZXRjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwNCiAJCSAg ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7DQoraW50IGVuZXRjX2lvY3RsKHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKTsNCiAvKiBldGh0 b29sICovDQogdm9pZCBlbmV0Y19zZXRfZXRodG9vbF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYpOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0 Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRj X2h3LmgNCmluZGV4IGRmOGViODg4MmQ5Mi4uNjU1OWNlZjRiMDdkIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgNCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oDQpAQCAtMzYxLDYgKzM2 MSwxMiBAQCB1bmlvbiBlbmV0Y190eF9iZCB7DQogCQl1OCBlX2ZsYWdzOw0KIAkJdTggZmxhZ3M7 DQogCX0gZXh0OyAvKiBUeCBCRCBleHRlbnNpb24gKi8NCisJc3RydWN0IHsNCisJCV9fbGUzMiB0 c3RhbXA7DQorCQl1OCByZXNlcnZlZFsxMF07DQorCQl1OCBzdGF0dXM7DQorCQl1OCBmbGFnczsN CisJfSB3YjsgLyogd3JpdGViYWNrIGRlc2NyaXB0b3IgKi8NCiB9Ow0KIA0KICNkZWZpbmUgRU5F VENfVFhCRF9GTEFHU19MNENTCUJJVCgwKQ0KQEAgLTM5OSw2ICs0MDUsOSBAQCB1bmlvbiBlbmV0 Y19yeF9iZCB7DQogCXN0cnVjdCB7DQogCQlfX2xlNjQgYWRkcjsNCiAJCXU4IHJlc2VydmVkWzhd Ow0KKyNpZmRlZiBDT05GSUdfRlNMX0VORVRDX0hXX1RJTUVTVEFNUElORw0KKwkJdTggcmVzZXJ2 ZWQxWzE2XTsNCisjZW5kaWYNCiAJfSB3Ow0KIAlzdHJ1Y3Qgew0KIAkJX19sZTE2IGluZXRfY3N1 bTsNCkBAIC00MTMsNiArNDIyLDEwIEBAIHVuaW9uIGVuZXRjX3J4X2JkIHsNCiAJCQl9Ow0KIAkJ CV9fbGUzMiBsc3RhdHVzOw0KIAkJfTsNCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1F U1RBTVBJTkcNCisJCV9fbGUzMiB0c3RhbXA7DQorCQl1OCByZXNlcnZlZFsxMl07DQorI2VuZGlm DQogCX0gcjsNCiB9Ow0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVz Y2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2Vu ZXRjL2VuZXRjX3BmLmMNCmluZGV4IDc4Mjg3YzUxNzA5NS4uZDc4ZWM4ZDQzYzM5IDEwMDY0NA0K LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMNCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jDQpAQCAt NzAyLDYgKzcwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNf bmRldl9vcHMgPSB7DQogCS5uZG9fc2V0X3ZmX3ZsYW4JPSBlbmV0Y19wZl9zZXRfdmZfdmxhbiwN CiAJLm5kb19zZXRfdmZfc3Bvb2ZjaGsJPSBlbmV0Y19wZl9zZXRfdmZfc3Bvb2ZjaGssDQogCS5u ZG9fc2V0X2ZlYXR1cmVzCT0gZW5ldGNfcGZfc2V0X2ZlYXR1cmVzLA0KKwkubmRvX2RvX2lvY3Rs CQk9IGVuZXRjX2lvY3RsLA0KIH07DQogDQogc3RhdGljIHZvaWQgZW5ldGNfcGZfbmV0ZGV2X3Nl dHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMNCmluZGV4IDcy YzNlYTg4N2JjZi4uMTdmNzI2NDRjNWExIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jDQpAQCAtMTExLDYgKzExMSw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNfbmRldl9vcHMgPSB7DQogCS5uZG9fZ2V0 X3N0YXRzCQk9IGVuZXRjX2dldF9zdGF0cywNCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MJPSBlbmV0 Y192Zl9zZXRfbWFjX2FkZHIsDQogCS5uZG9fc2V0X2ZlYXR1cmVzCT0gZW5ldGNfdmZfc2V0X2Zl YXR1cmVzLA0KKwkubmRvX2RvX2lvY3RsCQk9IGVuZXRjX2lvY3RsLA0KIH07DQogDQogc3RhdGlj IHZvaWQgZW5ldGNfdmZfbmV0ZGV2X3NldHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBu ZXRfZGV2aWNlICpuZGV2LA0KLS0gDQoyLjE3LjENCg0K