From mboxrd@z Thu Jan 1 00:00:00 1970 From: Saeed Mahameed Subject: [PATCH mlx5-next 14/18] net/mlx5: E-Switch, Consolidate eswitch function number of VFs Date: Fri, 28 Jun 2019 22:36:16 +0000 Message-ID: <20190628223516.9368-15-saeedm@mellanox.com> References: <20190628223516.9368-1-saeedm@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190628223516.9368-1-saeedm@mellanox.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org To: Saeed Mahameed , Leon Romanovsky Cc: "netdev@vger.kernel.org" , "linux-rdma@vger.kernel.org" , Bodong Wang List-Id: linux-rdma@vger.kernel.org RnJvbTogQm9kb25nIFdhbmcgPGJvZG9uZ0BtZWxsYW5veC5jb20+DQoNCkVuYWJsZWQgbnVtYmVy IG9mIFZGcyBpcyBrZXkgZm9yIGVzd2ljaCBtYW5hZ2VyIHRvIGRvIGZsb3cgc3RlZXJpbmcNCmlu aXRpYWxpemF0aW9uIGFuZCB2cG9ydCBjb25maWd1cmF0aW9ucy4gSG93ZXZlciwgdGhlIG51bWJl ciBvZg0KZW5hYmxlZCBWRnMgbWF5IGNvbWUgZnJvbSB0d28gc291cmNlcyBhcyBiZWxvdy4NCg0K UEY6IG51bSBvZiBWRnMgaXMgcHJvdmlkZWQgYnkgZW5hYmxlZCBTUi1JT1Ygb2YgaXRzZWxmLg0K RUNQRjogbnVtIG9mIFZGcyBpcyBwcm92aWRlZCBieSBlbmFibGVkIFNSLUlPViBmcm9tIGl0cyBw ZWVyIFBGLiBBbmQNCiAgICAgIFNSLUlPViBjYW4ndCBiZSBlbmFibGVkIGZyb20gRUNQRiBpdHNl bGYuDQoNCkN1cnJlbnQgZHJpdmVyIGhhbmRsZXMgdGhlIHR3byBjYXNlcyBpbiBkaWZmZXJlbnQg c3RhZ2VzIGFuZCBwYXNzaW5nDQp0aGUgbnVtYmVyIG9mIGVuYWJsZWQgVkZzIGFtb25nIGEgbGFy Z2Ugc2NvcGUgb2YgaW50ZXJuYWwgZnVuY3Rpb25zLg0KSXQgaXMgdXN1YWxseSBoYXJkIHRvIGZp bmQgb3V0IHdoZXJlIGlzIHRoZSByZWFsIG51bWJlciBvZiBWRnMgZnJvbQ0KZHVlIHRvIGxheWVy cyBvZiBhcmd1bWVudCBwYXNzLWluLg0KDQpUaGlzIHBhdGNoIGNvbnNvbGlkYXRlZCB0aGF0IG51 bWJlciBmcm9tIHRoZSBlbnRyeSBwb2ludCBvZiBkb2luZw0KZXN3aXRjaCBzZXR1cCwgYW5kIG1h aW50YWluZWQgYSBjb3B5IHNvIHRoYXQgZXN3aXRjaCBmdW5jdGlvbnMgY2FuDQpyZWZlciB0byBp dCBkaXJlY3RseS4NCg0KRXN3aXRjaCBkcml2ZXIgc2hhbGwgYWx3YXlzIHVzZSB0aGlzIG51bWJl ciB3aGVuIHJlZmVycmluZyB0byBlbmFibGVkDQpudW1iZXIgb2YgVkZzLCBkb24ndCB1c2Ugb3Ro ZXIgbnVtYmVycyBzdWNoIGFzIGZyb20gU1ItSU9WLg0KDQpTaWduZWQtb2ZmLWJ5OiBCb2Rvbmcg V2FuZyA8Ym9kb25nQG1lbGxhbm94LmNvbT4NClNpZ25lZC1vZmYtYnk6IFNhZWVkIE1haGFtZWVk IDxzYWVlZG1AbWVsbGFub3guY29tPg0KLS0tDQogLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZXN3aXRjaC5jIHwgIDM2ICsrKy0tDQogLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvZXN3aXRjaC5oIHwgIDEzICstDQogLi4uL21lbGxhbm94L21seDUvY29yZS9l c3dpdGNoX29mZmxvYWRzLmMgICAgIHwgMTI2ICsrKysrKysrLS0tLS0tLS0tLQ0KIC4uLi9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NyaW92LmMgICB8ICAgMyArLQ0KIDQgZmlsZXMg Y2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5jIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guYw0KaW5kZXggYjQy NTQwZTFiYTZlLi5iNGY5NmYwNGExOGIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5jDQpAQCAtMTcyOCwxMCArMTcyOCw5IEBAIGlu dCBtbHg1X2Vzd19xdWVyeV9mdW5jdGlvbnMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMy ICpvdXQsIGludCBvdXRsZW4pDQogLyogUHVibGljIEUtU3dpdGNoIEFQSSAqLw0KICNkZWZpbmUg RVNXX0FMTE9XRUQoZXN3KSAoKGVzdykgJiYgTUxYNV9FU1dJVENIX01BTkFHRVIoKGVzdyktPmRl dikpDQogDQotaW50IG1seDVfZXN3aXRjaF9lbmFibGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3 LCBpbnQgbnZmcywgaW50IG1vZGUpDQoraW50IG1seDVfZXN3aXRjaF9lbmFibGUoc3RydWN0IG1s eDVfZXN3aXRjaCAqZXN3LCBpbnQgbW9kZSkNCiB7DQogCXN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9y dDsNCi0JaW50IHRvdGFsX252cG9ydHMgPSAwOw0KIAlpbnQgZXJyOw0KIAlpbnQgaSwgZW5hYmxl ZF9ldmVudHM7DQogDQpAQCAtMTc0NywxMyArMTc0Niw2IEBAIGludCBtbHg1X2Vzd2l0Y2hfZW5h YmxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IG52ZnMsIGludCBtb2RlKQ0KIAlpZiAo IU1MWDVfQ0FQX0VTV19FR1JFU1NfQUNMKGVzdy0+ZGV2LCBmdF9zdXBwb3J0KSkNCiAJCWVzd193 YXJuKGVzdy0+ZGV2LCAiZW5ncmVzcyBBQ0wgaXMgbm90IHN1cHBvcnRlZCBieSBGV1xuIik7DQog DQotCWlmIChtb2RlID09IE1MWDVfRVNXSVRDSF9PRkZMT0FEUykgew0KLQkJaWYgKG1seDVfY29y ZV9pc19lY3BmX2Vzd19tYW5hZ2VyKGVzdy0+ZGV2KSkNCi0JCQl0b3RhbF9udnBvcnRzID0gZXN3 LT50b3RhbF92cG9ydHM7DQotCQllbHNlDQotCQkJdG90YWxfbnZwb3J0cyA9IG52ZnMgKyBNTFg1 X1NQRUNJQUxfVlBPUlRTKGVzdy0+ZGV2KTsNCi0JfQ0KLQ0KIAllc3ctPm1vZGUgPSBtb2RlOw0K IA0KIAltbHg1X2xhZ191cGRhdGUoZXN3LT5kZXYpOw0KQEAgLTE3NjUsNyArMTc1Nyw3IEBAIGlu dCBtbHg1X2Vzd2l0Y2hfZW5hYmxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IG52ZnMs IGludCBtb2RlKQ0KIAl9IGVsc2Ugew0KIAkJbWx4NV9yZWxvYWRfaW50ZXJmYWNlKGVzdy0+ZGV2 LCBNTFg1X0lOVEVSRkFDRV9QUk9UT0NPTF9FVEgpOw0KIAkJbWx4NV9yZWxvYWRfaW50ZXJmYWNl KGVzdy0+ZGV2LCBNTFg1X0lOVEVSRkFDRV9QUk9UT0NPTF9JQik7DQotCQllcnIgPSBlc3dfb2Zm bG9hZHNfaW5pdChlc3csIG52ZnMsIHRvdGFsX252cG9ydHMpOw0KKwkJZXJyID0gZXN3X29mZmxv YWRzX2luaXQoZXN3KTsNCiAJfQ0KIA0KIAlpZiAoZXJyKQ0KQEAgLTE3OTIsNyArMTc4NCw3IEBA IGludCBtbHg1X2Vzd2l0Y2hfZW5hYmxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IG52 ZnMsIGludCBtb2RlKQ0KIAl9DQogDQogCS8qIEVuYWJsZSBWRiB2cG9ydHMgKi8NCi0JbWx4NV9l c3dfZm9yX2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgbnZmcykNCisJbWx4NV9lc3dfZm9y X2VhY2hfdmZfdnBvcnQoZXN3LCBpLCB2cG9ydCwgZXN3LT5lc3dfZnVuY3MubnVtX3ZmcykNCiAJ CWVzd19lbmFibGVfdnBvcnQoZXN3LCB2cG9ydCwgZW5hYmxlZF9ldmVudHMpOw0KIA0KIAlpZiAo bW9kZSA9PSBNTFg1X0VTV0lUQ0hfTEVHQUNZKSB7DQpAQCAtMTgwMiw3ICsxNzk0LDcgQEAgaW50 IG1seDVfZXN3aXRjaF9lbmFibGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBpbnQgbnZmcywg aW50IG1vZGUpDQogDQogCWVzd19pbmZvKGVzdy0+ZGV2LCAiRW5hYmxlOiBtb2RlKCVzKSwgbnZm cyglZCksIGFjdGl2ZSB2cG9ydHMoJWQpXG4iLA0KIAkJIG1vZGUgPT0gTUxYNV9FU1dJVENIX0xF R0FDWSA/ICJMRUdBQ1kiIDogIk9GRkxPQURTIiwNCi0JCSBudmZzLCBlc3ctPmVuYWJsZWRfdnBv cnRzKTsNCisJCSBlc3ctPmVzd19mdW5jcy5udW1fdmZzLCBlc3ctPmVuYWJsZWRfdnBvcnRzKTsN CiANCiAJcmV0dXJuIDA7DQogDQpAQCAtMTgyOSw3ICsxODIxLDcgQEAgdm9pZCBtbHg1X2Vzd2l0 Y2hfZGlzYWJsZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpDQogDQogCWVzd19pbmZvKGVzdy0+ ZGV2LCAiRGlzYWJsZTogbW9kZSglcyksIG52ZnMoJWQpLCBhY3RpdmUgdnBvcnRzKCVkKVxuIiwN CiAJCSBlc3ctPm1vZGUgPT0gTUxYNV9FU1dJVENIX0xFR0FDWSA/ICJMRUdBQ1kiIDogIk9GRkxP QURTIiwNCi0JCSBlc3ctPmRldi0+cHJpdi5zcmlvdi5udW1fdmZzLCBlc3ctPmVuYWJsZWRfdnBv cnRzKTsNCisJCSBlc3ctPmVzd19mdW5jcy5udW1fdmZzLCBlc3ctPmVuYWJsZWRfdnBvcnRzKTsN CiANCiAJbWNfcHJvbWlzYyA9ICZlc3ctPm1jX3Byb21pc2M7DQogDQpAQCAtMjUxNSwzICsyNTA3 LDIxIEBAIGJvb2wgbWx4NV9lc3dfbXVsdGlwYXRoX3ByZXJlcShzdHJ1Y3QgbWx4NV9jb3JlX2Rl diAqZGV2MCwNCiAJcmV0dXJuIChkZXYwLT5wcml2LmVzd2l0Y2gtPm1vZGUgPT0gTUxYNV9FU1dJ VENIX09GRkxPQURTICYmDQogCQlkZXYxLT5wcml2LmVzd2l0Y2gtPm1vZGUgPT0gTUxYNV9FU1dJ VENIX09GRkxPQURTKTsNCiB9DQorDQordm9pZCBtbHg1X2Vzd2l0Y2hfdXBkYXRlX251bV9vZl92 ZnMoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBjb25zdCBpbnQgbnVtX3ZmcykNCit7DQorCXUz MiBvdXRbTUxYNV9TVF9TWl9EVyhxdWVyeV9lc3dfZnVuY3Rpb25zX291dCldID0ge307DQorCWlu dCBlcnI7DQorDQorCVdBUk5fT05fT05DRShlc3ctPm1vZGUgIT0gTUxYNV9FU1dJVENIX05PTkUp Ow0KKw0KKwlpZiAoIW1seDVfY29yZV9pc19lY3BmX2Vzd19tYW5hZ2VyKGVzdy0+ZGV2KSkgew0K KwkJZXN3LT5lc3dfZnVuY3MubnVtX3ZmcyA9IG51bV92ZnM7DQorCQlyZXR1cm47DQorCX0NCisN CisJZXJyID0gbWx4NV9lc3dfcXVlcnlfZnVuY3Rpb25zKGVzdy0+ZGV2LCBvdXQsIHNpemVvZihv dXQpKTsNCisJaWYgKCFlcnIpDQorCQllc3ctPmVzd19mdW5jcy5udW1fdmZzID0gTUxYNV9HRVQo cXVlcnlfZXN3X2Z1bmN0aW9uc19vdXQsIG91dCwNCisJCQkJCQkgIGhvc3RfcGFyYW1zX2NvbnRl eHQuaG9zdF9udW1fb2ZfdmZzKTsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lc3dpdGNoLmgNCmluZGV4IDI3M2ExNzI0MzI3NS4uNzQ0MzUyYmFm NDM0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2Vzd2l0Y2guaA0KKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2Vzd2l0Y2guaA0KQEAgLTIzMSw4ICsyMzEsNyBAQCBzdHJ1Y3QgbWx4NV9lc3dpdGNoIHsNCiB9 Ow0KIA0KIHZvaWQgZXN3X29mZmxvYWRzX2NsZWFudXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3 KTsNCi1pbnQgZXN3X29mZmxvYWRzX2luaXQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBpbnQg dmZfbnZwb3J0cywNCi0JCSAgICAgIGludCB0b3RhbF9udnBvcnRzKTsNCitpbnQgZXN3X29mZmxv YWRzX2luaXQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KTsNCiB2b2lkIGVzd19vZmZsb2Fkc19j bGVhbnVwX3JlcHMoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KTsNCiBpbnQgZXN3X29mZmxvYWRz X2luaXRfcmVwcyhzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpOw0KIHZvaWQgZXN3X3Zwb3J0X2Ns ZWFudXBfaW5ncmVzc19ydWxlcyhzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csDQpAQCAtMjUzLDcg KzI1Miw3IEBAIHZvaWQgZXN3X3Zwb3J0X2RlbF9pbmdyZXNzX2FjbF9tb2RpZnlfbWV0YWRhdGEo c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LA0KIC8qIEUtU3dpdGNoIEFQSSAqLw0KIGludCBtbHg1 X2Vzd2l0Y2hfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTsNCiB2b2lkIG1seDVfZXN3 aXRjaF9jbGVhbnVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyk7DQotaW50IG1seDVfZXN3aXRj aF9lbmFibGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBpbnQgbnZmcywgaW50IG1vZGUpOw0K K2ludCBtbHg1X2Vzd2l0Y2hfZW5hYmxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IG1v ZGUpOw0KIHZvaWQgbWx4NV9lc3dpdGNoX2Rpc2FibGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3 KTsNCiBpbnQgbWx4NV9lc3dpdGNoX3NldF92cG9ydF9tYWMoc3RydWN0IG1seDVfZXN3aXRjaCAq ZXN3LA0KIAkJCSAgICAgICBpbnQgdnBvcnQsIHU4IG1hY1tFVEhfQUxFTl0pOw0KQEAgLTM3MCw3 ICszNjksNyBAQCBpbnQgbWx4NV9kZXZsaW5rX2Vzd2l0Y2hfbW9kZV9nZXQoc3RydWN0IGRldmxp bmsgKmRldmxpbmssIHUxNiAqbW9kZSk7DQogaW50IG1seDVfZGV2bGlua19lc3dpdGNoX2lubGlu ZV9tb2RlX3NldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgdTggbW9kZSwNCiAJCQkJCSBzdHJ1 Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOw0KIGludCBtbHg1X2RldmxpbmtfZXN3aXRjaF9p bmxpbmVfbW9kZV9nZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHU4ICptb2RlKTsNCi1pbnQg bWx4NV9lc3dpdGNoX2lubGluZV9tb2RlX2dldChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGlu dCBudmZzLCB1OCAqbW9kZSk7DQoraW50IG1seDVfZXN3aXRjaF9pbmxpbmVfbW9kZV9nZXQoc3Ry dWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1OCAqbW9kZSk7DQogaW50IG1seDVfZGV2bGlua19lc3dp dGNoX2VuY2FwX21vZGVfc2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLA0KIAkJCQkJZW51bSBk ZXZsaW5rX2Vzd2l0Y2hfZW5jYXBfbW9kZSBlbmNhcCwNCiAJCQkJCXN0cnVjdCBuZXRsaW5rX2V4 dF9hY2sgKmV4dGFjayk7DQpAQCAtNTI0LDExICs1MjMsMTMgQEAgbWx4NV9lc3dpdGNoX2dldF92 cG9ydChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHUxNiB2cG9ydF9udW0pOw0KIA0KIGJvb2wg bWx4NV9lc3dpdGNoX2lzX3ZmX3Zwb3J0KGNvbnN0IHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywg dTE2IHZwb3J0X251bSk7DQogDQordm9pZCBtbHg1X2Vzd2l0Y2hfdXBkYXRlX251bV9vZl92ZnMo c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBjb25zdCBpbnQgbnVtX3Zmcyk7DQorDQogI2Vsc2Ug IC8qIENPTkZJR19NTFg1X0VTV0lUQ0ggKi8NCiAvKiBlc3dpdGNoIEFQSSBzdHVicyAqLw0KIHN0 YXRpYyBpbmxpbmUgaW50ICBtbHg1X2Vzd2l0Y2hfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAq ZGV2KSB7IHJldHVybiAwOyB9DQogc3RhdGljIGlubGluZSB2b2lkIG1seDVfZXN3aXRjaF9jbGVh bnVwKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdykge30NCi1zdGF0aWMgaW5saW5lIGludCAgbWx4 NV9lc3dpdGNoX2VuYWJsZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGludCBudmZzLCBpbnQg bW9kZSkgeyByZXR1cm4gMDsgfQ0KK3N0YXRpYyBpbmxpbmUgaW50ICBtbHg1X2Vzd2l0Y2hfZW5h YmxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IG1vZGUpIHsgcmV0dXJuIDA7IH0NCiBz dGF0aWMgaW5saW5lIHZvaWQgbWx4NV9lc3dpdGNoX2Rpc2FibGUoc3RydWN0IG1seDVfZXN3aXRj aCAqZXN3KSB7fQ0KIHN0YXRpYyBpbmxpbmUgYm9vbCBtbHg1X2Vzd19sYWdfcHJlcmVxKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICpkZXYwLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2MSkgeyByZXR1 cm4gdHJ1ZTsgfQ0KIHN0YXRpYyBpbmxpbmUgYm9vbCBtbHg1X2Vzd2l0Y2hfaXNfZnVuY3NfaGFu ZGxlcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KSB7IHJldHVybiBmYWxzZTsgfQ0KQEAgLTUz OCw2ICs1MzksOCBAQCBtbHg1X2Vzd19xdWVyeV9mdW5jdGlvbnMoc3RydWN0IG1seDVfY29yZV9k ZXYgKmRldiwgdTMyICpvdXQsIGludCBvdXRsZW4pDQogCXJldHVybiAtRU9QTk9UU1VQUDsNCiB9 DQogDQorc3RhdGljIGlubGluZSB2b2lkIG1seDVfZXN3aXRjaF91cGRhdGVfbnVtX29mX3Zmcyhz dHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGNvbnN0IGludCBudW1fdmZzKSB7fQ0KKw0KICNkZWZp bmUgRkRCX01BWF9DSEFJTiAxDQogI2RlZmluZSBGREJfU0xPV19QQVRIX0NIQUlOIChGREJfTUFY X0NIQUlOICsgMSkNCiAjZGVmaW5lIEZEQl9NQVhfUFJJTyAxDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmMN CmluZGV4IGExYmVhZGExY2RiZi4uODAxMGU0ZWFiYTlhIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYw0KKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMu Yw0KQEAgLTEzNTYsNyArMTM1Niw3IEBAIG1seDVfZXN3aXRjaF9jcmVhdGVfdnBvcnRfcnhfcnVs ZShzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGludCB2cG9ydCwNCiBzdGF0aWMgaW50IGVzd19v ZmZsb2Fkc19zdGFydChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csDQogCQkJICAgICAgc3RydWN0 IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQ0KIHsNCi0JaW50IGVyciwgZXJyMSwgbnVtX3ZmcyA9 IGVzdy0+ZGV2LT5wcml2LnNyaW92Lm51bV92ZnM7DQorCWludCBlcnIsIGVycjE7DQogDQogCWlm IChlc3ctPm1vZGUgIT0gTUxYNV9FU1dJVENIX0xFR0FDWSAmJg0KIAkgICAgIW1seDVfY29yZV9p c19lY3BmX2Vzd19tYW5hZ2VyKGVzdy0+ZGV2KSkgew0KQEAgLTEzNjYsMTEgKzEzNjYsMTIgQEAg c3RhdGljIGludCBlc3dfb2ZmbG9hZHNfc3RhcnQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LA0K IAl9DQogDQogCW1seDVfZXN3aXRjaF9kaXNhYmxlKGVzdyk7DQotCWVyciA9IG1seDVfZXN3aXRj aF9lbmFibGUoZXN3LCBudW1fdmZzLCBNTFg1X0VTV0lUQ0hfT0ZGTE9BRFMpOw0KKwltbHg1X2Vz d2l0Y2hfdXBkYXRlX251bV9vZl92ZnMoZXN3LCBlc3ctPmRldi0+cHJpdi5zcmlvdi5udW1fdmZz KTsNCisJZXJyID0gbWx4NV9lc3dpdGNoX2VuYWJsZShlc3csIE1MWDVfRVNXSVRDSF9PRkZMT0FE Uyk7DQogCWlmIChlcnIpIHsNCiAJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssDQogCQkJCSAg ICJGYWlsZWQgc2V0dGluZyBlc3dpdGNoIHRvIG9mZmxvYWRzIik7DQotCQllcnIxID0gbWx4NV9l c3dpdGNoX2VuYWJsZShlc3csIG51bV92ZnMsIE1MWDVfRVNXSVRDSF9MRUdBQ1kpOw0KKwkJZXJy MSA9IG1seDVfZXN3aXRjaF9lbmFibGUoZXN3LCBNTFg1X0VTV0lUQ0hfTEVHQUNZKTsNCiAJCWlm IChlcnIxKSB7DQogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywNCiAJCQkJCSAgICJGYWls ZWQgc2V0dGluZyBlc3dpdGNoIGJhY2sgdG8gbGVnYWN5Iik7DQpAQCAtMTM3OCw3ICsxMzc5LDYg QEAgc3RhdGljIGludCBlc3dfb2ZmbG9hZHNfc3RhcnQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3 LA0KIAl9DQogCWlmIChlc3ctPm9mZmxvYWRzLmlubGluZV9tb2RlID09IE1MWDVfSU5MSU5FX01P REVfTk9ORSkgew0KIAkJaWYgKG1seDVfZXN3aXRjaF9pbmxpbmVfbW9kZV9nZXQoZXN3LA0KLQkJ CQkJCSBudW1fdmZzLA0KIAkJCQkJCSAmZXN3LT5vZmZsb2Fkcy5pbmxpbmVfbW9kZSkpIHsNCiAJ CQllc3ctPm9mZmxvYWRzLmlubGluZV9tb2RlID0gTUxYNV9JTkxJTkVfTU9ERV9MMjsNCiAJCQlO TF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLA0KQEAgLTE0NjYsMjEgKzE0NjYsMjAgQEAgc3RhdGlj IHZvaWQgZXN3X29mZmxvYWRzX3VubG9hZF92Zl9yZXBzKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVz dywgaW50IG52cG9ydHMpDQogCQlfX3VubG9hZF9yZXBzX3ZmX3Zwb3J0KGVzdywgbnZwb3J0cywg cmVwX3R5cGUpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBfX3VubG9hZF9yZXBzX2FsbF92cG9ydChz dHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGludCBudnBvcnRzLA0KLQkJCQkgICAgdTggcmVwX3R5 cGUpDQorc3RhdGljIHZvaWQgX191bmxvYWRfcmVwc19hbGxfdnBvcnQoc3RydWN0IG1seDVfZXN3 aXRjaCAqZXN3LCB1OCByZXBfdHlwZSkNCiB7DQotCV9fdW5sb2FkX3JlcHNfdmZfdnBvcnQoZXN3 LCBudnBvcnRzLCByZXBfdHlwZSk7DQorCV9fdW5sb2FkX3JlcHNfdmZfdnBvcnQoZXN3LCBlc3ct PmVzd19mdW5jcy5udW1fdmZzLCByZXBfdHlwZSk7DQogDQogCS8qIFNwZWNpYWwgdnBvcnRzIG11 c3QgYmUgdGhlIGxhc3QgdG8gdW5sb2FkLiAqLw0KIAlfX3VubG9hZF9yZXBzX3NwZWNpYWxfdnBv cnQoZXN3LCByZXBfdHlwZSk7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIGVzd19vZmZsb2Fkc191bmxv YWRfYWxsX3JlcHMoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBpbnQgbnZwb3J0cykNCitzdGF0 aWMgdm9pZCBlc3dfb2ZmbG9hZHNfdW5sb2FkX2FsbF9yZXBzKHN0cnVjdCBtbHg1X2Vzd2l0Y2gg KmVzdykNCiB7DQogCXU4IHJlcF90eXBlID0gTlVNX1JFUF9UWVBFUzsNCiANCiAJd2hpbGUgKHJl cF90eXBlLS0gPiAwKQ0KLQkJX191bmxvYWRfcmVwc19hbGxfdnBvcnQoZXN3LCBudnBvcnRzLCBy ZXBfdHlwZSk7DQorCQlfX3VubG9hZF9yZXBzX2FsbF92cG9ydChlc3csIHJlcF90eXBlKTsNCiB9 DQogDQogc3RhdGljIGludCBfX2Vzd19vZmZsb2Fkc19sb2FkX3JlcChzdHJ1Y3QgbWx4NV9lc3dp dGNoICplc3csDQpAQCAtMTU1Niw2ICsxNTU1LDI2IEBAIHN0YXRpYyBpbnQgX19sb2FkX3JlcHNf dmZfdnBvcnQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBpbnQgbnZwb3J0cywNCiAJcmV0dXJu IGVycjsNCiB9DQogDQorc3RhdGljIGludCBfX2xvYWRfcmVwc19hbGxfdnBvcnQoc3RydWN0IG1s eDVfZXN3aXRjaCAqZXN3LCB1OCByZXBfdHlwZSkNCit7DQorCWludCBlcnI7DQorDQorCS8qIFNw ZWNpYWwgdnBvcnRzIG11c3QgYmUgbG9hZGVkIGZpcnN0LCB1cGxpbmsgcmVwIGNyZWF0ZXMgbWRl diByZXNvdXJjZS4gKi8NCisJZXJyID0gX19sb2FkX3JlcHNfc3BlY2lhbF92cG9ydChlc3csIHJl cF90eXBlKTsNCisJaWYgKGVycikNCisJCXJldHVybiBlcnI7DQorDQorCWVyciA9IF9fbG9hZF9y ZXBzX3ZmX3Zwb3J0KGVzdywgZXN3LT5lc3dfZnVuY3MubnVtX3ZmcywgcmVwX3R5cGUpOw0KKwlp ZiAoZXJyKQ0KKwkJZ290byBlcnJfdmZzOw0KKw0KKwlyZXR1cm4gMDsNCisNCitlcnJfdmZzOg0K KwlfX3VubG9hZF9yZXBzX3NwZWNpYWxfdnBvcnQoZXN3LCByZXBfdHlwZSk7DQorCXJldHVybiBl cnI7DQorfQ0KKw0KIHN0YXRpYyBpbnQgZXN3X29mZmxvYWRzX2xvYWRfdmZfcmVwcyhzdHJ1Y3Qg bWx4NV9lc3dpdGNoICplc3csIGludCBudnBvcnRzKQ0KIHsNCiAJdTggcmVwX3R5cGUgPSAwOw0K QEAgLTE1NzUsMTMgKzE1OTQsMTMgQEAgc3RhdGljIGludCBlc3dfb2ZmbG9hZHNfbG9hZF92Zl9y ZXBzKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IG52cG9ydHMpDQogCXJldHVybiBlcnI7 DQogfQ0KIA0KLXN0YXRpYyBpbnQgZXN3X29mZmxvYWRzX2xvYWRfc3BlY2lhbF92cG9ydChzdHJ1 Y3QgbWx4NV9lc3dpdGNoICplc3cpDQorc3RhdGljIGludCBlc3dfb2ZmbG9hZHNfbG9hZF9hbGxf cmVwcyhzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpDQogew0KIAl1OCByZXBfdHlwZSA9IDA7DQog CWludCBlcnI7DQogDQogCWZvciAocmVwX3R5cGUgPSAwOyByZXBfdHlwZSA8IE5VTV9SRVBfVFlQ RVM7IHJlcF90eXBlKyspIHsNCi0JCWVyciA9IF9fbG9hZF9yZXBzX3NwZWNpYWxfdnBvcnQoZXN3 LCByZXBfdHlwZSk7DQorCQllcnIgPSBfX2xvYWRfcmVwc19hbGxfdnBvcnQoZXN3LCByZXBfdHlw ZSk7DQogCQlpZiAoZXJyKQ0KIAkJCWdvdG8gZXJyX3JlcHM7DQogCX0NCkBAIC0xNTkwLDcgKzE2 MDksNyBAQCBzdGF0aWMgaW50IGVzd19vZmZsb2Fkc19sb2FkX3NwZWNpYWxfdnBvcnQoc3RydWN0 IG1seDVfZXN3aXRjaCAqZXN3KQ0KIA0KIGVycl9yZXBzOg0KIAl3aGlsZSAocmVwX3R5cGUtLSA+ IDApDQotCQlfX3VubG9hZF9yZXBzX3NwZWNpYWxfdnBvcnQoZXN3LCByZXBfdHlwZSk7DQorCQlf X3VubG9hZF9yZXBzX2FsbF92cG9ydChlc3csIHJlcF90eXBlKTsNCiAJcmV0dXJuIGVycjsNCiB9 DQogDQpAQCAtMTk3NiwxMCArMTk5NSwxNyBAQCBzdGF0aWMgdm9pZCBlc3dfZGVzdHJveV9vZmZs b2Fkc19hY2xfdGFibGVzKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdykNCiAJZXN3LT5mbGFncyAm PSB+TUxYNV9FU1dJVENIX1ZQT1JUX01BVENIX01FVEFEQVRBOw0KIH0NCiANCi1zdGF0aWMgaW50 IGVzd19vZmZsb2Fkc19zdGVlcmluZ19pbml0KHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50 IG52cG9ydHMpDQorc3RhdGljIGludCBlc3dfb2ZmbG9hZHNfc3RlZXJpbmdfaW5pdChzdHJ1Y3Qg bWx4NV9lc3dpdGNoICplc3cpDQogew0KKwlpbnQgbnVtX3ZmcyA9IGVzdy0+ZXN3X2Z1bmNzLm51 bV92ZnM7DQorCWludCB0b3RhbF92cG9ydHM7DQogCWludCBlcnI7DQogDQorCWlmIChtbHg1X2Nv cmVfaXNfZWNwZl9lc3dfbWFuYWdlcihlc3ctPmRldikpDQorCQl0b3RhbF92cG9ydHMgPSBlc3ct PnRvdGFsX3Zwb3J0czsNCisJZWxzZQ0KKwkJdG90YWxfdnBvcnRzID0gbnVtX3ZmcyArIE1MWDVf U1BFQ0lBTF9WUE9SVFMoZXN3LT5kZXYpOw0KKw0KIAltZW1zZXQoJmVzdy0+ZmRiX3RhYmxlLm9m ZmxvYWRzLCAwLCBzaXplb2Yoc3RydWN0IG9mZmxvYWRzX2ZkYikpOw0KIAltdXRleF9pbml0KCZl c3ctPmZkYl90YWJsZS5vZmZsb2Fkcy5mZGJfcHJpb19sb2NrKTsNCiANCkBAIC0xOTg3LDE1ICsy MDEzLDE1IEBAIHN0YXRpYyBpbnQgZXN3X29mZmxvYWRzX3N0ZWVyaW5nX2luaXQoc3RydWN0IG1s eDVfZXN3aXRjaCAqZXN3LCBpbnQgbnZwb3J0cykNCiAJaWYgKGVycikNCiAJCXJldHVybiBlcnI7 DQogDQotCWVyciA9IGVzd19jcmVhdGVfb2ZmbG9hZHNfZmRiX3RhYmxlcyhlc3csIG52cG9ydHMp Ow0KKwllcnIgPSBlc3dfY3JlYXRlX29mZmxvYWRzX2ZkYl90YWJsZXMoZXN3LCB0b3RhbF92cG9y dHMpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBjcmVhdGVfZmRiX2VycjsNCiANCi0JZXJyID0gZXN3 X2NyZWF0ZV9vZmZsb2Fkc190YWJsZShlc3csIG52cG9ydHMpOw0KKwllcnIgPSBlc3dfY3JlYXRl X29mZmxvYWRzX3RhYmxlKGVzdywgdG90YWxfdnBvcnRzKTsNCiAJaWYgKGVycikNCiAJCWdvdG8g Y3JlYXRlX2Z0X2VycjsNCiANCi0JZXJyID0gZXN3X2NyZWF0ZV92cG9ydF9yeF9ncm91cChlc3cs IG52cG9ydHMpOw0KKwllcnIgPSBlc3dfY3JlYXRlX3Zwb3J0X3J4X2dyb3VwKGVzdywgdG90YWxf dnBvcnRzKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gY3JlYXRlX2ZnX2VycjsNCiANCkBAIC0yMDU3 LDIzICsyMDgzLDkgQEAgc3RhdGljIHZvaWQgZXN3X2Z1bmN0aW9uc19jaGFuZ2VkX2V2ZW50X2hh bmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KIAlrZnJlZShob3N0X3dvcmspOw0KIH0N CiANCi1zdGF0aWMgdm9pZCBlc3dfZW11bGF0ZV9ldmVudF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykNCi17DQotCXN0cnVjdCBtbHg1X2hvc3Rfd29yayAqaG9zdF93b3JrID0NCi0J CWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWx4NV9ob3N0X3dvcmssIHdvcmspOw0KLQlzdHJ1 Y3QgbWx4NV9lc3dpdGNoICplc3cgPSBob3N0X3dvcmstPmVzdzsNCi0JaW50IGVycjsNCiANCi0J aWYgKGVzdy0+ZXN3X2Z1bmNzLm51bV92ZnMpIHsNCi0JCWVyciA9IGVzd19vZmZsb2Fkc19sb2Fk X3ZmX3JlcHMoZXN3LCBlc3ctPmVzd19mdW5jcy5udW1fdmZzKTsNCi0JCWlmIChlcnIpDQotCQkJ ZXN3X3dhcm4oZXN3LT5kZXYsICJMb2FkIHZmIHJlcHMgZXJyPSVkXG4iLCBlcnIpOw0KLQl9DQot CWtmcmVlKGhvc3Rfd29yayk7DQotfQ0KLQ0KLXN0YXRpYyBpbnQgZXN3X2Z1bmN0aW9uc19jaGFu Z2VkX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsDQotCQkJCSAgICAgICB1bnNpZ25l ZCBsb25nIHR5cGUsIHZvaWQgKmRhdGEpDQorc3RhdGljIGludA0KK2Vzd19mdW5jdGlvbnNfY2hh bmdlZF9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIHR5cGUs IHZvaWQgKmRhdGEpDQogew0KIAlzdHJ1Y3QgbWx4NV9lc3dfZnVuY3Rpb25zICplc3dfZnVuY3M7 DQogCXN0cnVjdCBtbHg1X2hvc3Rfd29yayAqaG9zdF93b3JrOw0KQEAgLTIwODgsMjYgKzIxMDAs MTggQEAgc3RhdGljIGludCBlc3dfZnVuY3Rpb25zX2NoYW5nZWRfZXZlbnQoc3RydWN0IG5vdGlm aWVyX2Jsb2NrICpuYiwNCiANCiAJaG9zdF93b3JrLT5lc3cgPSBlc3c7DQogDQotCWlmIChtbHg1 X2Vzd2l0Y2hfaXNfZnVuY3NfaGFuZGxlcihlc3ctPmRldikpDQotCQlJTklUX1dPUksoJmhvc3Rf d29yay0+d29yaywNCi0JCQkgIGVzd19mdW5jdGlvbnNfY2hhbmdlZF9ldmVudF9oYW5kbGVyKTsN Ci0JZWxzZQ0KLQkJSU5JVF9XT1JLKCZob3N0X3dvcmstPndvcmssIGVzd19lbXVsYXRlX2V2ZW50 X2hhbmRsZXIpOw0KKwlJTklUX1dPUksoJmhvc3Rfd29yay0+d29yaywgZXN3X2Z1bmN0aW9uc19j aGFuZ2VkX2V2ZW50X2hhbmRsZXIpOw0KIAlxdWV1ZV93b3JrKGVzdy0+d29ya19xdWV1ZSwgJmhv c3Rfd29yay0+d29yayk7DQogDQogCXJldHVybiBOT1RJRllfT0s7DQogfQ0KIA0KLXN0YXRpYyB2 b2lkIGVzd19mdW5jdGlvbnNfY2hhbmdlZF9ldmVudF9pbml0KHN0cnVjdCBtbHg1X2Vzd2l0Y2gg KmVzdywNCi0JCQkJCSAgICAgdTE2IHZmX252cG9ydHMpDQorc3RhdGljIHZvaWQgZXN3X2Z1bmN0 aW9uc19jaGFuZ2VkX2V2ZW50X2luaXQoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQ0KIHsNCiAJ aWYgKG1seDVfZXN3aXRjaF9pc19mdW5jc19oYW5kbGVyKGVzdy0+ZGV2KSkgew0KLQkJZXN3LT5l c3dfZnVuY3MubnVtX3ZmcyA9IDA7DQogCQlNTFg1X05CX0lOSVQoJmVzdy0+ZXN3X2Z1bmNzLm5i LCBlc3dfZnVuY3Rpb25zX2NoYW5nZWRfZXZlbnQsDQogCQkJICAgICBFU1dfRlVOQ1RJT05TX0NI QU5HRUQpOw0KIAkJbWx4NV9lcV9ub3RpZmllcl9yZWdpc3Rlcihlc3ctPmRldiwgJmVzdy0+ZXN3 X2Z1bmNzLm5iKTsNCi0JfSBlbHNlIHsNCi0JCWVzdy0+ZXN3X2Z1bmNzLm51bV92ZnMgPSB2Zl9u dnBvcnRzOw0KIAl9DQogfQ0KIA0KQEAgLTIxMjAsMTIgKzIxMjQsMTEgQEAgc3RhdGljIHZvaWQg ZXN3X2Z1bmN0aW9uc19jaGFuZ2VkX2V2ZW50X2NsZWFudXAoc3RydWN0IG1seDVfZXN3aXRjaCAq ZXN3KQ0KIAlmbHVzaF93b3JrcXVldWUoZXN3LT53b3JrX3F1ZXVlKTsNCiB9DQogDQotaW50IGVz d19vZmZsb2Fkc19pbml0KHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgaW50IHZmX252cG9ydHMs DQotCQkgICAgICBpbnQgdG90YWxfbnZwb3J0cykNCitpbnQgZXN3X29mZmxvYWRzX2luaXQoc3Ry dWN0IG1seDVfZXN3aXRjaCAqZXN3KQ0KIHsNCiAJaW50IGVycjsNCiANCi0JZXJyID0gZXN3X29m ZmxvYWRzX3N0ZWVyaW5nX2luaXQoZXN3LCB0b3RhbF9udnBvcnRzKTsNCisJZXJyID0gZXN3X29m ZmxvYWRzX3N0ZWVyaW5nX2luaXQoZXN3KTsNCiAJaWYgKGVycikNCiAJCXJldHVybiBlcnI7DQog DQpAQCAtMjEzNSwzMCArMjEzOCwxNiBAQCBpbnQgZXN3X29mZmxvYWRzX2luaXQoc3RydWN0IG1s eDVfZXN3aXRjaCAqZXN3LCBpbnQgdmZfbnZwb3J0cywNCiAJCQlnb3RvIGVycl92cG9ydF9tZXRh ZGF0YTsNCiAJfQ0KIA0KLQkvKiBPbmx5IGxvYWQgc3BlY2lhbCB2cG9ydHMgcmVwcy4gVkYgcmVw cyB3aWxsIGJlIGxvYWRlZCBpbg0KLQkgKiBjb250ZXh0IG9mIGZ1bmN0aW9uc19jaGFuZ2VkIGV2 ZW50IGhhbmRsZXIgdGhyb3VnaCByZWFsDQotCSAqIG9yIGVtdWxhdGVkIGV2ZW50Lg0KLQkgKi8N Ci0JZXJyID0gZXN3X29mZmxvYWRzX2xvYWRfc3BlY2lhbF92cG9ydChlc3cpOw0KKwllcnIgPSBl c3dfb2ZmbG9hZHNfbG9hZF9hbGxfcmVwcyhlc3cpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBlcnJf cmVwczsNCiANCiAJZXN3X29mZmxvYWRzX2RldmNvbV9pbml0KGVzdyk7DQogDQotCWVzd19mdW5j dGlvbnNfY2hhbmdlZF9ldmVudF9pbml0KGVzdywgdmZfbnZwb3J0cyk7DQorCWVzd19mdW5jdGlv bnNfY2hhbmdlZF9ldmVudF9pbml0KGVzdyk7DQogDQogCW1seDVfcmRtYV9lbmFibGVfcm9jZShl c3ctPmRldik7DQogDQotCS8qIENhbGwgZXN3X2Z1bmN0aW9uc19jaGFuZ2VkIGV2ZW50IHRvIGxv YWQgVkYgcmVwczoNCi0JICogMS4gSFcgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZXZlbnQgdGhlbiBl bXVsYXRlIGl0DQotCSAqIE9yDQotCSAqIDIuIFRoZSBldmVudCB3YXMgYWxyZWFkeSBub3RpZmll ZCB3aGVuIG51bV92ZnMgY2hhbmdlZA0KLQkgKiBhbmQgZXN3aXRjaCB3YXMgaW4gbGVnYWN5IG1v ZGUNCi0JICovDQotCWVzd19mdW5jdGlvbnNfY2hhbmdlZF9ldmVudCgmZXN3LT5lc3dfZnVuY3Mu bmIubmIsDQotCQkJCSAgICBNTFg1X0VWRU5UX1RZUEVfRVNXX0ZVTkNUSU9OU19DSEFOR0VELA0K LQkJCQkgICAgTlVMTCk7DQotDQogCXJldHVybiAwOw0KIA0KIGVycl9yZXBzOg0KQEAgLTIxNzIs MTMgKzIxNjEsMTMgQEAgaW50IGVzd19vZmZsb2Fkc19pbml0KHN0cnVjdCBtbHg1X2Vzd2l0Y2gg KmVzdywgaW50IHZmX252cG9ydHMsDQogc3RhdGljIGludCBlc3dfb2ZmbG9hZHNfc3RvcChzdHJ1 Y3QgbWx4NV9lc3dpdGNoICplc3csDQogCQkJICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpl eHRhY2spDQogew0KLQlpbnQgZXJyLCBlcnIxLCBudW1fdmZzID0gZXN3LT5kZXYtPnByaXYuc3Jp b3YubnVtX3ZmczsNCisJaW50IGVyciwgZXJyMTsNCiANCiAJbWx4NV9lc3dpdGNoX2Rpc2FibGUo ZXN3KTsNCi0JZXJyID0gbWx4NV9lc3dpdGNoX2VuYWJsZShlc3csIG51bV92ZnMsIE1MWDVfRVNX SVRDSF9MRUdBQ1kpOw0KKwllcnIgPSBtbHg1X2Vzd2l0Y2hfZW5hYmxlKGVzdywgTUxYNV9FU1dJ VENIX0xFR0FDWSk7DQogCWlmIChlcnIpIHsNCiAJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ss ICJGYWlsZWQgc2V0dGluZyBlc3dpdGNoIHRvIGxlZ2FjeSIpOw0KLQkJZXJyMSA9IG1seDVfZXN3 aXRjaF9lbmFibGUoZXN3LCBudW1fdmZzLCBNTFg1X0VTV0lUQ0hfT0ZGTE9BRFMpOw0KKwkJZXJy MSA9IG1seDVfZXN3aXRjaF9lbmFibGUoZXN3LCBNTFg1X0VTV0lUQ0hfT0ZGTE9BRFMpOw0KIAkJ aWYgKGVycjEpIHsNCiAJCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLA0KIAkJCQkJICAgIkZh aWxlZCBzZXR0aW5nIGVzd2l0Y2ggYmFjayB0byBvZmZsb2FkcyIpOw0KQEAgLTIxOTMsNyArMjE4 Miw3IEBAIHZvaWQgZXN3X29mZmxvYWRzX2NsZWFudXAoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3 KQ0KIAllc3dfZnVuY3Rpb25zX2NoYW5nZWRfZXZlbnRfY2xlYW51cChlc3cpOw0KIAltbHg1X3Jk bWFfZGlzYWJsZV9yb2NlKGVzdy0+ZGV2KTsNCiAJZXN3X29mZmxvYWRzX2RldmNvbV9jbGVhbnVw KGVzdyk7DQotCWVzd19vZmZsb2Fkc191bmxvYWRfYWxsX3JlcHMoZXN3LCBlc3ctPmVzd19mdW5j cy5udW1fdmZzKTsNCisJZXN3X29mZmxvYWRzX3VubG9hZF9hbGxfcmVwcyhlc3cpOw0KIAlpZiAo bWx4NV9lc3dpdGNoX3Zwb3J0X21hdGNoX21ldGFkYXRhX2VuYWJsZWQoZXN3KSkNCiAJCW1seDVf ZXN3aXRjaF9kaXNhYmxlX3Bhc3NpbmdfdnBvcnRfbWV0YWRhdGEoZXN3KTsNCiAJZXN3X29mZmxv YWRzX3N0ZWVyaW5nX2NsZWFudXAoZXN3KTsNCkBAIC0yMzk5LDcgKzIzODgsNyBAQCBpbnQgbWx4 NV9kZXZsaW5rX2Vzd2l0Y2hfaW5saW5lX21vZGVfZ2V0KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5r LCB1OCAqbW9kZSkNCiAJcmV0dXJuIGVzd19pbmxpbmVfbW9kZV90b19kZXZsaW5rKGVzdy0+b2Zm bG9hZHMuaW5saW5lX21vZGUsIG1vZGUpOw0KIH0NCiANCi1pbnQgbWx4NV9lc3dpdGNoX2lubGlu ZV9tb2RlX2dldChzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGludCBudmZzLCB1OCAqbW9kZSkN CitpbnQgbWx4NV9lc3dpdGNoX2lubGluZV9tb2RlX2dldChzdHJ1Y3QgbWx4NV9lc3dpdGNoICpl c3csIHU4ICptb2RlKQ0KIHsNCiAJdTggcHJldl9tbHg1X21vZGUsIG1seDVfbW9kZSA9IE1MWDVf SU5MSU5FX01PREVfTDI7DQogCXN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBlc3ctPmRldjsN CkBAIC0yNDIzLDcgKzI0MTIsNyBAQCBpbnQgbWx4NV9lc3dpdGNoX2lubGluZV9tb2RlX2dldChz dHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIGludCBudmZzLCB1OCAqbW9kZSkNCiAJfQ0KIA0KIHF1 ZXJ5X3Zwb3J0czoNCi0JZm9yICh2cG9ydCA9IDE7IHZwb3J0IDw9IG52ZnM7IHZwb3J0KyspIHsN CisJZm9yICh2cG9ydCA9IDE7IHZwb3J0IDw9IGVzdy0+ZXN3X2Z1bmNzLm51bV92ZnM7IHZwb3J0 KyspIHsNCiAJCW1seDVfcXVlcnlfbmljX3Zwb3J0X21pbl9pbmxpbmUoZGV2LCB2cG9ydCwgJm1s eDVfbW9kZSk7DQogCQlpZiAodnBvcnQgPiAxICYmIHByZXZfbWx4NV9tb2RlICE9IG1seDVfbW9k ZSkNCiAJCQlyZXR1cm4gLUVJTlZBTDsNCkBAIC0yNTE4LDEyICsyNTA3LDExIEBAIEVYUE9SVF9T WU1CT0wobWx4NV9lc3dpdGNoX3JlZ2lzdGVyX3Zwb3J0X3JlcHMpOw0KIA0KIHZvaWQgbWx4NV9l c3dpdGNoX3VucmVnaXN0ZXJfdnBvcnRfcmVwcyhzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHU4 IHJlcF90eXBlKQ0KIHsNCi0JdTE2IG1heF92ZiA9IG1seDVfY29yZV9tYXhfdmZzKGVzdy0+ZGV2 KTsNCiAJc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcDsNCiAJaW50IGk7DQogDQogCWlmIChl c3ctPm1vZGUgPT0gTUxYNV9FU1dJVENIX09GRkxPQURTKQ0KLQkJX191bmxvYWRfcmVwc19hbGxf dnBvcnQoZXN3LCBtYXhfdmYsIHJlcF90eXBlKTsNCisJCV9fdW5sb2FkX3JlcHNfYWxsX3Zwb3J0 KGVzdywgcmVwX3R5cGUpOw0KIA0KIAltbHg1X2Vzd19mb3JfYWxsX3JlcHMoZXN3LCBpLCByZXAp DQogCQlhdG9taWNfc2V0KCZyZXAtPnJlcF9kYXRhW3JlcF90eXBlXS5zdGF0ZSwgUkVQX1VOUkVH SVNURVJFRCk7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL3NyaW92LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUv c3Jpb3YuYw0KaW5kZXggZDRjOTBmMDI5ZjQ5Li41NDdkMGJlOTAyNWUgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3Jpb3YuYw0KKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NyaW92LmMNCkBAIC03Nyw3ICs3 Nyw4IEBAIHN0YXRpYyBpbnQgbWx4NV9kZXZpY2VfZW5hYmxlX3NyaW92KHN0cnVjdCBtbHg1X2Nv cmVfZGV2ICpkZXYsIGludCBudW1fdmZzKQ0KIAlpZiAoIU1MWDVfRVNXSVRDSF9NQU5BR0VSKGRl dikpDQogCQlnb3RvIGVuYWJsZV92ZnNfaGNhOw0KIA0KLQllcnIgPSBtbHg1X2Vzd2l0Y2hfZW5h YmxlKGRldi0+cHJpdi5lc3dpdGNoLCBudW1fdmZzLCBNTFg1X0VTV0lUQ0hfTEVHQUNZKTsNCisJ bWx4NV9lc3dpdGNoX3VwZGF0ZV9udW1fb2ZfdmZzKGRldi0+cHJpdi5lc3dpdGNoLCBudW1fdmZz KTsNCisJZXJyID0gbWx4NV9lc3dpdGNoX2VuYWJsZShkZXYtPnByaXYuZXN3aXRjaCwgTUxYNV9F U1dJVENIX0xFR0FDWSk7DQogCWlmIChlcnIpIHsNCiAJCW1seDVfY29yZV93YXJuKGRldiwNCiAJ CQkgICAgICAgImZhaWxlZCB0byBlbmFibGUgZXN3aXRjaCBTUklPViAoJWQpXG4iLCBlcnIpOw0K LS0gDQoyLjIxLjANCg0K