From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 43/49] drm/amd/display: fix dcn20 global sync dml param extraction Date: Fri, 9 Aug 2019 17:37:36 -0400 Message-ID: <20190809213742.30301-44-sunpeng.li@amd.com> References: <20190809213742.30301-1-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809213742.30301-1-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Leo Li , Charlene Liu , Dmytro Laktyushkin RnJvbTogRG15dHJvIExha3R5dXNoa2luIDxEbXl0cm8uTGFrdHl1c2hraW5AYW1kLmNvbT4KCkN1 cnJlbnRseSB0aGUgcGFyZW1ldGVycyBhcmUgZXh0cmFjdGVkIGFzIGlmIGRtbCBpcyBjYWxjdWxh dGluZwp1c2luZyBwaXBlcyBhcyB3ZSBwYXNzIHRoZW0gaW4uIGluIHJlYWxpdHksIGRtbCBpbnRl cm5hbGx5IG1lcmdlcwpwaXBlcyBpbnRvIHBsYW5lcyBpZiBwaXBlIHNwbGl0IGlzIGRldGVjdGVk LgoKVGhpcyBjaGFuZ2UgYWRkcyByZXZlcnNlIGxvZ2ljIHRvIGRjbjIwX2NhbGN1bGF0ZV9kbGdf cGFyYW1zIHNvCnRoYXQgdGhlIGdsb2JhbCBzeW5jIHBhcmFtZXRlcnMgY2FuIGJlIGNvcnJlY3Rs eSBleHRyYWN0ZWQgZm9yCmFsbCB0aGUgcGlwZXMgd2hlbiBwaXBlIHNwbGl0IGlzIGVuYWJsZWQu CgpTaWduZWQtb2ZmLWJ5OiBEbXl0cm8gTGFrdHl1c2hraW4gPERteXRyby5MYWt0eXVzaGtpbkBh bWQuY29tPgpSZXZpZXdlZC1ieTogQ2hhcmxlbmUgTGl1IDxDaGFybGVuZS5MaXVAYW1kLmNvbT4K QWNrZWQtYnk6IExlbyBMaSA8c3VucGVuZy5saUBhbWQuY29tPgotLS0KIC4uLi9kcm0vYW1kL2Rp c3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuYyB8IDIyOSArKysrKysrKysrLS0tLS0tLS0K IC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmggICB8ICAgMSAtCiAy IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3Vy Y2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24yMC9kY24yMF9yZXNvdXJj ZS5jCmluZGV4IGJiZDBjNmFjMmQ4Yy4uYmU2NjM4Y2QzNzNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuYwpAQCAtMjQz NiwxMDAgKzI0MzYsMTAwIEBAIHZvaWQgZGNuMjBfY2FsY3VsYXRlX3dtKAogCWludCBwaXBlX2Nu dCwgaSwgcGlwZV9pZHg7CiAKIAlmb3IgKGkgPSAwLCBwaXBlX2lkeCA9IDAsIHBpcGVfY250ID0g MDsgaSA8IGRjLT5yZXNfcG9vbC0+cGlwZV9jb3VudDsgaSsrKSB7Ci0JCQlpZiAoIWNvbnRleHQt PnJlc19jdHgucGlwZV9jdHhbaV0uc3RyZWFtKQotCQkJCWNvbnRpbnVlOwotCi0JCQlwaXBlc1tw aXBlX2NudF0uY2xrc19jZmcucmVmY2xrX21oeiA9IGRjLT5yZXNfcG9vbC0+cmVmX2Nsb2Nrcy5k Y2h1Yl9yZWZfY2xvY2tfaW5LaHogLyAxMDAwLjA7Ci0JCQlwaXBlc1twaXBlX2NudF0uY2xrc19j ZmcuZGlzcGNsa19taHogPSBjb250ZXh0LT5id19jdHguZG1sLnZiYS5SZXF1aXJlZERJU1BDTEtb dmxldmVsXVtjb250ZXh0LT5id19jdHguZG1sLnZiYS5tYXhNcGNDb21iXTsKLQotCQkJaWYgKHBp cGVfc3BsaXRfZnJvbVtpXSA8IDApIHsKLQkJCQlwaXBlc1twaXBlX2NudF0uY2xrc19jZmcuZHBw Y2xrX21oeiA9Ci0JCQkJCQljb250ZXh0LT5id19jdHguZG1sLnZiYS5SZXF1aXJlZERQUENMS1t2 bGV2ZWxdW2NvbnRleHQtPmJ3X2N0eC5kbWwudmJhLm1heE1wY0NvbWJdW3BpcGVfaWR4XTsKLQkJ CQlpZiAoY29udGV4dC0+YndfY3R4LmRtbC52YmEuQmxlbmRpbmdBbmRUaW1pbmdbcGlwZV9pZHhd ID09IHBpcGVfaWR4KQotCQkJCQlwaXBlc1twaXBlX2NudF0ucGlwZS5kZXN0Lm9kbV9jb21iaW5l ID0KLQkJCQkJCQljb250ZXh0LT5id19jdHguZG1sLnZiYS5PRE1Db21iaW5lRW5hYmxlUGVyU3Rh dGVbdmxldmVsXVtwaXBlX2lkeF07Ci0JCQkJZWxzZQotCQkJCQlwaXBlc1twaXBlX2NudF0ucGlw ZS5kZXN0Lm9kbV9jb21iaW5lID0gMDsKLQkJCQlwaXBlX2lkeCsrOwotCQkJfSBlbHNlIHsKLQkJ CQlwaXBlc1twaXBlX2NudF0uY2xrc19jZmcuZHBwY2xrX21oeiA9Ci0JCQkJCQljb250ZXh0LT5i d19jdHguZG1sLnZiYS5SZXF1aXJlZERQUENMS1t2bGV2ZWxdW2NvbnRleHQtPmJ3X2N0eC5kbWwu dmJhLm1heE1wY0NvbWJdW3BpcGVfc3BsaXRfZnJvbVtpXV07Ci0JCQkJaWYgKGNvbnRleHQtPmJ3 X2N0eC5kbWwudmJhLkJsZW5kaW5nQW5kVGltaW5nW3BpcGVfc3BsaXRfZnJvbVtpXV0gPT0gcGlw ZV9zcGxpdF9mcm9tW2ldKQotCQkJCQlwaXBlc1twaXBlX2NudF0ucGlwZS5kZXN0Lm9kbV9jb21i aW5lID0KLQkJCQkJCQljb250ZXh0LT5id19jdHguZG1sLnZiYS5PRE1Db21iaW5lRW5hYmxlUGVy U3RhdGVbdmxldmVsXVtwaXBlX3NwbGl0X2Zyb21baV1dOwotCQkJCWVsc2UKLQkJCQkJcGlwZXNb cGlwZV9jbnRdLnBpcGUuZGVzdC5vZG1fY29tYmluZSA9IDA7Ci0JCQl9Ci0KLQkJCWlmIChkYy0+ Y29uZmlnLmZvcmNlZF9jbG9ja3MpIHsKLQkJCQlwaXBlc1twaXBlX2NudF0uY2xrc19jZmcuZGlz cGNsa19taHogPSBjb250ZXh0LT5id19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbMF0uZGlzcGNs a19taHo7Ci0JCQkJcGlwZXNbcGlwZV9jbnRdLmNsa3NfY2ZnLmRwcGNsa19taHogPSBjb250ZXh0 LT5id19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbMF0uZHBwY2xrX21oejsKLQkJCX0KLQkJCWlm IChkYy0+ZGVidWcubWluX2Rpc3BfY2xrX2toeiA+IHBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5k aXNwY2xrX21oeiAqIDEwMDApCi0JCQkJcGlwZXNbcGlwZV9jbnRdLmNsa3NfY2ZnLmRpc3BjbGtf bWh6ID0gZGMtPmRlYnVnLm1pbl9kaXNwX2Nsa19raHogLyAxMDAwLjA7Ci0JCQlpZiAoZGMtPmRl YnVnLm1pbl9kcHBfY2xrX2toeiA+IHBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5kcHBjbGtfbWh6 ICogMTAwMCkKLQkJCQlwaXBlc1twaXBlX2NudF0uY2xrc19jZmcuZHBwY2xrX21oeiA9IGRjLT5k ZWJ1Zy5taW5fZHBwX2Nsa19raHogLyAxMDAwLjA7CisJCWlmICghY29udGV4dC0+cmVzX2N0eC5w aXBlX2N0eFtpXS5zdHJlYW0pCisJCQljb250aW51ZTsKIAotCQkJcGlwZV9jbnQrKzsKLQkJfQor CQlwaXBlc1twaXBlX2NudF0uY2xrc19jZmcucmVmY2xrX21oeiA9IGRjLT5yZXNfcG9vbC0+cmVm X2Nsb2Nrcy5kY2h1Yl9yZWZfY2xvY2tfaW5LaHogLyAxMDAwLjA7CisJCXBpcGVzW3BpcGVfY250 XS5jbGtzX2NmZy5kaXNwY2xrX21oeiA9IGNvbnRleHQtPmJ3X2N0eC5kbWwudmJhLlJlcXVpcmVk RElTUENMS1t2bGV2ZWxdW2NvbnRleHQtPmJ3X2N0eC5kbWwudmJhLm1heE1wY0NvbWJdOwogCi0J CWlmIChwaXBlX2NudCAhPSBwaXBlX2lkeCkgewotCQkJaWYgKGRjLT5yZXNfcG9vbC0+ZnVuY3Mt PnBvcHVsYXRlX2RtbF9waXBlcykKLQkJCQlwaXBlX2NudCA9IGRjLT5yZXNfcG9vbC0+ZnVuY3Mt PnBvcHVsYXRlX2RtbF9waXBlcyhkYywKLQkJCQkJJmNvbnRleHQtPnJlc19jdHgsIHBpcGVzKTsK KwkJaWYgKHBpcGVfc3BsaXRfZnJvbVtpXSA8IDApIHsKKwkJCXBpcGVzW3BpcGVfY250XS5jbGtz X2NmZy5kcHBjbGtfbWh6ID0KKwkJCQkJY29udGV4dC0+YndfY3R4LmRtbC52YmEuUmVxdWlyZWRE UFBDTEtbdmxldmVsXVtjb250ZXh0LT5id19jdHguZG1sLnZiYS5tYXhNcGNDb21iXVtwaXBlX2lk eF07CisJCQlpZiAoY29udGV4dC0+YndfY3R4LmRtbC52YmEuQmxlbmRpbmdBbmRUaW1pbmdbcGlw ZV9pZHhdID09IHBpcGVfaWR4KQorCQkJCXBpcGVzW3BpcGVfY250XS5waXBlLmRlc3Qub2RtX2Nv bWJpbmUgPQorCQkJCQkJY29udGV4dC0+YndfY3R4LmRtbC52YmEuT0RNQ29tYmluZUVuYWJsZVBl clN0YXRlW3ZsZXZlbF1bcGlwZV9pZHhdOwogCQkJZWxzZQotCQkJCXBpcGVfY250ID0gZGNuMjBf cG9wdWxhdGVfZG1sX3BpcGVzX2Zyb21fY29udGV4dChkYywKLQkJCQkJJmNvbnRleHQtPnJlc19j dHgsIHBpcGVzKTsKKwkJCQlwaXBlc1twaXBlX2NudF0ucGlwZS5kZXN0Lm9kbV9jb21iaW5lID0g MDsKKwkJCXBpcGVfaWR4Kys7CisJCX0gZWxzZSB7CisJCQlwaXBlc1twaXBlX2NudF0uY2xrc19j ZmcuZHBwY2xrX21oeiA9CisJCQkJCWNvbnRleHQtPmJ3X2N0eC5kbWwudmJhLlJlcXVpcmVkRFBQ Q0xLW3ZsZXZlbF1bY29udGV4dC0+YndfY3R4LmRtbC52YmEubWF4TXBjQ29tYl1bcGlwZV9zcGxp dF9mcm9tW2ldXTsKKwkJCWlmIChjb250ZXh0LT5id19jdHguZG1sLnZiYS5CbGVuZGluZ0FuZFRp bWluZ1twaXBlX3NwbGl0X2Zyb21baV1dID09IHBpcGVfc3BsaXRfZnJvbVtpXSkKKwkJCQlwaXBl c1twaXBlX2NudF0ucGlwZS5kZXN0Lm9kbV9jb21iaW5lID0KKwkJCQkJCWNvbnRleHQtPmJ3X2N0 eC5kbWwudmJhLk9ETUNvbWJpbmVFbmFibGVQZXJTdGF0ZVt2bGV2ZWxdW3BpcGVfc3BsaXRfZnJv bVtpXV07CisJCQllbHNlCisJCQkJcGlwZXNbcGlwZV9jbnRdLnBpcGUuZGVzdC5vZG1fY29tYmlu ZSA9IDA7CiAJCX0KIAotCQkqb3V0X3BpcGVfY250ID0gcGlwZV9jbnQ7CisJCWlmIChkYy0+Y29u ZmlnLmZvcmNlZF9jbG9ja3MpIHsKKwkJCXBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5kaXNwY2xr X21oeiA9IGNvbnRleHQtPmJ3X2N0eC5kbWwuc29jLmNsb2NrX2xpbWl0c1swXS5kaXNwY2xrX21o ejsKKwkJCXBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5kcHBjbGtfbWh6ID0gY29udGV4dC0+Yndf Y3R4LmRtbC5zb2MuY2xvY2tfbGltaXRzWzBdLmRwcGNsa19taHo7CisJCX0KKwkJaWYgKGRjLT5k ZWJ1Zy5taW5fZGlzcF9jbGtfa2h6ID4gcGlwZXNbcGlwZV9jbnRdLmNsa3NfY2ZnLmRpc3BjbGtf bWh6ICogMTAwMCkKKwkJCXBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5kaXNwY2xrX21oeiA9IGRj LT5kZWJ1Zy5taW5fZGlzcF9jbGtfa2h6IC8gMTAwMC4wOworCQlpZiAoZGMtPmRlYnVnLm1pbl9k cHBfY2xrX2toeiA+IHBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5kcHBjbGtfbWh6ICogMTAwMCkK KwkJCXBpcGVzW3BpcGVfY250XS5jbGtzX2NmZy5kcHBjbGtfbWh6ID0gZGMtPmRlYnVnLm1pbl9k cHBfY2xrX2toeiAvIDEwMDAuMDsKIAotCQlwaXBlc1swXS5jbGtzX2NmZy52b2x0YWdlID0gdmxl dmVsOwotCQlwaXBlc1swXS5jbGtzX2NmZy5kY2ZjbGtfbWh6ID0gY29udGV4dC0+YndfY3R4LmRt bC5zb2MuY2xvY2tfbGltaXRzW3ZsZXZlbF0uZGNmY2xrX21oejsKLQkJcGlwZXNbMF0uY2xrc19j Zmcuc29jY2xrX21oeiA9IGNvbnRleHQtPmJ3X2N0eC5kbWwuc29jLmNsb2NrX2xpbWl0c1t2bGV2 ZWxdLnNvY2Nsa19taHo7CisJCXBpcGVfY250Kys7CisJfQogCi0JCS8qIG9ubHkgcGlwZSAwIGlz IHJlYWQgZm9yIHZvbHRhZ2UgYW5kIGRjZi9zb2MgY2xvY2tzICovCi0JCWlmICh2bGV2ZWwgPCAx KSB7Ci0JCQlwaXBlc1swXS5jbGtzX2NmZy52b2x0YWdlID0gMTsKLQkJCXBpcGVzWzBdLmNsa3Nf Y2ZnLmRjZmNsa19taHogPSBjb250ZXh0LT5id19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbMV0u ZGNmY2xrX21oejsKLQkJCXBpcGVzWzBdLmNsa3NfY2ZnLnNvY2Nsa19taHogPSBjb250ZXh0LT5i d19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbMV0uc29jY2xrX21oejsKLQkJfQotCQljb250ZXh0 LT5id19jdHguYncuZGNuLndhdGVybWFya3MuYi51cmdlbnRfbnMgPSBnZXRfd21fdXJnZW50KCZj b250ZXh0LT5id19jdHguZG1sLCBwaXBlcywgcGlwZV9jbnQpICogMTAwMDsKLQkJY29udGV4dC0+ YndfY3R4LmJ3LmRjbi53YXRlcm1hcmtzLmIuY3N0YXRlX3BzdGF0ZS5jc3RhdGVfZW50ZXJfcGx1 c19leGl0X25zID0gZ2V0X3dtX3N0dXR0ZXJfZW50ZXJfZXhpdCgmY29udGV4dC0+YndfY3R4LmRt bCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0JCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0 ZXJtYXJrcy5iLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2V4aXRfbnMgPSBnZXRfd21fc3R1dHRlcl9l eGl0KCZjb250ZXh0LT5id19jdHguZG1sLCBwaXBlcywgcGlwZV9jbnQpICogMTAwMDsKLQkJY29u dGV4dC0+YndfY3R4LmJ3LmRjbi53YXRlcm1hcmtzLmIuY3N0YXRlX3BzdGF0ZS5wc3RhdGVfY2hh bmdlX25zID0gZ2V0X3dtX2RyYW1fY2xvY2tfY2hhbmdlKCZjb250ZXh0LT5id19jdHguZG1sLCBw aXBlcywgcGlwZV9jbnQpICogMTAwMDsKLQkJY29udGV4dC0+YndfY3R4LmJ3LmRjbi53YXRlcm1h cmtzLmIucHRlX21ldGFfdXJnZW50X25zID0gZ2V0X3dtX21lbW9yeV90cmlwKCZjb250ZXh0LT5i d19jdHguZG1sLCBwaXBlcywgcGlwZV9jbnQpICogMTAwMDsKLQotCQlpZiAodmxldmVsIDwgMikg ewotCQkJcGlwZXNbMF0uY2xrc19jZmcudm9sdGFnZSA9IDI7Ci0JCQlwaXBlc1swXS5jbGtzX2Nm Zy5kY2ZjbGtfbWh6ID0gY29udGV4dC0+YndfY3R4LmRtbC5zb2MuY2xvY2tfbGltaXRzWzJdLmRj ZmNsa19taHo7Ci0JCQlwaXBlc1swXS5jbGtzX2NmZy5zb2NjbGtfbWh6ID0gY29udGV4dC0+Yndf Y3R4LmRtbC5zb2MuY2xvY2tfbGltaXRzWzJdLnNvY2Nsa19taHo7Ci0JCX0KLQkJY29udGV4dC0+ YndfY3R4LmJ3LmRjbi53YXRlcm1hcmtzLmMudXJnZW50X25zID0gZ2V0X3dtX3VyZ2VudCgmY29u dGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0JCWNvbnRleHQtPmJ3 X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5jLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2VudGVyX3BsdXNf ZXhpdF9ucyA9IGdldF93bV9zdHV0dGVyX2VudGVyX2V4aXQoJmNvbnRleHQtPmJ3X2N0eC5kbWws IHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOwotCQljb250ZXh0LT5id19jdHguYncuZGNuLndhdGVy bWFya3MuYy5jc3RhdGVfcHN0YXRlLmNzdGF0ZV9leGl0X25zID0gZ2V0X3dtX3N0dXR0ZXJfZXhp dCgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0JCWNvbnRl eHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5jLmNzdGF0ZV9wc3RhdGUucHN0YXRlX2NoYW5n ZV9ucyA9IGdldF93bV9kcmFtX2Nsb2NrX2NoYW5nZSgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlw ZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0JCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJr cy5jLnB0ZV9tZXRhX3VyZ2VudF9ucyA9IGdldF93bV9tZW1vcnlfdHJpcCgmY29udGV4dC0+Yndf Y3R4LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0KLQkJaWYgKHZsZXZlbCA8IDMpIHsK LQkJCXBpcGVzWzBdLmNsa3NfY2ZnLnZvbHRhZ2UgPSAzOwotCQkJcGlwZXNbMF0uY2xrc19jZmcu ZGNmY2xrX21oeiA9IGNvbnRleHQtPmJ3X2N0eC5kbWwuc29jLmNsb2NrX2xpbWl0c1syXS5kY2Zj bGtfbWh6OwotCQkJcGlwZXNbMF0uY2xrc19jZmcuc29jY2xrX21oeiA9IGNvbnRleHQtPmJ3X2N0 eC5kbWwuc29jLmNsb2NrX2xpbWl0c1syXS5zb2NjbGtfbWh6OwotCQl9Ci0JCWNvbnRleHQtPmJ3 X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5kLnVyZ2VudF9ucyA9IGdldF93bV91cmdlbnQoJmNvbnRl eHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOwotCQljb250ZXh0LT5id19j dHguYncuZGNuLndhdGVybWFya3MuZC5jc3RhdGVfcHN0YXRlLmNzdGF0ZV9lbnRlcl9wbHVzX2V4 aXRfbnMgPSBnZXRfd21fc3R1dHRlcl9lbnRlcl9leGl0KCZjb250ZXh0LT5id19jdHguZG1sLCBw aXBlcywgcGlwZV9jbnQpICogMTAwMDsKLQkJY29udGV4dC0+YndfY3R4LmJ3LmRjbi53YXRlcm1h cmtzLmQuY3N0YXRlX3BzdGF0ZS5jc3RhdGVfZXhpdF9ucyA9IGdldF93bV9zdHV0dGVyX2V4aXQo JmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOwotCQljb250ZXh0 LT5id19jdHguYncuZGNuLndhdGVybWFya3MuZC5jc3RhdGVfcHN0YXRlLnBzdGF0ZV9jaGFuZ2Vf bnMgPSBnZXRfd21fZHJhbV9jbG9ja19jaGFuZ2UoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVz LCBwaXBlX2NudCkgKiAxMDAwOwotCQljb250ZXh0LT5id19jdHguYncuZGNuLndhdGVybWFya3Mu ZC5wdGVfbWV0YV91cmdlbnRfbnMgPSBnZXRfd21fbWVtb3J5X3RyaXAoJmNvbnRleHQtPmJ3X2N0 eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOwotCi0JCXBpcGVzWzBdLmNsa3NfY2ZnLnZv bHRhZ2UgPSB2bGV2ZWw7Ci0JCXBpcGVzWzBdLmNsa3NfY2ZnLmRjZmNsa19taHogPSBjb250ZXh0 LT5id19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbdmxldmVsXS5kY2ZjbGtfbWh6OwotCQlwaXBl c1swXS5jbGtzX2NmZy5zb2NjbGtfbWh6ID0gY29udGV4dC0+YndfY3R4LmRtbC5zb2MuY2xvY2tf bGltaXRzW3ZsZXZlbF0uc29jY2xrX21oejsKLQkJY29udGV4dC0+YndfY3R4LmJ3LmRjbi53YXRl cm1hcmtzLmEudXJnZW50X25zID0gZ2V0X3dtX3VyZ2VudCgmY29udGV4dC0+YndfY3R4LmRtbCwg cGlwZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0JCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJt YXJrcy5hLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2VudGVyX3BsdXNfZXhpdF9ucyA9IGdldF93bV9z dHV0dGVyX2VudGVyX2V4aXQoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkg KiAxMDAwOwotCQljb250ZXh0LT5id19jdHguYncuZGNuLndhdGVybWFya3MuYS5jc3RhdGVfcHN0 YXRlLmNzdGF0ZV9leGl0X25zID0gZ2V0X3dtX3N0dXR0ZXJfZXhpdCgmY29udGV4dC0+YndfY3R4 LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7Ci0JCWNvbnRleHQtPmJ3X2N0eC5idy5kY24u d2F0ZXJtYXJrcy5hLmNzdGF0ZV9wc3RhdGUucHN0YXRlX2NoYW5nZV9ucyA9IGdldF93bV9kcmFt X2Nsb2NrX2NoYW5nZSgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEw MDA7Ci0JCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5hLnB0ZV9tZXRhX3VyZ2Vu dF9ucyA9IGdldF93bV9tZW1vcnlfdHJpcCgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBp cGVfY250KSAqIDEwMDA7CisJaWYgKHBpcGVfY250ICE9IHBpcGVfaWR4KSB7CisJCWlmIChkYy0+ cmVzX3Bvb2wtPmZ1bmNzLT5wb3B1bGF0ZV9kbWxfcGlwZXMpCisJCQlwaXBlX2NudCA9IGRjLT5y ZXNfcG9vbC0+ZnVuY3MtPnBvcHVsYXRlX2RtbF9waXBlcyhkYywKKwkJCQkmY29udGV4dC0+cmVz X2N0eCwgcGlwZXMpOworCQllbHNlCisJCQlwaXBlX2NudCA9IGRjbjIwX3BvcHVsYXRlX2RtbF9w aXBlc19mcm9tX2NvbnRleHQoZGMsCisJCQkJJmNvbnRleHQtPnJlc19jdHgsIHBpcGVzKTsKKwl9 CisKKwkqb3V0X3BpcGVfY250ID0gcGlwZV9jbnQ7CisKKwlwaXBlc1swXS5jbGtzX2NmZy52b2x0 YWdlID0gdmxldmVsOworCXBpcGVzWzBdLmNsa3NfY2ZnLmRjZmNsa19taHogPSBjb250ZXh0LT5i d19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbdmxldmVsXS5kY2ZjbGtfbWh6OworCXBpcGVzWzBd LmNsa3NfY2ZnLnNvY2Nsa19taHogPSBjb250ZXh0LT5id19jdHguZG1sLnNvYy5jbG9ja19saW1p dHNbdmxldmVsXS5zb2NjbGtfbWh6OworCisJLyogb25seSBwaXBlIDAgaXMgcmVhZCBmb3Igdm9s dGFnZSBhbmQgZGNmL3NvYyBjbG9ja3MgKi8KKwlpZiAodmxldmVsIDwgMSkgeworCQlwaXBlc1sw XS5jbGtzX2NmZy52b2x0YWdlID0gMTsKKwkJcGlwZXNbMF0uY2xrc19jZmcuZGNmY2xrX21oeiA9 IGNvbnRleHQtPmJ3X2N0eC5kbWwuc29jLmNsb2NrX2xpbWl0c1sxXS5kY2ZjbGtfbWh6OworCQlw aXBlc1swXS5jbGtzX2NmZy5zb2NjbGtfbWh6ID0gY29udGV4dC0+YndfY3R4LmRtbC5zb2MuY2xv Y2tfbGltaXRzWzFdLnNvY2Nsa19taHo7CisJfQorCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0 ZXJtYXJrcy5iLnVyZ2VudF9ucyA9IGdldF93bV91cmdlbnQoJmNvbnRleHQtPmJ3X2N0eC5kbWws IHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJt YXJrcy5iLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2VudGVyX3BsdXNfZXhpdF9ucyA9IGdldF93bV9z dHV0dGVyX2VudGVyX2V4aXQoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkg KiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5iLmNzdGF0ZV9wc3Rh dGUuY3N0YXRlX2V4aXRfbnMgPSBnZXRfd21fc3R1dHRlcl9leGl0KCZjb250ZXh0LT5id19jdHgu ZG1sLCBwaXBlcywgcGlwZV9jbnQpICogMTAwMDsKKwljb250ZXh0LT5id19jdHguYncuZGNuLndh dGVybWFya3MuYi5jc3RhdGVfcHN0YXRlLnBzdGF0ZV9jaGFuZ2VfbnMgPSBnZXRfd21fZHJhbV9j bG9ja19jaGFuZ2UoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAw OworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5iLnB0ZV9tZXRhX3VyZ2VudF9u cyA9IGdldF93bV9tZW1vcnlfdHJpcCgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBpcGVf Y250KSAqIDEwMDA7CisKKwlpZiAodmxldmVsIDwgMikgeworCQlwaXBlc1swXS5jbGtzX2NmZy52 b2x0YWdlID0gMjsKKwkJcGlwZXNbMF0uY2xrc19jZmcuZGNmY2xrX21oeiA9IGNvbnRleHQtPmJ3 X2N0eC5kbWwuc29jLmNsb2NrX2xpbWl0c1syXS5kY2ZjbGtfbWh6OworCQlwaXBlc1swXS5jbGtz X2NmZy5zb2NjbGtfbWh6ID0gY29udGV4dC0+YndfY3R4LmRtbC5zb2MuY2xvY2tfbGltaXRzWzJd LnNvY2Nsa19taHo7CisJfQorCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5jLnVy Z2VudF9ucyA9IGdldF93bV91cmdlbnQoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBl X2NudCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5jLmNzdGF0 ZV9wc3RhdGUuY3N0YXRlX2VudGVyX3BsdXNfZXhpdF9ucyA9IGdldF93bV9zdHV0dGVyX2VudGVy X2V4aXQoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOworCWNv bnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5jLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2V4 aXRfbnMgPSBnZXRfd21fc3R1dHRlcl9leGl0KCZjb250ZXh0LT5id19jdHguZG1sLCBwaXBlcywg cGlwZV9jbnQpICogMTAwMDsKKwljb250ZXh0LT5id19jdHguYncuZGNuLndhdGVybWFya3MuYy5j c3RhdGVfcHN0YXRlLnBzdGF0ZV9jaGFuZ2VfbnMgPSBnZXRfd21fZHJhbV9jbG9ja19jaGFuZ2Uo JmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOworCWNvbnRleHQt PmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5jLnB0ZV9tZXRhX3VyZ2VudF9ucyA9IGdldF93bV9t ZW1vcnlfdHJpcCgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7 CisKKwlpZiAodmxldmVsIDwgMykgeworCQlwaXBlc1swXS5jbGtzX2NmZy52b2x0YWdlID0gMzsK KwkJcGlwZXNbMF0uY2xrc19jZmcuZGNmY2xrX21oeiA9IGNvbnRleHQtPmJ3X2N0eC5kbWwuc29j LmNsb2NrX2xpbWl0c1syXS5kY2ZjbGtfbWh6OworCQlwaXBlc1swXS5jbGtzX2NmZy5zb2NjbGtf bWh6ID0gY29udGV4dC0+YndfY3R4LmRtbC5zb2MuY2xvY2tfbGltaXRzWzJdLnNvY2Nsa19taHo7 CisJfQorCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5kLnVyZ2VudF9ucyA9IGdl dF93bV91cmdlbnQoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAw OworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5kLmNzdGF0ZV9wc3RhdGUuY3N0 YXRlX2VudGVyX3BsdXNfZXhpdF9ucyA9IGdldF93bV9zdHV0dGVyX2VudGVyX2V4aXQoJmNvbnRl eHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0 eC5idy5kY24ud2F0ZXJtYXJrcy5kLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2V4aXRfbnMgPSBnZXRf d21fc3R1dHRlcl9leGl0KCZjb250ZXh0LT5id19jdHguZG1sLCBwaXBlcywgcGlwZV9jbnQpICog MTAwMDsKKwljb250ZXh0LT5id19jdHguYncuZGNuLndhdGVybWFya3MuZC5jc3RhdGVfcHN0YXRl LnBzdGF0ZV9jaGFuZ2VfbnMgPSBnZXRfd21fZHJhbV9jbG9ja19jaGFuZ2UoJmNvbnRleHQtPmJ3 X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5k Y24ud2F0ZXJtYXJrcy5kLnB0ZV9tZXRhX3VyZ2VudF9ucyA9IGdldF93bV9tZW1vcnlfdHJpcCgm Y29udGV4dC0+YndfY3R4LmRtbCwgcGlwZXMsIHBpcGVfY250KSAqIDEwMDA7CisKKwlwaXBlc1sw XS5jbGtzX2NmZy52b2x0YWdlID0gdmxldmVsOworCXBpcGVzWzBdLmNsa3NfY2ZnLmRjZmNsa19t aHogPSBjb250ZXh0LT5id19jdHguZG1sLnNvYy5jbG9ja19saW1pdHNbdmxldmVsXS5kY2ZjbGtf bWh6OworCXBpcGVzWzBdLmNsa3NfY2ZnLnNvY2Nsa19taHogPSBjb250ZXh0LT5id19jdHguZG1s LnNvYy5jbG9ja19saW1pdHNbdmxldmVsXS5zb2NjbGtfbWh6OworCWNvbnRleHQtPmJ3X2N0eC5i dy5kY24ud2F0ZXJtYXJrcy5hLnVyZ2VudF9ucyA9IGdldF93bV91cmdlbnQoJmNvbnRleHQtPmJ3 X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2NudCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5k Y24ud2F0ZXJtYXJrcy5hLmNzdGF0ZV9wc3RhdGUuY3N0YXRlX2VudGVyX3BsdXNfZXhpdF9ucyA9 IGdldF93bV9zdHV0dGVyX2VudGVyX2V4aXQoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBw aXBlX2NudCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5hLmNz dGF0ZV9wc3RhdGUuY3N0YXRlX2V4aXRfbnMgPSBnZXRfd21fc3R1dHRlcl9leGl0KCZjb250ZXh0 LT5id19jdHguZG1sLCBwaXBlcywgcGlwZV9jbnQpICogMTAwMDsKKwljb250ZXh0LT5id19jdHgu YncuZGNuLndhdGVybWFya3MuYS5jc3RhdGVfcHN0YXRlLnBzdGF0ZV9jaGFuZ2VfbnMgPSBnZXRf d21fZHJhbV9jbG9ja19jaGFuZ2UoJmNvbnRleHQtPmJ3X2N0eC5kbWwsIHBpcGVzLCBwaXBlX2Nu dCkgKiAxMDAwOworCWNvbnRleHQtPmJ3X2N0eC5idy5kY24ud2F0ZXJtYXJrcy5hLnB0ZV9tZXRh X3VyZ2VudF9ucyA9IGdldF93bV9tZW1vcnlfdHJpcCgmY29udGV4dC0+YndfY3R4LmRtbCwgcGlw ZXMsIHBpcGVfY250KSAqIDEwMDA7CiB9CiAKIHZvaWQgZGNuMjBfY2FsY3VsYXRlX2RsZ19wYXJh bXMoCkBAIC0yNTM4LDcgKzI1MzgsOCBAQCB2b2lkIGRjbjIwX2NhbGN1bGF0ZV9kbGdfcGFyYW1z KAogCQlpbnQgcGlwZV9jbnQsCiAJCWludCB2bGV2ZWwpCiB7Ci0JaW50IGksIHBpcGVfaWR4Owor CWludCBpLCBqLCBwaXBlX2lkeCwgcGlwZV9pZHhfdW5zcGxpdDsKKwlib29sIHZpc2l0ZWRbTUFY X1BJUEVTXSA9IHsgMCB9OwogCiAJLyogV3JpdGViYWNrIE1DSUZfV0IgYXJiaXRyYXRpb24gcGFy YW1ldGVycyAqLwogCWRjLT5yZXNfcG9vbC0+ZnVuY3MtPnNldF9tY2lmX2FyYl9wYXJhbXMoZGMs IGNvbnRleHQsIHBpcGVzLCBwaXBlX2NudCk7CkBAIC0yNTU0LDMxICsyNTU1LDYzIEBAIHZvaWQg ZGNuMjBfY2FsY3VsYXRlX2RsZ19wYXJhbXMoCiAJCQkJCQkJIT0gZG1fZHJhbV9jbG9ja19jaGFu Z2VfdW5zdXBwb3J0ZWQ7CiAJY29udGV4dC0+YndfY3R4LmJ3LmRjbi5jbGsuZHBwY2xrX2toeiA9 IDA7CiAKKwkvKgorCSAqIEFuIGFydGlmYWN0IG9mIGRtbCBwaXBlIHNwbGl0L29kbSBpcyB0aGF0 IHBpcGVzIGdldCBtZXJnZWQgYmFjayB0b2dldGhlciBmb3IKKwkgKiBjYWxjdWxhdGlvbi4gVGhl cmVmb3JlIHdlIG5lZWQgdG8gb25seSBleHRyYWN0IGZvciBmaXJzdCBwaXBlIGluIGFzY2VuZGlu ZyBpbmRleCBvcmRlcgorCSAqIGFuZCBjb3B5IGludG8gdGhlIG90aGVyIHNwbGl0IGhhbGYuCisJ ICovCisJZm9yIChpID0gMCwgcGlwZV9pZHggPSAwLCBwaXBlX2lkeF91bnNwbGl0ID0gMDsgaSA8 IGRjLT5yZXNfcG9vbC0+cGlwZV9jb3VudDsgaSsrKSB7CisJCWlmICghY29udGV4dC0+cmVzX2N0 eC5waXBlX2N0eFtpXS5zdHJlYW0pCisJCQljb250aW51ZTsKIAorCQlpZiAoIXZpc2l0ZWRbcGlw ZV9pZHhdKSB7CisJCQlkaXNwbGF5X3BpcGVfc291cmNlX3BhcmFtc19zdCAqc3JjID0gJnBpcGVz W3BpcGVfaWR4X3Vuc3BsaXRdLnBpcGUuc3JjOworCQkJZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1z X3N0ICpkc3QgPSAmcGlwZXNbcGlwZV9pZHhfdW5zcGxpdF0ucGlwZS5kZXN0OworCisJCQlkc3Qt PnZzdGFydHVwX3N0YXJ0ID0gY29udGV4dC0+YndfY3R4LmRtbC52YmEuVlN0YXJ0dXBbcGlwZV9p ZHhfdW5zcGxpdF07CisJCQlkc3QtPnZ1cGRhdGVfb2Zmc2V0ID0gY29udGV4dC0+YndfY3R4LmRt bC52YmEuVlVwZGF0ZU9mZnNldFBpeFtwaXBlX2lkeF91bnNwbGl0XTsKKwkJCWRzdC0+dnVwZGF0 ZV93aWR0aCA9IGNvbnRleHQtPmJ3X2N0eC5kbWwudmJhLlZVcGRhdGVXaWR0aFBpeFtwaXBlX2lk eF91bnNwbGl0XTsKKwkJCWRzdC0+dnJlYWR5X29mZnNldCA9IGNvbnRleHQtPmJ3X2N0eC5kbWwu dmJhLlZSZWFkeU9mZnNldFBpeFtwaXBlX2lkeF91bnNwbGl0XTsKKwkJCS8qCisJCQkgKiBqIGl0 ZXJhdGVzIGluc2lkZSBwaXBlcyBhcnJheSwgdW5saWtlIGkgd2hpY2ggaXRlcmF0ZXMgaW5zaWRl CisJCQkgKiBwaXBlX2N0eCBhcnJheQorCQkJICovCisJCQlpZiAoc3JjLT5pc19oc3BsaXQpCisJ CQkJZm9yIChqID0gcGlwZV9pZHggKyAxOyBqIDwgcGlwZV9jbnQ7IGorKykgeworCQkJCQlkaXNw bGF5X3BpcGVfc291cmNlX3BhcmFtc19zdCAqc3JjX2ogPSAmcGlwZXNbal0ucGlwZS5zcmM7CisJ CQkJCWRpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCAqZHN0X2ogPSAmcGlwZXNbal0ucGlwZS5k ZXN0OworCisJCQkJCWlmIChzcmNfai0+aXNfaHNwbGl0ICYmICF2aXNpdGVkW2pdCisJCQkJCQkJ JiYgc3JjLT5oc3BsaXRfZ3JwID09IHNyY19qLT5oc3BsaXRfZ3JwKSB7CisJCQkJCQlkc3Rfai0+ dnN0YXJ0dXBfc3RhcnQgPSBjb250ZXh0LT5id19jdHguZG1sLnZiYS5WU3RhcnR1cFtwaXBlX2lk eF91bnNwbGl0XTsKKwkJCQkJCWRzdF9qLT52dXBkYXRlX29mZnNldCA9IGNvbnRleHQtPmJ3X2N0 eC5kbWwudmJhLlZVcGRhdGVPZmZzZXRQaXhbcGlwZV9pZHhfdW5zcGxpdF07CisJCQkJCQlkc3Rf ai0+dnVwZGF0ZV93aWR0aCA9IGNvbnRleHQtPmJ3X2N0eC5kbWwudmJhLlZVcGRhdGVXaWR0aFBp eFtwaXBlX2lkeF91bnNwbGl0XTsKKwkJCQkJCWRzdF9qLT52cmVhZHlfb2Zmc2V0ID0gY29udGV4 dC0+YndfY3R4LmRtbC52YmEuVlJlYWR5T2Zmc2V0UGl4W3BpcGVfaWR4X3Vuc3BsaXRdOworCQkJ CQkJdmlzaXRlZFtqXSA9IHRydWU7CisJCQkJCX0KKwkJCQl9CisJCQl2aXNpdGVkW3BpcGVfaWR4 XSA9IHRydWU7CisJCQlwaXBlX2lkeF91bnNwbGl0Kys7CisJCX0KKwkJcGlwZV9pZHgrKzsKKwl9 CiAKIAlmb3IgKGkgPSAwLCBwaXBlX2lkeCA9IDA7IGkgPCBkYy0+cmVzX3Bvb2wtPnBpcGVfY291 bnQ7IGkrKykgewogCQlpZiAoIWNvbnRleHQtPnJlc19jdHgucGlwZV9jdHhbaV0uc3RyZWFtKQog CQkJY29udGludWU7Ci0JCXBpcGVzW3BpcGVfaWR4XS5waXBlLmRlc3QudnN0YXJ0dXBfc3RhcnQg PSBjb250ZXh0LT5id19jdHguZG1sLnZiYS5WU3RhcnR1cFtwaXBlX2lkeF07Ci0JCXBpcGVzW3Bp cGVfaWR4XS5waXBlLmRlc3QudnVwZGF0ZV9vZmZzZXQgPSBjb250ZXh0LT5id19jdHguZG1sLnZi YS5WVXBkYXRlT2Zmc2V0UGl4W3BpcGVfaWR4XTsKLQkJcGlwZXNbcGlwZV9pZHhdLnBpcGUuZGVz dC52dXBkYXRlX3dpZHRoID0gY29udGV4dC0+YndfY3R4LmRtbC52YmEuVlVwZGF0ZVdpZHRoUGl4 W3BpcGVfaWR4XTsKLQkJcGlwZXNbcGlwZV9pZHhdLnBpcGUuZGVzdC52cmVhZHlfb2Zmc2V0ID0g Y29udGV4dC0+YndfY3R4LmRtbC52YmEuVlJlYWR5T2Zmc2V0UGl4W3BpcGVfaWR4XTsKIAkJaWYg KGNvbnRleHQtPmJ3X2N0eC5idy5kY24uY2xrLmRwcGNsa19raHogPCBwaXBlc1twaXBlX2lkeF0u Y2xrc19jZmcuZHBwY2xrX21oeiAqIDEwMDApCiAJCQljb250ZXh0LT5id19jdHguYncuZGNuLmNs ay5kcHBjbGtfa2h6ID0gcGlwZXNbcGlwZV9pZHhdLmNsa3NfY2ZnLmRwcGNsa19taHogKiAxMDAw OwogCQljb250ZXh0LT5yZXNfY3R4LnBpcGVfY3R4W2ldLnBsYW5lX3Jlcy5idy5kcHBjbGtfa2h6 ID0KIAkJCQkJCXBpcGVzW3BpcGVfaWR4XS5jbGtzX2NmZy5kcHBjbGtfbWh6ICogMTAwMDsKLSNp ZmRlZiBDT05GSUdfRFJNX0FNRF9EQ19EU0NfU1VQUE9SVAotCQljb250ZXh0LT5yZXNfY3R4LnBp cGVfY3R4W2ldLnN0cmVhbV9yZXMuZHNjY2xrX2toeiA9Ci0JCQkJY29udGV4dC0+YndfY3R4LmRt bC52YmEuRFNDQ0xLX2NhbGN1bGF0ZWRbcGlwZV9pZHhdICogMTAwMDsKLSNlbmRpZgorCQlBU1NF UlQodmlzaXRlZFtwaXBlX2lkeF0pOwogCQljb250ZXh0LT5yZXNfY3R4LnBpcGVfY3R4W2ldLnBp cGVfZGxnX3BhcmFtID0gcGlwZXNbcGlwZV9pZHhdLnBpcGUuZGVzdDsKIAkJcGlwZV9pZHgrKzsK IAl9CiAJLypzYXZlIGEgb3JpZ2luYWwgZHBwY2xvY2sgY29weSovCiAJY29udGV4dC0+YndfY3R4 LmJ3LmRjbi5jbGsuYndfZHBwY2xrX2toeiA9IGNvbnRleHQtPmJ3X2N0eC5idy5kY24uY2xrLmRw cGNsa19raHo7CiAJY29udGV4dC0+YndfY3R4LmJ3LmRjbi5jbGsuYndfZGlzcGNsa19raHogPSBj b250ZXh0LT5id19jdHguYncuZGNuLmNsay5kaXNwY2xrX2toejsKLQljb250ZXh0LT5id19jdHgu YncuZGNuLmNsay5tYXhfc3VwcG9ydGVkX2RwcGNsa19raHogPSBjb250ZXh0LT5id19jdHguZG1s LnNvYy5jbG9ja19saW1pdHNbdmxldmVsXS5kcHBjbGtfbWh6KjEwMDA7Ci0JY29udGV4dC0+Yndf Y3R4LmJ3LmRjbi5jbGsubWF4X3N1cHBvcnRlZF9kaXNwY2xrX2toeiA9IGNvbnRleHQtPmJ3X2N0 eC5kbWwuc29jLmNsb2NrX2xpbWl0c1t2bGV2ZWxdLmRpc3BjbGtfbWh6KjEwMDA7CisJY29udGV4 dC0+YndfY3R4LmJ3LmRjbi5jbGsubWF4X3N1cHBvcnRlZF9kcHBjbGtfa2h6ID0gY29udGV4dC0+ YndfY3R4LmRtbC5zb2MuY2xvY2tfbGltaXRzW3ZsZXZlbF0uZHBwY2xrX21oeiAqIDEwMDA7CisJ Y29udGV4dC0+YndfY3R4LmJ3LmRjbi5jbGsubWF4X3N1cHBvcnRlZF9kaXNwY2xrX2toeiA9IGNv bnRleHQtPmJ3X2N0eC5kbWwuc29jLmNsb2NrX2xpbWl0c1t2bGV2ZWxdLmRpc3BjbGtfbWh6ICog MTAwMDsKIAogCWZvciAoaSA9IDAsIHBpcGVfaWR4ID0gMDsgaSA8IGRjLT5yZXNfcG9vbC0+cGlw ZV9jb3VudDsgaSsrKSB7CiAJCWJvb2wgY3N0YXRlX2VuID0gY29udGV4dC0+YndfY3R4LmRtbC52 YmEuUHJlZmV0Y2hNb2RlW3ZsZXZlbF1bY29udGV4dC0+YndfY3R4LmRtbC52YmEubWF4TXBjQ29t Yl0gIT0gMjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMv Y29yZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2luYy9jb3JlX3R5 cGVzLmgKaW5kZXggMWQ2NmM0YjA5NjEyLi43NDE4NmNmMWMyODUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oCkBAIC0yMzQsNyArMjM0LDYg QEAgc3RydWN0IHN0cmVhbV9yZXNvdXJjZSB7CiAJc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNz b3IgKm9wcDsKICNpZmRlZiBDT05GSUdfRFJNX0FNRF9EQ19EU0NfU1VQUE9SVAogCXN0cnVjdCBk aXNwbGF5X3N0cmVhbV9jb21wcmVzc29yICpkc2M7Ci0JaW50IGRzY2Nsa19raHo7CiAjZW5kaWYK IAlzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGc7CiAJc3RydWN0IHN0cmVhbV9lbmNvZGVyICpz dHJlYW1fZW5jOwotLSAKMi4yMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ft ZC1nZng=