From mboxrd@z Thu Jan 1 00:00:00 1970 From: Saeed Mahameed Subject: [PATCH mlx5-next 06/16] net/mlx5: Change interrupt handler to call chain notifier Date: Mon, 10 Jun 2019 23:38:23 +0000 Message-ID: <20190610233733.12155-7-saeedm@mellanox.com> References: <20190610233733.12155-1-saeedm@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190610233733.12155-1-saeedm@mellanox.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org To: Saeed Mahameed , Leon Romanovsky Cc: "linux-rdma@vger.kernel.org" , "netdev@vger.kernel.org" , Yuval Avnery , Parav Pandit List-Id: linux-rdma@vger.kernel.org RnJvbTogWXV2YWwgQXZuZXJ5IDx5dXZhbGF2QG1lbGxhbm94LmNvbT4NCg0KTXVsdGlwbGUgRVFz IG1heSBzaGFyZSB0aGUgc2FtZSBJUlEgaW4gc3Vic2VxdWVudCBwYXRjaGVzLg0KDQpJbnN0ZWFk IG9mIGNhbGxpbmcgdGhlIElSUSBoYW5kbGVyIGRpcmVjdGx5LCB0aGUgRVEgd2lsbCByZWdpc3Rl cg0KdG8gYW4gYXRvbWljIGNoYWluIG5vdGZpZXIuDQoNClRoZSBMaW51eCBidWlsdC1pbiBzaGFy ZWQgSVJRIGlzIG5vdCB1c2VkIGJlY2F1c2UgaXQgZm9yY2VzIHRoZSBjYWxsZXINCnRvIGRpc2Fi bGUgdGhlIElSUSBhbmQgY2xlYXIgYWZmaW5pdHkgYmVmb3JlIGZyZWVfaXJxKCkgY2FuIGJlIGNh bGxlZC4NCg0KVGhpcyBwYXRjaCBpcyB0aGUgZmlyc3Qgc3RlcCBpbiB0aGUgc2VwYXJhdGlvbiBv ZiBJUlEgYW5kIEVRIGxvZ2ljLg0KDQpTaWduZWQtb2ZmLWJ5OiBZdXZhbCBBdm5lcnkgPHl1dmFs YXZAbWVsbGFub3guY29tPg0KUmV2aWV3ZWQtYnk6IFBhcmF2IFBhbmRpdCA8cGFyYXZAbWVsbGFu b3guY29tPg0KU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBtZWxsYW5veC5j b20+DQotLS0NCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmggICAgICAgICAg fCAgIDEgKw0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jICAgICAgICAgICAgICB8 ICAxMCArLQ0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jICB8 IDEzOCArKysrKysrKysrKy0tLS0tLS0NCiAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUv Y29yZS9saWIvZXEuaCAgfCAgIDkgKy0NCiBpbmNsdWRlL2xpbnV4L21seDUvZXEuaCAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDMgKy0NCiA1IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25z KCspLCA1NiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9o dy9tbHg1L21seDVfaWIuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaA0K aW5kZXggNDBlYjhiZTQ4MmU0Li5hMDQzYWY3ZWUzNjYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2lu ZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgNCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9t bHg1L21seDVfaWIuaA0KQEAgLTkyMCw2ICs5MjAsNyBAQCBzdHJ1Y3QgbWx4NV9pYl9sYl9zdGF0 ZSB7DQogfTsNCiANCiBzdHJ1Y3QgbWx4NV9pYl9wZl9lcSB7DQorCXN0cnVjdCBub3RpZmllcl9i bG9jayBpcnFfbmI7DQogCXN0cnVjdCBtbHg1X2liX2RldiAqZGV2Ow0KIAlzdHJ1Y3QgbWx4NV9l cSAqY29yZTsNCiAJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9v ZHAuYw0KaW5kZXggOTE1MDdhMmU5MjkwLi5hYzQwYTRmZDU1OTggMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYw0KKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3 L21seDUvb2RwLmMNCkBAIC0xNDg4LDkgKzE0ODgsMTEgQEAgc3RhdGljIHZvaWQgbWx4NV9pYl9l cV9wZl9wcm9jZXNzKHN0cnVjdCBtbHg1X2liX3BmX2VxICplcSkNCiAJbWx4NV9lcV91cGRhdGVf Y2koZXEtPmNvcmUsIGNjLCAxKTsNCiB9DQogDQotc3RhdGljIGlycXJldHVybl90IG1seDVfaWJf ZXFfcGZfaW50KGludCBpcnEsIHZvaWQgKmVxX3B0cikNCitzdGF0aWMgaW50IG1seDVfaWJfZXFf cGZfaW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgdHlwZSwNCisJ CQkgICAgIHZvaWQgKmRhdGEpDQogew0KLQlzdHJ1Y3QgbWx4NV9pYl9wZl9lcSAqZXEgPSBlcV9w dHI7DQorCXN0cnVjdCBtbHg1X2liX3BmX2VxICplcSA9DQorCQljb250YWluZXJfb2YobmIsIHN0 cnVjdCBtbHg1X2liX3BmX2VxLCBpcnFfbmIpOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0K IAlpZiAoc3Bpbl90cnlsb2NrX2lycXNhdmUoJmVxLT5sb2NrLCBmbGFncykpIHsNCkBAIC0xNTUz LDEyICsxNTU1LDEyIEBAIG1seDVfaWJfY3JlYXRlX3BmX2VxKHN0cnVjdCBtbHg1X2liX2RldiAq ZGV2LCBzdHJ1Y3QgbWx4NV9pYl9wZl9lcSAqZXEpDQogCQlnb3RvIGVycl9tZW1wb29sOw0KIAl9 DQogDQorCWVxLT5pcnFfbmIubm90aWZpZXJfY2FsbCA9IG1seDVfaWJfZXFfcGZfaW50Ow0KIAlw YXJhbSA9IChzdHJ1Y3QgbWx4NV9lcV9wYXJhbSkgew0KIAkJLmluZGV4ID0gTUxYNV9FUV9QRkFV TFRfSURYLA0KIAkJLm1hc2sgPSAxIDw8IE1MWDVfRVZFTlRfVFlQRV9QQUdFX0ZBVUxULA0KIAkJ Lm5lbnQgPSBNTFg1X0lCX05VTV9QRl9FUUUsDQotCQkuY29udGV4dCA9IGVxLA0KLQkJLmhhbmRs ZXIgPSBtbHg1X2liX2VxX3BmX2ludA0KKwkJLm5iID0gJmVxLT5pcnFfbmIsDQogCX07DQogCWVx LT5jb3JlID0gbWx4NV9lcV9jcmVhdGVfZ2VuZXJpYyhkZXYtPm1kZXYsICJtbHg1X2liX3BhZ2Vf ZmF1bHRfZXEiLCAmcGFyYW0pOw0KIAlpZiAoSVNfRVJSKGVxLT5jb3JlKSkgew0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lcS5jIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VxLmMNCmluZGV4IDI4ZGVmZWFjYTgw YS4uNTkwYzBmZWZhYTI1IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL2VxLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lcS5jDQpAQCAtNzIsMTYgKzcyLDE2IEBAIGVudW0gew0KIHN0YXRpY19hc3NlcnQo TUxYNV9FUV9QT0xMSU5HX0JVREdFVCA8PSBNTFg1X05VTV9TUEFSRV9FUUUpOw0KIA0KIHN0cnVj dCBtbHg1X2lycV9pbmZvIHsNCisJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIG5oOw0KIAlj cHVtYXNrX3Zhcl90IG1hc2s7DQogCWNoYXIgbmFtZVtNTFg1X01BWF9JUlFfTkFNRV07DQotCXZv aWQgKmNvbnRleHQ7IC8qIGRldl9pZCBwcm92aWRlZCB0byByZXF1ZXN0X2lycSAqLw0KIH07DQog DQogc3RydWN0IG1seDVfZXFfdGFibGUgew0KIAlzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBjb21w X2Vxc19saXN0Ow0KLQlzdHJ1Y3QgbWx4NV9lcSAgICAgICAgICBwYWdlc19lcTsNCi0Jc3RydWN0 IG1seDVfZXEJICAgICAgICBjbWRfZXE7DQotCXN0cnVjdCBtbHg1X2VxICAgICAgICAgIGFzeW5j X2VxOw0KKwlzdHJ1Y3QgbWx4NV9lcV9hc3luYyAgICBwYWdlc19lcTsNCisJc3RydWN0IG1seDVf ZXFfYXN5bmMgICAgY21kX2VxOw0KKwlzdHJ1Y3QgbWx4NV9lcV9hc3luYyAgICBhc3luY19lcTsN CiANCiAJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIG5oW01MWDVfRVZFTlRfVFlQRV9NQVhd Ow0KIA0KQEAgLTEwOSw2ICsxMDksMzEgQEAgc3RydWN0IG1seDVfZXFfdGFibGUgew0KIAkJCSAg ICAgICAoMXVsbCA8PCBNTFg1X0VWRU5UX1RZUEVfU1JRX0xBU1RfV1FFKQkgICAgfCBcDQogCQkJ ICAgICAgICgxdWxsIDw8IE1MWDVfRVZFTlRfVFlQRV9TUlFfUlFfTElNSVQpKQ0KIA0KK3N0YXRp YyBzdHJ1Y3QgbWx4NV9pcnFfaW5mbyAqbWx4NV9pcnFfZ2V0KHN0cnVjdCBtbHg1X2NvcmVfZGV2 ICpkZXYsIGludCB2ZWNpZHgpDQorew0KKwlzdHJ1Y3QgbWx4NV9lcV90YWJsZSAqZXFfdGFibGUg PSBkZXYtPnByaXYuZXFfdGFibGU7DQorDQorCXJldHVybiAmZXFfdGFibGUtPmlycV9pbmZvW3Zl Y2lkeF07DQorfQ0KKw0KK3N0YXRpYyBpbnQgbWx4NV9pcnFfYXR0YWNoX25iKHN0cnVjdCBtbHg1 X2lycV9pbmZvICppcnEsDQorCQkJICAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikNCit7 DQorCXJldHVybiBhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJmlycS0+bmgsIG5iKTsN Cit9DQorDQorc3RhdGljIGludCBtbHg1X2lycV9kZXRhY2hfbmIoc3RydWN0IG1seDVfaXJxX2lu Zm8gKmlycSwNCisJCQkgICAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQ0KK3sNCisJcmV0 dXJuIGF0b21pY19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZpcnEtPm5oLCBuYik7DQorfQ0K Kw0KK3N0YXRpYyBpcnFyZXR1cm5fdCBtbHg1X2lycV9pbnRfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICpuaCkNCit7DQorCWF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluKG5oLCAwLCBOVUxMKTsNCisJ cmV0dXJuIElSUV9IQU5ETEVEOw0KK30NCisNCiBzdGF0aWMgaW50IG1seDVfY21kX2Rlc3Ryb3lf ZXEoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTggZXFuKQ0KIHsNCiAJdTMyIG91dFtNTFg1 X1NUX1NaX0RXKGRlc3Ryb3lfZXFfb3V0KV0gPSB7MH07DQpAQCAtMTM0LDEwICsxNTksMTMgQEAg c3RhdGljIHN0cnVjdCBtbHg1X2NvcmVfY3EgKm1seDVfZXFfY3FfZ2V0KHN0cnVjdCBtbHg1X2Vx ICplcSwgdTMyIGNxbikNCiAJcmV0dXJuIGNxOw0KIH0NCiANCi1zdGF0aWMgaXJxcmV0dXJuX3Qg bWx4NV9lcV9jb21wX2ludChpbnQgaXJxLCB2b2lkICplcV9wdHIpDQorc3RhdGljIGludCBtbHg1 X2VxX2NvbXBfaW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsDQorCQkJICAgIF9fYWx3YXlz X3VudXNlZCB1bnNpZ25lZCBsb25nIGFjdGlvbiwNCisJCQkgICAgX19hbHdheXNfdW51c2VkIHZv aWQgKmRhdGEpDQogew0KLQlzdHJ1Y3QgbWx4NV9lcV9jb21wICplcV9jb21wID0gZXFfcHRyOw0K LQlzdHJ1Y3QgbWx4NV9lcSAqZXEgPSBlcV9wdHI7DQorCXN0cnVjdCBtbHg1X2VxX2NvbXAgKmVx X2NvbXAgPQ0KKwkJY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgbWx4NV9lcV9jb21wLCBpcnFfbmIp Ow0KKwlzdHJ1Y3QgbWx4NV9lcSAqZXEgPSAmZXFfY29tcC0+Y29yZTsNCiAJc3RydWN0IG1seDVf ZXFlICplcWU7DQogCWludCBudW1fZXFlcyA9IDA7DQogCXUzMiBjcW4gPSAtMTsNCkBAIC0xNzUs NyArMjAzLDcgQEAgc3RhdGljIGlycXJldHVybl90IG1seDVfZXFfY29tcF9pbnQoaW50IGlycSwg dm9pZCAqZXFfcHRyKQ0KIAlpZiAoY3FuICE9IC0xKQ0KIAkJdGFza2xldF9zY2hlZHVsZSgmZXFf Y29tcC0+dGFza2xldF9jdHgudGFzayk7DQogDQotCXJldHVybiBJUlFfSEFORExFRDsNCisJcmV0 dXJuIDA7DQogfQ0KIA0KIC8qIFNvbWUgYXJjaGl0ZWN0dXJlcyBkb24ndCBsYXRjaCBpbnRlcnJ1 cHRzIHdoZW4gdGhleSBhcmUgZGlzYWJsZWQsIHNvIHVzaW5nDQpAQCAtMTg5LDE2ICsyMTcsMTkg QEAgdTMyIG1seDVfZXFfcG9sbF9pcnFfZGlzYWJsZWQoc3RydWN0IG1seDVfZXFfY29tcCAqZXEp DQogDQogCWRpc2FibGVfaXJxKGVxLT5jb3JlLmlycW4pOw0KIAljb3VudF9lcWUgPSBlcS0+Y29y ZS5jb25zX2luZGV4Ow0KLQltbHg1X2VxX2NvbXBfaW50KGVxLT5jb3JlLmlycW4sIGVxKTsNCisJ bWx4NV9lcV9jb21wX2ludCgmZXEtPmlycV9uYiwgMCwgTlVMTCk7DQogCWNvdW50X2VxZSA9IGVx LT5jb3JlLmNvbnNfaW5kZXggLSBjb3VudF9lcWU7DQogCWVuYWJsZV9pcnEoZXEtPmNvcmUuaXJx bik7DQogDQogCXJldHVybiBjb3VudF9lcWU7DQogfQ0KIA0KLXN0YXRpYyBpcnFyZXR1cm5fdCBt bHg1X2VxX2FzeW5jX2ludChpbnQgaXJxLCB2b2lkICplcV9wdHIpDQorc3RhdGljIGludCBtbHg1 X2VxX2FzeW5jX2ludChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLA0KKwkJCSAgICAgdW5zaWdu ZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpDQogew0KLQlzdHJ1Y3QgbWx4NV9lcSAqZXEgPSBl cV9wdHI7DQorCXN0cnVjdCBtbHg1X2VxX2FzeW5jICplcV9hc3luYyA9DQorCQljb250YWluZXJf b2YobmIsIHN0cnVjdCBtbHg1X2VxX2FzeW5jLCBpcnFfbmIpOw0KKwlzdHJ1Y3QgbWx4NV9lcSAq ZXEgPSAmZXFfYXN5bmMtPmNvcmU7DQogCXN0cnVjdCBtbHg1X2VxX3RhYmxlICplcXQ7DQogCXN0 cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXY7DQogCXN0cnVjdCBtbHg1X2VxZSAqZXFlOw0KQEAgLTIz Miw3ICsyNjMsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbWx4NV9lcV9hc3luY19pbnQoaW50IGly cSwgdm9pZCAqZXFfcHRyKQ0KIG91dDoNCiAJZXFfdXBkYXRlX2NpKGVxLCAxKTsNCiANCi0JcmV0 dXJuIElSUV9IQU5ETEVEOw0KKwlyZXR1cm4gMDsNCiB9DQogDQogc3RhdGljIHZvaWQgaW5pdF9l cV9idWYoc3RydWN0IG1seDVfZXEgKmVxKQ0KQEAgLTI1NCw2ICsyODUsNyBAQCBjcmVhdGVfbWFw X2VxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSwgY29uc3Qg Y2hhciAqbmFtZSwNCiAJc3RydWN0IG1seDVfY3FfdGFibGUgKmNxX3RhYmxlID0gJmVxLT5jcV90 YWJsZTsNCiAJdTMyIG91dFtNTFg1X1NUX1NaX0RXKGNyZWF0ZV9lcV9vdXQpXSA9IHswfTsNCiAJ c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9ICZkZXYtPnByaXY7DQorCXN0cnVjdCBtbHg1X2lycV9p bmZvICppcnFfaW5mbzsNCiAJdTggdmVjaWR4ID0gcGFyYW0tPmluZGV4Ow0KIAlfX2JlNjQgKnBh czsNCiAJdm9pZCAqZXFjOw0KQEAgLTI2MSw5ICsyOTMsNiBAQCBjcmVhdGVfbWFwX2VxKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSwgY29uc3QgY2hhciAqbmFt ZSwNCiAJdTMyICppbjsNCiAJaW50IGVycjsNCiANCi0JaWYgKGVxX3RhYmxlLT5pcnFfaW5mb1t2 ZWNpZHhdLmNvbnRleHQpDQotCQlyZXR1cm4gLUVFWElTVDsNCi0NCiAJLyogSW5pdCBDUSB0YWJs ZSAqLw0KIAltZW1zZXQoY3FfdGFibGUsIDAsIHNpemVvZigqY3FfdGFibGUpKTsNCiAJc3Bpbl9s b2NrX2luaXQoJmNxX3RhYmxlLT5sb2NrKTsNCkBAIC0zMDYsMjQgKzMzNSwzMSBAQCBjcmVhdGVf bWFwX2VxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSwgY29u c3QgY2hhciAqbmFtZSwNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJyX2luOw0KIA0KLQlzbnByaW50 ZihlcV90YWJsZS0+aXJxX2luZm9bdmVjaWR4XS5uYW1lLCBNTFg1X01BWF9JUlFfTkFNRSwgIiVz QHBjaTolcyIsDQotCQkgbmFtZSwgcGNpX25hbWUoZGV2LT5wZGV2KSk7DQotCWVxX3RhYmxlLT5p cnFfaW5mb1t2ZWNpZHhdLmNvbnRleHQgPSBwYXJhbS0+Y29udGV4dDsNCisJaXJxX2luZm8gPSBt bHg1X2lycV9nZXQoZGV2LCB2ZWNpZHgpOw0KKwlBVE9NSUNfSU5JVF9OT1RJRklFUl9IRUFEKCZp cnFfaW5mby0+bmgpOw0KKwlzbnByaW50ZihpcnFfaW5mby0+bmFtZSwgTUxYNV9NQVhfSVJRX05B TUUsDQorCQkgIiVzQHBjaTolcyIsIG5hbWUsIHBjaV9uYW1lKGRldi0+cGRldikpOw0KIA0KIAll cS0+dmVjaWR4ID0gdmVjaWR4Ow0KIAllcS0+ZXFuID0gTUxYNV9HRVQoY3JlYXRlX2VxX291dCwg b3V0LCBlcV9udW1iZXIpOw0KIAllcS0+aXJxbiA9IHBjaV9pcnFfdmVjdG9yKGRldi0+cGRldiwg dmVjaWR4KTsNCiAJZXEtPmRldiA9IGRldjsNCiAJZXEtPmRvb3JiZWxsID0gcHJpdi0+dWFyLT5t YXAgKyBNTFg1X0VRX0RPT1JCRUxfT0ZGU0VUOw0KLQllcnIgPSByZXF1ZXN0X2lycShlcS0+aXJx biwgcGFyYW0tPmhhbmRsZXIsIDAsDQotCQkJICBlcV90YWJsZS0+aXJxX2luZm9bdmVjaWR4XS5u YW1lLCBwYXJhbS0+Y29udGV4dCk7DQorCWVxLT5pcnFfbmIgPSBwYXJhbS0+bmI7DQorDQorCWVy ciA9IHJlcXVlc3RfaXJxKGVxLT5pcnFuLCBtbHg1X2lycV9pbnRfaGFuZGxlciwgMCwgaXJxX2lu Zm8tPm5hbWUsDQorCQkJICAmaXJxX2luZm8tPm5oKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gZXJy X2VxOw0KIA0KLQllcnIgPSBtbHg1X2RlYnVnX2VxX2FkZChkZXYsIGVxKTsNCisJZXJyID0gbWx4 NV9pcnFfYXR0YWNoX25iKGlycV9pbmZvLCBwYXJhbS0+bmIpOw0KIAlpZiAoZXJyKQ0KIAkJZ290 byBlcnJfaXJxOw0KIA0KKwllcnIgPSBtbHg1X2RlYnVnX2VxX2FkZChkZXYsIGVxKTsNCisJaWYg KGVycikNCisJCWdvdG8gZXJyX2RldGFjaDsNCisNCiAJLyogRVFzIGFyZSBjcmVhdGVkIGluIEFS TUVEIHN0YXRlDQogCSAqLw0KIAllcV91cGRhdGVfY2koZXEsIDEpOw0KQEAgLTMzMSw4ICszNjcs MTEgQEAgY3JlYXRlX21hcF9lcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4 NV9lcSAqZXEsIGNvbnN0IGNoYXIgKm5hbWUsDQogCWt2ZnJlZShpbik7DQogCXJldHVybiAwOw0K IA0KK2Vycl9kZXRhY2g6DQorCW1seDVfaXJxX2RldGFjaF9uYihpcnFfaW5mbywgcGFyYW0tPm5i KTsNCisNCiBlcnJfaXJxOg0KLQlmcmVlX2lycShlcS0+aXJxbiwgZXEpOw0KKwlmcmVlX2lycShl cS0+aXJxbiwgJmVxX3RhYmxlLT5pcnFfaW5mb1t2ZWNpZHhdLm5oKTsNCiANCiBlcnJfZXE6DQog CW1seDVfY21kX2Rlc3Ryb3lfZXEoZGV2LCBlcS0+ZXFuKTsNCkBAIC0zNTUsOSArMzk0LDExIEBA IHN0YXRpYyBpbnQgZGVzdHJveV91bm1hcF9lcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBz dHJ1Y3QgbWx4NV9lcSAqZXEpDQogDQogCW1seDVfZGVidWdfZXFfcmVtb3ZlKGRldiwgZXEpOw0K IA0KLQlmcmVlX2lycShlcS0+aXJxbiwgaXJxX2luZm8tPmNvbnRleHQpOw0KLQlpcnFfaW5mby0+ Y29udGV4dCA9IE5VTEw7DQotDQorCWVyciA9IG1seDVfaXJxX2RldGFjaF9uYihpcnFfaW5mbywg ZXEtPmlycV9uYik7DQorCWlmIChlcnIpDQorCQltbHg1X2NvcmVfd2FybihlcS0+ZGV2LCAiZXEg ZmFpbGVkIHRvIGRldGFjaCBmcm9tIGlycS4gZXJyICVkIiwNCisJCQkgICAgICAgZXJyKTsNCisJ ZnJlZV9pcnEoZXEtPmlycW4sICZlcV90YWJsZS0+aXJxX2luZm9bZXEtPnZlY2lkeF0ubmgpOw0K IAllcnIgPSBtbHg1X2NtZF9kZXN0cm95X2VxKGRldiwgZXEtPmVxbik7DQogCWlmIChlcnIpDQog CQltbHg1X2NvcmVfd2FybihkZXYsICJmYWlsZWQgdG8gZGVzdHJveSBhIHByZXZpb3VzbHkgY3Jl YXRlZCBlcTogZXFuICVkXG4iLA0KQEAgLTQ3OSw3ICs1MjAsNyBAQCBzdGF0aWMgaW50IGNxX2Vy cl9ldmVudF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLA0KIAkvKiB0eXBlID09 IE1MWDVfRVZFTlRfVFlQRV9DUV9FUlJPUiAqLw0KIA0KIAllcXQgPSBtbHg1X25iX2NvZihuYiwg c3RydWN0IG1seDVfZXFfdGFibGUsIGNxX2Vycl9uYik7DQotCWVxICA9ICZlcXQtPmFzeW5jX2Vx Ow0KKwllcSAgPSAmZXF0LT5hc3luY19lcS5jb3JlOw0KIAllcWUgPSBkYXRhOw0KIA0KIAljcW4g PSBiZTMyX3RvX2NwdShlcWUtPmRhdGEuY3FfZXJyLmNxbikgJiAweGZmZmZmZjsNCkBAIC01NDgs MTQgKzU4OSwxNCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9hc3luY19lcXMoc3RydWN0IG1seDVfY29y ZV9kZXYgKmRldikNCiAJTUxYNV9OQl9JTklUKCZ0YWJsZS0+Y3FfZXJyX25iLCBjcV9lcnJfZXZl bnRfbm90aWZpZXIsIENRX0VSUk9SKTsNCiAJbWx4NV9lcV9ub3RpZmllcl9yZWdpc3RlcihkZXYs ICZ0YWJsZS0+Y3FfZXJyX25iKTsNCiANCisJdGFibGUtPmNtZF9lcS5pcnFfbmIubm90aWZpZXJf Y2FsbCA9IG1seDVfZXFfYXN5bmNfaW50Ow0KIAlwYXJhbSA9IChzdHJ1Y3QgbWx4NV9lcV9wYXJh bSkgew0KIAkJLmluZGV4ID0gTUxYNV9FUV9DTURfSURYLA0KIAkJLm1hc2sgPSAxdWxsIDw8IE1M WDVfRVZFTlRfVFlQRV9DTUQsDQogCQkubmVudCA9IE1MWDVfTlVNX0NNRF9FUUUsDQotCQkuY29u dGV4dCA9ICZ0YWJsZS0+Y21kX2VxLA0KLQkJLmhhbmRsZXIgPSBtbHg1X2VxX2FzeW5jX2ludCwN CisJCS5uYiA9ICZ0YWJsZS0+Y21kX2VxLmlycV9uYiwNCiAJfTsNCi0JZXJyID0gY3JlYXRlX2Fz eW5jX2VxKGRldiwgIm1seDVfY21kX2VxIiwgJnRhYmxlLT5jbWRfZXEsICZwYXJhbSk7DQorCWVy ciA9IGNyZWF0ZV9hc3luY19lcShkZXYsICJtbHg1X2NtZF9lcSIsICZ0YWJsZS0+Y21kX2VxLmNv cmUsICZwYXJhbSk7DQogCWlmIChlcnIpIHsNCiAJCW1seDVfY29yZV93YXJuKGRldiwgImZhaWxl ZCB0byBjcmVhdGUgY21kIEVRICVkXG4iLCBlcnIpOw0KIAkJZ290byBlcnIwOw0KQEAgLTU2Mywy NyArNjA0LDI5IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2FzeW5jX2VxcyhzdHJ1Y3QgbWx4NV9jb3Jl X2RldiAqZGV2KQ0KIA0KIAltbHg1X2NtZF91c2VfZXZlbnRzKGRldik7DQogDQorCXRhYmxlLT5h c3luY19lcS5pcnFfbmIubm90aWZpZXJfY2FsbCA9IG1seDVfZXFfYXN5bmNfaW50Ow0KIAlwYXJh bSA9IChzdHJ1Y3QgbWx4NV9lcV9wYXJhbSkgew0KIAkJLmluZGV4ID0gTUxYNV9FUV9BU1lOQ19J RFgsDQogCQkubWFzayA9IGdhdGhlcl9hc3luY19ldmVudHNfbWFzayhkZXYpLA0KIAkJLm5lbnQg PSBNTFg1X05VTV9BU1lOQ19FUUUsDQotCQkuY29udGV4dCA9ICZ0YWJsZS0+YXN5bmNfZXEsDQot CQkuaGFuZGxlciA9IG1seDVfZXFfYXN5bmNfaW50LA0KKwkJLm5iID0gJnRhYmxlLT5hc3luY19l cS5pcnFfbmIsDQogCX07DQotCWVyciA9IGNyZWF0ZV9hc3luY19lcShkZXYsICJtbHg1X2FzeW5j X2VxIiwgJnRhYmxlLT5hc3luY19lcSwgJnBhcmFtKTsNCisJZXJyID0gY3JlYXRlX2FzeW5jX2Vx KGRldiwgIm1seDVfYXN5bmNfZXEiLA0KKwkJCSAgICAgICZ0YWJsZS0+YXN5bmNfZXEuY29yZSwg JnBhcmFtKTsNCiAJaWYgKGVycikgew0KIAkJbWx4NV9jb3JlX3dhcm4oZGV2LCAiZmFpbGVkIHRv IGNyZWF0ZSBhc3luYyBFUSAlZFxuIiwgZXJyKTsNCiAJCWdvdG8gZXJyMTsNCiAJfQ0KIA0KKwl0 YWJsZS0+cGFnZXNfZXEuaXJxX25iLm5vdGlmaWVyX2NhbGwgPSBtbHg1X2VxX2FzeW5jX2ludDsN CiAJcGFyYW0gPSAoc3RydWN0IG1seDVfZXFfcGFyYW0pIHsNCiAJCS5pbmRleCA9IE1MWDVfRVFf UEFHRVJFUV9JRFgsDQogCQkubWFzayA9ICAxIDw8IE1MWDVfRVZFTlRfVFlQRV9QQUdFX1JFUVVF U1QsDQogCQkubmVudCA9IC8qIFRPRE86IHNyaW92IG1heF92ZiArICovIDEsDQotCQkuY29udGV4 dCA9ICZ0YWJsZS0+cGFnZXNfZXEsDQotCQkuaGFuZGxlciA9IG1seDVfZXFfYXN5bmNfaW50LA0K KwkJLm5iID0gJnRhYmxlLT5wYWdlc19lcS5pcnFfbmIsDQogCX07DQotCWVyciA9IGNyZWF0ZV9h c3luY19lcShkZXYsICJtbHg1X3BhZ2VzX2VxIiwgJnRhYmxlLT5wYWdlc19lcSwgJnBhcmFtKTsN CisJZXJyID0gY3JlYXRlX2FzeW5jX2VxKGRldiwgIm1seDVfcGFnZXNfZXEiLA0KKwkJCSAgICAg ICZ0YWJsZS0+cGFnZXNfZXEuY29yZSwgJnBhcmFtKTsNCiAJaWYgKGVycikgew0KIAkJbWx4NV9j b3JlX3dhcm4oZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBwYWdlcyBFUSAlZFxuIiwgZXJyKTsNCiAJ CWdvdG8gZXJyMjsNCkBAIC01OTIsMTEgKzYzNSwxMSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9hc3lu Y19lcXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldikNCiAJcmV0dXJuIGVycjsNCiANCiBlcnIy Og0KLQlkZXN0cm95X2FzeW5jX2VxKGRldiwgJnRhYmxlLT5hc3luY19lcSk7DQorCWRlc3Ryb3lf YXN5bmNfZXEoZGV2LCAmdGFibGUtPmFzeW5jX2VxLmNvcmUpOw0KIA0KIGVycjE6DQogCW1seDVf Y21kX3VzZV9wb2xsaW5nKGRldik7DQotCWRlc3Ryb3lfYXN5bmNfZXEoZGV2LCAmdGFibGUtPmNt ZF9lcSk7DQorCWRlc3Ryb3lfYXN5bmNfZXEoZGV2LCAmdGFibGUtPmNtZF9lcS5jb3JlKTsNCiBl cnIwOg0KIAltbHg1X2VxX25vdGlmaWVyX3VucmVnaXN0ZXIoZGV2LCAmdGFibGUtPmNxX2Vycl9u Yik7DQogCXJldHVybiBlcnI7DQpAQCAtNjA3LDE5ICs2NTAsMTkgQEAgc3RhdGljIHZvaWQgZGVz dHJveV9hc3luY19lcXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldikNCiAJc3RydWN0IG1seDVf ZXFfdGFibGUgKnRhYmxlID0gZGV2LT5wcml2LmVxX3RhYmxlOw0KIAlpbnQgZXJyOw0KIA0KLQll cnIgPSBkZXN0cm95X2FzeW5jX2VxKGRldiwgJnRhYmxlLT5wYWdlc19lcSk7DQorCWVyciA9IGRl c3Ryb3lfYXN5bmNfZXEoZGV2LCAmdGFibGUtPnBhZ2VzX2VxLmNvcmUpOw0KIAlpZiAoZXJyKQ0K IAkJbWx4NV9jb3JlX2VycihkZXYsICJmYWlsZWQgdG8gZGVzdHJveSBwYWdlcyBlcSwgZXJyKCVk KVxuIiwNCiAJCQkgICAgICBlcnIpOw0KIA0KLQllcnIgPSBkZXN0cm95X2FzeW5jX2VxKGRldiwg JnRhYmxlLT5hc3luY19lcSk7DQorCWVyciA9IGRlc3Ryb3lfYXN5bmNfZXEoZGV2LCAmdGFibGUt PmFzeW5jX2VxLmNvcmUpOw0KIAlpZiAoZXJyKQ0KIAkJbWx4NV9jb3JlX2VycihkZXYsICJmYWls ZWQgdG8gZGVzdHJveSBhc3luYyBlcSwgZXJyKCVkKVxuIiwNCiAJCQkgICAgICBlcnIpOw0KIA0K IAltbHg1X2NtZF91c2VfcG9sbGluZyhkZXYpOw0KIA0KLQllcnIgPSBkZXN0cm95X2FzeW5jX2Vx KGRldiwgJnRhYmxlLT5jbWRfZXEpOw0KKwllcnIgPSBkZXN0cm95X2FzeW5jX2VxKGRldiwgJnRh YmxlLT5jbWRfZXEuY29yZSk7DQogCWlmIChlcnIpDQogCQltbHg1X2NvcmVfZXJyKGRldiwgImZh aWxlZCB0byBkZXN0cm95IGNvbW1hbmQgZXEsIGVyciglZClcbiIsDQogCQkJICAgICAgZXJyKTsN CkBAIC02MjksMTcgKzY3MiwxNyBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2FzeW5jX2VxcyhzdHJ1 Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0KIA0KIHN0cnVjdCBtbHg1X2VxICptbHg1X2dldF9hc3lu Y19lcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0KIHsNCi0JcmV0dXJuICZkZXYtPnByaXYu ZXFfdGFibGUtPmFzeW5jX2VxOw0KKwlyZXR1cm4gJmRldi0+cHJpdi5lcV90YWJsZS0+YXN5bmNf ZXEuY29yZTsNCiB9DQogDQogdm9pZCBtbHg1X2VxX3N5bmNocm9uaXplX2FzeW5jX2lycShzdHJ1 Y3QgbWx4NV9jb3JlX2RldiAqZGV2KQ0KIHsNCi0Jc3luY2hyb25pemVfaXJxKGRldi0+cHJpdi5l cV90YWJsZS0+YXN5bmNfZXEuaXJxbik7DQorCXN5bmNocm9uaXplX2lycShkZXYtPnByaXYuZXFf dGFibGUtPmFzeW5jX2VxLmNvcmUuaXJxbik7DQogfQ0KIA0KIHZvaWQgbWx4NV9lcV9zeW5jaHJv bml6ZV9jbWRfaXJxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpDQogew0KLQlzeW5jaHJvbml6 ZV9pcnEoZGV2LT5wcml2LmVxX3RhYmxlLT5jbWRfZXEuaXJxbik7DQorCXN5bmNocm9uaXplX2ly cShkZXYtPnByaXYuZXFfdGFibGUtPmNtZF9lcS5jb3JlLmlycW4pOw0KIH0NCiANCiAvKiBHZW5l cmljIEVRIEFQSSBmb3IgbWx4NV9jb3JlIGNvbnN1bWVycw0KQEAgLTgzNywxMiArODgwLDEyIEBA IHN0YXRpYyBpbnQgY3JlYXRlX2NvbXBfZXFzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpDQog CQlpcnFfY3B1X3JtYXBfYWRkKHRhYmxlLT5ybWFwLCBwY2lfaXJxX3ZlY3RvcihkZXYtPnBkZXYs IHZlY2lkeCkpOw0KICNlbmRpZg0KIAkJc25wcmludGYobmFtZSwgTUxYNV9NQVhfSVJRX05BTUUs ICJtbHg1X2NvbXAlZCIsIGkpOw0KKwkJZXEtPmlycV9uYi5ub3RpZmllcl9jYWxsID0gbWx4NV9l cV9jb21wX2ludDsNCiAJCXBhcmFtID0gKHN0cnVjdCBtbHg1X2VxX3BhcmFtKSB7DQogCQkJLmlu ZGV4ID0gdmVjaWR4LA0KIAkJCS5tYXNrID0gMCwNCiAJCQkubmVudCA9IG5lbnQsDQotCQkJLmNv bnRleHQgPSAmZXEtPmNvcmUsDQotCQkJLmhhbmRsZXIgPSBtbHg1X2VxX2NvbXBfaW50DQorCQkJ Lm5iID0gJmVxLT5pcnFfbmIsDQogCQl9Ow0KIAkJZXJyID0gY3JlYXRlX21hcF9lcShkZXYsICZl cS0+Y29yZSwgbmFtZSwgJnBhcmFtKTsNCiAJCWlmIChlcnIpIHsNCkBAIC05NDAsMTAgKzk4Myw3 IEBAIHZvaWQgbWx4NV9jb3JlX2VxX2ZyZWVfaXJxcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2 KQ0KIAltdXRleF9sb2NrKCZ0YWJsZS0+bG9jayk7IC8qIHN5bmMgd2l0aCBjcmVhdGUvZGVzdHJv eV9hc3luY19lcSAqLw0KIAltYXhfZXFzID0gdGFibGUtPm51bV9jb21wX3ZlY3RvcnMgKyBNTFg1 X0VRX1ZFQ19DT01QX0JBU0U7DQogCWZvciAoaSA9IG1heF9lcXMgLSAxOyBpID49IDA7IGktLSkg ew0KLQkJaWYgKCF0YWJsZS0+aXJxX2luZm9baV0uY29udGV4dCkNCi0JCQljb250aW51ZTsNCi0J CWZyZWVfaXJxKHBjaV9pcnFfdmVjdG9yKGRldi0+cGRldiwgaSksIHRhYmxlLT5pcnFfaW5mb1tp XS5jb250ZXh0KTsNCi0JCXRhYmxlLT5pcnFfaW5mb1tpXS5jb250ZXh0ID0gTlVMTDsNCisJCWZy ZWVfaXJxKHBjaV9pcnFfdmVjdG9yKGRldi0+cGRldiwgaSksICZ0YWJsZS0+aXJxX2luZm9baV0u bmgpOw0KIAl9DQogCW11dGV4X3VubG9jaygmdGFibGUtPmxvY2spOw0KIAlwY2lfZnJlZV9pcnFf dmVjdG9ycyhkZXYtPnBkZXYpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9saWIvZXEuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9saWIvZXEuaA0KaW5kZXggYzBmYjZkNzJiNjk1Li5hZGJjMjI4YmQ1NWQgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2Vx LmgNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZXEu aA0KQEAgLTM0LDEwICszNCwxNyBAQCBzdHJ1Y3QgbWx4NV9lcSB7DQogCXU4ICAgICAgICAgICAg ICAgICAgICAgIGVxbjsNCiAJaW50ICAgICAgICAgICAgICAgICAgICAgbmVudDsNCiAJc3RydWN0 IG1seDVfcnNjX2RlYnVnICAgKmRiZzsNCisJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICAgKmlycV9u YjsgLyogRm9yIGRlc3Ryb3kgb25seSAqLw0KK307DQorDQorc3RydWN0IG1seDVfZXFfYXN5bmMg ew0KKwlzdHJ1Y3QgbWx4NV9lcSAgICAgICAgICBjb3JlOw0KKwlzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgICBpcnFfbmI7DQogfTsNCiANCiBzdHJ1Y3QgbWx4NV9lcV9jb21wIHsNCi0Jc3RydWN0IG1s eDVfZXEgICAgICAgICAgY29yZTsgLyogTXVzdCBiZSBmaXJzdCAqLw0KKwlzdHJ1Y3QgbWx4NV9l cSAgICAgICAgICBjb3JlOw0KKwlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgICBpcnFfbmI7DQogCXN0 cnVjdCBtbHg1X2VxX3Rhc2tsZXQgIHRhc2tsZXRfY3R4Ow0KIAlzdHJ1Y3QgbGlzdF9oZWFkICAg ICAgICBsaXN0Ow0KIH07DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2VxLmggYi9p bmNsdWRlL2xpbnV4L21seDUvZXEuaA0KaW5kZXggMDAwNDVjYzRlYTExLi43OTA5ZjFmZjE5N2Mg MTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L21seDUvZXEuaA0KKysrIGIvaW5jbHVkZS9saW51 eC9tbHg1L2VxLmgNCkBAIC0yNiw4ICsyNiw3IEBAIHN0cnVjdCBtbHg1X2VxX3BhcmFtIHsNCiAJ dTggICAgICAgICAgICAgaW5kZXg7DQogCWludCAgICAgICAgICAgIG5lbnQ7DQogCXU2NCAgICAg ICAgICAgIG1hc2s7DQotCXZvaWQgICAgICAgICAgKmNvbnRleHQ7DQotCWlycV9oYW5kbGVyX3Qg IGhhbmRsZXI7DQorCXN0cnVjdCBub3RpZmllcl9ibG9jayAqbmI7DQogfTsNCiANCiBzdHJ1Y3Qg bWx4NV9lcSAqDQotLSANCjIuMjEuMA0KDQo=