From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 3/3] drm/i915: Add format modifiers for Intel Date: Wed, 29 Mar 2017 15:11:26 -0700 Message-ID: <20170329221125.GA445@mail.bwidawsk.net> References: <20170324212950.2206-1-ben@bwidawsk.net> <20170324212950.2206-3-ben@bwidawsk.net> <20170329201713.GC30290@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170329201713.GC30290@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?utf-8?B?U3lyasOkbMOk?= Cc: Intel GFX , "Kristian H . Kristensen" , DRI Development List-Id: intel-gfx@lists.freedesktop.org T24gMTctMDMtMjkgMjM6MTc6MTMsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPk9uIEZyaSwgTWFy IDI0LCAyMDE3IGF0IDAyOjI5OjUwUE0gLTA3MDAsIEJlbiBXaWRhd3NreSB3cm90ZToKPj4gVGhp cyB3YXMgYmFzZWQgb24gYSBwYXRjaCBvcmlnaW5hbGx5IGJ5IEtyaXN0aWFuLiBJdCBoYXMgYmVl biBtb2RpZmllZAo+PiBwcmV0dHkgaGVhdmlseSB0byB1c2UgdGhlIG5ldyBjYWxsYmFja3MgZnJv bSB0aGUgcHJldmlvdXMgcGF0Y2guCj4+Cj4+IHYyOgo+PiAgIC0gQWRkIExJTkVBUiBhbmQgWWYg bW9kaWZpZXJzIHRvIGxpc3QgKFZpbGxlKQo+PiAgIC0gQ29tYmluZSBpOHh4IGFuZCBpOTY1IGlu dG8gb25lIGxpc3Qgb2YgZm9ybWF0cyAoVmlsbGUpCj4+ICAgLSBBbGxvdyAxMDEwMTAyIGZvcm1h dHMgZm9yIFkvWWYgdGlsZWQgKFZpbGxlKQo+Pgo+PiB2MzoKPj4gICAtIEhhbmRsZSBjdXJzb3Ig Zm9ybWF0cyAoVmlsbGUpCj4+ICAgLSBQdXQgaGFuZGxpbmcgZm9yIExJTkVBUiBpbiB0aGUgbW9k X3N1cHBvcnQgZnVuY3Rpb25zIChWaWxsZSkKPj4KPj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBLcmlzdGlhbiBILiBLcmlzdGVuc2Vu IDxob2Vnc2JlcmdAZ21haWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJl bkBid2lkYXdzay5uZXQ+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgMjUgKysrKysrKy0KPj4gIDIgZmls ZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggODAyYTg0NDljNWQzLi5iYjU1OWEx MTZmZGEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gQEAgLTcy LDYgKzcyLDEyIEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBpOTY1X3ByaW1hcnlfZm9ybWF0c1td ID0gewo+PiAgCURSTV9GT1JNQVRfWEJHUjIxMDEwMTAsCj4+ICB9Owo+Pgo+PiArc3RhdGljIGNv bnN0IHVpbnQ2NF90IGk5eHhfZm9ybWF0X21vZGlmaWVyc1tdID0gewo+PiArCUk5MTVfRk9STUFU X01PRF9YX1RJTEVELAo+PiArCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwKPj4gKwlEUk1fRk9STUFU X01PRF9JTlZBTElECj4+ICt9Owo+PiArCj4+ICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc2tsX3By aW1hcnlfZm9ybWF0c1tdID0gewo+PiAgCURSTV9GT1JNQVRfQzgsCj4+ICAJRFJNX0ZPUk1BVF9S R0I1NjUsCj4+IEBAIC04Nyw2ICs5MywxNCBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qgc2tsX3By aW1hcnlfZm9ybWF0c1tdID0gewo+PiAgCURSTV9GT1JNQVRfVllVWSwKPj4gIH07Cj4+Cj4+ICtz dGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKPj4gKwlJOTE1 X0ZPUk1BVF9NT0RfWWZfVElMRUQsCj4+ICsJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCj4+ICsJ STkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCj4+ICsJRFJNX0ZPUk1BVF9NT0RfTElORUFSLAo+PiAr CURSTV9GT1JNQVRfTU9EX0lOVkFMSUQKPj4gK307Cj4+ICsKPj4gIC8qIEN1cnNvciBmb3JtYXRz ICovCj4+ICBzdGF0aWMgY29uc3QgdWludDMyX3QgaW50ZWxfY3Vyc29yX2Zvcm1hdHNbXSA9IHsK Pj4gIAlEUk1fRk9STUFUX0FSR0I4ODg4LAo+PiBAQCAtMTM0NTMsNiArMTM0NjcsODMgQEAgdm9p ZCBpbnRlbF9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+PiAgCWtmcmVl KHRvX2ludGVsX3BsYW5lKHBsYW5lKSk7Cj4+ICB9Cj4+Cj4+ICtzdGF0aWMgYm9vbCBpOHh4X21v ZF9zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikKPj4gK3sKPj4g Kwlzd2l0Y2ggKGZvcm1hdCkgewo+PiArCWNhc2UgRFJNX0ZPUk1BVF9DODoKPj4gKwljYXNlIERS TV9GT1JNQVRfUkdCNTY1Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToKPj4gKwljYXNl IERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4+ICsJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFU X01PRF9MSU5FQVIgfHwKPj4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVE Owo+PiArCWRlZmF1bHQ6Cj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwl9Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBib29sIGk5NjVfbW9kX3N1cHBvcnRlZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90 IG1vZGlmaWVyKQo+PiArewo+PiArCXN3aXRjaCAoZm9ybWF0KSB7Cj4+ICsJY2FzZSBEUk1fRk9S TUFUX0M4Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4+ICsJY2FzZSBEUk1fRk9STUFU X1hSR0I4ODg4Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPj4gKwljYXNlIERSTV9G T1JNQVRfWFJHQjIxMDEwMTA6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgo+PiAr CQlyZXR1cm4gbW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8Cj4+ICsJCQltb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPj4gKwlkZWZhdWx0Ogo+PiArCQlyZXR1 cm4gZmFsc2U7Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBza2xfbW9kX3N1cHBv cnRlZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQo+PiArewo+PiArCXN3aXRj aCAoZm9ybWF0KSB7Cj4+ICsJY2FzZSBEUk1fRk9STUFUX0M4Ogo+PiArCQlyZXR1cm4gbW9kaWZp ZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8Cj4+ICsJCQkobW9kaWZpZXIgPj0gSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQgJiYKPj4gKwkJCSBtb2RpZmllciA8IEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRCk7Cj4KPlRoZSA+PSBzdHVmZiBtYWtlcyB0aGlzIGhhcmRlciB0byBwYXJzZSB0aGFu IGl0IHNob3VsZCBiZSBJTU8uCj5JJ2QganVzdCBsaXN0IGVhY2ggbW9kaWZpZXIgZXhwbGljaXRs eS4KPgo+PiArCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1hS R0I4ODg4Ogo+PiArCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPj4gKwljYXNlIERSTV9GT1JN QVRfQVJHQjg4ODg6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+PiArCWNhc2UgRFJN X0ZPUk1BVF9YUkdCMjEwMTAxMDoKPj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6Cj4+ ICsJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPj4gKwkJCSht b2RpZmllciA+PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCAmJgo+PiArCQkJbW9kaWZpZXIgPD0g STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKTsKPgo+ZGl0dG8uIEF0IGZpcnN0IEkgY291bGRuJ3Qg ZXZlbiBzcG90IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQKPnRoZSBDOCBjYXNlLgo+ CgpPa2F5LCBnb3QgdGhvc2UgYm90aC4gSSB0aGluayBmb3Igbm93IGl0J3MganVzdDoKICAgICAg ICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9DODoKICAgICAgICAg ICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKICAgICAgICAgICAgICAgIGNhc2UgRFJNX0ZPUk1B VF9NT0RfTElORUFSOgogICAgICAgICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxF RDoKICAgICAgICAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6CiAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAg ICAgIGNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6CiAgICAgICAgY2FzZSBEUk1fRk9STUFUX1hSR0I4 ODg4OgogICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKICAgICAgICBjYXNlIERSTV9G T1JNQVRfQVJHQjg4ODg6CiAgICAgICAgY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4OgogICAgICAg IGNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKICAgICAgICBjYXNlIERSTV9GT1JNQVRfWEJH UjIxMDEwMTA6CiAgICAgICAgY2FzZSBEUk1fRk9STUFUX1lVWVY6CiAgICAgICAgY2FzZSBEUk1f Rk9STUFUX1lWWVU6CiAgICAgICAgY2FzZSBEUk1fRk9STUFUX1VZVlk6CiAgICAgICAgY2FzZSBE Uk1fRk9STUFUX1ZZVVk6CiAgICAgICAgICAgICAgICAvKiBBbGwgaTkxNSBtb2RpZmllcnMgYXJl IGZpbmUgKi8KICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKICAgICAgICAgICAg ICAgIGNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOgogICAgICAgICAgICAgICAgY2FzZSBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRDoKICAgICAgICAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQ6CiAgICAgICAgICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoK ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICBkZWZh dWx0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg ICB9CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg ICB9CgoKCj4+ICsJY2FzZSBEUk1fRk9STUFUX1lVWVY6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1lW WVU6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1VZVlk6Cj4+ICsJY2FzZSBEUk1fRk9STUFUX1ZZVVk6 Cj4+ICsJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVI7Cj4KPkFueSBt b2RpZmllciB3aWxsIGRvIGZvciB0aGVzZSBmb3JtYXRzLgo+CgpPb3BzLCB0aGFua3MuIFNlZSBh Ym92ZS4KCj4+ICsJZGVmYXVsdDoKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gKwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgYm9vbCBpbnRlbF9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gKwkJCQkJICAgICB1aW50MzJfdCBmb3JtYXQsCj4+ ICsJCQkJCSAgICAgdWludDY0X3QgbW9kaWZpZXIpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKPj4gKwo+PiArCWlmIChX QVJOX09OKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0lOVkFMSUQpKQo+PiArCQlyZXR1cm4g ZmFsc2U7Cj4+ICsKPj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiArCQlyZXR1 cm4gc2tsX21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4+ICsJZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA0KQo+PiArCQlyZXR1cm4gaTk2NV9tb2Rfc3VwcG9ydGVkKGZv cm1hdCwgbW9kaWZpZXIpOwo+PiArCWVsc2UKPj4gKwkJcmV0dXJuIGk4eHhfbW9kX3N1cHBvcnRl ZChmb3JtYXQsIG1vZGlmaWVyKTsKPj4gKwo+PiArCXJldHVybiBmYWxzZTsKPj4gK30KPgo+SSdk IGFsc28gbGlrZSB0byBzZWUgLmZvcm1hdF9tb2Rfc3VwcG9ydGVkKCkgKyBtb2RpZmllcnNbXSBm b3IKPmN1cnNvcnMgYXMgd2VsbC4gVGhvc2Ugc2hvdWxkIG9ubHkgYWNjZXB0IExJTkVBUitBUkdC ODg4OC4KPgo+QXBhcnQgZnJvbSB0aG9zZSBpc3N1ZXMsIEkgdGhpbmsgdGhpcyBpcyBsb29raW5n IHByZXR0eSBnb29kLgo+CgpIb3cgYWJvdXQ6CiAgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKCiAgICAgICAgaWYgKFdBUk5fT04o bW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkpCiAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CgogICAgICAgIGlmIChwbGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBF X1BSSU1BUlkpCiAgICAgICAgICAgICAgICByZXR1cm4gbW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9N T0RfTElORUFSICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBEUk1fRk9STUFU X0FSR0I4ODg4OwoKICAgICAgICBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogICAgICAg ICAgICAgICAgcmV0dXJuIHNrbF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwogICAg ICAgIGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKICAgICAgICAgICAgICAgIHJl dHVybiBpOTY1X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CiAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgcmV0dXJuIGk4eHhfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVy KTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKCj4+ICsKPj4gIGNvbnN0IHN0cnVjdCBkcm1fcGxh bmVfZnVuY3MgaW50ZWxfcGxhbmVfZnVuY3MgPSB7Cj4+ICAJLnVwZGF0ZV9wbGFuZSA9IGRybV9h dG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKPj4gIAkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9t aWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4+IEBAIC0xMzQ2Miw2ICsxMzU1Myw3IEBAIGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcGxhbmVfZnVuY3MgPSB7Cj4+ICAJLmF0b21p Y19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+PiAgCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAo+PiAg CS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4+ICsJ LmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQs Cj4+ICB9Owo+Pgo+PiAgc3RhdGljIGludAo+PiBAQCAtMTM1OTgsNiArMTM2OTAsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9jdXJzb3JfcGxhbmVfZnVuY3Mg PSB7Cj4+ICAJLmF0b21pY19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3By b3BlcnR5LAo+PiAgCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGlj YXRlX3N0YXRlLAo+PiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ry b3lfc3RhdGUsCj4+ICsJLmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfcGxhbmVfZm9ybWF0 X21vZF9zdXBwb3J0ZWQsCj4+ICB9Owo+Pgo+PiAgc3RhdGljIHN0cnVjdCBpbnRlbF9wbGFuZSAq Cj4+IEBAIC0xMzYwOCw2ICsxMzcwMSw3IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4+ICAJY29u c3QgdWludDMyX3QgKmludGVsX3ByaW1hcnlfZm9ybWF0czsKPj4gIAl1bnNpZ25lZCBpbnQgc3Vw cG9ydGVkX3JvdGF0aW9uczsKPj4gIAl1bnNpZ25lZCBpbnQgbnVtX2Zvcm1hdHM7Cj4+ICsJY29u c3QgdWludDY0X3QgKmludGVsX2Zvcm1hdF9tb2RpZmllcnM7Cj4+ICAJaW50IHJldDsKPj4KPj4g IAlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnByaW1hcnkpLCBHRlBfS0VSTkVMKTsKPj4gQEAg LTEzNjQ2LDI0ICsxMzc0MCwyOCBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQo+PiAgCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gc2ts X3ByaW1hcnlfZm9ybWF0czsKPj4gIAkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNrbF9wcmlt YXJ5X2Zvcm1hdHMpOwo+PiArCQlpbnRlbF9mb3JtYXRfbW9kaWZpZXJzID0gc2tsX2Zvcm1hdF9t b2RpZmllcnM7Cj4+Cj4+ICAJCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9IHNreWxha2VfdXBkYXRl X3ByaW1hcnlfcGxhbmU7Cj4+ICAJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBza3lsYWtlX2Rp c2FibGVfcHJpbWFyeV9wbGFuZTsKPj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3By aXYpKSB7Cj4+ICAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk5NjVfcHJpbWFyeV9mb3JtYXRz Owo+PiAgCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoaTk2NV9wcmltYXJ5X2Zvcm1hdHMpOwo+ PiArCQlpbnRlbF9mb3JtYXRfbW9kaWZpZXJzID0gaTl4eF9mb3JtYXRfbW9kaWZpZXJzOwo+Pgo+ PiAgCQlwcmltYXJ5LT51cGRhdGVfcGxhbmUgPSBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFu ZTsKPj4gIAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJsZV9wcmltYXJ5X3Bs YW5lOwo+PiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4+ICAJCWlu dGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk5NjVfcHJpbWFyeV9mb3JtYXRzOwo+PiAgCQludW1fZm9y bWF0cyA9IEFSUkFZX1NJWkUoaTk2NV9wcmltYXJ5X2Zvcm1hdHMpOwo+PiArCQlpbnRlbF9mb3Jt YXRfbW9kaWZpZXJzID0gaTl4eF9mb3JtYXRfbW9kaWZpZXJzOwo+Pgo+PiAgCQlwcmltYXJ5LT51 cGRhdGVfcGxhbmUgPSBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwo+PiAgCQlwcmltYXJ5LT5k aXNhYmxlX3BsYW5lID0gaTl4eF9kaXNhYmxlX3ByaW1hcnlfcGxhbmU7Cj4+ICAJfSBlbHNlIHsK Pj4gIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gaTh4eF9wcmltYXJ5X2Zvcm1hdHM7Cj4+ICAJ CW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShpOHh4X3ByaW1hcnlfZm9ybWF0cyk7Cj4+ICsJCWlu dGVsX2Zvcm1hdF9tb2RpZmllcnMgPSBpOXh4X2Zvcm1hdF9tb2RpZmllcnM7Cj4+Cj4+ICAJCXBy aW1hcnktPnVwZGF0ZV9wbGFuZSA9IGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4+ICAJCXBy aW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsKPj4gQEAg LTEzNjczLDIxICsxMzc3MSwyMSBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQo+PiAgCQlyZXQgPSBk cm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAo+ PiAgCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5lX2Z1bmNzLAo+PiAgCQkJCQkgICAgICAgaW50 ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPj4gLQkJCQkJICAgICAgIE5VTEwsCj4+ ICsJCQkJCSAgICAgICBpbnRlbF9mb3JtYXRfbW9kaWZpZXJzLAo+PiAgCQkJCQkgICAgICAgRFJN X1BMQU5FX1RZUEVfUFJJTUFSWSwKPj4gIAkJCQkJICAgICAgICJwbGFuZSAxJWMiLCBwaXBlX25h bWUocGlwZSkpOwo+PiAgCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJU19H NFgoZGV2X3ByaXYpKQo+PiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9w cml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAo+PiAgCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5l X2Z1bmNzLAo+PiAgCQkJCQkgICAgICAgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0 cywKPj4gLQkJCQkJICAgICAgIE5VTEwsCj4+ICsJCQkJCSAgICAgICBpbnRlbF9mb3JtYXRfbW9k aWZpZXJzLAo+PiAgCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwKPj4gIAkJCQkJ ICAgICAgICJwcmltYXJ5ICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPj4gIAllbHNlCj4+ICAJCXJl dCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJnByaW1hcnktPmJh c2UsCj4+ICAJCQkJCSAgICAgICAwLCAmaW50ZWxfcGxhbmVfZnVuY3MsCj4+ICAJCQkJCSAgICAg ICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAo+PiAtCQkJCQkgICAgICAgTlVM TCwKPj4gKwkJCQkJICAgICAgIGludGVsX2Zvcm1hdF9tb2RpZmllcnMsCj4+ICAJCQkJCSAgICAg ICBEUk1fUExBTkVfVFlQRV9QUklNQVJZLAo+PiAgCQkJCQkgICAgICAgInBsYW5lICVjIiwgcGxh bmVfbmFtZShwcmltYXJ5LT5wbGFuZSkpOwo+PiAgCWlmIChyZXQpCj4+IEBAIC0xMzgxNyw2ICsx MzkxNSwxMSBAQCBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+PiAgCWludGVsX2NydGNfdXBkYXRlX2N1cnNvcihjcnRjLCBjcnRjX3N0YXRlLCBzdGF0 ZSk7Cj4+ICB9Cj4+Cj4+ICtzdGF0aWMgY29uc3QgdWludDY0X3QgY3Vyc29yX2Zvcm1hdF9tb2Rp ZmllcnNbXSA9IHsKPj4gKwlEUk1fRk9STUFUX01PRF9MSU5FQVIsCj4+ICsJRFJNX0ZPUk1BVF9N T0RfSU5WQUxJRAo+PiArfTsKPj4gKwo+PiAgc3RhdGljIHN0cnVjdCBpbnRlbF9wbGFuZSAqCj4+ ICBpbnRlbF9jdXJzb3JfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUpCj4+ICB7Cj4+IEBAIC0xMzg1Miw3ICsxMzk1NSw4IEBAIGlu dGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBlbnVtIHBpcGUgcGlwZSkKPj4gIAkJCQkgICAgICAgMCwgJmludGVsX2N1cnNvcl9wbGFuZV9m dW5jcywKPj4gIAkJCQkgICAgICAgaW50ZWxfY3Vyc29yX2Zvcm1hdHMsCj4+ICAJCQkJICAgICAg IEFSUkFZX1NJWkUoaW50ZWxfY3Vyc29yX2Zvcm1hdHMpLAo+PiAtCQkJCSAgICAgICBOVUxMLCBE Uk1fUExBTkVfVFlQRV9DVVJTT1IsCj4+ICsJCQkJICAgICAgIGN1cnNvcl9mb3JtYXRfbW9kaWZp ZXJzLAo+PiArCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9DVVJTT1IsCj4+ICAJCQkJICAgICAg ICJjdXJzb3IgJWMiLCBwaXBlX25hbWUocGlwZSkpOwo+PiAgCWlmIChyZXQpCj4+ICAJCWdvdG8g ZmFpbDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gaW5kZXggOWYyYmRlZmRj NjkwLi5iZjE4ZDllZGM2NmYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4+IEBAIC0xMDUzLDYgKzEwNTMsMTIgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGlsa19wbGFu ZV9mb3JtYXRzW10gPSB7Cj4+ICAJRFJNX0ZPUk1BVF9WWVVZLAo+PiAgfTsKPj4KPj4gK3N0YXRp YyBjb25zdCB1aW50NjRfdCBpOXh4X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKPj4gKwlJ OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwKPj4gKwlEUk1fRk9STUFUX01PRF9MSU5FQVIsCj4+ICsJ RFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+PiArfTsKPj4gKwo+PiAgc3RhdGljIGNvbnN0IHVpbnQz Ml90IHNuYl9wbGFuZV9mb3JtYXRzW10gPSB7Cj4+ICAJRFJNX0ZPUk1BVF9YQkdSODg4OCwKPj4g IAlEUk1fRk9STUFUX1hSR0I4ODg4LAo+PiBAQCAtMTA4OCw2ICsxMDk0LDE0IEBAIHN0YXRpYyB1 aW50MzJfdCBza2xfcGxhbmVfZm9ybWF0c1tdID0gewo+PiAgCURSTV9GT1JNQVRfVllVWSwKPj4g IH07Cj4+Cj4+ICtzdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX3BsYW5lX2Zvcm1hdF9tb2RpZmll cnNbXSA9IHsKPj4gKwlJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsCj4+ICsJSTkxNV9GT1JNQVRf TU9EX1lfVElMRUQsCj4+ICsJSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCj4+ICsJRFJNX0ZPUk1B VF9NT0RfTElORUFSLAo+PiArCURSTV9GT1JNQVRfTU9EX0lOVkFMSUQKPj4gK307Cj4+ICsKPj4g IHN0cnVjdCBpbnRlbF9wbGFuZSAqCj4+ICBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkJCSAgZW51bSBwaXBlIHBpcGUsIGlu dCBwbGFuZSkKPj4gQEAgLTEwOTYsNiArMTExMCw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqc3RhdGUgPSBOVUxMOwo+PiAgCXVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0 Y3M7Cj4+ICAJY29uc3QgdWludDMyX3QgKnBsYW5lX2Zvcm1hdHM7Cj4+ICsJY29uc3QgdWludDY0 X3QgKm1vZGlmaWVyczsKPj4gIAl1bnNpZ25lZCBpbnQgc3VwcG9ydGVkX3JvdGF0aW9uczsKPj4g IAlpbnQgbnVtX3BsYW5lX2Zvcm1hdHM7Cj4+ICAJaW50IHJldDsKPj4gQEAgLTExMjIsNiArMTEz Nyw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+Pgo+PiAgCQlwbGFuZV9mb3JtYXRzID0gc2tsX3BsYW5lX2Zvcm1hdHM7Cj4+ ICAJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0cyk7Cj4+ ICsJCW1vZGlmaWVycyA9IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzOwo+PiAgCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsK Pj4gIAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IGZhbHNlOwo+PiAgCQlpbnRlbF9wbGFuZS0+ bWF4X2Rvd25zY2FsZSA9IDE7Cj4+IEBAIC0xMTMxLDYgKzExNDcsNyBAQCBpbnRlbF9zcHJpdGVf cGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4KPj4gIAkJ cGxhbmVfZm9ybWF0cyA9IHZsdl9wbGFuZV9mb3JtYXRzOwo+PiAgCQludW1fcGxhbmVfZm9ybWF0 cyA9IEFSUkFZX1NJWkUodmx2X3BsYW5lX2Zvcm1hdHMpOwo+PiArCQltb2RpZmllcnMgPSBpOXh4 X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7Cj4+ICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDcpIHsKPj4gIAkJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsKPj4gIAkJCWlu dGVsX3BsYW5lLT5jYW5fc2NhbGUgPSB0cnVlOwo+PiBAQCAtMTE0NSw2ICsxMTYyLDcgQEAgaW50 ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4+Cj4+ICAJCXBsYW5lX2Zvcm1hdHMgPSBzbmJfcGxhbmVfZm9ybWF0czsKPj4gIAkJbnVtX3Bs YW5lX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNuYl9wbGFuZV9mb3JtYXRzKTsKPj4gKwkJbW9kaWZp ZXJzID0gaTl4eF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzOwo+PiAgCX0gZWxzZSB7Cj4+ICAJCWlu dGVsX3BsYW5lLT5jYW5fc2NhbGUgPSB0cnVlOwo+PiAgCQlpbnRlbF9wbGFuZS0+bWF4X2Rvd25z Y2FsZSA9IDE2Owo+PiBAQCAtMTE1Miw2ICsxMTcwLDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCWludGVsX3BsYW5l LT51cGRhdGVfcGxhbmUgPSBpbGtfdXBkYXRlX3BsYW5lOwo+PiAgCQlpbnRlbF9wbGFuZS0+ZGlz YWJsZV9wbGFuZSA9IGlsa19kaXNhYmxlX3BsYW5lOwo+Pgo+PiArCQltb2RpZmllcnMgPSBpOXh4 X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7Cj4+ICAJCWlmIChJU19HRU42KGRldl9wcml2KSkgewo+ PiAgCQkJcGxhbmVfZm9ybWF0cyA9IHNuYl9wbGFuZV9mb3JtYXRzOwo+PiAgCQkJbnVtX3BsYW5l X2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNuYl9wbGFuZV9mb3JtYXRzKTsKPj4gQEAgLTExODYsMTMg KzEyMDUsMTUgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAJCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2 X3ByaXYtPmRybSwgJmludGVsX3BsYW5lLT5iYXNlLAo+PiAgCQkJCQkgICAgICAgcG9zc2libGVf Y3J0Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKPj4gIAkJCQkJICAgICAgIHBsYW5lX2Zvcm1hdHMs IG51bV9wbGFuZV9mb3JtYXRzLAo+PiAtCQkJCQkgICAgICAgTlVMTCwgRFJNX1BMQU5FX1RZUEVf T1ZFUkxBWSwKPj4gKwkJCQkJICAgICAgIG1vZGlmaWVycywKPj4gKwkJCQkJICAgICAgIERSTV9Q TEFORV9UWVBFX09WRVJMQVksCj4+ICAJCQkJCSAgICAgICAicGxhbmUgJWQlYyIsIHBsYW5lICsg MiwgcGlwZV9uYW1lKHBpcGUpKTsKPj4gIAllbHNlCj4+ICAJCXJldCA9IGRybV91bml2ZXJzYWxf cGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJmludGVsX3BsYW5lLT5iYXNlLAo+PiAgCQkJCQkg ICAgICAgcG9zc2libGVfY3J0Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKPj4gIAkJCQkJICAgICAg IHBsYW5lX2Zvcm1hdHMsIG51bV9wbGFuZV9mb3JtYXRzLAo+PiAtCQkJCQkgICAgICAgTlVMTCwg RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKPj4gKwkJCQkJICAgICAgIG1vZGlmaWVycywKPj4gKwkJ CQkJICAgICAgIERSTV9QTEFORV9UWVBFX09WRVJMQVksCj4+ICAJCQkJCSAgICAgICAic3ByaXRl ICVjIiwgc3ByaXRlX25hbWUocGlwZSwgcGxhbmUpKTsKPj4gIAlpZiAocmV0KQo+PiAgCQlnb3Rv IGZhaWw7Cj4+IC0tCj4+IDIuMTIuMQo+Cj4tLSAKPlZpbGxlIFN5cmrDpGzDpAo+SW50ZWwgT1RD Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=