From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uma Shankar Subject: [v3 2/7] drm/i915: Define color lut range structure Date: Fri, 12 Apr 2019 15:50:58 +0530 Message-ID: <1555064463-18479-3-git-send-email-uma.shankar@intel.com> References: <1555064463-18479-1-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1555064463-18479-1-git-send-email-uma.shankar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: dcastagna@chromium.org, sam@ravnborg.org, seanpaul@chromium.org, ville.syrjala@intel.com, maarten.lankhorst@intel.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo aXMgZGVmaW5lcyB0aGUgY29sb3IgbHV0IHJhbmdlcyBmb3IgMTBiaXQgYW5kIG11bHRpCnNlZ21l bnRlZCBnYW1tYSByYW5nZSBmb3IgSUNMLgoKdjI6IERlZmluZWQgYW5kIGFkdmVydGlzZSB0aGUg Z2FtbWEgbW9kZXMgc3VwcG9ydGVkIG9uCnZhcmlvdXMgcGxhdGZvcm1zIGFzIHN1Z2dlc3RlZCBi eSBWaWxsZS4KClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyB8IDU2NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNTYy IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMKaW5kZXggY2EzNDFhOS4uYzQzMzIxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5j CkBAIC0zODMsNiArMzgzLDIwIEBAIHN0YXRpYyB1MzIgaWxrX2x1dF8xMChjb25zdCBzdHJ1Y3Qg ZHJtX2NvbG9yX2x1dCAqY29sb3IpCiAJCWRybV9jb2xvcl9sdXRfZXh0cmFjdChjb2xvci0+Ymx1 ZSwgMTApOwogfQogCitzdGF0aWMgYm9vbCBpOXh4X2hhc18xMGJpdF9sdXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworICAgICAgICAvKgorICAgICAgICAgKiBCc3BlYzoK KyAgICAgICAgICIgIk5PVEU6IFRoZSA4LWJpdCAobm9uLTEwLWJpdCkgbW9kZSBpcyB0aGUgb25s eQorICAgICAgICAgKiAgbW9kZSBzdXBwb3J0ZWQgYnkgQnJvb2tEYWxlLUcgYW5kIFNwcmluZ2Rh bGUtRy4iCisgICAgICAgICAqIGFuZAorICAgICAgICAgKiAiTk9URTogVGhlIDgtYml0IChub24t MTAtYml0KSBtb2RlIGlzIHRoZSBvbmx5CisgICAgICAgICAqIG1vZGUgc3VwcG9ydGVkIGJ5IEFs dmlzbyBhbmQgR3JhbnRzZGFsZS4iCisgICAgICAgICAqLworICAgICAgICByZXR1cm4gIUlTX0k4 NDVHKGRldl9wcml2KSAmJiAhSVNfSTg2NUcoZGV2X3ByaXYpICYmCisgICAgICAgICAgICAgICAg IUlTX0k5MTVHKGRldl9wcml2KSAmJiAhSVNfSTkxNUdNKGRldl9wcml2KTsKK30KKwogLyogTG9h ZHMgdGhlIGxlZ2FjeSBwYWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDLiAqLwogc3RhdGlj IHZvaWQgaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAq YmxvYikKQEAgLTEyMjEsMTAgKzEyMzUsNDIwIEBAIHN0YXRpYyBpbnQgaWNsX2NvbG9yX2NoZWNr KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCXJldHVybiAwOwogfQogCitl bnVtIHsKKwlJOVhYX0xVVF9TSVpFXzhCSVQgPSAyNTYsCisJSTlYWF9MVVRfU0laRV8xMEJJVCA9 IDEyOSwKKworCUlMS19MVVRfU0laRV8xMEJJVCA9IDEwMjQsCisJSUxLX0xVVF9TSVpFXzEyQklU ID0gNTEzLAorCisJSVZCX0xVVF9TSVpFX1NQTElUID0gNTEyLAorCisJQ0hWX0xVVF9TSVpFX0NH TV9ERUdBTU1BID0gNjUsCisJQ0hWX0xVVF9TSVpFX0NHTV9HQU1NQSA9IDI1NywKK307CisKKyNk ZWZpbmUgSTlYWF9HQU1NQV84IFwKKwl7IFwKKwkJLmZsYWdzID0gRFJNX01PREVfTFVUX0dBTU1B LCBcCisJCS5jb3VudCA9IDI1NiwgXAorCQkuaW5wdXRfYnBjID0gOCwgLm91dHB1dF9icGMgPSA4 LCBcCisJCS5zdGFydCA9IDAsIC5lbmQgPSAoMSA8PCA4KSAtIDEsIFwKKwkJLm1pbiA9IDAsIC5t YXggPSAoMSA8PCA4KSAtIDEsIFwKKwl9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NvbG9y X2x1dF9yYW5nZSBpOXh4X2dhbW1hXzhbXSA9IHsKKwlJOVhYX0dBTU1BXzgsCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXRfcmFuZ2UgaTl4eF9nYW1tYV8xMF9zbG9wZVtd ID0geworCXsKKwkJLmZsYWdzID0gKERSTV9NT0RFX0xVVF9HQU1NQSB8CisJCQkgIERSTV9NT0RF X0xVVF9JTlRFUlBPTEFURSB8CisJCQkgIERSTV9NT0RFX0xVVF9OT05fREVDUkVBU0lORyksCisJ CS5jb3VudCA9IDEyOSwKKwkJLmlucHV0X2JwYyA9IDEwLCAub3V0cHV0X2JwYyA9IDEwLAorCQku c3RhcnQgPSAwLCAuZW5kID0gMSA8PCAxMCwKKwkJLm1pbiA9IDAsIC5tYXggPSAoMSA8PCAxMCkg LSAxLAorCX0sCit9OworCisjZGVmaW5lIEk5NjVfR0FNTUFfMTAgXAorCXsgXAorCQkuZmxhZ3Mg PSAoRFJNX01PREVfTFVUX0dBTU1BIHwgXAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQT0xBVEUg fCBcCisJCQkgIERSTV9NT0RFX0xVVF9OT05fREVDUkVBU0lORyksIFwKKwkJLmNvdW50ID0gMTI4 LCBcCisJCS5pbnB1dF9icGMgPSAxMCwgLm91dHB1dF9icGMgPSAxNiwgXAorCQkuc3RhcnQgPSAw LCAuZW5kID0gKDEgPDwgMTApIC0gKDEgPDwgMTApIC8gMTI4LCBcCisJCS5taW4gPSAwLCAubWF4 ID0gKDEgPDwgMTYpIC0gMSwgXAorCX0sIFwKKwkvKiBQSVBFR0NNQVggKi8gXAorCXsgXAorCQku ZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwgXAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQ T0xBVEUgfCBcCisJCQkgIERSTV9NT0RFX0xVVF9SRVVTRV9MQVNUIHwgXAorCQkJICBEUk1fTU9E RV9MVVRfTk9OX0RFQ1JFQVNJTkcpLCBcCisJCS5jb3VudCA9IDEsIFwKKwkJLmlucHV0X2JwYyA9 IDEwLCAub3V0cHV0X2JwYyA9IDE2LCBcCisJCS5zdGFydCA9ICgxIDw8IDEwKSAtICgxIDw8IDEw KSAvIDEyOCwgLmVuZCA9IDEgPDwgMTAsIFwKKwkJLm1pbiA9IDAsIC5tYXggPSAxIDw8IDE2LCBc CisJfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXRfcmFuZ2UgaTk2NV9nYW1t YV8xMFtdID0geworCUk5NjVfR0FNTUFfMTAsCit9OworCisjZGVmaW5lIENIVl9DR01fREVHQU1N QSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgICAgIC5mbGFncyA9IChEUk1fTU9ERV9MVVRf REVHQU1NQSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX0lOVEVS UE9MQVRFIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9MVVRfTk9OX0RF Q1JFQVNJTkcpLCBcCisgICAgICAgICAgICAgICAgLmNvdW50ID0gNjUsIFwKKyAgICAgICAgICAg ICAgICAuaW5wdXRfYnBjID0gMTAsIC5vdXRwdXRfYnBjID0gMTQsIFwKKyAgICAgICAgICAgICAg ICAuc3RhcnQgPSAwLCAuZW5kID0gMSA8PCAxMCwgXAorICAgICAgICAgICAgICAgIC5taW4gPSAw LCAubWF4ID0gKDEgPDwgMTQpIC0gMSwgXAorICAgICAgICB9CisjZGVmaW5lIENIVl9DR01fR0FN TUEgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgICAgICAuZmxhZ3MgPSAoRFJNX01PREVfTFVU X0dBTU1BIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9MVVRfSU5URVJQ T0xBVEUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0xVVF9OT05fREVD UkVBU0lORyksIFwKKyAgICAgICAgICAgICAgICAuY291bnQgPSAyNTcsIFwKKyAgICAgICAgICAg ICAgICAuaW5wdXRfYnBjID0gMTQsIC5vdXRwdXRfYnBjID0gMTAsIFwKKyAgICAgICAgICAgICAg ICAuc3RhcnQgPSAwLCAuZW5kID0gMSA8PCAxNCwgXAorICAgICAgICAgICAgICAgIC5taW4gPSAw LCAubWF4ID0gKDEgPDwgMTApIC0gMSwgXAorICAgICAgICB9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2NvbG9yX2x1dF9yYW5nZSBjaHZfY2dtX2RlZ2FtbWFbXSA9IHsKKyAgICAgICAgQ0hW X0NHTV9ERUdBTU1BLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0X3Jh bmdlIGNodl9jZ21fZ2FtbWFbXSA9IHsKKyAgICAgICAgQ0hWX0NHTV9HQU1NQSwKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dF9yYW5nZSBjaHZfY2dtX2RlZ2FtbWFfaTl4 eF9nYW1tYV84W10gPSB7CisgICAgICAgIENIVl9DR01fREVHQU1NQSwKKyAgICAgICAgSTlYWF9H QU1NQV84LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0X3JhbmdlIGNo dl9jZ21fZGVnYW1tYV9pOTY1X2dhbW1hXzEwW10gPSB7CisgICAgICAgIENIVl9DR01fREVHQU1N QSwKKyAgICAgICAgSTk2NV9HQU1NQV8xMCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2NvbG9yX2x1dF9yYW5nZSBjaHZfY2dtX2RlZ2FtbWFfY2dtX2RlZ2FtbWFbXSA9IHsKKyAgICAg ICAgQ0hWX0NHTV9ERUdBTU1BLAorICAgICAgICBDSFZfQ0dNX0dBTU1BLAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0X3JhbmdlIGlsa19nYW1tYV9kZWdhbW1hXzhbXSA9 IHsKKwl7CisJCS5mbGFncyA9IChEUk1fTU9ERV9MVVRfR0FNTUEgfAorCQkJICBEUk1fTU9ERV9M VVRfREVHQU1NQSksCisJCS5jb3VudCA9IDI1NiwKKwkJLmlucHV0X2JwYyA9IDgsIC5vdXRwdXRf YnBjID0gOCwKKwkJLnN0YXJ0ID0gMCwgLmVuZCA9ICgxIDw8IDgpIC0gMSwKKwkJLm1pbiA9IDAs IC5tYXggPSAoMSA8PCA4KSAtIDEsCisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2NvbG9yX2x1dF9yYW5nZSBpbGtfZ2FtbWFfZGVnYW1tYV8xMFtdID0geworCXsKKwkJLmZsYWdz ID0gKERSTV9NT0RFX0xVVF9HQU1NQSB8CisJCQkgIERSTV9NT0RFX0xVVF9ERUdBTU1BKSwKKwkJ LmNvdW50ID0gMTAyNCwKKwkJLmlucHV0X2JwYyA9IDEwLCAub3V0cHV0X2JwYyA9IDEwLAorCQku c3RhcnQgPSAwLCAuZW5kID0gKDEgPDwgMTApIC0gMSwKKwkJLm1pbiA9IDAsIC5tYXggPSAoMSA8 PCAxMCkgLSAxLAorCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXRf cmFuZ2UgaWxrX2dhbW1hX2RlZ2FtbWFfMTJwNFtdID0geworCXsKKwkJLmZsYWdzID0gKERSTV9N T0RFX0xVVF9HQU1NQSB8CisJCQkgIERSTV9NT0RFX0xVVF9ERUdBTU1BIHwKKwkJCSAgRFJNX01P REVfTFVUX0lOVEVSUE9MQVRFIHwKKwkJCSAgRFJNX01PREVfTFVUX05PTl9ERUNSRUFTSU5HKSwK KwkJLmNvdW50ID0gNTEyLAorCQkuaW5wdXRfYnBjID0gMTIsIC5vdXRwdXRfYnBjID0gMTYsCisJ CS5zdGFydCA9IDAsIC5lbmQgPSAoMSA8PCAxMikgLSAoMSA8PCAxMikgLyA1MTIsCisJCS5taW4g PSAwLCAubWF4ID0gKDEgPDwgMTYpIC0gMSwKKwl9LAorCS8qIFBJUEVHQ01BWCAqLworCXsKKwkJ LmZsYWdzID0gKERSTV9NT0RFX0xVVF9HQU1NQSB8CisJCQkgIERSTV9NT0RFX0xVVF9ERUdBTU1B IHwKKwkJCSAgRFJNX01PREVfTFVUX0lOVEVSUE9MQVRFIHwKKwkJCSAgRFJNX01PREVfTFVUX1JF VVNFX0xBU1QgfAorCQkJICBEUk1fTU9ERV9MVVRfTk9OX0RFQ1JFQVNJTkcpLAorCQkuY291bnQg PSAxLAorCQkuaW5wdXRfYnBjID0gMTAsIC5vdXRwdXRfYnBjID0gMTYsCisJCS5zdGFydCA9ICgx IDw8IDEyKSAtICgxIDw8IDEyKSAvIDUxMiwgLmVuZCA9IDEgPDwgMTIsCisJCS5taW4gPSAwLCAu bWF4ID0gMSA8PCAxNiwKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29sb3Jf bHV0X3JhbmdlIGl2Yl9nYW1tYV9kZWdhbW1hXzEwW10gPSB7CisgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAuZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgRFJNX01PREVfTFVUX0RFR0FNTUEgfAorICAgICAgICAgICAgICAgICAgICAgICAg ICBEUk1fTU9ERV9MVVRfUkVGTEVDVF9ORUdBVElWRSksCisgICAgICAgICAgICAgICAgLmNvdW50 ID0gMTAyNCwKKyAgICAgICAgICAgICAgICAuaW5wdXRfYnBjID0gMTAsIC5vdXRwdXRfYnBjID0g MTAsCisgICAgICAgICAgICAgICAgLnN0YXJ0ID0gMCwgLmVuZCA9ICgxIDw8IDEwKSAtIDEsCisg ICAgICAgICAgICAgICAgLm1pbiA9IDAsIC5tYXggPSAoMSA8PCAxMCkgLSAxLAorICAgICAgICB9 LAorICAgICAgICAvKiBQQUxfRVhUX0dDX01BWCAqLworICAgICAgICB7CisgICAgICAgICAgICAg ICAgLmZsYWdzID0gKERSTV9NT0RFX0xVVF9HQU1NQSB8CisgICAgICAgICAgICAgICAgICAgICAg ICAgIERSTV9NT0RFX0xVVF9ERUdBTU1BIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJN X01PREVfTFVUX1JFRkxFQ1RfTkVHQVRJVkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBE Uk1fTU9ERV9MVVRfSU5URVJQT0xBVEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1f TU9ERV9MVVRfUkVVU0VfTEFTVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RF X0xVVF9OT05fREVDUkVBU0lORyksCisgICAgICAgICAgICAgICAgLmNvdW50ID0gMSwKKyAgICAg ICAgICAgICAgICAuaW5wdXRfYnBjID0gMTAsIC5vdXRwdXRfYnBjID0gMTYsCisgICAgICAgICAg ICAgICAgLnN0YXJ0ID0gMSA8PCAxMCwgLmVuZCA9IDMgPDwgMTAsCisgICAgICAgICAgICAgICAg Lm1pbiA9IDAsIC5tYXggPSAoOCA8PCAxNikgLSAxLAorICAgICAgICB9Cit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXRfcmFuZ2UgZ2xrX2dhbW1hXzEwW10gPSB7CisJewor CQkuZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKwkJCSAgRFJNX01PREVfTFVUX1JFRkxF Q1RfTkVHQVRJVkUpLAorCQkuY291bnQgPSAxMDI0LAorCQkuaW5wdXRfYnBjID0gMTAsIC5vdXRw dXRfYnBjID0gMTAsCisJCS5zdGFydCA9IDAsIC5lbmQgPSAoMSA8PCAxMCkgLSAxLAorCQkubWlu ID0gMCwgLm1heCA9ICgxIDw8IDEwKSAtIDEsCisJfSwKKwkvKiBQQUxfRVhUX0dDX01BWCAqLwor CXsKKwkJLmZsYWdzID0gKERSTV9NT0RFX0xVVF9HQU1NQSB8CisJCQkgIERSTV9NT0RFX0xVVF9S RUZMRUNUX05FR0FUSVZFIHwKKwkJCSAgRFJNX01PREVfTFVUX0lOVEVSUE9MQVRFIHwKKwkJCSAg RFJNX01PREVfTFVUX1JFVVNFX0xBU1QgfAorCQkJICBEUk1fTU9ERV9MVVRfTk9OX0RFQ1JFQVNJ TkcpLAorCQkuY291bnQgPSAxLAorCQkuaW5wdXRfYnBjID0gMTAsIC5vdXRwdXRfYnBjID0gMTYs CisJCS5zdGFydCA9IDEgPDwgMTAsIC5lbmQgPSAzIDw8IDEwLAorCQkubWluID0gMCwgLm1heCA9 ICg4IDw8IDE2KSAtIDEsCisJfSwKKwkvKiBQQUxfRVhUMl9HQ19NQVggKi8KKwl7CisJCS5mbGFn cyA9IChEUk1fTU9ERV9MVVRfR0FNTUEgfAorCQkJICBEUk1fTU9ERV9MVVRfUkVGTEVDVF9ORUdB VElWRSB8CisJCQkgIERSTV9NT0RFX0xVVF9JTlRFUlBPTEFURSB8CisJCQkgIERSTV9NT0RFX0xV VF9SRVVTRV9MQVNUIHwKKwkJCSAgRFJNX01PREVfTFVUX05PTl9ERUNSRUFTSU5HKSwKKwkJLmNv dW50ID0gMSwKKwkJLmlucHV0X2JwYyA9IDEwLCAub3V0cHV0X2JwYyA9IDE2LAorCQkuc3RhcnQg PSAzIDw8IDEyLCAuZW5kID0gNyA8PCAxMiwKKwkJLm1pbiA9IDAsIC5tYXggPSAoOCA8PCAxNikg LSAxLAorCX0sCit9OworCisvKiBGSVhNRSBpbnB1dCBicGM/ICovCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jb2xvcl9sdXRfcmFuZ2UgZ2xrX2dhbW1hXzEycDRbXSA9IHsKKwl7CisJCS5mbGFn cyA9IChEUk1fTU9ERV9MVVRfR0FNTUEgfAorCQkJICBEUk1fTU9ERV9MVVRfUkVGTEVDVF9ORUdB VElWRSB8CisJCQkgIERSTV9NT0RFX0xVVF9JTlRFUlBPTEFURSB8CisJCQkgIERSTV9NT0RFX0xV VF9OT05fREVDUkVBU0lORyksCisJCS5jb3VudCA9IDUxMiwKKwkJLmlucHV0X2JwYyA9IDE2LCAu b3V0cHV0X2JwYyA9IDE2LAorCQkuc3RhcnQgPSAwLCAuZW5kID0gKDEgPDwgMTYpIC0gKDEgPDwg MTYpIC8gNTEyLAorCQkubWluID0gMCwgLm1heCA9ICgxIDw8IDE2KSAtIDEsCisJfSwKKwkvKiBQ QUxfR0NfTUFYICovCisJeworCQkuZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKwkJCSAg RFJNX01PREVfTFVUX1JFRkxFQ1RfTkVHQVRJVkUgfAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQ T0xBVEUgfAorCQkJICBEUk1fTU9ERV9MVVRfUkVVU0VfTEFTVCB8CisJCQkgIERSTV9NT0RFX0xV VF9OT05fREVDUkVBU0lORyksCisJCS5jb3VudCA9IDEsCisJCS5pbnB1dF9icGMgPSAxNiwgLm91 dHB1dF9icGMgPSAxNiwKKwkJLnN0YXJ0ID0gKDEgPDwgMTYpIC0gKDEgPDwgMTYpIC8gNTEyLCAu ZW5kID0gMSA8PCAxNiwKKwkJLm1pbiA9IDAsIC5tYXggPSAxIDw8IDE2LAorCX0sCisJLyogUEFM X0VYVF9HQ19NQVggKi8KKwl7CisJCS5mbGFncyA9IChEUk1fTU9ERV9MVVRfR0FNTUEgfAorCQkJ ICBEUk1fTU9ERV9MVVRfUkVGTEVDVF9ORUdBVElWRSB8CisJCQkgIERSTV9NT0RFX0xVVF9JTlRF UlBPTEFURSB8CisJCQkgIERSTV9NT0RFX0xVVF9SRVVTRV9MQVNUIHwKKwkJCSAgRFJNX01PREVf TFVUX05PTl9ERUNSRUFTSU5HKSwKKwkJLmNvdW50ID0gMSwKKwkJLmlucHV0X2JwYyA9IDE2LCAu b3V0cHV0X2JwYyA9IDE2LAorCQkuc3RhcnQgPSAxIDw8IDE2LCAuZW5kID0gMyA8PCAxNiwKKwkJ Lm1pbiA9IDAsIC5tYXggPSAoOCA8PCAxNikgLSAxLAorCX0sCisJLyogUEFMX0VYVDJfR0NfTUFY ICovCisJeworCQkuZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKwkJCSAgRFJNX01PREVf TFVUX1JFRkxFQ1RfTkVHQVRJVkUgfAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQT0xBVEUgfAor CQkJICBEUk1fTU9ERV9MVVRfUkVVU0VfTEFTVCB8CisJCQkgIERSTV9NT0RFX0xVVF9OT05fREVD UkVBU0lORyksCisJCS5jb3VudCA9IDEsCisJCS5pbnB1dF9icGMgPSAxNiwgLm91dHB1dF9icGMg PSAxNiwKKwkJLnN0YXJ0ID0gMyA8PCAxNiwgLmVuZCA9IDcgPDwgMTYsCisJCS5taW4gPSAwLCAu bWF4ID0gKDggPDwgMTYpIC0gMSwKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Y29sb3JfbHV0X3JhbmdlIGl2Yl9zcGxpdF9nYW1tYVtdID0geworICAgICAgICB7CisgICAgICAg ICAgICAgICAgLmZsYWdzID0gKERSTV9NT0RFX0xVVF9ERUdBTU1BIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgRFJNX01PREVfTFVUX1JFRkxFQ1RfTkVHQVRJVkUpLAorICAgICAgICAgICAg ICAgIC5jb3VudCA9IDUxMiwKKyAgICAgICAgICAgICAgICAuaW5wdXRfYnBjID0gOSwgLm91dHB1 dF9icGMgPSAxMCwKKyAgICAgICAgICAgICAgICAuc3RhcnQgPSAwLCAuZW5kID0gKDEgPDwgOSkg LSAxLAorICAgICAgICAgICAgICAgIC5taW4gPSAwLCAubWF4ID0gKDEgPDwgMTApIC0gMSwKKyAg ICAgICAgfSwKKyAgICAgICAgLyogUEFMX0VYVF9HQ19NQVggKi8KKyAgICAgICAgeworICAgICAg ICAgICAgICAgIC5mbGFncyA9IChEUk1fTU9ERV9MVVRfREVHQU1NQSB8CisgICAgICAgICAgICAg ICAgICAgICAgICAgIERSTV9NT0RFX0xVVF9SRUZMRUNUX05FR0FUSVZFIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX0lOVEVSUE9MQVRFIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgRFJNX01PREVfTFVUX1JFVVNFX0xBU1QgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICBEUk1fTU9ERV9MVVRfTk9OX0RFQ1JFQVNJTkcpLAorICAgICAgICAgICAgICAgIC5j b3VudCA9IDEsCisgICAgICAgICAgICAgICAgLmlucHV0X2JwYyA9IDEwLCAub3V0cHV0X2JwYyA9 IDE2LAorICAgICAgICAgICAgICAgIC5zdGFydCA9IDEgPDwgOSwgLmVuZCA9IDMgPDwgOSwKKyAg ICAgICAgICAgICAgICAubWluID0gMCwgLm1heCA9ICg4IDw8IDE2KSAtIDEsCisgICAgICAgIH0s CisgICAgICAgIHsKKyAgICAgICAgICAgICAgICAuZmxhZ3MgPSBEUk1fTU9ERV9MVVRfR0FNTUEs CisgICAgICAgICAgICAgICAgLmNvdW50ID0gNTEyLAorICAgICAgICAgICAgICAgIC5pbnB1dF9i cGMgPSA5LCAub3V0cHV0X2JwYyA9IDEwLAorICAgICAgICAgICAgICAgIC5zdGFydCA9IDAsIC5l bmQgPSAoMSA8PCA5KSAtIDEsCisgICAgICAgICAgICAgICAgLm1pbiA9IDAsIC5tYXggPSAoMSA8 PCAxMCkgLSAxLAorICAgICAgICB9LAorfTsKKworLyogRklYTUUgaW5wdXQgYnBjPyAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0X3JhbmdlIGl2Yl9nYW1tYV9kZWdhbW1hXzEy cDRbXSA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgICAgIC5mbGFncyA9IChEUk1fTU9ERV9M VVRfR0FNTUEgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9MVVRfREVHQU1N QSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0xVVF9SRUZMRUNUX05FR0FU SVZFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX0lOVEVSUE9MQVRF IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX05PTl9ERUNSRUFTSU5H KSwKKyAgICAgICAgICAgICAgICAuY291bnQgPSA1MTIsCisgICAgICAgICAgICAgICAgLmlucHV0 X2JwYyA9IDEyLCAub3V0cHV0X2JwYyA9IDE2LAorICAgICAgICAgICAgICAgIC5zdGFydCA9IDAs IC5lbmQgPSAoMSA8PCAxMikgLSAoMSA8PCAxMikgLyA1MTIsCisgICAgICAgICAgICAgICAgLm1p biA9IDAsIC5tYXggPSAoMSA8PCAxNikgLSAxLAorICAgICAgICB9LAorICAgICAgICAvKiBQQUxf R0NfTUFYICovCisgICAgICAgIHsKKyAgICAgICAgICAgICAgICAuZmxhZ3MgPSAoRFJNX01PREVf TFVUX0dBTU1BIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX0RFR0FN TUEgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9MVVRfUkVGTEVDVF9ORUdB VElWRSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0xVVF9JTlRFUlBPTEFU RSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0xVVF9SRVVTRV9MQVNUIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX05PTl9ERUNSRUFTSU5HKSwK KyAgICAgICAgICAgICAgICAuY291bnQgPSAxLAorICAgICAgICAgICAgICAgIC5pbnB1dF9icGMg PSAxMiwgLm91dHB1dF9icGMgPSAxNiwKKyAgICAgICAgICAgICAgICAuc3RhcnQgPSAoMSA8PCAx MikgLSAoMSA8PCAxMikgLyA1MTIsIC5lbmQgPSAxIDw8IDEyLAorICAgICAgICAgICAgICAgIC5t aW4gPSAwLCAubWF4ID0gMSA8PCAxNiwKKyAgICAgICAgfSwKKyAgICAgICAgLyogUEFMX0VYVF9H Q19NQVggKi8KKyAgICAgICAgeworICAgICAgICAgICAgICAgIC5mbGFncyA9IChEUk1fTU9ERV9M VVRfR0FNTUEgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9MVVRfREVHQU1N QSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0xVVF9SRUZMRUNUX05FR0FU SVZFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX0lOVEVSUE9MQVRF IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfTFVUX1JFVVNFX0xBU1QgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9MVVRfTk9OX0RFQ1JFQVNJTkcpLAor ICAgICAgICAgICAgICAgIC5jb3VudCA9IDEsCisgICAgICAgICAgICAgICAgLmlucHV0X2JwYyA9 IDEyLCAub3V0cHV0X2JwYyA9IDE2LAorICAgICAgICAgICAgICAgIC5zdGFydCA9IDEgPDwgMTIs IC5lbmQgPSAzIDw8IDEyLAorICAgICAgICAgICAgICAgIC5taW4gPSAwLCAubWF4ID0gKDggPDwg MTYpIC0gMSwKKyAgICAgICAgfSwKK307CisKKyAvKiBGSVhNRSBpbnB1dCBicGM/ICovCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXRfcmFuZ2UgaWNsX211bHRpX3NlZ19nYW1tYVtd ID0geworCS8qIHNlZ21lbnQgMSBha2EuIHN1cGVyIGZpbmUgc2VnbWVudCAqLworCXsKKwkJLmZs YWdzID0gKERSTV9NT0RFX0xVVF9HQU1NQSB8CisJCQkgIERSTV9NT0RFX0xVVF9SRUZMRUNUX05F R0FUSVZFIHwKKwkJCSAgRFJNX01PREVfTFVUX0lOVEVSUE9MQVRFIHwKKwkJCSAgRFJNX01PREVf TFVUX05PTl9ERUNSRUFTSU5HKSwKKwkJLmNvdW50ID0gOSwKKwkJLmlucHV0X2JwYyA9IDI0LCAu b3V0cHV0X2JwYyA9IDE2LAorCQkuc3RhcnQgPSAwLCAuZW5kID0gKDEgPDwgMjQpIC8gKDEyOCAq IDI1NiksCisJCS5taW4gPSAwLCAubWF4ID0gKDEgPDwgMTYpIC0gMSwKKwl9LAorCS8qIHNlZ21l bnQgMiBha2EuIGZpbmUgc2VnbWVudCAqLworCXsKKwkJLmZsYWdzID0gKERSTV9NT0RFX0xVVF9H QU1NQSB8CisJCQkgIERSTV9NT0RFX0xVVF9SRUZMRUNUX05FR0FUSVZFIHwKKwkJCSAgRFJNX01P REVfTFVUX0lOVEVSUE9MQVRFIHwKKwkJCSAgRFJNX01PREVfTFVUX05PTl9ERUNSRUFTSU5HKSwK KwkJLmNvdW50ID0gMjU3LAorCQkuaW5wdXRfYnBjID0gMjQsIC5vdXRwdXRfYnBjID0gMTYsCisJ CS5zdGFydCA9IDAsIC5lbmQgPSAoMSA8PCAyNCkgLyAxMjgsCisJCS5taW4gPSAwLCAubWF4ID0g KDEgPDwgMTYpIC0gMSwKKwl9LAorCS8qIHNlZ21lbnQgMyBha2EuIGNvYXJzZSBzZWdtZW50ICov CisJeworCQkuZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKwkJCSAgRFJNX01PREVfTFVU X1JFRkxFQ1RfTkVHQVRJVkUgfAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQT0xBVEUgfAorCQkJ ICBEUk1fTU9ERV9MVVRfTk9OX0RFQ1JFQVNJTkcpLAorCQkuY291bnQgPSAyNTcsCisJCS5pbnB1 dF9icGMgPSAyNCwgLm91dHB1dF9icGMgPSAxNiwKKwkJLnN0YXJ0ID0gMCwgLmVuZCA9ICgxIDw8 IDI0KSAtICgxIDw8IDI0KSAvIDI1NiwKKwkJLm1pbiA9IDAsIC5tYXggPSAoMSA8PCAxNikgLSAx LAorCX0sCisJLyogc2VnbWVudCAzIGFrYS4gY29hcnNlIHNlZ21lbnQgLyBQQUxfR0NfTUFYICov CisJeworCQkuZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKwkJCSAgRFJNX01PREVfTFVU X1JFRkxFQ1RfTkVHQVRJVkUgfAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQT0xBVEUgfAorCQkJ ICBEUk1fTU9ERV9MVVRfUkVVU0VfTEFTVCB8CisJCQkgIERSTV9NT0RFX0xVVF9OT05fREVDUkVB U0lORyksCisJCS5jb3VudCA9IDEsCisJCS5pbnB1dF9icGMgPSAyNCwgLm91dHB1dF9icGMgPSAx NiwKKwkJLnN0YXJ0ID0gKDEgPDwgMjQpIC0gKDEgPDwgMjQpIC8gMjU2LCAuZW5kID0gMSA8PCAy NCwKKwkJLm1pbiA9IDAsIC5tYXggPSAxIDw8IDE2LAorCX0sCisJLyogUEFMX0VYVF9HQ19NQVgg Ki8KKwl7CisJCS5mbGFncyA9IChEUk1fTU9ERV9MVVRfR0FNTUEgfAorCQkJICBEUk1fTU9ERV9M VVRfUkVGTEVDVF9ORUdBVElWRSB8CisJCQkgIERSTV9NT0RFX0xVVF9JTlRFUlBPTEFURSB8CisJ CQkgIERSTV9NT0RFX0xVVF9SRVVTRV9MQVNUIHwKKwkJCSAgRFJNX01PREVfTFVUX05PTl9ERUNS RUFTSU5HKSwKKwkJLmNvdW50ID0gMSwKKwkJLmlucHV0X2JwYyA9IDI0LCAub3V0cHV0X2JwYyA9 IDE2LAorCQkuc3RhcnQgPSAxIDw8IDI0LCAuZW5kID0gMyA8PCAyNCwKKwkJLm1pbiA9IDAsIC5t YXggPSAoOCA8PCAxNikgLSAxLAorCX0sCisJLyogUEFMX0VYVDJfR0NfTUFYICovCisJeworCQku ZmxhZ3MgPSAoRFJNX01PREVfTFVUX0dBTU1BIHwKKwkJCSAgRFJNX01PREVfTFVUX1JFRkxFQ1Rf TkVHQVRJVkUgfAorCQkJICBEUk1fTU9ERV9MVVRfSU5URVJQT0xBVEUgfAorCQkJICBEUk1fTU9E RV9MVVRfUkVVU0VfTEFTVCB8CisJCQkgIERSTV9NT0RFX0xVVF9OT05fREVDUkVBU0lORyksCisJ CS5jb3VudCA9IDEsCisJCS5pbnB1dF9icGMgPSAyNCwgLm91dHB1dF9icGMgPSAxNiwKKwkJLnN0 YXJ0ID0gMyA8PCAyNCwgLmVuZCA9IDcgPDwgMjQsCisJCS5taW4gPSAwLCAubWF4ID0gKDggPDwg MTYpIC0gMSwKKwl9LAorfTsKKwogdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWJvb2wgaGFzX2N0bSA9IElOVEVMX0lORk8oZGV2X3ByaXYp LT5jb2xvci5kZWdhbW1hX2x1dF9zaXplICE9IDA7CisJaW50IGRlZ2FtbWFfbHV0X3NpemUsIGdh bW1hX2x1dF9zaXplOwogCiAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmY3J0Yy0+YmFz ZSwgMjU2KTsKIApAQCAtMTIzMywyNSArMTY1NywxNTkgQEAgdm9pZCBpbnRlbF9jb2xvcl9pbml0 KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY2hl Y2sgPSBjaHZfY29sb3JfY2hlY2s7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jb21taXQg PSBpOXh4X2NvbG9yX2NvbW1pdDsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGNo ZXJyeXZpZXdfbG9hZF9sdXRzOworCisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21vZGVfcmFuZ2Uo JmRldl9wcml2LT5kcm0sCisJCQkJCQkgICAgICAgIjhiaXQgZ2FtbWEiLAorCQkJCQkJICAgICAg IAlpOXh4X2dhbW1hXzgsCisJCQkJCQkJc2l6ZW9mKGk5eHhfZ2FtbWFfOCkpOworCQkJZHJtX2Nv bG9yX2FkZF9nYW1tYV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgICAgICJp bnRlcnBvbGF0ZWQgZ2FtbWEiLAorCQkJCQkJICAgICAgIGk5NjVfZ2FtbWFfMTAsCisJCQkJCQkg ICAgICAgc2l6ZW9mKGk5NjVfZ2FtbWFfMTApKTsKKwkJCWRybV9jb2xvcl9hZGRfZ2FtbWFfbW9k ZV9yYW5nZSgmZGV2X3ByaXYtPmRybSwKKwkJCQkJCSAgICAgICAiQ0dNIGdhbW1hIiwKKwkJCQkJ CSAgICAgICAJY2h2X2NnbV9nYW1tYSwKKwkJCQkJCQlzaXplb2YoY2h2X2NnbV9nYW1tYSkpOwor CQkJZHJtX2NvbG9yX2FkZF9nYW1tYV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJ ICAgICAgICJDR00gZGVnYW1tYSIsCisJCQkJCQkgICAgICAgCWNodl9jZ21fZGVnYW1tYSwKKwkJ CQkJCQlzaXplb2YoY2h2X2NnbV9kZWdhbW1hKSk7CisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21v ZGVfcmFuZ2UoJmRldl9wcml2LT5kcm0sCisJCQkJCQkgICAgICAgIkNHTSBkZWdhbW1hIHdpdGgg OGJpdCBnYW1tYSIsCisJCQkJCQkgICAgICAgCWNodl9jZ21fZGVnYW1tYV9pOXh4X2dhbW1hXzgs CisJCQkJCQkJc2l6ZW9mKGNodl9jZ21fZGVnYW1tYSkpOworCQkJZHJtX2NvbG9yX2FkZF9nYW1t YV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgICAgICJDR00gZGVnYW1tYSB3 aXRoIDEwYml0IGludGVycG9sYXRlZCBnYW1tYSIsCisJCQkJCQkgICAgICAgCWNodl9jZ21fZGVn YW1tYV9pOTY1X2dhbW1hXzEwLAorCQkJCQkJCXNpemVvZihjaHZfY2dtX2RlZ2FtbWEpKTsKKwkJ CWRybV9jb2xvcl9hZGRfZ2FtbWFfbW9kZV9yYW5nZSgmZGV2X3ByaXYtPmRybSwKKwkJCQkJCSAg ICAgICAiQ0dNIGRlZ2FtbWEgd2l0aCBDR00gZ2FtbWEiLAorCQkJCQkJICAgICAgIAljaHZfY2dt X2RlZ2FtbWFfY2dtX2RlZ2FtbWEsCisJCQkJCQkJc2l6ZW9mKGNodl9jZ21fZGVnYW1tYSkpOwog CQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQkJZGV2X3ByaXYtPmRp c3BsYXkuY29sb3JfY2hlY2sgPSBpOXh4X2NvbG9yX2NoZWNrOwogCQkJZGV2X3ByaXYtPmRpc3Bs YXkuY29sb3JfY29tbWl0ID0gaTl4eF9jb2xvcl9jb21taXQ7CiAJCQlkZXZfcHJpdi0+ZGlzcGxh eS5sb2FkX2x1dHMgPSBpOTY1X2xvYWRfbHV0czsKKworCQkJZHJtX2NvbG9yX2FkZF9nYW1tYV9t b2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgICAgICI4Yml0IGdhbW1hIiwKKwkJ CQkJCSAgICAgICAJaTl4eF9nYW1tYV84LAorCQkJCQkJCXNpemVvZihpOXh4X2dhbW1hXzgpKTsK KwkJCWRybV9jb2xvcl9hZGRfZ2FtbWFfbW9kZV9yYW5nZSgmZGV2X3ByaXYtPmRybSwKKwkJCQkJ CSAgICAgICAiaW50ZXJwb2xhdGVkIGdhbW1hIiwKKwkJCQkJCSAgICAgICBpOTY1X2dhbW1hXzEw LAorCQkJCQkJICAgICAgIHNpemVvZihpOTY1X2dhbW1hXzEwKSk7CiAJCX0gZWxzZSB7CiAJCQlk ZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jaGVjayA9IGk5eHhfY29sb3JfY2hlY2s7CiAJCQlkZXZf cHJpdi0+ZGlzcGxheS5jb2xvcl9jb21taXQgPSBpOXh4X2NvbG9yX2NvbW1pdDsKIAkJCWRldl9w cml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGk5eHhfbG9hZF9sdXRzOworCisJCQlkZWdhbW1hX2x1 dF9zaXplID0gMDsKKwkJCWdhbW1hX2x1dF9zaXplID0gMDsKKwkJCWhhc19jdG0gPSBmYWxzZTsK KworCQkJZHJtX2NvbG9yX2FkZF9nYW1tYV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJ CQkJICAgICAgICI4Yml0IGdhbW1hIiwKKwkJCQkJCSAgICAgICAJaTl4eF9nYW1tYV84LAorCQkJ CQkJCXNpemVvZihpOXh4X2dhbW1hXzgpKTsKKworCQkJaWYgKGk5eHhfaGFzXzEwYml0X2x1dChk ZXZfcHJpdikpIHsKKwkJCQkvKiAxMGJpdCBpbnRlcnBvbGF0ZWQgZ2FtbWEgKi8KKwkJCQlnYW1t YV9sdXRfc2l6ZSA9IEk5WFhfTFVUX1NJWkVfMTBCSVQ7CisKKwkJCQlkcm1fY29sb3JfYWRkX2dh bW1hX21vZGVfcmFuZ2UoJmRldl9wcml2LT5kcm0sCisJCQkJCQkJICAgICAgICJpbnRlcnBvbGF0 ZWQgZ2FtbWEiLAorCQkJCQkJCSAgICAgICAJaTl4eF9nYW1tYV8xMF9zbG9wZSwKKwkJCQkJCQkJ c2l6ZW9mKGk5eHhfZ2FtbWFfMTBfc2xvcGUpKTsKKwkJCX0KIAkJfQogCX0gZWxzZSB7Ci0JCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQorCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMSkgewogCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY2hlY2sgPSBpY2xfY29sb3JfY2hl Y2s7Ci0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFL RShkZXZfcHJpdikpCisJCQkvKiBkb24ndCBhZHZlcnRpemUgdGhlID49IDEuMCBlbnRyaWVzICov CisJCQlkZWdhbW1hX2x1dF9zaXplID0gMDsKKwkJCWdhbW1hX2x1dF9zaXplID0gSUxLX0xVVF9T SVpFXzEwQklUOworCisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21vZGVfcmFuZ2UoJmRldl9wcml2 LT5kcm0sCisJCQkJCQkgICAgICAgIjhiaXQgZ2FtbWEiLAorCQkJCQkJICAgICAgIAlpOXh4X2dh bW1hXzgsCisJCQkJCQkJc2l6ZW9mKGk5eHhfZ2FtbWFfOCkpOworCQkJZHJtX2NvbG9yX2FkZF9n YW1tYV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgICAgICIxMGJpdCBnYW1t YSIsCisJCQkJCQkgICAgICAgCWdsa19nYW1tYV8xMCwKKwkJCQkJCQlzaXplb2YoZ2xrX2dhbW1h XzEwKSk7CisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21vZGVfcmFuZ2UoJmRldl9wcml2LT5kcm0s CisJCQkJCQkgICAgICAgImludGVycG9sYXRlZCBnYW1tYSIsCisJCQkJCQkgICAgICAgZ2xrX2dh bW1hXzEycDQsCisJCQkJCQkgICAgICAgc2l6ZW9mKGdsa19nYW1tYV8xMnA0KSk7CisJCQlkcm1f Y29sb3JfYWRkX2dhbW1hX21vZGVfcmFuZ2UoJmRldl9wcml2LT5kcm0sCisJCQkJCQkgICAgICAg Im11bHRpLXNlZ21lbnRlZCBnYW1tYSIsCisJCQkJCQkgICAgICAgaWNsX211bHRpX3NlZ19nYW1t YSwKKwkJCQkJCSAgICAgICBzaXplb2YoaWNsX211bHRpX3NlZ19nYW1tYSkpOworCQl9IGVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp IHsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NoZWNrID0gZ2xrX2NvbG9yX2NoZWNrOwot CQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCisJCQkvKiBkb24ndCBhZHZlcnRp emUgdGhlID49IDEuMCBlbnRyaWVzICovCisJCQlkZWdhbW1hX2x1dF9zaXplID0gMDsKKwkJCWdh bW1hX2x1dF9zaXplID0gSUxLX0xVVF9TSVpFXzEwQklUOworCQkJaGFzX2N0bSA9IHRydWU7CisK KwkJCWRybV9jb2xvcl9hZGRfZ2FtbWFfbW9kZV9yYW5nZSgmZGV2X3ByaXYtPmRybSwKKwkJCQkJ CSAgICAgICAiOGJpdCBnYW1tYSIsCisJCQkJCQkgICAgICAgCWk5eHhfZ2FtbWFfOCwKKwkJCQkJ CQlzaXplb2YoaTl4eF9nYW1tYV84KSk7CisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21vZGVfcmFu Z2UoJmRldl9wcml2LT5kcm0sCisJCQkJCQkgICAgICAgIjEwYml0IGdhbW1hIiwKKwkJCQkJCSAg ICAgICAJZ2xrX2dhbW1hXzEwLAorCQkJCQkJCXNpemVvZihnbGtfZ2FtbWFfMTApKTsKKwkJCWRy bV9jb2xvcl9hZGRfZ2FtbWFfbW9kZV9yYW5nZSgmZGV2X3ByaXYtPmRybSwKKwkJCQkJCSAgICAg ICAiaW50ZXJwb2xhdGVkIGdhbW1hIiwKKwkJCQkJCSAgICAgICBnbGtfZ2FtbWFfMTJwNCwKKwkJ CQkJCSAgICAgICBzaXplb2YoZ2xrX2dhbW1hXzEycDQpKTsKKwkJfSBlbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDcpIHsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NoZWNrID0g aXZiX2NvbG9yX2NoZWNrOwotCQllbHNlCisKKwkJCS8qIGRvbid0IGFkdmVydGl6ZSB0aGUgPj0g MS4wIGVudHJpZXMgKi8KKwkJCWRlZ2FtbWFfbHV0X3NpemUgPSBJVkJfTFVUX1NJWkVfU1BMSVQ7 CisJCQlnYW1tYV9sdXRfc2l6ZSA9IElWQl9MVVRfU0laRV9TUExJVDsKKwkJCWhhc19jdG0gPSB0 cnVlOworCisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21vZGVfcmFuZ2UoJmRldl9wcml2LT5kcm0s CisJCQkJCQkgICAgICAgIjhiaXQgZ2FtbWEgb3IgZGVnYW1tYSIsCisJCQkJCQkgICAgICAgaWxr X2dhbW1hX2RlZ2FtbWFfOCwKKwkJCQkJCSAgICAgICBzaXplb2YoaWxrX2dhbW1hX2RlZ2FtbWFf OCkpOworCQkJZHJtX2NvbG9yX2FkZF9nYW1tYV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAor CQkJCQkJICAgICAgICJzcGxpdCBnYW1tYSIsCisJCQkJCQkgICAgICAgaXZiX3NwbGl0X2dhbW1h LAorCQkJCQkJICAgICAgIHNpemVvZihpdmJfc3BsaXRfZ2FtbWEpKTsKKwkJCWRybV9jb2xvcl9h ZGRfZ2FtbWFfbW9kZV9yYW5nZSgmZGV2X3ByaXYtPmRybSwKKwkJCQkJCSAgICAgICAiMTBiaXQg Z2FtbWEgb3IgZGVnYW1tYSIsCisJCQkJCQkgICAgICAgaXZiX2dhbW1hX2RlZ2FtbWFfMTAsCisJ CQkJCQkgICAgICAgc2l6ZW9mKGl2Yl9nYW1tYV9kZWdhbW1hXzEwKSk7CisJCQlkcm1fY29sb3Jf YWRkX2dhbW1hX21vZGVfcmFuZ2UoJmRldl9wcml2LT5kcm0sCisJCQkJCQkgICAgICAgImludGVy cG9sYXRlZCBnYW1tYSBvciBkZWdhbW1hIiwKKwkJCQkJCSAgICAgICAJaXZiX2dhbW1hX2RlZ2Ft bWFfMTJwNCwKKwkJCQkJCQlzaXplb2YoaXZiX2dhbW1hX2RlZ2FtbWFfMTJwNCkpOworCQl9IGVs c2UgewogCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY2hlY2sgPSBpbGtfY29sb3JfY2hlY2s7 CiAKKwkJCWRlZ2FtbWFfbHV0X3NpemUgPSAwOworCQkJZ2FtbWFfbHV0X3NpemUgPSBJTEtfTFVU X1NJWkVfMTBCSVQ7CisJCQloYXNfY3RtID0gdHJ1ZTsKKworCQkJZHJtX2NvbG9yX2FkZF9nYW1t YV9tb2RlX3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgICAgICI4Yml0IGdhbW1hIG9y IGRlZ2FtbWEiLAorCQkJCQkJICAgICAgIAlpbGtfZ2FtbWFfZGVnYW1tYV84LAorCQkJCQkJCXNp emVvZihpbGtfZ2FtbWFfZGVnYW1tYV84KSk7CisJCQlkcm1fY29sb3JfYWRkX2dhbW1hX21vZGVf cmFuZ2UoJmRldl9wcml2LT5kcm0sCisJCQkJCQkgICAgICAgIjEwYml0IGdhbW1hIG9yIGRlZ2Ft bWEiLAorCQkJCQkJICAgICAgIGlsa19nYW1tYV9kZWdhbW1hXzEwLAorCQkJCQkJICAgICAgIHNp emVvZihpbGtfZ2FtbWFfZGVnYW1tYV8xMCkpOworCQkJZHJtX2NvbG9yX2FkZF9nYW1tYV9tb2Rl X3JhbmdlKCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgICAgICJpbnRlcnBvbGF0ZWQgZ2FtbWEg b3IgZGVnYW1tYSIsCisJCQkJCQkgICAgICAgaWxrX2dhbW1hX2RlZ2FtbWFfMTJwNCwKKwkJCQkJ CSAgICAgICBzaXplb2YoaWxrX2dhbW1hX2RlZ2FtbWFfMTJwNCkpOworCQl9CisKIAkJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1p dCA9IHNrbF9jb2xvcl9jb21taXQ7CiAJCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikg fHwgSVNfSEFTV0VMTChkZXZfcHJpdikpCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4