From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 14/18] drm/i915/selftests: modify the gtt tests to also exercise huge pages Date: Tue, 4 Apr 2017 23:11:24 +0100 Message-ID: <20170404221128.3943-15-matthew.auld@intel.com> References: <20170404221128.3943-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8D2906E6F7 for ; Tue, 4 Apr 2017 22:11:45 +0000 (UTC) In-Reply-To: <20170404221128.3943-1-matthew.auld@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 List-Id: intel-gfx@lists.freedesktop.org djI6IHMvcm91bmR1cC9yb3VuZF91cAogICAgcy9yb3VuZGRvd24vcm91bmRfZG93bgoKU2lnbmVk LW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyB8IDEyMyArKysrKysrKysr KysrKysrKystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0 LmMgICAgIHwgICAzICsKIDIgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMzcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0 dC5jCmluZGV4IDA5NjNkY2I2Nzk5Ni4uZTczNWRlM2Q5OTc1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCkBAIC05MiwxMiArOTIsMTQgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBmYWtlX29wcyA9IHsKIH07 CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCi1mYWtlX2RtYV9vYmplY3Qo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU2NCBzaXplKQorZmFrZV9kbWFfb2JqZWN0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1NjQgc2l6ZSwgdW5zaWduZWQgaW50IHBh Z2Vfc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCiAJR0VNX0JV R19PTighc2l6ZSk7Ci0JR0VNX0JVR19PTighSVNfQUxJR05FRChzaXplLCBJOTE1X0dUVF9QQUdF X1NJWkUpKTsKKwlHRU1fQlVHX09OKCFpc192YWxpZF9ndHRfcGFnZV9zaXplKHBhZ2Vfc2l6ZSkp OworCisJc2l6ZSA9IHJvdW5kX3VwKHNpemUsIHBhZ2Vfc2l6ZSk7CiAKIAlpZiAob3ZlcmZsb3dz X3R5cGUoc2l6ZSwgb2JqLT5iYXNlLnNpemUpKQogCQlyZXR1cm4gRVJSX1BUUigtRTJCSUcpOwpA QCAtMTA3LDggKzEwOSwxMyBAQCBmYWtlX2RtYV9vYmplY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsIHU2NCBzaXplKQogCQlnb3RvIGVycjsKIAogCWRybV9nZW1fcHJpdmF0ZV9vYmpl Y3RfaW5pdCgmaTkxNS0+ZHJtLCAmb2JqLT5iYXNlLCBzaXplKTsKKwogCWk5MTVfZ2VtX29iamVj dF9pbml0KG9iaiwgJmZha2Vfb3BzKTsKIAorCW9iai0+Z3R0X3BhZ2Vfc2l6ZSA9IG9iai0+cGFn ZV9zaXplID0gcGFnZV9zaXplOworCisJR0VNX0JVR19PTighSVNfQUxJR05FRChvYmotPmJhc2Uu c2l6ZSwgb2JqLT5wYWdlX3NpemUpKTsKKwogCW9iai0+YmFzZS53cml0ZV9kb21haW4gPSBJOTE1 X0dFTV9ET01BSU5fQ1BVOwogCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01B SU5fQ1BVOwogCW9iai0+Y2FjaGVfbGV2ZWwgPSBJOTE1X0NBQ0hFX05PTkU7CkBAIC0xOTQsMTMg KzIwMSwxNCBAQCBzdGF0aWMgaW50IGlndF9wcGd0dF9hbGxvYyh2b2lkICphcmcpCiBzdGF0aWMg aW50IGxvd2xldmVsX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkgc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkgdTY0IGhvbGVfc3RhcnQsIHU2NCBob2xl X2VuZCwKKwkJCSB1bnNpZ25lZCBpbnQgcGFnZV9zaXplLAogCQkJIHVuc2lnbmVkIGxvbmcgZW5k X3RpbWUpCiB7CiAJSTkxNV9STkRfU1RBVEUoc2VlZF9wcm5nKTsKIAl1bnNpZ25lZCBpbnQgc2l6 ZTsKIAogCS8qIEtlZXAgY3JlYXRpbmcgbGFyZ2VyIG9iamVjdHMgdW50aWwgb25lIGNhbm5vdCBm aXQgaW50byB0aGUgaG9sZSAqLwotCWZvciAoc2l6ZSA9IDEyOyAoaG9sZV9lbmQgLSBob2xlX3N0 YXJ0KSA+PiBzaXplOyBzaXplKyspIHsKKwlmb3IgKHNpemUgPSBpbG9nMihwYWdlX3NpemUpOyAo aG9sZV9lbmQgLSBob2xlX3N0YXJ0KSA+PiBzaXplOyBzaXplKyspIHsKIAkJSTkxNV9STkRfU1VC U1RBVEUocHJuZywgc2VlZF9wcm5nKTsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKIAkJdW5zaWduZWQgaW50ICpvcmRlciwgY291bnQsIG47CkBAIC0yMjYsNyArMjM0LDcgQEAg c3RhdGljIGludCBsb3dsZXZlbF9ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAog CQkgKiBtZW1vcnkuIFdlIGV4cGVjdCB0byBoaXQgLUVOT01FTS4KIAkJICovCiAKLQkJb2JqID0g ZmFrZV9kbWFfb2JqZWN0KGk5MTUsIEJJVF9VTEwoc2l6ZSkpOworCQlvYmogPSBmYWtlX2RtYV9v YmplY3QoaTkxNSwgQklUX1VMTChzaXplKSwgcGFnZV9zaXplKTsKIAkJaWYgKElTX0VSUihvYmop KSB7CiAJCQlrZnJlZShvcmRlcik7CiAJCQlicmVhazsKQEAgLTMwMywxOCArMzExLDI1IEBAIHN0 YXRpYyB2b2lkIGNsb3NlX29iamVjdF9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKm9iamVjdHMsCiBz dGF0aWMgaW50IGZpbGxfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICAg ICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJICAgICB1NjQgaG9sZV9zdGFydCwg dTY0IGhvbGVfZW5kLAorCQkgICAgIHVuc2lnbmVkIGludCBwYWdlX3NpemUsCiAJCSAgICAgdW5z aWduZWQgbG9uZyBlbmRfdGltZSkKIHsKIAljb25zdCB1NjQgaG9sZV9zaXplID0gaG9sZV9lbmQg LSBob2xlX3N0YXJ0OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0JY29uc3Qg dW5zaWduZWQgbG9uZyBtYXhfcGFnZXMgPQotCQltaW5fdCh1NjQsIFVMT05HX01BWCAtIDEsIGhv bGVfc2l6ZS8yID4+IFBBR0VfU0hJRlQpOwotCWNvbnN0IHVuc2lnbmVkIGxvbmcgbWF4X3N0ZXAg PSBtYXgoaW50X3NxcnQobWF4X3BhZ2VzKSwgMlVMKTsKLQl1bnNpZ25lZCBsb25nIG5wYWdlcywg cHJpbWUsIGZsYWdzOworCWNvbnN0IHVuc2lnbmVkIHBhZ2Vfc2hpZnQgPSBpbG9nMihwYWdlX3Np emUpOworCXVuc2lnbmVkIGxvbmcgbWF4X3BhZ2VzLCBtYXhfc3RlcCwgbnBhZ2VzLCBwcmltZSwg ZmxhZ3M7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJTElTVF9IRUFEKG9iamVjdHMpOwogCWlu dCBlcnI7CiAKKwlob2xlX3N0YXJ0ID0gcm91bmRfdXAoaG9sZV9zdGFydCwgcGFnZV9zaXplKTsK Kwlob2xlX2VuZCA9IHJvdW5kX2Rvd24oaG9sZV9lbmQsIHBhZ2Vfc2l6ZSk7CisKKwlHRU1fQlVH X09OKGhvbGVfc3RhcnQgPj0gaG9sZV9lbmQpOworCisJbWF4X3BhZ2VzID0gbWluX3QodTY0LCBV TE9OR19NQVggLSAxLCBob2xlX3NpemUvMiA+PiBwYWdlX3NoaWZ0KTsKKwltYXhfc3RlcCA9IG1h eChpbnRfc3FydChtYXhfcGFnZXMpLCAyVUwpOworCiAJLyogVHJ5IGJpbmRpbmcgbWFueSBWTUEg d29ya2luZyBpbndhcmRzIGZyb20gZWl0aGVyIGVkZ2UgKi8KIAogCWZsYWdzID0gUElOX09GRlNF VF9GSVhFRCB8IFBJTl9VU0VSOwpAQCAtMzIzLDcgKzMzOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9o b2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCiAJZm9yX2VhY2hfcHJpbWVfbnVt YmVyX2Zyb20ocHJpbWUsIDIsIG1heF9zdGVwKSB7CiAJCWZvciAobnBhZ2VzID0gMTsgbnBhZ2Vz IDw9IG1heF9wYWdlczsgbnBhZ2VzICo9IHByaW1lKSB7Ci0JCQljb25zdCB1NjQgZnVsbF9zaXpl ID0gbnBhZ2VzIDw8IFBBR0VfU0hJRlQ7CisJCQljb25zdCB1NjQgZnVsbF9zaXplID0gbnBhZ2Vz IDw8IHBhZ2Vfc2hpZnQ7CiAJCQljb25zdCBzdHJ1Y3QgewogCQkJCWNvbnN0IGNoYXIgKm5hbWU7 CiAJCQkJdTY0IG9mZnNldDsKQEAgLTMzNCw3ICszNDksNyBAQCBzdGF0aWMgaW50IGZpbGxfaG9s ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQl7IH0KIAkJCX0sICpwOwogCi0J CQlvYmogPSBmYWtlX2RtYV9vYmplY3QoaTkxNSwgZnVsbF9zaXplKTsKKwkJCW9iaiA9IGZha2Vf ZG1hX29iamVjdChpOTE1LCBmdWxsX3NpemUsIHBhZ2Vfc2l6ZSk7CiAJCQlpZiAoSVNfRVJSKG9i aikpCiAJCQkJYnJlYWs7CiAKQEAgLTM1OSw3ICszNzQsNyBAQCBzdGF0aWMgaW50IGZpbGxfaG9s ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkJCW9mZnNldCAtPSBvYmotPmJh c2Uuc2l6ZTsKIAkJCQkJfQogCi0JCQkJCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIG9m ZnNldCB8IGZsYWdzKTsKKwkJCQkJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgcGFnZV9zaXpl LCBvZmZzZXQgfCBmbGFncyk7CiAJCQkJCWlmIChlcnIpIHsKIAkJCQkJCXByX2VycigiJXMoJXMp IHBpbiAoZm9yd2FyZCkgZmFpbGVkIHdpdGggZXJyPSVkIG9uIHNpemU9JWx1IHBhZ2VzIChwcmlt ZT0lbHUpLCBvZmZzZXQ9JWxseFxuIiwKIAkJCQkJCSAgICAgICBfX2Z1bmNfXywgcC0+bmFtZSwg ZXJyLCBucGFnZXMsIHByaW1lLCBvZmZzZXQpOwpAQCAtMzY3LDcgKzM4Miw3IEBAIHN0YXRpYyBp bnQgZmlsbF9ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCQl9CiAKIAkJ CQkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkgfHwKLQkJCQkJICAgIGk5 MTVfdm1hX21pc3BsYWNlZCh2bWEsIDAsIDAsIG9mZnNldCB8IGZsYWdzKSkgeworCQkJCQkgICAg aTkxNV92bWFfbWlzcGxhY2VkKHZtYSwgMCwgcGFnZV9zaXplLCBvZmZzZXQgfCBmbGFncykpIHsK IAkJCQkJCXByX2VycigiJXMoJXMpIChmb3J3YXJkKSBpbnNlcnQgZmFpbGVkOiB2bWEubm9kZT0l bGx4ICsgJWxseCBbYWxsb2NhdGVkPyAlZF0sIGV4cGVjdGVkIG9mZnNldCAlbGx4XG4iLAogCQkJ CQkJICAgICAgIF9fZnVuY19fLCBwLT5uYW1lLCB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+bm9kZS5z aXplLCBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSksCiAJCQkJCQkgICAgICAgb2Zm c2V0KTsKQEAgLTM5Nyw3ICs0MTIsNyBAQCBzdGF0aWMgaW50IGZpbGxfaG9sZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkJfQogCiAJCQkJCWlmICghZHJtX21tX25vZGVfYWxs b2NhdGVkKCZ2bWEtPm5vZGUpIHx8Ci0JCQkJCSAgICBpOTE1X3ZtYV9taXNwbGFjZWQodm1hLCAw LCAwLCBvZmZzZXQgfCBmbGFncykpIHsKKwkJCQkJICAgIGk5MTVfdm1hX21pc3BsYWNlZCh2bWEs IDAsIHBhZ2Vfc2l6ZSwgb2Zmc2V0IHwgZmxhZ3MpKSB7CiAJCQkJCQlwcl9lcnIoIiVzKCVzKSAo Zm9yd2FyZCkgbW92ZWQgdm1hLm5vZGU9JWxseCArICVsbHgsIGV4cGVjdGVkIG9mZnNldCAlbGx4 XG4iLAogCQkJCQkJICAgICAgIF9fZnVuY19fLCBwLT5uYW1lLCB2bWEtPm5vZGUuc3RhcnQsIHZt YS0+bm9kZS5zaXplLAogCQkJCQkJICAgICAgIG9mZnNldCk7CkBAIC00MzIsNyArNDQ3LDcgQEAg c3RhdGljIGludCBmaWxsX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJ CQlvZmZzZXQgLT0gb2JqLT5iYXNlLnNpemU7CiAJCQkJCX0KIAotCQkJCQllcnIgPSBpOTE1X3Zt YV9waW4odm1hLCAwLCAwLCBvZmZzZXQgfCBmbGFncyk7CisJCQkJCWVyciA9IGk5MTVfdm1hX3Bp bih2bWEsIDAsIHBhZ2Vfc2l6ZSwgb2Zmc2V0IHwgZmxhZ3MpOwogCQkJCQlpZiAoZXJyKSB7CiAJ CQkJCQlwcl9lcnIoIiVzKCVzKSBwaW4gKGJhY2t3YXJkKSBmYWlsZWQgd2l0aCBlcnI9JWQgb24g c2l6ZT0lbHUgcGFnZXMgKHByaW1lPSVsdSksIG9mZnNldD0lbGx4XG4iLAogCQkJCQkJICAgICAg IF9fZnVuY19fLCBwLT5uYW1lLCBlcnIsIG5wYWdlcywgcHJpbWUsIG9mZnNldCk7CkBAIC00NDAs NyArNDU1LDcgQEAgc3RhdGljIGludCBmaWxsX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJCQkJCX0KIAogCQkJCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5u b2RlKSB8fAotCQkJCQkgICAgaTkxNV92bWFfbWlzcGxhY2VkKHZtYSwgMCwgMCwgb2Zmc2V0IHwg ZmxhZ3MpKSB7CisJCQkJCSAgICBpOTE1X3ZtYV9taXNwbGFjZWQodm1hLCAwLCBwYWdlX3NpemUs IG9mZnNldCB8IGZsYWdzKSkgewogCQkJCQkJcHJfZXJyKCIlcyglcykgKGJhY2t3YXJkKSBpbnNl cnQgZmFpbGVkOiB2bWEubm9kZT0lbGx4ICsgJWxseCBbYWxsb2NhdGVkPyAlZF0sIGV4cGVjdGVk IG9mZnNldCAlbGx4XG4iLAogCQkJCQkJICAgICAgIF9fZnVuY19fLCBwLT5uYW1lLCB2bWEtPm5v ZGUuc3RhcnQsIHZtYS0+bm9kZS5zaXplLCBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9k ZSksCiAJCQkJCQkgICAgICAgb2Zmc2V0KTsKQEAgLTQ3MCw3ICs0ODUsNyBAQCBzdGF0aWMgaW50 IGZpbGxfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkJfQogCiAJCQkJ CWlmICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpIHx8Ci0JCQkJCSAgICBpOTE1 X3ZtYV9taXNwbGFjZWQodm1hLCAwLCAwLCBvZmZzZXQgfCBmbGFncykpIHsKKwkJCQkJICAgIGk5 MTVfdm1hX21pc3BsYWNlZCh2bWEsIDAsIHBhZ2Vfc2l6ZSwgb2Zmc2V0IHwgZmxhZ3MpKSB7CiAJ CQkJCQlwcl9lcnIoIiVzKCVzKSAoYmFja3dhcmQpIG1vdmVkIHZtYS5ub2RlPSVsbHggKyAlbGx4 IFthbGxvY2F0ZWQ/ICVkXSwgZXhwZWN0ZWQgb2Zmc2V0ICVsbHhcbiIsCiAJCQkJCQkgICAgICAg X19mdW5jX18sIHAtPm5hbWUsIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5ub2RlLnNpemUsIGRybV9t bV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSwKIAkJCQkJCSAgICAgICBvZmZzZXQpOwpAQCAt NTE0LDExICs1MjksMTMgQEAgc3RhdGljIGludCBmaWxsX2hvbGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiBzdGF0aWMgaW50IHdhbGtfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIAkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJICAgICB1 NjQgaG9sZV9zdGFydCwgdTY0IGhvbGVfZW5kLAorCQkgICAgIHVuc2lnbmVkIGludCBwYWdlX3Np emUsCiAJCSAgICAgdW5zaWduZWQgbG9uZyBlbmRfdGltZSkKIHsKIAljb25zdCB1NjQgaG9sZV9z aXplID0gaG9sZV9lbmQgLSBob2xlX3N0YXJ0OworCWNvbnN0IHVuc2lnbmVkIHBhZ2Vfc2hpZnQg PSBpbG9nMihwYWdlX3NpemUpOwogCWNvbnN0IHVuc2lnbmVkIGxvbmcgbWF4X3BhZ2VzID0KLQkJ bWluX3QodTY0LCBVTE9OR19NQVggLSAxLCBob2xlX3NpemUgPj4gUEFHRV9TSElGVCk7CisJCW1p bl90KHU2NCwgVUxPTkdfTUFYIC0gMSwgaG9sZV9zaXplID4+IHBhZ2Vfc2hpZnQpOwogCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CiAJdTY0IHNpemU7CiAKQEAgLTUzNCw3ICs1NTEsNyBAQCBzdGF0aWMg aW50IHdhbGtfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJdTY0IGFkZHI7 CiAJCWludCBlcnIgPSAwOwogCi0JCW9iaiA9IGZha2VfZG1hX29iamVjdChpOTE1LCBzaXplIDw8 IFBBR0VfU0hJRlQpOworCQlvYmogPSBmYWtlX2RtYV9vYmplY3QoaTkxNSwgc2l6ZSA8PCBwYWdl X3NoaWZ0LCBwYWdlX3NpemUpOwogCQlpZiAoSVNfRVJSKG9iaikpCiAJCQlicmVhazsKIApAQCAt NTQ3LDcgKzU2NCw3IEBAIHN0YXRpYyBpbnQgd2Fsa19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAogCQlmb3IgKGFkZHIgPSBob2xlX3N0YXJ0OwogCQkgICAgIGFkZHIgKyBvYmot PmJhc2Uuc2l6ZSA8IGhvbGVfZW5kOwogCQkgICAgIGFkZHIgKz0gb2JqLT5iYXNlLnNpemUpIHsK LQkJCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIGFkZHIgfCBmbGFncyk7CisJCQllcnIg PSBpOTE1X3ZtYV9waW4odm1hLCAwLCBwYWdlX3NpemUsIGFkZHIgfCBmbGFncyk7CiAJCQlpZiAo ZXJyKSB7CiAJCQkJcHJfZXJyKCIlcyBiaW5kIGZhaWxlZCBhdCAlbGx4ICsgJWxseCBbaG9sZSAl bGx4LSAlbGx4XSB3aXRoIGVycj0lZFxuIiwKIAkJCQkgICAgICAgX19mdW5jX18sIGFkZHIsIHZt YS0+c2l6ZSwKQEAgLTU1Nyw3ICs1NzQsNyBAQCBzdGF0aWMgaW50IHdhbGtfaG9sZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCWk5MTVfdm1hX3VucGluKHZtYSk7CiAKIAkJCWlm ICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpIHx8Ci0JCQkgICAgaTkxNV92bWFf bWlzcGxhY2VkKHZtYSwgMCwgMCwgYWRkciB8IGZsYWdzKSkgeworCQkJICAgIGk5MTVfdm1hX21p c3BsYWNlZCh2bWEsIDAsIHBhZ2Vfc2l6ZSwgYWRkciB8IGZsYWdzKSkgewogCQkJCXByX2Vycigi JXMgaW5jb3JyZWN0IGF0ICVsbHggKyAlbGx4XG4iLAogCQkJCSAgICAgICBfX2Z1bmNfXywgYWRk ciwgdm1hLT5zaXplKTsKIAkJCQllcnIgPSAtRUlOVkFMOwpAQCAtNTk2LDYgKzYxMyw3IEBAIHN0 YXRpYyBpbnQgd2Fsa19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogc3RhdGlj IGludCBwb3RfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICAgIHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkgICAgdTY0IGhvbGVfc3RhcnQsIHU2NCBob2xl X2VuZCwKKwkJICAgIHVuc2lnbmVkIGludCBwYWdlX3NpemUsCiAJCSAgICB1bnNpZ25lZCBsb25n IGVuZF90aW1lKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC02MDgs NyArNjI2LDcgQEAgc3RhdGljIGludCBwb3RfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKIAlpZiAoaTkxNV9pc19nZ3R0KHZtKSkKIAkJZmxhZ3MgfD0gUElOX0dMT0JBTDsKIAot CW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgMiAqIEk5MTVfR1RU X1BBR0VfU0laRSk7CisJb2JqID0gZmFrZV9kbWFfb2JqZWN0KGk5MTUsIDIgKiBwYWdlX3NpemUs IHBhZ2Vfc2l6ZSk7CiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwog CkBAIC02MjAsMTUgKzYzOCwxNSBAQCBzdGF0aWMgaW50IHBvdF9ob2xlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCiAJLyogSW5zZXJ0IGEgcGFpciBvZiBwYWdlcyBhY3Jvc3MgZXZl cnkgcG90IGJvdW5kYXJ5IHdpdGhpbiB0aGUgaG9sZSAqLwogCWZvciAocG90ID0gZmxzNjQoaG9s ZV9lbmQgLSAxKSAtIDE7Ci0JICAgICBwb3QgPiBpbG9nMigyICogSTkxNV9HVFRfUEFHRV9TSVpF KTsKKwkgICAgIHBvdCA+IGlsb2cyKDIgKiBwYWdlX3NpemUpOwogCSAgICAgcG90LS0pIHsKIAkJ dTY0IHN0ZXAgPSBCSVRfVUxMKHBvdCk7CiAJCXU2NCBhZGRyOwogCi0JCWZvciAoYWRkciA9IHJv dW5kX3VwKGhvbGVfc3RhcnQgKyBJOTE1X0dUVF9QQUdFX1NJWkUsIHN0ZXApIC0gSTkxNV9HVFRf UEFHRV9TSVpFOwotCQkgICAgIGFkZHIgPD0gcm91bmRfZG93bihob2xlX2VuZCAtIDIqSTkxNV9H VFRfUEFHRV9TSVpFLCBzdGVwKSAtIEk5MTVfR1RUX1BBR0VfU0laRTsKKwkJZm9yIChhZGRyID0g cm91bmRfdXAoaG9sZV9zdGFydCArIHBhZ2Vfc2l6ZSwgc3RlcCkgLSBwYWdlX3NpemU7CisJCSAg ICAgYWRkciA8PSByb3VuZF9kb3duKGhvbGVfZW5kIC0gMipwYWdlX3NpemUsIHN0ZXApIC0gcGFn ZV9zaXplOwogCQkgICAgIGFkZHIgKz0gc3RlcCkgewotCQkJZXJyID0gaTkxNV92bWFfcGluKHZt YSwgMCwgMCwgYWRkciB8IGZsYWdzKTsKKwkJCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIHBh Z2Vfc2l6ZSwgYWRkciB8IGZsYWdzKTsKIAkJCWlmIChlcnIpIHsKIAkJCQlwcl9lcnIoIiVzIGZh aWxlZCB0byBwaW4gb2JqZWN0IGF0ICVsbHggaW4gaG9sZSBbJWxseCAtICVsbHhdLCB3aXRoIGVy cj0lZFxuIiwKIAkJCQkgICAgICAgX19mdW5jX18sCkBAIC02NzIsNiArNjkwLDcgQEAgc3RhdGlj IGludCBwb3RfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIHN0YXRpYyBpbnQg ZHJ1bmtfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICAgICAgc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCSAgICAgIHU2NCBob2xlX3N0YXJ0LCB1NjQgaG9s ZV9lbmQsCisJCSAgICAgIHVuc2lnbmVkIGludCBwYWdlX3NpemUsCiAJCSAgICAgIHVuc2lnbmVk IGxvbmcgZW5kX3RpbWUpCiB7CiAJSTkxNV9STkRfU1RBVEUocHJuZyk7CkBAIC02ODMsNyArNzAy LDcgQEAgc3RhdGljIGludCBkcnVua19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAogCQlmbGFncyB8PSBQSU5fR0xPQkFMOwogCiAJLyogS2VlcCBjcmVhdGluZyBsYXJnZXIgb2Jq ZWN0cyB1bnRpbCBvbmUgY2Fubm90IGZpdCBpbnRvIHRoZSBob2xlICovCi0JZm9yIChzaXplID0g MTI7IChob2xlX2VuZCAtIGhvbGVfc3RhcnQpID4+IHNpemU7IHNpemUrKykgeworCWZvciAoc2l6 ZSA9IGlsb2cyKHBhZ2Vfc2l6ZSk7IChob2xlX2VuZCAtIGhvbGVfc3RhcnQpID4+IHNpemU7IHNp emUrKykgewogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCQl1bnNpZ25lZCBp bnQgKm9yZGVyLCBjb3VudCwgbjsKIAkJc3RydWN0IGk5MTVfdm1hICp2bWE7CkBAIC03MDcsNyAr NzI2LDcgQEAgc3RhdGljIGludCBkcnVua19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAogCQkgKiBtZW1vcnkuIFdlIGV4cGVjdCB0byBoaXQgLUVOT01FTS4KIAkJICovCiAKLQkJ b2JqID0gZmFrZV9kbWFfb2JqZWN0KGk5MTUsIEJJVF9VTEwoc2l6ZSkpOworCQlvYmogPSBmYWtl X2RtYV9vYmplY3QoaTkxNSwgQklUX1VMTChzaXplKSwgcGFnZV9zaXplKTsKIAkJaWYgKElTX0VS UihvYmopKSB7CiAJCQlrZnJlZShvcmRlcik7CiAJCQlicmVhazsKQEAgLTcyNCw2ICs3NDMsOCBA QCBzdGF0aWMgaW50IGRydW5rX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJ CWZvciAobiA9IDA7IG4gPCBjb3VudDsgbisrKSB7CiAJCQl1NjQgYWRkciA9IGhvbGVfc3RhcnQg KyBvcmRlcltuXSAqIEJJVF9VTEwoc2l6ZSk7CiAKKwkJCUdFTV9CVUdfT04oIUlTX0FMSUdORUQo YWRkciwgcGFnZV9zaXplKSk7CisKIAkJCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIGFk ZHIgfCBmbGFncyk7CiAJCQlpZiAoZXJyKSB7CiAJCQkJcHJfZXJyKCIlcyBmYWlsZWQgdG8gcGlu IG9iamVjdCBhdCAlbGx4ICsgJWxseCBpbiBob2xlIFslbGx4IC0gJWxseF0sIHdpdGggZXJyPSVk XG4iLApAQCAtNzM1LDcgKzc1Niw3IEBAIHN0YXRpYyBpbnQgZHJ1bmtfaG9sZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCX0KIAogCQkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0 ZWQoJnZtYS0+bm9kZSkgfHwKLQkJCSAgICBpOTE1X3ZtYV9taXNwbGFjZWQodm1hLCAwLCAwLCBh ZGRyIHwgZmxhZ3MpKSB7CisJCQkgICAgaTkxNV92bWFfbWlzcGxhY2VkKHZtYSwgMCwgcGFnZV9z aXplLCBhZGRyIHwgZmxhZ3MpKSB7CiAJCQkJcHJfZXJyKCIlcyBpbmNvcnJlY3QgYXQgJWxseCAr ICVsbHhcbiIsCiAJCQkJICAgICAgIF9fZnVuY19fLCBhZGRyLCBCSVRfVUxMKHNpemUpKTsKIAkJ CQlpOTE1X3ZtYV91bnBpbih2bWEpOwpAQCAtNzcyLDExICs3OTMsMTIgQEAgc3RhdGljIGludCBk cnVua19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogc3RhdGljIGludCBfX3No cmlua19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJIHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJIHU2NCBob2xlX3N0YXJ0LCB1NjQgaG9sZV9lbmQsCisJ CQkgdW5zaWduZWQgaW50IHBhZ2Vfc2l6ZSwKIAkJCSB1bnNpZ25lZCBsb25nIGVuZF90aW1lKQog ewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJdW5zaWduZWQgbG9uZyBmbGFn cyA9IFBJTl9PRkZTRVRfRklYRUQgfCBQSU5fVVNFUjsKLQl1bnNpZ25lZCBpbnQgb3JkZXIgPSAx MjsKKwl1bnNpZ25lZCBpbnQgb3JkZXIgPSBpbG9nMihwYWdlX3NpemUpOwogCUxJU1RfSEVBRChv YmplY3RzKTsKIAlpbnQgZXJyID0gMDsKIAl1NjQgYWRkcjsKQEAgLTc4Nyw3ICs4MDksNyBAQCBz dGF0aWMgaW50IF9fc2hyaW5rX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJ CXU2NCBzaXplID0gQklUX1VMTChvcmRlcisrKTsKIAogCQlzaXplID0gbWluKHNpemUsIGhvbGVf ZW5kIC0gYWRkcik7Ci0JCW9iaiA9IGZha2VfZG1hX29iamVjdChpOTE1LCBzaXplKTsKKwkJb2Jq ID0gZmFrZV9kbWFfb2JqZWN0KGk5MTUsIHNpemUsIHBhZ2Vfc2l6ZSk7CiAJCWlmIChJU19FUlIo b2JqKSkgewogCQkJZXJyID0gUFRSX0VSUihvYmopOwogCQkJYnJlYWs7CkBAIC04MDMsNyArODI1 LDcgQEAgc3RhdGljIGludCBfX3Nocmlua19ob2xlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAogCiAJCUdFTV9CVUdfT04odm1hLT5zaXplICE9IHNpemUpOwogCi0JCWVyciA9IGk5MTVf dm1hX3Bpbih2bWEsIDAsIDAsIGFkZHIgfCBmbGFncyk7CisJCWVyciA9IGk5MTVfdm1hX3Bpbih2 bWEsIDAsIHBhZ2Vfc2l6ZSwgYWRkciB8IGZsYWdzKTsKIAkJaWYgKGVycikgewogCQkJcHJfZXJy KCIlcyBmYWlsZWQgdG8gcGluIG9iamVjdCBhdCAlbGx4ICsgJWxseCBpbiBob2xlIFslbGx4IC0g JWxseF0sIHdpdGggZXJyPSVkXG4iLAogCQkJICAgICAgIF9fZnVuY19fLCBhZGRyLCBzaXplLCBo b2xlX3N0YXJ0LCBob2xlX2VuZCwgZXJyKTsKQEAgLTgxMSw3ICs4MzMsNyBAQCBzdGF0aWMgaW50 IF9fc2hyaW5rX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCX0KIAogCQlp ZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSB8fAotCQkgICAgaTkxNV92bWFf bWlzcGxhY2VkKHZtYSwgMCwgMCwgYWRkciB8IGZsYWdzKSkgeworCQkgICAgaTkxNV92bWFfbWlz cGxhY2VkKHZtYSwgMCwgcGFnZV9zaXplLCBhZGRyIHwgZmxhZ3MpKSB7CiAJCQlwcl9lcnIoIiVz IGluY29ycmVjdCBhdCAlbGx4ICsgJWxseFxuIiwKIAkJCSAgICAgICBfX2Z1bmNfXywgYWRkciwg c2l6ZSk7CiAJCQlpOTE1X3ZtYV91bnBpbih2bWEpOwpAQCAtODM4LDYgKzg2MCw3IEBAIHN0YXRp YyBpbnQgX19zaHJpbmtfaG9sZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIHN0YXRp YyBpbnQgc2hyaW5rX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCSAgICAg ICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJICAgICAgIHU2NCBob2xlX3N0YXJ0 LCB1NjQgaG9sZV9lbmQsCisJCSAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9zaXplLAogCQkgICAg ICAgdW5zaWduZWQgbG9uZyBlbmRfdGltZSkKIHsKIAl1bnNpZ25lZCBsb25nIHByaW1lOwpAQCAt ODQ4LDcgKzg3MSw4IEBAIHN0YXRpYyBpbnQgc2hyaW5rX2hvbGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiAKIAlmb3JfZWFjaF9wcmltZV9udW1iZXJfZnJvbShwcmltZSwgMCwgVUxP TkdfTUFYIC0gMSkgewogCQl2bS0+ZmF1bHRfYXR0ci5pbnRlcnZhbCA9IHByaW1lOwotCQllcnIg PSBfX3Nocmlua19ob2xlKGk5MTUsIHZtLCBob2xlX3N0YXJ0LCBob2xlX2VuZCwgZW5kX3RpbWUp OworCQllcnIgPSBfX3Nocmlua19ob2xlKGk5MTUsIHZtLCBob2xlX3N0YXJ0LCBob2xlX2VuZCwg cGFnZV9zaXplLAorCQkJCSAgICBlbmRfdGltZSk7CiAJCWlmIChlcnIpCiAJCQlicmVhazsKIAl9 CkBAIC04NjIsMTIgKzg4NiwyMCBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX3BwZ3R0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgaW50ICgqZnVuYykoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0sCiAJCQkJICAgICAgdTY0IGhvbGVfc3RhcnQsIHU2NCBob2xlX2VuZCwKKwkJCQkgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9zaXplLAogCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgZW5kX3RpbWUp KQogewogCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQ7CiAJSUdUX1RJTUVPVVQoZW5kX3RpbWUpOwotCWludCBlcnI7CisJdW5zaWduZWQgaW50IHBh Z2Vfc2l6ZXNbXSA9IHsKKwkJSTkxNV9HVFRfUEFHRV9TSVpFXzRLLAorCQlJOTE1X0dUVF9QQUdF X1NJWkVfNjRLLAorCQlJOTE1X0dUVF9QQUdFX1NJWkVfMk0sCisJCUk5MTVfR1RUX1BBR0VfU0la RV8xRywKKwl9OworCWludCBlcnIgPSAwOworCWludCBpOwogCiAJaWYgKCFVU0VTX0ZVTExfUFBH VFQoZGV2X3ByaXYpKQogCQlyZXR1cm4gMDsKQEAgLTg4NSw3ICs5MTcsMTEgQEAgc3RhdGljIGlu dCBleGVyY2lzZV9wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJR0VN X0JVR19PTihvZmZzZXRfaW5fcGFnZShwcGd0dC0+YmFzZS50b3RhbCkpOwogCUdFTV9CVUdfT04o cHBndHQtPmJhc2UuY2xvc2VkKTsKIAotCWVyciA9IGZ1bmMoZGV2X3ByaXYsICZwcGd0dC0+YmFz ZSwgMCwgcHBndHQtPmJhc2UudG90YWwsIGVuZF90aW1lKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShwYWdlX3NpemVzKTsgKytpKSB7CisJCWlmIChTVVBQT1JUU19QQUdFX1NJWkUoZGV2 X3ByaXYsIHBhZ2Vfc2l6ZXNbaV0pKQorCQkJZXJyID0gZnVuYyhkZXZfcHJpdiwgJnBwZ3R0LT5i YXNlLCAwLCBwcGd0dC0+YmFzZS50b3RhbCwKKwkJCQkgICBwYWdlX3NpemVzW2ldLCBlbmRfdGlt ZSk7CisJfQogCiAJaTkxNV9wcGd0dF9jbG9zZSgmcHBndHQtPmJhc2UpOwogCWk5MTVfcHBndHRf cHV0KHBwZ3R0KTsKQEAgLTk0MSw2ICs5NzcsNyBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX2dndHQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkgaW50ICgqZnVuYykoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKIAkJCQkgICAgIHU2NCBob2xlX3N0YXJ0LCB1NjQgaG9sZV9lbmQsCisJCQkJICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9zaXplLAogCQkJCSAgICAgdW5zaWduZWQgbG9uZyBlbmRfdGltZSkp CiB7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0OwpAQCAtOTYyLDcgKzk5 OSw4IEBAIHN0YXRpYyBpbnQgZXhlcmNpc2VfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKIAkJaWYgKGhvbGVfc3RhcnQgPj0gaG9sZV9lbmQpCiAJCQljb250aW51ZTsKIAotCQll cnIgPSBmdW5jKGk5MTUsICZnZ3R0LT5iYXNlLCBob2xlX3N0YXJ0LCBob2xlX2VuZCwgZW5kX3Rp bWUpOworCQllcnIgPSBmdW5jKGk5MTUsICZnZ3R0LT5iYXNlLCBob2xlX3N0YXJ0LCBob2xlX2Vu ZCwKKwkJCSAgIEk5MTVfR1RUX1BBR0VfU0laRSwgZW5kX3RpbWUpOwogCQlpZiAoZXJyKQogCQkJ YnJlYWs7CiAKQEAgLTExMDUsMTIgKzExNDMsMjAgQEAgc3RhdGljIGludCBleGVyY2lzZV9tb2Nr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJIGludCAoKmZ1bmMpKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQkJICAgICB1NjQgaG9sZV9zdGFydCwgdTY0IGhvbGVfZW5kLAorCQkJCSAgICAg dW5zaWduZWQgaW50IHBhZ2Vfc2l6ZSwKIAkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5kX3RpbWUp KQogewogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CiAJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0OwogCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKKwl1bnNpZ25lZCBpbnQgcGFnZV9z aXplc1tdID0geworCQlJOTE1X0dUVF9QQUdFX1NJWkVfNEssCisJCUk5MTVfR1RUX1BBR0VfU0la RV82NEssCisJCUk5MTVfR1RUX1BBR0VfU0laRV8yTSwKKwkJSTkxNV9HVFRfUEFHRV9TSVpFXzFH LAorCX07CiAJaW50IGVycjsKKwlpbnQgaTsKIAogCWN0eCA9IG1vY2tfY29udGV4dChpOTE1LCAi bW9jayIpOwogCWlmICghY3R4KQpAQCAtMTExOSw3ICsxMTY1LDEwIEBAIHN0YXRpYyBpbnQgZXhl cmNpc2VfbW9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlwcGd0dCA9IGN0eC0+ cHBndHQ7CiAJR0VNX0JVR19PTighcHBndHQpOwogCi0JZXJyID0gZnVuYyhpOTE1LCAmcHBndHQt PmJhc2UsIDAsIHBwZ3R0LT5iYXNlLnRvdGFsLCBlbmRfdGltZSk7CisJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUocGFnZV9zaXplcyk7ICsraSkgeworCQllcnIgPSBmdW5jKGk5MTUsICZwcGd0 dC0+YmFzZSwgMCwgcHBndHQtPmJhc2UudG90YWwsCisJCQkgICBwYWdlX3NpemVzW2ldLCBlbmRf dGltZSk7CisJfQogCiAJbW9ja19jb250ZXh0X2Nsb3NlKGN0eCk7CiAJcmV0dXJuIGVycjsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMKaW5kZXggMzg1MzJhMDA4Mzg3 Li42ODhkNGY1NTRhNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0 dC5jCkBAIC04OCw2ICs4OCw5IEBAIG1vY2tfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IG1vY2tfdW5iaW5kX3BwZ3R0OwogCXBw Z3R0LT5iYXNlLmNsZWFudXAgPSBtb2NrX2NsZWFudXA7CiAKKwkvKiBGb3IgbW9jayB0ZXN0aW5n IGh1Z2UtcGFnZSBzdXBwb3J0ICovCisJcHBndHQtPmJhc2UubW0uY29sb3JfYWRqdXN0ID0gaTkx NV9wYWdlX2NvbG9yX2FkanVzdDsKKwogCXJldHVybiBwcGd0dDsKIH0KIAotLSAKMi45LjMKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=