From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 8/8] drm/amdgpu/psp: add psp memory training implementation Date: Tue, 8 Oct 2019 14:29:34 -0500 Message-ID: <20191008192934.5481-9-alexander.deucher@amd.com> References: <20191008192934.5481-1-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191008192934.5481-1-alexander.deucher-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: Alex Deucher , "Tianci.Yin" RnJvbTogIlRpYW5jaS5ZaW4iIDx0aWFuY2kueWluQGFtZC5jb20+CgphZGQgbWVtb3J5IHRyYWlu aW5nIGltcGxlbWVudGF0aW9uIGNvZGUgdG8gc2F2ZSByZXN1bWUgdGltZS4KCkNoYW5nZS1JZDog STYyNTc5NGE3ODBiMTFkODI0YWI1N2VmMzljYzMzYjg3MmM2ZGM2YzkKUmV2aWV3ZWQtYnk6IEFs ZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogVGlh bmNpLllpbiA8dGlhbmNpLnlpbkBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdS5oICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZHJ2LmMgfCAgIDkgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTFfMC5j ICB8IDE3MSArKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTgxIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCmluZGV4IGVlYjZiNjI4 MmZjZS4uYTNmZDQ5OGJiYmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaApAQCAt MTUwLDYgKzE1MCw3IEBAIGV4dGVybiB1aW50IGFtZGdwdV9zZG1hX3BoYXNlX3F1YW50dW07CiBl eHRlcm4gY2hhciAqYW1kZ3B1X2Rpc2FibGVfY3U7CiBleHRlcm4gY2hhciAqYW1kZ3B1X3ZpcnR1 YWxfZGlzcGxheTsKIGV4dGVybiB1aW50IGFtZGdwdV9wcF9mZWF0dXJlX21hc2s7CitleHRlcm4g dWludCBhbWRncHVfZm9yY2VfbG9uZ190cmFpbmluZzsKIGV4dGVybiBpbnQgYW1kZ3B1X2pvYl9o YW5nX2xpbWl0OwogZXh0ZXJuIGludCBhbWRncHVfbGJwdzsKIGV4dGVybiBpbnQgYW1kZ3B1X2Nv bXB1dGVfbXVsdGlwaXBlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCmlu ZGV4IGQ4OTJiNzQ4MWQwMC4uYTg4ZWE3NGNhMjIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Rydi5jCkBAIC0xMjcsNiArMTI3LDcgQEAgY2hhciAqYW1kZ3B1X2Rpc2FibGVf Y3UgPSBOVUxMOwogY2hhciAqYW1kZ3B1X3ZpcnR1YWxfZGlzcGxheSA9IE5VTEw7CiAvKiBPdmVy RHJpdmUoYml0IDE0KSBkaXNhYmxlZCBieSBkZWZhdWx0Ki8KIHVpbnQgYW1kZ3B1X3BwX2ZlYXR1 cmVfbWFzayA9IDB4ZmZmZmJmZmY7Cit1aW50IGFtZGdwdV9mb3JjZV9sb25nX3RyYWluaW5nID0g MDsKIGludCBhbWRncHVfam9iX2hhbmdfbGltaXQgPSAwOwogaW50IGFtZGdwdV9sYnB3ID0gLTE7 CiBpbnQgYW1kZ3B1X2NvbXB1dGVfbXVsdGlwaXBlID0gLTE7CkBAIC0zODksNiArMzkwLDE0IEBA IG1vZHVsZV9wYXJhbV9uYW1lZChzY2hlZF9od19zdWJtaXNzaW9uLCBhbWRncHVfc2NoZWRfaHdf c3VibWlzc2lvbiwgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MocHBmZWF0dXJlbWFzaywg ImFsbCBwb3dlciBmZWF0dXJlcyBlbmFibGVkIChkZWZhdWx0KSkiKTsKIG1vZHVsZV9wYXJhbV9u YW1lZChwcGZlYXR1cmVtYXNrLCBhbWRncHVfcHBfZmVhdHVyZV9tYXNrLCB1aW50LCAwNDQ0KTsK IAorLyoqCisgKiBET0M6IGZvcmNlbG9uZ3RyYWluaW5nICh1aW50KQorICogRm9yY2UgbG9uZyBt ZW1vcnkgdHJhaW5pbmcgaW4gcmVzdW1lLgorICogVGhlIGRlZmF1bHQgaXMgemVybywgaW5kaWNh dGVzIHNob3J0IHRyYWluaW5nIGluIHJlc3VtZS4KKyAqLworTU9EVUxFX1BBUk1fREVTQyhmb3Jj ZWxvbmd0cmFpbmluZywgImZvcmNlIG1lbW9yeSBsb25nIHRyYWluaW5nIik7Cittb2R1bGVfcGFy YW1fbmFtZWQoZm9yY2Vsb25ndHJhaW5pbmcsIGFtZGdwdV9mb3JjZV9sb25nX3RyYWluaW5nLCB1 aW50LCAwNDQ0KTsKKwogLyoqCiAgKiBET0M6IHBjaWVfZ2VuX2NhcCAodWludCkKICAqIE92ZXJy aWRlIFBDSUUgZ2VuIHNwZWVkIGNhcGFiaWxpdGllcy4gU2VlIHRoZSBDQUlMIGZsYWdzIGluIGRy aXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9hbWRfcGNpZS5oLgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9wc3BfdjExXzAuYwppbmRleCBlNzRhOTUyYTNmN2MuLjIzOTE1NjUzYTI3OCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMV8wLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMV8wLmMKQEAgLTkwMiw2ICs5MDIsMTc0IEBAIHN0 YXRpYyBpbnQgcHNwX3YxMV8wX3JsY19hdXRvbG9hZF9zdGFydChzdHJ1Y3QgcHNwX2NvbnRleHQg KnBzcCkKIAlyZXR1cm4gcHNwX3JsY19hdXRvbG9hZF9zdGFydChwc3ApOwogfQogCitzdGF0aWMg aW50IHBzcF92MTFfMF9tZW1vcnlfdHJhaW5pbmdfc2VuZF9tc2coc3RydWN0IHBzcF9jb250ZXh0 ICpwc3AsIGludCBtc2cpCit7CisJaW50IHJldCA9IDA7CisJaW50IGkgPSAwOworCXVpbnQzMl90 IGRhdGFfMzIgPSAwOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcHNwLT5hZGV2Owor CisJZGF0YV8zMiA9IChwc3AtPm1lbV90cmFpbl9jdHguYzJwX3RyYWluX2RhdGFfb2Zmc2V0ID4+ IDIwKTsKKwlXUkVHMzJfU09DMTUoTVAwLCAwLCBtbU1QMF9TTU5fQzJQTVNHXzM2LCBkYXRhXzMy KTsKKwlXUkVHMzJfU09DMTUoTVAwLCAwLCBtbU1QMF9TTU5fQzJQTVNHXzM1LCBtc2cpOworCisJ LyptYXggNXMqLworCXdoaWxlIChpIDwgNTApIHsKKwkJcmV0ID0gcHNwX3dhaXRfZm9yKHBzcCwg U09DMTVfUkVHX09GRlNFVChNUDAsIDAsIG1tTVAwX1NNTl9DMlBNU0dfMzUpLAorCQkJCSAgIDB4 ODAwMDAwMDAsIDB4ODAwMDAwMDAsIGZhbHNlKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJYnJlYWs7 CisJCWkrKzsKKwl9CisJRFJNX0RFQlVHKCIlcyB0cmFpbmluZyAlcywgY29zdCAlZCAqICVkbXMu XG4iLAorCQkgIChtc2cgPT0gUFNQX0JMX19EUkFNX1NIT1JUX1RSQUlOKSA/ICJzaG9ydCIgOiAi bG9uZyIsCisJCSAgKHJldCA9PSAwKSA/ICJzdWNjZWVkIiA6ICJmYWlsZWQiLAorCQkgIGksIGFk ZXYtPnVzZWNfdGltZW91dC8xMDAwKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHBz cF92MTFfMF9tZW1vcnlfdHJhaW5pbmdfZmluaShzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkKK3sK KwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3QgcHNwX21lbW9yeV90cmFpbmluZ19jb250ZXh0ICpjdHgg PSAmcHNwLT5tZW1fdHJhaW5fY3R4OworCisJY3R4LT5pbml0ID0gUFNQX01FTV9UUkFJTl9OT1Rf U1VQUE9SVDsKKwlpZihjdHgtPnN5c19jYWNoZSkgeworCQlrZnJlZShjdHgtPnN5c19jYWNoZSk7 CisJCWN0eC0+c3lzX2NhY2hlID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50IHBzcF92MTFfMF9tZW1vcnlfdHJhaW5pbmdfaW5pdChzdHJ1Y3QgcHNwX2NvbnRleHQg KnBzcCkKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3QgcHNwX21lbW9yeV90cmFpbmluZ19jb250 ZXh0ICpjdHggPSAmcHNwLT5tZW1fdHJhaW5fY3R4OworCisJaWYoY3R4LT5pbml0ICE9IFBTUF9N RU1fVFJBSU5fUkVTRVJWRV9TVUNDRVNTKSB7CisJCURSTV9ERUJVRygibWVtb3J5IHRyYWluaW5n IGRvZXMgbm90IHN1cHBvcnQhXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJY3R4LT5zeXNfY2Fj aGUgPSBremFsbG9jKGN0eC0+dHJhaW5fZGF0YV9zaXplLCBHRlBfS0VSTkVMKTsKKwlpZihjdHgt PnN5c19jYWNoZSA9PSBOVUxMKSB7CisJCURSTV9FUlJPUigiYWxsb2MgbWVtX3RyYWluX2N0eC5z eXNfY2FjaGUgZmFpbGVkKCVkKSFcbiIsIHJldCk7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8g ZXJyX291dDsKKwl9CisKKwlEUk1fREVCVUcoInRyYWluX2RhdGFfc2l6ZTolbGx4LHAyY190cmFp bl9kYXRhX29mZnNldDolbGx4LGMycF90cmFpbl9kYXRhX29mZnNldDolbGx4LlxuIiwKKwkJICBj dHgtPnRyYWluX2RhdGFfc2l6ZSwKKwkJICBjdHgtPnAyY190cmFpbl9kYXRhX29mZnNldCwKKwkJ ICBjdHgtPmMycF90cmFpbl9kYXRhX29mZnNldCk7CisJY3R4LT5pbml0ID0gUFNQX01FTV9UUkFJ Tl9JTklUX1NVQ0NFU1M7CisJcmV0dXJuIDA7CisKK2Vycl9vdXQ6CisJcHNwX3YxMV8wX21lbW9y eV90cmFpbmluZ19maW5pKHBzcCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIHNhdmUgYW5k IHJlc3RvcmUgcHJvY2VzCisgKi8KK3N0YXRpYyBpbnQgcHNwX3YxMV8wX21lbW9yeV90cmFpbmlu ZyhzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCwgdWludDMyX3Qgb3BzKQoreworCWludCByZXQgPSAw OworCXVpbnQzMl90IHAyY19oZWFkZXJbNF07CisJc3RydWN0IHBzcF9tZW1vcnlfdHJhaW5pbmdf Y29udGV4dCAqY3R4ID0gJnBzcC0+bWVtX3RyYWluX2N0eDsKKwl1aW50MzJfdCAqcGNhY2hlID0g KHVpbnQzMl90KiljdHgtPnN5c19jYWNoZTsKKworCWlmIChjdHgtPmluaXQgPT0gUFNQX01FTV9U UkFJTl9OT1RfU1VQUE9SVCkgeworCQlEUk1fREVCVUcoIk1lbW9yeSB0cmFpbmluZyBkb2VzIG5v dCBzdXBwb3J0LlxuIik7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoY3R4LT5pbml0ICE9IFBT UF9NRU1fVFJBSU5fSU5JVF9TVUNDRVNTKSB7CisJCURSTV9FUlJPUigiUGxlYXNlIGNoZWNrIGlu aXRpYWxpemF0aW9uIGZhaWx1cmUuXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYg KHBzcF92MTFfMF9pc19zb3NfYWxpdmUocHNwKSkgeworCQlEUk1fREVCVUcoInNvcyBpcyBhbGl2 ZSwgc2tpcCBtZW1vcnkgdHJhaW5pbmcuXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0ID0g YW1kZ3B1X2RldmljZV92cmFtX2FjY2Vzcyhwc3AtPmFkZXYsIGN0eC0+cDJjX3RyYWluX2RhdGFf b2Zmc2V0LCBwMmNfaGVhZGVyLCBzaXplb2YocDJjX2hlYWRlciksIGZhbHNlKTsKKwlpZiAocmV0 KSB7CisJCURSTV9FUlJPUigicmVhZCBwMmMgaGVhZGVyIGZhaWxlZC5cbiIpOworCQlyZXR1cm4g cmV0OworCX0KKwlEUk1fREVCVUcoInN5c19jYWNoZVslMDh4LCUwOHgsJTA4eCwlMDh4XSBwMmNf aGVhZGVyWyUwOHgsJTA4eCwlMDh4LCUwOHhdXG4iLAorCQkgIHBjYWNoZVswXSwgcGNhY2hlWzFd LCBwY2FjaGVbMl0sIHBjYWNoZVszXSwKKwkJICBwMmNfaGVhZGVyWzBdLCBwMmNfaGVhZGVyWzFd LCBwMmNfaGVhZGVyWzJdLCBwMmNfaGVhZGVyWzNdKTsKKworCWlmIChvcHMgJiBQU1BfTUVNX1RS QUlOX1NFTkRfU0hPUlRfTVNHKSB7CisJCURSTV9ERUJVRygic2hvcnQgdHJhaW5pbmcgZGVwZW5k IG9uIHJlc3RvcmUuXG4iKTsKKwkJb3BzIHw9IFBTUF9NRU1fVFJBSU5fUkVTVE9SRTsKKwl9CisK KwlpZiAoKG9wcyAmIFBTUF9NRU1fVFJBSU5fUkVTVE9SRSkgJiYKKwkgICAgcGNhY2hlWzBdICE9 IE1FTV9UUkFJTl9TWVNURU1fU0lHTkFUVVJFKSB7CisJCURSTV9ERUJVRygic3lzX2NhY2hlWzBd IGlzIGludmFsaWQsIHJlc3RvcmUgZGVwZW5kIG9uIHNhdmUuXG4iKTsKKwkJb3BzIHw9IFBTUF9N RU1fVFJBSU5fU0FWRTsKKwl9CisKKwlpZiAocDJjX2hlYWRlclswXSA9PSBNRU1fVFJBSU5fU1lT VEVNX1NJR05BVFVSRSAmJgorCSAgICAhKHBjYWNoZVswXSA9PSBNRU1fVFJBSU5fU1lTVEVNX1NJ R05BVFVSRSAmJgorCSAgICAgIHBjYWNoZVszXSA9PSBwMmNfaGVhZGVyWzNdKSkgeworCQlEUk1f REVCVUcoInN5c19jYWNoZSBpcyBpbnZhbGlkIG9yIG91dC1vZi1kYXRlLCBuZWVkIHNhdmUgdHJh aW5pbmcgZGF0YSB0byBzeXNfY2FjaGUuXG4iKTsKKwkJb3BzIHw9IFBTUF9NRU1fVFJBSU5fU0FW RTsKKwl9CisKKwlpZiAoKG9wcyAmIFBTUF9NRU1fVFJBSU5fU0FWRSkgJiYKKwkgICAgcDJjX2hl YWRlclswXSAhPSBNRU1fVFJBSU5fU1lTVEVNX1NJR05BVFVSRSkgeworCQlEUk1fREVCVUcoInAy Y19oZWFkZXJbMF0gaXMgaW52YWxpZCwgc2F2ZSBkZXBlbmQgb24gbG9uZyB0cmFpbmluZy5cbiIp OworCQlvcHMgfD0gUFNQX01FTV9UUkFJTl9TRU5EX0xPTkdfTVNHOworCX0KKworCWlmIChvcHMg JiBQU1BfTUVNX1RSQUlOX1NFTkRfTE9OR19NU0cpIHsKKwkJb3BzICY9IH5QU1BfTUVNX1RSQUlO X1NFTkRfU0hPUlRfTVNHOworCQlvcHMgfD0gUFNQX01FTV9UUkFJTl9TQVZFOworCX0KKworCURS TV9ERUJVRygibWVtIHRyYWluaW5nIG9wczoleC5cbiIsIG9wcyk7CisKKwlpZiAob3BzICYgUFNQ X01FTV9UUkFJTl9TRU5EX0xPTkdfTVNHKSB7CisJCXJldCA9IHBzcF92MTFfMF9tZW1vcnlfdHJh aW5pbmdfc2VuZF9tc2cocHNwLCBQU1BfQkxfX0RSQU1fTE9OR19UUkFJTik7CisJCWlmIChyZXQp IHsKKwkJCURSTV9FUlJPUigic2VuZCBsb25nIHRyYWluaW5nIG1zZyBmYWlsZWQuXG4iKTsKKwkJ CXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlpZiAob3BzICYgUFNQX01FTV9UUkFJTl9TQVZFKSB7 CisJCXJldCA9IGFtZGdwdV9kZXZpY2VfdnJhbV9hY2Nlc3MocHNwLT5hZGV2LCBjdHgtPnAyY190 cmFpbl9kYXRhX29mZnNldCwgY3R4LT5zeXNfY2FjaGUsIGN0eC0+dHJhaW5fZGF0YV9zaXplLCBm YWxzZSk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigicmVhZCB0cmFpbmluZyBkYXRhIGZy b20gdnJhbSBmYWlsZWQuXG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlpZiAob3Bz ICYgUFNQX01FTV9UUkFJTl9SRVNUT1JFKSB7CisJCXJldCA9IGFtZGdwdV9kZXZpY2VfdnJhbV9h Y2Nlc3MocHNwLT5hZGV2LCBjdHgtPmMycF90cmFpbl9kYXRhX29mZnNldCwgY3R4LT5zeXNfY2Fj aGUsIGN0eC0+dHJhaW5fZGF0YV9zaXplLCB0cnVlKTsKKwkJaWYgKHJldCkgeworCQkJRFJNX0VS Uk9SKCJ3cml0ZSB0cmFpbmluZyBkYXRhIHRvIHZyYW0gZmFpbGVkLlxuIik7CisJCQlyZXR1cm4g cmV0OworCQl9CisJfQorCisJaWYgKG9wcyAmIFBTUF9NRU1fVFJBSU5fU0VORF9TSE9SVF9NU0cp IHsKKwkJcmV0ID0gcHNwX3YxMV8wX21lbW9yeV90cmFpbmluZ19zZW5kX21zZyhwc3AsIChhbWRn cHVfZm9yY2VfbG9uZ190cmFpbmluZyA+IDApID8KKwkJCQkJCQkgUFNQX0JMX19EUkFNX0xPTkdf VFJBSU4gOiBQU1BfQkxfX0RSQU1fU0hPUlRfVFJBSU4pOworCQlpZiAocmV0KSB7CisJCQlEUk1f RVJST1IoInNlbmQgdHJhaW5pbmcgbXNnIGZhaWxlZC5cbiIpOworCQkJcmV0dXJuIHJldDsKKwkJ fQorCX0KKwljdHgtPnRyYWluaW5nX2NudCsrOworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgcHNwX2Z1bmNzIHBzcF92MTFfMF9mdW5jcyA9IHsKIAkuaW5pdF9taWNyb2Nv ZGUgPSBwc3BfdjExXzBfaW5pdF9taWNyb2NvZGUsCiAJLmJvb3Rsb2FkZXJfbG9hZF9rZGIgPSBw c3BfdjExXzBfYm9vdGxvYWRlcl9sb2FkX2tkYiwKQEAgLTkyMiw2ICsxMDkwLDkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBwc3BfZnVuY3MgcHNwX3YxMV8wX2Z1bmNzID0gewogCS5yYXNfdHJpZ2dl cl9lcnJvciA9IHBzcF92MTFfMF9yYXNfdHJpZ2dlcl9lcnJvciwKIAkucmFzX2N1cmVfcG9zaW9u ID0gcHNwX3YxMV8wX3Jhc19jdXJlX3Bvc2lvbiwKIAkucmxjX2F1dG9sb2FkX3N0YXJ0ID0gcHNw X3YxMV8wX3JsY19hdXRvbG9hZF9zdGFydCwKKwkubWVtX3RyYWluaW5nX2luaXQgPSBwc3BfdjEx XzBfbWVtb3J5X3RyYWluaW5nX2luaXQsCisJLm1lbV90cmFpbmluZ19maW5pID0gcHNwX3YxMV8w X21lbW9yeV90cmFpbmluZ19maW5pLAorCS5tZW1fdHJhaW5pbmcgPSBwc3BfdjExXzBfbWVtb3J5 X3RyYWluaW5nLAogfTsKIAogdm9pZCBwc3BfdjExXzBfc2V0X3BzcF9mdW5jcyhzdHJ1Y3QgcHNw X2NvbnRleHQgKnBzcCkKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9hbWQtZ2Z4