From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: [PATCH 5/6] drm/i915: Add format modifiers for Intel Date: Wed, 26 Jul 2017 11:08:01 -0700 Message-ID: <20170726180802.23817-5-ben@bwidawsk.net> References: <20170726180802.23817-1-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170726180802.23817-1-ben@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Intel GFX , DRI Development Cc: Emil Velikov , Ben Widawsky , "Kristian H . Kristensen" List-Id: dri-devel@lists.freedesktop.org VGhpcyB3YXMgYmFzZWQgb24gYSBwYXRjaCBvcmlnaW5hbGx5IGJ5IEtyaXN0aWFuLiBJdCBoYXMg YmVlbiBtb2RpZmllZApwcmV0dHkgaGVhdmlseSB0byB1c2UgdGhlIG5ldyBjYWxsYmFja3MgZnJv bSB0aGUgcHJldmlvdXMgcGF0Y2guCgp2MjoKICAtIEFkZCBMSU5FQVIgYW5kIFlmIG1vZGlmaWVy cyB0byBsaXN0IChWaWxsZSkKICAtIENvbWJpbmUgaTh4eCBhbmQgaTk2NSBpbnRvIG9uZSBsaXN0 IG9mIGZvcm1hdHMgKFZpbGxlKQogIC0gQWxsb3cgMTAxMDEwMiBmb3JtYXRzIGZvciBZL1lmIHRp bGVkIChWaWxsZSkKCnYzOgogIC0gSGFuZGxlIGN1cnNvciBmb3JtYXRzIChWaWxsZSkKICAtIFB1 dCBoYW5kbGluZyBmb3IgTElORUFSIGluIHRoZSBtb2Rfc3VwcG9ydCBmdW5jdGlvbnMgKFZpbGxl KQoKdjQ6CiAgLSBMaXN0IGVhY2ggbW9kaWZpZXIgZXhwbGljaXRseSBpbiBzdXBwb3J0ZWQgbW9k aWZpZXJzIChWaWxsZSkKICAtIEhhbmRsZSB0aGUgQ1VSU09SIHBsYW5lIChWaWxsZSkKCnY1Ogog IC0gU3BsaXQgb3V0IGN1cnNvciBhbmQgc3ByaXRlIGhhbmRsaW5nIChWaWxsZSkKCnY2OgogIC0g QWN0dWFsbHkgdXNlIHRoZSBzcHJpdGUgZnVuY3MgKEVtaWwpCiAgLSBVc2UgdW5yZWFjaGFibGUg KEVtaWwpCgp2NzoKICAtIE9ubHkgYWxsb3cgSW50ZWwgbW9kaWZpZXJzIGFuZCBMSU5FQVIgKEJl bikKCnY4CiAgLSBGaXggc3BpdGUgYXNzZXJ0IGludHJvZHVjZWQgaW4gdjYgKERhbmllbCkKCnY5 CiAgLSBDaGFuZ2UgdmVuZG9yIGNoZWNrIGxvZ2ljIHRvIGF2b2lkIG1hZ2ljIDU2IChFbWlsKQog IC0gUmVvcmRlciBza2xfbW9kX3N1cHBvcnQgKFZpbGxlKQogIC0gbWFrZSBpbnRlbF9wbGFuZV9m dW5jcyBzdGF0aWMsIGNvdWxkIGJlIGRvbmUgYXMgb2YgdjUgKFZpbGxlKQogIC0gcmVuYW1lIGxv Y2FsIHZhcmlhYmxlIGludGVsX2Zvcm1hdF9tb2RpZmllcnMgdG8gbW9kaWZpZXJzIChWaWxsZSkK ICAgIC0gYWN0dWFsbHkgdXNlIHNwcml0ZSBtb2RpZmllcnMKICAtIHNwbGl0IG91dCBtb2RpZmll ci9mb3JtYXRzIGJ5IHBsYXRmb3JtIChWaWxsZSkKCkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogS3Jpc3RpYW4gSC4gS3Jpc3RlbnNlbiA8aG9l Z3NiZXJnQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEVtaWwgVmVsaWtvdiA8ZW1pbC5sLnZlbGlr b3ZAZ21haWwuY29tPiAodjgpClNpZ25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRh d3NrLm5ldD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMjcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j ICB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFu Z2VkLCAyNTkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCmluZGV4IDAzODFhMTczNDM5Ni4uNDBjYjAyYzBhYzJiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC02Nyw2ICs2NywxMiBAQCBzdGF0aWMgY29u c3QgdWludDMyX3QgaTk2NV9wcmltYXJ5X2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX1hCR1Iy MTAxMDEwLAogfTsKIAorc3RhdGljIGNvbnN0IHVpbnQ2NF90IGk5eHhfZm9ybWF0X21vZGlmaWVy c1tdID0geworCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAorCURSTV9GT1JNQVRfTU9EX0xJTkVB UiwKKwlEUk1fRk9STUFUX01PRF9JTlZBTElECit9OworCiBzdGF0aWMgY29uc3QgdWludDMyX3Qg c2tsX3ByaW1hcnlfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRfQzgsCiAJRFJNX0ZPUk1BVF9S R0I1NjUsCkBAIC04MiwxMSArODgsMjQgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNrbF9wcmlt YXJ5X2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX1ZZVVksCiB9OwogCitzdGF0aWMgY29uc3Qg dWludDY0X3Qgc2tsX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQsCisJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCisJSTkxNV9GT1JNQVRfTU9EX1hfVElM RUQsCisJRFJNX0ZPUk1BVF9NT0RfTElORUFSLAorCURSTV9GT1JNQVRfTU9EX0lOVkFMSUQKK307 CisKIC8qIEN1cnNvciBmb3JtYXRzICovCiBzdGF0aWMgY29uc3QgdWludDMyX3QgaW50ZWxfY3Vy c29yX2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX0FSR0I4ODg4LAogfTsKIAorc3RhdGljIGNv bnN0IHVpbnQ2NF90IGN1cnNvcl9mb3JtYXRfbW9kaWZpZXJzW10gPSB7CisJRFJNX0ZPUk1BVF9N T0RfTElORUFSLAorCURSTV9GT1JNQVRfTU9EX0lOVkFMSUQKK307CisKIHN0YXRpYyB2b2lkIGk5 eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9j bG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCkBAIC0xMjg0Myw3ICsxMjg2Miw5OCBA QCB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJa2Zy ZWUodG9faW50ZWxfcGxhbmUocGxhbmUpKTsKIH0KIAotY29uc3Qgc3RydWN0IGRybV9wbGFuZV9m dW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKK3N0YXRpYyBib29sIGk4eHhfbW9kX3N1cHBvcnRl ZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQoreworCXN3aXRjaCAoZm9ybWF0 KSB7CisJY2FzZSBEUk1fRk9STUFUX0M4OgorCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6CisJY2Fz ZSBEUk1fRk9STUFUX1hSR0IxNTU1OgorCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKKwkJcmV0 dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8fAorCQkJbW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7CisJZGVmYXVsdDoKKwkJcmV0dXJuIGZhbHNlOworCX0K K30KKworc3RhdGljIGJvb2wgaTk2NV9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1hdCwgdWlu dDY0X3QgbW9kaWZpZXIpCit7CisJc3dpdGNoIChmb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRf Qzg6CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6 CisJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAx MDoKKwljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6CisJCXJldHVybiBtb2RpZmllciA9PSBE Uk1fRk9STUFUX01PRF9MSU5FQVIgfHwKKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9Y X1RJTEVEOworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKK3N0YXRpYyBib29s IHNrbF9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIpCit7 CisJc3dpdGNoIChmb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJY2FzZSBE Uk1fRk9STUFUX1hCR1I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwljYXNlIERS TV9GT1JNQVRfQUJHUjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKKwljYXNlIERSTV9G T1JNQVRfWFJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgorCWNhc2Ug RFJNX0ZPUk1BVF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCWNhc2UgRFJNX0ZPUk1B VF9VWVZZOgorCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQlpZiAobW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1lmX1RJTEVEKQorCQkJcmV0dXJuIHRydWU7CisJCS8qIGZhbGwgdGhyb3VnaCAq LworCWNhc2UgRFJNX0ZPUk1BVF9DODoKKwkJaWYgKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9E X0xJTkVBUiB8fAorCQkgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQgfHwK KwkJICAgIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEKQorCQkJcmV0dXJuIHRy dWU7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9 Cit9CisKK3N0YXRpYyBib29sIGludGVsX3ByaW1hcnlfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0 ZWQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCQkgICAgIHVpbnQzMl90IGZvcm1hdCwK KwkJCQkJCSAgICAgdWludDY0X3QgbW9kaWZpZXIpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKKworCWlmIChXQVJOX09OKG1vZGlm aWVyID09IERSTV9GT1JNQVRfTU9EX0lOVkFMSUQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAo IShtb2RpZmllciAmIERSTV9GT1JNQVRfTU9EX1ZFTkRPUl9JTlRFTCkgJiYKKwkgICAgbW9kaWZp ZXIgIT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQorCQlyZXR1cm4gc2tsX21vZF9zdXBwb3J0ZWQoZm9ybWF0 LCBtb2RpZmllcik7CisJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQorCQlyZXR1 cm4gaTk2NV9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOworCWVsc2UKKwkJcmV0dXJu IGk4eHhfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKKworCXVucmVhY2hhYmxlKCk7 Cit9CisKK3N0YXRpYyBib29sIGludGVsX2N1cnNvcl9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRl ZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJCSAgICB1aW50MzJfdCBmb3JtYXQsCisJ CQkJCQkgICAgdWludDY0X3QgbW9kaWZpZXIpCit7CisJaWYgKFdBUk5fT04obW9kaWZpZXIgPT0g RFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBtb2Rp ZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgJiYgZm9ybWF0ID09IERSTV9GT1JNQVRfQVJH Qjg4ODg7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX3BsYW5lX2Z1 bmNzID0gewogCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUs CiAJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAogCS5k ZXN0cm95ID0gaW50ZWxfcGxhbmVfZGVzdHJveSwKQEAgLTEyODUyLDYgKzEyOTYyLDcgQEAgY29u c3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKIAkuYXRvbWlj X3NldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX2F0b21pY19zZXRfcHJvcGVydHksCiAJLmF0b21p Y19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21p Y19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKKwkuZm9ybWF0X21v ZF9zdXBwb3J0ZWQgPSBpbnRlbF9wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAog fTsKIAogc3RhdGljIGludApAQCAtMTI5ODYsNiArMTMwOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3MgPSB7CiAJLmF0b21p Y19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAogCS5hdG9t aWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCisJLmZvcm1hdF9t b2Rfc3VwcG9ydGVkID0gaW50ZWxfY3Vyc29yX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAog fTsKIAogc3RhdGljIHN0cnVjdCBpbnRlbF9wbGFuZSAqCkBAIC0xMjk5Niw2ICsxMzEwOCw3IEBA IGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUpCiAJY29uc3QgdWludDMyX3QgKmludGVsX3ByaW1hcnlfZm9y bWF0czsKIAl1bnNpZ25lZCBpbnQgc3VwcG9ydGVkX3JvdGF0aW9uczsKIAl1bnNpZ25lZCBpbnQg bnVtX2Zvcm1hdHM7CisJY29uc3QgdWludDY0X3QgKm1vZGlmaWVyczsKIAlpbnQgcmV0OwogCiAJ cHJpbWFyeSA9IGt6YWxsb2Moc2l6ZW9mKCpwcmltYXJ5KSwgR0ZQX0tFUk5FTCk7CkBAIC0xMzAz NCwxOCArMTMxNDcsMjEgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KSB7CiAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IHNrbF9wcmltYXJ5X2Zv cm1hdHM7CiAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcHJpbWFyeV9mb3JtYXRzKTsK KwkJbW9kaWZpZXJzID0gc2tsX2Zvcm1hdF9tb2RpZmllcnM7CiAKIAkJcHJpbWFyeS0+dXBkYXRl X3BsYW5lID0gc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKIAkJcHJpbWFyeS0+ZGlzYWJs ZV9wbGFuZSA9IHNreWxha2VfZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwogCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk5NjVf cHJpbWFyeV9mb3JtYXRzOwogCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoaTk2NV9wcmltYXJ5 X2Zvcm1hdHMpOworCQltb2RpZmllcnMgPSBpOXh4X2Zvcm1hdF9tb2RpZmllcnM7CiAKIAkJcHJp bWFyeS0+dXBkYXRlX3BsYW5lID0gaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZTsKIAkJcHJpbWFy eS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwogCX0gZWxzZSB7 CiAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk4eHhfcHJpbWFyeV9mb3JtYXRzOwogCQludW1f Zm9ybWF0cyA9IEFSUkFZX1NJWkUoaTh4eF9wcmltYXJ5X2Zvcm1hdHMpOworCQltb2RpZmllcnMg PSBpOXh4X2Zvcm1hdF9tb2RpZmllcnM7CiAKIAkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0gaTl4 eF91cGRhdGVfcHJpbWFyeV9wbGFuZTsKIAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhf ZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwpAQCAtMTMwNTUsMjEgKzEzMTcxLDIxIEBAIGludGVsX3By aW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51 bSBwaXBlIHBpcGUpCiAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYt PmRybSwgJnByaW1hcnktPmJhc2UsCiAJCQkJCSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3Ms CiAJCQkJCSAgICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAotCQkJCQkg ICAgICAgTlVMTCwKKwkJCQkJICAgICAgIG1vZGlmaWVycywKIAkJCQkJICAgICAgIERSTV9QTEFO RV9UWVBFX1BSSU1BUlksCiAJCQkJCSAgICAgICAicGxhbmUgMSVjIiwgcGlwZV9uYW1lKHBpcGUp KTsKIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUgfHwgSVNfRzRYKGRldl9wcml2 KSkKIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmcHJp bWFyeS0+YmFzZSwKIAkJCQkJICAgICAgIDAsICZpbnRlbF9wbGFuZV9mdW5jcywKIAkJCQkJICAg ICAgIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCi0JCQkJCSAgICAgICBOVUxM LAorCQkJCQkgICAgICAgbW9kaWZpZXJzLAogCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSwKIAkJCQkJICAgICAgICJwcmltYXJ5ICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKIAllbHNl CiAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJnByaW1h cnktPmJhc2UsCiAJCQkJCSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCiAJCQkJCSAgICAg ICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAotCQkJCQkgICAgICAgTlVMTCwK KwkJCQkJICAgICAgIG1vZGlmaWVycywKIAkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1B UlksCiAJCQkJCSAgICAgICAicGxhbmUgJWMiLCBwbGFuZV9uYW1lKHByaW1hcnktPnBsYW5lKSk7 CiAJaWYgKHJldCkKQEAgLTEzMTU1LDcgKzEzMjcxLDggQEAgaW50ZWxfY3Vyc29yX3BsYW5lX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgICAgIDAsICZp bnRlbF9jdXJzb3JfcGxhbmVfZnVuY3MsCiAJCQkJICAgICAgIGludGVsX2N1cnNvcl9mb3JtYXRz LAogCQkJCSAgICAgICBBUlJBWV9TSVpFKGludGVsX2N1cnNvcl9mb3JtYXRzKSwKLQkJCQkgICAg ICAgTlVMTCwgRFJNX1BMQU5FX1RZUEVfQ1VSU09SLAorCQkJCSAgICAgICBjdXJzb3JfZm9ybWF0 X21vZGlmaWVycywKKwkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfQ1VSU09SLAogCQkJCSAgICAg ICAiY3Vyc29yICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGVlMGRhZWNmZjcxMy4uNTY5NjA5OWFmZTE5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTMxNyw3ICsxMzE3LDYgQEAgaW50IHZs dl9nZXRfY2NrX2Nsb2NrX2hwbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQkJICAgY29uc3QgY2hhciAqbmFtZSwgdTMyIHJlZyk7CiB2b2lkIGxwdF9kaXNhYmxlX3BjaF90 cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGxwdF9k aXNhYmxlX2ljbGtpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotZXh0ZXJu IGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcGxhbmVfZnVuY3M7CiB2b2lkIGlu dGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OwogdW5zaWduZWQgaW50IGludGVsX2ZiX3h5X3RvX2xpbmVhcihpbnQgeCwgaW50IHksCiAJCQkJ ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKaW5kZXggNGJmMGQzZTRhZDkxLi4wNWExNTA2M2VlOTcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdXBwb3J0Lgog ICovCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJj Yy5oPgogI2luY2x1ZGUgPGRybS9kcm1fcmVjdC5oPgpAQCAtMTAzNyw2ICsxMDM4LDEyIEBAIHN0 YXRpYyBjb25zdCB1aW50MzJfdCBnNHhfcGxhbmVfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRf VllVWSwKIH07CiAKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBpOXh4X3BsYW5lX2Zvcm1hdF9tb2Rp ZmllcnNbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwKKwlEUk1fRk9STUFUX01PRF9M SU5FQVIsCisJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAorfTsKKwogc3RhdGljIGNvbnN0IHVpbnQz Ml90IHNuYl9wbGFuZV9mb3JtYXRzW10gPSB7CiAJRFJNX0ZPUk1BVF9YQkdSODg4OCwKIAlEUk1f Rk9STUFUX1hSR0I4ODg4LApAQCAtMTA3Miw2ICsxMDc5LDEyNSBAQCBzdGF0aWMgdWludDMyX3Qg c2tsX3BsYW5lX2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX1ZZVVksCiB9OwogCitzdGF0aWMg Y29uc3QgdWludDY0X3Qgc2tsX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKKwlJOTE1X0ZP Uk1BVF9NT0RfWWZfVElMRUQsCisJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCisJSTkxNV9GT1JN QVRfTU9EX1hfVElMRUQsCisJRFJNX0ZPUk1BVF9NT0RfTElORUFSLAorCURSTV9GT1JNQVRfTU9E X0lOVkFMSUQKK307CisKK3N0YXRpYyBib29sIGc0eF9zcHJpdGVfcGxhbmVfZm9ybWF0X21vZF9z dXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCQkgIHVpbnQzMl90IGZvcm1h dCwKKwkJCQkJCSAgdWludDY0X3QgbW9kaWZpZXIpCit7CisJc3dpdGNoIChmb3JtYXQpIHsKKwlj YXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCWNh c2UgRFJNX0ZPUk1BVF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgorCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQlpZiAobW9kaWZpZXIgPT0gRFJN X0ZPUk1BVF9NT0RfTElORUFSIHx8CisJCSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCkKKwkJCXJldHVybiB0cnVlOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwlkZWZhdWx0 OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCitzdGF0aWMgYm9vbCB2bHZfc3ByaXRlX3BsYW5l X2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkJICB1 aW50MzJfdCBmb3JtYXQsCisJCQkJCQkgIHVpbnQ2NF90IG1vZGlmaWVyKQoreworCXN3aXRjaCAo Zm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1lVWVY6CisJY2FzZSBEUk1fRk9STUFUX1lWWVU6 CisJY2FzZSBEUk1fRk9STUFUX1VZVlk6CisJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJY2FzZSBE Uk1fRk9STUFUX1JHQjU2NToKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJY2FzZSBEUk1f Rk9STUFUX0FSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKKwljYXNlIERS TV9GT1JNQVRfQUJHUjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4OgorCWNhc2Ug RFJNX0ZPUk1BVF9BQkdSODg4ODoKKwkJaWYgKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJ TkVBUiB8fAorCQkgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCisJCQly ZXR1cm4gdHJ1ZTsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJZGVmYXVsdDoKKwkJcmV0dXJuIGZh bHNlOworCX0KK30KKworc3RhdGljIGJvb2wgc2tsX3Nwcml0ZV9wbGFuZV9mb3JtYXRfbW9kX3N1 cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJCSAgdWludDMyX3QgZm9ybWF0 LAorCQkJCQkJICB1aW50NjRfdCBtb2RpZmllcikKK3sKKwkvKiBUaGlzIGlzIHRoZSBzYW1lIGFz IHByaW1hcnkgcGxhbmUgc2luY2UgU0tMIGhhcyB1bml2ZXJzYWwgcGxhbmVzICovCisJc3dpdGNo IChmb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJY2FzZSBEUk1fRk9STUFU X1hCR1I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwljYXNlIERSTV9GT1JNQVRf QUJHUjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKKwljYXNlIERSTV9GT1JNQVRfWFJH QjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgorCWNhc2UgRFJNX0ZPUk1B VF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgor CWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQlpZiAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEKQorCQkJcmV0dXJuIHRydWU7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2Ug RFJNX0ZPUk1BVF9DODoKKwkJaWYgKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8 fAorCQkgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQgfHwKKwkJICAgIG1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEKQorCQkJcmV0dXJuIHRydWU7CisJCS8q IGZhbGwgdGhyb3VnaCAqLworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKK3N0 YXRpYyBib29sIGludGVsX3Nwcml0ZV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbW9kaWZpZXIpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKKworCWlm IChXQVJOX09OKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0lOVkFMSUQpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlpZiAoIShtb2RpZmllciAmIERSTV9GT1JNQVRfTU9EX1ZFTkRPUl9JTlRFTCkg JiYKKwkgICAgbW9kaWZpZXIgIT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCQlyZXR1cm4gc2tsX3Nwcml0 ZV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChwbGFuZSwgZm9ybWF0LCBtb2RpZmllcik7CisJ ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCisJCXJldHVybiB2bHZfc3ByaXRlX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHBsYW5l LCBmb3JtYXQsIG1vZGlmaWVyKTsKKwllbHNlCisJCXJldHVybiBnNHhfc3ByaXRlX3BsYW5lX2Zv cm1hdF9tb2Rfc3VwcG9ydGVkKHBsYW5lLCBmb3JtYXQsIG1vZGlmaWVyKTsKKworCXVucmVhY2hh YmxlKCk7Cit9CisKK2NvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfc3ByaXRlX3Bs YW5lX2Z1bmNzID0geworICAgICAgICAudXBkYXRlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJf dXBkYXRlX3BsYW5lLAorICAgICAgICAuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVy X2Rpc2FibGVfcGxhbmUsCisgICAgICAgIC5kZXN0cm95ID0gaW50ZWxfcGxhbmVfZGVzdHJveSwK KyAgICAgICAgLnNldF9wcm9wZXJ0eSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3NldF9wcm9w ZXJ0eSwKKyAgICAgICAgLmF0b21pY19nZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNf Z2V0X3Byb3BlcnR5LAorICAgICAgICAuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5l X2F0b21pY19zZXRfcHJvcGVydHksCisgICAgICAgIC5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0g aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAorICAgICAgICAuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUgPSBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlLAorICAgICAgICAuZm9ybWF0X21vZF9zdXBw b3J0ZWQgPSBpbnRlbF9zcHJpdGVfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQsCit9OworCiBz dHJ1Y3QgaW50ZWxfcGxhbmUgKgogaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgIGVudW0gcGlwZSBwaXBlLCBpbnQgcGxhbmUp CkBAIC0xMDgwLDYgKzEyMDYsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0 YXRlID0gTlVMTDsKIAl1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzOwogCWNvbnN0IHVpbnQz Ml90ICpwbGFuZV9mb3JtYXRzOworCWNvbnN0IHVpbnQ2NF90ICptb2RpZmllcnM7CiAJdW5zaWdu ZWQgaW50IHN1cHBvcnRlZF9yb3RhdGlvbnM7CiAJaW50IG51bV9wbGFuZV9mb3JtYXRzOwogCWlu dCByZXQ7CkBAIC0xMTA2LDYgKzEyMzMsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCQlwbGFuZV9mb3JtYXRzID0gc2ts X3BsYW5lX2Zvcm1hdHM7CiAJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcGxh bmVfZm9ybWF0cyk7CisJCW1vZGlmaWVycyA9IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzOwog CX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZf cHJpdikpIHsKIAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IGZhbHNlOwogCQlpbnRlbF9wbGFu ZS0+bWF4X2Rvd25zY2FsZSA9IDE7CkBAIC0xMTE1LDYgKzEyNDMsNyBAQCBpbnRlbF9zcHJpdGVf cGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCQlwbGFu ZV9mb3JtYXRzID0gdmx2X3BsYW5lX2Zvcm1hdHM7CiAJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJS QVlfU0laRSh2bHZfcGxhbmVfZm9ybWF0cyk7CisJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9y bWF0X21vZGlmaWVyczsKIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewog CQlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkgewogCQkJaW50ZWxfcGxhbmUtPmNhbl9zY2Fs ZSA9IHRydWU7CkBAIC0xMTI5LDYgKzEyNTgsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCQlwbGFuZV9mb3JtYXRzID0g c25iX3BsYW5lX2Zvcm1hdHM7CiAJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRShzbmJf cGxhbmVfZm9ybWF0cyk7CisJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVy czsKIAl9IGVsc2UgewogCQlpbnRlbF9wbGFuZS0+Y2FuX3NjYWxlID0gdHJ1ZTsKIAkJaW50ZWxf cGxhbmUtPm1heF9kb3duc2NhbGUgPSAxNjsKQEAgLTExMzYsNiArMTI2Niw3IEBAIGludGVsX3Nw cml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlp bnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5lID0gZzR4X3VwZGF0ZV9wbGFuZTsKIAkJaW50ZWxfcGxh bmUtPmRpc2FibGVfcGxhbmUgPSBnNHhfZGlzYWJsZV9wbGFuZTsKIAorCQltb2RpZmllcnMgPSBp OXh4X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7CiAJCWlmIChJU19HRU42KGRldl9wcml2KSkgewog CQkJcGxhbmVfZm9ybWF0cyA9IHNuYl9wbGFuZV9mb3JtYXRzOwogCQkJbnVtX3BsYW5lX2Zvcm1h dHMgPSBBUlJBWV9TSVpFKHNuYl9wbGFuZV9mb3JtYXRzKTsKQEAgLTExNjgsMTUgKzEyOTksMTcg QEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlyZXQgPSBkcm1fdW5p dmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKLQkJ CQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAmaW50ZWxfcGxhbmVfZnVuY3MsCisJCQkJCSAgICAg ICBwb3NzaWJsZV9jcnRjcywgJmludGVsX3Nwcml0ZV9wbGFuZV9mdW5jcywKIAkJCQkJICAgICAg IHBsYW5lX2Zvcm1hdHMsIG51bV9wbGFuZV9mb3JtYXRzLAotCQkJCQkgICAgICAgTlVMTCwgRFJN X1BMQU5FX1RZUEVfT1ZFUkxBWSwKKwkJCQkJICAgICAgIG1vZGlmaWVycywKKwkJCQkJICAgICAg IERSTV9QTEFORV9UWVBFX09WRVJMQVksCiAJCQkJCSAgICAgICAicGxhbmUgJWQlYyIsIHBsYW5l ICsgMiwgcGlwZV9uYW1lKHBpcGUpKTsKIAllbHNlCiAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxh bmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJmludGVsX3BsYW5lLT5iYXNlLAotCQkJCQkgICAgICAg cG9zc2libGVfY3J0Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKKwkJCQkJICAgICAgIHBvc3NpYmxl X2NydGNzLCAmaW50ZWxfc3ByaXRlX3BsYW5lX2Z1bmNzLAogCQkJCQkgICAgICAgcGxhbmVfZm9y bWF0cywgbnVtX3BsYW5lX2Zvcm1hdHMsCi0JCQkJCSAgICAgICBOVUxMLCBEUk1fUExBTkVfVFlQ RV9PVkVSTEFZLAorCQkJCQkgICAgICAgbW9kaWZpZXJzLAorCQkJCQkgICAgICAgRFJNX1BMQU5F X1RZUEVfT1ZFUkxBWSwKIAkJCQkJICAgICAgICJzcHJpdGUgJWMiLCBzcHJpdGVfbmFtZShwaXBl LCBwbGFuZSkpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKLS0gCjIuMTMuMwoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==