From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: [PATCH 3/3] drm/i915: Add format modifiers for Intel Date: Tue, 2 May 2017 22:14:28 -0700 Message-ID: <20170503051428.4734-3-ben@bwidawsk.net> References: <20170503051428.4734-1-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170503051428.4734-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: DRI Development Cc: Intel GFX , "Kristian H . Kristensen" , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org VGhpcyB3YXMgYmFzZWQgb24gYSBwYXRjaCBvcmlnaW5hbGx5IGJ5IEtyaXN0aWFuLiBJdCBoYXMg YmVlbiBtb2RpZmllZApwcmV0dHkgaGVhdmlseSB0byB1c2UgdGhlIG5ldyBjYWxsYmFja3MgZnJv bSB0aGUgcHJldmlvdXMgcGF0Y2guCgp2MjoKICAtIEFkZCBMSU5FQVIgYW5kIFlmIG1vZGlmaWVy cyB0byBsaXN0IChWaWxsZSkKICAtIENvbWJpbmUgaTh4eCBhbmQgaTk2NSBpbnRvIG9uZSBsaXN0 IG9mIGZvcm1hdHMgKFZpbGxlKQogIC0gQWxsb3cgMTAxMDEwMiBmb3JtYXRzIGZvciBZL1lmIHRp bGVkIChWaWxsZSkKCnYzOgogIC0gSGFuZGxlIGN1cnNvciBmb3JtYXRzIChWaWxsZSkKICAtIFB1 dCBoYW5kbGluZyBmb3IgTElORUFSIGluIHRoZSBtb2Rfc3VwcG9ydCBmdW5jdGlvbnMgKFZpbGxl KQoKdjQ6CiAgLSBMaXN0IGVhY2ggbW9kaWZpZXIgZXhwbGljaXRseSBpbiBzdXBwb3J0ZWQgbW9k aWZpZXJzIChWaWxsZSkKICAtIEhhbmRsZSB0aGUgQ1VSU09SIHBsYW5lIChWaWxsZSkKCnY1Ogog IC0gU3BsaXQgb3V0IGN1cnNvciBhbmQgc3ByaXRlIGhhbmRsaW5nIChWaWxsZSkKCkNjOiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogS3Jpc3RpYW4g SC4gS3Jpc3RlbnNlbiA8aG9lZ3NiZXJnQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIFdp ZGF3c2t5IDxiZW5AYndpZGF3c2submV0PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyB8IDEzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgIDc2ICsrKysrKysrKysrKysrKysr KystCiAyIGZpbGVzIGNoYW5nZWQsIDIwMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBkNTJiZDA1YTAxN2QuLjE4YWFj NTM4ZDk3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNzIsNiArNzIs MTIgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGk5NjVfcHJpbWFyeV9mb3JtYXRzW10gPSB7CiAJ RFJNX0ZPUk1BVF9YQkdSMjEwMTAxMCwKIH07CiAKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBpOXh4 X2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwKKwlEUk1f Rk9STUFUX01PRF9MSU5FQVIsCisJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAorfTsKKwogc3RhdGlj IGNvbnN0IHVpbnQzMl90IHNrbF9wcmltYXJ5X2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX0M4 LAogCURSTV9GT1JNQVRfUkdCNTY1LApAQCAtODcsNiArOTMsMTQgQEAgc3RhdGljIGNvbnN0IHVp bnQzMl90IHNrbF9wcmltYXJ5X2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX1ZZVVksCiB9Owog CitzdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKKwlJOTE1 X0ZPUk1BVF9NT0RfWWZfVElMRUQsCisJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCisJSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQsCisJRFJNX0ZPUk1BVF9NT0RfTElORUFSLAorCURSTV9GT1JNQVRf TU9EX0lOVkFMSUQKK307CisKIC8qIEN1cnNvciBmb3JtYXRzICovCiBzdGF0aWMgY29uc3QgdWlu dDMyX3QgaW50ZWxfY3Vyc29yX2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX0FSR0I4ODg4LApA QCAtMTMzODEsNiArMTMzOTUsMTAzIEBAIHZvaWQgaW50ZWxfcGxhbmVfZGVzdHJveShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKIAlrZnJlZSh0b19pbnRlbF9wbGFuZShwbGFuZSkpOwogfQogCitz dGF0aWMgYm9vbCBpOHh4X21vZF9zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBt b2RpZmllcikKK3sKKwlzd2l0Y2ggKGZvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1BVF9DODoKKwlj YXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToKKwljYXNl IERSTV9GT1JNQVRfWFJHQjg4ODg6CisJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFUX01P RF9MSU5FQVIgfHwKKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOworCWRl ZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKK3N0YXRpYyBib29sIGk5NjVfbW9kX3N1 cHBvcnRlZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQoreworCXN3aXRjaCAo Zm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX0M4OgorCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6 CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoK KwljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAx MDEwOgorCQlyZXR1cm4gbW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8CisJCQlt b2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKKwlkZWZhdWx0OgorCQlyZXR1cm4g ZmFsc2U7CisJfQorfQorCitzdGF0aWMgYm9vbCBza2xfbW9kX3N1cHBvcnRlZCh1aW50MzJfdCBm b3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQoreworCXN3aXRjaCAoZm9ybWF0KSB7CisJY2FzZSBE Uk1fRk9STUFUX0M4OgorCQlzd2l0Y2ggKG1vZGlmaWVyKSB7CisJCWNhc2UgRFJNX0ZPUk1BVF9N T0RfTElORUFSOgorCQljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgorCQljYXNlIEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEOgorCQkJcmV0dXJuIHRydWU7CisJCWRlZmF1bHQ6CisJCQlyZXR1 cm4gZmFsc2U7CisJCX0KKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCWNhc2UgRFJNX0ZPUk1B VF9YUkdCODg4ODoKKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6CisJY2FzZSBEUk1fRk9STUFU X0FSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKKwljYXNlIERSTV9GT1JNQVRf WFJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgorCWNhc2UgRFJNX0ZP Uk1BVF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCWNhc2UgRFJNX0ZPUk1BVF9VWVZZ OgorCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQkvKiBBbGwgaTkxNSBtb2RpZmllcnMgYXJlIGZp bmUgKi8KKwkJc3dpdGNoIChtb2RpZmllcikgeworCQljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVB UjoKKwkJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKKwkJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRDoKKwkJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6CisJCQlyZXR1cm4g dHJ1ZTsKKwkJZGVmYXVsdDoKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCWRlZmF1bHQ6CisJCXJl dHVybiBmYWxzZTsKKwl9Cit9CisKK3N0YXRpYyBib29sIGludGVsX3ByaW1hcnlfcGxhbmVfZm9y bWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCQkgICAgIHVp bnQzMl90IGZvcm1hdCwKKwkJCQkJCSAgICAgdWludDY0X3QgbW9kaWZpZXIpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKKworCWlm IChXQVJOX09OKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0lOVkFMSUQpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCQlyZXR1cm4gc2tsX21v ZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CisJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA0KQorCQlyZXR1cm4gaTk2NV9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIp OworCWVsc2UKKwkJcmV0dXJuIGk4eHhfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsK KworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgaW50ZWxfY3Vyc29yX3BsYW5lX2Zv cm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkJICAgIHVp bnQzMl90IGZvcm1hdCwKKwkJCQkJCSAgICB1aW50NjRfdCBtb2RpZmllcikKK3sKKwlpZiAoV0FS Tl9PTihtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9JTlZBTElEKSkKKwkJcmV0dXJuIGZhbHNl OworCisJcmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiAmJiBmb3JtYXQg PT0gRFJNX0ZPUk1BVF9BUkdCODg4ODsKK30KKwogY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5j cyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKIAkudXBkYXRlX3BsYW5lID0gZHJtX2F0b21pY19oZWxw ZXJfdXBkYXRlX3BsYW5lLAogCS5kaXNhYmxlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfZGlz YWJsZV9wbGFuZSwKQEAgLTEzMzkwLDYgKzEzNTAxLDcgQEAgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKIAkuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGlu dGVsX3BsYW5lX2F0b21pY19zZXRfcHJvcGVydHksCiAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCiAJLmF0b21pY19kZXN0cm95X3N0YXRlID0g aW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKKwkuZm9ybWF0X21vZF9zdXBwb3J0ZWQgPSBpbnRl bF9wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAogfTsKIAogc3RhdGljIGludApA QCAtMTM1MjcsNiArMTM2MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5j cyBpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3MgPSB7CiAJLmF0b21pY19zZXRfcHJvcGVydHkgPSBp bnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAogCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl ID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9 IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCisJLmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50 ZWxfY3Vyc29yX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAogfTsKIAogc3RhdGljIHN0cnVj dCBpbnRlbF9wbGFuZSAqCkBAIC0xMzUzNyw2ICsxMzY1MCw3IEBAIGludGVsX3ByaW1hcnlfcGxh bmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBp cGUpCiAJY29uc3QgdWludDMyX3QgKmludGVsX3ByaW1hcnlfZm9ybWF0czsKIAl1bnNpZ25lZCBp bnQgc3VwcG9ydGVkX3JvdGF0aW9uczsKIAl1bnNpZ25lZCBpbnQgbnVtX2Zvcm1hdHM7CisJY29u c3QgdWludDY0X3QgKmludGVsX2Zvcm1hdF9tb2RpZmllcnM7CiAJaW50IHJldDsKIAogCXByaW1h cnkgPSBremFsbG9jKHNpemVvZigqcHJpbWFyeSksIEdGUF9LRVJORUwpOwpAQCAtMTM1NzUsMTgg KzEzNjg5LDIxIEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCiAJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewogCQlpbnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBza2xfcHJpbWFyeV9mb3JtYXRz OwogCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3ByaW1hcnlfZm9ybWF0cyk7CisJCWlu dGVsX2Zvcm1hdF9tb2RpZmllcnMgPSBza2xfZm9ybWF0X21vZGlmaWVyczsKIAogCQlwcmltYXJ5 LT51cGRhdGVfcGxhbmUgPSBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwogCQlwcmltYXJ5 LT5kaXNhYmxlX3BsYW5lID0gc2t5bGFrZV9kaXNhYmxlX3ByaW1hcnlfcGxhbmU7CiAJfSBlbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRz ID0gaTk2NV9wcmltYXJ5X2Zvcm1hdHM7CiAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShpOTY1 X3ByaW1hcnlfZm9ybWF0cyk7CisJCWludGVsX2Zvcm1hdF9tb2RpZmllcnMgPSBpOXh4X2Zvcm1h dF9tb2RpZmllcnM7CiAKIAkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0gaTl4eF91cGRhdGVfcHJp bWFyeV9wbGFuZTsKIAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJsZV9wcmlt YXJ5X3BsYW5lOwogCX0gZWxzZSB7CiAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk4eHhfcHJp bWFyeV9mb3JtYXRzOwogCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoaTh4eF9wcmltYXJ5X2Zv cm1hdHMpOworCQlpbnRlbF9mb3JtYXRfbW9kaWZpZXJzID0gaTl4eF9mb3JtYXRfbW9kaWZpZXJz OwogCiAJCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9IGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmU7 CiAJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsK QEAgLTEzNTk2LDIxICsxMzcxMywyMSBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCQlyZXQgPSBk cm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAog CQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5lX2Z1bmNzLAogCQkJCQkgICAgICAgaW50ZWxfcHJp bWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKLQkJCQkJICAgICAgIE5VTEwsCisJCQkJCSAgICAg ICBpbnRlbF9mb3JtYXRfbW9kaWZpZXJzLAogCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSwKIAkJCQkJICAgICAgICJwbGFuZSAxJWMiLCBwaXBlX25hbWUocGlwZSkpOwogCWVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJU19HNFgoZGV2X3ByaXYpKQogCQlyZXQg PSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNl LAogCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5lX2Z1bmNzLAogCQkJCQkgICAgICAgaW50ZWxf cHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKLQkJCQkJICAgICAgIE5VTEwsCisJCQkJCSAg ICAgICBpbnRlbF9mb3JtYXRfbW9kaWZpZXJzLAogCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSwKIAkJCQkJICAgICAgICJwcmltYXJ5ICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKIAll bHNlCiAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJnBy aW1hcnktPmJhc2UsCiAJCQkJCSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCiAJCQkJCSAg ICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAotCQkJCQkgICAgICAgTlVM TCwKKwkJCQkJICAgICAgIGludGVsX2Zvcm1hdF9tb2RpZmllcnMsCiAJCQkJCSAgICAgICBEUk1f UExBTkVfVFlQRV9QUklNQVJZLAogCQkJCQkgICAgICAgInBsYW5lICVjIiwgcGxhbmVfbmFtZShw cmltYXJ5LT5wbGFuZSkpOwogCWlmIChyZXQpCkBAIC0xMzc0Niw2ICsxMzg2MywxMSBAQCBpbnRl bF91cGRhdGVfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWludGVsX2Ny dGNfdXBkYXRlX2N1cnNvcihjcnRjLCBzdGF0ZSk7CiB9CiAKK3N0YXRpYyBjb25zdCB1aW50NjRf dCBjdXJzb3JfZm9ybWF0X21vZGlmaWVyc1tdID0geworCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwK KwlEUk1fRk9STUFUX01PRF9JTlZBTElECit9OworCiBzdGF0aWMgc3RydWN0IGludGVsX3BsYW5l ICoKIGludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIHsKQEAgLTEzNzgxLDcgKzEzOTAzLDggQEAgaW50ZWxf Y3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcGlwZSBwaXBlKQogCQkJCSAgICAgICAwLCAmaW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNzLAog CQkJCSAgICAgICBpbnRlbF9jdXJzb3JfZm9ybWF0cywKIAkJCQkgICAgICAgQVJSQVlfU0laRShp bnRlbF9jdXJzb3JfZm9ybWF0cyksCi0JCQkJICAgICAgIE5VTEwsIERSTV9QTEFORV9UWVBFX0NV UlNPUiwKKwkJCQkgICAgICAgY3Vyc29yX2Zvcm1hdF9tb2RpZmllcnMsCisJCQkJICAgICAgIERS TV9QTEFORV9UWVBFX0NVUlNPUiwKIAkJCQkgICAgICAgImN1cnNvciAlYyIsIHBpcGVfbmFtZShw aXBlKSk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYwppbmRleCAwNTM4MDJkZDA4YzEuLmU3YzVjMGE5NGJiZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN1cHBvcnQuCiAgKi8KICNpbmNs dWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgogI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+CiAjaW5j bHVkZSA8ZHJtL2RybV9yZWN0Lmg+CkBAIC0xMDMyLDYgKzEwMzMsMTIgQEAgc3RhdGljIGNvbnN0 IHVpbnQzMl90IGlsa19wbGFuZV9mb3JtYXRzW10gPSB7CiAJRFJNX0ZPUk1BVF9WWVVZLAogfTsK IAorc3RhdGljIGNvbnN0IHVpbnQ2NF90IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVyc1tdID0g eworCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAorCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwKKwlE Uk1fRk9STUFUX01PRF9JTlZBTElECit9OworCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgc25iX3Bs YW5lX2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX1hCR1I4ODg4LAogCURSTV9GT1JNQVRfWFJH Qjg4ODgsCkBAIC0xMDY3LDYgKzEwNzQsNjQgQEAgc3RhdGljIHVpbnQzMl90IHNrbF9wbGFuZV9m b3JtYXRzW10gPSB7CiAJRFJNX0ZPUk1BVF9WWVVZLAogfTsKIAorc3RhdGljIGNvbnN0IHVpbnQ2 NF90IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzW10gPSB7CisJSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVELAorCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVELAorCUk5MTVfRk9STUFUX01PRF9YX1RJ TEVELAorCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwKKwlEUk1fRk9STUFUX01PRF9JTlZBTElECit9 OworCitzdGF0aWMgYm9vbCBpbnRlbF9zcHJpdGVfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZm9ybWF0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1vZGlmaWVyKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7 CisKKwlpZiAoV0FSTl9PTihtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9JTlZBTElEKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJQlVHX09OKHBsYW5lLT5iYXNlLnR5cGUgIT0gRFJNX1BMQU5FX1RZ UEVfT1ZFUkxBWSk7CisKKwlzd2l0Y2ggKGZvcm1hdCkgeworCQljYXNlIERSTV9GT1JNQVRfWEJH UjIxMDEwMTA6CisJCWNhc2UgRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMDoKKwkJCWlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKKwkJCQlyZXR1cm4g dHJ1ZTsKKwkJCWJyZWFrOworCQljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCQljYXNlIERSTV9G T1JNQVRfQUJHUjg4ODg6CisJCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwkJCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkgfHwgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCisJCQkJcmV0dXJuIHRydWU7CisJCQlicmVhazsKKwkJY2FzZSBE Uk1fRk9STUFUX1hCR1I4ODg4OgorCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKKwkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCWJyZWFrOworCQljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJ CWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCQljYXNlIERSTV9GT1JNQVRfWVZZVToKKwkJY2FzZSBE Uk1fRk9STUFUX1VZVlk6CisJCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgorCQkJcmV0dXJuIHRydWU7 CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCitjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNz IGludGVsX3Nwcml0ZV9wbGFuZV9mdW5jcyA9IHsKKyAgICAgICAgLnVwZGF0ZV9wbGFuZSA9IGRy bV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKKyAgICAgICAgLmRpc2FibGVfcGxhbmUgPSBk cm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAorICAgICAgICAuZGVzdHJveSA9IGludGVs X3BsYW5lX2Rlc3Ryb3ksCisgICAgICAgIC5zZXRfcHJvcGVydHkgPSBkcm1fYXRvbWljX2hlbHBl cl9wbGFuZV9zZXRfcHJvcGVydHksCisgICAgICAgIC5hdG9taWNfZ2V0X3Byb3BlcnR5ID0gaW50 ZWxfcGxhbmVfYXRvbWljX2dldF9wcm9wZXJ0eSwKKyAgICAgICAgLmF0b21pY19zZXRfcHJvcGVy dHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAorICAgICAgICAuYXRvbWljX2R1 cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKKyAgICAgICAgLmF0 b21pY19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKKyAgICAgICAg LmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfc3ByaXRlX3BsYW5lX2Zvcm1hdF9tb2Rfc3Vw cG9ydGVkLAorfTsKKwogc3RydWN0IGludGVsX3BsYW5lICoKIGludGVsX3Nwcml0ZV9wbGFuZV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICBlbnVtIHBpcGUg cGlwZSwgaW50IHBsYW5lKQpAQCAtMTA3NSw2ICsxMTQwLDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpzdGF0ZSA9IE5VTEw7CiAJdW5zaWduZWQgbG9uZyBwb3NzaWJsZV9jcnRj czsKIAljb25zdCB1aW50MzJfdCAqcGxhbmVfZm9ybWF0czsKKwljb25zdCB1aW50NjRfdCAqbW9k aWZpZXJzOwogCXVuc2lnbmVkIGludCBzdXBwb3J0ZWRfcm90YXRpb25zOwogCWludCBudW1fcGxh bmVfZm9ybWF0czsKIAlpbnQgcmV0OwpAQCAtMTEwMSw2ICsxMTY3LDcgQEAgaW50ZWxfc3ByaXRl X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAkJcGxh bmVfZm9ybWF0cyA9IHNrbF9wbGFuZV9mb3JtYXRzOwogCQludW1fcGxhbmVfZm9ybWF0cyA9IEFS UkFZX1NJWkUoc2tsX3BsYW5lX2Zvcm1hdHMpOworCQltb2RpZmllcnMgPSBza2xfcGxhbmVfZm9y bWF0X21vZGlmaWVyczsKIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCWludGVsX3BsYW5lLT5jYW5fc2NhbGUgPSBmYWxz ZTsKIAkJaW50ZWxfcGxhbmUtPm1heF9kb3duc2NhbGUgPSAxOwpAQCAtMTExMCw2ICsxMTc3LDcg QEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAKIAkJcGxhbmVfZm9ybWF0cyA9IHZsdl9wbGFuZV9mb3JtYXRzOwogCQludW1fcGxh bmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUodmx2X3BsYW5lX2Zvcm1hdHMpOworCQltb2RpZmllcnMg PSBpOXh4X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7CiAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDcpIHsKIAkJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsKIAkJCWludGVs X3BsYW5lLT5jYW5fc2NhbGUgPSB0cnVlOwpAQCAtMTEyNCw2ICsxMTkyLDcgQEAgaW50ZWxfc3By aXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAkJ cGxhbmVfZm9ybWF0cyA9IHNuYl9wbGFuZV9mb3JtYXRzOwogCQludW1fcGxhbmVfZm9ybWF0cyA9 IEFSUkFZX1NJWkUoc25iX3BsYW5lX2Zvcm1hdHMpOworCQltb2RpZmllcnMgPSBpOXh4X3BsYW5l X2Zvcm1hdF9tb2RpZmllcnM7CiAJfSBlbHNlIHsKIAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9 IHRydWU7CiAJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMTY7CkBAIC0xMTMxLDYgKzEy MDAsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IGlsa191cGRhdGVfcGxh bmU7CiAJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lID0gaWxrX2Rpc2FibGVfcGxhbmU7CiAK KwkJbW9kaWZpZXJzID0gaTl4eF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzOwogCQlpZiAoSVNfR0VO NihkZXZfcHJpdikpIHsKIAkJCXBsYW5lX2Zvcm1hdHMgPSBzbmJfcGxhbmVfZm9ybWF0czsKIAkJ CW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRShzbmJfcGxhbmVfZm9ybWF0cyk7CkBAIC0x MTY1LDEzICsxMjM1LDE1IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQo JmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKIAkJCQkJICAgICAgIHBvc3NpYmxl X2NydGNzLCAmaW50ZWxfcGxhbmVfZnVuY3MsCiAJCQkJCSAgICAgICBwbGFuZV9mb3JtYXRzLCBu dW1fcGxhbmVfZm9ybWF0cywKLQkJCQkJICAgICAgIE5VTEwsIERSTV9QTEFORV9UWVBFX09WRVJM QVksCisJCQkJCSAgICAgICBtb2RpZmllcnMsCisJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9P VkVSTEFZLAogCQkJCQkgICAgICAgInBsYW5lICVkJWMiLCBwbGFuZSArIDIsIHBpcGVfbmFtZShw aXBlKSk7CiAJZWxzZQogCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2 LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKIAkJCQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAm aW50ZWxfcGxhbmVfZnVuY3MsCiAJCQkJCSAgICAgICBwbGFuZV9mb3JtYXRzLCBudW1fcGxhbmVf Zm9ybWF0cywKLQkJCQkJICAgICAgIE5VTEwsIERSTV9QTEFORV9UWVBFX09WRVJMQVksCisJCQkJ CSAgICAgICBtb2RpZmllcnMsCisJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9PVkVSTEFZLAog CQkJCQkgICAgICAgInNwcml0ZSAlYyIsIHNwcml0ZV9uYW1lKHBpcGUsIHBsYW5lKSk7CiAJaWYg KHJldCkKIAkJZ290byBmYWlsOwotLSAKMi4xMi4yCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK