From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chandra Konduru Subject: [PATCH 1/2] i-g-t: Prep work for adding NV12 testcase Date: Fri, 1 May 2015 20:11:38 -0700 Message-ID: <1430536299-17547-2-git-send-email-chandra.konduru@intel.com> References: <1430536299-17547-1-git-send-email-chandra.konduru@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 6B21C6E21C for ; Fri, 1 May 2015 20:12:31 -0700 (PDT) In-Reply-To: <1430536299-17547-1-git-send-email-chandra.konduru@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 Cc: thomas.wood@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogY2hhbmRyYSBrb25kdXJ1IDxjaGFuZHJhLmtvbmR1cnVAaW50ZWwuY29tPgoKVGhpcyBw YXRjaCBhZGRzIG5lY2Vzc2FyeSBwcmVwIHdvcmsgZm9yIG52MTIgdGVzdGNhc2U6CiAgLSB1cGRh dGVkIGZiIGFsbG9jYXRpb24gZnVuY3Rpb25zIHRvIGhhbmRsZSBOVjEyIGZvcm1hdAogIC0gaWd0 IGhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gcG5nIGltYWdlIHNpemUKICAtIGlndCBoZWxwZXIg ZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHN0YXJ0IG9mIHV2IGluIGEgZ2l2ZW4gTlYxMiBidWZmZXIK ICAtIGlndCBoZWxwZXIgZnVuY3Rpb24gdG8gbWFwIGJ1ZmZlciBmb3IgaG9zdCBhY2Nlc3MKICAt IHBvcHVsYXRlcyBmYi0+Li4uWzRdIHBhcmFtZXRlcnMgZm9yIE5WMTIKICAtIGlndCBoZWxwZXIg ZnVuY3Rpb24gdG8gY29udmVydCBSR0IgZGF0YSB0byBOVjEyCiAgLSB1cGRhdGVkIGRybV9mb3Jt YXQgdG8gYnBwIHRvIGhhbmRsZSBOVjEyCiAgLSB1cGRhdGVkIGZhc3QgY29weSBibGl0IGZ1bmN0 aW9uIHRvIGRlYWwgTlYxMiBzdWJwbGFuZXMKICAtIG1hZGUgYW4gdXBkYXRlIHRvIGttc19yZW5k ZXIgdGVzdGNhc2UgZHVlIHRvIGFib3ZlIGNoYW5nZXMKClNpZ25lZC1vZmYtYnk6IGNoYW5kcmEg a29uZHVydSA8Y2hhbmRyYS5rb25kdXJ1QGludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ZiLmMgICAg ICAgICAgICB8IDMxNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0KIGxpYi9pZ3RfZmIuaCAgICAgICAgICAgIHwgICA5ICstCiBsaWIvaW50ZWxfYmF0Y2hi dWZmZXIuYyB8ICAxNiArKy0KIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIHwgICAzICstCiBsaWIv aW50ZWxfcmVnLmggICAgICAgICB8ICAgMSArCiBsaWIvaW9jdGxfd3JhcHBlcnMuYyAgICB8ICAx MCArLQogbGliL2lvY3RsX3dyYXBwZXJzLmggICAgfCAgIDIgKy0KIHRlc3RzL2ttc19yZW5kZXIu YyAgICAgIHwgICA0ICstCiA4IGZpbGVzIGNoYW5nZWQsIDMzNCBpbnNlcnRpb25zKCspLCAyNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMKaW5k ZXggY2M0YjhlZS4uZGVkZWU5ZSAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisrKyBiL2xpYi9p Z3RfZmIuYwpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVj dCB7CiAKIAogLyogaGVscGVycyB0byBjcmVhdGUgbmljZS1sb29raW5nIGZyYW1lYnVmZmVycyAq Lwotc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0LCBpbnQgYnBwLAorc3RhdGljIGludCBjcmVhdGVfYm9fZm9yX2ZiKGludCBmZCwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLCBpbnQgYnBwMiwKIAkJCSAgICB1aW50NjRfdCB0aWxp bmcsIHVuc2lnbmVkIGJvX3NpemUsCiAJCQkgICAgdWludDMyX3QgKmdlbV9oYW5kbGVfcmV0LAog CQkJICAgIHVuc2lnbmVkICpzaXplX3JldCwKQEAgLTk5LDEzICs5OSwxNyBAQCBzdGF0aWMgaW50 IGNyZWF0ZV9ib19mb3JfZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBicHAs CiAJCWZvciAoc3RyaWRlID0gNTEyOyBzdHJpZGUgPCB2OyBzdHJpZGUgKj0gMikKIAkJCTsKIAot CQl2ID0gc3RyaWRlICogaGVpZ2h0OworCQkvKiBwbGFuYXIgZm9ybWF0cyBoZWlnaHQgaXMgMS41 eCAqLworCQl2ID0gc3RyaWRlICogKGJwcDIgPyAoaGVpZ2h0ICogMykgLyAyIDogaGVpZ2h0KTsK KwogCQlmb3IgKHNpemUgPSAxMDI0KjEwMjQ7IHNpemUgPCB2OyBzaXplICo9IDIpCiAJCQk7CiAJ fSBlbHNlIHsKIAkJLyogU2Nhbi1vdXQgaGFzIGEgNjQgYnl0ZSBhbGlnbm1lbnQgcmVzdHJpY3Rp b24gKi8KIAkJc3RyaWRlID0gKHdpZHRoICogKGJwcCAvIDgpICsgNjMpICYgfjYzOwotCQlzaXpl ID0gc3RyaWRlICogaGVpZ2h0OworCisJCS8qIHBsYW5hciBmb3JtYXRzIGhlaWdodCBpcyAxLjV4 ICovCisJCXNpemUgPSBzdHJpZGUgKiAoYnBwMiA/IChoZWlnaHQgKiAzKSAvIDIgOiBoZWlnaHQp OwogCX0KIAogCWlmIChib19zaXplID09IDApCkBAIC0zOTMsNiArMzk3LDc1IEBAIHZvaWQgaWd0 X3BhaW50X2ltYWdlKGNhaXJvX3QgKmNyLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKIH0KIAogLyoq CisgKiBpZ3RfZ2V0X2ltYWdlX3NpemU6CisgKiBAZmlsZW5hbWU6IGZpbGVuYW1lIG9mIHRoZSBw bmcgaW1hZ2UKKyAqIEB3aWR0aDogd2lkdGggb2YgdGhlIGltYWdlCisgKiBAaGVpZ2h0OiBoZWln aHQgb2YgdGhlIGltYWdlCisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIEB3aWR0aCBhbmQg QGhlaWdodCBvZiB0aGUgcG5nIGltYWdlIGluIEBmaWxlbmFtZSwKKyAqIHdoaWNoIGlzIGxvYWRl ZCBmcm9tIHRoZSBwYWNrYWdlIGRhdGEgZGlyZWN0b3J5LgorICovCit2b2lkCitpZ3RfZ2V0X2lt YWdlX3NpemUoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQor eworCWNhaXJvX3N1cmZhY2VfdCAqaW1hZ2U7CisJRklMRSogZjsKKworCWYgPSBpZ3RfZm9wZW5f ZGF0YShmaWxlbmFtZSk7CisKKwlpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zy b21fcG5nX3N0cmVhbSgmc3RkaW9fcmVhZF9mdW5jLCBmKTsKKwlpZ3RfYXNzZXJ0KGNhaXJvX3N1 cmZhY2Vfc3RhdHVzKGltYWdlKSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7CisKKwkqd2lkdGgg PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChpbWFnZSk7CisJKmhlaWdodCA9IGNhaXJv X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChpbWFnZSk7CisKKwljYWlyb19zdXJmYWNlX2Rlc3Ry b3koaW1hZ2UpOworCisJZmNsb3NlKGYpOworfQorCisKKy8qKgorICogaWd0X2ZiX2NhbGNfdXY6 CisgKiBAZmI6IHBvaW50ZXIgdG8gYW4gI2lndF9mYiBzdHJ1Y3R1cmUKKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGNhbGN1bGF0ZXMgVVYgb2Zmc2V0IGluIGJ5dGVzIGFuZCBVViBzdGFydGluZyBsaW5l IG51bWJlcgorICogZm9yIHJlcXVlc3RlZCBOVjEyIEBmYi4KKyAqLwordm9pZAoraWd0X2ZiX2Nh bGNfdXYoc3RydWN0IGlndF9mYiAqZmIpCit7CisJaWYgKGZiLT5kcm1fZm9ybWF0ICE9IERSTV9G T1JNQVRfTlYxMikKKwkJcmV0dXJuOworCisJc3dpdGNoIChmYi0+dGlsaW5nKSB7CisJY2FzZSBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FOgorCQlmYi0+dXZfeV9zdGFydCA9IGZiLT5oZWlnaHQ7 CisJCWJyZWFrOworCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CisJCWZiLT51 dl95X3N0YXJ0ID0gZmItPmhlaWdodDsKKwkJYnJlYWs7CisJY2FzZSBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWV9USUxFRDoKKwkJZmItPnV2X3lfc3RhcnQgPSBmYi0+aGVpZ2h0OworCQlicmVhazsK KwljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKKwkJLyogdGlsZS1ZZiByZXF1 aXJlcyB1diB0byBzdGFydCBvbiBhIG5ldyB0aWxlIHJvdyAqLworCQlpZiAoZmItPmhlaWdodCAl IDY0KQorCQkJZmItPnV2X3lfc3RhcnQgPSAoZmItPmhlaWdodCArIDYzKSAmIH42MzsKKwkJZWxz ZQorCQkJZmItPnV2X3lfc3RhcnQgPSBmYi0+aGVpZ2h0OworCQlicmVhazsKKwlkZWZhdWx0Ogor CQlpZ3RfYXNzZXJ0KDApOworCX0KKworCWZiLT51dl9vZmZzZXQgPSBmYi0+dXZfeV9zdGFydCAq IGZiLT5zdHJpZGU7CisKKwkvKiBhc3NlcnQgdGhhdCBmYiBoYXMgZW5vdWdoIGxpbmVzIHRvIGhv bGQgeSBhbmQgdXYgc3ViLXBsYW5lcyAqLworCWlndF9hc3NlcnQoZmItPnNpemUgLyBmYi0+c3Ry aWRlID49IGZiLT51dl95X3N0YXJ0ICsgZmItPmhlaWdodCAvIDIpOworfQorCisvKioKICAqIGln dF9jcmVhdGVfZmJfd2l0aF9ib19zaXplOgogICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVz Y3JpcHRvcgogICogQHdpZHRoOiB3aWR0aCBvZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4ZWwKQEAg LTQxOCwyNCArNDkxLDMyIEBAIGlndF9jcmVhdGVfZmJfd2l0aF9ib19zaXplKGludCBmZCwgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LAogCQkJICAgc3RydWN0IGlndF9mYiAqZmIsIHVuc2lnbmVkIGJv X3NpemUpCiB7CiAJdWludDMyX3QgZmJfaWQ7Ci0JaW50IGJwcDsKKwlpbnQgYnBwLCBicHAyOwog CiAJbWVtc2V0KGZiLCAwLCBzaXplb2YoKmZiKSk7CiAKLQlicHAgPSBpZ3RfZHJtX2Zvcm1hdF90 b19icHAoZm9ybWF0KTsKKwlicHAgPSBpZ3RfZHJtX2Zvcm1hdF90b19icHAoZm9ybWF0LCAwKTsK KwlicHAyID0gaWd0X2RybV9mb3JtYXRfdG9fYnBwKGZvcm1hdCwgMSk7CiAKLQlpZ3RfZGVidWco IiVzKHdpZHRoPSVkLCBoZWlnaHQ9JWQsIGZvcm1hdD0weCV4IFticHA9JWRdLCB0aWxpbmc9MHgl IlBSSXg2NCIsIHNpemU9JWRcbiIsCi0JCSAgX19mdW5jX18sIHdpZHRoLCBoZWlnaHQsIGZvcm1h dCwgYnBwLCB0aWxpbmcsIGJvX3NpemUpOwotCWRvX29yX2RpZShjcmVhdGVfYm9fZm9yX2ZiKGZk LCB3aWR0aCwgaGVpZ2h0LCBicHAsIHRpbGluZywgYm9fc2l6ZSwKKwlpZ3RfZGVidWcoIiVzKHdp ZHRoPSVkLCBoZWlnaHQ9JWQsIGZvcm1hdD0weCV4IFticHA9JWQsICVkXSwgdGlsaW5nPTB4JSJQ Ukl4NjQiLCBzaXplPSVkXG4iLAorCQkgIF9fZnVuY19fLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs IGJwcCwgYnBwMiwgdGlsaW5nLCBib19zaXplKTsKKwlkb19vcl9kaWUoY3JlYXRlX2JvX2Zvcl9m YihmZCwgd2lkdGgsIGhlaWdodCwgYnBwLCBicHAyLCB0aWxpbmcsIGJvX3NpemUsCiAJCQkJICAg JmZiLT5nZW1faGFuZGxlLCAmZmItPnNpemUsICZmYi0+c3RyaWRlKSk7CiAKIAlpZ3RfZGVidWco IiVzKGhhbmRsZT0lZCwgcGl0Y2g9JWQpXG4iLAogCQkgIF9fZnVuY19fLCBmYi0+Z2VtX2hhbmRs ZSwgZmItPnN0cmlkZSk7CiAKKwlmYi0+d2lkdGggPSB3aWR0aDsKKwlmYi0+aGVpZ2h0ID0gaGVp Z2h0OworCWZiLT50aWxpbmcgPSB0aWxpbmc7CisJZmItPmRybV9mb3JtYXQgPSBmb3JtYXQ7CisK KwlpZ3RfZmJfY2FsY191dihmYik7CisKIAlpZiAodGlsaW5nICE9IExPQ0FMX0RSTV9GT1JNQVRf TU9EX05PTkUgJiYKIAkgICAgdGlsaW5nICE9IExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVE KSB7CiAJCWRvX29yX2RpZShfX2ttc19hZGRmYihmZCwgZmItPmdlbV9oYW5kbGUsIHdpZHRoLCBo ZWlnaHQsCi0JCQkJICAgICAgZmItPnN0cmlkZSwgZm9ybWF0LCB0aWxpbmcsCisJCQkJICAgICAg ZmItPnN0cmlkZSwgZm9ybWF0LCB0aWxpbmcsIGZiLT51dl9vZmZzZXQsCiAJCQkJICAgICAgTE9D QUxfRFJNX01PREVfRkJfTU9ESUZJRVJTLCAmZmJfaWQpKTsKIAl9IGVsc2UgewogCQl1aW50MzJf dCBoYW5kbGVzWzRdOwpAQCAtNDQ5LDIxICs1MzAsMjEzIEBAIGlndF9jcmVhdGVfZmJfd2l0aF9i b19zaXplKGludCBmZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCQloYW5kbGVzWzBdID0gZmIt PmdlbV9oYW5kbGU7CiAJCXBpdGNoZXNbMF0gPSBmYi0+c3RyaWRlOwogCisJCWlmIChmb3JtYXQg PT0gRFJNX0ZPUk1BVF9OVjEyKSB7CisJCQloYW5kbGVzWzFdID0gZmItPmdlbV9oYW5kbGU7CisJ CQlwaXRjaGVzWzFdID0gZmItPnN0cmlkZTsKKwkJCW9mZnNldHNbMV0gPSBmYi0+dXZfb2Zmc2V0 OworCQl9CisKIAkJZG9fb3JfZGllKGRybU1vZGVBZGRGQjIoZmQsIHdpZHRoLCBoZWlnaHQsIGZv cm1hdCwKIAkJCQkJaGFuZGxlcywgcGl0Y2hlcywgb2Zmc2V0cywKIAkJCQkJJmZiX2lkLCAwKSk7 CiAJfQogCi0JZmItPndpZHRoID0gd2lkdGg7Ci0JZmItPmhlaWdodCA9IGhlaWdodDsKLQlmYi0+ dGlsaW5nID0gdGlsaW5nOwotCWZiLT5kcm1fZm9ybWF0ID0gZm9ybWF0OwogCWZiLT5mYl9pZCA9 IGZiX2lkOwogCiAJcmV0dXJuIGZiX2lkOwogfQogCiAvKioKKyAqIGlndF9mYl9nZW1fbW1hcDoK KyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBmYjogcG9pbnRlciB0 byBhbiAjaWd0X2ZiIHN0cnVjdHVyZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gbWVtb3J5IG1hcHMg Z2VtIGJ1ZmZlciBmb3IgY3B1IGFjY2VzcyBhbmQgc2F2ZXMgbW1hcCBwb2ludGVyCisgKiBpbiBA ZmIuCisgKi8KK3ZvaWQKK2lndF9mYl9nZW1fbW1hcChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZi KQoreworCWlmICghZmItPm1tYXBfZ3R0KQorCQlmYi0+bW1hcF9ndHQgPSBnZW1fbW1hcF9fZ3R0 KGZkLCBmYi0+Z2VtX2hhbmRsZSwgZmItPnNpemUsCisJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRF KTsKKwlpZ3RfYXNzZXJ0KGZiLT5tbWFwX2d0dCk7Cit9CisKKy8qKgorICogaWd0X2ZiX2NzY194 cmdiX3RvX252MTI6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBA d2lkdGg6IHdpZHRoIG9mIHRoZSBmcmFtZWJ1ZmZlciB0byBiZSBjb252ZXJ0ZWQKKyAqIEBoZWln aHQ6IGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgdG8gYmUgY29udmVydGVkCisgKiBAZHN0OiBw b2ludGVyIHRvIGFuICNpZ3RfZmIgc3RydWN0dXJlIGhvbGRpbmcgZGVzdGluYXRpb24gZnJhbWVi dWZmZXIKKyAqIEBzcmM6IHBvaW50ZXIgdG8gYW4gI2lndF9mYiBzdHJ1Y3R1cmUgaG9sZGluZyBz b3VyY2UgZnJhbWVidWZmZXIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHNvdXJjZSBm cmFtZWJ1ZmZlciBpbnRvIGRlc3RpbmF0aW9uIGZyYW1lYnVmZmVyCisgKiBmb3JtYXQuIEl0IGFs c28gbW1hcHMgdGhlIHVuZGVybHlpbmcgZ2VtIGJ1ZmZlciBpZiBpdCBpc24ndCBtbWFwZWQKKyAq IGJlZm9yZS4KKyAqCisgKiBGb3Igbm93OgorICogICAgLSBpdCBleHBlY3RzIGJvdGggc3JjIGFu ZCBkc3QgZmJzIGFyZSBzYW1lIHNpemUgYW5kIHRpbGluZworICovCit2b2lkCitpZ3RfZmJfY3Nj X3hyZ2JfdG9fbnYxMihpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmRzdF9mYiwgc3RydWN0IGlndF9m YiAqc3JjX2ZiKQoreworCXVuc2lnbmVkIGNoYXIgKm52MTI7CisJdW5zaWduZWQgY2hhciAqeHJn YjsKKwl1bnNpZ25lZCBjaGFyIHksIHYsIHU7CisJZmxvYXQgeWYsIHZmLCB1ZjsKKwl1bnNpZ25l ZCBjaGFyIHIsIGcsIGI7CisJaW50IGksIGo7CisJaW50IHhyZ2JfcG9zOworCWludCB5X3BvczsK KwlpbnQgdXZfcG9zOworCWludCB1dl9iYXNlOworCXVuc2lnbmVkIGludCBvYmpfdGlsaW5nOwor CXN0cnVjdCBpZ3RfZmIgKnRlbXBfc3JjX2ZiLCAqdGVtcF9kc3RfZmI7CisJc3RydWN0IGlndF9m YiBmYjEsIGZiMjsKKwlpbnQgdGVtcF9zcmNfaWQsIHRlbXBfZHN0X2lkOworCisJaWd0X2Fzc2Vy dChkc3RfZmIpOworCWlndF9hc3NlcnQoc3JjX2ZiKTsKKwlpZ3RfYXNzZXJ0KGRzdF9mYi0+d2lk dGggPT0gc3JjX2ZiLT53aWR0aCk7CisJaWd0X2Fzc2VydChkc3RfZmItPmhlaWdodCA9PSBzcmNf ZmItPmhlaWdodCk7CisJaWd0X2Fzc2VydChzcmNfZmItPnRpbGluZyA9PSBkc3RfZmItPnRpbGlu Zyk7CisKKwlpZ3RfYXNzZXJ0KHNyY19mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1hSR0I4 ODg4KTsKKwlpZ3RfYXNzZXJ0KGRzdF9mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIp OworCisJLyoKKwkgKiBTdGVwczogTm90IHRoZSBiZXN0IGFwcHJvYWNoIGJ1dCBnZXRzIGpvYiBk b25lIGZvciBpZ3QKKwkgKiAgICAgKDEpIGNyZWF0ZSBsaW5lYXIgdGVtcF9zcmMsIHRlbXBfZHN0 CisJICogICAgICgyKSBmYXN0IGJsaXQgc3JjIC0tPiB0ZW1wIHNyYworCSAqICAgICAoMykgZ2Vt IG1hcCB0ZW1wX3NyYywgdGVtcF9kc3QKKwkgKiAgICAgKDQpIGhvc3QgY29udmVyc2lvbiAmIGNv cHkgZnJvbSB0ZW1wIHNyYyAtLT4gdGVtcCBkc3QKKwkgKiAgICAgKDUpIGZhc3QgYmxpdCB0ZW1w IGRzdCAtLT4gZHN0CisJICogICAgICg2KSBmcmVlIHRlbXAgZmJzCisJICoKKwkgKiBGb3IgTGlu ZWFyL1g6CisJICogICAgIHBlcmZvcm0gMyAmIDQgb25seQorCSAqIEZvciBZL1lmOgorCSAqICAg ICBwZXJmb3JtIGFsbCBzdGVwcworCSAqLworCisJaWYgKHNyY19mYi0+dGlsaW5nID09IExPQ0FM X0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8CisJCXNyY19mYi0+dGlsaW5nID09IExPQ0FMX0k5 MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgeworCisJCXRlbXBfc3JjX2ZiID0gJmZiMTsKKwkJdGVt cF9kc3RfZmIgPSAmZmIyOworCisJCS8qICgxKSBjcmVhdGUgbGluZWFyIHRlbXBfc3JjLCB0ZW1w X2RzdCAqLworCQl0ZW1wX3NyY19pZCA9IGlndF9jcmVhdGVfZmIoZmQsCisJCQlzcmNfZmItPndp ZHRoLCBzcmNfZmItPmhlaWdodCwKKwkJCXNyY19mYi0+ZHJtX2Zvcm1hdCwKKwkJCUxPQ0FMX0RS TV9GT1JNQVRfTU9EX05PTkUsCisJCQl0ZW1wX3NyY19mYik7CisJCWlndF9hc3NlcnQodGVtcF9z cmNfaWQpOworCisJCXRlbXBfZHN0X2lkID0gaWd0X2NyZWF0ZV9mYihmZCwKKwkJCWRzdF9mYi0+ d2lkdGgsIGRzdF9mYi0+aGVpZ2h0LAorCQkJZHN0X2ZiLT5kcm1fZm9ybWF0LAorCQkJTE9DQUxf RFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCXRlbXBfZHN0X2ZiKTsKKwkJaWd0X2Fzc2VydCh0ZW1w X2RzdF9pZCk7CisKKwkJaWYgKHNyY19mYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01P RF9ZX1RJTEVEKQorCQkJb2JqX3RpbGluZyA9IEk5MTVfVElMSU5HX1k7CisJCWVsc2UKKwkJCW9i al90aWxpbmcgPSBJOTE1X1RJTElOR19ZZjsKKworCQkvKiAoMikgZmFzdCBibGl0IHNyYyAtLT4g dGVtcCBzcmMgKi8KKwkJaWd0X2JsaXR0ZXJfZmFzdF9jb3B5X19yYXcoZmQsCisJCQlzcmNfZmIt PmdlbV9oYW5kbGUsCisJCQlzcmNfZmItPnN0cmlkZSwKKwkJCW9ial90aWxpbmcsCisJCQkwLCAw LAorCQkJdGVtcF9zcmNfZmItPndpZHRoLCB0ZW1wX3NyY19mYi0+aGVpZ2h0LAorCQkJaWd0X2Ry bV9mb3JtYXRfdG9fYnBwKHRlbXBfc3JjX2ZiLT5kcm1fZm9ybWF0LCAwKSwKKwkJCXRlbXBfc3Jj X2ZiLT5nZW1faGFuZGxlLAorCQkJdGVtcF9zcmNfZmItPnN0cmlkZSwKKwkJCUk5MTVfVElMSU5H X05PTkUsCisJCQkwLCAwKTsKKwl9IGVsc2UgeworCQl0ZW1wX3NyY19mYiA9IHNyY19mYjsKKwkJ dGVtcF9kc3RfZmIgPSBkc3RfZmI7CisJfQorCisJLyogKDMpIGdlbSBtYXAgdGVtcF9zcmMsIHRl bXBfZHN0ICovCisJaWd0X2ZiX2dlbV9tbWFwKGZkLCB0ZW1wX3NyY19mYik7CisJaWd0X2ZiX2dl bV9tbWFwKGZkLCB0ZW1wX2RzdF9mYik7CisKKwkvKiAoNCkgaG9zdCBjb252ZXJzaW9uICYgY29w eSBmcm9tIHRlbXAgc3JjIC0tPiB0ZW1wIGRzdCAqLworCXhyZ2IgPSAodW5zaWduZWQgY2hhciAq KSB0ZW1wX3NyY19mYi0+bW1hcF9ndHQ7CisJbnYxMiA9ICh1bnNpZ25lZCBjaGFyICopIHRlbXBf ZHN0X2ZiLT5tbWFwX2d0dDsKKwl1dl9iYXNlID0gdGVtcF9kc3RfZmItPnN0cmlkZSAqIHRlbXBf ZHN0X2ZiLT5oZWlnaHQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgdGVtcF9zcmNfZmItPmhlaWdodDsg aSsrKSB7CisJCXhyZ2JfcG9zID0gaSAqIHRlbXBfc3JjX2ZiLT5zdHJpZGU7CisJCXlfcG9zID0g aSAqIHRlbXBfZHN0X2ZiLT5zdHJpZGU7CisJCXV2X3BvcyA9IHRlbXBfZHN0X2ZiLT5zdHJpZGUg KiBpIC8gMjsKKwkJZm9yIChqID0gMDsgaiA8IHRlbXBfc3JjX2ZiLT53aWR0aDsgaisrKSB7CisJ CQliID0geHJnYlt4cmdiX3BvcysrXTsKKwkJCWcgPSB4cmdiW3hyZ2JfcG9zKytdOworCQkJciA9 IHhyZ2JbeHJnYl9wb3MrK107CisJCQl4cmdiX3BvcysrOworCisJCQkvKiB1c2UgZmxvYXRzIGZv ciBpbnRlcm1lZGlhdGUgY2FsY3MsIHRvIGdldCBiZXR0ZXIgcmVzdWx0cyAqLworCQkJeWYgPSAg KDAuMjU3ICogcikgKyAoMC41MDQgKiBnKSArICgwLjA5OCAqIGIpICsgMTY7CisJCQl1ZiA9IC0o MC4xNDggKiByKSAtICgwLjI5MSAqIGcpICsgKDAuNDM5ICogYikgKyAxMjg7CisJCQl2ZiA9ICAo MC40MzkgKiByKSAtICgwLjM2OCAqIGcpIC0gKDAuMDcxICogYikgKyAxMjg7CisKKwkJCXkgPSAo dW5zaWduZWQgY2hhcikgeWY7CisJCQl1ID0gKHVuc2lnbmVkIGNoYXIpIHVmOworCQkJdiA9ICh1 bnNpZ25lZCBjaGFyKSB2ZjsKKworCQkJbnYxMlt5X3BvcysrXSA9IHk7CisKKwkJCWlmICghKGog JSAyKSAmJiAhKGkgJSAyKSkgeworCQkJCW52MTJbdXZfYmFzZSArIHV2X3BvcysrXSA9IHU7CisJ CQkJbnYxMlt1dl9iYXNlICsgdXZfcG9zKytdID0gdjsKKwkJCX0KKwkJfQorCX0KKworCS8qICg1 KSBmYXN0IGJsaXQgdGVtcCBkc3QgLS0+IGRzdCAqLworCWlmIChkc3RfZmItPnRpbGluZyA9PSBM T0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAorCQlkc3RfZmItPnRpbGluZyA9PSBMT0NB TF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpIHsKKworCQkvKiBibGl0IHktcGxhbmUgKi8KKwkJ aWd0X2JsaXR0ZXJfZmFzdF9jb3B5X19yYXcoZmQsCisJCQl0ZW1wX2RzdF9mYi0+Z2VtX2hhbmRs ZSwKKwkJCXRlbXBfZHN0X2ZiLT5zdHJpZGUsCisJCQlJOTE1X1RJTElOR19OT05FLAorCQkJMCwg MCwKKwkJCWRzdF9mYi0+d2lkdGgsIGRzdF9mYi0+aGVpZ2h0LAorCQkJaWd0X2RybV9mb3JtYXRf dG9fYnBwKGRzdF9mYi0+ZHJtX2Zvcm1hdCwgMCksCisJCQlkc3RfZmItPmdlbV9oYW5kbGUsCisJ CQlkc3RfZmItPnN0cmlkZSwKKwkJCW9ial90aWxpbmcsCisJCQkwLCAwKTsKKworCQkvKiBibGl0 IHV2LXBsYW5lICovCisJCWlndF9ibGl0dGVyX2Zhc3RfY29weV9fcmF3KGZkLAorCQkJdGVtcF9k c3RfZmItPmdlbV9oYW5kbGUsCisJCQl0ZW1wX2RzdF9mYi0+c3RyaWRlLAorCQkJSTkxNV9USUxJ TkdfTk9ORSwKKwkJCTAsIHRlbXBfZHN0X2ZiLT51dl95X3N0YXJ0LAorCQkJZHN0X2ZiLT53aWR0 aCwgZHN0X2ZiLT5oZWlnaHQsCisJCQlpZ3RfZHJtX2Zvcm1hdF90b19icHAoZHN0X2ZiLT5kcm1f Zm9ybWF0LCAxKSwKKwkJCWRzdF9mYi0+Z2VtX2hhbmRsZSwKKwkJCWRzdF9mYi0+c3RyaWRlLAor CQkJb2JqX3RpbGluZywKKwkJCTAsIGRzdF9mYi0+dXZfeV9zdGFydCk7CisKKwkJLyogKDYpIGZy ZWUgdGVtcCBmYnMgKi8KKwkJaWd0X3JlbW92ZV9mYihmZCwgdGVtcF9zcmNfZmIpOworCQlpZ3Rf cmVtb3ZlX2ZiKGZkLCB0ZW1wX2RzdF9mYik7CisJfQorfQorCisvKioKICAqIGlndF9jcmVhdGVf ZmI6CiAgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCiAgKiBAd2lkdGg6IHdp ZHRoIG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbApAQCAtNjg2LDYgKzk1OSw3IEBAIHN0YXRp YyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fYmxpdCh2b2lkICphcmcpCiAJCQkJICAgSTkx NV9USUxJTkdfTk9ORSwKIAkJCQkgICAwLCAwLCAvKiBzcmNfeCwgc3JjX3kgKi8KIAkJCQkgICBm Yi0+d2lkdGgsIGZiLT5oZWlnaHQsCisJCQkJICAgMCwKIAkJCQkgICBmYi0+Z2VtX2hhbmRsZSwK IAkJCQkgICBmYi0+c3RyaWRlLAogCQkJCSAgIG9ial90aWxpbmcsCkBAIC03MTIsOCArOTg2LDgg QEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2JsaXQoaW50IGZkLCBzdHJ1Y3Qg aWd0X2ZiICpmYikKIAkgKiBjYWlybykuIFRoaXMgbGluZWFyIGJvIHdpbGwgYmUgdGhlbiBibGl0 dGVkIHRvIGl0cyBmaW5hbAogCSAqIGRlc3RpbmF0aW9uLCB0aWxpbmcgaXQgYXQgdGhlIHNhbWUg dGltZS4KIAkgKi8KLQlicHAgPSBpZ3RfZHJtX2Zvcm1hdF90b19icHAoZmItPmRybV9mb3JtYXQp OwotCXJldCA9IGNyZWF0ZV9ib19mb3JfZmIoZmQsIGZiLT53aWR0aCwgZmItPmhlaWdodCwgYnBw LAorCWJwcCA9IGlndF9kcm1fZm9ybWF0X3RvX2JwcChmYi0+ZHJtX2Zvcm1hdCwgMCk7CisJcmV0 ID0gY3JlYXRlX2JvX2Zvcl9mYihmZCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCBicHAsIDAsCiAJ CQkJTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwgMCwKIAkJCQkmYmxpdC0+bGluZWFyLmhhbmRs ZSwKIAkJCQkmYmxpdC0+bGluZWFyLnNpemUsCkBAIC03MzQsNiArMTAwOCw3IEBAIHN0YXRpYyB2 b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIp CiAJCQkJICAgb2JqX3RpbGluZywKIAkJCQkgICAwLCAwLCAvKiBzcmNfeCwgc3JjX3kgKi8KIAkJ CQkgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCisJCQkJICAgYnBwLAogCQkJCSAgIGJsaXQtPmxp bmVhci5oYW5kbGUsCiAJCQkJICAgYmxpdC0+bGluZWFyLnN0cmlkZSwKIAkJCQkgICBJOTE1X1RJ TElOR19OT05FLApAQCAtODkzLDE1ICsxMTY4LDI0IEBAIHVpbnQzMl90IGlndF9icHBfZGVwdGhf dG9fZHJtX2Zvcm1hdChpbnQgYnBwLCBpbnQgZGVwdGgpCiAvKioKICAqIGlndF9kcm1fZm9ybWF0 X3RvX2JwcDoKICAqIEBkcm1fZm9ybWF0OiBkcm0gZm91cmNjIHBpeGVsIGZvcm1hdCBjb2RlCisg KiBAcGxhbmU6IHBsYW5lIGlkCiAgKgogICogUmV0dXJuczoKICAqIFRoZSBiaXRzIHBlciBwaXhl bCBmb3IgdGhlIGdpdmVuIGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0IGNvZGUuIEZhaWxzIGhhcmQg aWYKICAqIG5vIG1hdGNoIHdhcyBmb3VuZC4KICAqLwotdWludDMyX3QgaWd0X2RybV9mb3JtYXRf dG9fYnBwKHVpbnQzMl90IGRybV9mb3JtYXQpCit1aW50MzJfdCBpZ3RfZHJtX2Zvcm1hdF90b19i cHAodWludDMyX3QgZHJtX2Zvcm1hdCwgaW50IHBsYW5lKQogewogCXN0cnVjdCBmb3JtYXRfZGVz Y19zdHJ1Y3QgKmY7CiAKKwlpZiAoZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxh bmUgPT0gMCkKKwkJcmV0dXJuIDg7CisJaWYgKGRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEy ICYmIHBsYW5lID09IDEpCisJCXJldHVybiAxNjsKKworCWlmIChwbGFuZSkKKwkJcmV0dXJuIDA7 CisKIAlmb3JfZWFjaF9mb3JtYXQoZikKIAkJaWYgKGYtPmRybV9pZCA9PSBkcm1fZm9ybWF0KQog CQkJcmV0dXJuIGYtPmJwcDsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuaCBiL2xpYi9pZ3RfZmIu aAppbmRleCBhMDdhY2QyLi45ZTIyN2U4IDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmgKKysrIGIv bGliL2lndF9mYi5oCkBAIC01NCwxMCArNTQsMTMgQEAgc3RydWN0IGlndF9mYiB7CiAJdWludDY0 X3QgdGlsaW5nOwogCXVuc2lnbmVkIHNpemU7CiAJY2Fpcm9fc3VyZmFjZV90ICpjYWlyb19zdXJm YWNlOworCXZvaWQgKm1tYXBfZ3R0OwogCXVpbnQzMl90IHNyY194OwogCXVpbnQzMl90IHNyY195 OwogCXVpbnQzMl90IHNyY193OwogCXVpbnQzMl90IHNyY19oOworCXVpbnQzMl90IHV2X3lfc3Rh cnQ7CisJdWludDMyX3QgdXZfb2Zmc2V0OwogfTsKIAogZW51bSBpZ3RfdGV4dF9hbGlnbiB7CkBA IC04Miw2ICs4NSw5IEBAIHVuc2lnbmVkIGludCBpZ3RfY3JlYXRlX2NvbG9yX2ZiKGludCBmZCwg aW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogdW5zaWduZWQgaW50IGlndF9jcmVhdGVfc3RlcmVvX2Zi KGludCBkcm1fZmQsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKIAkJCQkgIHVpbnQzMl90IGZvcm1h dCwgdWludDY0X3QgdGlsaW5nKTsKIHZvaWQgaWd0X3JlbW92ZV9mYihpbnQgZmQsIHN0cnVjdCBp Z3RfZmIgKmZiKTsKK3ZvaWQgaWd0X2ZiX2dlbV9tbWFwKGludCBmZCwgc3RydWN0IGlndF9mYiAq ZmIpOwordm9pZCBpZ3RfZmJfY3NjX3hyZ2JfdG9fbnYxMihpbnQgZmQsIHN0cnVjdCBpZ3RfZmIg KmRzdCwgc3RydWN0IGlndF9mYiAqc3JjKTsKK3ZvaWQgaWd0X2ZiX2NhbGNfdXYoc3RydWN0IGln dF9mYiAqZmIpOwogCiAvKiBjYWlyby1iYXNlZCBwYWludGluZyAqLwogY2Fpcm9fdCAqaWd0X2dl dF9jYWlyb19jdHgoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYik7CkBAIC05OCwxMCArMTA0LDEx IEBAIHZvaWQgaWd0X3dyaXRlX2ZiX3RvX3BuZyhpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiLCBj b25zdCBjaGFyICpmaWxlbmFtZSk7CiBpbnQgaWd0X2NhaXJvX3ByaW50Zl9saW5lKGNhaXJvX3Qg KmNyLCBlbnVtIGlndF90ZXh0X2FsaWduIGFsaWduLAogCQkJICAgICAgIGRvdWJsZSB5c3BhY2lu ZywgY29uc3QgY2hhciAqZm10LCAuLi4pCiAJCQkgICAgICAgX19hdHRyaWJ1dGVfXygoZm9ybWF0 IChwcmludGYsIDQsIDUpKSk7Cit2b2lkIGlndF9nZXRfaW1hZ2Vfc2l6ZShjb25zdCBjaGFyICpm aWxlbmFtZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpOwogCiAvKiBoZWxwZXJzIHRvIGhhbmRs ZSBkcm0gZm91cmNjIGNvZGVzICovCiB1aW50MzJfdCBpZ3RfYnBwX2RlcHRoX3RvX2RybV9mb3Jt YXQoaW50IGJwcCwgaW50IGRlcHRoKTsKLXVpbnQzMl90IGlndF9kcm1fZm9ybWF0X3RvX2JwcCh1 aW50MzJfdCBkcm1fZm9ybWF0KTsKK3VpbnQzMl90IGlndF9kcm1fZm9ybWF0X3RvX2JwcCh1aW50 MzJfdCBkcm1fZm9ybWF0LCBpbnQgcGxhbmUpOwogY29uc3QgY2hhciAqaWd0X2Zvcm1hdF9zdHIo dWludDMyX3QgZHJtX2Zvcm1hdCk7CiB2b2lkIGlndF9nZXRfYWxsX2Zvcm1hdHMoY29uc3QgdWlu dDMyX3QgKipmb3JtYXRzLCBpbnQgKmZvcm1hdF9jb3VudCk7CiAKZGlmZiAtLWdpdCBhL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKaW5kZXggOGI2OGU1 Mi4uYTJjZDZhYiAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKKysrIGIvbGli L2ludGVsX2JhdGNoYnVmZmVyLmMKQEAgLTUxOCw3ICs1MTgsNyBAQCBzdGF0aWMgdWludDMyX3Qg ZmFzdF9jb3B5X2R3b3JkMCh1bnNpZ25lZCBpbnQgc3JjX3RpbGluZywKIH0KIAogc3RhdGljIHVp bnQzMl90IGZhc3RfY29weV9kd29yZDEodW5zaWduZWQgaW50IHNyY190aWxpbmcsCi0JCQkJIHVu c2lnbmVkIGludCBkc3RfdGlsaW5nKQorCQkJCSB1bnNpZ25lZCBpbnQgZHN0X3RpbGluZywgdWlu dDMyX3QgY29sb3JfZGVwdGgpCiB7CiAJdWludDMyX3QgZHdvcmQxID0gMDsKIApAQCAtNTI3LDcg KzUyNywxMCBAQCBzdGF0aWMgdWludDMyX3QgZmFzdF9jb3B5X2R3b3JkMSh1bnNpZ25lZCBpbnQg c3JjX3RpbGluZywKIAlpZiAoZHN0X3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZikKIAkJZHdvcmQx IHw9IFhZX0ZBU1RfQ09QWV9EU1RfVElMSU5HX1lmOwogCi0JZHdvcmQxIHw9IFhZX0ZBU1RfQ09Q WV9DT0xPUl9ERVBUSF8zMjsKKwlpZiAoY29sb3JfZGVwdGggPT0gOCkKKwkJZHdvcmQxIHw9IFhZ X0ZBU1RfQ09QWV9DT0xPUl9ERVBUSF84OworCWVsc2UKKwkJZHdvcmQxIHw9IFhZX0ZBU1RfQ09Q WV9DT0xPUl9ERVBUSF8zMjsKIAogCXJldHVybiBkd29yZDE7CiB9CkBAIC01ODUsNiArNTg4LDcg QEAgc3RhdGljIHZvaWQgZXhlY19ibGl0KGludCBmZCwKICAqIEBzcmNfeTogWSBjb29yZGluYXRl IG9mIHRoZSBzb3VyY2UgcmVnaW9uIHRvIGNvcHkKICAqIEB3aWR0aDogV2lkdGggb2YgdGhlIHJl Z2lvbiB0byBjb3B5CiAgKiBAaGVpZ2h0OiBIZWlnaHQgb2YgdGhlIHJlZ2lvbiB0byBjb3B5Cisg KiBAY29sb3JfZGVwdGg6IENvbG9yIGRlcHRoIG9mIHRoZSBidWZmZXIKICAqIEBkc3RfaGFuZGxl OiBHRU0gaGFuZGxlIG9mIHRoZSBzb3VyY2UgYnVmZmVyCiAgKiBAZHN0X3N0cmlkZTogU3RyaWRl IChpbiBieXRlcykgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgogICogQGRzdF90aWxpbmc6IFRp bGluZyBtb2RlIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKQEAgLTYwMiw2ICs2MDYsNyBAQCB2 b2lkIGlndF9ibGl0dGVyX2Zhc3RfY29weV9fcmF3KGludCBmZCwKIAogCQkJCS8qIHNpemUgKi8K IAkJCQl1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCisJCQkJdWludDMy X3QgY29sb3JfZGVwdGgsCiAKIAkJCQkvKiBkc3QgKi8KIAkJCQl1aW50MzJfdCBkc3RfaGFuZGxl LApAQCAtNjIwLDcgKzYyNSw3IEBAIHZvaWQgaWd0X2JsaXR0ZXJfZmFzdF9jb3B5X19yYXcoaW50 IGZkLAogCXNyY19waXRjaCA9IGZhc3RfY29weV9waXRjaChzcmNfc3RyaWRlLCBzcmNfdGlsaW5n KTsKIAlkc3RfcGl0Y2ggPSBmYXN0X2NvcHlfcGl0Y2goZHN0X3N0cmlkZSwgZHN0X3RpbGluZyk7 CiAJZHdvcmQwID0gZmFzdF9jb3B5X2R3b3JkMChzcmNfdGlsaW5nLCBkc3RfdGlsaW5nKTsKLQlk d29yZDEgPSBmYXN0X2NvcHlfZHdvcmQxKHNyY190aWxpbmcsIGRzdF90aWxpbmcpOworCWR3b3Jk MSA9IGZhc3RfY29weV9kd29yZDEoc3JjX3RpbGluZywgZHN0X3RpbGluZywgY29sb3JfZGVwdGgp OwogCiAjZGVmaW5lIENIRUNLX1JBTkdFKHgpCSgoeCkgPj0gMCAmJiAoeCkgPCAoMSA8PCAxNSkp CiAJYXNzZXJ0KENIRUNLX1JBTkdFKHNyY194KSAmJiBDSEVDS19SQU5HRShzcmNfeSkgJiYKQEAg LTY3MCw2ICs2NzUsNyBAQCB2b2lkIGlndF9ibGl0dGVyX2Zhc3RfY29weV9fcmF3KGludCBmZCwK ICAqIEBzcmNfeTogc291cmNlIHBpeGVsIHktY29vcmRpbmF0aW9uCiAgKiBAd2lkdGg6IHdpZHRo IG9mIHRoZSBjb3BpZWQgcmVjdGFuZ2xlCiAgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgdGhlIGNvcGll ZCByZWN0YW5nbGUKKyAqIEBjb2xvcl9kZXB0aDogQ29sb3IgZGVwdGggb2YgdGhlIGJ1ZmZlcgog ICogQGRzdDogZGVzdGluYXRpb24gaS1nLXQgYnVmZmVyIG9iamVjdAogICogQGRzdF94OiBkZXN0 aW5hdGlvbiBwaXhlbCB4LWNvb3JkaW5hdGlvbgogICogQGRzdF95OiBkZXN0aW5hdGlvbiBwaXhl bCB5LWNvb3JkaW5hdGlvbgpAQCAtNjgwLDcgKzY4Niw3IEBAIHZvaWQgaWd0X2JsaXR0ZXJfZmFz dF9jb3B5X19yYXcoaW50IGZkLAogICovCiB2b2lkIGlndF9ibGl0dGVyX2Zhc3RfY29weShzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCQkJICAgc3RydWN0IGlndF9idWYgKnNyYywg dW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LAotCQkJICAgdW5zaWduZWQgd2lkdGgsIHVu c2lnbmVkIGhlaWdodCwKKwkJCSAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVp bnQzMl90IGNvbG9yX2RlcHRoLAogCQkJICAgc3RydWN0IGlndF9idWYgKmRzdCwgdW5zaWduZWQg ZHN0X3gsIHVuc2lnbmVkIGRzdF95KQogewogCXVpbnQzMl90IHNyY19waXRjaCwgZHN0X3BpdGNo OwpAQCAtNjg5LDcgKzY5NSw3IEBAIHZvaWQgaWd0X2JsaXR0ZXJfZmFzdF9jb3B5KHN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJc3JjX3BpdGNoID0gZmFzdF9jb3B5X3BpdGNoKHNy Yy0+c3RyaWRlLCBzcmMtPnRpbGluZyk7CiAJZHN0X3BpdGNoID0gZmFzdF9jb3B5X3BpdGNoKGRz dC0+c3RyaWRlLCBzcmMtPnRpbGluZyk7CiAJZHdvcmQwID0gZmFzdF9jb3B5X2R3b3JkMChzcmMt PnRpbGluZywgZHN0LT50aWxpbmcpOwotCWR3b3JkMSA9IGZhc3RfY29weV9kd29yZDEoc3JjLT50 aWxpbmcsIGRzdC0+dGlsaW5nKTsKKwlkd29yZDEgPSBmYXN0X2NvcHlfZHdvcmQxKHNyYy0+dGls aW5nLCBkc3QtPnRpbGluZywgY29sb3JfZGVwdGgpOwogCiAjZGVmaW5lIENIRUNLX1JBTkdFKHgp CSgoeCkgPj0gMCAmJiAoeCkgPCAoMSA8PCAxNSkpCiAJYXNzZXJ0KENIRUNLX1JBTkdFKHNyY194 KSAmJiBDSEVDS19SQU5HRShzcmNfeSkgJiYKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1 ZmZlci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggNjJjODM5Ni4uMGUwZmVlZCAx MDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVsX2JhdGNo YnVmZmVyLmgKQEAgLTIyNiw3ICsyMjYsNyBAQCB1bnNpZ25lZCBpZ3RfYnVmX2hlaWdodChzdHJ1 Y3QgaWd0X2J1ZiAqYnVmKTsKIAogdm9pZCBpZ3RfYmxpdHRlcl9mYXN0X2NvcHkoc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJCSAgc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWdu ZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LAotCQkJICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg aGVpZ2h0LAorCQkJICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1aW50MzJfdCBj b2xvcl9kZXB0aCwKIAkJCSAgc3RydWN0IGlndF9idWYgKmRzdCwgdW5zaWduZWQgZHN0X3gsIHVu c2lnbmVkIGRzdF95KTsKIAogdm9pZCBpZ3RfYmxpdHRlcl9mYXN0X2NvcHlfX3JhdyhpbnQgZmQs CkBAIC0yMzgsNiArMjM4LDcgQEAgdm9pZCBpZ3RfYmxpdHRlcl9mYXN0X2NvcHlfX3JhdyhpbnQg ZmQsCiAKIAkJCQkvKiBzaXplICovCiAJCQkJdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBp bnQgaGVpZ2h0LAorCQkJCXVpbnQzMl90IGNvbG9yX2RlcHRoLAogCiAJCQkJLyogZHN0ICovCiAJ CQkJdWludDMyX3QgZHN0X2hhbmRsZSwKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9yZWcuaCBiL2xp Yi9pbnRlbF9yZWcuaAppbmRleCAwZmZhODAzLi45ZjNkZTdhIDEwMDY0NAotLS0gYS9saWIvaW50 ZWxfcmVnLmgKKysrIGIvbGliL2ludGVsX3JlZy5oCkBAIC0yNTMwLDYgKzI1MzAsNyBAQCBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KIC8qIGR3 b3JkIDEgKi8KICNkZWZpbmUgICBYWV9GQVNUX0NPUFlfU1JDX1RJTElOR19ZZgkJCSgxIDw8ICAz MSkKICNkZWZpbmUgICBYWV9GQVNUX0NPUFlfRFNUX1RJTElOR19ZZgkJCSgxIDw8ICAzMCkKKyNk ZWZpbmUgICBYWV9GQVNUX0NPUFlfQ09MT1JfREVQVEhfOCAJCQkoMCAgPDwgMjQpCiAjZGVmaW5l ICAgWFlfRkFTVF9DT1BZX0NPTE9SX0RFUFRIXzMyCQkJKDMgIDw8IDI0KQogCiAjZGVmaW5lIE1J X1NUT1JFX0RXT1JEX0lNTQkJKCgweDIwPDwyMyl8MikKZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93 cmFwcGVycy5jIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKaW5kZXggYTI2OWQwZi4uOTM3MTdhMCAx MDA2NDQKLS0tIGEvbGliL2lvY3RsX3dyYXBwZXJzLmMKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJz LmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCiAjaW5jbHVk ZSAiaW50ZWxfaW8uaCIKICNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgorI2luY2x1ZGUgImlndF9m Yi5oIgogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMuaCIK QEAgLTEyMjEsNyArMTIyMiw3IEBAIHZvaWQgaWd0X3JlcXVpcmVfZmJfbW9kaWZpZXJzKGludCBm ZCkKIAogaW50IF9fa21zX2FkZGZiKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCB3 aWR0aCwgdWludDMyX3QgaGVpZ2h0LAogCQl1aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IHBpeGVs X2Zvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIsCi0JCXVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAq YnVmX2lkKQorCQl1aW50MzJfdCB1dl9vZmZzZXQsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAq YnVmX2lkKQogewogCXN0cnVjdCBsb2NhbF9kcm1fbW9kZV9mYl9jbWQyIGY7CiAJaW50IHJldDsK QEAgLTEyMzgsNiArMTIzOSwxMyBAQCBpbnQgX19rbXNfYWRkZmIoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCiAJZi5waXRjaGVzWzBdID0g c3RyaWRlOwogCWYubW9kaWZpZXJbMF0gPSBtb2RpZmllcjsKIAorCWlmIChwaXhlbF9mb3JtYXQg PT0gRFJNX0ZPUk1BVF9OVjEyKSB7CisJCWYuaGFuZGxlc1sxXSA9IGhhbmRsZTsKKwkJZi5waXRj aGVzWzFdID0gc3RyaWRlOworCQlmLm9mZnNldHNbMV0gPSB1dl9vZmZzZXQ7CisJCWYubW9kaWZp ZXJbMV0gPSBtb2RpZmllcjsKKwl9CisKIAlyZXQgPSBkcm1Jb2N0bChmZCwgTE9DQUxfRFJNX0lP Q1RMX01PREVfQURERkIyLCAmZik7CiAKIAkqYnVmX2lkID0gZi5mYl9pZDsKZGlmZiAtLWdpdCBh L2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3RsX3dyYXBwZXJzLmgKaW5kZXggYmM1ZDRi ZC4uM2Q5M2E1ZSAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dyYXBwZXJzLmgKKysrIGIvbGliL2lv Y3RsX3dyYXBwZXJzLmgKQEAgLTE3NSw2ICsxNzUsNiBAQCB2b2lkIGlndF9yZXF1aXJlX2ZiX21v ZGlmaWVycyhpbnQgZmQpOwogICovCiBpbnQgX19rbXNfYWRkZmIoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCiAJCXVpbnQzMl90IHN0cmlk ZSwgdWludDMyX3QgcGl4ZWxfZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllciwKLQkJdWludDMyX3Qg ZmxhZ3MsIHVpbnQzMl90ICpidWZfaWQpOworCQl1aW50MzJfdCB1dl9vZmZzZXQsIHVpbnQzMl90 IGZsYWdzLCB1aW50MzJfdCAqYnVmX2lkKTsKIAogI2VuZGlmIC8qIElPQ1RMX1dSQVBQRVJTX0gg Ki8KZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19yZW5kZXIuYyBiL3Rlc3RzL2ttc19yZW5kZXIuYwpp bmRleCAxNzU5ZWFhLi40YTdhYWVjIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfcmVuZGVyLmMKKysr IGIvdGVzdHMva21zX3JlbmRlci5jCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyB2b2lkIGdwdV9i bGl0KHN0cnVjdCBpZ3RfZmIgKmRzdF9mYiwgc3RydWN0IGlndF9mYiAqc3JjX2ZiKQogCiAJaWd0 X2Fzc2VydChkc3RfZmItPmRybV9mb3JtYXQgPT0gc3JjX2ZiLT5kcm1fZm9ybWF0KTsKIAlpZ3Rf YXNzZXJ0KHNyY19mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjU2NSB8fAotCSAgICAg ICBpZ3RfZHJtX2Zvcm1hdF90b19icHAoc3JjX2ZiLT5kcm1fZm9ybWF0KSAhPSAxNik7Ci0JYnBw ID0gaWd0X2RybV9mb3JtYXRfdG9fYnBwKHNyY19mYi0+ZHJtX2Zvcm1hdCk7CisJICAgICAgIGln dF9kcm1fZm9ybWF0X3RvX2JwcChzcmNfZmItPmRybV9mb3JtYXQsIDApICE9IDE2KTsKKwlicHAg PSBpZ3RfZHJtX2Zvcm1hdF90b19icHAoc3JjX2ZiLT5kcm1fZm9ybWF0LCAwKTsKIAlkc3RfYm8g PSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGRybV9mZCwgImRlc3RpbmF0aW9uIiwK IAkJCQkJIGRzdF9mYi0+Z2VtX2hhbmRsZSk7CiAJaWd0X2Fzc2VydChkc3RfYm8pOwotLSAKMS45 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==