From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH RESEND v3 6/6] drm/nouveau: Refactor nvXX_backlight_init() Date: Wed, 29 Aug 2018 18:28:32 -0400 Message-ID: <20180829222834.15590-7-lyude@redhat.com> References: <20180829222834.15590-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180829222834.15590-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Airlie , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Ben Skeggs List-Id: dri-devel@lists.freedesktop.org VGhlcmUncyBsaXRlcmFsbHkgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIGFueSBvZiB0aGUgYmFja2xp Z2h0IGluaXQKZnVuY3Rpb25zIGJlc2lkZXMgdGhlIGJhY2tsaWdodCBwcm9wZXJ0aWVzIHRoZXkg c2V0IGFuZCB0aGUgYmFja2xpZ2h0CmNhbGxiYWNrcyB0aGF0IHRoZXkgc2V0LCBzbyBtb3ZlIGFs bCBvZiB0aGUgZHVwbGljYXRlZCBiYWNrbGlnaHQgaW5pdApjb2RlIG91dCBvZiB0aGVyZSBhbmQg aW50byBub3V2ZWF1X2JhY2tsaWdodF9pbml0KCkuCgpUaGlzIGdldHMgcmlkIG9mIGEgbG90IG9m IGNvcHkgcGFzdGEhCgpDaGFuZ2VzIHNpbmNlIHYxOgotIFNvbWUgb2YgdGhlIHByZS1yZWZhY3Rv ciBjYWxsYmFja3Mgd2VyZSBzdG9yaW5nIG52X2VuY29kZXIgaW4gY2FsbGJhY2sKICBkYXRhIGZv ciB0aGUgYmFja2xpZ2h0IGRldmljZXMgdGhhdCB0aGV5IHJlZ2lzdGVyZWQsIGFzIG9wcG9zZWQg dG8KICBub3V2ZWF1X2RybS4gVGhpcyBnb3QgbWlzc2VkIGFuZCBjYXVzZWQgc29tZSBidWdzIHRo YXQgZGlkbid0CiAgb3JpZ2luYWxseSBhcHBlYXIgb24gbXkgc2V0dXAgKE5VTEwga2VybmVsIGRl cmVmcykgZm9yIHNvbWUgcmVhc29uLgogIFNvLCBmaXggdGhpcyBieSBmaW5kaW5nIHRoZSBub3V2 ZWF1X2VuY29kZXIgaW4KICBub3V2ZWF1X2JhY2tsaWdodF9pbml0KCksIGFuZCB1c2luZyB0aGF0 IGFzIHRoZSBjYWxsYmFjayBkYXRhIGZvciBhbGwKICBnZW5zIGluc3RlYWQgZXZlbiBpZiB0aGV5 IGRvbid0IGNhcmUgYWJvdXQgdGhlIGVuY29kZXIuCgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQYXVs IDxseXVkZUByZWRoYXQuY29tPgpDYzogSmVmZmVyeSBNaWxsZXIgPGptaWxsZXJAbmV2ZXJ3YXJl LmNvbT4KQ2M6IEthcm9sIEhlcmJzdCA8a2hlcmJzdEByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYmFja2xpZ2h0LmMgfCAxNjAgKysrKysrKysrLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JhY2tsaWdodC5j IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9iYWNrbGlnaHQuYwppbmRleCAwMWQw OGFjYWMyZjAuLjVmNWJlNjM2OGFlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbm91dmVhdV9iYWNrbGlnaHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2JhY2tsaWdodC5jCkBAIC02NSw3ICs2NSw4IEBAIG5vdXZlYXVfZ2V0X2JhY2tsaWdodF9u YW1lKGNoYXIgYmFja2xpZ2h0X25hbWVbQkxfTkFNRV9TSVpFXSwKIHN0YXRpYyBpbnQKIG52NDBf Z2V0X2ludGVuc2l0eShzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCiB7Ci0Jc3RydWN0IG5v dXZlYXVfZHJtICpkcm0gPSBibF9nZXRfZGF0YShiZCk7CisJc3RydWN0IG5vdXZlYXVfZW5jb2Rl ciAqbnZfZW5jb2RlciA9IGJsX2dldF9kYXRhKGJkKTsKKwlzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRy bSA9IG5vdXZlYXVfZHJtKG52X2VuY29kZXItPmJhc2UuYmFzZS5kZXYpOwogCXN0cnVjdCBudmlm X29iamVjdCAqZGV2aWNlID0gJmRybS0+Y2xpZW50LmRldmljZS5vYmplY3Q7CiAJaW50IHZhbCA9 IChudmlmX3JkMzIoZGV2aWNlLCBOVjQwX1BNQ19CQUNLTElHSFQpICYKIAkJICAgTlY0MF9QTUNf QkFDS0xJR0hUX01BU0spID4+IDE2OwpAQCAtNzYsNyArNzcsOCBAQCBudjQwX2dldF9pbnRlbnNp dHkoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQogc3RhdGljIGludAogbnY0MF9zZXRfaW50 ZW5zaXR5KHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKIHsKLQlzdHJ1Y3Qgbm91dmVhdV9k cm0gKmRybSA9IGJsX2dldF9kYXRhKGJkKTsKKwlzdHJ1Y3Qgbm91dmVhdV9lbmNvZGVyICpudl9l bmNvZGVyID0gYmxfZ2V0X2RhdGEoYmQpOworCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gbm91 dmVhdV9kcm0obnZfZW5jb2Rlci0+YmFzZS5iYXNlLmRldik7CiAJc3RydWN0IG52aWZfb2JqZWN0 ICpkZXZpY2UgPSAmZHJtLT5jbGllbnQuZGV2aWNlLm9iamVjdDsKIAlpbnQgdmFsID0gYmQtPnBy b3BzLmJyaWdodG5lc3M7CiAJaW50IHJlZyA9IG52aWZfcmQzMihkZXZpY2UsIE5WNDBfUE1DX0JB Q0tMSUdIVCk7CkBAIC05NCw0OCArOTYsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiYWNrbGln aHRfb3BzIG52NDBfYmxfb3BzID0gewogfTsKIAogc3RhdGljIGludAotbnY0MF9iYWNrbGlnaHRf aW5pdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorbnY0MF9iYWNrbGlnaHRfaW5p dChzdHJ1Y3Qgbm91dmVhdV9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgc3RydWN0IGJhY2tsaWdo dF9wcm9wZXJ0aWVzICpwcm9wcywKKwkJICAgIGNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzICoq b3BzKQogewotCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gbm91dmVhdV9kcm0oY29ubmVjdG9y LT5kZXYpOwotCXN0cnVjdCBub3V2ZWF1X2JhY2tsaWdodCAqYmw7CisJc3RydWN0IG5vdXZlYXVf ZHJtICpkcm0gPSBub3V2ZWF1X2RybShlbmNvZGVyLT5iYXNlLmJhc2UuZGV2KTsKIAlzdHJ1Y3Qg bnZpZl9vYmplY3QgKmRldmljZSA9ICZkcm0tPmNsaWVudC5kZXZpY2Uub2JqZWN0OwotCXN0cnVj dCBiYWNrbGlnaHRfcHJvcGVydGllcyBwcm9wczsKLQljaGFyIGJhY2tsaWdodF9uYW1lW0JMX05B TUVfU0laRV07Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIShudmlmX3JkMzIoZGV2aWNlLCBOVjQw X1BNQ19CQUNLTElHSFQpICYgTlY0MF9QTUNfQkFDS0xJR0hUX01BU0spKQotCQlyZXR1cm4gMDsK LQotCWJsID0ga3phbGxvYyhzaXplb2YoKmJsKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFibCkKLQkJ cmV0dXJuIC1FTk9NRU07Ci0KLQltZW1zZXQoJnByb3BzLCAwLCBzaXplb2Yoc3RydWN0IGJhY2ts aWdodF9wcm9wZXJ0aWVzKSk7Ci0JcHJvcHMudHlwZSA9IEJBQ0tMSUdIVF9SQVc7Ci0JcHJvcHMu bWF4X2JyaWdodG5lc3MgPSAzMTsKLQlpZiAoIW5vdXZlYXVfZ2V0X2JhY2tsaWdodF9uYW1lKGJh Y2tsaWdodF9uYW1lLCBibCkpIHsKLQkJTlZfRVJST1IoZHJtLCAiRmFpbGVkIHRvIHJldHJpZXZl IGEgdW5pcXVlIG5hbWUgZm9yIHRoZSBiYWNrbGlnaHQgaW50ZXJmYWNlXG4iKTsKLQkJZ290byBm YWlsX2FsbG9jOwotCX0KLQotCWJsLT5kZXYgPSBiYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKGJh Y2tsaWdodF9uYW1lLCBjb25uZWN0b3ItPmtkZXYsCi0JCQkJCSAgICBkcm0sICZudjQwX2JsX29w cywgJnByb3BzKTsKLQlpZiAoSVNfRVJSKGJsLT5kZXYpKSB7Ci0JCWlmIChibC0+aWQgPj0gMCkK LQkJCWlkYV9zaW1wbGVfcmVtb3ZlKCZibF9pZGEsIGJsLT5pZCk7Ci0KLQkJcmV0ID0gUFRSX0VS UihibC0+ZGV2KTsKLQkJZ290byBmYWlsX2FsbG9jOwotCX0KLQotCW5vdXZlYXVfY29ubmVjdG9y KGNvbm5lY3RvciktPmJhY2tsaWdodCA9IGJsOwotCWJsLT5kZXYtPnByb3BzLmJyaWdodG5lc3Mg PSBudjQwX2dldF9pbnRlbnNpdHkoYmwtPmRldik7Ci0JYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMo YmwtPmRldik7CisJCXJldHVybiAtRU5PREVWOwogCisJcHJvcHMtPnR5cGUgPSBCQUNLTElHSFRf UkFXOworCXByb3BzLT5tYXhfYnJpZ2h0bmVzcyA9IDMxOworCSpvcHMgPSAmbnY0MF9ibF9vcHM7 CiAJcmV0dXJuIDA7Ci1mYWlsX2FsbG9jOgotCWtmcmVlKGJsKTsKLQlyZXR1cm4gcmV0OwogfQog CiBzdGF0aWMgaW50CkBAIC0yMjEsOTIgKzE5NSwxMDIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBi YWNrbGlnaHRfb3BzIG52YTNfYmxfb3BzID0gewogfTsKIAogc3RhdGljIGludAotbnY1MF9iYWNr bGlnaHRfaW5pdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQorbnY1MF9iYWNrbGln aHRfaW5pdChzdHJ1Y3Qgbm91dmVhdV9lbmNvZGVyICpudl9lbmNvZGVyLAorCQkgICAgc3RydWN0 IGJhY2tsaWdodF9wcm9wZXJ0aWVzICpwcm9wcywKKwkJICAgIGNvbnN0IHN0cnVjdCBiYWNrbGln aHRfb3BzICoqb3BzKQogewotCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gbm91dmVhdV9kcm0o Y29ubmVjdG9yLT5kZXYpOworCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gbm91dmVhdV9kcm0o bnZfZW5jb2Rlci0+YmFzZS5iYXNlLmRldik7CiAJc3RydWN0IG52aWZfb2JqZWN0ICpkZXZpY2Ug PSAmZHJtLT5jbGllbnQuZGV2aWNlLm9iamVjdDsKLQlzdHJ1Y3Qgbm91dmVhdV9lbmNvZGVyICpu dl9lbmNvZGVyOwotCXN0cnVjdCBub3V2ZWF1X2JhY2tsaWdodCAqYmw7Ci0Jc3RydWN0IGJhY2ts aWdodF9wcm9wZXJ0aWVzIHByb3BzOwotCWNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzICpvcHM7 Ci0JY2hhciBiYWNrbGlnaHRfbmFtZVtCTF9OQU1FX1NJWkVdOwotCWludCByZXQgPSAwOwotCi0J bnZfZW5jb2RlciA9IGZpbmRfZW5jb2Rlcihjb25uZWN0b3IsIERDQl9PVVRQVVRfTFZEUyk7Ci0J aWYgKCFudl9lbmNvZGVyKSB7Ci0JCW52X2VuY29kZXIgPSBmaW5kX2VuY29kZXIoY29ubmVjdG9y LCBEQ0JfT1VUUFVUX0RQKTsKLQkJaWYgKCFudl9lbmNvZGVyKQotCQkJcmV0dXJuIC1FTk9ERVY7 Ci0JfQogCiAJaWYgKCFudmlmX3JkMzIoZGV2aWNlLCBOVjUwX1BESVNQX1NPUl9QV01fQ1RMKGZm cyhudl9lbmNvZGVyLT5kY2ItPm9yKSAtIDEpKSkKLQkJcmV0dXJuIDA7Ci0KLQlibCA9IGt6YWxs b2Moc2l6ZW9mKCpibCksIEdGUF9LRVJORUwpOwotCWlmICghYmwpCi0JCXJldHVybiAtRU5PTUVN OworCQlyZXR1cm4gLUVOT0RFVjsKIAogCWlmIChkcm0tPmNsaWVudC5kZXZpY2UuaW5mby5jaGlw c2V0IDw9IDB4YTAgfHwKIAkgICAgZHJtLT5jbGllbnQuZGV2aWNlLmluZm8uY2hpcHNldCA9PSAw eGFhIHx8CiAJICAgIGRybS0+Y2xpZW50LmRldmljZS5pbmZvLmNoaXBzZXQgPT0gMHhhYykKLQkJ b3BzID0gJm52NTBfYmxfb3BzOworCQkqb3BzID0gJm52NTBfYmxfb3BzOwogCWVsc2UKLQkJb3Bz ID0gJm52YTNfYmxfb3BzOworCQkqb3BzID0gJm52YTNfYmxfb3BzOwogCi0JbWVtc2V0KCZwcm9w cywgMCwgc2l6ZW9mKHN0cnVjdCBiYWNrbGlnaHRfcHJvcGVydGllcykpOwotCXByb3BzLnR5cGUg PSBCQUNLTElHSFRfUkFXOwotCXByb3BzLm1heF9icmlnaHRuZXNzID0gMTAwOwotCWlmICghbm91 dmVhdV9nZXRfYmFja2xpZ2h0X25hbWUoYmFja2xpZ2h0X25hbWUsIGJsKSkgewotCQlOVl9FUlJP Uihkcm0sICJGYWlsZWQgdG8gcmV0cmlldmUgYSB1bmlxdWUgbmFtZSBmb3IgdGhlIGJhY2tsaWdo dCBpbnRlcmZhY2VcbiIpOwotCQlnb3RvIGZhaWxfYWxsb2M7Ci0JfQorCXByb3BzLT50eXBlID0g QkFDS0xJR0hUX1JBVzsKKwlwcm9wcy0+bWF4X2JyaWdodG5lc3MgPSAxMDA7CiAKLQlibC0+ZGV2 ID0gYmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcihiYWNrbGlnaHRfbmFtZSwgY29ubmVjdG9yLT5r ZGV2LAotCQkJCQkgICAgbnZfZW5jb2Rlciwgb3BzLCAmcHJvcHMpOwotCWlmIChJU19FUlIoYmwt PmRldikpIHsKLQkJaWYgKGJsLT5pZCA+PSAwKQotCQkJaWRhX3NpbXBsZV9yZW1vdmUoJmJsX2lk YSwgYmwtPmlkKTsKLQotCQlyZXQgPSBQVFJfRVJSKGJsLT5kZXYpOwotCQlnb3RvIGZhaWxfYWxs b2M7Ci0JfQotCi0Jbm91dmVhdV9jb25uZWN0b3IoY29ubmVjdG9yKS0+YmFja2xpZ2h0ID0gYmw7 Ci0JYmwtPmRldi0+cHJvcHMuYnJpZ2h0bmVzcyA9IGJsLT5kZXYtPm9wcy0+Z2V0X2JyaWdodG5l c3MoYmwtPmRldik7Ci0JYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoYmwtPmRldik7CiAJcmV0dXJu IDA7Ci0KLWZhaWxfYWxsb2M6Ci0Ja2ZyZWUoYmwpOwotCXJldHVybiByZXQ7CiB9CiAKIGludAog bm91dmVhdV9iYWNrbGlnaHRfaW5pdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQog ewogCXN0cnVjdCBub3V2ZWF1X2RybSAqZHJtID0gbm91dmVhdV9kcm0oY29ubmVjdG9yLT5kZXYp OworCXN0cnVjdCBub3V2ZWF1X2JhY2tsaWdodCAqYmw7CisJc3RydWN0IG5vdXZlYXVfZW5jb2Rl ciAqbnZfZW5jb2RlciA9IE5VTEw7CiAJc3RydWN0IG52aWZfZGV2aWNlICpkZXZpY2UgPSAmZHJt LT5jbGllbnQuZGV2aWNlOworCWNoYXIgYmFja2xpZ2h0X25hbWVbQkxfTkFNRV9TSVpFXTsKKwlz dHJ1Y3QgYmFja2xpZ2h0X3Byb3BlcnRpZXMgcHJvcHMgPSB7MH07CisJY29uc3Qgc3RydWN0IGJh Y2tsaWdodF9vcHMgKm9wczsKKwlpbnQgcmV0OwogCiAJaWYgKGFwcGxlX2dtdXhfcHJlc2VudCgp KSB7CiAJCU5WX0lORk9fT05DRShkcm0sICJBcHBsZSBHTVVYIGRldGVjdGVkOiBub3QgcmVnaXN0 ZXJpbmcgTm91dmVhdSBiYWNrbGlnaHQgaW50ZXJmYWNlXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQog Ci0JaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0xW RFMgJiYKLQkgICAgY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNU T1JfZURQKQorCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5F Q1RPUl9MVkRTKQorCQludl9lbmNvZGVyID0gZmluZF9lbmNvZGVyKGNvbm5lY3RvciwgRENCX09V VFBVVF9MVkRTKTsKKwllbHNlIGlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9N T0RFX0NPTk5FQ1RPUl9lRFApCisJCW52X2VuY29kZXIgPSBmaW5kX2VuY29kZXIoY29ubmVjdG9y LCBEQ0JfT1VUUFVUX0RQKTsKKwllbHNlCisJCXJldHVybiAwOworCisJaWYgKCFudl9lbmNvZGVy KQogCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoZGV2aWNlLT5pbmZvLmZhbWlseSkgewogCWNhc2Ug TlZfREVWSUNFX0lORk9fVjBfQ1VSSUU6Ci0JCXJldHVybiBudjQwX2JhY2tsaWdodF9pbml0KGNv bm5lY3Rvcik7CisJCXJldCA9IG52NDBfYmFja2xpZ2h0X2luaXQobnZfZW5jb2RlciwgJnByb3Bz LCAmb3BzKTsKKwkJYnJlYWs7CiAJY2FzZSBOVl9ERVZJQ0VfSU5GT19WMF9URVNMQToKIAljYXNl IE5WX0RFVklDRV9JTkZPX1YwX0ZFUk1JOgogCWNhc2UgTlZfREVWSUNFX0lORk9fVjBfS0VQTEVS OgogCWNhc2UgTlZfREVWSUNFX0lORk9fVjBfTUFYV0VMTDoKLQkJcmV0dXJuIG52NTBfYmFja2xp Z2h0X2luaXQoY29ubmVjdG9yKTsKKwkJcmV0ID0gbnY1MF9iYWNrbGlnaHRfaW5pdChudl9lbmNv ZGVyLCAmcHJvcHMsICZvcHMpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXR1cm4gMDsKIAl9 CisKKwlpZiAocmV0ID09IC1FTk9ERVYpCisJCXJldHVybiAwOworCWVsc2UgaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCWJsID0ga3phbGxvYyhzaXplb2YoKmJsKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFibCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoIW5vdXZlYXVfZ2V0X2JhY2tsaWdo dF9uYW1lKGJhY2tsaWdodF9uYW1lLCBibCkpIHsKKwkJTlZfRVJST1IoZHJtLCAiRmFpbGVkIHRv IHJldHJpZXZlIGEgdW5pcXVlIG5hbWUgZm9yIHRoZSBiYWNrbGlnaHQgaW50ZXJmYWNlXG4iKTsK KwkJZ290byBmYWlsX2FsbG9jOworCX0KKworCWJsLT5kZXYgPSBiYWNrbGlnaHRfZGV2aWNlX3Jl Z2lzdGVyKGJhY2tsaWdodF9uYW1lLCBjb25uZWN0b3ItPmtkZXYsCisJCQkJCSAgICBudl9lbmNv ZGVyLCBvcHMsICZwcm9wcyk7CisJaWYgKElTX0VSUihibC0+ZGV2KSkgeworCQlpZiAoYmwtPmlk ID49IDApCisJCQlpZGFfc2ltcGxlX3JlbW92ZSgmYmxfaWRhLCBibC0+aWQpOworCQlyZXQgPSBQ VFJfRVJSKGJsLT5kZXYpOworCQlnb3RvIGZhaWxfYWxsb2M7CisJfQorCisJbm91dmVhdV9jb25u ZWN0b3IoY29ubmVjdG9yKS0+YmFja2xpZ2h0ID0gYmw7CisJYmwtPmRldi0+cHJvcHMuYnJpZ2h0 bmVzcyA9IGJsLT5kZXYtPm9wcy0+Z2V0X2JyaWdodG5lc3MoYmwtPmRldik7CisJYmFja2xpZ2h0 X3VwZGF0ZV9zdGF0dXMoYmwtPmRldik7CisKKwlyZXR1cm4gMDsKKworZmFpbF9hbGxvYzoKKwlr ZnJlZShibCk7CisJcmV0dXJuIHJldDsKIH0KIAogdm9pZAotLSAKMi4xNy4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlz dApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK