From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH] vulkan: Add VK_GOOGLE_display_timing extension (x11+display, anv+radv) [v6] Date: Thu, 15 Nov 2018 10:06:23 -0800 Message-ID: <20181115180623.32390-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: mesa-dev-bounces@lists.freedesktop.org Sender: "mesa-dev" To: mesa-dev@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBWS19HT09HTEVfZGlzcGxheSB0aW1pbmcgZXh0ZW5z aW9uLCB3aGljaApwcm92aWRlcyB0d28gdGhpbmdzOgoKIDEpIERldGFpbGVkIGluZm9ybWF0aW9u IGFib3V0IHdoZW4gZnJhbWVzIGFyZSBkaXNwbGF5ZWQsIGluY2x1ZGluZwogICAgc2xhY2sgdGlt ZSBiZXR3ZWVuIEdQVSBleGVjdXRpb24gYW5kIGRpc3BsYXkgZnJhbWUuCgogMikgQWJzb2x1dGUg dGltZSBjb250cm9sIG92ZXIgc3dhcGNoYWluIHF1ZXVlIHByb2Nlc3NpbmcuIFRoaXMgYWxsb3dz CiAgICB0aGUgYXBwbGljYXRpb24gdG8gcmVxdWVzdCBmcmFtZXMgYmUgZGlzcGxheWVkIGF0IHNw ZWNpZmljCiAgICBhYnNvbHV0ZSB0aW1lcywgdXNpbmcgdGhlIHNhbWUgdGltZWJhc2UgYXMgdGhh dCBwcm92aWRlZCBpbiB2YmxhbmsKICAgIGV2ZW50cy4KClN1cHBvcnQgZm9yIHRoaXMgZXh0ZW5z aW9uIGhhcyBiZWVuIGltcGxlbWVudGVkIGZvciB0aGUgeDExIGFuZApkaXNwbGF5IGJhY2tlbmRz OyBhZGRpbmcgc3VwcG9ydCB0byBvdGhlciBiYWNrZW5kcyBzaG91bGQgYmUKcmVhc29uYWJsZSBz dHJhaWdodGZvcndhcmQgZm9yIG9uZSBmYW1pbGlhciB3aXRoIHRob3NlIHN5c3RlbXMgYW5kCnNo b3VsZCBub3QgcmVxdWlyZSBhbnkgYWRkaXRpb25hbCBkZXZpY2Utc3BlY2lmaWMgY29kZS4KCnYy OgoJQWRqdXN0IEdPT0dMRV9kaXNwbGF5X3RpbWluZyBlYXJsaWVzdCB2YWx1ZS4gIFRoZQoJZWFy bGllc3RQcmVzZW50VGltZSBmb3IgYW4gaW1hZ2UgY2Fubm90IGJlIGJlZm9yZSB0aGUgcHJldmlv dXMKCWltYWdlIHdhcyBkaXNwbGF5ZWQsIG9yIGV2ZW4gYSBmcmFtZSBsYXRlciAoaW4gRklGTyBt b2RlKS4KCglNYWtlIEdPT0dMRV9kaXNwbGF5X3RpbWluZyB1c2UgcmVuZGVyIGNvbXBsZXRlZCB0 aW1lLiAgU3dpdGNoCglmcm9tIFZLX1BJUEVMSU5FX1RPUF9PRl9QSVBFX0JJVCB0bwoJVktfUElQ RUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCBzbyB0aGF0IHRoZSB0aW1lIHJlcG9ydGVkCgl0 byBhcHBsaWNhdGlvbnMgYXMgdGhlIGVuZCBvZiByZW5kZXJpbmcgcmVmbGVjdHMgdGhlIGxhdGVz dAoJcG9zc2libGUgdmFsdWUgdG8gZW5zdXJlIHRoYXQgYXBwbGljYXRpb25zIGRvbid0IHVuZGVy ZXN0aW1hdGUKCXRoZSBhbW91bnQgb2Ygd29yayBkb25lIGluIHRoZSBmcmFtZS4KCnYzOgoJQWRv cHQgSmFzb24gRWtzdHJhbmQncyBjb2RpbmcgY29udmVudGlvbnMuICBEZWNsYXJlIHZhcmlhYmxl cwoJYXQgZmlyc3QgdXNlLCBlbGltaW5hdGUgZXh0cmEgd2hpdGVzcGFjZSBiZXR3ZWVuIHR5cGVz IGFuZAoJbmFtZXMuIFdyYXAgbGluZXMgdG8gODAgY29sdW1ucy4KCiAgICAgICAgU3VnZ2VzdGVk LWJ5OiBKYXNvbiBFa3N0cmFuZCA8amFzb24uZWtzdHJhbmRAaW50ZWwuY29tPgoKdjQ6CglBZGFw dCB0byBjaGFuZ2VzIGluIE1FU0FfcXVlcnlfdGltZXN0YW1wIGV4dGVuc2lvbgoKdjU6CglTcXVh c2ggY29yZSBiaXRzIGFuZCBhbnYvcmFkdiB3cmFwcGVycyBpbnRvIGEgc2luZ2xlIHBhdGNoCgog ICAgICAgIFN1Z2dlc3RlZC1ieTogSmFzb24gRWtzdHJhbmQgPGphc29uLmVrc3RyYW5kQGludGVs LmNvbT4KCnY2OgoJU3dpdGNoIGZyb20gTUVTQV9xdWVyeV90aW1lc3RhbXAgdG8gRVhUX2NhbGli cmF0ZWRfdGltZXN0YW1wcwoKU2lnbmVkLW9mZi1ieTogS2VpdGggUGFja2FyZCA8a2VpdGhwQGtl aXRocC5jb20+Ci0tLQogc3JjL2FtZC92dWxrYW4vcmFkdl9leHRlbnNpb25zLnB5ICAgfCAgIDEg Kwogc3JjL2FtZC92dWxrYW4vcmFkdl93c2kuYyAgICAgICAgICAgfCAgMzMgKysrCiBzcmMvaW50 ZWwvdnVsa2FuL2Fudl9leHRlbnNpb25zLnB5ICB8ICAgMSArCiBzcmMvaW50ZWwvdnVsa2FuL2Fu dl93c2kuYyAgICAgICAgICB8ICAzMyArKysKIHNyYy92dWxrYW4vd3NpL3dzaV9jb21tb24uYyAg ICAgICAgIHwgMzAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy92dWxrYW4vd3Np L3dzaV9jb21tb24uaCAgICAgICAgIHwgIDMyICsrKwogc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1v bl9kaXNwbGF5LmMgfCAxNjUgKysrKysrKysrKysrKystCiBzcmMvdnVsa2FuL3dzaS93c2lfY29t bW9uX3ByaXZhdGUuaCB8ICAzNSArKysrCiBzcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uX3gxMS5j ICAgICB8ICA3MSArKysrKystCiA5IGZpbGVzIGNoYW5nZWQsIDY2MiBpbnNlcnRpb25zKCspLCAx MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYW1kL3Z1bGthbi9yYWR2X2V4dGVuc2lv bnMucHkgYi9zcmMvYW1kL3Z1bGthbi9yYWR2X2V4dGVuc2lvbnMucHkKaW5kZXggNmJkZjk4OGQx MTcuLjc2YzNhZGUwNmYwIDEwMDY0NAotLS0gYS9zcmMvYW1kL3Z1bGthbi9yYWR2X2V4dGVuc2lv bnMucHkKKysrIGIvc3JjL2FtZC92dWxrYW4vcmFkdl9leHRlbnNpb25zLnB5CkBAIC0xMTksNiAr MTE5LDcgQEAgRVhURU5TSU9OUyA9IFsKICAgICBFeHRlbnNpb24oJ1ZLX0FNRF9zaGFkZXJfdHJp bmFyeV9taW5tYXgnLCAgICAgICAgICAgICAxLCBUcnVlKSwKICAgICBFeHRlbnNpb24oJ1ZLX0dP T0dMRV9kZWNvcmF0ZV9zdHJpbmcnLCAgICAgICAgICAgICAgICAxLCBUcnVlKSwKICAgICBFeHRl bnNpb24oJ1ZLX0dPT0dMRV9obHNsX2Z1bmN0aW9uYWxpdHkxJywgICAgICAgICAgICAxLCBUcnVl KSwKKyAgICBFeHRlbnNpb24oJ1ZLX0dPT0dMRV9kaXNwbGF5X3RpbWluZycsICAgICAgICAgICAg ICAgICAxLCBUcnVlKSwKIF0KIAogY2xhc3MgVmtWZXJzaW9uOgpkaWZmIC0tZ2l0IGEvc3JjL2Ft ZC92dWxrYW4vcmFkdl93c2kuYyBiL3NyYy9hbWQvdnVsa2FuL3JhZHZfd3NpLmMKaW5kZXggMzQ2 ZmI0M2Q2NzUuLmJhMjRkMDdlZGZjIDEwMDY0NAotLS0gYS9zcmMvYW1kL3Z1bGthbi9yYWR2X3dz aS5jCisrKyBiL3NyYy9hbWQvdnVsa2FuL3JhZHZfd3NpLmMKQEAgLTI5NSwzICsyOTUsMzYgQEAg VmtSZXN1bHQgcmFkdl9HZXRQaHlzaWNhbERldmljZVByZXNlbnRSZWN0YW5nbGVzS0hSKAogCQkJ CQkJIHN1cmZhY2UsCiAJCQkJCQkgcFJlY3RDb3VudCwgcFJlY3RzKTsKIH0KKworLyogVktfR09P R0xFX2Rpc3BsYXlfdGltaW5nICovCitWa1Jlc3VsdAorcmFkdl9HZXRSZWZyZXNoQ3ljbGVEdXJh dGlvbkdPT0dMRSgKKwlWa0RldmljZSBfZGV2aWNlLAorCVZrU3dhcGNoYWluS0hSIHN3YXBjaGFp biwKKwlWa1JlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFICpwRGlzcGxheVRpbWluZ1Byb3BlcnRp ZXMpCit7CisJUkFEVl9GUk9NX0hBTkRMRShyYWR2X2RldmljZSwgZGV2aWNlLCBfZGV2aWNlKTsK KwlzdHJ1Y3QgcmFkdl9waHlzaWNhbF9kZXZpY2UgKnBkZXZpY2UgPSBkZXZpY2UtPnBoeXNpY2Fs X2RldmljZTsKKworCXJldHVybiB3c2lfY29tbW9uX2dldF9yZWZyZXNoX2N5Y2xlX2R1cmF0aW9u KCZwZGV2aWNlLT53c2lfZGV2aWNlLAorCQkJCQkJICAgICBfZGV2aWNlLAorCQkJCQkJICAgICBz d2FwY2hhaW4sCisJCQkJCQkgICAgIHBEaXNwbGF5VGltaW5nUHJvcGVydGllcyk7Cit9CisKK1Zr UmVzdWx0CityYWR2X0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUoVmtEZXZpY2UgX2Rl dmljZSwKKwkJCQkgICAgIFZrU3dhcGNoYWluS0hSIHN3YXBjaGFpbiwKKwkJCQkgICAgIHVpbnQz Ml90ICpwUHJlc2VudGF0aW9uVGltaW5nQ291bnQsCisJCQkJICAgICBWa1Bhc3RQcmVzZW50YXRp b25UaW1pbmdHT09HTEUKKwkJCQkgICAgICpwUHJlc2VudGF0aW9uVGltaW5ncykKK3sKKwlSQURW X0ZST01fSEFORExFKHJhZHZfZGV2aWNlLCBkZXZpY2UsIF9kZXZpY2UpOworCXN0cnVjdCByYWR2 X3BoeXNpY2FsX2RldmljZSAqcGRldmljZSA9IGRldmljZS0+cGh5c2ljYWxfZGV2aWNlOworCisJ cmV0dXJuIHdzaV9jb21tb25fZ2V0X3Bhc3RfcHJlc2VudGF0aW9uX3RpbWluZygmcGRldmljZS0+ d3NpX2RldmljZSwKKwkJCQkJCSAgICAgICBfZGV2aWNlLAorCQkJCQkJICAgICAgIHN3YXBjaGFp biwKKwkJCQkJCSAgICAgICBwUHJlc2VudGF0aW9uVGltaW5nQ291bnQsCisJCQkJCQkgICAgICAg cFByZXNlbnRhdGlvblRpbWluZ3MpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVsL3Z1bGthbi9h bnZfZXh0ZW5zaW9ucy5weSBiL3NyYy9pbnRlbC92dWxrYW4vYW52X2V4dGVuc2lvbnMucHkKaW5k ZXggZTlhZmUwNmJiMTMuLjhmY2M0ZDEzNzZlIDEwMDY0NAotLS0gYS9zcmMvaW50ZWwvdnVsa2Fu L2Fudl9leHRlbnNpb25zLnB5CisrKyBiL3NyYy9pbnRlbC92dWxrYW4vYW52X2V4dGVuc2lvbnMu cHkKQEAgLTEzMCw2ICsxMzAsNyBAQCBFWFRFTlNJT05TID0gWwogICAgIEV4dGVuc2lvbignVktf RVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcycsICAgICAgICAgICAgIDEsIFRydWUpLAogICAgIEV4 dGVuc2lvbignVktfR09PR0xFX2RlY29yYXRlX3N0cmluZycsICAgICAgICAgICAgICAgIDEsIFRy dWUpLAogICAgIEV4dGVuc2lvbignVktfR09PR0xFX2hsc2xfZnVuY3Rpb25hbGl0eTEnLCAgICAg ICAgICAgIDEsIFRydWUpLAorICAgIEV4dGVuc2lvbignVktfR09PR0xFX2Rpc3BsYXlfdGltaW5n JywgICAgICAgICAgICAgICAgIDEsIFRydWUpLAogXQogCiBjbGFzcyBWa1ZlcnNpb246CmRpZmYg LS1naXQgYS9zcmMvaW50ZWwvdnVsa2FuL2Fudl93c2kuYyBiL3NyYy9pbnRlbC92dWxrYW4vYW52 X3dzaS5jCmluZGV4IDAyNGJjMWMyNDVkLi5iZmRiY2I1NmM1NiAxMDA2NDQKLS0tIGEvc3JjL2lu dGVsL3Z1bGthbi9hbnZfd3NpLmMKKysrIGIvc3JjL2ludGVsL3Z1bGthbi9hbnZfd3NpLmMKQEAg LTMwNSwzICszMDUsMzYgQEAgVmtSZXN1bHQgYW52X0dldFBoeXNpY2FsRGV2aWNlUHJlc2VudFJl Y3RhbmdsZXNLSFIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBS ZWN0Q291bnQsIHBSZWN0cyk7CiB9CisKKy8qIFZLX0dPT0dMRV9kaXNwbGF5X3RpbWluZyAqLwor VmtSZXN1bHQKK2Fudl9HZXRSZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRShWa0RldmljZSBfZGV2 aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrU3dhcGNoYWluS0hSIHN3 YXBjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa1JlZnJlc2hDeWNs ZUR1cmF0aW9uR09PR0xFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBEaXNw bGF5VGltaW5nUHJvcGVydGllcykKK3sKKyAgIEFOVl9GUk9NX0hBTkRMRShhbnZfZGV2aWNlLCBk ZXZpY2UsIF9kZXZpY2UpOworCisgICByZXR1cm4gd3NpX2NvbW1vbl9nZXRfcmVmcmVzaF9jeWNs ZV9kdXJhdGlvbigmZGV2aWNlLT5pbnN0YW5jZS0+CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbERldmljZS53c2lfZGV2aWNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RldmljZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBjaGFpbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEaXNwbGF5VGlt aW5nUHJvcGVydGllcyk7Cit9CisKK1ZrUmVzdWx0CithbnZfR2V0UGFzdFByZXNlbnRhdGlvblRp bWluZ0dPT0dMRShWa0RldmljZSBfZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmtTd2FwY2hhaW5LSFIgc3dhcGNoYWluLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgKnBQcmVzZW50YXRpb25UaW1pbmdDb3VudCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUGFzdFByZXNlbnRhdGlvblRpbWluZ0dP T0dMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBQcmVzZW50YXRpb25U aW1pbmdzKQoreworICAgQU5WX0ZST01fSEFORExFKGFudl9kZXZpY2UsIGRldmljZSwgX2Rldmlj ZSk7CisKKyAgIHJldHVybiB3c2lfY29tbW9uX2dldF9wYXN0X3ByZXNlbnRhdGlvbl90aW1pbmco JmRldmljZS0+aW5zdGFuY2UtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwaHlzaWNhbERldmljZS53c2lfZGV2aWNlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGV2aWNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwY2hhaW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQcmVzZW50YXRpb25U aW1pbmdDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcFByZXNlbnRhdGlvblRpbWluZ3MpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Z1bGthbi93 c2kvd3NpX2NvbW1vbi5jIGIvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbi5jCmluZGV4IDFjZDVm OGQ2MmM1Li41NjJkMmI4MDE3ZSAxMDA2NDQKLS0tIGEvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1v bi5jCisrKyBiL3NyYy92dWxrYW4vd3NpL3dzaV9jb21tb24uYwpAQCAtNDgsNiArNDgsNyBAQCB3 c2lfZGV2aWNlX2luaXQoc3RydWN0IHdzaV9kZXZpY2UgKndzaSwKICAgIFdTSV9HRVRfQ0IoR2V0 UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMik7CiAgICBXU0lfR0VUX0NCKEdldFBoeXNpY2FsRGV2 aWNlTWVtb3J5UHJvcGVydGllcyk7CiAgICBXU0lfR0VUX0NCKEdldFBoeXNpY2FsRGV2aWNlUXVl dWVGYW1pbHlQcm9wZXJ0aWVzKTsKKyAgIFdTSV9HRVRfQ0IoR2V0UGh5c2ljYWxEZXZpY2VQcm9w ZXJ0aWVzKTsKICN1bmRlZiBXU0lfR0VUX0NCCiAKICAgIHdzaS0+cGNpX2J1c19pbmZvLnNUeXBl ID0KQEAgLTYxLDYgKzYyLDEwIEBAIHdzaV9kZXZpY2VfaW5pdChzdHJ1Y3Qgd3NpX2RldmljZSAq d3NpLAogICAgR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzKHBkZXZpY2UsICZ3c2kt Pm1lbW9yeV9wcm9wcyk7CiAgICBHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGll cyhwZGV2aWNlLCAmd3NpLT5xdWV1ZV9mYW1pbHlfY291bnQsIE5VTEwpOwogCisgICBWa1BoeXNp Y2FsRGV2aWNlUHJvcGVydGllcyBwcm9wZXJ0aWVzOworICAgR2V0UGh5c2ljYWxEZXZpY2VQcm9w ZXJ0aWVzKHBkZXZpY2UsICZwcm9wZXJ0aWVzKTsKKyAgIHdzaS0+dGltZXN0YW1wX3BlcmlvZCA9 IHByb3BlcnRpZXMubGltaXRzLnRpbWVzdGFtcFBlcmlvZDsKKwogI2RlZmluZSBXU0lfR0VUX0NC KGZ1bmMpIFwKICAgIHdzaS0+ZnVuYyA9IChQRk5fdmsjI2Z1bmMpcHJvY19hZGRyKHBkZXZpY2Us ICJ2ayIgI2Z1bmMpCiAgICBXU0lfR0VUX0NCKEFsbG9jYXRlTWVtb3J5KTsKQEAgLTY5LDE0ICs3 NCwxOCBAQCB3c2lfZGV2aWNlX2luaXQoc3RydWN0IHdzaV9kZXZpY2UgKndzaSwKICAgIFdTSV9H RVRfQ0IoQmluZEltYWdlTWVtb3J5KTsKICAgIFdTSV9HRVRfQ0IoQmVnaW5Db21tYW5kQnVmZmVy KTsKICAgIFdTSV9HRVRfQ0IoQ21kQ29weUltYWdlVG9CdWZmZXIpOworICAgV1NJX0dFVF9DQihD bWRSZXNldFF1ZXJ5UG9vbCk7CisgICBXU0lfR0VUX0NCKENtZFdyaXRlVGltZXN0YW1wKTsKICAg IFdTSV9HRVRfQ0IoQ3JlYXRlQnVmZmVyKTsKICAgIFdTSV9HRVRfQ0IoQ3JlYXRlQ29tbWFuZFBv b2wpOwogICAgV1NJX0dFVF9DQihDcmVhdGVGZW5jZSk7CiAgICBXU0lfR0VUX0NCKENyZWF0ZUlt YWdlKTsKKyAgIFdTSV9HRVRfQ0IoQ3JlYXRlUXVlcnlQb29sKTsKICAgIFdTSV9HRVRfQ0IoRGVz dHJveUJ1ZmZlcik7CiAgICBXU0lfR0VUX0NCKERlc3Ryb3lDb21tYW5kUG9vbCk7CiAgICBXU0lf R0VUX0NCKERlc3Ryb3lGZW5jZSk7CiAgICBXU0lfR0VUX0NCKERlc3Ryb3lJbWFnZSk7CisgICBX U0lfR0VUX0NCKERlc3Ryb3lRdWVyeVBvb2wpOwogICAgV1NJX0dFVF9DQihFbmRDb21tYW5kQnVm ZmVyKTsKICAgIFdTSV9HRVRfQ0IoRnJlZU1lbW9yeSk7CiAgICBXU0lfR0VUX0NCKEZyZWVDb21t YW5kQnVmZmVycyk7CkBAIC04NCwxMCArOTMsMTQgQEAgd3NpX2RldmljZV9pbml0KHN0cnVjdCB3 c2lfZGV2aWNlICp3c2ksCiAgICBXU0lfR0VUX0NCKEdldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRz KTsKICAgIFdTSV9HRVRfQ0IoR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dCk7CiAgICBXU0lfR0VU X0NCKEdldE1lbW9yeUZkS0hSKTsKKyAgIFdTSV9HRVRfQ0IoR2V0UGh5c2ljYWxEZXZpY2VQcm9w ZXJ0aWVzKTsKICAgIFdTSV9HRVRfQ0IoR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVz KTsKICAgIFdTSV9HRVRfQ0IoR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzMktIUik7 CisgICBXU0lfR0VUX0NCKEdldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzKTsK KyAgIFdTSV9HRVRfQ0IoR2V0UXVlcnlQb29sUmVzdWx0cyk7CiAgICBXU0lfR0VUX0NCKFJlc2V0 RmVuY2VzKTsKICAgIFdTSV9HRVRfQ0IoUXVldWVTdWJtaXQpOworICAgV1NJX0dFVF9DQihHZXRD YWxpYnJhdGVkVGltZXN0YW1wc0VYVCk7CiAgICBXU0lfR0VUX0NCKFdhaXRGb3JGZW5jZXMpOwog I3VuZGVmIFdTSV9HRVRfQ0IKIApAQCAtMTcyLDYgKzE4NSw4IEBAIHdzaV9zd2FwY2hhaW5faW5p dChjb25zdCBzdHJ1Y3Qgd3NpX2RldmljZSAqd3NpLAogICAgY2hhaW4tPmRldmljZSA9IGRldmlj ZTsKICAgIGNoYWluLT5hbGxvYyA9ICpwQWxsb2NhdG9yOwogICAgY2hhaW4tPnVzZV9wcmltZV9i bGl0ID0gZmFsc2U7CisgICBjaGFpbi0+dGltaW5nX2luc2VydCA9IDA7CisgICBjaGFpbi0+dGlt aW5nX2NvdW50ID0gMDsKIAogICAgY2hhaW4tPmNtZF9wb29scyA9CiAgICAgICB2a196YWxsb2Mo cEFsbG9jYXRvciwgc2l6ZW9mKFZrQ29tbWFuZFBvb2wpICogd3NpLT5xdWV1ZV9mYW1pbHlfY291 bnQsIDgsCkBAIC0yNDUsNiArMjYwLDYzIEBAIGFsaWduX3UzMih1aW50MzJfdCB2LCB1aW50MzJf dCBhKQogICAgcmV0dXJuICh2ICsgYSAtIDEpICYgfihhIC0gMSk7CiB9CiAKK3N0YXRpYyBWa1Jl c3VsdAord3NpX2ltYWdlX2luaXRfdGltZXN0YW1wKGNvbnN0IHN0cnVjdCB3c2lfc3dhcGNoYWlu ICpjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3NpX2ltYWdlICppbWFn ZSkKK3sKKyAgIGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2kgPSBjaGFpbi0+d3NpOworICAg VmtSZXN1bHQgcmVzdWx0OworICAgLyogU2V0IHVwIGNvbW1hbmQgYnVmZmVyIHRvIGdldCB0aW1l c3RhbXAgaW5mbyAqLworCisgICByZXN1bHQgPSB3c2ktPkNyZWF0ZVF1ZXJ5UG9vbCgKKyAgICAg IGNoYWluLT5kZXZpY2UsCisgICAgICAmKGNvbnN0IFZrUXVlcnlQb29sQ3JlYXRlSW5mbykgewor ICAgICAgICAgLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfUVVFUllfUE9PTF9DUkVBVEVfSU5G TywKKyAgICAgICAgICAgIC5xdWVyeVR5cGUgPSBWS19RVUVSWV9UWVBFX1RJTUVTVEFNUCwKKyAg ICAgICAgICAgIC5xdWVyeUNvdW50ID0gMSwKKyAgICAgICAgICAgIH0sCisgICAgICBOVUxMLAor ICAgICAgJmltYWdlLT5xdWVyeV9wb29sKTsKKworICAgaWYgKHJlc3VsdCAhPSBWS19TVUNDRVNT KQorICAgICAgZ290byBmYWlsOworCisgICByZXN1bHQgPSB3c2ktPkFsbG9jYXRlQ29tbWFuZEJ1 ZmZlcnMoCisgICAgICBjaGFpbi0+ZGV2aWNlLAorICAgICAgJihjb25zdCBWa0NvbW1hbmRCdWZm ZXJBbGxvY2F0ZUluZm8pIHsKKyAgICAgICAgIC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NP TU1BTkRfQlVGRkVSX0FMTE9DQVRFX0lORk8sCisgICAgICAgICAgICAucE5leHQgPSBOVUxMLAor ICAgICAgICAgICAgLmNvbW1hbmRQb29sID0gY2hhaW4tPmNtZF9wb29sc1swXSwKKyAgICAgICAg ICAgIC5sZXZlbCA9IFZLX0NPTU1BTkRfQlVGRkVSX0xFVkVMX1BSSU1BUlksCisgICAgICAgICAg ICAuY29tbWFuZEJ1ZmZlckNvdW50ID0gMSwKKyAgICAgICAgICAgIH0sCisgICAgICAmaW1hZ2Ut PnRpbWVzdGFtcF9idWZmZXIpOworICAgaWYgKHJlc3VsdCAhPSBWS19TVUNDRVNTKQorICAgICAg Z290byBmYWlsOworCisgICB3c2ktPkJlZ2luQ29tbWFuZEJ1ZmZlcigKKyAgICAgIGltYWdlLT50 aW1lc3RhbXBfYnVmZmVyLAorICAgICAgJihWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8pIHsKKyAg ICAgICAgIC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lO Rk8sCisgICAgICAgICAgICAuZmxhZ3MgPSAwCisgICAgICAgICAgICB9KTsKKworICAgd3NpLT5D bWRSZXNldFF1ZXJ5UG9vbChpbWFnZS0+dGltZXN0YW1wX2J1ZmZlciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgaW1hZ2UtPnF1ZXJ5X3Bvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAg IDAsIDEpOworCisgICB3c2ktPkNtZFdyaXRlVGltZXN0YW1wKGltYWdlLT50aW1lc3RhbXBfYnVm ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9BTExfQ09N TUFORFNfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+cXVlcnlfcG9vbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgIHdzaS0+RW5kQ29tbWFuZEJ1ZmZl cihpbWFnZS0+dGltZXN0YW1wX2J1ZmZlcik7CisKKyAgIHJldHVybiBWS19TVUNDRVNTOworZmFp bDoKKyAgIHJldHVybiByZXN1bHQ7Cit9CisKIFZrUmVzdWx0CiB3c2lfY3JlYXRlX25hdGl2ZV9p bWFnZShjb25zdCBzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqY2hhaW4sCiAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBWa1N3YXBjaGFpbkNyZWF0ZUluZm9LSFIgKnBDcmVhdGVJbmZvLApAQCAt NDE4LDYgKzQ5MCwxMCBAQCB3c2lfY3JlYXRlX25hdGl2ZV9pbWFnZShjb25zdCBzdHJ1Y3Qgd3Np X3N3YXBjaGFpbiAqY2hhaW4sCiAgICBpZiAocmVzdWx0ICE9IFZLX1NVQ0NFU1MpCiAgICAgICBn b3RvIGZhaWw7CiAKKyAgIHJlc3VsdCA9IHdzaV9pbWFnZV9pbml0X3RpbWVzdGFtcChjaGFpbiwg aW1hZ2UpOworICAgaWYgKHJlc3VsdCAhPSBWS19TVUNDRVNTKQorICAgICAgZ290byBmYWlsOwor CiAgICBpZiAobnVtX21vZGlmaWVyX2xpc3RzID4gMCkgewogICAgICAgaW1hZ2UtPmRybV9tb2Rp ZmllciA9IHdzaS0+aW1hZ2VfZ2V0X21vZGlmaWVyKGltYWdlLT5pbWFnZSk7CiAgICAgICBhc3Nl cnQoaW1hZ2UtPmRybV9tb2RpZmllciAhPSBEUk1fRk9STUFUX01PRF9JTlZBTElEKTsKQEAgLTY2 Myw2ICs3MzksMTAgQEAgd3NpX2NyZWF0ZV9wcmltZV9pbWFnZShjb25zdCBzdHJ1Y3Qgd3NpX3N3 YXBjaGFpbiAqY2hhaW4sCiAgICAgICAgICBnb3RvIGZhaWw7CiAgICB9CiAKKyAgIHJlc3VsdCA9 IHdzaV9pbWFnZV9pbml0X3RpbWVzdGFtcChjaGFpbiwgaW1hZ2UpOworICAgaWYgKHJlc3VsdCAh PSBWS19TVUNDRVNTKQorICAgICAgZ290byBmYWlsOworCiAgICBjb25zdCBWa01lbW9yeUdldEZk SW5mb0tIUiBsaW5lYXJfbWVtb3J5X2dldF9mZF9pbmZvID0gewogICAgICAgLnNUeXBlID0gVktf U1RSVUNUVVJFX1RZUEVfTUVNT1JZX0dFVF9GRF9JTkZPX0tIUiwKICAgICAgIC5wTmV4dCA9IE5V TEwsCkBAIC05MTMsNiArOTkzLDEyOCBAQCB3c2lfY29tbW9uX2FjcXVpcmVfbmV4dF9pbWFnZTIo Y29uc3Qgc3RydWN0IHdzaV9kZXZpY2UgKndzaSwKICAgIHJldHVybiBzd2FwY2hhaW4tPmFjcXVp cmVfbmV4dF9pbWFnZShzd2FwY2hhaW4sIHBBY3F1aXJlSW5mbywgcEltYWdlSW5kZXgpOwogfQog CitzdGF0aWMgc3RydWN0IHdzaV90aW1pbmcgKgord3NpX2dldF90aW1pbmcoc3RydWN0IHdzaV9z d2FwY2hhaW4gKmNoYWluLCB1aW50MzJfdCBpKQoreworICAgdWludDMyX3QgaiA9IFdTSV9USU1J TkdfSElTVE9SWSArIGNoYWluLT50aW1pbmdfaW5zZXJ0IC0KKyAgICAgIGNoYWluLT50aW1pbmdf Y291bnQgKyBpOworCisgICBpZiAoaiA+PSBXU0lfVElNSU5HX0hJU1RPUlkpCisgICAgICBqIC09 IFdTSV9USU1JTkdfSElTVE9SWTsKKyAgIHJldHVybiAmY2hhaW4tPnRpbWluZ1tqXTsKK30KKwor c3RhdGljIHN0cnVjdCB3c2lfdGltaW5nICoKK3dzaV9uZXh0X3RpbWluZyhzdHJ1Y3Qgd3NpX3N3 YXBjaGFpbiAqY2hhaW4sIGludCBpbWFnZV9pbmRleCkKK3sKKyAgIHVpbnQzMl90IGogPSBjaGFp bi0+dGltaW5nX2luc2VydDsKKyAgICsrY2hhaW4tPnRpbWluZ19pbnNlcnQ7CisgICBpZiAoY2hh aW4tPnRpbWluZ19pbnNlcnQgPj0gV1NJX1RJTUlOR19ISVNUT1JZKQorICAgICAgY2hhaW4tPnRp bWluZ19pbnNlcnQgPSAwOworICAgaWYgKGNoYWluLT50aW1pbmdfY291bnQgPCBXU0lfVElNSU5H X0hJU1RPUlkpCisgICAgICArK2NoYWluLT50aW1pbmdfY291bnQ7CisgICBzdHJ1Y3Qgd3NpX3Rp bWluZyAqdGltaW5nID0gJmNoYWluLT50aW1pbmdbal07CisgICBtZW1zZXQodGltaW5nLCAnXDAn LCBzaXplb2YgKCp0aW1pbmcpKTsKKyAgIHJldHVybiB0aW1pbmc7Cit9CisKK3ZvaWQKK3dzaV9t YXJrX3RpbWluZyhzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqc3dhcGNoYWluLAorICAgICAgICAgICAg ICAgIHN0cnVjdCB3c2lfaW1hZ2UgKmltYWdlLAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHVz dCwKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtc2MpCit7CisgICBjb25zdCBzdHJ1Y3Qgd3Np X2RldmljZSAqd3NpID0gc3dhcGNoYWluLT53c2k7CisgICBzdHJ1Y3Qgd3NpX3RpbWluZyAqdGlt aW5nID0gaW1hZ2UtPnRpbWluZzsKKworICAgaWYgKCF0aW1pbmcpCisgICAgICByZXR1cm47CisK KyAgIHVpbnQ2NF90IHJlbmRlcl90aW1lc3RhbXA7CisKKyAgIFZrUmVzdWx0IHJlc3VsdCA9IHdz aS0+R2V0UXVlcnlQb29sUmVzdWx0cygKKyAgICAgIHN3YXBjaGFpbi0+ZGV2aWNlLCBpbWFnZS0+ cXVlcnlfcG9vbCwKKyAgICAgIDAsIDEsIHNpemVvZihyZW5kZXJfdGltZXN0YW1wKSwgJnJlbmRl cl90aW1lc3RhbXAsCisgICAgICBzaXplb2YgKHVpbnQ2NF90KSwKKyAgICAgIFZLX1FVRVJZX1JF U1VMVF82NF9CSVR8VktfUVVFUllfUkVTVUxUX1dBSVRfQklUKTsKKyAgIGlmIChyZXN1bHQgIT0g VktfU1VDQ0VTUykKKyAgICAgIHJldHVybjsKKworICAgc3RhdGljIGNvbnN0IFZrQ2FsaWJyYXRl ZFRpbWVzdGFtcEluZm9FWFQgICAgdGltZXN0YW1wSW5mb1syXSA9IHsKKyAgICAgIHsKKyAgICAg ICAgIC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NBTElCUkFURURfVElNRVNUQU1QX0lORk9f RVhULAorICAgICAgICAgLnBOZXh0ID0gTlVMTCwKKyAgICAgICAgIC50aW1lRG9tYWluID0gVktf VElNRV9ET01BSU5fREVWSUNFX0VYVCwKKyAgICAgIH0sCisgICAgICB7CisgICAgICAgICAuc1R5 cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9DQUxJQlJBVEVEX1RJTUVTVEFNUF9JTkZPX0VYVCwKKyAg ICAgICAgIC5wTmV4dCA9IE5VTEwsCisgICAgICAgICAudGltZURvbWFpbiA9IFZLX1RJTUVfRE9N QUlOX0NMT0NLX01PTk9UT05JQ19FWFQsCisgICAgICB9LAorICAgfTsKKworICAgdWludDY0X3Qg ICAgIHRpbWVzdGFtcHNbMl07CisgICB1aW50NjRfdCAgICAgbWF4RGV2aWF0aW9uOworCisgICBy ZXN1bHQgPSB3c2ktPkdldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUKHN3YXBjaGFpbi0+ZGV2aWNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBJbmZvLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4RGV2aWF0aW9uKTsK KyAgIGlmIChyZXN1bHQgIT0gVktfU1VDQ0VTUykKKyAgICAgIHJldHVybjsKKworICAgdWludDY0 X3QgY3VycmVudF9ncHVfdGltZXN0YW1wID0gdGltZXN0YW1wc1swXTsKKyAgIHVpbnQ2NF90IGN1 cnJlbnRfdGltZSA9IHRpbWVzdGFtcHNbMV07CisKKyAgIFZrUmVmcmVzaEN5Y2xlRHVyYXRpb25H T09HTEUgZGlzcGxheV90aW1pbmdzOworICAgc3dhcGNoYWluLT5nZXRfcmVmcmVzaF9jeWNsZV9k dXJhdGlvbihzd2FwY2hhaW4sICZkaXNwbGF5X3RpbWluZ3MpOworCisgICB1aW50NjRfdCByZWZy ZXNoX2R1cmF0aW9uID0gZGlzcGxheV90aW1pbmdzLnJlZnJlc2hEdXJhdGlvbjsKKworICAgLyog V2hlbiBkaWQgZHJhd2luZyBjb21wbGV0ZSAoaW4gbnNlYykgKi8KKworICAgaW50NjRfdCBzaW5j ZV9yZW5kZXIgPSAoaW50NjRfdCkgZmxvb3IgKChkb3VibGUpIChjdXJyZW50X2dwdV90aW1lc3Rh bXAgLSByZW5kZXJfdGltZXN0YW1wKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGRvdWJsZSkgd3NpLT50aW1lc3RhbXBfcGVyaW9kICsgMC41KTsKKyAgIHVp bnQ2NF90IHJlbmRlcl90aW1lID0gY3VycmVudF90aW1lIC0gc2luY2VfcmVuZGVyOworCisgICBp ZiAocmVuZGVyX3RpbWUgPiB1c3QpCisgICAgICByZW5kZXJfdGltZSA9IHVzdDsKKworICAgdWlu dDY0X3QgcmVuZGVyX2ZyYW1lcyA9ICh1c3QgLSByZW5kZXJfdGltZSkgLyByZWZyZXNoX2R1cmF0 aW9uOworCisgICB1aW50NjRfdCBlYXJsaWVzdF90aW1lID0gdXN0IC0gcmVuZGVyX2ZyYW1lcyAq IHJlZnJlc2hfZHVyYXRpb247CisKKyAgIC8qIFVzZSB0aGUgcHJlc2VudGF0aW9uIG1vZGUgdG8g ZmlndXJlIG91dCB3aGVuIHRoZSBpbWFnZSBjb3VsZCBoYXZlIGJlZW4KKyAgICAqIGRpc3BsYXll ZC4gSXQgY291bGRuJ3QgaGF2ZSBiZWVuIGRpc3BsYXllZCBiZWZvcmUgdGhlIHByZXZpb3VzIGlt YWdlLCBzbworICAgICogdXNlIHRoYXQgYXMgYSBsb3dlciBib3VuZC4gSWYgd2UncmUgaW4gRklG TyBtb2RlLCB0aGVuIGl0IGNvdWxkbid0IGhhdmUKKyAgICAqIGJlZW4gZGlzcGxheWVkIGJlZm9y ZSBvbmUgZnJhbWUgKmFmdGVyKiB0aGUgcHJldmlvdXMgaW1hZ2UKKyAgICAqLworICAgdWludDY0 X3QgcG9zc2libGVfZnJhbWUgPSBzd2FwY2hhaW4tPmZyYW1lX3VzdDsKKworICAgc3dpdGNoIChz d2FwY2hhaW4tPnByZXNlbnRfbW9kZSkgeworICAgY2FzZSBWS19QUkVTRU5UX01PREVfRklGT19L SFI6CisgICBjYXNlIFZLX1BSRVNFTlRfTU9ERV9GSUZPX1JFTEFYRURfS0hSOgorICAgICAgcG9z c2libGVfZnJhbWUgKz0gcmVmcmVzaF9kdXJhdGlvbjsKKyAgICAgIGJyZWFrOworICAgZGVmYXVs dDoKKyAgICAgIGJyZWFrOworICAgfQorICAgaWYgKGVhcmxpZXN0X3RpbWUgPCBwb3NzaWJsZV9m cmFtZSkKKyAgICAgIGVhcmxpZXN0X3RpbWUgPSBwb3NzaWJsZV9mcmFtZTsKKworICAgaWYgKGVh cmxpZXN0X3RpbWUgPiB1c3QpCisgICAgICBlYXJsaWVzdF90aW1lID0gdXN0OworCisgICB0aW1p bmctPnRpbWluZy5hY3R1YWxQcmVzZW50VGltZSA9IHVzdDsKKyAgIHRpbWluZy0+dGltaW5nLmVh cmxpZXN0UHJlc2VudFRpbWUgPSBlYXJsaWVzdF90aW1lOworICAgdGltaW5nLT50aW1pbmcucHJl c2VudE1hcmdpbiA9IGVhcmxpZXN0X3RpbWUgLSByZW5kZXJfdGltZTsKKyAgIHRpbWluZy0+Y29t cGxldGUgPSB0cnVlOworCisgICBzd2FwY2hhaW4tPmZyYW1lX21zYyA9IG1zYzsKKyAgIHN3YXBj aGFpbi0+ZnJhbWVfdXN0ID0gdXN0OworfQorCiBWa1Jlc3VsdAogd3NpX2NvbW1vbl9xdWV1ZV9w cmVzZW50KGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2ksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgVmtEZXZpY2UgZGV2aWNlLApAQCAtOTI0LDEwICsxMTI2LDEzIEBAIHdzaV9jb21tb25f cXVldWVfcHJlc2VudChjb25zdCBzdHJ1Y3Qgd3NpX2RldmljZSAqd3NpLAogCiAgICBjb25zdCBW a1ByZXNlbnRSZWdpb25zS0hSICpyZWdpb25zID0KICAgICAgIHZrX2ZpbmRfc3RydWN0X2NvbnN0 KHBQcmVzZW50SW5mby0+cE5leHQsIFBSRVNFTlRfUkVHSU9OU19LSFIpOworICAgY29uc3QgVmtQ cmVzZW50VGltZXNJbmZvR09PR0xFICpwcmVzZW50X3RpbWVzX2luZm8gPQorICAgICAgdmtfZmlu ZF9zdHJ1Y3RfY29uc3QocFByZXNlbnRJbmZvLT5wTmV4dCwgUFJFU0VOVF9USU1FU19JTkZPX0dP T0dMRSk7CiAKICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBwUHJlc2VudEluZm8tPnN3YXBj aGFpbkNvdW50OyBpKyspIHsKICAgICAgIFdTSV9GUk9NX0hBTkRMRSh3c2lfc3dhcGNoYWluLCBz d2FwY2hhaW4sIHBQcmVzZW50SW5mby0+cFN3YXBjaGFpbnNbaV0pOwogICAgICAgVmtSZXN1bHQg cmVzdWx0OworICAgICAgc3RydWN0IHdzaV90aW1pbmcgKnRpbWluZyA9IE5VTEw7CiAKICAgICAg IGlmIChzd2FwY2hhaW4tPmZlbmNlc1swXSA9PSBWS19OVUxMX0hBTkRMRSkgewogICAgICAgICAg Y29uc3QgVmtGZW5jZUNyZWF0ZUluZm8gZmVuY2VfaW5mbyA9IHsKQEAgLTk0NCw5ICsxMTQ5LDEy IEBAIHdzaV9jb21tb25fcXVldWVfcHJlc2VudChjb25zdCBzdHJ1Y3Qgd3NpX2RldmljZSAqd3Np LAogICAgICAgICAgd3NpLT5SZXNldEZlbmNlcyhkZXZpY2UsIDEsICZzd2FwY2hhaW4tPmZlbmNl c1swXSk7CiAgICAgICB9CiAKKyAgICAgIFZrQ29tbWFuZEJ1ZmZlciBzdWJtaXRfYnVmZmVyc1sy XTsKICAgICAgIFZrU3VibWl0SW5mbyBzdWJtaXRfaW5mbyA9IHsKICAgICAgICAgIC5zVHlwZSA9 IFZLX1NUUlVDVFVSRV9UWVBFX1NVQk1JVF9JTkZPLAogICAgICAgICAgLnBOZXh0ID0gTlVMTCwK KyAgICAgICAgIC5wQ29tbWFuZEJ1ZmZlcnMgPSBzdWJtaXRfYnVmZmVycywKKyAgICAgICAgIC5j b21tYW5kQnVmZmVyQ291bnQgPSAwCiAgICAgICB9OwogCiAgICAgICBWa1BpcGVsaW5lU3RhZ2VG bGFncyAqc3RhZ2VfZmxhZ3MgPSBOVUxMOwpAQCAtOTc5LDkgKzExODcsNDkgQEAgd3NpX2NvbW1v bl9xdWV1ZV9wcmVzZW50KGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2ksCiAgICAgICAgICAg Ki8KICAgICAgICAgIHN0cnVjdCB3c2lfaW1hZ2UgKmltYWdlID0KICAgICAgICAgICAgIHN3YXBj aGFpbi0+Z2V0X3dzaV9pbWFnZShzd2FwY2hhaW4sIHBQcmVzZW50SW5mby0+cEltYWdlSW5kaWNl c1tpXSk7Ci0gICAgICAgICBzdWJtaXRfaW5mby5jb21tYW5kQnVmZmVyQ291bnQgPSAxOwotICAg ICAgICAgc3VibWl0X2luZm8ucENvbW1hbmRCdWZmZXJzID0KLSAgICAgICAgICAgICZpbWFnZS0+ cHJpbWUuYmxpdF9jbWRfYnVmZmVyc1txdWV1ZV9mYW1pbHlfaW5kZXhdOworICAgICAgICAgc3Vi bWl0X2J1ZmZlcnNbc3VibWl0X2luZm8uY29tbWFuZEJ1ZmZlckNvdW50KytdID0gCisgICAgICAg ICAgICBpbWFnZS0+cHJpbWUuYmxpdF9jbWRfYnVmZmVyc1txdWV1ZV9mYW1pbHlfaW5kZXhdOwor ICAgICAgfQorCisgICAgICAvKiBTZXQgdXAgR09PR0xFX2Rpc3BsYXlfdGltaW5nIGJpdHMgKi8K KyAgICAgIGlmIChwcmVzZW50X3RpbWVzX2luZm8gJiYKKyAgICAgICAgICBwcmVzZW50X3RpbWVz X2luZm8tPnBUaW1lcyAhPSBOVUxMICYmCisgICAgICAgICAgaSA8IHByZXNlbnRfdGltZXNfaW5m by0+c3dhcGNoYWluQ291bnQpCisgICAgICB7CisgICAgICAgICBjb25zdCBWa1ByZXNlbnRUaW1l R09PR0xFICpwcmVzZW50X3RpbWUgPQorICAgICAgICAgICAgJnByZXNlbnRfdGltZXNfaW5mby0+ cFRpbWVzW2ldOworCisgICAgICAgICBzdHJ1Y3Qgd3NpX2ltYWdlICppbWFnZSA9CisgICAgICAg ICAgICBzd2FwY2hhaW4tPmdldF93c2lfaW1hZ2Uoc3dhcGNoYWluLCBwUHJlc2VudEluZm8tPnBJ bWFnZUluZGljZXNbaV0pOworCisgICAgICAgICB0aW1pbmcgPSB3c2lfbmV4dF90aW1pbmcoc3dh cGNoYWluLCBwUHJlc2VudEluZm8tPnBJbWFnZUluZGljZXNbaV0pOworICAgICAgICAgdGltaW5n LT50aW1pbmcucHJlc2VudElEID0gcHJlc2VudF90aW1lLT5wcmVzZW50SUQ7CisgICAgICAgICB0 aW1pbmctPnRpbWluZy5kZXNpcmVkUHJlc2VudFRpbWUgPSBwcmVzZW50X3RpbWUtPmRlc2lyZWRQ cmVzZW50VGltZTsKKyAgICAgICAgIHRpbWluZy0+dGFyZ2V0X21zYyA9IDA7CisgICAgICAgICBp bWFnZS0+dGltaW5nID0gdGltaW5nOworCisgICAgICAgICBpZiAocHJlc2VudF90aW1lLT5kZXNp cmVkUHJlc2VudFRpbWUgIT0gMCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgIGludDY0X3QgZGVs dGFfbnNlYyA9IChpbnQ2NF90KSAocHJlc2VudF90aW1lLT5kZXNpcmVkUHJlc2VudFRpbWUgLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwY2hhaW4tPmZy YW1lX3VzdCk7CisKKyAgICAgICAgICAgIC8qIFNldCB0aGUgdGFyZ2V0IG1zYyBvbmx5IGlmIGl0 J3Mgbm8gbW9yZSB0aGFuIHR3byBzZWNvbmRzIGZyb20KKyAgICAgICAgICAgICAqIG5vdywgYW5k IG5vdCBzdGFsZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoMCA8PSBkZWx0YV9u c2VjICYmIGRlbHRhX25zZWMgPD0gMjAwMDAwMDAwMHVsKSB7CisgICAgICAgICAgICAgICBWa1Jl ZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFIHJlZnJlc2hfdGltaW5nOworCisgICAgICAgICAgICAg ICBzd2FwY2hhaW4tPmdldF9yZWZyZXNoX2N5Y2xlX2R1cmF0aW9uKHN3YXBjaGFpbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlZnJlc2hf dGltaW5nKTsKKworICAgICAgICAgICAgICAgaW50NjRfdCByZWZyZXNoID0gKGludDY0X3QpIHJl ZnJlc2hfdGltaW5nLnJlZnJlc2hEdXJhdGlvbjsKKyAgICAgICAgICAgICAgIGludDY0X3QgZnJh bWVzID0gKGRlbHRhX25zZWMgKyByZWZyZXNoLzIpIC8gcmVmcmVzaDsKKyAgICAgICAgICAgICAg IHRpbWluZy0+dGFyZ2V0X21zYyA9IHN3YXBjaGFpbi0+ZnJhbWVfbXNjICsgZnJhbWVzOworICAg ICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICBzdWJtaXRfYnVmZmVyc1tzdWJtaXRf aW5mby5jb21tYW5kQnVmZmVyQ291bnQrK10gPQorICAgICAgICAgICAgaW1hZ2UtPnRpbWVzdGFt cF9idWZmZXI7CiAgICAgICB9CiAKICAgICAgIHJlc3VsdCA9IHdzaS0+UXVldWVTdWJtaXQocXVl dWUsIDEsICZzdWJtaXRfaW5mbywgc3dhcGNoYWluLT5mZW5jZXNbMF0pOwpAQCAtMTAxOSwzICsx MjY3LDUyIEBAIHdzaV9jb21tb25fcXVldWVfcHJlc2VudChjb25zdCBzdHJ1Y3Qgd3NpX2Rldmlj ZSAqd3NpLAogCiAgICByZXR1cm4gZmluYWxfcmVzdWx0OwogfQorCitWa1Jlc3VsdAord3NpX2Nv bW1vbl9nZXRfcmVmcmVzaF9jeWNsZV9kdXJhdGlvbigKKyAgIGNvbnN0IHN0cnVjdCB3c2lfZGV2 aWNlICp3c2ksCisgICBWa0RldmljZSBkZXZpY2VfaCwKKyAgIFZrU3dhcGNoYWluS0hSIF9zd2Fw Y2hhaW4sCisgICBWa1JlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFICpwRGlzcGxheVRpbWluZ1By b3BlcnRpZXMpCit7CisgICBXU0lfRlJPTV9IQU5ETEUod3NpX3N3YXBjaGFpbiwgc3dhcGNoYWlu LCBfc3dhcGNoYWluKTsKKworICAgaWYgKCFzd2FwY2hhaW4tPmdldF9yZWZyZXNoX2N5Y2xlX2R1 cmF0aW9uKQorICAgICAgcmV0dXJuIFZLX0VSUk9SX0VYVEVOU0lPTl9OT1RfUFJFU0VOVDsKKyAg IHJldHVybiBzd2FwY2hhaW4tPmdldF9yZWZyZXNoX2N5Y2xlX2R1cmF0aW9uKHN3YXBjaGFpbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEaXNwbGF5 VGltaW5nUHJvcGVydGllcyk7Cit9CisKKworVmtSZXN1bHQKK3dzaV9jb21tb25fZ2V0X3Bhc3Rf cHJlc2VudGF0aW9uX3RpbWluZygKKyAgIGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2ksCisg ICBWa0RldmljZSBkZXZpY2VfaCwKKyAgIFZrU3dhcGNoYWluS0hSIF9zd2FwY2hhaW4sCisgICB1 aW50MzJfdCAqY291bnQsCisgICBWa1Bhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUgKnRpbWlu Z3MpCit7CisgICBXU0lfRlJPTV9IQU5ETEUod3NpX3N3YXBjaGFpbiwgc3dhcGNoYWluLCBfc3dh cGNoYWluKTsKKyAgIHVpbnQzMl90IHRpbWluZ19jb3VudF9yZXF1ZXN0ZWQgPSAqY291bnQ7Cisg ICB1aW50MzJfdCB0aW1pbmdfY291bnRfYXZhaWxhYmxlID0gMDsKKworICAgLyogQ291bnQgdGhl IG51bWJlciBvZiBjb21wbGV0ZWQgZW50cmllcywgY29weSAqLworICAgZm9yICh1aW50MzJfdCB0 ID0gMDsgdCA8IHN3YXBjaGFpbi0+dGltaW5nX2NvdW50OyB0KyspIHsKKyAgICAgIHN0cnVjdCB3 c2lfdGltaW5nICp0aW1pbmcgPSB3c2lfZ2V0X3RpbWluZyhzd2FwY2hhaW4sIHQpOworCisgICAg ICBpZiAodGltaW5nLT5jb21wbGV0ZSAmJiAhdGltaW5nLT5jb25zdW1lZCkgeworICAgICAgICAg aWYgKHRpbWluZ3MgJiYgdGltaW5nX2NvdW50X2F2YWlsYWJsZSA8IHRpbWluZ19jb3VudF9yZXF1 ZXN0ZWQpIHsKKyAgICAgICAgICAgIHRpbWluZ3NbdGltaW5nX2NvdW50X2F2YWlsYWJsZV0gPSB0 aW1pbmctPnRpbWluZzsKKyAgICAgICAgICAgIHRpbWluZy0+Y29uc3VtZWQgPSB0cnVlOworICAg ICAgICAgfQorICAgICAgICAgdGltaW5nX2NvdW50X2F2YWlsYWJsZSsrOworICAgICAgfQorICAg fQorCisgICAqY291bnQgPSB0aW1pbmdfY291bnRfYXZhaWxhYmxlOworCisgICBpZiAodGltaW5n X2NvdW50X2F2YWlsYWJsZSA+IHRpbWluZ19jb3VudF9yZXF1ZXN0ZWQgJiYgdGltaW5ncyAhPSBO VUxMKQorICAgICAgcmV0dXJuIFZLX0lOQ09NUExFVEU7CisKKyAgIHJldHVybiBWS19TVUNDRVNT OworfQpkaWZmIC0tZ2l0IGEvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbi5oIGIvc3JjL3Z1bGth bi93c2kvd3NpX2NvbW1vbi5oCmluZGV4IGY2Y2EwMTNjMmE4Li5mMDdjZjNhNTg4MCAxMDA2NDQK LS0tIGEvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbi5oCisrKyBiL3NyYy92dWxrYW4vd3NpL3dz aV9jb21tb24uaApAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3Qgd3NpX2RldmljZSB7CiAgICBWa1Bo eXNpY2FsRGV2aWNlIHBkZXZpY2U7CiAgICBWa1BoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGll cyBtZW1vcnlfcHJvcHM7CiAgICB1aW50MzJfdCBxdWV1ZV9mYW1pbHlfY291bnQ7CisgICBmbG9h dCB0aW1lc3RhbXBfcGVyaW9kOwogCiAgICBWa1BoeXNpY2FsRGV2aWNlUENJQnVzSW5mb1Byb3Bl cnRpZXNFWFQgcGNpX2J1c19pbmZvOwogCkBAIC0xMDksMTQgKzExMCwxOCBAQCBzdHJ1Y3Qgd3Np X2RldmljZSB7CiAgICBXU0lfQ0IoQmluZEltYWdlTWVtb3J5KTsKICAgIFdTSV9DQihCZWdpbkNv bW1hbmRCdWZmZXIpOwogICAgV1NJX0NCKENtZENvcHlJbWFnZVRvQnVmZmVyKTsKKyAgIFdTSV9D QihDbWRSZXNldFF1ZXJ5UG9vbCk7CisgICBXU0lfQ0IoQ21kV3JpdGVUaW1lc3RhbXApOwogICAg V1NJX0NCKENyZWF0ZUJ1ZmZlcik7CiAgICBXU0lfQ0IoQ3JlYXRlQ29tbWFuZFBvb2wpOwogICAg V1NJX0NCKENyZWF0ZUZlbmNlKTsKICAgIFdTSV9DQihDcmVhdGVJbWFnZSk7CisgICBXU0lfQ0Io Q3JlYXRlUXVlcnlQb29sKTsKICAgIFdTSV9DQihEZXN0cm95QnVmZmVyKTsKICAgIFdTSV9DQihE ZXN0cm95Q29tbWFuZFBvb2wpOwogICAgV1NJX0NCKERlc3Ryb3lGZW5jZSk7CiAgICBXU0lfQ0Io RGVzdHJveUltYWdlKTsKKyAgIFdTSV9DQihEZXN0cm95UXVlcnlQb29sKTsKICAgIFdTSV9DQihF bmRDb21tYW5kQnVmZmVyKTsKICAgIFdTSV9DQihGcmVlTWVtb3J5KTsKICAgIFdTSV9DQihGcmVl Q29tbWFuZEJ1ZmZlcnMpOwpAQCAtMTI0LDEwICsxMjksMTQgQEAgc3RydWN0IHdzaV9kZXZpY2Ug ewogICAgV1NJX0NCKEdldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzKTsKICAgIFdTSV9DQihHZXRJ bWFnZVN1YnJlc291cmNlTGF5b3V0KTsKICAgIFdTSV9DQihHZXRNZW1vcnlGZEtIUik7CisgICBX U0lfQ0IoR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzKTsKICAgIFdTSV9DQihHZXRQaHlzaWNh bERldmljZUZvcm1hdFByb3BlcnRpZXMpOwogICAgV1NJX0NCKEdldFBoeXNpY2FsRGV2aWNlRm9y bWF0UHJvcGVydGllczJLSFIpOworICAgV1NJX0NCKEdldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1p bHlQcm9wZXJ0aWVzKTsKKyAgIFdTSV9DQihHZXRRdWVyeVBvb2xSZXN1bHRzKTsKICAgIFdTSV9D QihSZXNldEZlbmNlcyk7CiAgICBXU0lfQ0IoUXVldWVTdWJtaXQpOworICAgV1NJX0NCKEdldENh bGlicmF0ZWRUaW1lc3RhbXBzRVhUKTsKICAgIFdTSV9DQihXYWl0Rm9yRmVuY2VzKTsKICN1bmRl ZiBXU0lfQ0IKIApAQCAtMjQxLDQgKzI1MCwyNyBAQCB3c2lfY29tbW9uX3F1ZXVlX3ByZXNlbnQo Y29uc3Qgc3RydWN0IHdzaV9kZXZpY2UgKndzaSwKICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgcXVldWVfZmFtaWx5X2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZr UHJlc2VudEluZm9LSFIgKnBQcmVzZW50SW5mbyk7CiAKK1ZrUmVzdWx0Cit3c2lfY29tbW9uX2Nv bnZlcnRfdGltZXN0YW1wKGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2ksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlIGRldmljZV9oLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBWa1N1cmZhY2VLSFIgc3VyZmFjZV9oLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBtb25vdG9uaWNfdGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCAqc3VyZmFjZV90aW1lc3RhbXApOworCisvKiBWS19HT09HTEVf ZGlzcGxheV90aW1pbmcgKi8KK1ZrUmVzdWx0Cit3c2lfY29tbW9uX2dldF9yZWZyZXNoX2N5Y2xl X2R1cmF0aW9uKGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2ksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlIGRldmljZV9oLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWa1N3YXBjaGFpbktIUiBzd2FwY2hhaW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUmVmcmVzaEN5Y2xlRHVyYXRpb25HT09H TEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBEaXNwbGF5VGltaW5n UHJvcGVydGllcyk7CisKK1ZrUmVzdWx0Cit3c2lfY29tbW9uX2dldF9wYXN0X3ByZXNlbnRhdGlv bl90aW1pbmcoY29uc3Qgc3RydWN0IHdzaV9kZXZpY2UgKndzaSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZSBkZXZpY2VfaCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWa1N3YXBjaGFpbktIUiBzd2FwY2hhaW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnBQcmVzZW50YXRp b25UaW1pbmdDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW a1Bhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqcFByZXNlbnRhdGlvblRpbWluZ3MpOworCiAjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy92dWxrYW4vd3NpL3dzaV9jb21tb25fZGlzcGxheS5jIGIvc3JjL3Z1bGthbi93c2kv d3NpX2NvbW1vbl9kaXNwbGF5LmMKaW5kZXggZmQwZDMwYWQ4MGMuLjVmNGQxNmJmMTdiIDEwMDY0 NAotLS0gYS9zcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uX2Rpc3BsYXkuYworKysgYi9zcmMvdnVs a2FuL3dzaS93c2lfY29tbW9uX2Rpc3BsYXkuYwpAQCAtNzYsNiArNzYsOCBAQCB0eXBlZGVmIHN0 cnVjdCB3c2lfZGlzcGxheV9jb25uZWN0b3IgewogICAgY2hhciAgICAgICAgICAgICAgICAgICAg ICAgICAqbmFtZTsKICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkOwog ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU7CisgICB1aW50NjRfdCAgICAg ICAgICAgICAgICAgICAgIGxhc3RfZnJhbWU7CisgICB1aW50NjRfdCAgICAgICAgICAgICAgICAg ICAgIGxhc3RfbnNlYzsKICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgICAgICAgZGlzcGxheV9t b2RlczsKICAgIHdzaV9kaXNwbGF5X21vZGUgICAgICAgICAgICAgKmN1cnJlbnRfbW9kZTsKICAg IGRybU1vZGVNb2RlSW5mbyAgICAgICAgICAgICAgY3VycmVudF9kcm1fbW9kZTsKQEAgLTExMCw2 ICsxMTIsNyBAQCBzdHJ1Y3Qgd3NpX2Rpc3BsYXkgewogZW51bSB3c2lfaW1hZ2Vfc3RhdGUgewog ICAgV1NJX0lNQUdFX0lETEUsCiAgICBXU0lfSU1BR0VfRFJBV0lORywKKyAgIFdTSV9JTUFHRV9X QUlUSU5HLAogICAgV1NJX0lNQUdFX1FVRVVFRCwKICAgIFdTSV9JTUFHRV9GTElQUElORywKICAg IFdTSV9JTUFHRV9ESVNQTEFZSU5HCkBAIC0xMTksNiArMTIyLDcgQEAgc3RydWN0IHdzaV9kaXNw bGF5X2ltYWdlIHsKICAgIHN0cnVjdCB3c2lfaW1hZ2UgICAgICAgICAgICAgYmFzZTsKICAgIHN0 cnVjdCB3c2lfZGlzcGxheV9zd2FwY2hhaW4gKmNoYWluOwogICAgZW51bSB3c2lfaW1hZ2Vfc3Rh dGUgICAgICAgICBzdGF0ZTsKKyAgIHN0cnVjdCB3c2lfZGlzcGxheV9mZW5jZSAgICAgKmZlbmNl OwogICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICBmYl9pZDsKICAgIHVpbnQzMl90ICAg ICAgICAgICAgICAgICAgICAgYnVmZmVyWzRdOwogICAgdWludDY0X3QgICAgICAgICAgICAgICAg ICAgICBmbGlwX3NlcXVlbmNlOwpAQCAtMTI5LDYgKzEzMyw3IEBAIHN0cnVjdCB3c2lfZGlzcGxh eV9zd2FwY2hhaW4gewogICAgc3RydWN0IHdzaV9kaXNwbGF5ICAgICAgICAgICAqd3NpOwogICAg VmtJY2RTdXJmYWNlRGlzcGxheSAgICAgICAgICAqc3VyZmFjZTsKICAgIHVpbnQ2NF90ICAgICAg ICAgICAgICAgICAgICAgZmxpcF9zZXF1ZW5jZTsKKyAgIGNvbnN0IFZrQWxsb2NhdGlvbkNhbGxi YWNrcyAgKmFsbG9jYXRvcjsKICAgIFZrUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgc3RhdHVz OwogICAgc3RydWN0IHdzaV9kaXNwbGF5X2ltYWdlICAgICBpbWFnZXNbMF07CiB9OwpAQCAtMTM4 LDYgKzE0Myw3IEBAIHN0cnVjdCB3c2lfZGlzcGxheV9mZW5jZSB7CiAgICBib29sICAgICAgICAg ICAgICAgICAgICAgICAgIGV2ZW50X3JlY2VpdmVkOwogICAgYm9vbCAgICAgICAgICAgICAgICAg ICAgICAgICBkZXN0cm95ZWQ7CiAgICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgIHNlcXVl bmNlOworICAgc3RydWN0IHdzaV9kaXNwbGF5X2ltYWdlICAgICAqaW1hZ2U7CiB9OwogCiBzdGF0 aWMgdWludDY0X3QgZmVuY2Vfc2VxdWVuY2U7CkBAIC0xMDA2LDYgKzEwMTIsNyBAQCB3c2lfZGlz cGxheV9pbWFnZV9pbml0KFZrRGV2aWNlIGRldmljZV9oLAogCiAgICBpbWFnZS0+Y2hhaW4gPSBj aGFpbjsKICAgIGltYWdlLT5zdGF0ZSA9IFdTSV9JTUFHRV9JRExFOworICAgaW1hZ2UtPmZlbmNl ID0gTlVMTDsKICAgIGltYWdlLT5mYl9pZCA9IDA7CiAKICAgIGludCByZXQgPSBkcm1Nb2RlQWRk RkIyKHdzaS0+ZmQsCkBAIC0xMDk1LDYgKzExMDIsMTEgQEAgd3NpX2Rpc3BsYXlfaWRsZV9vbGRf ZGlzcGxheWluZyhzdHJ1Y3Qgd3NpX2Rpc3BsYXlfaW1hZ2UgKmFjdGl2ZV9pbWFnZSkKIHN0YXRp YyBWa1Jlc3VsdAogX3dzaV9kaXNwbGF5X3F1ZXVlX25leHQoc3RydWN0IHdzaV9zd2FwY2hhaW4g KmRydl9jaGFpbik7CiAKK3N0YXRpYyB1aW50NjRfdCB3aWRlbl8zMl90b182NCh1aW50MzJfdCBu YXJyb3csIHVpbnQ2NF90IG5lYXIpCit7CisJcmV0dXJuIG5lYXIgKyAoaW50MzJfdCkgKG5hcnJv dyAtIG5lYXIpOworfQorCiBzdGF0aWMgdm9pZAogd3NpX2Rpc3BsYXlfcGFnZV9mbGlwX2hhbmRs ZXIyKGludCBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg ZnJhbWUsCkBAIC0xMTA1LDE3ICsxMTE3LDM4IEBAIHdzaV9kaXNwbGF5X3BhZ2VfZmxpcF9oYW5k bGVyMihpbnQgZmQsCiB7CiAgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfaW1hZ2UgKmltYWdlID0gZGF0 YTsKICAgIHN0cnVjdCB3c2lfZGlzcGxheV9zd2FwY2hhaW4gKmNoYWluID0gaW1hZ2UtPmNoYWlu OworICAgVmtJY2RTdXJmYWNlRGlzcGxheSAqc3VyZmFjZSA9IGNoYWluLT5zdXJmYWNlOworICAg d3NpX2Rpc3BsYXlfbW9kZSAqZGlzcGxheV9tb2RlID0KKyAgICAgIHdzaV9kaXNwbGF5X21vZGVf ZnJvbV9oYW5kbGUoc3VyZmFjZS0+ZGlzcGxheU1vZGUpOworICAgd3NpX2Rpc3BsYXlfY29ubmVj dG9yICpjb25uZWN0b3IgPSBkaXNwbGF5X21vZGUtPmNvbm5lY3RvcjsKKyAgIHVpbnQ2NF90IG5z ZWMgPSAodWludDY0X3QpIHNlYyAqIDEwMDAwMDAwMDB1bGwgKyAodWludDY0X3QpIHVzZWMgKiAx MDAwOwogCiAgICB3c2lfZGlzcGxheV9kZWJ1ZygiaW1hZ2UgJWxkIGRpc3BsYXllZCBhdCAlZFxu IiwKICAgICAgICAgICAgICAgICAgICAgIGltYWdlIC0gJihpbWFnZS0+Y2hhaW4tPmltYWdlc1sw XSksIGZyYW1lKTsKKworICAgLyogRG9uJ3QgbGV0IHRpbWUgZ28gYmFja3dhcmRzIGJlY2F1c2Ug dGhpcyBmdW5jdGlvbiBoYXMgbG93ZXIgcmVzb2x1dGlvbgorICAgICogdGhhbiBrdGltZSAqLwor CisgICBpZiAobnNlYyA8IGNvbm5lY3Rvci0+bGFzdF9uc2VjKQorICAgICAgbnNlYyA9IGNvbm5l Y3Rvci0+bGFzdF9uc2VjOworCiAgICBpbWFnZS0+c3RhdGUgPSBXU0lfSU1BR0VfRElTUExBWUlO RzsKKworICAgdWludDY0X3QgZnJhbWU2NCA9IHdpZGVuXzMyX3RvXzY0KGZyYW1lLCBjb25uZWN0 b3ItPmxhc3RfZnJhbWUpOworCisgICBjb25uZWN0b3ItPmxhc3RfZnJhbWUgPSBmcmFtZTY0Owor ICAgY29ubmVjdG9yLT5sYXN0X25zZWMgPSBuc2VjOworICAgd3NpX21hcmtfdGltaW5nKCZpbWFn ZS0+Y2hhaW4tPmJhc2UsICZpbWFnZS0+YmFzZSwKKyAgICAgICAgICAgICAgICAgICBuc2VjLCBm cmFtZTY0KTsKICAgIHdzaV9kaXNwbGF5X2lkbGVfb2xkX2Rpc3BsYXlpbmcoaW1hZ2UpOwogICAg VmtSZXN1bHQgcmVzdWx0ID0gX3dzaV9kaXNwbGF5X3F1ZXVlX25leHQoJihjaGFpbi0+YmFzZSkp OwogICAgaWYgKHJlc3VsdCAhPSBWS19TVUNDRVNTKQogICAgICAgY2hhaW4tPnN0YXR1cyA9IHJl c3VsdDsKIH0KIAotc3RhdGljIHZvaWQgd3NpX2Rpc3BsYXlfZmVuY2VfZXZlbnRfaGFuZGxlcihz dHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNlKTsKK3N0YXRpYyB2b2lkIHdzaV9kaXNwbGF5 X2ZlbmNlX2V2ZW50X2hhbmRsZXIoc3RydWN0IHdzaV9kaXNwbGF5X2ZlbmNlICpmZW5jZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbnNlYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZnJh bWUpOwogCiBzdGF0aWMgdm9pZCB3c2lfZGlzcGxheV9wYWdlX2ZsaXBfaGFuZGxlcihpbnQgZmQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg ZnJhbWUsCkBAIC0xMTMxLDggKzExNjQsMTcgQEAgc3RhdGljIHZvaWQgd3NpX2Rpc3BsYXlfdmJs YW5rX2hhbmRsZXIoaW50IGZkLCB1bnNpZ25lZCBpbnQgZnJhbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQogewogICAgc3RydWN0IHdzaV9kaXNw bGF5X2ZlbmNlICpmZW5jZSA9IGRhdGE7CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfY29ubmVjdG9y ICpjb25uZWN0b3IgPQorICAgICAgd3NpX2Rpc3BsYXlfY29ubmVjdG9yX2Zyb21faGFuZGxlKGZl bmNlLT5iYXNlLmRpc3BsYXkpOworICAgdWludDY0X3QgZnJhbWU2NCA9IHdpZGVuXzMyX3RvXzY0 KGZyYW1lLCBjb25uZWN0b3ItPmxhc3RfZnJhbWUpOworICAgdWludDY0X3QgbnNlYyA9ICh1aW50 NjRfdCkgc2VjICogMTAwMDAwMDAwMCArICh1aW50NjRfdCkgdXNlYyAqIDEwMDA7CiAKLSAgIHdz aV9kaXNwbGF5X2ZlbmNlX2V2ZW50X2hhbmRsZXIoZmVuY2UpOworICAgLyogRG9uJ3QgbGV0IHRp bWUgZ28gYmFja3dhcmRzIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBoYXMgbG93ZXIgcmVzb2x1dGlv bgorICAgICogdGhhbiBrdGltZSAqLworICAgaWYgKG5zZWMgPCBjb25uZWN0b3ItPmxhc3RfbnNl YykKKyAgICAgIG5zZWMgPSBjb25uZWN0b3ItPmxhc3RfbnNlYzsKKworICAgd3NpX2Rpc3BsYXlf ZmVuY2VfZXZlbnRfaGFuZGxlcihmZW5jZSwgbnNlYywgZnJhbWU2NCk7CiB9CiAKIHN0YXRpYyB2 b2lkIHdzaV9kaXNwbGF5X3NlcXVlbmNlX2hhbmRsZXIoaW50IGZkLCB1aW50NjRfdCBmcmFtZSwK QEAgLTExNDEsNyArMTE4Myw3IEBAIHN0YXRpYyB2b2lkIHdzaV9kaXNwbGF5X3NlcXVlbmNlX2hh bmRsZXIoaW50IGZkLCB1aW50NjRfdCBmcmFtZSwKICAgIHN0cnVjdCB3c2lfZGlzcGxheV9mZW5j ZSAqZmVuY2UgPQogICAgICAgKHN0cnVjdCB3c2lfZGlzcGxheV9mZW5jZSAqKSAodWludHB0cl90 KSB1c2VyX2RhdGE7CiAKLSAgIHdzaV9kaXNwbGF5X2ZlbmNlX2V2ZW50X2hhbmRsZXIoZmVuY2Up OworICAgd3NpX2Rpc3BsYXlfZmVuY2VfZXZlbnRfaGFuZGxlcihmZW5jZSwgbnNlYywgZnJhbWUp OwogfQogCiBzdGF0aWMgZHJtRXZlbnRDb250ZXh0IGV2ZW50X2NvbnRleHQgPSB7CkBAIC0xNDcz LDEyICsxNTE1LDMxIEBAIHdzaV9kaXNwbGF5X2ZlbmNlX2NoZWNrX2ZyZWUoc3RydWN0IHdzaV9k aXNwbGF5X2ZlbmNlICpmZW5jZSkKICAgICAgIHZrX2ZyZWUoZmVuY2UtPmJhc2UuYWxsb2MsIGZl bmNlKTsKIH0KIAotc3RhdGljIHZvaWQgd3NpX2Rpc3BsYXlfZmVuY2VfZXZlbnRfaGFuZGxlcihz dHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNlKQorc3RhdGljIHZvaWQgd3NpX2Rpc3BsYXlf ZmVuY2VfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBuc2VjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBmcmFt ZSkKIHsKKyAgIHN0cnVjdCB3c2lfZGlzcGxheV9jb25uZWN0b3IgKmNvbm5lY3RvciA9CisgICAg ICB3c2lfZGlzcGxheV9jb25uZWN0b3JfZnJvbV9oYW5kbGUoZmVuY2UtPmJhc2UuZGlzcGxheSk7 CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfaW1hZ2UgKmltYWdlID0gZmVuY2UtPmltYWdlOworCisg ICB3c2lfZGlzcGxheV9kZWJ1ZygiJTlsdSBmZW5jZSAlbHUgcmVjZWl2ZWQgJWx1IG5zZWMgJWx1 XG4iLAorICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9zZWxmKCksIGZlbmNlLT5zZXF1ZW5j ZSwgZnJhbWUsIG5zZWMpOworCisgICBjb25uZWN0b3ItPmxhc3RfbnNlYyA9IG5zZWM7CisgICBj b25uZWN0b3ItPmxhc3RfZnJhbWUgPSBmcmFtZTsKICAgIGZlbmNlLT5ldmVudF9yZWNlaXZlZCA9 IHRydWU7CiAgICB3c2lfZGlzcGxheV9mZW5jZV9jaGVja19mcmVlKGZlbmNlKTsKKyAgIGlmIChp bWFnZSkgeworICAgICAgaW1hZ2UtPmZsaXBfc2VxdWVuY2UgPSArK2ltYWdlLT5jaGFpbi0+Zmxp cF9zZXF1ZW5jZTsKKyAgICAgIGltYWdlLT5zdGF0ZSA9IFdTSV9JTUFHRV9RVUVVRUQ7CisgICAg ICBWa1Jlc3VsdCByZXN1bHQgPSBfd3NpX2Rpc3BsYXlfcXVldWVfbmV4dCgmaW1hZ2UtPmNoYWlu LT5iYXNlKTsKKyAgICAgIGlmIChyZXN1bHQgIT0gVktfU1VDQ0VTUykKKyAgICAgICAgIGltYWdl LT5jaGFpbi0+c3RhdHVzID0gcmVzdWx0OworICAgfQogfQogCisKIHN0YXRpYyB2b2lkCiB3c2lf ZGlzcGxheV9mZW5jZV9kZXN0cm95KHN0cnVjdCB3c2lfZmVuY2UgKmZlbmNlX3dzaSkKIHsKQEAg LTE1MTMsNiArMTU3NCw3IEBAIHdzaV9kaXNwbGF5X2ZlbmNlX2FsbG9jKFZrRGV2aWNlIGRldmlj ZSwKICAgIGZlbmNlLT5ldmVudF9yZWNlaXZlZCA9IGZhbHNlOwogICAgZmVuY2UtPmRlc3Ryb3ll ZCA9IGZhbHNlOwogICAgZmVuY2UtPnNlcXVlbmNlID0gKytmZW5jZV9zZXF1ZW5jZTsKKyAgIGZl bmNlLT5pbWFnZSA9IE5VTEw7CiAgICByZXR1cm4gZmVuY2U7CiB9CiAKQEAgLTE2MjAsNyArMTY4 MiwxNCBAQCBfd3NpX2Rpc3BsYXlfcXVldWVfbmV4dChzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqZHJ2 X2NoYWluKQogICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgIHJldHVybiBWS19TVUNDRVNTOwog CisgICAgICBpZiAoaW1hZ2UtPmZlbmNlKSB7CisgICAgICAgICBpbWFnZS0+ZmVuY2UtPmltYWdl ID0gTlVMTDsKKyAgICAgICAgIHdzaV9kaXNwbGF5X2ZlbmNlX2Rlc3Ryb3koJmltYWdlLT5mZW5j ZS0+YmFzZSk7CisgICAgICAgICBpbWFnZS0+ZmVuY2UgPSBOVUxMOworICAgICAgfQorCiAgICAg ICBpbnQgcmV0OworCiAgICAgICBpZiAoY29ubmVjdG9yLT5hY3RpdmUpIHsKICAgICAgICAgIHJl dCA9IGRybU1vZGVQYWdlRmxpcCh3c2ktPmZkLCBjb25uZWN0b3ItPmNydGNfaWQsIGltYWdlLT5m Yl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfUEFHRV9G TElQX0VWRU5ULCBpbWFnZSk7CkBAIC0xNjkxLDYgKzE3NjAsNjYgQEAgd3NpX2Rpc3BsYXlfcXVl dWVfcHJlc2VudChzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqZHJ2X2NoYWluLAogCiAgICBwdGhyZWFk X211dGV4X2xvY2soJndzaS0+d2FpdF9tdXRleCk7CiAKKyAgIGlmIChpbWFnZS0+YmFzZS50aW1p bmcgJiYgaW1hZ2UtPmJhc2UudGltaW5nLT50YXJnZXRfbXNjICE9IDApIHsKKyAgICAgIFZrSWNk U3VyZmFjZURpc3BsYXkgKnN1cmZhY2UgPSBjaGFpbi0+c3VyZmFjZTsKKyAgICAgIHdzaV9kaXNw bGF5X21vZGUgKmRpc3BsYXlfbW9kZSA9CisgICAgICAgICB3c2lfZGlzcGxheV9tb2RlX2Zyb21f aGFuZGxlKHN1cmZhY2UtPmRpc3BsYXlNb2RlKTsKKyAgICAgIHdzaV9kaXNwbGF5X2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0gZGlzcGxheV9tb2RlLT5jb25uZWN0b3I7CisKKyAgICAgIHdzaV9kaXNw bGF5X2RlYnVnKCJkZWx0YSBmcmFtZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBp bWFnZS0+YmFzZS50aW1pbmctPnRhcmdldF9tc2MgLSBjb25uZWN0b3ItPmxhc3RfZnJhbWUpOwor ICAgICAgaWYgKGltYWdlLT5iYXNlLnRpbWluZy0+dGFyZ2V0X21zYyA+IGNvbm5lY3Rvci0+bGFz dF9mcmFtZSkgeworICAgICAgICAgdWludDY0X3QgZnJhbWVfcXVldWVkOworICAgICAgICAgVmtE aXNwbGF5S0hSIGRpc3BsYXkgPSB3c2lfZGlzcGxheV9jb25uZWN0b3JfdG9faGFuZGxlKGNvbm5l Y3Rvcik7CisKKyAgICAgICAgIHdzaV9kaXNwbGF5X2RlYnVnX2NvZGUodWludDY0X3QgY3VycmVu dF9mcmFtZSwgY3VycmVudF9uc2VjOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk cm1DcnRjR2V0U2VxdWVuY2Uod3NpLT5mZCwgY29ubmVjdG9yLT5jcnRjX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfZnJhbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3Vy cmVudF9uc2VjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NpX2Rpc3BsYXlf ZGVidWcoImZyb20gY3VycmVudDogJWxkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+YmFzZS50aW1pbmctPnRhcmdldF9tc2MKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBjdXJyZW50 X2ZyYW1lKSk7CisKKyAgICAgICAgIGltYWdlLT5mZW5jZSA9IHdzaV9kaXNwbGF5X2ZlbmNlX2Fs bG9jKGNoYWluLT5iYXNlLmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYWluLT5iYXNlLndzaSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXksICZjaGFpbi0+YmFzZS5hbGxvYyk7CisK KyAgICAgICAgIGlmICghaW1hZ2UtPmZlbmNlKSB7CisgICAgICAgICAgICByZXN1bHQgPSBWS19F UlJPUl9PVVRfT0ZfSE9TVF9NRU1PUlk7CisgICAgICAgICAgICBnb3RvIGJhaWxfdW5sb2NrOwor ICAgICAgICAgfQorCisgICAgICAgICByZXN1bHQgPSB3c2lfcmVnaXN0ZXJfdmJsYW5rX2V2ZW50 KGltYWdlLT5mZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhaW4tPmJhc2Uud3NpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFn ZS0+YmFzZS50aW1pbmctPnRhcmdldF9tc2MgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZnJhbWVfcXVldWVkKTsKKworICAgICAgICAgaWYgKHJlc3Vs dCAhPSBWS19TVUNDRVNTKQorICAgICAgICAgICAgZ290byBiYWlsX3VubG9jazsKKworICAgICAg ICAgLyogQ2hlY2sgYW5kIG1ha2Ugc3VyZSB3ZSBhcmUgcXVldWVkIGZvciB0aGUgcmlnaHQgZnJh bWUsIG90aGVyd2lzZQorICAgICAgICAgICoganVzdCBnbyBxdWV1ZSBhbiBpbWFnZQorICAgICAg ICAgICovCisgICAgICAgICBpZiAoZnJhbWVfcXVldWVkIDw9IGltYWdlLT5iYXNlLnRpbWluZy0+ dGFyZ2V0X21zYyAtIDEpIHsKKyAgICAgICAgICAgIGltYWdlLT5zdGF0ZSA9IFdTSV9JTUFHRV9X QUlUSU5HOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRG9uJ3Qgc2V0IHRoZSBp bWFnZSBtZW1iZXIgdW50aWwgd2UncmUgZ29pbmcgdG8gd2FpdCBmb3IgdGhlCisgICAgICAgICAg ICAgKiBldmVudCB0byBhcnJpdmUgYmVmb3JlIGZsaXBwaW5nIHRvIHRoZSBpbWFnZS4gVGhhdCB3 YXksIGlmIHRoZQorICAgICAgICAgICAgICogcmVnaXN0ZXJfdmJsYW5rX2V2ZW50IGNhbGwgaGFw cGVucyB0byBwcm9jZXNzIHRoZSBldmVudCwgaXQKKyAgICAgICAgICAgICAqIHdvbid0IGFjdHVh bGx5IGRvIGFueXRoaW5nCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGltYWdlLT5mZW5j ZS0+aW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgICAgIHdzaV9kaXNwbGF5X3N0YXJ0X3dhaXRfdGhy ZWFkKHdzaSk7CisgICAgICAgICAgICByZXN1bHQgPSBWS19TVUNDRVNTOworICAgICAgICAgICAg Z290byBiYWlsX3VubG9jazsKKyAgICAgICAgIH0KKworICAgICAgfQorICAgfQorCiAgICBpbWFn ZS0+ZmxpcF9zZXF1ZW5jZSA9ICsrY2hhaW4tPmZsaXBfc2VxdWVuY2U7CiAgICBpbWFnZS0+c3Rh dGUgPSBXU0lfSU1BR0VfUVVFVUVEOwogCkBAIC0xNjk4LDYgKzE4MjcsNyBAQCB3c2lfZGlzcGxh eV9xdWV1ZV9wcmVzZW50KHN0cnVjdCB3c2lfc3dhcGNoYWluICpkcnZfY2hhaW4sCiAgICBpZiAo cmVzdWx0ICE9IFZLX1NVQ0NFU1MpCiAgICAgICBjaGFpbi0+c3RhdHVzID0gcmVzdWx0OwogCiti YWlsX3VubG9jazoKICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3c2ktPndhaXRfbXV0ZXgpOwog CiAgICBpZiAocmVzdWx0ICE9IFZLX1NVQ0NFU1MpCkBAIC0xNzA2LDYgKzE4MzYsMjEgQEAgd3Np X2Rpc3BsYXlfcXVldWVfcHJlc2VudChzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqZHJ2X2NoYWluLAog ICAgcmV0dXJuIGNoYWluLT5zdGF0dXM7CiB9CiAKK3N0YXRpYyBWa1Jlc3VsdAord3NpX2Rpc3Bs YXlfZ2V0X3JlZnJlc2hfY3ljbGVfZHVyYXRpb24oc3RydWN0IHdzaV9zd2FwY2hhaW4gKmRydl9j aGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUmVmcmVzaEN5 Y2xlRHVyYXRpb25HT09HTEUgKmR1cmF0aW9uKQoreworICAgc3RydWN0IHdzaV9kaXNwbGF5X3N3 YXBjaGFpbiAqY2hhaW4gPQorICAgICAgKHN0cnVjdCB3c2lfZGlzcGxheV9zd2FwY2hhaW4gKikg ZHJ2X2NoYWluOworICAgVmtJY2RTdXJmYWNlRGlzcGxheSAqc3VyZmFjZSA9IGNoYWluLT5zdXJm YWNlOworICAgd3NpX2Rpc3BsYXlfbW9kZSAqZGlzcGxheV9tb2RlID0KKyAgICAgIHdzaV9kaXNw bGF5X21vZGVfZnJvbV9oYW5kbGUoc3VyZmFjZS0+ZGlzcGxheU1vZGUpOworICAgZG91YmxlIHJl ZnJlc2ggPSB3c2lfZGlzcGxheV9tb2RlX3JlZnJlc2goZGlzcGxheV9tb2RlKTsKKworICAgZHVy YXRpb24tPnJlZnJlc2hEdXJhdGlvbiA9ICh1aW50NjRfdCkgKGZsb29yICgxLjAvcmVmcmVzaCAq IDFlOSArIDAuNSkpOworICAgcmV0dXJuIFZLX1NVQ0NFU1M7Cit9CisKIHN0YXRpYyBWa1Jlc3Vs dAogd3NpX2Rpc3BsYXlfc3VyZmFjZV9jcmVhdGVfc3dhcGNoYWluKAogICAgVmtJY2RTdXJmYWNl QmFzZSAqaWNkX3N1cmZhY2UsCkBAIC0xNzQwLDEwICsxODg1LDEzIEBAIHdzaV9kaXNwbGF5X3N1 cmZhY2VfY3JlYXRlX3N3YXBjaGFpbigKICAgIGNoYWluLT5iYXNlLmdldF93c2lfaW1hZ2UgPSB3 c2lfZGlzcGxheV9nZXRfd3NpX2ltYWdlOwogICAgY2hhaW4tPmJhc2UuYWNxdWlyZV9uZXh0X2lt YWdlID0gd3NpX2Rpc3BsYXlfYWNxdWlyZV9uZXh0X2ltYWdlOwogICAgY2hhaW4tPmJhc2UucXVl dWVfcHJlc2VudCA9IHdzaV9kaXNwbGF5X3F1ZXVlX3ByZXNlbnQ7CisgICBjaGFpbi0+YmFzZS5n ZXRfcmVmcmVzaF9jeWNsZV9kdXJhdGlvbiA9CisgICAgICB3c2lfZGlzcGxheV9nZXRfcmVmcmVz aF9jeWNsZV9kdXJhdGlvbjsKICAgIGNoYWluLT5iYXNlLnByZXNlbnRfbW9kZSA9IGNyZWF0ZV9p bmZvLT5wcmVzZW50TW9kZTsKICAgIGNoYWluLT5iYXNlLmltYWdlX2NvdW50ID0gbnVtX2ltYWdl czsKIAogICAgY2hhaW4tPndzaSA9IHdzaTsKKyAgIGNoYWluLT5hbGxvY2F0b3IgPSBhbGxvY2F0 b3I7CiAgICBjaGFpbi0+c3RhdHVzID0gVktfU1VDQ0VTUzsKIAogICAgY2hhaW4tPnN1cmZhY2Ug PSAoVmtJY2RTdXJmYWNlRGlzcGxheSAqKSBpY2Rfc3VyZmFjZTsKQEAgLTI0NzksOSArMjYyNywx NCBAQCB3c2lfZ2V0X3N3YXBjaGFpbl9jb3VudGVyKFZrRGV2aWNlIGRldmljZSwKICAgICAgIHJl dHVybiBWS19TVUNDRVNTOwogICAgfQogCi0gICBpbnQgcmV0ID0gZHJtQ3J0Y0dldFNlcXVlbmNl KHdzaS0+ZmQsIGNvbm5lY3Rvci0+Y3J0Y19pZCwgdmFsdWUsIE5VTEwpOwotICAgaWYgKHJldCkK KyAgIHVpbnQ2NF90IG5zZWM7CisgICBpbnQgcmV0ID0gZHJtQ3J0Y0dldFNlcXVlbmNlKHdzaS0+ ZmQsIGNvbm5lY3Rvci0+Y3J0Y19pZCwgdmFsdWUsICZuc2VjKTsKKyAgIGlmIChyZXQpIHsKICAg ICAgICp2YWx1ZSA9IDA7CisgICB9IGVsc2UgeworICAgICAgY29ubmVjdG9yLT5sYXN0X2ZyYW1l ID0gKnZhbHVlOworICAgICAgY29ubmVjdG9yLT5sYXN0X25zZWMgPSBuc2VjOworICAgfQogCiAg ICByZXR1cm4gVktfU1VDQ0VTUzsKIH0KZGlmZiAtLWdpdCBhL3NyYy92dWxrYW4vd3NpL3dzaV9j b21tb25fcHJpdmF0ZS5oIGIvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbl9wcml2YXRlLmgKaW5k ZXggNTBhNzhhY2FjYjAuLmEwYzk3OTQyOTU0IDEwMDY0NAotLS0gYS9zcmMvdnVsa2FuL3dzaS93 c2lfY29tbW9uX3ByaXZhdGUuaAorKysgYi9zcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uX3ByaXZh dGUuaApAQCAtMjUsNiArMjUsMTMgQEAKIAogI2luY2x1ZGUgIndzaV9jb21tb24uaCIKIAorc3Ry dWN0IHdzaV90aW1pbmcgeworICAgYm9vbCBjb21wbGV0ZTsKKyAgIGJvb2wgY29uc3VtZWQ7Cisg ICB1aW50NjRfdCB0YXJnZXRfbXNjOworICAgVmtQYXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xF IHRpbWluZzsKK307CisKIHN0cnVjdCB3c2lfaW1hZ2UgewogICAgVmtJbWFnZSBpbWFnZTsKICAg IFZrRGV2aWNlTWVtb3J5IG1lbW9yeTsKQEAgLTQxLDggKzQ4LDE2IEBAIHN0cnVjdCB3c2lfaW1h Z2UgewogICAgdWludDMyX3Qgb2Zmc2V0c1s0XTsKICAgIHVpbnQzMl90IHJvd19waXRjaGVzWzRd OwogICAgaW50IGZkc1s0XTsKKworICAgVmtRdWVyeVBvb2wgcXVlcnlfcG9vbDsKKworICAgVmtD b21tYW5kQnVmZmVyIHRpbWVzdGFtcF9idWZmZXI7CisKKyAgIHN0cnVjdCB3c2lfdGltaW5nICp0 aW1pbmc7CiB9OwogCisjZGVmaW5lIFdTSV9USU1JTkdfSElTVE9SWSAgICAgIDE2CisKIHN0cnVj dCB3c2lfc3dhcGNoYWluIHsKICAgIGNvbnN0IHN0cnVjdCB3c2lfZGV2aWNlICp3c2k7CiAKQEAg LTU0LDYgKzY5LDE2IEBAIHN0cnVjdCB3c2lfc3dhcGNoYWluIHsKIAogICAgYm9vbCB1c2VfcHJp bWVfYmxpdDsKIAorICAgdWludDMyX3QgdGltaW5nX2luc2VydDsKKyAgIHVpbnQzMl90IHRpbWlu Z19jb3VudDsKKworICAgc3RydWN0IHdzaV90aW1pbmcgdGltaW5nW1dTSV9USU1JTkdfSElTVE9S WV07CisKKyAgIHVpbnQ2NF90IGZyYW1lX21zYzsKKyAgIHVpbnQ2NF90IGZyYW1lX3VzdDsKKwor ICAgZmxvYXQgdGltZXN0YW1wX3BlcmlvZDsKKwogICAgLyogQ29tbWFuZCBwb29scywgb25lIHBl ciBxdWV1ZSBmYW1pbHkgKi8KICAgIFZrQ29tbWFuZFBvb2wgKmNtZF9wb29sczsKIApAQCAtNjcs NiArOTIsMTAgQEAgc3RydWN0IHdzaV9zd2FwY2hhaW4gewogICAgVmtSZXN1bHQgKCpxdWV1ZV9w cmVzZW50KShzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqc3dhcF9jaGFpbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgaW1hZ2VfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IFZrUHJlc2VudFJlZ2lvbktIUiAqZGFtYWdlKTsKKyAgIFZrUmVzdWx0 ICgqZ2V0X3JlZnJlc2hfY3ljbGVfZHVyYXRpb24pKHN0cnVjdCB3c2lfc3dhcGNoYWluICpzd2Fw X2NoYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtSZWZy ZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKnBEaXNwbGF5VGltaW5nUHJvcGVydGllcyk7CisKIH07CiAKIGJvb2wKQEAgLTEw MCw2ICsxMjksMTIgQEAgd3NpX2Rlc3Ryb3lfaW1hZ2UoY29uc3Qgc3RydWN0IHdzaV9zd2FwY2hh aW4gKmNoYWluLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHdzaV9pbWFnZSAqaW1hZ2UpOwog CiAKK3ZvaWQKK3dzaV9tYXJrX3RpbWluZyhzdHJ1Y3Qgd3NpX3N3YXBjaGFpbiAqc3dhcGNoYWlu LAorICAgICAgICAgICAgICAgIHN0cnVjdCB3c2lfaW1hZ2UgKmltYWdlLAorICAgICAgICAgICAg ICAgIHVpbnQ2NF90IHVzdCwKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBtc2MpOworCiBzdHJ1 Y3Qgd3NpX2ludGVyZmFjZSB7CiAgICBWa1Jlc3VsdCAoKmdldF9zdXBwb3J0KShWa0ljZFN1cmZh Y2VCYXNlICpzdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdzaV9k ZXZpY2UgKndzaV9kZXZpY2UsCmRpZmYgLS1naXQgYS9zcmMvdnVsa2FuL3dzaS93c2lfY29tbW9u X3gxMS5jIGIvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbl94MTEuYwppbmRleCBjNzQwNzI2ZmU1 NC4uNDgyMTMyOWU1MzMgMTAwNjQ0Ci0tLSBhL3NyYy92dWxrYW4vd3NpL3dzaV9jb21tb25feDEx LmMKKysrIGIvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbl94MTEuYwpAQCAtNjg3LDYgKzY4Nyw3 IEBAIHN0cnVjdCB4MTFfaW1hZ2UgewogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnVzeTsKICAgIHN0cnVjdCB4c2htZmVuY2UgKiAgICAgICAgICAgICAgICAg ICAgICAgIHNobV9mZW5jZTsKICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN5bmNfZmVuY2U7CisgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXJpYWw7CiB9OwogCiBzdHJ1Y3QgeDExX3N3YXBjaGFpbiB7CkBAIC03MDUsNiAr NzA2LDggQEAgc3RydWN0IHgxMV9zd2FwY2hhaW4gewogICAgdWludDY0X3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9zYmM7CiAgICB1aW50NjRfdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3ByZXNlbnRfbXNjOwogICAgdWludDMyX3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhbXA7CisgICB1aW50NjRfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3ByZXNlbnRfbnNlYzsKKyAg IHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hfcGVy aW9kOwogCiAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aHJlYWRlZDsKICAgIFZrUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1czsKQEAgLTc5Niw4ICs3OTksMzkgQEAgeDExX2hhbmRsZV9kcmkzX3ByZXNlbnRfZXZl bnQoc3RydWN0IHgxMV9zd2FwY2hhaW4gKmNoYWluLAogCiAgICBjYXNlIFhDQl9QUkVTRU5UX0VW RU5UX0NPTVBMRVRFX05PVElGWTogewogICAgICAgeGNiX3ByZXNlbnRfY29tcGxldGVfbm90aWZ5 X2V2ZW50X3QgKmNvbXBsZXRlID0gKHZvaWQgKikgZXZlbnQ7Ci0gICAgICBpZiAoY29tcGxldGUt PmtpbmQgPT0gWENCX1BSRVNFTlRfQ09NUExFVEVfS0lORF9QSVhNQVApCisgICAgICBpZiAoY29t cGxldGUtPmtpbmQgPT0gWENCX1BSRVNFTlRfQ09NUExFVEVfS0lORF9QSVhNQVApIHsKKyAgICAg ICAgIHVpbnQ2NF90IGZyYW1lcyA9IGNvbXBsZXRlLT5tc2MgLSBjaGFpbi0+bGFzdF9wcmVzZW50 X21zYzsKKyAgICAgICAgIHVpbnQ2NF90IHByZXNlbnRfbnNlYyA9IGNvbXBsZXRlLT51c3QgKiAx MDAwOworCisgICAgICAgICAvKgorICAgICAgICAgICogV2VsbCwgdGhpcyBpcyBhYm91dCBhcyBn b29kIGFzIHdlIGNhbiBkbyAtLSBtZWFzdXJlIHRoZSByZWZyZXNoCisgICAgICAgICAgKiBpbnN0 ZWFkIG9mIGFza2luZyBmb3IgdGhlIGN1cnJlbnQgbW9kZSBhbmQgdXNpbmcgdGhhdC4gVHVybnMg b3V0LAorICAgICAgICAgICogZm9yIGVEUCBwYW5lbHMsIHRoaXMgd29ya3MgYmV0dGVyIGFueXdh eXMgYXMgdGhleSB1c2UgdGhlIGJ1aWx0aW4KKyAgICAgICAgICAqIGZpeGVkIG1vZGUgZm9yIGV2 ZXJ5dGhpbmcKKyAgICAgICAgICAqLworICAgICAgICAgaWYgKDAgPCBmcmFtZXMgJiYgZnJhbWVz IDwgMTAgJiYKKyAgICAgICAgICAgICBwcmVzZW50X25zZWMgPiBjaGFpbi0+bGFzdF9wcmVzZW50 X25zZWMpCisgICAgICAgICB7CisgICAgICAgICAgICB1aW50NjRfdCByZWZyZXNoX3BlcmlvZCA9 CisgICAgICAgICAgICAgICAocHJlc2VudF9uc2VjIC0gY2hhaW4tPmxhc3RfcHJlc2VudF9uc2Vj ICsgZnJhbWVzIC8gMikgLyBmcmFtZXM7CisKKyAgICAgICAgICAgIGlmIChjaGFpbi0+cmVmcmVz aF9wZXJpb2QpCisgICAgICAgICAgICAgICByZWZyZXNoX3BlcmlvZCA9CisgICAgICAgICAgICAg ICAgICAoMyAqIGNoYWluLT5yZWZyZXNoX3BlcmlvZCArIHJlZnJlc2hfcGVyaW9kKSA+PiAyOwor CisgICAgICAgICAgICBjaGFpbi0+cmVmcmVzaF9wZXJpb2QgPSByZWZyZXNoX3BlcmlvZDsKKyAg ICAgICAgIH0KKwogICAgICAgICAgY2hhaW4tPmxhc3RfcHJlc2VudF9tc2MgPSBjb21wbGV0ZS0+ bXNjOworICAgICAgICAgY2hhaW4tPmxhc3RfcHJlc2VudF9uc2VjID0gcHJlc2VudF9uc2VjOwor ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoYWluLT5iYXNlLmltYWdlX2NvdW50 OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChjaGFpbi0+aW1hZ2VzW2ldLnNlcmlhbCA9PSBjb21w bGV0ZS0+c2VyaWFsKSB7CisgICAgICAgICAgICAgICB3c2lfbWFya190aW1pbmcoJmNoYWluLT5i YXNlLCAmY2hhaW4tPmltYWdlc1tpXS5iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByZXNlbnRfbnNlYywgY29tcGxldGUtPm1zYyk7CisgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0KIAogICAgICAgVmtSZXN1bHQgcmVz dWx0ID0gVktfU1VDQ0VTUzsKIApAQCAtOTQxLDcgKzk3NSw3IEBAIHgxMV9hY3F1aXJlX25leHRf aW1hZ2VfZnJvbV9xdWV1ZShzdHJ1Y3QgeDExX3N3YXBjaGFpbiAqY2hhaW4sCiAKIHN0YXRpYyBW a1Jlc3VsdAogeDExX3ByZXNlbnRfdG9feDExKHN0cnVjdCB4MTFfc3dhcGNoYWluICpjaGFpbiwg dWludDMyX3QgaW1hZ2VfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0 X21zYykKKyAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB0YXJnZXRfbXNjKQogewogICAgc3Ry dWN0IHgxMV9pbWFnZSAqaW1hZ2UgPSAmY2hhaW4tPmltYWdlc1tpbWFnZV9pbmRleF07CiAKQEAg LTk2MywxMSArOTk3LDEyIEBAIHgxMV9wcmVzZW50X3RvX3gxMShzdHJ1Y3QgeDExX3N3YXBjaGFp biAqY2hhaW4sIHVpbnQzMl90IGltYWdlX2luZGV4LAogICAgeHNobWZlbmNlX3Jlc2V0KGltYWdl LT5zaG1fZmVuY2UpOwogCiAgICArK2NoYWluLT5zZW5kX3NiYzsKKyAgIGltYWdlLT5zZXJpYWwg PSAodWludDMyX3QpIGNoYWluLT5zZW5kX3NiYzsKICAgIHhjYl92b2lkX2Nvb2tpZV90IGNvb2tp ZSA9CiAgICAgICB4Y2JfcHJlc2VudF9waXhtYXAoY2hhaW4tPmNvbm4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hhaW4tPndpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFn ZS0+cGl4bWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkgY2hhaW4tPnNl bmRfc2JjLAorICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLT5zZXJpYWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiB2YWxpZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogdXBkYXRlICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB4X29mZiAqLwpAQCAtMTAx Nyw2ICsxMDUyLDI2IEBAIHgxMV9xdWV1ZV9wcmVzZW50KHN0cnVjdCB3c2lfc3dhcGNoYWluICph bnZfY2hhaW4sCiAgICB9CiB9CiAKK3N0YXRpYyB1aW50NjRfdAoreDExX3JlZnJlc2hfZHVyYXRp b24oc3RydWN0IHgxMV9zd2FwY2hhaW4gKmNoYWluKQoreworICAgLyogUGljayA2MEh6IGlmIHdl IGRvbid0IGtub3cgd2hhdCBpdCBhY3R1YWxseSBpcyB5ZXQgKi8KKyAgIGlmICghY2hhaW4tPnJl ZnJlc2hfcGVyaW9kKQorICAgICAgcmV0dXJuICh1aW50NjRfdCkgKDFlOSAvIDU5Ljk4ICsgMC41 KTsKKworICAgcmV0dXJuIGNoYWluLT5yZWZyZXNoX3BlcmlvZDsKK30KKworc3RhdGljIFZrUmVz dWx0Cit4MTFfZ2V0X3JlZnJlc2goc3RydWN0IHdzaV9zd2FwY2hhaW4gKndzaV9jaGFpbiwKKyAg ICAgICAgICAgICAgICBWa1JlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFICp0aW1pbmdzKQorewor ICAgc3RydWN0IHgxMV9zd2FwY2hhaW4gKmNoYWluID0gKHN0cnVjdCB4MTFfc3dhcGNoYWluICop d3NpX2NoYWluOworCisgICB0aW1pbmdzLT5yZWZyZXNoRHVyYXRpb24gPSB4MTFfcmVmcmVzaF9k dXJhdGlvbihjaGFpbik7CisgICByZXR1cm4gVktfU1VDQ0VTUzsKK30KKwogc3RhdGljIHZvaWQg KgogeDExX21hbmFnZV9maWZvX3F1ZXVlcyh2b2lkICpzdGF0ZSkKIHsKQEAgLTEwMzMsNiArMTA4 OCw3IEBAIHgxMV9tYW5hZ2VfZmlmb19xdWV1ZXModm9pZCAqc3RhdGUpCiAgICAgICAgKiBvdGhl ciB0aGFuIHRoZSBjdXJyZW50bHkgcHJlc2VudGVkIG9uZS4KICAgICAgICAqLwogICAgICAgdWlu dDMyX3QgaW1hZ2VfaW5kZXggPSAwOworICAgICAgc3RydWN0IHgxMV9pbWFnZSAqaW1hZ2U7CiAg ICAgICByZXN1bHQgPSB3c2lfcXVldWVfcHVsbCgmY2hhaW4tPnByZXNlbnRfcXVldWUsICZpbWFn ZV9pbmRleCwgSU5UNjRfTUFYKTsKICAgICAgIGFzc2VydChyZXN1bHQgIT0gVktfVElNRU9VVCk7 CiAgICAgICBpZiAocmVzdWx0IDwgMCkgewpAQCAtMTA0NSw2ICsxMTAxLDEzIEBAIHgxMV9tYW5h Z2VfZmlmb19xdWV1ZXModm9pZCAqc3RhdGUpCiAgICAgICB9CiAKICAgICAgIHVpbnQ2NF90IHRh cmdldF9tc2MgPSBjaGFpbi0+bGFzdF9wcmVzZW50X21zYyArIDE7CisKKyAgICAgIGltYWdlID0g JmNoYWluLT5pbWFnZXNbaW1hZ2VfaW5kZXhdOworCisgICAgICBzdHJ1Y3Qgd3NpX3RpbWluZyAq dGltaW5nID0gaW1hZ2UtPmJhc2UudGltaW5nOworICAgICAgaWYgKHRpbWluZyAmJiB0aW1pbmct PnRhcmdldF9tc2MgIT0gMCAmJiB0aW1pbmctPnRhcmdldF9tc2MgPiB0YXJnZXRfbXNjKQorICAg ICAgICAgdGFyZ2V0X21zYyA9IHRpbWluZy0+dGFyZ2V0X21zYzsKKwogICAgICAgcmVzdWx0ID0g eDExX3ByZXNlbnRfdG9feDExKGNoYWluLCBpbWFnZV9pbmRleCwgdGFyZ2V0X21zYyk7CiAgICAg ICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTEzNDgsNiArMTQxMSw3 IEBAIHgxMV9zdXJmYWNlX2NyZWF0ZV9zd2FwY2hhaW4oVmtJY2RTdXJmYWNlQmFzZSAqaWNkX3N1 cmZhY2UsCiAgICBjaGFpbi0+YmFzZS5hY3F1aXJlX25leHRfaW1hZ2UgPSB4MTFfYWNxdWlyZV9u ZXh0X2ltYWdlOwogICAgY2hhaW4tPmJhc2UucXVldWVfcHJlc2VudCA9IHgxMV9xdWV1ZV9wcmVz ZW50OwogICAgY2hhaW4tPmJhc2UucHJlc2VudF9tb2RlID0gcENyZWF0ZUluZm8tPnByZXNlbnRN b2RlOworICAgY2hhaW4tPmJhc2UuZ2V0X3JlZnJlc2hfY3ljbGVfZHVyYXRpb24gPSB4MTFfZ2V0 X3JlZnJlc2g7CiAgICBjaGFpbi0+YmFzZS5pbWFnZV9jb3VudCA9IG51bV9pbWFnZXM7CiAgICBj aGFpbi0+Y29ubiA9IGNvbm47CiAgICBjaGFpbi0+d2luZG93ID0gd2luZG93OwpAQCAtMTM1NSw2 ICsxNDE5LDcgQEAgeDExX3N1cmZhY2VfY3JlYXRlX3N3YXBjaGFpbihWa0ljZFN1cmZhY2VCYXNl ICppY2Rfc3VyZmFjZSwKICAgIGNoYWluLT5leHRlbnQgPSBwQ3JlYXRlSW5mby0+aW1hZ2VFeHRl bnQ7CiAgICBjaGFpbi0+c2VuZF9zYmMgPSAwOwogICAgY2hhaW4tPmxhc3RfcHJlc2VudF9tc2Mg PSAwOworICAgY2hhaW4tPmxhc3RfcHJlc2VudF9uc2VjID0gMDsKICAgIGNoYWluLT50aHJlYWRl ZCA9IGZhbHNlOwogICAgY2hhaW4tPnN0YXR1cyA9IFZLX1NVQ0NFU1M7CiAgICBjaGFpbi0+aGFz X2RyaTNfbW9kaWZpZXJzID0gd3NpX2Nvbm4tPmhhc19kcmkzX21vZGlmaWVyczsKLS0gCjIuMTku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCm1lc2Et ZGV2IG1haWxpbmcgbGlzdAptZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9tZXNhLWRldgo=