From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 656D76EE2C for ; Fri, 1 Feb 2019 11:15:56 +0000 (UTC) From: Maarten Lankhorst Date: Fri, 1 Feb 2019 12:15:41 +0100 Message-Id: <20190201111544.7920-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/4] lib/color_encoding: Prepare support for HDR modes. 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: U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgfCA4MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBsaWIvaWd0X2NvbG9yX2VuY29kaW5nLmgg fCAgOSArKysrLQogbGliL2lndF9mYi5jICAgICAgICAgICAgIHwgMjcgKysrKysrKysrLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5n LmMKaW5kZXggMDNlMTZlMGM5NjU4Li40Y2JlMThlMjE3ZTMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf Y29sb3JfZW5jb2RpbmcuYworKysgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKQEAgLTI0LDYg KzI0LDggQEAKICNpbmNsdWRlICJpZ3RfY29sb3JfZW5jb2RpbmcuaCIKICNpbmNsdWRlICJpZ3Rf bWF0cml4LmgiCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKKyNpbmNsdWRlICJpZ3RfZmIuaCIKKyNp bmNsdWRlICJkcm10ZXN0LmgiCiAKIHN0cnVjdCBjb2xvcl9lbmNvZGluZyB7CiAJZmxvYXQga3Is IGtiOwpAQCAtODUsNjAgKzg3LDEwNSBAQCBzdGF0aWMgc3RydWN0IGlndF9tYXQ0IHljYmNyX3Rv X3JnYl9tYXRyaXgoY29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nICplKQogCXJldHVybiByZXQ7 CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaWd0X21hdDQgeWNiY3JfaW5wdXRfY29udmVydF9tYXRyaXgo ZW51bSBpZ3RfY29sb3JfcmFuZ2UgY29sb3JfcmFuZ2UpCitzdGF0aWMgc3RydWN0IGlndF9tYXQ0 IHljYmNyX2lucHV0X2NvbnZlcnRfbWF0cml4KGVudW0gaWd0X2NvbG9yX3JhbmdlIGNvbG9yX3Jh bmdlLCBmbG9hdCBzY2FsZSwKKwkJCQkJCSAgZmxvYXQgb2ZzX3ksIGZsb2F0IG1heF95LAorCQkJ CQkJICBmbG9hdCBvZnNfY2JjciwgZmxvYXQgbWlkX2NiY3IsIGZsb2F0IG1heF9jYmNyLAorCQkJ CQkJICBmbG9hdCBtYXhfdmFsKQogewogCXN0cnVjdCBpZ3RfbWF0NCB0LCBzOwogCiAJaWYgKGNv bG9yX3JhbmdlID09IElHVF9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKSB7Ci0JCXQgPSBpZ3RfbWF0 cml4X3RyYW5zbGF0ZSgwLjBmLCAtMTI4LjBmLCAtMTI4LjBmKTsKLQkJcyA9IGlndF9tYXRyaXhf c2NhbGUoMS4wZiwgMi4wZiwgMi4wZik7CisJCXQgPSBpZ3RfbWF0cml4X3RyYW5zbGF0ZSgwLmYs IC1taWRfY2JjciwgLW1pZF9jYmNyKTsKKwkJcyA9IGlndF9tYXRyaXhfc2NhbGUoc2NhbGUsIDIu MGYgKiBzY2FsZSwgMi4wZiAqIHNjYWxlKTsKIAl9IGVsc2UgewotCQl0ID0gaWd0X21hdHJpeF90 cmFuc2xhdGUoLTE2LjBmLCAtMTI4LjBmLCAtMTI4LjBmKTsKLQkJcyA9IGlndF9tYXRyaXhfc2Nh bGUoMjU1LjBmIC8gKDIzNS4wZiAtIDE2LjBmKSwKLQkJCQkgICAgIDI1NS4wZiAvICgyNDAuMGYg LSAxMjguMGYpLAotCQkJCSAgICAgMjU1LjBmIC8gKDI0MC4wZiAtIDEyOC4wZikpOworCQl0ID0g aWd0X21hdHJpeF90cmFuc2xhdGUoLW9mc195LCAtbWlkX2NiY3IsIC1taWRfY2Jjcik7CisJCXMg PSBpZ3RfbWF0cml4X3NjYWxlKHNjYWxlICogbWF4X3ZhbCAvIChtYXhfeSAtIG9mc195KSwKKwkJ CQkgICAgIHNjYWxlICogbWF4X3ZhbCAvIChtYXhfY2JjciAtIG1pZF9jYmNyKSwKKwkJCQkgICAg IHNjYWxlICogbWF4X3ZhbCAvIChtYXhfY2JjciAtIG1pZF9jYmNyKSk7CiAJfQogCiAJcmV0dXJu IGlndF9tYXRyaXhfbXVsdGlwbHkoJnMsICZ0KTsKIH0KIAotc3RhdGljIHN0cnVjdCBpZ3RfbWF0 NCB5Y2Jjcl9vdXRwdXRfY29udmVydF9tYXRyaXgoZW51bSBpZ3RfY29sb3JfcmFuZ2UgY29sb3Jf cmFuZ2UpCitzdGF0aWMgc3RydWN0IGlndF9tYXQ0IHljYmNyX291dHB1dF9jb252ZXJ0X21hdHJp eChlbnVtIGlndF9jb2xvcl9yYW5nZSBjb2xvcl9yYW5nZSwgZmxvYXQgc2NhbGUsCisJCQkJCQkg ICBmbG9hdCBvZnNfeSwgZmxvYXQgbWF4X3ksCisJCQkJCQkgICBmbG9hdCBvZnNfY2JjciwgZmxv YXQgbWlkX2NiY3IsIGZsb2F0IG1heF9jYmNyLAorCQkJCQkJICAgZmxvYXQgbWF4X3ZhbCkKIHsK IAlzdHJ1Y3QgaWd0X21hdDQgcywgdDsKIAogCWlmIChjb2xvcl9yYW5nZSA9PSBJR1RfQ09MT1Jf WUNCQ1JfRlVMTF9SQU5HRSkgewotCQlzID0gaWd0X21hdHJpeF9zY2FsZSgxLjBmLCAwLjVmLCAw LjVmKTsKLQkJdCA9IGlndF9tYXRyaXhfdHJhbnNsYXRlKDAuMGYsIDEyOC4wZiwgMTI4LjBmKTsK KwkJcyA9IGlndF9tYXRyaXhfc2NhbGUoc2NhbGUsIDAuNWYgKiBzY2FsZSwgMC41ZiAqIHNjYWxl KTsKKwkJdCA9IGlndF9tYXRyaXhfdHJhbnNsYXRlKDAuZiwgbWlkX2NiY3IsIG1pZF9jYmNyKTsK IAl9IGVsc2UgewotCQlzID0gaWd0X21hdHJpeF9zY2FsZSgoMjM1LjBmIC0gMTYuMGYpIC8gMjU1 LjBmLAotCQkJCSAgICAgKDI0MC4wZiAtIDEyOC4wZikgLyAyNTUuMGYsCi0JCQkJICAgICAoMjQw LjBmIC0gMTI4LjBmKSAvIDI1NS4wZik7Ci0JCXQgPSBpZ3RfbWF0cml4X3RyYW5zbGF0ZSgxNi4w ZiwgMTI4LjBmLCAxMjguMGYpOworCQlzID0gaWd0X21hdHJpeF9zY2FsZShzY2FsZSAqIChtYXhf eSAtIG9mc195KSAvIG1heF92YWwsCisJCQkJICAgICBzY2FsZSAqIChtYXhfY2JjciAtIG1pZF9j YmNyKSAvIG1heF92YWwsCisJCQkJICAgICBzY2FsZSAqIChtYXhfY2JjciAtIG1pZF9jYmNyKSAv IG1heF92YWwpOworCQl0ID0gaWd0X21hdHJpeF90cmFuc2xhdGUob2ZzX3ksIG1pZF9jYmNyLCBt aWRfY2Jjcik7CiAJfQogCiAJcmV0dXJuIGlndF9tYXRyaXhfbXVsdGlwbHkoJnQsICZzKTsKIH0K IAotc3RydWN0IGlndF9tYXQ0IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGVudW0gaWd0X2NvbG9y X2VuY29kaW5nIGNvbG9yX2VuY29kaW5nLAorc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNv ZGluZ19mb3JtYXQgeworCXVpbnQzMl90IGZvdXJjYzsKKworCWZsb2F0IG1heF92YWw7CisKKwlm bG9hdCBvZnNfeSwgbWF4X3ksIG9mc19jYmNyLCBtaWRfY2JjciwgbWF4X2NiY3I7Cit9IGZvcm1h dHNbXSA9IHsKKwl7IERSTV9GT1JNQVRfWFJHQjg4ODgsIDI1NS5mLCB9LAorCXsgRFJNX0ZPUk1B VF9OVjEyLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAorCXsgRFJN X0ZPUk1BVF9ZVVlWLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAor CXsgRFJNX0ZPUk1BVF9ZVllVLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAu ZiB9LAorCXsgRFJNX0ZPUk1BVF9VWVZZLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5m LCAyNDAuZiB9LAorCXsgRFJNX0ZPUk1BVF9WWVVZLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYs IDEyOC5mLCAyNDAuZiB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGlu Z19mb3JtYXQgKmxvb2t1cF9mb3VyY2ModWludDMyX3QgZm91cmNjKQoreworCWludCBpOworCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZvcm1hdHMpOyBpKyspCisJCWlmIChmb3VyY2MgPT0g Zm9ybWF0c1tpXS5mb3VyY2MpCisJCQlyZXR1cm4gJmZvcm1hdHNbaV07CisKKwlpZ3RfYXNzZXJ0 X2YoMCwgIkNvdWxkIG5vdCBsb29rIHVwIGZvdXJjYyAlLjRzXG4iLCAoY2hhciAqKSZmb3VyY2Mp OworfQorCitzdHJ1Y3QgaWd0X21hdDQgaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgodWludDMyX3Qg ZnJvbV9mb3VyY2MsCisJCQkJCXVpbnQzMl90IHRvX2ZvdXJjYywKKwkJCQkJZW51bSBpZ3RfY29s b3JfZW5jb2RpbmcgY29sb3JfZW5jb2RpbmcsCiAJCQkJCWVudW0gaWd0X2NvbG9yX3JhbmdlIGNv bG9yX3JhbmdlKQogewogCWNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZyAqZSA9ICZjb2xvcl9l bmNvZGluZ3NbY29sb3JfZW5jb2RpbmddOwogCXN0cnVjdCBpZ3RfbWF0NCByLCBjOworCWNvbnN0 IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgKmZ5Y2JjciA9IGxvb2t1cF9mb3VyY2MoZnJv bV9mb3VyY2MpOworCWNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgKmZyZ2IgPSBs b29rdXBfZm91cmNjKHRvX2ZvdXJjYyk7CisJZmxvYXQgc2NhbGUgPSBmcmdiLT5tYXhfdmFsIC8g ZnljYmNyLT5tYXhfdmFsOwogCi0JciA9IHljYmNyX2lucHV0X2NvbnZlcnRfbWF0cml4KGNvbG9y X3JhbmdlKTsKKwlpZ3RfYXNzZXJ0KGZ5Y2Jjci0+b2ZzX3kgJiYgIWZyZ2ItPm9mc195KTsKKwor CXIgPSB5Y2Jjcl9pbnB1dF9jb252ZXJ0X21hdHJpeChjb2xvcl9yYW5nZSwgc2NhbGUsIGZ5Y2Jj ci0+b2ZzX3ksIGZ5Y2Jjci0+bWF4X3ksIGZ5Y2Jjci0+b2ZzX2NiY3IsIGZ5Y2Jjci0+bWlkX2Ni Y3IsIGZ5Y2Jjci0+bWF4X2NiY3IsIGZ5Y2Jjci0+bWF4X3ZhbCk7CiAJYyA9IHljYmNyX3RvX3Jn Yl9tYXRyaXgoZSk7CiAKIAlyZXR1cm4gaWd0X21hdHJpeF9tdWx0aXBseSgmYywgJnIpOwogfQog Ci1zdHJ1Y3QgaWd0X21hdDQgaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoZW51bSBpZ3RfY29sb3Jf ZW5jb2RpbmcgY29sb3JfZW5jb2RpbmcsCitzdHJ1Y3QgaWd0X21hdDQgaWd0X3JnYl90b195Y2Jj cl9tYXRyaXgodWludDMyX3QgZnJvbV9mb3VyY2MsCisJCQkJCXVpbnQzMl90IHRvX2ZvdXJjYywK KwkJCQkJZW51bSBpZ3RfY29sb3JfZW5jb2RpbmcgY29sb3JfZW5jb2RpbmcsCiAJCQkJCWVudW0g aWd0X2NvbG9yX3JhbmdlIGNvbG9yX3JhbmdlKQogewogCWNvbnN0IHN0cnVjdCBjb2xvcl9lbmNv ZGluZyAqZSA9ICZjb2xvcl9lbmNvZGluZ3NbY29sb3JfZW5jb2RpbmddOworCWNvbnN0IHN0cnVj dCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgKmZyZ2IgPSBsb29rdXBfZm91cmNjKGZyb21fZm91cmNj KTsKKwljb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpmeWNiY3IgPSBsb29rdXBf Zm91cmNjKHRvX2ZvdXJjYyk7CiAJc3RydWN0IGlndF9tYXQ0IGMsIHI7CisJZmxvYXQgc2NhbGUg PSBmeWNiY3ItPm1heF92YWwgLyBmcmdiLT5tYXhfdmFsOworCisJaWd0X2Fzc2VydChmeWNiY3It Pm9mc195ICYmICFmcmdiLT5vZnNfeSk7CiAKIAljID0gcmdiX3RvX3ljYmNyX21hdHJpeChlKTsK LQlyID0geWNiY3Jfb3V0cHV0X2NvbnZlcnRfbWF0cml4KGNvbG9yX3JhbmdlKTsKKwlyID0geWNi Y3Jfb3V0cHV0X2NvbnZlcnRfbWF0cml4KGNvbG9yX3JhbmdlLCBzY2FsZSwgZnljYmNyLT5vZnNf eSwgZnljYmNyLT5tYXhfeSwgZnljYmNyLT5vZnNfY2JjciwgZnljYmNyLT5taWRfY2JjciwgZnlj YmNyLT5tYXhfY2JjciwgZnljYmNyLT5tYXhfdmFsKTsKIAogCXJldHVybiBpZ3RfbWF0cml4X211 bHRpcGx5KCZyLCAmYyk7CiB9CmRpZmYgLS1naXQgYS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmgg Yi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmgKaW5kZXggMzg4NGU0OTM5ZjRjLi5kYjQ1YjE2ZDM2 ODcgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuaAorKysgYi9saWIvaWd0X2Nv bG9yX2VuY29kaW5nLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgX19JR1RfQ09MT1JfRU5D T0RJTkdfSF9fCiAKICNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAK ICNpbmNsdWRlICJpZ3RfbWF0cml4LmgiCiAKQEAgLTQ0LDkgKzQ1LDEzIEBAIGVudW0gaWd0X2Nv bG9yX3JhbmdlIHsKIGNvbnN0IGNoYXIgKmlndF9jb2xvcl9lbmNvZGluZ190b19zdHIoZW51bSBp Z3RfY29sb3JfZW5jb2RpbmcgZW5jb2RpbmcpOwogY29uc3QgY2hhciAqaWd0X2NvbG9yX3Jhbmdl X3RvX3N0cihlbnVtIGlndF9jb2xvcl9yYW5nZSByYW5nZSk7CiAKLXN0cnVjdCBpZ3RfbWF0NCBp Z3RfeWNiY3JfdG9fcmdiX21hdHJpeChlbnVtIGlndF9jb2xvcl9lbmNvZGluZyBjb2xvcl9lbmNv ZGluZywKK3N0cnVjdCBpZ3RfbWF0NCBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeCh1aW50MzJfdCB5 Y2Jjcl9mb3VyY2MsCisJCQkJCXVpbnQzMl90IHJnYl9mb3VyY2MsCisJCQkJCWVudW0gaWd0X2Nv bG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nLAogCQkJCQllbnVtIGlndF9jb2xvcl9yYW5nZSBj b2xvcl9yYW5nZSk7Ci1zdHJ1Y3QgaWd0X21hdDQgaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoZW51 bSBpZ3RfY29sb3JfZW5jb2RpbmcgY29sb3JfZW5jb2RpbmcsCitzdHJ1Y3QgaWd0X21hdDQgaWd0 X3JnYl90b195Y2Jjcl9tYXRyaXgodWludDMyX3QgcmdiX2ZvdXJjYywKKwkJCQkJdWludDMyX3Qg eWNiY3JfZm91cmNjLAorCQkJCQllbnVtIGlndF9jb2xvcl9lbmNvZGluZyBjb2xvcl9lbmNvZGlu ZywKIAkJCQkJZW51bSBpZ3RfY29sb3JfcmFuZ2UgY29sb3JfcmFuZ2UpOwogCiAjZW5kaWYgLyog X19JR1RfQ09MT1JfRU5DT0RJTkdfSF9fICovCmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9s aWIvaWd0X2ZiLmMKaW5kZXggNWNkMTgyOWEzY2U0Li5hOTcxYWViYjM2YjMgMTAwNjQ0Ci0tLSBh L2xpYi9pZ3RfZmIuYworKysgYi9saWIvaWd0X2ZiLmMKQEAgLTE0NzUsNyArMTQ3NSw3IEBAIHN0 YXRpYyB2b2lkICppZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoaW50IGZkLAogCQlE Uk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAogCQlJR1RfQ09M T1JfWUNCQ1JfQlQ3MDksIElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKTsKIAotCXNoYWRv dy0+c3RyaWRlc1swXSA9IEFMSUdOKHdpZHRoICogNCwgMTYpOworCXNoYWRvdy0+c3RyaWRlc1sw XSA9IEFMSUdOKHdpZHRoICogc2hhZG93LT5wbGFuZV9icHBbMF0sIDE2KTsKIAlzaGFkb3ctPnNp emUgPSBBTElHTihzaGFkb3ctPnN0cmlkZXNbMF0gKiBoZWlnaHQsCiAJCQkgICAgIHN5c2NvbmYo X1NDX1BBR0VTSVpFKSk7CiAJcHRyID0gbW1hcChOVUxMLCBzaGFkb3ctPnNpemUsIFBST1RfUkVB RCB8IFBST1RfV1JJVEUsCkBAIC0xNTU3LDcgKzE1NTcsOSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0 X252MTJfdG9fcmdiMjQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAl1aW50OF90ICpyZ2IyNCA9 IGN2dC0+ZHN0LnB0cjsKIAl1bnNpZ25lZCBpbnQgcmdiMjRfc3RyaWRlID0gY3Z0LT5kc3QuZmIt PnN0cmlkZXNbMF07CiAJdW5zaWduZWQgaW50IHBsYW5hcl9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+ c3RyaWRlc1swXTsKLQlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4 KGN2dC0+c3JjLmZiLT5jb2xvcl9lbmNvZGluZywKKwlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95 Y2Jjcl90b19yZ2JfbWF0cml4KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGN2 dC0+ZHN0LmZiLT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGN2dC0+c3JjLmZiLT5jb2xvcl9lbmNv ZGluZywKIAkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfcmFuZ2UpOwogCXVpbnQ4X3QgKmJ1 ZjsKIApAQCAtMTY2NCw3ICsxNjY2LDkgQEAgc3RhdGljIHZvaWQgY29udmVydF95dXY0NDRfdG9f cmdiMjQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAl1aW50OF90ICpyZ2IyNCA9IGN2dC0+ZHN0 LnB0cjsKIAl1bnNpZ25lZCByZ2IyNF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3RyaWRlc1swXSwg eHl1dl9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXTsKIAl1aW50OF90ICpidWYgPSBt YWxsb2MoY3Z0LT5zcmMuZmItPnNpemUpOwotCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3ljYmNy X3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmNvbG9yX2VuY29kaW5nLAorCXN0cnVjdCBpZ3Rf bWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQs CisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5zcmMu ZmItPmNvbG9yX2VuY29kaW5nLAogCQkJCQkJICAgIGN2dC0+c3JjLmZiLT5jb2xvcl9yYW5nZSk7 CiAKIAkvKgpAQCAtMTcwNSw3ICsxNzA5LDkgQEAgc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90 b195dXY0NDQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAl1aW50OF90ICpyZ2IyNDsKIAl1aW50 OF90ICp5dXY0NDQgPSBjdnQtPmRzdC5wdHIgKyBjdnQtPmRzdC5mYi0+b2Zmc2V0c1swXTsKIAl1 bnNpZ25lZCBpbnQgcmdiMjRfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF0sIHh5dXZf c3RyaWRlID0gY3Z0LT5kc3QuZmItPnN0cmlkZXNbMF07Ci0Jc3RydWN0IGlndF9tYXQ0IG0gPSBp Z3RfcmdiX3RvX3ljYmNyX21hdHJpeChjdnQtPmRzdC5mYi0+Y29sb3JfZW5jb2RpbmcsCisJc3Ry dWN0IGlndF9tYXQ0IG0gPSBpZ3RfcmdiX3RvX3ljYmNyX21hdHJpeChjdnQtPnNyYy5mYi0+ZHJt X2Zvcm1hdCwKKwkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBj dnQtPmRzdC5mYi0+Y29sb3JfZW5jb2RpbmcsCiAJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9y X3JhbmdlKTsKIAogCXJnYjI0ID0gY3Z0LT5zcmMucHRyOwpAQCAtMTczNyw3ICsxNzQzLDkgQEAg c3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90b19udjEyKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQp CiAJY29uc3QgdWludDhfdCAqcmdiMjQgPSBjdnQtPnNyYy5wdHI7CiAJdW5zaWduZWQgcmdiMjRf c3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF07CiAJdW5zaWduZWQgcGxhbmFyX3N0cmlk ZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdOwotCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3Jn Yl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAorCXN0cnVjdCBp Z3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3Jt YXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5k c3QuZmItPmNvbG9yX2VuY29kaW5nLAogCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5n ZSk7CiAKIAlpZ3RfYXNzZXJ0KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRf WFJHQjg4ODggJiYKQEAgLTE4NjQsNyArMTg3Miw5IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV5 dl90b19yZ2IyNChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCXVpbnQ4X3QgKnJnYjI0ID0gY3Z0 LT5kc3QucHRyOwogCXVuc2lnbmVkIGludCByZ2IyNF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3Ry aWRlc1swXTsKIAl1bnNpZ25lZCBpbnQgeXV5dl9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRl c1swXTsKLQlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGN2dC0+ c3JjLmZiLT5jb2xvcl9lbmNvZGluZywKKwlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90 b19yZ2JfbWF0cml4KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGN2dC0+ZHN0 LmZiLT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGN2dC0+c3JjLmZiLT5jb2xvcl9lbmNvZGluZywK IAkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfcmFuZ2UpOwogCWNvbnN0IHVuc2lnbmVkIGNo YXIgKnN3eiA9IHl1eXZfc3dpenpsZShjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7CiAJdWludDhf dCAqYnVmOwpAQCAtMTkyNSw3ICsxOTM1LDkgQEAgc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90 b195dXl2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJY29uc3QgdWludDhfdCAqcmdiMjQgPSBj dnQtPnNyYy5wdHI7CiAJdW5zaWduZWQgcmdiMjRfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlk ZXNbMF07CiAJdW5zaWduZWQgeXV5dl9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3RyaWRlc1swXTsK LQlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGN2dC0+ZHN0LmZi LT5jb2xvcl9lbmNvZGluZywKKwlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF9yZ2JfdG9feWNiY3Jf bWF0cml4KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5k cm1fZm9ybWF0LAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9lbmNvZGluZywKIAkJCQkJ CSAgICBjdnQtPmRzdC5mYi0+Y29sb3JfcmFuZ2UpOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnN3 eiA9IHl1eXZfc3dpenpsZShjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCk7CiAKQEAgLTIwODgsNyAr MjEwMCw2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBm ZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJc3RydWN0IGZiX2NvbnZlcnQgY3Z0ID0geyB9OwogCiAJ aWd0X2Fzc2VydChibGl0KTsKLQogCWJsaXQtPmJhc2UuZmQgPSBmZDsKIAlibGl0LT5iYXNlLmZi ID0gZmI7CiAJYmxpdC0+c2hhZG93X3B0ciA9IGlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1 ZmZlcihmZCwKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==