From mboxrd@z Thu Jan 1 00:00:00 1970 From: Saeed Mahameed Subject: [for-next V2 01/10] linux/dim: Move logic to dim.h Date: Tue, 25 Jun 2019 20:57:30 +0000 Message-ID: <20190625205701.17849-2-saeedm@mellanox.com> References: <20190625205701.17849-1-saeedm@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190625205701.17849-1-saeedm@mellanox.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org To: "David S. Miller" , Doug Ledford , Jason Gunthorpe Cc: Leon Romanovsky , Or Gerlitz , Sagi Grimberg , Tal Gilboa , "netdev@vger.kernel.org" , "linux-rdma@vger.kernel.org" , Saeed Mahameed List-Id: linux-rdma@vger.kernel.org RnJvbTogVGFsIEdpbGJvYSA8dGFsZ2lAbWVsbGFub3guY29tPg0KDQpJbiBwcmVwYXJhdGlvbiBm b3Igc3VwcG9ydGluZyBtb3JlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgRElNDQphbGdvcml0aG0s IEknbSBtb3Zpbmcgd2hhdCB3b3VsZCBiZWNvbWUgY29tbW9uIGxvZ2ljIHRvIGEgY29tbW9uDQps aWJyYXJ5LiBEb3duc3RyZWFtIERJTSBpbXBsZW1lbnRhdGlvbnMgd2lsbCB1c2UgdGhlIGNvbW1v biBsaWINCmZvciB0aGVpciBpbXBsZW1lbnRhdGlvbi4NCg0KU2lnbmVkLW9mZi1ieTogVGFsIEdp bGJvYSA8dGFsZ2lAbWVsbGFub3guY29tPg0KU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFoYW1lZWQg PHNhZWVkbUBtZWxsYW5veC5jb20+DQotLS0NCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICB8ICAg MSArDQogaW5jbHVkZS9saW51eC9kaW0uaCAgICAgfCAxNTMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KIGluY2x1ZGUvbGludXgvbmV0X2RpbS5oIHwgMTQ4ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogMyBmaWxlcyBjaGFuZ2VkLCAxNTYg aW5zZXJ0aW9ucygrKSwgMTQ2IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs dWRlL2xpbnV4L2RpbS5oDQoNCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJT DQppbmRleCA0MjljNmM2MjQ4NjEuLjVkNGI4NTJkOWQzOSAxMDA2NDQNCi0tLSBhL01BSU5UQUlO RVJTDQorKysgYi9NQUlOVEFJTkVSUw0KQEAgLTU1ODksNiArNTU4OSw3IEBAIERZTkFNSUMgSU5U RVJSVVBUIE1PREVSQVRJT04NCiBNOglUYWwgR2lsYm9hIDx0YWxnaUBtZWxsYW5veC5jb20+DQog UzoJTWFpbnRhaW5lZA0KIEY6CWluY2x1ZGUvbGludXgvbmV0X2RpbS5oDQorRjoJaW5jbHVkZS9s aW51eC9kaW0uaA0KIA0KIERaIERFQ1NUQVRJT04gRFoxMSBTRVJJQUwgRFJJVkVSDQogTToJIk1h Y2llaiBXLiBSb3p5Y2tpIiA8bWFjcm9AbGludXgtbWlwcy5vcmc+DQpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9kaW0uaCBiL2luY2x1ZGUvbGludXgvZGltLmgNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjY3ZDdjYTQwZjNkZA0KLS0tIC9kZXYvbnVsbA0KKysr IGIvaW5jbHVkZS9saW51eC9kaW0uaA0KQEAgLTAsMCArMSwxNTMgQEANCisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBMaW51eC1PcGVuSUIgKi8NCisvKiBDb3B5cmlnaHQg KGMpIDIwMTkgTWVsbGFub3ggVGVjaG5vbG9naWVzLiAqLw0KKw0KKyNpZm5kZWYgRElNX0gNCisj ZGVmaW5lIERJTV9IDQorDQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKw0KKyNkZWZpbmUg TkVUX0RJTV9ORVZFTlRTIDY0DQorDQorLyogbW9yZSB0aGFuIDEwJSBkaWZmZXJlbmNlICovDQor I2RlZmluZSBJU19TSUdOSUZJQ0FOVF9ESUZGKHZhbCwgcmVmKSBcDQorCSgoKDEwMFVMICogYWJz KCh2YWwpIC0gKHJlZikpKSAvIChyZWYpKSA+IDEwKQ0KKyNkZWZpbmUgQklUX0dBUChiaXRzLCBl bmQsIHN0YXJ0KSAoKCgoZW5kKSAtIChzdGFydCkpICsgQklUX1VMTChiaXRzKSkgXA0KKyYgKEJJ VF9VTEwoYml0cykgLSAxKSkNCisNCitzdHJ1Y3QgbmV0X2RpbV9jcV9tb2RlciB7DQorCXUxNiB1 c2VjOw0KKwl1MTYgcGt0czsNCisJdTggY3FfcGVyaW9kX21vZGU7DQorfTsNCisNCitzdHJ1Y3Qg bmV0X2RpbV9zYW1wbGUgew0KKwlrdGltZV90IHRpbWU7DQorCXUzMiBwa3RfY3RyOw0KKwl1MzIg Ynl0ZV9jdHI7DQorCXUxNiBldmVudF9jdHI7DQorfTsNCisNCitzdHJ1Y3QgbmV0X2RpbV9zdGF0 cyB7DQorCWludCBwcG1zOyAvKiBwYWNrZXRzIHBlciBtc2VjICovDQorCWludCBicG1zOyAvKiBi eXRlcyBwZXIgbXNlYyAqLw0KKwlpbnQgZXBtczsgLyogZXZlbnRzIHBlciBtc2VjICovDQorfTsN CisNCitzdHJ1Y3QgbmV0X2RpbSB7IC8qIER5bmFtaWMgSW50ZXJydXB0IE1vZGVyYXRpb24gKi8N CisJdTggc3RhdGU7DQorCXN0cnVjdCBuZXRfZGltX3N0YXRzIHByZXZfc3RhdHM7DQorCXN0cnVj dCBuZXRfZGltX3NhbXBsZSBzdGFydF9zYW1wbGU7DQorCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3Jr Ow0KKwl1OCBwcm9maWxlX2l4Ow0KKwl1OCBtb2RlOw0KKwl1OCB0dW5lX3N0YXRlOw0KKwl1OCBz dGVwc19yaWdodDsNCisJdTggc3RlcHNfbGVmdDsNCisJdTggdGlyZWQ7DQorfTsNCisNCitlbnVt IHsNCisJTkVUX0RJTV9DUV9QRVJJT0RfTU9ERV9TVEFSVF9GUk9NX0VRRSA9IDB4MCwNCisJTkVU X0RJTV9DUV9QRVJJT0RfTU9ERV9TVEFSVF9GUk9NX0NRRSA9IDB4MSwNCisJTkVUX0RJTV9DUV9Q RVJJT0RfTlVNX01PREVTDQorfTsNCisNCitlbnVtIHsNCisJTkVUX0RJTV9TVEFSVF9NRUFTVVJF LA0KKwlORVRfRElNX01FQVNVUkVfSU5fUFJPR1JFU1MsDQorCU5FVF9ESU1fQVBQTFlfTkVXX1BS T0ZJTEUsDQorfTsNCisNCitlbnVtIHsNCisJTkVUX0RJTV9QQVJLSU5HX09OX1RPUCwNCisJTkVU X0RJTV9QQVJLSU5HX1RJUkVELA0KKwlORVRfRElNX0dPSU5HX1JJR0hULA0KKwlORVRfRElNX0dP SU5HX0xFRlQsDQorfTsNCisNCitlbnVtIHsNCisJTkVUX0RJTV9TVEFUU19XT1JTRSwNCisJTkVU X0RJTV9TVEFUU19TQU1FLA0KKwlORVRfRElNX1NUQVRTX0JFVFRFUiwNCit9Ow0KKw0KK2VudW0g ew0KKwlORVRfRElNX1NURVBQRUQsDQorCU5FVF9ESU1fVE9PX1RJUkVELA0KKwlORVRfRElNX09O X0VER0UsDQorfTsNCisNCitzdGF0aWMgaW5saW5lIGJvb2wgbmV0X2RpbV9vbl90b3Aoc3RydWN0 IG5ldF9kaW0gKm5ldF9kaW0pDQorew0KKwlzd2l0Y2ggKG5ldF9kaW0tPnR1bmVfc3RhdGUpIHsN CisJY2FzZSBORVRfRElNX1BBUktJTkdfT05fVE9QOg0KKwljYXNlIE5FVF9ESU1fUEFSS0lOR19U SVJFRDoNCisJCXJldHVybiB0cnVlOw0KKwljYXNlIE5FVF9ESU1fR09JTkdfUklHSFQ6DQorCQly ZXR1cm4gKG5ldF9kaW0tPnN0ZXBzX2xlZnQgPiAxKSAmJiAobmV0X2RpbS0+c3RlcHNfcmlnaHQg PT0gMSk7DQorCWRlZmF1bHQ6IC8qIE5FVF9ESU1fR09JTkdfTEVGVCAqLw0KKwkJcmV0dXJuIChu ZXRfZGltLT5zdGVwc19yaWdodCA+IDEpICYmIChuZXRfZGltLT5zdGVwc19sZWZ0ID09IDEpOw0K Kwl9DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGltX3R1cm4oc3RydWN0IG5ldF9k aW0gKm5ldF9kaW0pDQorew0KKwlzd2l0Y2ggKG5ldF9kaW0tPnR1bmVfc3RhdGUpIHsNCisJY2Fz ZSBORVRfRElNX1BBUktJTkdfT05fVE9QOg0KKwljYXNlIE5FVF9ESU1fUEFSS0lOR19USVJFRDoN CisJCWJyZWFrOw0KKwljYXNlIE5FVF9ESU1fR09JTkdfUklHSFQ6DQorCQluZXRfZGltLT50dW5l X3N0YXRlID0gTkVUX0RJTV9HT0lOR19MRUZUOw0KKwkJbmV0X2RpbS0+c3RlcHNfbGVmdCA9IDA7 DQorCQlicmVhazsNCisJY2FzZSBORVRfRElNX0dPSU5HX0xFRlQ6DQorCQluZXRfZGltLT50dW5l X3N0YXRlID0gTkVUX0RJTV9HT0lOR19SSUdIVDsNCisJCW5ldF9kaW0tPnN0ZXBzX3JpZ2h0ID0g MDsNCisJCWJyZWFrOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGltX3Bh cmtfb25fdG9wKHN0cnVjdCBuZXRfZGltICpuZXRfZGltKQ0KK3sNCisJbmV0X2RpbS0+c3RlcHNf cmlnaHQgID0gMDsNCisJbmV0X2RpbS0+c3RlcHNfbGVmdCAgID0gMDsNCisJbmV0X2RpbS0+dGly ZWQgICAgICAgID0gMDsNCisJbmV0X2RpbS0+dHVuZV9zdGF0ZSAgID0gTkVUX0RJTV9QQVJLSU5H X09OX1RPUDsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIG5ldF9kaW1fcGFya190aXJlZChz dHJ1Y3QgbmV0X2RpbSAqbmV0X2RpbSkNCit7DQorCW5ldF9kaW0tPnN0ZXBzX3JpZ2h0ICA9IDA7 DQorCW5ldF9kaW0tPnN0ZXBzX2xlZnQgICA9IDA7DQorCW5ldF9kaW0tPnR1bmVfc3RhdGUgICA9 IE5FVF9ESU1fUEFSS0lOR19USVJFRDsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkDQorbmV0 X2RpbV9zYW1wbGUodTE2IGV2ZW50X2N0ciwgdTY0IHBhY2tldHMsIHU2NCBieXRlcywgc3RydWN0 IG5ldF9kaW1fc2FtcGxlICpzKQ0KK3sNCisJcy0+dGltZQkgICAgID0ga3RpbWVfZ2V0KCk7DQor CXMtPnBrdF9jdHIgICA9IHBhY2tldHM7DQorCXMtPmJ5dGVfY3RyICA9IGJ5dGVzOw0KKwlzLT5l dmVudF9jdHIgPSBldmVudF9jdHI7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZA0KK25ldF9k aW1fY2FsY19zdGF0cyhzdHJ1Y3QgbmV0X2RpbV9zYW1wbGUgKnN0YXJ0LCBzdHJ1Y3QgbmV0X2Rp bV9zYW1wbGUgKmVuZCwNCisJCSAgIHN0cnVjdCBuZXRfZGltX3N0YXRzICpjdXJyX3N0YXRzKQ0K K3sNCisJLyogdTMyIGhvbGRzIHVwIHRvIDcxIG1pbnV0ZXMsIHNob3VsZCBiZSBlbm91Z2ggKi8N CisJdTMyIGRlbHRhX3VzID0ga3RpbWVfdXNfZGVsdGEoZW5kLT50aW1lLCBzdGFydC0+dGltZSk7 DQorCXUzMiBucGt0cyA9IEJJVF9HQVAoQklUU19QRVJfVFlQRSh1MzIpLCBlbmQtPnBrdF9jdHIs IHN0YXJ0LT5wa3RfY3RyKTsNCisJdTMyIG5ieXRlcyA9IEJJVF9HQVAoQklUU19QRVJfVFlQRSh1 MzIpLCBlbmQtPmJ5dGVfY3RyLA0KKwkJCSAgICAgc3RhcnQtPmJ5dGVfY3RyKTsNCisNCisJaWYg KCFkZWx0YV91cykNCisJCXJldHVybjsNCisNCisJY3Vycl9zdGF0cy0+cHBtcyA9IERJVl9ST1VO RF9VUChucGt0cyAqIFVTRUNfUEVSX01TRUMsIGRlbHRhX3VzKTsNCisJY3Vycl9zdGF0cy0+YnBt cyA9IERJVl9ST1VORF9VUChuYnl0ZXMgKiBVU0VDX1BFUl9NU0VDLCBkZWx0YV91cyk7DQorCWN1 cnJfc3RhdHMtPmVwbXMgPSBESVZfUk9VTkRfVVAoTkVUX0RJTV9ORVZFTlRTICogVVNFQ19QRVJf TVNFQywNCisJCQkJCWRlbHRhX3VzKTsNCit9DQorDQorI2VuZGlmIC8qIERJTV9IICovDQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRfZGltLmggYi9pbmNsdWRlL2xpbnV4L25ldF9kaW0u aA0KaW5kZXggZmQ0NTgzODlmN2QxLi4zNzNjZGE3NGIxNjcgMTAwNjQ0DQotLS0gYS9pbmNsdWRl L2xpbnV4L25ldF9kaW0uaA0KKysrIGIvaW5jbHVkZS9saW51eC9uZXRfZGltLmgNCkBAIC0zNSw3 MyArMzUsMTAgQEANCiAjZGVmaW5lIE5FVF9ESU1fSA0KIA0KICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4NCi0NCi1zdHJ1Y3QgbmV0X2RpbV9jcV9tb2RlciB7DQotCXUxNiB1c2VjOw0KLQl1MTYg cGt0czsNCi0JdTggY3FfcGVyaW9kX21vZGU7DQotfTsNCi0NCi1zdHJ1Y3QgbmV0X2RpbV9zYW1w bGUgew0KLQlrdGltZV90IHRpbWU7DQotCXUzMiAgICAgcGt0X2N0cjsNCi0JdTMyICAgICBieXRl X2N0cjsNCi0JdTE2ICAgICBldmVudF9jdHI7DQotfTsNCi0NCi1zdHJ1Y3QgbmV0X2RpbV9zdGF0 cyB7DQotCWludCBwcG1zOyAvKiBwYWNrZXRzIHBlciBtc2VjICovDQotCWludCBicG1zOyAvKiBi eXRlcyBwZXIgbXNlYyAqLw0KLQlpbnQgZXBtczsgLyogZXZlbnRzIHBlciBtc2VjICovDQotfTsN Ci0NCi1zdHJ1Y3QgbmV0X2RpbSB7IC8qIEFkYXB0aXZlIE1vZGVyYXRpb24gKi8NCi0JdTggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOw0KLQlzdHJ1Y3QgbmV0X2Rp bV9zdGF0cyAgICAgICAgICAgICAgICAgICAgcHJldl9zdGF0czsNCi0Jc3RydWN0IG5ldF9kaW1f c2FtcGxlICAgICAgICAgICAgICAgICAgIHN0YXJ0X3NhbXBsZTsNCi0Jc3RydWN0IHdvcmtfc3Ry dWN0ICAgICAgICAgICAgICAgICAgICAgIHdvcms7DQotCXU4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm9maWxlX2l4Ow0KLQl1OCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbW9kZTsNCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHR1bmVfc3RhdGU7DQotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdGVwc19yaWdodDsNCi0JdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0ZXBzX2xlZnQ7DQotCXU4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aXJlZDsNCi19Ow0KLQ0KLWVudW0gew0KLQlORVRfRElNX0NRX1BFUklPRF9NT0RFX1NUQVJU X0ZST01fRVFFID0gMHgwLA0KLQlORVRfRElNX0NRX1BFUklPRF9NT0RFX1NUQVJUX0ZST01fQ1FF ID0gMHgxLA0KLQlORVRfRElNX0NRX1BFUklPRF9OVU1fTU9ERVMNCi19Ow0KLQ0KLS8qIEFkYXB0 aXZlIG1vZGVyYXRpb24gbG9naWMgKi8NCi1lbnVtIHsNCi0JTkVUX0RJTV9TVEFSVF9NRUFTVVJF LA0KLQlORVRfRElNX01FQVNVUkVfSU5fUFJPR1JFU1MsDQotCU5FVF9ESU1fQVBQTFlfTkVXX1BS T0ZJTEUsDQotfTsNCi0NCi1lbnVtIHsNCi0JTkVUX0RJTV9QQVJLSU5HX09OX1RPUCwNCi0JTkVU X0RJTV9QQVJLSU5HX1RJUkVELA0KLQlORVRfRElNX0dPSU5HX1JJR0hULA0KLQlORVRfRElNX0dP SU5HX0xFRlQsDQotfTsNCi0NCi1lbnVtIHsNCi0JTkVUX0RJTV9TVEFUU19XT1JTRSwNCi0JTkVU X0RJTV9TVEFUU19TQU1FLA0KLQlORVRfRElNX1NUQVRTX0JFVFRFUiwNCi19Ow0KLQ0KLWVudW0g ew0KLQlORVRfRElNX1NURVBQRUQsDQotCU5FVF9ESU1fVE9PX1RJUkVELA0KLQlORVRfRElNX09O X0VER0UsDQotfTsNCisjaW5jbHVkZSA8bGludXgvZGltLmg+DQogDQogI2RlZmluZSBORVRfRElN X1BBUkFNU19OVU1fUFJPRklMRVMgNQ0KLS8qIEFkYXB0aXZlIG1vZGVyYXRpb24gcHJvZmlsZXMg Ki8NCisvKiBOZXRkZXYgZHluYW1pYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBwcm9maWxlcyAqLw0K ICNkZWZpbmUgTkVUX0RJTV9ERUZBVUxUX1JYX0NRX01PREVSQVRJT05fUEtUU19GUk9NX0VRRSAy NTYNCiAjZGVmaW5lIE5FVF9ESU1fREVGQVVMVF9UWF9DUV9NT0RFUkFUSU9OX1BLVFNfRlJPTV9F UUUgMTI4DQogI2RlZmluZSBORVRfRElNX0RFRl9QUk9GSUxFX0NRRSAxDQpAQCAtMTg4LDM2ICsx MjUsNiBAQCBuZXRfZGltX2dldF9kZWZfdHhfbW9kZXJhdGlvbih1OCBjcV9wZXJpb2RfbW9kZSkN CiAJcmV0dXJuIG5ldF9kaW1fZ2V0X3R4X21vZGVyYXRpb24oY3FfcGVyaW9kX21vZGUsIHByb2Zp bGVfaXgpOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIGJvb2wgbmV0X2RpbV9vbl90b3Aoc3RydWN0 IG5ldF9kaW0gKmRpbSkNCi17DQotCXN3aXRjaCAoZGltLT50dW5lX3N0YXRlKSB7DQotCWNhc2Ug TkVUX0RJTV9QQVJLSU5HX09OX1RPUDoNCi0JY2FzZSBORVRfRElNX1BBUktJTkdfVElSRUQ6DQot CQlyZXR1cm4gdHJ1ZTsNCi0JY2FzZSBORVRfRElNX0dPSU5HX1JJR0hUOg0KLQkJcmV0dXJuIChk aW0tPnN0ZXBzX2xlZnQgPiAxKSAmJiAoZGltLT5zdGVwc19yaWdodCA9PSAxKTsNCi0JZGVmYXVs dDogLyogTkVUX0RJTV9HT0lOR19MRUZUICovDQotCQlyZXR1cm4gKGRpbS0+c3RlcHNfcmlnaHQg PiAxKSAmJiAoZGltLT5zdGVwc19sZWZ0ID09IDEpOw0KLQl9DQotfQ0KLQ0KLXN0YXRpYyBpbmxp bmUgdm9pZCBuZXRfZGltX3R1cm4oc3RydWN0IG5ldF9kaW0gKmRpbSkNCi17DQotCXN3aXRjaCAo ZGltLT50dW5lX3N0YXRlKSB7DQotCWNhc2UgTkVUX0RJTV9QQVJLSU5HX09OX1RPUDoNCi0JY2Fz ZSBORVRfRElNX1BBUktJTkdfVElSRUQ6DQotCQlicmVhazsNCi0JY2FzZSBORVRfRElNX0dPSU5H X1JJR0hUOg0KLQkJZGltLT50dW5lX3N0YXRlID0gTkVUX0RJTV9HT0lOR19MRUZUOw0KLQkJZGlt LT5zdGVwc19sZWZ0ID0gMDsNCi0JCWJyZWFrOw0KLQljYXNlIE5FVF9ESU1fR09JTkdfTEVGVDoN Ci0JCWRpbS0+dHVuZV9zdGF0ZSA9IE5FVF9ESU1fR09JTkdfUklHSFQ7DQotCQlkaW0tPnN0ZXBz X3JpZ2h0ID0gMDsNCi0JCWJyZWFrOw0KLQl9DQotfQ0KLQ0KIHN0YXRpYyBpbmxpbmUgaW50IG5l dF9kaW1fc3RlcChzdHJ1Y3QgbmV0X2RpbSAqZGltKQ0KIHsNCiAJaWYgKGRpbS0+dGlyZWQgPT0g KE5FVF9ESU1fUEFSQU1TX05VTV9QUk9GSUxFUyAqIDIpKQ0KQEAgLTI0NSwyMSArMTUyLDYgQEAg c3RhdGljIGlubGluZSBpbnQgbmV0X2RpbV9zdGVwKHN0cnVjdCBuZXRfZGltICpkaW0pDQogCXJl dHVybiBORVRfRElNX1NURVBQRUQ7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGlt X3Bhcmtfb25fdG9wKHN0cnVjdCBuZXRfZGltICpkaW0pDQotew0KLQlkaW0tPnN0ZXBzX3JpZ2h0 ICA9IDA7DQotCWRpbS0+c3RlcHNfbGVmdCAgID0gMDsNCi0JZGltLT50aXJlZCAgICAgICAgPSAw Ow0KLQlkaW0tPnR1bmVfc3RhdGUgICA9IE5FVF9ESU1fUEFSS0lOR19PTl9UT1A7DQotfQ0KLQ0K LXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGltX3BhcmtfdGlyZWQoc3RydWN0IG5ldF9kaW0gKmRp bSkNCi17DQotCWRpbS0+c3RlcHNfcmlnaHQgID0gMDsNCi0JZGltLT5zdGVwc19sZWZ0ICAgPSAw Ow0KLQlkaW0tPnR1bmVfc3RhdGUgICA9IE5FVF9ESU1fUEFSS0lOR19USVJFRDsNCi19DQotDQog c3RhdGljIGlubGluZSB2b2lkIG5ldF9kaW1fZXhpdF9wYXJraW5nKHN0cnVjdCBuZXRfZGltICpk aW0pDQogew0KIAlkaW0tPnR1bmVfc3RhdGUgPSBkaW0tPnByb2ZpbGVfaXggPyBORVRfRElNX0dP SU5HX0xFRlQgOg0KQEAgLTI2Nyw5ICsxNTksNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0X2Rp bV9leGl0X3Bhcmtpbmcoc3RydWN0IG5ldF9kaW0gKmRpbSkNCiAJbmV0X2RpbV9zdGVwKGRpbSk7 DQogfQ0KIA0KLSNkZWZpbmUgSVNfU0lHTklGSUNBTlRfRElGRih2YWwsIHJlZikgXA0KLQkoKCgx MDBVTCAqIGFicygodmFsKSAtIChyZWYpKSkgLyAocmVmKSkgPiAxMCkgLyogbW9yZSB0aGFuIDEw JSBkaWZmZXJlbmNlICovDQotDQogc3RhdGljIGlubGluZSBpbnQgbmV0X2RpbV9zdGF0c19jb21w YXJlKHN0cnVjdCBuZXRfZGltX3N0YXRzICpjdXJyLA0KIAkJCQkJc3RydWN0IG5ldF9kaW1fc3Rh dHMgKnByZXYpDQogew0KQEAgLTM1MSwzOSArMjQwLDYgQEAgc3RhdGljIGlubGluZSBib29sIG5l dF9kaW1fZGVjaXNpb24oc3RydWN0IG5ldF9kaW1fc3RhdHMgKmN1cnJfc3RhdHMsDQogCXJldHVy biBkaW0tPnByb2ZpbGVfaXggIT0gcHJldl9peDsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lk IG5ldF9kaW1fc2FtcGxlKHUxNiBldmVudF9jdHIsDQotCQkJCSAgdTY0IHBhY2tldHMsDQotCQkJ CSAgdTY0IGJ5dGVzLA0KLQkJCQkgIHN0cnVjdCBuZXRfZGltX3NhbXBsZSAqcykNCi17DQotCXMt PnRpbWUJICAgICA9IGt0aW1lX2dldCgpOw0KLQlzLT5wa3RfY3RyICAgPSBwYWNrZXRzOw0KLQlz LT5ieXRlX2N0ciAgPSBieXRlczsNCi0Jcy0+ZXZlbnRfY3RyID0gZXZlbnRfY3RyOw0KLX0NCi0N Ci0jZGVmaW5lIE5FVF9ESU1fTkVWRU5UUyA2NA0KLSNkZWZpbmUgQklUX0dBUChiaXRzLCBlbmQs IHN0YXJ0KSAoKCgoZW5kKSAtIChzdGFydCkpICsgQklUX1VMTChiaXRzKSkgJiAoQklUX1VMTChi aXRzKSAtIDEpKQ0KLQ0KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRfZGltX2NhbGNfc3RhdHMoc3Ry dWN0IG5ldF9kaW1fc2FtcGxlICpzdGFydCwNCi0JCQkJICAgICAgc3RydWN0IG5ldF9kaW1fc2Ft cGxlICplbmQsDQotCQkJCSAgICAgIHN0cnVjdCBuZXRfZGltX3N0YXRzICpjdXJyX3N0YXRzKQ0K LXsNCi0JLyogdTMyIGhvbGRzIHVwIHRvIDcxIG1pbnV0ZXMsIHNob3VsZCBiZSBlbm91Z2ggKi8N Ci0JdTMyIGRlbHRhX3VzID0ga3RpbWVfdXNfZGVsdGEoZW5kLT50aW1lLCBzdGFydC0+dGltZSk7 DQotCXUzMiBucGt0cyA9IEJJVF9HQVAoQklUU19QRVJfVFlQRSh1MzIpLCBlbmQtPnBrdF9jdHIs IHN0YXJ0LT5wa3RfY3RyKTsNCi0JdTMyIG5ieXRlcyA9IEJJVF9HQVAoQklUU19QRVJfVFlQRSh1 MzIpLCBlbmQtPmJ5dGVfY3RyLA0KLQkJCSAgICAgc3RhcnQtPmJ5dGVfY3RyKTsNCi0NCi0JaWYg KCFkZWx0YV91cykNCi0JCXJldHVybjsNCi0NCi0JY3Vycl9zdGF0cy0+cHBtcyA9IERJVl9ST1VO RF9VUChucGt0cyAqIFVTRUNfUEVSX01TRUMsIGRlbHRhX3VzKTsNCi0JY3Vycl9zdGF0cy0+YnBt cyA9IERJVl9ST1VORF9VUChuYnl0ZXMgKiBVU0VDX1BFUl9NU0VDLCBkZWx0YV91cyk7DQotCWN1 cnJfc3RhdHMtPmVwbXMgPSBESVZfUk9VTkRfVVAoTkVUX0RJTV9ORVZFTlRTICogVVNFQ19QRVJf TVNFQywNCi0JCQkJCWRlbHRhX3VzKTsNCi19DQotDQogc3RhdGljIGlubGluZSB2b2lkIG5ldF9k aW0oc3RydWN0IG5ldF9kaW0gKmRpbSwNCiAJCQkgICBzdHJ1Y3QgbmV0X2RpbV9zYW1wbGUgZW5k X3NhbXBsZSkNCiB7DQotLSANCjIuMjEuMA0KDQo=