From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: [PATCH v4 1/9] drm/komeda: komeda_dev/pipeline/component definition and initialzation Date: Thu, 3 Jan 2019 11:39:48 +0000 Message-ID: <20190103113841.15403-2-james.qian.wang@arm.com> References: <20190103113841.15403-1-james.qian.wang@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190103113841.15403-1-james.qian.wang@arm.com> Content-Language: en-US Content-ID: <969CAD9EAF3BC747ACF9D52DA594DF7C@eurprd08.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau , "daniel.vetter@ffwll.ch" , "rdunlap@infradead.org" , "robh+dt@kernel.org" Cc: Mark Rutland , "linux-doc@vger.kernel.org" , "maxime.ripard@bootlin.com" , "Jonathan Chai (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "yamada.masahiro@socionext.com" , "Yiqi Kang (Arm Technology China)" , "mchehab+samsung@kernel.org" , "Tiannan Zhu (Arm Technology China)" , "corbet@lwn.net" , "airlied@linux.ie" , "malidp@foss.arm.com" , "thomas Sun (Arm Technology China)" , Ayan Halder , devicetree List-Id: devicetree@vger.kernel.org RnJvbTogImphbWVzIHFpYW4gd2FuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIiA8amFtZXMucWlh bi53YW5nQGFybS5jb20+DQoNCjEuIEFkZGVkIGEgYnJpZWYgZGVmaW5pdGlvbiBvZiBrb21lZGFf ZGV2L3BpcGVsaW5lL2NvbXBvbmVudCwgdGhpcyBjaGFuZ2UNCiAgIGRpZG4ndCBhZGQgdGhlIGRl dGFpbGVkIGNvbXBvbmVudCBmZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsDQog ICBiZSBhZGRlZCBpbiB0aGUgZm9sbG93aW5nIGNoYW5nZXMuDQoyLiBDb3JyZXNwb25kaW5nIHJl c291cmNlcyBkaXNjb3ZlcnkgYW5kIGluaXRpYWx6YXRpb24gZnVuY3Rpb25zLg0KDQpDaGFuZ2Vz IGluIHY0Og0KLSBEZWxldGVkIHVubmVjZXNzYXJ5IGhlYWRlciBpbmNsdWRpbmcgW0xpdml1IER1 ZGF1XQ0KDQpDaGFuZ2VzIGluIHYzOg0KLSBGaXhlZCBzdHlsZSBwcm9ibGVtIGZvdW5kIGJ5IGNo ZWNrcGF0Y2gucGwgLS1zdHJpY3QuDQoNCkNoYW5nZXMgaW4gdjI6DQotIFVuaWZpZWQgYWJicmV2 aWF0aW9uIG9mICJwaXBlbGluZSIgdG8gInBpcGUiLg0KDQpTaWduZWQtb2ZmLWJ5OiBKYW1lcyBR aWFuIFdhbmcgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8amFtZXMucWlhbi53YW5nQGFybS5jb20+ DQpSZXZpZXdlZC1ieTogTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+DQotLS0NCiBk cml2ZXJzL2dwdS9kcm0vYXJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KIGRy aXZlcnMvZ3B1L2RybS9hcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMSArDQogZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tidWlsZCAgICAgICAgICAgIHwgICAzICsNCiBkcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZpZyAgICAgICAgICAgfCAgMTQgKw0KIC4uLi9k cm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfcHJvZHVjdC5oICB8ICAyMyArKw0KIC4uLi9k cm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMuaCAgICB8ICAxNiArDQogZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZSAgIHwgIDExICsNCiAuLi4vZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5jICAgfCAxMTQgKysrKysrDQogLi4u L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuaCAgIHwgIDk4ICsrKysrDQog Li4uL2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmMgIHwgMTk2ICsrKysr KysrKysNCiAuLi4vZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaCAgfCAz NDggKysrKysrKysrKysrKysrKysrDQogMTEgZmlsZXMgY2hhbmdlZCwgODI2IGluc2VydGlvbnMo KykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tidWls ZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZp Zw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVk ZS9tYWxpZHBfcHJvZHVjdC5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9pbmNsdWRlL21hbGlkcF91dGlscy5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMNCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21l ZGFfZGV2LmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oDQoNCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYXJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL0tjb25m aWcNCmluZGV4IGY5Zjc3NjFjYjJmNC4uYTIwNDEwM2IzZWZiIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FybS9LY29uZmlnDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL0tjb25maWcN CkBAIC0zNyw0ICszNyw2IEBAIGNvbmZpZyBEUk1fTUFMSV9ESVNQTEFZDQogDQogCSAgSWYgY29t cGlsZWQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgbWFsaS1kcC4NCiANCitzb3VyY2Ug ImRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LY29uZmlnIg0KKw0KIGVuZG1lbnUNCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9NYWtlZmlsZQ0KaW5kZXggM2JmMzFkMWE0NzIyLi4xMjBiZWY4MDFmY2YgMTAwNjQ0DQotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXJtL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJt L01ha2VmaWxlDQpAQCAtMywzICszLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9IRExDRCkJKz0gaGRs Y2Qubw0KIG1hbGktZHAteSA6PSBtYWxpZHBfZHJ2Lm8gbWFsaWRwX2h3Lm8gbWFsaWRwX3BsYW5l cy5vIG1hbGlkcF9jcnRjLm8NCiBtYWxpLWRwLXkgKz0gbWFsaWRwX213Lm8NCiBvYmotJChDT05G SUdfRFJNX01BTElfRElTUExBWSkJKz0gbWFsaS1kcC5vDQorb2JqLSQoQ09ORklHX0RSTV9LT01F REEpICs9IGRpc3BsYXkvDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L0tidWlsZCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LYnVpbGQNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjM4MmYxY2E4MzFlNA0KLS0tIC9kZXYvbnVs bA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tidWlsZA0KQEAgLTAsMCArMSwz IEBADQorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKw0KK29iai0kKENPTkZJ R19EUk1fS09NRURBKSArPSBrb21lZGEvDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZpZw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uY2VjMDYzOWUzYWExDQot LS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZpZw0K QEAgLTAsMCArMSwxNCBAQA0KKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCitj b25maWcgRFJNX0tPTUVEQQ0KKwl0cmlzdGF0ZSAiQVJNIEtvbWVkYSBkaXNwbGF5IGRyaXZlciIN CisJZGVwZW5kcyBvbiBEUk0gJiYgT0YNCisJZGVwZW5kcyBvbiBDT01NT05fQ0xLDQorCXNlbGVj dCBEUk1fS01TX0hFTFBFUg0KKwlzZWxlY3QgRFJNX0tNU19DTUFfSEVMUEVSDQorCXNlbGVjdCBE Uk1fR0VNX0NNQV9IRUxQRVINCisJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTDQorCWhlbHANCisJ ICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gY29tcGlsZSB0aGUgQVJNIEtvbWVk YSBkaXNwbGF5DQorCSAgUHJvY2Vzc29yIGRyaXZlci4gSXQgc3VwcG9ydHMgdGhlIEQ3MSB2YXJp YW50cyBvZiB0aGUgaGFyZHdhcmUuDQorDQorCSAgSWYgY29tcGlsZWQgYXMgYSBtb2R1bGUgaXQg d2lsbCBiZSBjYWxsZWQga29tZWRhLg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9pbmNsdWRlL21hbGlkcF9wcm9kdWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkvaW5jbHVkZS9tYWxpZHBfcHJvZHVjdC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggMDAwMDAwMDAwMDAwLi5iMzVmYzVkYjg2NmINCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9pbmNsdWRlL21hbGlkcF9wcm9kdWN0LmgNCkBAIC0wLDAg KzEsMjMgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKy8qDQor ICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K KyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4NCisg Kg0KKyAqLw0KKyNpZm5kZWYgX01BTElEUF9QUk9EVUNUX0hfDQorI2RlZmluZSBfTUFMSURQX1BS T0RVQ1RfSF8NCisNCisvKiBQcm9kdWN0IGlkZW50aWZpY2F0aW9uICovDQorI2RlZmluZSBNQUxJ RFBfQ09SRV9JRChfX3Byb2R1Y3QsIF9fbWFqb3IsIF9fbWlub3IsIF9fc3RhdHVzKSBcDQorCSgo KChfX3Byb2R1Y3QpICYgMHhGRkZGKSA8PCAxNikgfCAoKChfX21ham9yKSAmIDB4RikgPDwgMTIp IHwgXA0KKwkoKChfX21pbm9yKSAmIDB4RikgPDwgOCkgfCAoKF9fc3RhdHVzKSAmIDB4RkYpKQ0K Kw0KKyNkZWZpbmUgTUFMSURQX0NPUkVfSURfUFJPRFVDVF9JRChfX2NvcmVfaWQpICgoX191MzIp KF9fY29yZV9pZCkgPj4gMTYpDQorI2RlZmluZSBNQUxJRFBfQ09SRV9JRF9NQUpPUihfX2NvcmVf aWQpICAgICAgKCgoX191MzIpKF9fY29yZV9pZCkgPj4gMTIpICYgMHhGKQ0KKyNkZWZpbmUgTUFM SURQX0NPUkVfSURfTUlOT1IoX19jb3JlX2lkKSAgICAgICgoKF9fdTMyKShfX2NvcmVfaWQpID4+ IDgpICYgMHhGKQ0KKyNkZWZpbmUgTUFMSURQX0NPUkVfSURfU1RBVFVTKF9fY29yZV9pZCkgICAg ICgoKF9fdTMyKShfX2NvcmVfaWQpKSAmIDB4RkYpDQorDQorLyogTWFsaS1kaXNwbGF5IHByb2R1 Y3QgSURzICovDQorI2RlZmluZSBNQUxJRFBfRDcxX1BST0RVQ1RfSUQgICAweDAwNzENCisNCisj ZW5kaWYgLyogX01BTElEUF9QUk9EVUNUX0hfICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L2luY2x1ZGUvbWFsaWRwX3V0aWxzLmggYi9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMDAwMC4uNjNjYzQ3Y2VmY2Y4DQotLS0gL2Rldi9udWxsDQorKysgYi9k cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMuaA0KQEAgLTAs MCArMSwxNiBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQorLyoN CisgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQorICogQXV0aG9yOiBKYW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPg0K KyAqDQorICovDQorI2lmbmRlZiBfTUFMSURQX1VUSUxTXw0KKyNkZWZpbmUgX01BTElEUF9VVElM U18NCisNCisjZGVmaW5lIGhhc19iaXQobnIsIG1hc2spCShCSVQobnIpICYgKG1hc2spKQ0KKyNk ZWZpbmUgaGFzX2JpdHMoYml0cywgbWFzaykJKCgoYml0cykgJiAobWFzaykpID09IChiaXRzKSkN CisNCisjZGVmaW5lIGRwX2Zvcl9lYWNoX3NldF9iaXQoYml0LCBtYXNrKSBcDQorCWZvcl9lYWNo X3NldF9iaXQoKGJpdCksICgodW5zaWduZWQgbG9uZyAqKSYobWFzaykpLCBzaXplb2YobWFzaykg KiA4KQ0KKw0KKyNlbmRpZiAvKiBfTUFMSURQX1VUSUxTXyAqLw0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAwLi41YjQ0ZTM2NTA5YjENCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCkBAIC0wLDAgKzEsMTEgQEANCisj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorDQorY2NmbGFncy15IDo9IFwNCisJ LUkkKHNyYykvLi4vaW5jbHVkZSBcDQorCS1JJChzcmMpDQorDQora29tZWRhLXkgOj0gXA0KKwlr b21lZGFfZGV2Lm8gXA0KKwlrb21lZGFfcGlwZWxpbmUubyBcDQorDQorb2JqLSQoQ09ORklHX0RS TV9LT01FREEpICs9IGtvbWVkYS5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9k aXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9kZXYuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMC4uNGRlYzI1OWNlY2FjDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuYw0KQEAgLTAsMCArMSwxMTQgQEANCisvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8qDQorICogKEMpIENPUFlSSUdIVCAy MDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqIEF1dGhvcjogSmFtZXMu UWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4NCisgKg0KKyAqLw0KKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+ DQorI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+DQorI2luY2x1ZGUgImtvbWVkYV9kZXYuaCIN CisNCitzdHJ1Y3Qga29tZWRhX2RldiAqa29tZWRhX2Rldl9jcmVhdGUoc3RydWN0IGRldmljZSAq ZGV2KQ0KK3sNCisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rl dmljZShkZXYpOw0KKwljb25zdCBzdHJ1Y3Qga29tZWRhX3Byb2R1Y3RfZGF0YSAqcHJvZHVjdDsN CisJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXY7DQorCXN0cnVjdCByZXNvdXJjZSAqaW9fcmVzOw0K KwlpbnQgZXJyID0gMDsNCisNCisJcHJvZHVjdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShk ZXYpOw0KKwlpZiAoIXByb2R1Y3QpDQorCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsNCisNCisJ aW9fcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsN CisJaWYgKCFpb19yZXMpIHsNCisJCURSTV9FUlJPUigiTm8gcmVnaXN0ZXJzIGRlZmluZWQuXG4i KTsNCisJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOw0KKwl9DQorDQorCW1kZXYgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKm1kZXYpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFtZGV2KQ0KKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQorDQorCW1kZXYtPmRldiA9IGRldjsNCisJbWRldi0+ cmVnX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCBpb19yZXMpOw0KKwlpZiAoSVNf RVJSKG1kZXYtPnJlZ19iYXNlKSkgew0KKwkJRFJNX0VSUk9SKCJNYXAgcmVnaXN0ZXIgc3BhY2Ug ZmFpbGVkLlxuIik7DQorCQllcnIgPSBQVFJfRVJSKG1kZXYtPnJlZ19iYXNlKTsNCisJCW1kZXYt PnJlZ19iYXNlID0gTlVMTDsNCisJCWdvdG8gZXJyX2NsZWFudXA7DQorCX0NCisNCisJbWRldi0+ cGNsayA9IGRldm1fY2xrX2dldChkZXYsICJwY2xrIik7DQorCWlmIChJU19FUlIobWRldi0+cGNs aykpIHsNCisJCURSTV9FUlJPUigiR2V0IEFQQiBjbGsgZmFpbGVkLlxuIik7DQorCQllcnIgPSBQ VFJfRVJSKG1kZXYtPnBjbGspOw0KKwkJbWRldi0+cGNsayA9IE5VTEw7DQorCQlnb3RvIGVycl9j bGVhbnVwOw0KKwl9DQorDQorCS8qIEVuYWJsZSBBUEIgY2xvY2sgdG8gYWNjZXNzIHRoZSByZWdp c3RlcnMgKi8NCisJY2xrX3ByZXBhcmVfZW5hYmxlKG1kZXYtPnBjbGspOw0KKw0KKwltZGV2LT5m dW5jcyA9IHByb2R1Y3QtPmlkZW50aWZ5KG1kZXYtPnJlZ19iYXNlLCAmbWRldi0+Y2hpcCk7DQor CWlmICgha29tZWRhX3Byb2R1Y3RfbWF0Y2gobWRldiwgcHJvZHVjdC0+cHJvZHVjdF9pZCkpIHsN CisJCURSTV9FUlJPUigiRFQgY29uZmlndXJlZCAleCBtaXNtYXRjaCB3aXRoIHJlYWwgSFcgJXgu XG4iLA0KKwkJCSAgcHJvZHVjdC0+cHJvZHVjdF9pZCwNCisJCQkgIE1BTElEUF9DT1JFX0lEX1BS T0RVQ1RfSUQobWRldi0+Y2hpcC5jb3JlX2lkKSk7DQorCQllcnIgPSAtRU5PREVWOw0KKwkJZ290 byBlcnJfY2xlYW51cDsNCisJfQ0KKw0KKwlEUk1fSU5GTygiRm91bmQgQVJNIE1hbGktRCV4IHZl cnNpb24gciVkcCVkXG4iLA0KKwkJIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQobWRldi0+Y2hp cC5jb3JlX2lkKSwNCisJCSBNQUxJRFBfQ09SRV9JRF9NQUpPUihtZGV2LT5jaGlwLmNvcmVfaWQp LA0KKwkJIE1BTElEUF9DT1JFX0lEX01JTk9SKG1kZXYtPmNoaXAuY29yZV9pZCkpOw0KKw0KKwll cnIgPSBtZGV2LT5mdW5jcy0+ZW51bV9yZXNvdXJjZXMobWRldik7DQorCWlmIChlcnIpIHsNCisJ CURSTV9FUlJPUigiZW51bWVyYXRlIGRpc3BsYXkgcmVzb3VyY2UgZmFpbGVkLlxuIik7DQorCQln b3RvIGVycl9jbGVhbnVwOw0KKwl9DQorDQorCXJldHVybiBtZGV2Ow0KKw0KK2Vycl9jbGVhbnVw Og0KKwlrb21lZGFfZGV2X2Rlc3Ryb3kobWRldik7DQorCXJldHVybiBFUlJfUFRSKGVycik7DQor fQ0KKw0KK3ZvaWQga29tZWRhX2Rldl9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQ0K K3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gbWRldi0+ZGV2Ow0KKwlzdHJ1Y3Qga29tZWRhX2Rl dl9mdW5jcyAqZnVuY3MgPSBtZGV2LT5mdW5jczsNCisJaW50IGk7DQorDQorCWZvciAoaSA9IDA7 IGkgPCBtZGV2LT5uX3BpcGVsaW5lczsgaSsrKSB7DQorCQlrb21lZGFfcGlwZWxpbmVfZGVzdHJv eShtZGV2LCBtZGV2LT5waXBlbGluZXNbaV0pOw0KKwkJbWRldi0+cGlwZWxpbmVzW2ldID0gTlVM TDsNCisJfQ0KKw0KKwltZGV2LT5uX3BpcGVsaW5lcyA9IDA7DQorDQorCWlmIChmdW5jcyAmJiBm dW5jcy0+Y2xlYW51cCkNCisJCWZ1bmNzLT5jbGVhbnVwKG1kZXYpOw0KKw0KKwlpZiAobWRldi0+ cmVnX2Jhc2UpIHsNCisJCWRldm1faW91bm1hcChkZXYsIG1kZXYtPnJlZ19iYXNlKTsNCisJCW1k ZXYtPnJlZ19iYXNlID0gTlVMTDsNCisJfQ0KKw0KKwlpZiAobWRldi0+bWNsaykgew0KKwkJZGV2 bV9jbGtfcHV0KGRldiwgbWRldi0+bWNsayk7DQorCQltZGV2LT5tY2xrID0gTlVMTDsNCisJfQ0K Kw0KKwlpZiAobWRldi0+cGNsaykgew0KKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1kZXYtPnBj bGspOw0KKwkJZGV2bV9jbGtfcHV0KGRldiwgbWRldi0+cGNsayk7DQorCQltZGV2LT5wY2xrID0g TlVMTDsNCisJfQ0KKw0KKwlkZXZtX2tmcmVlKGRldiwgbWRldik7DQorfQ0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5oIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmgNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjAzYjg3MDM3MzZjMg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmgNCkBA IC0wLDAgKzEsOTggQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0K Ky8qDQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNv bT4NCisgKg0KKyAqLw0KKyNpZm5kZWYgX0tPTUVEQV9ERVZfSF8NCisjZGVmaW5lIF9LT01FREFf REVWX0hfDQorDQorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9j bGsuaD4NCisjaW5jbHVkZSAia29tZWRhX3BpcGVsaW5lLmgiDQorI2luY2x1ZGUgIm1hbGlkcF9w cm9kdWN0LmgiDQorDQorLyogbWFsaWRwIGRldmljZSBpZCAqLw0KK2VudW0gew0KKwlNQUxJX0Q3 MSA9IDAsDQorfTsNCisNCisvKiBwaXBlbGluZSBEVCBwb3J0cyAqLw0KK2VudW0gew0KKwlLT01F REFfT0ZfUE9SVF9PVVRQVVQJCT0gMCwNCisJS09NRURBX09GX1BPUlRfQ09QUk9DCQk9IDEsDQor fTsNCisNCitzdHJ1Y3Qga29tZWRhX2NoaXBfaW5mbyB7DQorCXUzMiBhcmNoX2lkOw0KKwl1MzIg Y29yZV9pZDsNCisJdTMyIGNvcmVfaW5mbzsNCisJdTMyIGJ1c193aWR0aDsNCit9Ow0KKw0KK3N0 cnVjdCBrb21lZGFfcHJvZHVjdF9kYXRhIHsNCisJdTMyIHByb2R1Y3RfaWQ7DQorCXN0cnVjdCBr b21lZGFfZGV2X2Z1bmNzICooKmlkZW50aWZ5KSh1MzIgX19pb21lbSAqcmVnLA0KKwkJCQkJICAg ICBzdHJ1Y3Qga29tZWRhX2NoaXBfaW5mbyAqaW5mbyk7DQorfTsNCisNCitzdHJ1Y3Qga29tZWRh X2RldjsNCisNCisvKioNCisgKiBzdHJ1Y3Qga29tZWRhX2Rldl9mdW5jcw0KKyAqDQorICogU3Vw cGxpZWQgYnkgY2hpcCBsZXZlbCBhbmQgcmV0dXJuZWQgYnkgdGhlIGNoaXAgZW50cnkgZnVuY3Rp b24geHh4X2lkZW50aWZ5LA0KKyAqLw0KK3N0cnVjdCBrb21lZGFfZGV2X2Z1bmNzIHsNCisJLyoq DQorCSAqIEBlbnVtX3Jlc291cmNlczoNCisJICoNCisJICogZm9yIENISVAgdG8gcmVwb3J0IG9y IGFkZCBwaXBlbGluZSBhbmQgY29tcG9uZW50IHJlc291cmNlcyB0byBDT1JFDQorCSAqLw0KKwlp bnQgKCplbnVtX3Jlc291cmNlcykoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOw0KKwkvKiogQGNs ZWFudXA6IGNhbGwgdG8gY2hpcCB0byBjbGVhbnVwIGtvbWVkYV9kZXYtPmNoaXAgZGF0YSAqLw0K Kwl2b2lkICgqY2xlYW51cCkoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOw0KK307DQorDQorLyoq DQorICogc3RydWN0IGtvbWVkYV9kZXYNCisgKg0KKyAqIFBpcGVsaW5lIGFuZCBjb21wb25lbnQg YXJlIHVzZWQgdG8gZGVzY3JpYmUgaG93IHRvIGhhbmRsZSB0aGUgcGl4ZWwgZGF0YS4NCisgKiBr b21lZGFfZGV2aWNlIGlzIGZvciBkZXNjcmliaW5nIHRoZSB3aG9sZSB2aWV3IG9mIHRoZSBkZXZp Y2UsIGFuZCB0aGUNCisgKiBjb250cm9sLWFiaWxpdGVzIG9mIGRldmljZS4NCisgKi8NCitzdHJ1 Y3Qga29tZWRhX2RldiB7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsNCisJdTMyIF9faW9tZW0gICAq cmVnX2Jhc2U7DQorDQorCXN0cnVjdCBrb21lZGFfY2hpcF9pbmZvIGNoaXA7DQorDQorCS8qKiBA cGNsazogQVBCIGNsb2NrIGZvciByZWdpc3RlciBhY2Nlc3MgKi8NCisJc3RydWN0IGNsayAqcGNs azsNCisJLyoqIEBtY2s6IEhXIG1haW4gZW5naW5lIGNsayAqLw0KKwlzdHJ1Y3QgY2xrICptY2xr Ow0KKw0KKwlpbnQgbl9waXBlbGluZXM7DQorCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGVs aW5lc1tLT01FREFfTUFYX1BJUEVMSU5FU107DQorDQorCS8qKiBAZnVuY3M6IGNoaXAgZnVuY3Mg dG8gYWNjZXNzIHRvIEhXICovDQorCXN0cnVjdCBrb21lZGFfZGV2X2Z1bmNzICpmdW5jczsNCisJ LyoqDQorCSAqIEBjaGlwX2RhdGE6DQorCSAqDQorCSAqIGNoaXAgZGF0YSB3aWxsIGJlIGFkZGVk IGJ5ICZrb21lZGFfZGV2X2Z1bmNzLmVudW1fcmVzb3VyY2VzKCkgYW5kDQorCSAqIGRlc3Ryb3ll ZCBieSAma29tZWRhX2Rldl9mdW5jcy5jbGVhbnVwKCkNCisJICovDQorCXZvaWQgKmNoaXBfZGF0 YTsNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgYm9vbA0KK2tvbWVkYV9wcm9kdWN0X21hdGNoKHN0 cnVjdCBrb21lZGFfZGV2ICptZGV2LCB1MzIgdGFyZ2V0KQ0KK3sNCisJcmV0dXJuIE1BTElEUF9D T1JFX0lEX1BST0RVQ1RfSUQobWRldi0+Y2hpcC5jb3JlX2lkKSA9PSB0YXJnZXQ7DQorfQ0KKw0K K3N0cnVjdCBrb21lZGFfZGV2ICprb21lZGFfZGV2X2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYp Ow0KK3ZvaWQga29tZWRhX2Rldl9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsNCisN CisjZW5kaWYgLypfS09NRURBX0RFVl9IXyovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwMDAwMDAuLjE3OTEyMmZjOTNmZg0KLS0tIC9kZXYvbnVsbA0KKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuYw0KQEAg LTAsMCArMSwxOTYgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8q DQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4N CisgKg0KKyAqLw0KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiDQorI2luY2x1ZGUgImtvbWVkYV9w aXBlbGluZS5oIg0KKw0KKy8qKiBrb21lZGFfcGlwZWxpbmVfYWRkIC0gQWRkIGEgcGlwZWxpbmUg dG8gJmtvbWVkYV9kZXYgKi8NCitzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICoNCitrb21lZGFfcGlw ZWxpbmVfYWRkKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2LCBzaXplX3Qgc2l6ZSwNCisJCSAgICBz dHJ1Y3Qga29tZWRhX3BpcGVsaW5lX2Z1bmNzICpmdW5jcykNCit7DQorCXN0cnVjdCBrb21lZGFf cGlwZWxpbmUgKnBpcGU7DQorDQorCWlmIChtZGV2LT5uX3BpcGVsaW5lcyArIDEgPiBLT01FREFf TUFYX1BJUEVMSU5FUykgew0KKwkJRFJNX0VSUk9SKCJFeGNlZWQgbWF4IHN1cHBvcnQgJWQgcGlw ZWxpbmVzLlxuIiwNCisJCQkgIEtPTUVEQV9NQVhfUElQRUxJTkVTKTsNCisJCXJldHVybiBOVUxM Ow0KKwl9DQorDQorCWlmIChzaXplIDwgc2l6ZW9mKCpwaXBlKSkgew0KKwkJRFJNX0VSUk9SKCJS ZXF1ZXN0IHBpcGVsaW5lIHNpemUgdG9vIHNtYWxsLlxuIik7DQorCQlyZXR1cm4gTlVMTDsNCisJ fQ0KKw0KKwlwaXBlID0gZGV2bV9remFsbG9jKG1kZXYtPmRldiwgc2l6ZSwgR0ZQX0tFUk5FTCk7 DQorCWlmICghcGlwZSkNCisJCXJldHVybiBOVUxMOw0KKw0KKwlwaXBlLT5tZGV2ID0gbWRldjsN CisJcGlwZS0+aWQgICA9IG1kZXYtPm5fcGlwZWxpbmVzOw0KKwlwaXBlLT5mdW5jcyA9IGZ1bmNz Ow0KKw0KKwltZGV2LT5waXBlbGluZXNbbWRldi0+bl9waXBlbGluZXNdID0gcGlwZTsNCisJbWRl di0+bl9waXBlbGluZXMrKzsNCisNCisJcmV0dXJuIHBpcGU7DQorfQ0KKw0KK3ZvaWQga29tZWRh X3BpcGVsaW5lX2Rlc3Ryb3koc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYsDQorCQkJICAgICBzdHJ1 Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlKQ0KK3sNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQg KmM7DQorCWludCBpOw0KKw0KKwlkcF9mb3JfZWFjaF9zZXRfYml0KGksIHBpcGUtPmF2YWlsX2Nv bXBzKSB7DQorCQljID0ga29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnQocGlwZSwgaSk7DQor CQlrb21lZGFfY29tcG9uZW50X2Rlc3Ryb3kobWRldiwgYyk7DQorCX0NCisNCisJY2xrX3B1dChw aXBlLT5weGxjbGspOw0KKwljbGtfcHV0KHBpcGUtPmFjbGspOw0KKw0KKwlkZXZtX2tmcmVlKG1k ZXYtPmRldiwgcGlwZSk7DQorfQ0KKw0KK3N0cnVjdCBrb21lZGFfY29tcG9uZW50ICoqDQora29t ZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnRfcG9zKHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBp cGUsIGludCBpZCkNCit7DQorCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2ID0gcGlwZS0+bWRldjsN CisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqdGVtcCA9IE5VTEw7DQorCXN0cnVjdCBrb21lZGFf Y29tcG9uZW50ICoqcG9zID0gTlVMTDsNCisNCisJc3dpdGNoIChpZCkgew0KKwljYXNlIEtPTUVE QV9DT01QT05FTlRfTEFZRVIwOg0KKwljYXNlIEtPTUVEQV9DT01QT05FTlRfTEFZRVIxOg0KKwlj YXNlIEtPTUVEQV9DT01QT05FTlRfTEFZRVIyOg0KKwljYXNlIEtPTUVEQV9DT01QT05FTlRfTEFZ RVIzOg0KKwkJcG9zID0gdG9fY3BvcyhwaXBlLT5sYXllcnNbaWQgLSBLT01FREFfQ09NUE9ORU5U X0xBWUVSMF0pOw0KKwkJYnJlYWs7DQorCWNhc2UgS09NRURBX0NPTVBPTkVOVF9XQl9MQVlFUjoN CisJCXBvcyA9IHRvX2Nwb3MocGlwZS0+d2JfbGF5ZXIpOw0KKwkJYnJlYWs7DQorCWNhc2UgS09N RURBX0NPTVBPTkVOVF9DT01QSVowOg0KKwljYXNlIEtPTUVEQV9DT01QT05FTlRfQ09NUElaMToN CisJCXRlbXAgPSBtZGV2LT5waXBlbGluZXNbaWQgLSBLT01FREFfQ09NUE9ORU5UX0NPTVBJWjBd Ow0KKwkJaWYgKCF0ZW1wKSB7DQorCQkJRFJNX0VSUk9SKCJjb21waXotJWQgZG9lc24ndCBleGlz dC5cbiIsIGlkKTsNCisJCQlyZXR1cm4gTlVMTDsNCisJCX0NCisJCXBvcyA9IHRvX2Nwb3ModGVt cC0+Y29tcGl6KTsNCisJCWJyZWFrOw0KKwljYXNlIEtPTUVEQV9DT01QT05FTlRfU0NBTEVSMDoN CisJY2FzZSBLT01FREFfQ09NUE9ORU5UX1NDQUxFUjE6DQorCQlwb3MgPSB0b19jcG9zKHBpcGUt PnNjYWxlcnNbaWQgLSBLT01FREFfQ09NUE9ORU5UX1NDQUxFUjBdKTsNCisJCWJyZWFrOw0KKwlj YXNlIEtPTUVEQV9DT01QT05FTlRfSVBTMDoNCisJY2FzZSBLT01FREFfQ09NUE9ORU5UX0lQUzE6 DQorCQl0ZW1wID0gbWRldi0+cGlwZWxpbmVzW2lkIC0gS09NRURBX0NPTVBPTkVOVF9JUFMwXTsN CisJCWlmICghdGVtcCkgew0KKwkJCURSTV9FUlJPUigiaXBzLSVkIGRvZXNuJ3QgZXhpc3QuXG4i LCBpZCk7DQorCQkJcmV0dXJuIE5VTEw7DQorCQl9DQorCQlwb3MgPSB0b19jcG9zKHRlbXAtPmlt cHJvYyk7DQorCQlicmVhazsNCisJY2FzZSBLT01FREFfQ09NUE9ORU5UX1RJTUlOR19DVFJMUjoN CisJCXBvcyA9IHRvX2Nwb3MocGlwZS0+Y3RybHIpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQor CQlwb3MgPSBOVUxMOw0KKwkJRFJNX0VSUk9SKCJVbmtub3duIHBpcGVsaW5lIHJlc291cmNlIElE OiAlZC5cbiIsIGlkKTsNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiBwb3M7DQorfQ0KKw0K K3N0cnVjdCBrb21lZGFfY29tcG9uZW50ICoNCitrb21lZGFfcGlwZWxpbmVfZ2V0X2NvbXBvbmVu dChzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlLCBpbnQgaWQpDQorew0KKwlzdHJ1Y3Qga29t ZWRhX2NvbXBvbmVudCAqKnBvcyA9IE5VTEw7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpj ID0gTlVMTDsNCisNCisJcG9zID0ga29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnRfcG9zKHBp cGUsIGlkKTsNCisJaWYgKHBvcykNCisJCWMgPSAqcG9zOw0KKw0KKwlyZXR1cm4gYzsNCit9DQor DQorLyoqIGtvbWVkYV9jb21wb25lbnRfYWRkIC0gQWRkIGEgY29tcG9uZW50IHRvICZrb21lZGFf cGlwZWxpbmUgKi8NCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqDQora29tZWRhX2NvbXBvbmVu dF9hZGQoc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSwNCisJCSAgICAgc2l6ZV90IGNvbXBf c3osIHUzMiBpZCwgdTMyIGh3X2lkLA0KKwkJICAgICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9m dW5jcyAqZnVuY3MsDQorCQkgICAgIHU4IG1heF9hY3RpdmVfaW5wdXRzLCB1MzIgc3VwcG9ydGVk X2lucHV0cywNCisJCSAgICAgdTggbWF4X2FjdGl2ZV9vdXRwdXRzLCB1MzIgX19pb21lbSAqcmVn LA0KKwkJICAgICBjb25zdCBjaGFyICpuYW1lX2ZtdCwgLi4uKQ0KK3sNCisJc3RydWN0IGtvbWVk YV9jb21wb25lbnQgKipwb3M7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjOw0KKwlpbnQg aWR4LCAqbnVtID0gTlVMTDsNCisNCisJaWYgKG1heF9hY3RpdmVfaW5wdXRzID4gS09NRURBX0NP TVBPTkVOVF9OX0lOUFVUUykgew0KKwkJV0FSTigxLCAicGxlYXNlIGxhcmdlIEtPTUVEQV9DT01Q T05FTlRfTl9JTlBVVFMgdG8gJWQuXG4iLA0KKwkJICAgICBtYXhfYWN0aXZlX2lucHV0cyk7DQor CQlyZXR1cm4gTlVMTDsNCisJfQ0KKw0KKwlwb3MgPSBrb21lZGFfcGlwZWxpbmVfZ2V0X2NvbXBv bmVudF9wb3MocGlwZSwgaWQpOw0KKwlpZiAoIXBvcyB8fCAoKnBvcykpDQorCQlyZXR1cm4gTlVM TDsNCisNCisJaWYgKGhhc19iaXQoaWQsIEtPTUVEQV9QSVBFTElORV9MQVlFUlMpKSB7DQorCQlp ZHggPSBpZCAtIEtPTUVEQV9DT01QT05FTlRfTEFZRVIwOw0KKwkJbnVtID0gJnBpcGUtPm5fbGF5 ZXJzOw0KKwkJaWYgKGlkeCAhPSBwaXBlLT5uX2xheWVycykgew0KKwkJCURSTV9FUlJPUigicGxl YXNlIGFkZCBMYXllciBieSBpZCBzZXF1ZW5jZS5cbiIpOw0KKwkJCXJldHVybiBOVUxMOw0KKwkJ fQ0KKwl9IGVsc2UgaWYgKGhhc19iaXQoaWQsICBLT01FREFfUElQRUxJTkVfU0NBTEVSUykpIHsN CisJCWlkeCA9IGlkIC0gS09NRURBX0NPTVBPTkVOVF9TQ0FMRVIwOw0KKwkJbnVtID0gJnBpcGUt Pm5fc2NhbGVyczsNCisJCWlmIChpZHggIT0gcGlwZS0+bl9zY2FsZXJzKSB7DQorCQkJRFJNX0VS Uk9SKCJwbGVhc2UgYWRkIFNjYWxlciBieSBpZCBzZXF1ZW5jZS5cbiIpOw0KKwkJCXJldHVybiBO VUxMOw0KKwkJfQ0KKwl9DQorDQorCWMgPSBkZXZtX2t6YWxsb2MocGlwZS0+bWRldi0+ZGV2LCBj b21wX3N6LCBHRlBfS0VSTkVMKTsNCisJaWYgKCFjKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCWMt PmlkID0gaWQ7DQorCWMtPmh3X2lkID0gaHdfaWQ7DQorCWMtPnJlZyA9IHJlZzsNCisJYy0+cGlw ZWxpbmUgPSBwaXBlOw0KKwljLT5tYXhfYWN0aXZlX2lucHV0cyA9IG1heF9hY3RpdmVfaW5wdXRz Ow0KKwljLT5tYXhfYWN0aXZlX291dHB1dHMgPSBtYXhfYWN0aXZlX291dHB1dHM7DQorCWMtPnN1 cHBvcnRlZF9pbnB1dHMgPSBzdXBwb3J0ZWRfaW5wdXRzOw0KKwljLT5mdW5jcyA9IGZ1bmNzOw0K Kw0KKwlpZiAobmFtZV9mbXQpIHsNCisJCXZhX2xpc3QgYXJnczsNCisNCisJCXZhX3N0YXJ0KGFy Z3MsIG5hbWVfZm10KTsNCisJCXZzbnByaW50ZihjLT5uYW1lLCBzaXplb2YoYy0+bmFtZSksIG5h bWVfZm10LCBhcmdzKTsNCisJCXZhX2VuZChhcmdzKTsNCisJfQ0KKw0KKwlpZiAobnVtKQ0KKwkJ Km51bSA9ICpudW0gKyAxOw0KKw0KKwlwaXBlLT5hdmFpbF9jb21wcyB8PSBCSVQoYy0+aWQpOw0K KwkqcG9zID0gYzsNCisNCisJcmV0dXJuIGM7DQorfQ0KKw0KK3ZvaWQga29tZWRhX2NvbXBvbmVu dF9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2LA0KKwkJCSAgICAgIHN0cnVjdCBrb21l ZGFfY29tcG9uZW50ICpjKQ0KK3sNCisJZGV2bV9rZnJlZShtZGV2LT5kZXYsIGMpOw0KK30NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBl bGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxp bmUuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uN2RhYmEwZTE5 NDZiDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9waXBlbGluZS5oDQpAQCAtMCwwICsxLDM0OCBAQA0KKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQorLyoNCisgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogQXV0aG9yOiBKYW1lcy5RaWFuLldh bmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPg0KKyAqDQorICovDQorI2lmbmRlZiBfS09NRURB X1BJUEVMSU5FX0hfDQorI2RlZmluZSBfS09NRURBX1BJUEVMSU5FX0hfDQorDQorI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+DQorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQorI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KKyNpbmNsdWRlICJtYWxpZHBfdXRpbHMuaCINCisN CisjZGVmaW5lIEtPTUVEQV9NQVhfUElQRUxJTkVTCQkyDQorI2RlZmluZSBLT01FREFfUElQRUxJ TkVfTUFYX0xBWUVSUwk0DQorI2RlZmluZSBLT01FREFfUElQRUxJTkVfTUFYX1NDQUxFUlMJMg0K KyNkZWZpbmUgS09NRURBX0NPTVBPTkVOVF9OX0lOUFVUUwk1DQorDQorLyogcGlwZWxpbmUgY29t cG9uZW50IElEcyAqLw0KK2VudW0gew0KKwlLT01FREFfQ09NUE9ORU5UX0xBWUVSMAkJPSAwLA0K KwlLT01FREFfQ09NUE9ORU5UX0xBWUVSMQkJPSAxLA0KKwlLT01FREFfQ09NUE9ORU5UX0xBWUVS MgkJPSAyLA0KKwlLT01FREFfQ09NUE9ORU5UX0xBWUVSMwkJPSAzLA0KKwlLT01FREFfQ09NUE9O RU5UX1dCX0xBWUVSCT0gNywgLyogd3JpdGUgYmFjayBsYXllciAqLw0KKwlLT01FREFfQ09NUE9O RU5UX1NDQUxFUjAJPSA4LA0KKwlLT01FREFfQ09NUE9ORU5UX1NDQUxFUjEJPSA5LA0KKwlLT01F REFfQ09NUE9ORU5UX1NQTElUVEVSCT0gMTIsDQorCUtPTUVEQV9DT01QT05FTlRfTUVSR0VSCQk9 IDE0LA0KKwlLT01FREFfQ09NUE9ORU5UX0NPTVBJWjAJPSAxNiwgLyogY29tcG9zaXRvciAqLw0K KwlLT01FREFfQ09NUE9ORU5UX0NPTVBJWjEJPSAxNywNCisJS09NRURBX0NPTVBPTkVOVF9JUFMw CQk9IDIwLCAvKiBwb3N0IGltYWdlIHByb2Nlc3NvciAqLw0KKwlLT01FREFfQ09NUE9ORU5UX0lQ UzEJCT0gMjEsDQorCUtPTUVEQV9DT01QT05FTlRfVElNSU5HX0NUUkxSCT0gMjIsIC8qIHRpbWlu ZyBjb250cm9sbGVyICovDQorfTsNCisNCisjZGVmaW5lIEtPTUVEQV9QSVBFTElORV9MQVlFUlMJ CShCSVQoS09NRURBX0NPTVBPTkVOVF9MQVlFUjApIHxcDQorCQkJCQkgQklUKEtPTUVEQV9DT01Q T05FTlRfTEFZRVIxKSB8XA0KKwkJCQkJIEJJVChLT01FREFfQ09NUE9ORU5UX0xBWUVSMikgfFwN CisJCQkJCSBCSVQoS09NRURBX0NPTVBPTkVOVF9MQVlFUjMpKQ0KKw0KKyNkZWZpbmUgS09NRURB X1BJUEVMSU5FX1NDQUxFUlMJCShCSVQoS09NRURBX0NPTVBPTkVOVF9TQ0FMRVIwKSB8XA0KKwkJ CQkJIEJJVChLT01FREFfQ09NUE9ORU5UX1NDQUxFUjEpKQ0KKw0KKyNkZWZpbmUgS09NRURBX1BJ UEVMSU5FX0NPTVBJWlMJCShCSVQoS09NRURBX0NPTVBPTkVOVF9DT01QSVowKSB8XA0KKwkJCQkJ IEJJVChLT01FREFfQ09NUE9ORU5UX0NPTVBJWjEpKQ0KKw0KKyNkZWZpbmUgS09NRURBX1BJUEVM SU5FX0lNUFJPQ1MJCShCSVQoS09NRURBX0NPTVBPTkVOVF9JUFMwKSB8XA0KKwkJCQkJIEJJVChL T01FREFfQ09NUE9ORU5UX0lQUzEpKQ0KK3N0cnVjdCBrb21lZGFfY29tcG9uZW50Ow0KK3N0cnVj dCBrb21lZGFfY29tcG9uZW50X3N0YXRlOw0KKw0KKy8qKiBrb21lZGFfY29tcG9uZW50X2Z1bmNz IC0gY29tcG9uZW50IGNvbnRyb2wgZnVuY3Rpb25zICovDQorc3RydWN0IGtvbWVkYV9jb21wb25l bnRfZnVuY3Mgew0KKwkvKiogQHZhbGlkYXRlOiBvcHRpb25hbCwNCisJICogY29tcG9uZW50IG1h eSBoYXMgc3BlY2lhbCByZXF1aXJlbWVudHMgb3IgbGltaXRhdGlvbnMsIHRoaXMgZnVuY3Rpb24N CisJICogc3VwcGx5IEhXIHRoZSBhYmlsaXR5IHRvIGRvIHRoZSBmdXJ0aGVyIEhXIHNwZWNpZmlj IGNoZWNrLg0KKwkgKi8NCisJaW50ICgqdmFsaWRhdGUpKHN0cnVjdCBrb21lZGFfY29tcG9uZW50 ICpjLA0KKwkJCXN0cnVjdCBrb21lZGFfY29tcG9uZW50X3N0YXRlICpzdGF0ZSk7DQorCS8qKiBA dXBkYXRlOiB1cGRhdGUgaXMgYSBhY3RpdmUgdXBkYXRlICovDQorCXZvaWQgKCp1cGRhdGUpKHN0 cnVjdCBrb21lZGFfY29tcG9uZW50ICpjLA0KKwkJICAgICAgIHN0cnVjdCBrb21lZGFfY29tcG9u ZW50X3N0YXRlICpzdGF0ZSk7DQorCS8qKiBAZGlzYWJsZTogZGlzYWJsZSBjb21wb25lbnQgKi8N CisJdm9pZCAoKmRpc2FibGUpKHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjKTsNCisJLyoqIEBk dW1wX3JlZ2lzdGVyOiBPcHRpb25hbCwgZHVtcCByZWdpc3RlcnMgdG8gc2VxX2ZpbGUgKi8NCisJ dm9pZCAoKmR1bXBfcmVnaXN0ZXIpKHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjLCBzdHJ1Y3Qg c2VxX2ZpbGUgKnNlcSk7DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVu dA0KKyAqDQorICogc3RydWN0IGtvbWVkYV9jb21wb25lbnQgZGVzY3JpYmUgdGhlIGRhdGEgZmxv dyBjYXBhYmlsaXRpZXMgZm9yIGhvdyB0byBsaW5rIGENCisgKiBjb21wb25lbnQgaW50byB0aGUg ZGlzcGxheSBwaXBlbGluZS4NCisgKiBhbGwgc3BlY2lmaWVkIGNvbXBvbmVudHMgYXJlIHN1YmNs YXNzIG9mIHRoaXMgc3RydWN0dXJlLg0KKyAqLw0KK3N0cnVjdCBrb21lZGFfY29tcG9uZW50IHsN CisJLyoqIEBvYmo6IHRyZWF0IGNvbXBvbmVudCBhcyBwcml2YXRlIG9iaiAqLw0KKwlzdHJ1Y3Qg ZHJtX3ByaXZhdGVfb2JqIG9iajsNCisJLyoqIEBwaXBlbGluZTogdGhlIGtvbWVkYSBwaXBlbGlu ZSB0aGlzIGNvbXBvbmVudCBiZWxvbmdzIHRvICovDQorCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUg KnBpcGVsaW5lOw0KKwkvKiogQG5hbWU6IGNvbXBvbmVudCBuYW1lICovDQorCWNoYXIgbmFtZVsz Ml07DQorCS8qKg0KKwkgKiBAcmVnOg0KKwkgKiBjb21wb25lbnQgcmVnaXN0ZXIgYmFzZSwNCisJ ICogd2hpY2ggaXMgaW5pdGlhbGl6ZWQgYnkgY2hpcCBhbmQgdXNlZCBieSBjaGlwIG9ubHkNCisJ ICovDQorCXUzMiBfX2lvbWVtICpyZWc7DQorCS8qKiBAaWQ6IGNvbXBvbmVudCBpZCAqLw0KKwl1 MzIgaWQ7DQorCS8qKiBAaHdfaWM6IGNvbXBvbmVudCBodyBpZCwNCisJICogIHdoaWNoIGlzIGlu aXRpYWxpemVkIGJ5IGNoaXAgYW5kIHVzZWQgYnkgY2hpcCBvbmx5DQorCSAqLw0KKwl1MzIgaHdf aWQ7DQorDQorCS8qKg0KKwkgKiBAbWF4X2FjdGl2ZV9pbnB1dHM6DQorCSAqIEBtYXhfYWN0aXZl X291dHB1czoNCisJICoNCisJICogbWF4aW11bSBudW1iZXIgb2YgaW5wdXRzL291dHB1dHMgdGhh dCBjYW4gYmUgYWN0aXZlIGluIHRoZSBzYW1lIHRpbWUNCisJICogTm90ZToNCisJICogdGhlIG51 bWJlciBpc24ndCB0aGUgYml0IG51bWJlciBvZiBAc3VwcG9ydGVkX2lucHV0cyBvcg0KKwkgKiBA c3VwcG9ydGVkX291dHB1dHMsIGJ1dCBtYXkgYmUgbGVzcyB0aGFuIGl0LCBzaW5jZSBjb21wb25l bnQgbWF5IG5vdA0KKwkgKiBzdXBwb3J0IGVuYWJsaW5nIGFsbCBAc3VwcG9ydGVkX2lucHV0cy9v dXRwdXRzIGF0IHRoZSBzYW1lIHRpbWUuDQorCSAqLw0KKwl1OCBtYXhfYWN0aXZlX2lucHV0czsN CisJdTggbWF4X2FjdGl2ZV9vdXRwdXRzOw0KKwkvKioNCisJICogQHN1cHBvcnRlZF9pbnB1dHM6 DQorCSAqIEBzdXBwb3J0ZWRfb3V0cHV0czoNCisJICoNCisJICogYml0bWFzayBvZiBCSVQoY29t cG9uZW50LT5pZCkgZm9yIHRoZSBzdXBwb3J0ZWQgaW5wdXRzL291dHB1dHMNCisJICogZGVzY3Jp YmVzIHRoZSBwb3NzaWJpbGl0aWVzIG9mIGhvdyBhIGNvbXBvbmVudCBpcyBsaW5rZWQgaW50byBh DQorCSAqIHBpcGVsaW5lLg0KKwkgKi8NCisJdTMyIHN1cHBvcnRlZF9pbnB1dHM7DQorCXUzMiBz dXBwb3J0ZWRfb3V0cHV0czsNCisNCisJLyoqDQorCSAqIEBmdW5jczogY2hpcCBmdW5jdGlvbnMg dG8gYWNjZXNzIEhXDQorCSAqLw0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9mdW5jcyAqZnVu Y3M7DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9vdXRwdXQNCisg Kg0KKyAqIGEgY29tcG9uZW50IGhhcyBtdWx0aXBsZSBvdXRwdXRzLCBpZiB3YW50IHRvIGtub3cg d2hlcmUgdGhlIGRhdGENCisgKiBjb21lcyBmcm9tLCBvbmx5IGtub3cgdGhlIGNvbXBvbmVudCBp cyBub3QgZW5vdWdoLCB3ZSBzdGlsbCBuZWVkIHRvIGtub3cNCisgKiBpdHMgb3V0cHV0IHBvcnQN CisgKi8NCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9vdXRwdXQgew0KKwkvKiogQGNvbXBvbmVu dDogaW5kaWNhdGUgd2hpY2ggY29tcG9uZW50IHRoZSBkYXRhIGNvbWVzIGZyb20gKi8NCisJc3Ry dWN0IGtvbWVkYV9jb21wb25lbnQgKmNvbXBvbmVudDsNCisJLyoqIEBvdXRwdXRfcG9ydDoNCisJ ICogdGhlIG91dHB1dCBwb3J0IG9mIHRoZSAma29tZWRhX2NvbXBvbmVudF9vdXRwdXQuY29tcG9u ZW50DQorCSAqLw0KKwl1OCBvdXRwdXRfcG9ydDsNCit9Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBr b21lZGFfY29tcG9uZW50X3N0YXRlDQorICoNCisgKiBjb21wb25lbnRfc3RhdGUgaXMgdGhlIGRh dGEgZmxvdyBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21wb25lbnQsIGFuZCBpdCdzDQorICogdGhl IHN1cGVyY2xhc3Mgb2YgYWxsIHNwZWNpZmljIGNvbXBvbmVudF9zdGF0ZSBsaWtlIEBrb21lZGFf bGF5ZXJfc3RhdGUsDQorICogQGtvbWVkYV9zY2FsZXJfc3RhdGUNCisgKi8NCitzdHJ1Y3Qga29t ZWRhX2NvbXBvbmVudF9zdGF0ZSB7DQorCS8qKiBAb2JqOiB0cmFja2luZyBjb21wb25lbnRfc3Rh dGUgYnkgZHJtX2F0b21pY19zdGF0ZSAqLw0KKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgb2Jq Ow0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqY29tcG9uZW50Ow0KKwkvKioNCisJICogQGJp bmRpbmdfdXNlcjoNCisJICogY3VycmVudGx5IGJvdW5kIHVzZXIsIHRoZSB1c2VyIGNhbiBiZSBj cnRjL3BsYW5lL3diX2Nvbm4sIHdoaWNoIGlzDQorCSAqIHZhbGlkIGRlY2lkZWQgYnkgQGNvbXBv bmVudCBhbmQgQGlucHV0cw0KKwkgKg0KKwkgKiAtICBMYXllcjogaXRzIHVzZXIgYWx3YXlzIGlz IHBsYW5lLg0KKwkgKiAtICBjb21waXovaW1wcm9jL3RpbWluZ19jdHJscjogdGhlIHVzZXIgaXMg Y3J0Yy4NCisJICogLSAgd2JfbGF5ZXI6IHdiX2Nvbm47DQorCSAqIC0gIHNjYWxlcjogcGxhbmUg d2hlbiBpbnB1dCBpcyBsYXllciwgd2JfY29ubiBpZiBpbnB1dCBpcyBjb21waXouDQorCSAqLw0K Kwl1bmlvbiB7DQorCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7DQorCQlzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZTsNCisJCXN0cnVjdCBkcm1fY29ubmVjdG9yICp3Yl9jb25uOw0KKwkJdm9pZCAqYmlu ZGluZ191c2VyOw0KKwl9Ow0KKwkvKioNCisJICogQGFjdGl2ZV9pbnB1dHM6DQorCSAqDQorCSAq IGFjdGl2ZV9pbnB1dHMgaXMgYml0bWFzayBvZiBAaW5wdXRzIGluZGV4DQorCSAqDQorCSAqIC0g IGFjdGl2ZV9pbnB1dHMgPSBjaGFuZ2VkX2FjdGl2ZV9pbnB1dHMgKyB1bmNoYW5nZWRfYWN0aXZl X2lucHV0cw0KKwkgKiAtICBhZmZlY3RlZF9pbnB1dHMgPSBvbGQtPmFjdGl2ZV9pbnB1dHMgKyBu ZXctPmFjdGl2ZV9pbnB1dHM7DQorCSAqIC0gIGRpc2FibGluZ19pbnB1dHMgPSBhZmZlY3RlZF9p bnB1dHMgXiBhY3RpdmVfaW5wdXRzOw0KKwkgKiAtICBjaGFuZ2VkX2lucHV0cyA9IGRpc2FibGlu Z19pbnB1dHMgKyBjaGFuZ2VkX2FjdGl2ZV9pbnB1dHM7DQorCSAqDQorCSAqIE5PVEU6DQorCSAq IGNoYW5nZWRfaW5wdXRzIGRvZXNuJ3QgaW5jbHVkZSBhbGwgYWN0aXZlX2lucHV0IGJ1dCBvbmx5 DQorCSAqIEBjaGFuZ2VkX2FjdGl2ZV9pbnB1dHMsIGFuZCB0aGlzIGJpdG1hc2sgY2FuIGJlIHVz ZWQgaW4gY2hpcA0KKwkgKiBsZXZlbCBmb3IgZGlydHkgdXBkYXRlLg0KKwkgKi8NCisJdTE2IGFj dGl2ZV9pbnB1dHM7DQorCXUxNiBjaGFuZ2VkX2FjdGl2ZV9pbnB1dHM7DQorCXUxNiBhZmZlY3Rl ZF9pbnB1dHM7DQorCS8qKg0KKwkgKiBAaW5wdXRzOg0KKwkgKg0KKwkgKiB0aGUgc3BlY2lmaWMg aW5wdXRzW2ldIG9ubHkgdmFsaWQgb24gQklUKGkpIGhhcyBiZWVuIHNldCBpbg0KKwkgKiBAYWN0 aXZlX2lucHV0cywgaWYgbm90IHRoZSBpbnB1dHNbaV0gaXMgdW5kZWZpbmVkLg0KKwkgKi8NCisJ c3RydWN0IGtvbWVkYV9jb21wb25lbnRfb3V0cHV0IGlucHV0c1tLT01FREFfQ09NUE9ORU5UX05f SU5QVVRTXTsNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgdTE2IGNvbXBvbmVudF9kaXNhYmxpbmdf aW5wdXRzKHN0cnVjdCBrb21lZGFfY29tcG9uZW50X3N0YXRlICpzdCkNCit7DQorCXJldHVybiBz dC0+YWZmZWN0ZWRfaW5wdXRzIF4gc3QtPmFjdGl2ZV9pbnB1dHM7DQorfQ0KKw0KK3N0YXRpYyBp bmxpbmUgdTE2IGNvbXBvbmVudF9jaGFuZ2VkX2lucHV0cyhzdHJ1Y3Qga29tZWRhX2NvbXBvbmVu dF9zdGF0ZSAqc3QpDQorew0KKwlyZXR1cm4gY29tcG9uZW50X2Rpc2FibGluZ19pbnB1dHMoc3Qp IHwgc3QtPmNoYW5nZWRfYWN0aXZlX2lucHV0czsNCit9DQorDQorI2RlZmluZSB0b19jb21wKF9f YykJKCgoX19jKSA9PSBOVUxMKSA/IE5VTEwgOiAmKChfX2MpLT5iYXNlKSkNCisjZGVmaW5lIHRv X2Nwb3MoX19jKQkoKHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICoqKSYoX19jKSkNCisNCisvKiB0 aGVzZSBzdHJ1Y3R1cmVzIGFyZSBnb2luZyB0byBiZSBmaWxsZWQgaW4gaW4gdXR1cmUgcGF0Y2hl cyAqLw0KK3N0cnVjdCBrb21lZGFfbGF5ZXIgew0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCBi YXNlOw0KKwkvKiBsYXllciBzcGVjaWZpYyBmZWF0dXJlcyBhbmQgY2FwcyAqLw0KK307DQorDQor c3RydWN0IGtvbWVkYV9sYXllcl9zdGF0ZSB7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50X3N0 YXRlIGJhc2U7DQorCS8qIGxheWVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gc3RhdGUgKi8NCit9 Ow0KKw0KK3N0cnVjdCBrb21lZGFfY29tcGl6IHsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQg YmFzZTsNCisJLyogY29tcGl6IHNwZWNpZmljIGZlYXR1cmVzIGFuZCBjYXBzICovDQorfTsNCisN CitzdHJ1Y3Qga29tZWRhX2NvbXBpel9zdGF0ZSB7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50 X3N0YXRlIGJhc2U7DQorCS8qIGNvbXBpeiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN0YXRlICov DQorfTsNCisNCitzdHJ1Y3Qga29tZWRhX3NjYWxlciB7DQorCXN0cnVjdCBrb21lZGFfY29tcG9u ZW50IGJhc2U7DQorCS8qIHNjYWxlciBmZWF0dXJlcyBhbmQgY2FwcyAqLw0KK307DQorDQorc3Ry dWN0IGtvbWVkYV9zY2FsZXJfc3RhdGUgew0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0 ZSBiYXNlOw0KK307DQorDQorc3RydWN0IGtvbWVkYV9pbXByb2Mgew0KKwlzdHJ1Y3Qga29tZWRh X2NvbXBvbmVudCBiYXNlOw0KK307DQorDQorc3RydWN0IGtvbWVkYV9pbXByb2Nfc3RhdGUgew0K KwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSBiYXNlOw0KK307DQorDQorLyogZGlzcGxh eSB0aW1pbmcgY29udHJvbGxlciAqLw0KK3N0cnVjdCBrb21lZGFfdGltaW5nX2N0cmxyIHsNCisJ c3RydWN0IGtvbWVkYV9jb21wb25lbnQgYmFzZTsNCit9Ow0KKw0KK3N0cnVjdCBrb21lZGFfdGlt aW5nX2N0cmxyX3N0YXRlIHsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgYmFzZTsN Cit9Ow0KKw0KKy8qKiBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX2Z1bmNzICovDQorc3RydWN0IGtv bWVkYV9waXBlbGluZV9mdW5jcyB7DQorCS8qIGR1bXBfcmVnaXN0ZXI6IE9wdGlvbmFsLCBkdW1w IHJlZ2lzdGVycyB0byBzZXFfZmlsZSAqLw0KKwl2b2lkICgqZHVtcF9yZWdpc3Rlcikoc3RydWN0 IGtvbWVkYV9waXBlbGluZSAqcGlwZSwNCisJCQkgICAgICBzdHJ1Y3Qgc2VxX2ZpbGUgKnNmKTsN Cit9Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBrb21lZGFfcGlwZWxpbmUNCisgKg0KKyAqIFJlcHJl c2VudCBhIGNvbXBsZXRlIGRpc3BsYXkgcGlwZWxpbmUgYW5kIGhvbGQgYWxsIGZ1bmN0aW9uYWwg Y29tcG9uZW50cy4NCisgKi8NCitzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lIHsNCisJLyoqIEBvYmo6 IGxpbmsgcGlwZWxpbmUgYXMgcHJpdmF0ZSBvYmogb2YgZHJtX2F0b21pY19zdGF0ZSAqLw0KKwlz dHJ1Y3QgZHJtX3ByaXZhdGVfb2JqIG9iajsNCisJLyoqIEBtZGV2OiB0aGUgcGFyZW50IGtvbWVk YV9kZXYgKi8NCisJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXY7DQorCS8qKiBAcHhsY2xrOiBwaXhl bCBjbG9jayAqLw0KKwlzdHJ1Y3QgY2xrICpweGxjbGs7DQorCS8qKiBAYWNsazogQVhJIGNsb2Nr ICovDQorCXN0cnVjdCBjbGsgKmFjbGs7DQorCS8qKiBAaWQ6IHBpcGVsaW5lIGlkICovDQorCWlu dCBpZDsNCisJLyoqIEBhdmFpbF9jb21wczogYXZhaWxhYmxlIGNvbXBvbmVudHMgbWFzayBvZiBw aXBlbGluZSAqLw0KKwl1MzIgYXZhaWxfY29tcHM7DQorCWludCBuX2xheWVyczsNCisJc3RydWN0 IGtvbWVkYV9sYXllciAqbGF5ZXJzW0tPTUVEQV9QSVBFTElORV9NQVhfTEFZRVJTXTsNCisJaW50 IG5fc2NhbGVyczsNCisJc3RydWN0IGtvbWVkYV9zY2FsZXIgKnNjYWxlcnNbS09NRURBX1BJUEVM SU5FX01BWF9TQ0FMRVJTXTsNCisJc3RydWN0IGtvbWVkYV9jb21waXogKmNvbXBpejsNCisJc3Ry dWN0IGtvbWVkYV9sYXllciAgKndiX2xheWVyOw0KKwlzdHJ1Y3Qga29tZWRhX2ltcHJvYyAqaW1w cm9jOw0KKwlzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJsciAqY3RybHI7DQorCXN0cnVjdCBrb21l ZGFfcGlwZWxpbmVfZnVuY3MgKmZ1bmNzOyAvKiBwcml2YXRlIHBpcGVsaW5lIGZ1bmN0aW9ucyAq Lw0KK307DQorDQorLyoqDQorICogc3RydWN0IGtvbWVkYV9waXBlbGluZV9zdGF0ZQ0KKyAqDQor ICogTk9URToNCisgKiBVbmxpa2UgdGhlIHBpcGVsaW5lLCBwaXBlbGluZV9zdGF0ZSBkb2VzbuKA mXQgZ2F0aGVyIGFueSBjb21wb25lbnRfc3RhdGUNCisgKiBpbnRvIGl0LiBJdCBiZWNhdXNlIGFs bCBjb21wb25lbnQgd2lsbCBiZSBtYW5hZ2VkIGJ5IGRybV9hdG9taWNfc3RhdGUuDQorICovDQor c3RydWN0IGtvbWVkYV9waXBlbGluZV9zdGF0ZSB7DQorCS8qKiBAb2JqOiB0cmFja2luZyBwaXBl bGluZV9zdGF0ZSBieSBkcm1fYXRvbWljX3N0YXRlICovDQorCXN0cnVjdCBkcm1fcHJpdmF0ZV9z dGF0ZSBvYmo7DQorCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGU7DQorCS8qKiBAY3J0Yzog Y3VycmVudGx5IGJvdW5kIGNydGMgKi8NCisJc3RydWN0IGRybV9jcnRjICpjcnRjOw0KKwkvKioN CisJICogQGFjdGl2ZV9jb21wczoNCisJICoNCisJICogYml0bWFzayAtIEJJVChjb21wb25lbnQt PmlkKSBvZiBhY3RpdmUgY29tcG9uZW50cw0KKwkgKi8NCisJdTMyIGFjdGl2ZV9jb21wczsNCit9 Ow0KKw0KKyNkZWZpbmUgdG9fbGF5ZXIoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFf bGF5ZXIsIGJhc2UpDQorI2RlZmluZSB0b19jb21waXooYykJY29udGFpbmVyX29mKGMsIHN0cnVj dCBrb21lZGFfY29tcGl6LCBiYXNlKQ0KKyNkZWZpbmUgdG9fc2NhbGVyKGMpCWNvbnRhaW5lcl9v ZihjLCBzdHJ1Y3Qga29tZWRhX3NjYWxlciwgYmFzZSkNCisjZGVmaW5lIHRvX2ltcHJvYyhjKQlj b250YWluZXJfb2YoYywgc3RydWN0IGtvbWVkYV9pbXByb2MsIGJhc2UpDQorI2RlZmluZSB0b19j dHJscihjKQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVkYV90aW1pbmdfY3RybHIsIGJhc2Up DQorDQorI2RlZmluZSB0b19sYXllcl9zdChjKQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVk YV9sYXllcl9zdGF0ZSwgYmFzZSkNCisjZGVmaW5lIHRvX2NvbXBpel9zdChjKQljb250YWluZXJf b2YoYywgc3RydWN0IGtvbWVkYV9jb21waXpfc3RhdGUsIGJhc2UpDQorI2RlZmluZSB0b19zY2Fs ZXJfc3QoYykgY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfc2NhbGVyX3N0YXRlLCBiYXNl KQ0KKyNkZWZpbmUgdG9faW1wcm9jX3N0KGMpCWNvbnRhaW5lcl9vZihjLCBzdHJ1Y3Qga29tZWRh X2ltcHJvY19zdGF0ZSwgYmFzZSkNCisjZGVmaW5lIHRvX2N0cmxyX3N0KGMpCWNvbnRhaW5lcl9v ZihjLCBzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJscl9zdGF0ZSwgYmFzZSkNCisNCisvKiBwaXBl bGluZSBBUElzICovDQorc3RydWN0IGtvbWVkYV9waXBlbGluZSAqDQora29tZWRhX3BpcGVsaW5l X2FkZChzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiwgc2l6ZV90IHNpemUsDQorCQkgICAgc3RydWN0 IGtvbWVkYV9waXBlbGluZV9mdW5jcyAqZnVuY3MpOw0KK3ZvaWQga29tZWRhX3BpcGVsaW5lX2Rl c3Ryb3koc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYsDQorCQkJICAgICBzdHJ1Y3Qga29tZWRhX3Bp cGVsaW5lICpwaXBlKTsNCisNCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqDQora29tZWRhX3Bp cGVsaW5lX2dldF9jb21wb25lbnQoc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSwgaW50IGlk KTsNCisNCisvKiBjb21wb25lbnQgQVBJcyAqLw0KK3N0cnVjdCBrb21lZGFfY29tcG9uZW50ICoN Citrb21lZGFfY29tcG9uZW50X2FkZChzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlLA0KKwkJ ICAgICBzaXplX3QgY29tcF9zeiwgdTMyIGlkLCB1MzIgaHdfaWQsDQorCQkgICAgIHN0cnVjdCBr b21lZGFfY29tcG9uZW50X2Z1bmNzICpmdW5jcywNCisJCSAgICAgdTggbWF4X2FjdGl2ZV9pbnB1 dHMsIHUzMiBzdXBwb3J0ZWRfaW5wdXRzLA0KKwkJICAgICB1OCBtYXhfYWN0aXZlX291dHB1dHMs IHUzMiBfX2lvbWVtICpyZWcsDQorCQkgICAgIGNvbnN0IGNoYXIgKm5hbWVfZm10LCAuLi4pOw0K Kw0KK3ZvaWQga29tZWRhX2NvbXBvbmVudF9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2 LA0KKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjKTsNCisNCisjZW5kaWYgLyog X0tPTUVEQV9QSVBFTElORV9IXyovDQotLSANCjIuMTcuMQ0KDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK