From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF9DF6E2F0 for ; Tue, 10 Mar 2020 14:18:46 +0000 (UTC) From: Ville Syrjala Date: Tue, 10 Mar 2020 16:18:29 +0200 Message-Id: <20200310141830.8040-5-ville.syrjala@linux.intel.com> In-Reply-To: <20200310141830.8040-1-ville.syrjala@linux.intel.com> References: <20200310141830.8040-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 5/6] HACK: tools/intel_scaler_coef: Test chv plane scaler programmable coefficients List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCmNo diBwaXBlIEIgcHJpbWFyeSBwbGFuZSBoYXMgYSBzY2FsZXIgdGhhdCBoYXMgcHJvZ3JhbW1hYmxl CmNvZWZmaWNpZW50cy4gQWRkIHNvbWUgY29kZSB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHN0dWZm IHdvcmtzLgoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KLS0tCiB0b29scy9pbnRlbF9zY2FsZXJfY29lZi5jIHwgMzgyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzgyIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9zY2FsZXJfY29lZi5jIGIvdG9v bHMvaW50ZWxfc2NhbGVyX2NvZWYuYwppbmRleCBkZTY4NzJhOTE1NDUuLmZiYWM1ZTdhOWMzZSAx MDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfc2NhbGVyX2NvZWYuYworKysgYi90b29scy9pbnRlbF9z Y2FsZXJfY29lZi5jCkBAIC0xMzY4LDYgKzEzNjgsMzg2IEBAIHN0YXRpYyB2b2lkIGNubF9wcm9n cmFtKHN0cnVjdCBmaWx0ZXIgKmYsIGludCBwaXBlKQogCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCZtbWlvX2RhdGEpOwogfQogCisjZGVmaW5lIFZMVl9ESVNQTEFZX0JBU0UgMHgxODAwMDAK KworI2RlZmluZSBQQ1BTWENPTkZJRyhzcHJpdGUpICAgICAgICAgICAgKFZMVl9ESVNQTEFZX0JB U0UgKyAweDZkMDAwICsgKHNwcml0ZSkgKiAweDEwMDApCisjZGVmaW5lICBQQ1BTWF9TQ0FMRVJf RU4gICAgICAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBQQ1BTWEhTX0NOVEwoc3ByaXRlKSAg ICAgICAgICAgKFZMVl9ESVNQTEFZX0JBU0UgKyAweDZkMTAwICsgKHNwcml0ZSkgKiAweDEwMDAp CisjZGVmaW5lIFBDUFNYSFNfSChzcHJpdGUpICAgICAgICAgICAgICAoVkxWX0RJU1BMQVlfQkFT RSArIDB4NmQxMDQgKyAoc3ByaXRlKSAqIDB4MTAwMCkKKyNkZWZpbmUgUENQU1hIU19XKHNwcml0 ZSkgICAgICAgICAgICAgIChWTFZfRElTUExBWV9CQVNFICsgMHg2ZDEwOCArIChzcHJpdGUpICog MHgxMDAwKQorI2RlZmluZSBQQ1BTWEhTX05CUChzcHJpdGUpICAgICAgICAgICAgKFZMVl9ESVNQ TEFZX0JBU0UgKyAweDZkMTBjICsgKHNwcml0ZSkgKiAweDEwMDApCisjZGVmaW5lIFBDUFNYSFNf SVNGKHNwcml0ZSkgICAgICAgICAgICAoVkxWX0RJU1BMQVlfQkFTRSArIDB4NmQxMTAgKyAoc3By aXRlKSAqIDB4MTAwMCkKKyNkZWZpbmUgUENQU1hIU19QQyhzcHJpdGUpICAgICAgICAgICAgIChW TFZfRElTUExBWV9CQVNFICsgMHg2ZDExNCArIChzcHJpdGUpICogMHgxMDAwKQorI2RlZmluZSBQ Q1BTWEhTX1BNKHNwcml0ZSwgcGhhc2UsIHcpICAgKFZMVl9ESVNQTEFZX0JBU0UgKyAweDZkMjAw ICsgKHNwcml0ZSkgKiAweDEwMDAgKyAocGhhc2UpICogMTYgKyAodykgKiA0KQorI2RlZmluZSBQ Q1BTWEhTX0FQTShzcHJpdGUsIHBoYXNlLCB3KSAgKFZMVl9ESVNQTEFZX0JBU0UgKyAweDZkMzAw ICsgKHNwcml0ZSkgKiAweDEwMDAgKyAocGhhc2UpICogMTYgKyAodykgKiA0KQorI2RlZmluZSBQ Q1BTWFZTX0NOVEwoc3ByaXRlKSAgICAgICAgICAgKFZMVl9ESVNQTEFZX0JBU0UgKyAweDZkNTAw ICsgKHNwcml0ZSkgKiAweDEwMDApCisjZGVmaW5lIFBDUFNYVlNfSChzcHJpdGUpICAgICAgICAg ICAgICAoVkxWX0RJU1BMQVlfQkFTRSArIDB4NmQ1MDQgKyAoc3ByaXRlKSAqIDB4MTAwMCkKKyNk ZWZpbmUgUENQU1hWU19XKHNwcml0ZSkgICAgICAgICAgICAgIChWTFZfRElTUExBWV9CQVNFICsg MHg2ZDUwOCArIChzcHJpdGUpICogMHgxMDAwKQorI2RlZmluZSBQQ1BTWFZTX0lTRihzcHJpdGUp ICAgICAgICAgICAgKFZMVl9ESVNQTEFZX0JBU0UgKyAweDZkNTEwICsgKHNwcml0ZSkgKiAweDEw MDApCisjZGVmaW5lIFBDUFNYVlNfUEMoc3ByaXRlKSAgICAgICAgICAgICAoVkxWX0RJU1BMQVlf QkFTRSArIDB4NmQ1MTQgKyAoc3ByaXRlKSAqIDB4MTAwMCkKKyNkZWZpbmUgUENQU1hWU19QTShz cHJpdGUsIHBoYXNlLCB3KSAgIChWTFZfRElTUExBWV9CQVNFICsgMHg2ZDYwMCArIChzcHJpdGUp ICogMHgxMDAwICsgKHBoYXNlKSAqIDggKyAodykgKiA0KQorI2RlZmluZSBQQ1BTWFZTX0FQTShz cHJpdGUsIHBoYXNlLCB3KSAgKFZMVl9ESVNQTEFZX0JBU0UgKyAweDZkNzAwICsgKHNwcml0ZSkg KiAweDEwMDAgKyAocGhhc2UpICogOCArICh3KSAqIDQpCisKKyNkZWZpbmUgU1BDVEwgKFZMVl9E SVNQTEFZX0JBU0UgKyAweDcyMzgwKQorI2RlZmluZSBQUklNQ1RMIChWTFZfRElTUExBWV9CQVNF ICsgMHg3MTE4MCkKKyNkZWZpbmUgIFBMQU5FX0VOICAgICAgICAgICAgICAgKDF1IDw8IDMxKQor CisjZGVmaW5lIFNQUE9TIChWTFZfRElTUExBWV9CQVNFICsgMHg3MjM4YykKKyNkZWZpbmUgUFJJ TVBPUyAoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjFhMDgpCisKKyNkZWZpbmUgU1BTSVpFIChWTFZf RElTUExBWV9CQVNFICsgMHg3MjM5MCkKKyNkZWZpbmUgUFJJTVNJWkUgKFZMVl9ESVNQTEFZX0JB U0UgKyAweDYxYTBjKQorCitzdGF0aWMgYm9vbCBjaHZfcGxhbmVfZW5hYmxlZChib29sIHNwcml0 ZSkKK3sKKwl1aW50MzJfdCB0bXA7CisKKwlpZiAoc3ByaXRlKQorCQl0bXAgPSBJOTE1X1JFQUQo U1BDVEwpOworCWVsc2UKKwkJdG1wID0gSTkxNV9SRUFEKFBSSU1DVEwpOworCisJcmV0dXJuIHRt cCAmIFBMQU5FX0VOOworfQorCitzdGF0aWMgdm9pZCBjaHZfc2V0X3BsYW5lX3NpemUoY29uc3Qg c3RydWN0IHJlY3QgKnIsCisJCQkgICAgICAgYm9vbCBzcHJpdGUpCit7CisJaWYgKHNwcml0ZSkK KwkJSTkxNV9XUklURShTUFBPUywgci0+eSA8PCAxNiB8IHItPngpOworCWVsc2UKKwkJSTkxNV9X UklURShQUklNUE9TLCByLT55IDw8IDE2IHwgci0+eCk7CisKKwlpZiAoc3ByaXRlKQorCQlJOTE1 X1dSSVRFKFNQU0laRSwgKHItPmggLSAxKSA8PCAxNiB8IChyLT53IC0gMSkpOworCWVsc2UKKwkJ STkxNV9XUklURShQUklNU0laRSwgKHItPmggLSAxKSA8PCAxNiB8IChyLT53IC0gMSkpOworfQor CitzdGF0aWMgdm9pZCBjaHZfZ2V0X3BsYW5lX3NpemUoc3RydWN0IHJlY3QgKnIsCisJCQkgICAg ICAgYm9vbCBzcHJpdGUpCit7CisJdWludDMyX3QgdG1wOworCisJaWYgKHNwcml0ZSkKKwkJdG1w ID0gSTkxNV9SRUFEKFNQUE9TKTsKKwllbHNlCisJCXRtcCA9IEk5MTVfUkVBRChQUklNUE9TKTsK KworCXItPnggPSB0bXAgJiAweGZmZmY7CisJci0+eSA9IHRtcCA+PiAxNjsKKworCWlmIChzcHJp dGUpCisJCXRtcCA9IEk5MTVfUkVBRChTUFNJWkUpOworCWVsc2UKKwkJdG1wID0gSTkxNV9SRUFE KFBSSU1TSVpFKTsKKworCXItPncgPSAodG1wICYgMHhmZmZmKSArIDE7CisJci0+aCA9ICh0bXAg Pj4gMTYpICsgMTsKK30KKworc3RhdGljIGludCBjaHZfY29lZl9pbmRleChjb25zdCBzdHJ1Y3Qg ZmlsdGVyICpmLCBpbnQgcCwgaW50IHQpCit7CisJYXNzZXJ0KGYtPmNvbmZpZy5ucGhhc2VzLzIg PT0gMTYpOworCWFzc2VydChmLT5jb25maWcubnRhcHMgPT0gOSB8fAorCSAgICAgICBmLT5jb25m aWcubnRhcHMgPT0gNSk7CisKKwlyZXR1cm4gbmh3dGFwcyhmKSAqIHAgKyB0YXBfdG9faHd0YXAo ZiwgdCk7Cit9CisKK3N0YXRpYyB2b2lkIGNodl9jb2VmcyhzdHJ1Y3QgZmlsdGVyICpmLCB1aW50 MTZfdCBjb2VmW10pCit7CisJZm9yIChpbnQgcCA9IDA7IHAgPCBmLT5jb25maWcubnBoYXNlcy8y OyBwKyspIHsKKwkJY29uc3QgZG91YmxlICpjb2VmcyA9IGYtPnBoYXNlc1twXS5jb2VmczsKKwor CQlmb3IgKGludCB0ID0gMDsgdCA8IGYtPmNvbmZpZy5udGFwczsgdCsrKSB7CisJCQl1bmlvbiBj aHZfY29lZl9yZWcgcjsKKwkJCWludCBpID0gY2h2X2NvZWZfaW5kZXgoZiwgcCwgdCk7CisKKwkJ CWNodl9jb2VmX3RvX3JlZyhmLCBjb2Vmc1t0XSwgJnIpOworCisJCQljb2VmW2ldID0gci5yZWc7 CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNodl9yZ2JfaGNvZWZzKHN0cnVjdCBmaWx0ZXIg KmYsIHVpbnQxNl90IGNvZWZbXSkKK3sKKwlmLT5jb25maWcgPSBjb25maWdzW0ZPUk1BVF9DSFZf SE9SWl07CisKKwlmLT5waGFzZV9vZmZzZXQgPSAwLjUgLyBmLT5jb25maWcubnBoYXNlczsKKwor CWdlbmVyYXRlX2ZpbHRlcihmKTsKKwl1cGRhdGVfZmlsdGVyKGYpOworCWZpeHVwX2ZpbHRlcihm KTsKKworCXByaW50ZigiY2h2IHJnYiBob3J6XG4iKTsKKwlwcmludF9maWx0ZXIoZik7CisJaHdf cHJpbnRfZmlsdGVyKGYpOworCXByaW50X2NfZmlsdGVyKGYpOworCisJY2h2X2NvZWZzKGYsIGNv ZWYpOworfQorCitzdGF0aWMgdm9pZCBjaHZfYWxwaGFfaGNvZWZzKHN0cnVjdCBmaWx0ZXIgKmYs IHVpbnQxNl90IGNvZWZbXSkKK3sKKwlmLT5jb25maWcgPSBjb25maWdzW0ZPUk1BVF9DSFZfSE9S Wl07CisJZi0+ZmlsdGVyID0gJmZpbHRlcl9mdW5jc1sxXTsKKwlmLT53aW5kb3cgPSAmd2luZG93 X2Z1bmNzWzBdOworCWYtPnBoYXNlX29mZnNldCA9IDAuNSAvIGYtPmNvbmZpZy5ucGhhc2VzOwor CWYtPm1vZGUgPSBNT0RFX0xPV1BBU1M7CisKKwlnZW5lcmF0ZV9maWx0ZXIoZik7CisJdXBkYXRl X2ZpbHRlcihmKTsKKwlmaXh1cF9maWx0ZXIoZik7CisKKwlwcmludGYoImNodiBhbHBoYSBob3J6 XG4iKTsKKwlwcmludF9maWx0ZXIoZik7CisJaHdfcHJpbnRfZmlsdGVyKGYpOworCXByaW50X2Nf ZmlsdGVyKGYpOworCisJY2h2X2NvZWZzKGYsIGNvZWYpOworfQorCitzdGF0aWMgdm9pZCBjaHZf cmdiX3Zjb2VmcyhzdHJ1Y3QgZmlsdGVyICpmLCB1aW50MTZfdCBjb2VmW10pCit7CisJZi0+Y29u ZmlnID0gY29uZmlnc1tGT1JNQVRfQ0hWX1ZFUlRdOworCisJZi0+cGhhc2Vfb2Zmc2V0ID0gMC41 IC8gZi0+Y29uZmlnLm5waGFzZXM7CisKKwlnZW5lcmF0ZV9maWx0ZXIoZik7CisJdXBkYXRlX2Zp bHRlcihmKTsKKwlmaXh1cF9maWx0ZXIoZik7CisKKwlwcmludGYoImNodiByZ2IgdmVydFxuIik7 CisJcHJpbnRfZmlsdGVyKGYpOworCWh3X3ByaW50X2ZpbHRlcihmKTsKKwlwcmludF9jX2ZpbHRl cihmKTsKKworCWNodl9jb2VmcyhmLCBjb2VmKTsKK30KKworc3RhdGljIHZvaWQgY2h2X2FscGhh X3Zjb2VmcyhzdHJ1Y3QgZmlsdGVyICpmLCB1aW50MTZfdCBjb2VmW10pCit7CisJZi0+Y29uZmln ID0gY29uZmlnc1tGT1JNQVRfQ0hWX1ZFUlRdOworCWYtPmZpbHRlciA9ICZmaWx0ZXJfZnVuY3Nb MV07CisJZi0+d2luZG93ID0gJndpbmRvd19mdW5jc1swXTsKKwlmLT5waGFzZV9vZmZzZXQgPSAw LjUgLyBmLT5jb25maWcubnBoYXNlczsKKwlmLT5tb2RlID0gTU9ERV9MT1dQQVNTOworCisJZ2Vu ZXJhdGVfZmlsdGVyKGYpOworCXVwZGF0ZV9maWx0ZXIoZik7CisJZml4dXBfZmlsdGVyKGYpOwor CisJcHJpbnRmKCJjaHYgYWxwaGEgdmVydFxuIik7CisJcHJpbnRfZmlsdGVyKGYpOworCWh3X3By aW50X2ZpbHRlcihmKTsKKwlwcmludF9jX2ZpbHRlcihmKTsKKworCWNodl9jb2VmcyhmLCBjb2Vm KTsKK30KKworc3RhdGljIHZvaWQgY2h2X3Byb2dyYW1fcmdiX2hvcnooYm9vbCBzcHJpdGUsIGNv bnN0IHVpbnQxNl90IGNvZWZbXSkKK3sKKwlmb3IgKGludCBwID0gMDsgcCA8IDE2OyBwKyspIHsK KwkJdWludDMyX3QgdG1wOworCisJCXRtcCA9IGNvZWZbMl0gPDwgMjQgfCBjb2VmWzFdIDw8IDEy IHwgY29lZlswXTsKKwkJSTkxNV9XUklURShQQ1BTWEhTX1BNKHNwcml0ZSwgcCwgMCksIHRtcCk7 CisKKwkJdG1wID0gY29lZls1XSA8PCAyOCB8IGNvZWZbNF0gPDwgMTYgfCBjb2VmWzNdIDw8IDQg fCBjb2VmWzJdID4+IDg7CisJCUk5MTVfV1JJVEUoUENQU1hIU19QTShzcHJpdGUsIHAsIDEpLCB0 bXApOworCisJCXRtcCA9IGNvZWZbN10gPDwgMjAgfCBjb2VmWzZdIDw8IDggfCBjb2VmWzVdID4+ IDQ7CisJCUk5MTVfV1JJVEUoUENQU1hIU19QTShzcHJpdGUsIHAsIDIpLCB0bXApOworCisJCXRt cCA9IGNvZWZbOF07CisJCUk5MTVfV1JJVEUoUENQU1hIU19QTShzcHJpdGUsIHAsIDMpLCB0bXAp OworCisJCWNvZWYgKz0gOTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNodl9wcm9ncmFtX2FscGhh X2hvcnooYm9vbCBzcHJpdGUsIGNvbnN0IHVpbnQxNl90IGNvZWZbXSkKK3sKKwlmb3IgKGludCBw ID0gMDsgcCA8IDE2OyBwKyspIHsKKwkJdWludDMyX3QgdG1wOworCisJCXRtcCA9IGNvZWZbMl0g PDwgMjQgfCBjb2VmWzFdIDw8IDEyIHwgY29lZlswXTsKKwkJSTkxNV9XUklURShQQ1BTWEhTX0FQ TShzcHJpdGUsIHAsIDApLCB0bXApOworCisJCXRtcCA9IGNvZWZbNV0gPDwgMjggfCBjb2VmWzRd IDw8IDE2IHwgY29lZlszXSA8PCA0IHwgY29lZlsyXSA+PiA4OworCQlJOTE1X1dSSVRFKFBDUFNY SFNfQVBNKHNwcml0ZSwgcCwgMSksIHRtcCk7CisKKwkJdG1wID0gY29lZls3XSA8PCAyMCB8IGNv ZWZbNl0gPDwgOCB8IGNvZWZbNV0gPj4gNDsKKwkJSTkxNV9XUklURShQQ1BTWEhTX0FQTShzcHJp dGUsIHAsIDIpLCB0bXApOworCisJCXRtcCA9IGNvZWZbOF07CisJCUk5MTVfV1JJVEUoUENQU1hI U19BUE0oc3ByaXRlLCBwLCAzKSwgdG1wKTsKKworCQljb2VmICs9IDk7CisJfQorfQorCitzdGF0 aWMgdm9pZCBjaHZfcHJvZ3JhbV9yZ2JfdmVydChib29sIHNwcml0ZSwgY29uc3QgdWludDE2X3Qg Y29lZltdKQoreworCWZvciAoaW50IHAgPSAwOyBwIDwgMTY7IHArKykgeworCQl1aW50MzJfdCB0 bXA7CisKKwkJdG1wID0gY29lZlsyXSA8PCAyNCB8IGNvZWZbMV0gPDwgMTIgfCBjb2VmWzBdOwor CQlJOTE1X1dSSVRFKFBDUFNYVlNfUE0oc3ByaXRlLCBwLCAwKSwgdG1wKTsKKworCQl0bXAgPSBj b2VmWzRdIDw8IDE2IHwgY29lZlszXSA8PCA0IHwgY29lZlsyXSA+PiA4OworCQlJOTE1X1dSSVRF KFBDUFNYVlNfUE0oc3ByaXRlLCBwLCAxKSwgdG1wKTsKKworCQljb2VmICs9IDU7CisJfQorfQor CitzdGF0aWMgdm9pZCBjaHZfcHJvZ3JhbV9hbHBoYV92ZXJ0KGJvb2wgc3ByaXRlLCBjb25zdCB1 aW50MTZfdCBjb2VmW10pCit7CisJZm9yIChpbnQgcCA9IDA7IHAgPCAxNjsgcCsrKSB7CisJCXVp bnQzMl90IHRtcDsKKworCQl0bXAgPSBjb2VmWzJdIDw8IDI0IHwgY29lZlsxXSA8PCAxMiB8IGNv ZWZbMF07CisJCUk5MTVfV1JJVEUoUENQU1hWU19BUE0oc3ByaXRlLCBwLCAwKSwgdG1wKTsKKwor CQl0bXAgPSBjb2VmWzRdIDw8IDE2IHwgY29lZlszXSA8PCA0IHwgY29lZlsyXSA+PiA4OworCQlJ OTE1X1dSSVRFKFBDUFNYVlNfQVBNKHNwcml0ZSwgcCwgMSksIHRtcCk7CisKKwkJY29lZiArPSA1 OworCX0KK30KKworc3RhdGljIHVuc2lnbmVkIGludCBjaHZfaW5pdGlhbF9waGFzZShjb25zdCBz dHJ1Y3QgZmlsdGVyICpmKQoreworCXJldHVybiAoKGYtPmNvbmZpZy5ucGhhc2VzIC0gMSkgPDwg MTYpIC8gKGYtPmNvbmZpZy5ucGhhc2VzICogMik7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQg Y2h2X3ZlcnRfcmVhZF9vZmZzZXQoaW50IG50YXBzKQoreworCS8qIDUgdGFwcyAtPiAtMiAqLwor CXJldHVybiAweDEwIHwgKG50YXBzIC8gMik7Cit9CisKK3N0YXRpYyB2b2lkIGNodl9wcm9ncmFt KHN0cnVjdCBmaWx0ZXIgKmYpCit7CisJc3RydWN0IGZpbHRlciBhZiA9IHt9OworCXN0cnVjdCBp bnRlbF9tbWlvX2RhdGEgbW1pb19kYXRhOworCXVpbnQxNl90IGhjb2VmWzkqMTZdID0ge307CisJ dWludDE2X3QgdmNvZWZbNSoxNl0gPSB7fTsKKwlib29sIHNwcml0ZSA9IGZhbHNlOworCXVpbnQz Ml90IGRldmlkOworCXN0cnVjdCByZWN0IG9yaWdfZHN0OworCXN0cnVjdCByZWN0IGRzdDsKKwlz dHJ1Y3QgcmVjdCBzcmM7CisKKwlkZXZpZCA9IGludGVsX2dldF9wY2lfZGV2aWNlKCktPmRldmlj ZV9pZDsKKworCWlmICghSVNfQ0hFUlJZVklFVyhkZXZpZCkpCisJCXJldHVybjsKKworCWludGVs X3JlZ2lzdGVyX2FjY2Vzc19pbml0KCZtbWlvX2RhdGEsIGludGVsX2dldF9wY2lfZGV2aWNlKCks IDAsIC0xKTsKKworCWlmICghY2h2X3BsYW5lX2VuYWJsZWQoc3ByaXRlKSkKKwkJZ290byBvdXQ7 CisKKwljaHZfZ2V0X3BsYW5lX3NpemUoJnNyYywgc3ByaXRlKTsKKworCWRzdCA9IHNyYzsKKwlv cmlnX2RzdCA9IGRzdDsKKworCWRzdC54ID0gMTY7CisJZHN0LnkgPSAxNjsKKwlkc3QudyAtPSAz MjsKKwlkc3QuaCAtPSAzMjsKKworCWNodl9yZ2JfaGNvZWZzKGYsIGhjb2VmKTsKKworCUk5MTVf V1JJVEUoUENQU1hIU19DTlRMKHNwcml0ZSksIDApOworCUk5MTVfV1JJVEUoUENQU1hIU19IKHNw cml0ZSksIHNyYy5oKTsKKwlJOTE1X1dSSVRFKFBDUFNYSFNfVyhzcHJpdGUpLCAoZHN0LncgPDwg MTYpIHwgc3JjLncpOworCUk5MTVfV1JJVEUoUENQU1hIU19OQlAoc3ByaXRlKSwgY2h2X3ZlcnRf cmVhZF9vZmZzZXQoNSkgPDwgOCk7CisJSTkxNV9XUklURShQQ1BTWEhTX0lTRihzcHJpdGUpLCAo c3JjLncgPDwgMTYpIC8gZHN0LncpOworCUk5MTVfV1JJVEUoUENQU1hIU19QQyhzcHJpdGUpLCBj aHZfaW5pdGlhbF9waGFzZShmKSA8PCA4IHwKKwkJICAgZi0+Y29uZmlnLm5waGFzZXMpOworCisJ Y2h2X3Byb2dyYW1fcmdiX2hvcnooc3ByaXRlLCBoY29lZik7CisJY2h2X2FscGhhX2hjb2Vmcygm YWYsIGhjb2VmKTsKKwljaHZfcHJvZ3JhbV9hbHBoYV9ob3J6KHNwcml0ZSwgaGNvZWYpOworCisJ Y2h2X3JnYl92Y29lZnMoZiwgdmNvZWYpOworCisJSTkxNV9XUklURShQQ1BTWFZTX0NOVEwoc3By aXRlKSwgMCk7CisJSTkxNV9XUklURShQQ1BTWFZTX0goc3ByaXRlKSwgKGRzdC5oIDw8IDE2KSB8 IHNyYy5oKTsKKwlJOTE1X1dSSVRFKFBDUFNYVlNfVyhzcHJpdGUpLCBkc3Qudyk7CisJSTkxNV9X UklURShQQ1BTWFZTX0lTRihzcHJpdGUpLCAoc3JjLmggPDwgMTYpIC8gZHN0LmgpOworCUk5MTVf V1JJVEUoUENQU1hWU19QQyhzcHJpdGUpLCBjaHZfaW5pdGlhbF9waGFzZShmKSA8PCA4IHwKKwkJ ICAgZi0+Y29uZmlnLm5waGFzZXMpOworCisJY2h2X3Byb2dyYW1fcmdiX3ZlcnQoc3ByaXRlLCB2 Y29lZik7CisJY2h2X2FscGhhX3Zjb2VmcygmYWYsIHZjb2VmKTsKKwljaHZfcHJvZ3JhbV9hbHBo YV92ZXJ0KHNwcml0ZSwgdmNvZWYpOworCisjaWYgMAorCUk5MTVfUkVBRChQQ1BTWEhTX0NOVEwo c3ByaXRlKSk7CisJSTkxNV9SRUFEKFBDUFNYSFNfSChzcHJpdGUpKTsKKwlJOTE1X1JFQUQoUENQ U1hIU19XKHNwcml0ZSkpOworCUk5MTVfUkVBRChQQ1BTWEhTX05CUChzcHJpdGUpKTsKKwlJOTE1 X1JFQUQoUENQU1hIU19JU0Yoc3ByaXRlKSk7CisJSTkxNV9SRUFEKFBDUFNYSFNfUEMoc3ByaXRl KSk7CisKKwlmb3IgKGludCBwID0gMDsgcCA8IDE2OyBwKyspIHsKKwkJcHJpbnRmKCJwID0gJWRc biIsIHApOworCQlJOTE1X1JFQUQoUENQU1hIU19QTShzcHJpdGUsIHAsIDApKTsKKwkJSTkxNV9S RUFEKFBDUFNYSFNfUE0oc3ByaXRlLCBwLCAxKSk7CisJCUk5MTVfUkVBRChQQ1BTWEhTX1BNKHNw cml0ZSwgcCwgMikpOworCQlJOTE1X1JFQUQoUENQU1hIU19QTShzcHJpdGUsIHAsIDMpKTsKKwl9 CisKKwlmb3IgKGludCBwID0gMDsgcCA8IDE2OyBwKyspIHsKKwkJcHJpbnRmKCJwID0gJWRcbiIs IHApOworCQlJOTE1X1JFQUQoUENQU1hIU19BUE0oc3ByaXRlLCBwLCAwKSk7CisJCUk5MTVfUkVB RChQQ1BTWEhTX0FQTShzcHJpdGUsIHAsIDEpKTsKKwkJSTkxNV9SRUFEKFBDUFNYSFNfQVBNKHNw cml0ZSwgcCwgMikpOworCQlJOTE1X1JFQUQoUENQU1hIU19BUE0oc3ByaXRlLCBwLCAzKSk7CisJ fQorCisJSTkxNV9SRUFEKFBDUFNYVlNfQ05UTChzcHJpdGUpKTsKKwlJOTE1X1JFQUQoUENQU1hW U19IKHNwcml0ZSkpOworCUk5MTVfUkVBRChQQ1BTWFZTX1coc3ByaXRlKSk7CisJSTkxNV9SRUFE KFBDUFNYVlNfSVNGKHNwcml0ZSkpOworCUk5MTVfUkVBRChQQ1BTWFZTX1BDKHNwcml0ZSkpOwor CisJZm9yIChpbnQgcCA9IDA7IHAgPCAxNjsgcCsrKSB7CisJCXByaW50ZigicCA9ICVkXG4iLCBw KTsKKwkJSTkxNV9SRUFEKFBDUFNYVlNfUE0oc3ByaXRlLCBwLCAwKSk7CisJCUk5MTVfUkVBRChQ Q1BTWFZTX1BNKHNwcml0ZSwgcCwgMSkpOworCX0KKworCWZvciAoaW50IHAgPSAwOyBwIDwgMTY7 IHArKykgeworCQlwcmludGYoInAgPSAlZFxuIiwgcCk7CisJCUk5MTVfUkVBRChQQ1BTWFZTX0FQ TShzcHJpdGUsIHAsIDApKTsKKwkJSTkxNV9SRUFEKFBDUFNYVlNfQVBNKHNwcml0ZSwgcCwgMSkp OworCX0KKyNlbmRpZgorCisJSTkxNV9XUklURShQQ1BTWENPTkZJRyhzcHJpdGUpLCBQQ1BTWF9T Q0FMRVJfRU4pOworCWNodl9zZXRfcGxhbmVfc2l6ZSgmZHN0LCBzcHJpdGUpOworCisJcHJpbnRm KCIlZHglZCUrZCUrZCAtPiAlZHglZCUrZCUrZFxuIiwKKwkgICAgICAgc3JjLncsIHNyYy5oLCBz cmMueCwgc3JjLnksCisJICAgICAgIGRzdC53LCBkc3QuaCwgZHN0LngsIGRzdC55KTsKKworCXNs ZWVwKDIpOworCisJY2h2X3NldF9wbGFuZV9zaXplKCZvcmlnX2RzdCwgc3ByaXRlKTsKKwlJOTE1 X1dSSVRFKFBDUFNYQ09ORklHKHNwcml0ZSksIDApOworCisgb3V0OgorCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19maW5pKCZtbWlvX2RhdGEpOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogewogCWNvbnN0IHN0cnVjdCBvcHRpb24gb3B0c1tdID0gewpAQCAtMTUzMiw2ICsx OTEyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJY25sX3Byb2dyYW0o JmYsIDApOwogCWlmICgxKQogCQlpbGtfcHJvZ3JhbSgmZiwgMCk7CisJaWYgKDEpCisJCWNodl9w cm9ncmFtKCZmKTsKIAogCXJldHVybiAwOwogfQotLSAKMi4yNC4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3Qt ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK