From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v3 3/3] meh Date: Mon, 20 Jun 2016 21:04:34 +0100 Message-ID: <1466453074-6564-3-git-send-email-chris@chris-wilson.co.uk> References: <1466317129-11615-1-git-send-email-chris@chris-wilson.co.uk> <1466453074-6564-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lb0-x231.google.com (mail-lb0-x231.google.com [IPv6:2a00:1450:4010:c04::231]) by gabe.freedesktop.org (Postfix) with ESMTPS id 885996E5FF for ; Mon, 20 Jun 2016 20:04:47 +0000 (UTC) Received: by mail-lb0-x231.google.com with SMTP id ak10so341114lbc.3 for ; Mon, 20 Jun 2016 13:04:47 -0700 (PDT) In-Reply-To: <1466453074-6564-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAxNjIgKy0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAg IHwgIDg0ICsrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAg ICAgIHwgMTQ0ICsrKy0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmMgICAgfCAyODcgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgfCAgNjAgKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmggICAgfCAgMTQgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25z KCspLCA1MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRl eCA2NDU0ZTYxZjhhYzMuLjNmZTRmNzM5MTZiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKQEAgLTM2NiwyOCArMzY2LDYgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQg aWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKIAkJCSAgIHN0YXRzLnVuYm91bmQpOyBcCiB9IHdo aWxlICgwKQogCi1zdGF0aWMgdm9pZCBwcmludF9iYXRjaF9wb29sX3N0YXRzKHN0cnVjdCBzZXFf ZmlsZSAqbSwKLQkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0J c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZmlsZV9zdGF0cyBzdGF0 czsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JaW50IGo7Ci0KLQltZW1zZXQo JnN0YXRzLCAwLCBzaXplb2Yoc3RhdHMpKTsKLQotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRl dl9wcml2KSB7Ci0JCWZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKGVuZ2luZS0+YmF0Y2hfcG9v bC5jYWNoZV9saXN0KTsgaisrKSB7Ci0JCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwKLQkJCQkJ ICAgICZlbmdpbmUtPmJhdGNoX3Bvb2wuY2FjaGVfbGlzdFtqXSwKLQkJCQkJICAgIGJhdGNoX3Bv b2xfbGluaykKLQkJCQlwZXJfZmlsZV9zdGF0cygwLCBvYmosICZzdGF0cyk7Ci0JCX0KLQl9Ci0K LQlwcmludF9maWxlX3N0YXRzKG0sICJba11iYXRjaCBwb29sIiwgc3RhdHMpOwotfQotCiBzdGF0 aWMgaW50IHBlcl9maWxlX2N0eF9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkK IHsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gcHRyOwpAQCAtNTQ1LDcgKzUyMyw2 IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkKiBkYXRhKQogCQkgICBnZ3R0LT5iYXNlLnRvdGFsLCBnZ3R0LT5tYXBwYWJsZV9lbmQgLSBn Z3R0LT5iYXNlLnN0YXJ0KTsKIAogCXNlcV9wdXRjKG0sICdcbicpOwotCXByaW50X2JhdGNoX3Bv b2xfc3RhdHMobSwgZGV2X3ByaXYpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogCiAJbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CkBAIC02NTUsMTAgKzYzMiw5 IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fcGFnZWZsaXBfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpCiAJCQlpZiAod29yay0+ZmxpcF9xdWV1ZWRfcmVxKSB7CiAJCQkJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKHdv cmstPmZsaXBfcXVldWVkX3JlcSk7CiAKLQkJCQlzZXFfcHJpbnRmKG0sICJGbGlwIHF1ZXVlZCBv biAlcyBhdCBzZXFubyAleCwgbmV4dCBzZXFubyAleCBbY3VycmVudCBicmVhZGNydW1iICV4XSwg Y29tcGxldGVkPyAlZFxuIiwKKwkJCQlzZXFfcHJpbnRmKG0sICJGbGlwIHF1ZXVlZCBvbiAlcyBh dCBzZXFubyAleCwgY3VycmVudCBicmVhZGNydW1iICV4LCBjb21wbGV0ZWQ/ICVkXG4iLAogCQkJ CQkgICBlbmdpbmUtPm5hbWUsCiAJCQkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHdv cmstPmZsaXBfcXVldWVkX3JlcSksCi0JCQkJCSAgIGRldl9wcml2LT5uZXh0X3NlcW5vLAogCQkJ CQkgICBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSksCiAJCQkJCSAgIGk5MTVfZ2VtX3Jl cXVlc3RfY29tcGxldGVkKHdvcmstPmZsaXBfcXVldWVkX3JlcSkpOwogCQkJfSBlbHNlCkBAIC02 ODgsOTkgKzY2NCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fcGFnZWZsaXBfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaTkx NV9nZW1fYmF0Y2hfcG9vbF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKLXsK LQlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQlpbnQgdG90YWwgPSAw OwotCWludCByZXQsIGo7Ci0KLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+ c3RydWN0X211dGV4KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKLQkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoZW5n aW5lLT5iYXRjaF9wb29sLmNhY2hlX2xpc3QpOyBqKyspIHsKLQkJCWludCBjb3VudDsKLQotCQkJ Y291bnQgPSAwOwotCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosCi0JCQkJCSAgICAmZW5naW5l LT5iYXRjaF9wb29sLmNhY2hlX2xpc3Rbal0sCi0JCQkJCSAgICBiYXRjaF9wb29sX2xpbmspCi0J CQkJY291bnQrKzsKLQkJCXNlcV9wcmludGYobSwgIiVzIGNhY2hlWyVkXTogJWQgb2JqZWN0c1xu IiwKLQkJCQkgICBlbmdpbmUtPm5hbWUsIGosIGNvdW50KTsKLQotCQkJbGlzdF9mb3JfZWFjaF9l bnRyeShvYmosCi0JCQkJCSAgICAmZW5naW5lLT5iYXRjaF9wb29sLmNhY2hlX2xpc3Rbal0sCi0J CQkJCSAgICBiYXRjaF9wb29sX2xpbmspIHsKLQkJCQlzZXFfcHV0cyhtLCAiICAgIik7Ci0JCQkJ ZGVzY3JpYmVfb2JqKG0sIG9iaik7Ci0JCQkJc2VxX3B1dGMobSwgJ1xuJyk7Ci0JCQl9Ci0KLQkJ CXRvdGFsICs9IGNvdW50OwotCQl9Ci0JfQotCi0Jc2VxX3ByaW50ZihtLCAidG90YWw6ICVkXG4i LCB0b3RhbCk7Ci0KLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQotCXJldHVy biAwOwotfQotCi1zdGF0aWMgaW50IGk5MTVfZ2VtX3JlcXVlc3RfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCi17Ci0Jc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBtLT5w cml2YXRlOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ZGV2OwotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxOwotCWludCByZXQsIGFueTsKLQotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlhbnkg PSAwOwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7Ci0JCWludCBjb3VudDsK LQotCQljb3VudCA9IDA7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxLCAmZW5naW5lLT5yZXF1 ZXN0X2xpc3QsIGxpbmspCi0JCQljb3VudCsrOwotCQlpZiAoY291bnQgPT0gMCkKLQkJCWNvbnRp bnVlOwotCi0JCXNlcV9wcmludGYobSwgIiVzIHJlcXVlc3RzOiAlZFxuIiwgZW5naW5lLT5uYW1l LCBjb3VudCk7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxLCAmZW5naW5lLT5yZXF1ZXN0X2xp c3QsIGxpbmspIHsKLQkJCXN0cnVjdCBwaWQgKnBpZCA9IHJlcS0+Y3R4LT5waWQ7Ci0JCQlzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Ci0KLQkJCXJjdV9yZWFkX2xvY2soKTsKLQkJCXRhc2sgPSBw aWQgPyBwaWRfdGFzayhwaWQsIFBJRFRZUEVfUElEKSA6IE5VTEw7Ci0JCQlzZXFfcHJpbnRmKG0s ICIgICAgJXggQCAlZDogJXMgWyVkXVxuIiwKLQkJCQkgICByZXEtPmZlbmNlLnNlcW5vLAotCQkJ CSAgIChpbnQpIChqaWZmaWVzIC0gcmVxLT5lbWl0dGVkX2ppZmZpZXMpLAotCQkJCSAgIHRhc2sg PyB0YXNrLT5jb21tIDogIjx1bmtub3duPiIsCi0JCQkJICAgdGFzayA/IHRhc2stPnBpZCA6IC0x KTsKLQkJCXJjdV9yZWFkX3VubG9jaygpOwotCQl9Ci0KLQkJYW55Kys7Ci0JfQotCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCi0JaWYgKGFueSA9PSAwKQotCQlzZXFfcHV0cyht LCAiTm8gcmVxdWVzdHNcbiIpOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGk5MTVf cmluZ19zZXFub19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJCQkgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewpAQCAtMTE1MCw0MyArMTAzMyw2IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5MTVfZXJyb3Jfc3RhdGVfZm9wcyA9IHsKIAkucmVsZWFz ZSA9IGk5MTVfZXJyb3Jfc3RhdGVfcmVsZWFzZSwKIH07CiAKLXN0YXRpYyBpbnQKLWk5MTVfbmV4 dF9zZXFub19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGRhdGE7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxl KCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCSp2YWwg PSBkZXZfcHJpdi0+bmV4dF9zZXFubzsKLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1pOTE1X25leHRfc2Vxbm9fc2V0KHZv aWQgKmRhdGEsIHU2NCB2YWwpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRhdGE7Ci0J aW50IHJldDsKLQotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXQgPSBpOTE1X2dlbV9zZXRf c2Vxbm8oZGV2LCB2YWwpOwotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKLX0KLQotREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9uZXh0X3NlcW5v X2ZvcHMsCi0JCQlpOTE1X25leHRfc2Vxbm9fZ2V0LCBpOTE1X25leHRfc2Vxbm9fc2V0LAotCQkJ IjB4JWxseFxuIik7Ci0KIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIHsKIAlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9 IG0tPnByaXZhdGU7CkBAIC0yMzQ5LDggKzIxOTUsNiBAQCBzdGF0aWMgaW50IGk5MTVfcnBzX2Jv b3N0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1fZmls ZSAqZmlsZTsKIAogCXNlcV9wcmludGYobSwgIlJQUyBlbmFibGVkPyAlZFxuIiwgZGV2X3ByaXYt PnJwcy5lbmFibGVkKTsKLQlzZXFfcHJpbnRmKG0sICJHUFUgYnVzeT8gJXMgWyV4XVxuIiwKLQkJ ICAgeWVzbm8oZGV2X3ByaXYtPmd0LmF3YWtlKSwgZGV2X3ByaXYtPmd0LmFjdGl2ZV9lbmdpbmVz KTsKIAlzZXFfcHJpbnRmKG0sICJDUFUgd2FpdGluZz8gJWRcbiIsIGNvdW50X2lycV93YWl0ZXJz KGRldl9wcml2KSk7CiAJc2VxX3ByaW50ZihtLCAiRnJlcXVlbmN5IHJlcXVlc3RlZCAlZDsgbWlu IGhhcmQ6JWQsIHNvZnQ6JWQ7IG1heCBzb2Z0OiVkLCBoYXJkOiVkXG4iLAogCQkgICBpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSksCkBAIC0yNjg4LDcgKzI1 MzIsNiBAQCBzdGF0aWMgaW50IGk5MTVfcnVudGltZV9wbV9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCiAJaWYgKCFIQVNfUlVOVElNRV9QTShkZXZfcHJpdikpCiAJCXNl cV9wdXRzKG0sICJSdW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgbm90IHN1cHBvcnRlZFxuIik7CiAK LQlzZXFfcHJpbnRmKG0sICJHUFUgaWRsZTogJXNcbiIsIHllc25vKCFkZXZfcHJpdi0+Z3QuYXdh a2UpKTsKIAlzZXFfcHJpbnRmKG0sICJJUlFzIGRpc2FibGVkOiAlc1xuIiwKIAkJICAgeWVzbm8o IWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdikpKTsKICNpZmRlZiBDT05GSUdfUE0KQEAgLTUy NjksNyArNTExMiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2luZm9fbGlzdCBpOTE1X2Rl YnVnZnNfbGlzdFtdID0gewogCXsiaTkxNV9nZW1faW5hY3RpdmUiLCBpOTE1X2dlbV9vYmplY3Rf bGlzdF9pbmZvLCAwLCAodm9pZCAqKSBJTkFDVElWRV9MSVNUfSwKIAl7Imk5MTVfZ2VtX3N0b2xl biIsIGk5MTVfZ2VtX3N0b2xlbl9saXN0X2luZm8gfSwKIAl7Imk5MTVfZ2VtX3BhZ2VmbGlwIiwg aTkxNV9nZW1fcGFnZWZsaXBfaW5mbywgMH0sCi0JeyJpOTE1X2dlbV9yZXF1ZXN0IiwgaTkxNV9n ZW1fcmVxdWVzdF9pbmZvLCAwfSwKIAl7Imk5MTVfZ2VtX3NlcW5vIiwgaTkxNV9nZW1fc2Vxbm9f aW5mbywgMH0sCiAJeyJpOTE1X2dlbV9mZW5jZV9yZWdzIiwgaTkxNV9nZW1fZmVuY2VfcmVnc19p bmZvLCAwfSwKIAl7Imk5MTVfZ2VtX2ludGVycnVwdCIsIGk5MTVfaW50ZXJydXB0X2luZm8sIDB9 LApAQCAtNTI3Nyw3ICs1MTE5LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW5mb19saXN0 IGk5MTVfZGVidWdmc19saXN0W10gPSB7CiAJeyJpOTE1X2dlbV9od3NfYmx0IiwgaTkxNV9od3Nf aW5mbywgMCwgKHZvaWQgKilCQ1N9LAogCXsiaTkxNV9nZW1faHdzX2JzZCIsIGk5MTVfaHdzX2lu Zm8sIDAsICh2b2lkICopVkNTfSwKIAl7Imk5MTVfZ2VtX2h3c192ZWJveCIsIGk5MTVfaHdzX2lu Zm8sIDAsICh2b2lkICopVkVDU30sCi0JeyJpOTE1X2dlbV9iYXRjaF9wb29sIiwgaTkxNV9nZW1f YmF0Y2hfcG9vbF9pbmZvLCAwfSwKIAl7Imk5MTVfZ3VjX2luZm8iLCBpOTE1X2d1Y19pbmZvLCAw fSwKIAl7Imk5MTVfZ3VjX2xvYWRfc3RhdHVzIiwgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbywg MH0sCiAJeyJpOTE1X2d1Y19sb2dfZHVtcCIsIGk5MTVfZ3VjX2xvZ19kdW1wLCAwfSwKQEAgLTUz MjksNyArNTE3MCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsK IAl7Imk5MTVfcmluZ190ZXN0X2lycSIsICZpOTE1X3JpbmdfdGVzdF9pcnFfZm9wc30sCiAJeyJp OTE1X2dlbV9kcm9wX2NhY2hlcyIsICZpOTE1X2Ryb3BfY2FjaGVzX2ZvcHN9LAogCXsiaTkxNV9l cnJvcl9zdGF0ZSIsICZpOTE1X2Vycm9yX3N0YXRlX2ZvcHN9LAotCXsiaTkxNV9uZXh0X3NlcW5v IiwgJmk5MTVfbmV4dF9zZXFub19mb3BzfSwKIAl7Imk5MTVfZGlzcGxheV9jcmNfY3RsIiwgJmk5 MTVfZGlzcGxheV9jcmNfY3RsX2ZvcHN9LAogCXsiaTkxNV9wcmlfd21fbGF0ZW5jeSIsICZpOTE1 X3ByaV93bV9sYXRlbmN5X2ZvcHN9LAogCXsiaTkxNV9zcHJfd21fbGF0ZW5jeSIsICZpOTE1X3Nw cl93bV9sYXRlbmN5X2ZvcHN9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZjg4MTMzZTVk NzI1Li5iYTUwMDc2NTNmMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODU2LDYgKzg1 Niw1OCBAQCBzdHJ1Y3QgaTkxNV9jdHhfaGFuZ19zdGF0cyB7CiAJYm9vbCBiYW5uZWQ7CiB9Owog CitzdHJ1Y3QgaTkxNV92bWE7CisKK3N0cnVjdCBpOTE1X3RpbWVsaW5lIHsKKwl1MzIgaWQ7CisJ dTMyIG5leHRfc2Vxbm87CisKKwlzdHJ1Y3QgbXV0ZXggbXV0ZXg7CisJc3RydWN0IGxpc3RfaGVh ZCBsaW5rOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCisJc3RydWN0IGk5MTVf dGltZWxpbmVfZW5naW5lIHsKKwkJdTMyIG1hc2s7CisKKwkJc3RydWN0IGk5MTVfdGltZWxpbmUg KnRpbWVsaW5lOworCQlzdHJ1Y3QgbGlzdF9oZWFkIHJlcXVlc3RzOworCisJCXUzMiBsYXN0X3N1 Ym1pdHRlZF9zZXFubzsKKworCQkvKgorCQkgKiBBIHBvb2wgb2Ygb2JqZWN0cyB0byB1c2UgYXMg c2hhZG93IGNvcGllcyBvZiBjbGllbnQgYmF0Y2gKKwkJICogYnVmZmVycyB3aGVuIHRoZSBjb21t YW5kIHBhcnNlciBpcyBlbmFibGVkLiBQcmV2ZW50cyB0aGUKKwkJICogY2xpZW50IGZyb20gbW9k aWZ5aW5nIHRoZSBiYXRjaCBjb250ZW50cyBhZnRlciBzb2Z0d2FyZQorCQkgKiBwYXJzaW5nLgor CQkgKi8KKwkJc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgYmF0Y2hfcG9vbDsKKwl9IGVuZ2lu ZVtJOTE1X05VTV9FTkdJTkVTXTsKKworCXN0cnVjdCB7CisJCXN0cnVjdCBpOTE1X3ZtYSAqdm1h OworCQl1aW50MzJfdCAqbWFwOworCX0gaHdzOworCisJLyoqCisJICogSXMgdGhlIEdQVSBjdXJy ZW50bHkgY29uc2lkZXJlZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZworCSAqIHVzZXJzcGFjZSBy ZXF1ZXN0cz8gV2hpbHN0IGlkbGUsIHdlIGFsbG93IHJ1bnRpbWUgcG93ZXIKKwkgKiBtYW5hZ2Vt ZW50IHRvIHBvd2VyIGRvd24gdGhlIGhhcmR3YXJlIGFuZCBkaXNwbGF5IGNsb2Nrcy4KKwkgKiBJ biBvcmRlciB0byByZWR1Y2UgdGhlIGVmZmVjdCBvbiBwZXJmb3JtYW5jZSwgdGhlcmUKKwkgKiBp cyBhIHNsaWdodCBkZWxheSBiZWZvcmUgd2UgZG8gc28uCisJICovCisJdW5zaWduZWQgYWN0aXZl X2VuZ2luZXM7CisKKwkvKioKKwkgKiBXZSBsZWF2ZSB0aGUgdXNlciBJUlEgb2ZmIGFzIG11Y2gg YXMgcG9zc2libGUsCisJICogYnV0IHRoaXMgbWVhbnMgdGhhdCByZXF1ZXN0cyB3aWxsIGZpbmlz aCBhbmQgbmV2ZXIKKwkgKiBiZSByZXRpcmVkIG9uY2UgdGhlIHN5c3RlbSBnb2VzIGlkbGUuIFNl dCBhIHRpbWVyIHRvCisJICogZmlyZSBwZXJpb2RpY2FsbHkgd2hpbGUgdGhlIHJpbmcgaXMgcnVu bmluZy4gV2hlbiBpdAorCSAqIGZpcmVzLCBnbyByZXRpcmUgcmVxdWVzdHMuCisJICovCisJc3Ry dWN0IGRlbGF5ZWRfd29yayByZXRpcmVfd29yazsKK307CisKKwogLyogVGhpcyBtdXN0IG1hdGNo IHVwIHdpdGggdGhlIHZhbHVlIHByZXZpb3VzbHkgdXNlZCBmb3IgZXhlY2J1ZjIucnN2ZDEuICov CiAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUgMAogCkBAIC0xNzc4LDggKzE4MzAsOCBA QCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IHBjaV9kZXYgKmJyaWRnZV9kZXY7 CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtlcm5lbF9jb250ZXh0OwogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgZW5naW5lW0k5MTVfTlVNX0VOR0lORVNdOworCXN0cnVjdCBpOTE1X3RpbWVs aW5lIGtlcm5lbF90aW1lbGluZTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnNlbWFwaG9yZV92bWE7Ci0J dWludDMyX3QgbmV4dF9zZXFubzsKIAogCXN0cnVjdCBkcm1fZG1hX2hhbmRsZSAqc3RhdHVzX3Bh Z2VfZG1haDsKIAlzdHJ1Y3QgcmVzb3VyY2UgbWNoX3JlczsKQEAgLTIwMzAsMzMgKzIwODIsOSBA QCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCWludCAoKmluaXRfZW5naW5lcykoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7CiAJCXZvaWQgKCpjbGVhbnVwX2VuZ2luZSkoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKIAotCQkvKioKLQkJICogSXMgdGhlIEdQVSBjdXJyZW50bHkg Y29uc2lkZXJlZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZwotCQkgKiB1c2Vyc3BhY2UgcmVxdWVz dHM/IFdoaWxzdCBpZGxlLCB3ZSBhbGxvdyBydW50aW1lIHBvd2VyCi0JCSAqIG1hbmFnZW1lbnQg dG8gcG93ZXIgZG93biB0aGUgaGFyZHdhcmUgYW5kIGRpc3BsYXkgY2xvY2tzLgotCQkgKiBJbiBv cmRlciB0byByZWR1Y2UgdGhlIGVmZmVjdCBvbiBwZXJmb3JtYW5jZSwgdGhlcmUKLQkJICogaXMg YSBzbGlnaHQgZGVsYXkgYmVmb3JlIHdlIGRvIHNvLgotCQkgKi8KLQkJdW5zaWduZWQgYWN0aXZl X2VuZ2luZXM7Ci0JCWJvb2wgYXdha2U7CisJCXN0cnVjdCBsaXN0X2hlYWQgdGltZWxpbmVzOwog Ci0JCS8qKgotCQkgKiBXZSBsZWF2ZSB0aGUgdXNlciBJUlEgb2ZmIGFzIG11Y2ggYXMgcG9zc2li bGUsCi0JCSAqIGJ1dCB0aGlzIG1lYW5zIHRoYXQgcmVxdWVzdHMgd2lsbCBmaW5pc2ggYW5kIG5l dmVyCi0JCSAqIGJlIHJldGlyZWQgb25jZSB0aGUgc3lzdGVtIGdvZXMgaWRsZS4gU2V0IGEgdGlt ZXIgdG8KLQkJICogZmlyZSBwZXJpb2RpY2FsbHkgd2hpbGUgdGhlIHJpbmcgaXMgcnVubmluZy4g V2hlbiBpdAotCQkgKiBmaXJlcywgZ28gcmV0aXJlIHJlcXVlc3RzLgotCQkgKi8KLQkJc3RydWN0 IGRlbGF5ZWRfd29yayByZXRpcmVfd29yazsKLQotCQkvKioKLQkJICogV2hlbiB3ZSBkZXRlY3Qg YW4gaWRsZSBHUFUsIHdlIHdhbnQgdG8gdHVybiBvbgotCQkgKiBwb3dlcnNhdmluZyBmZWF0dXJl cy4gU28gb25jZSB3ZSBzZWUgdGhhdCB0aGVyZQotCQkgKiBhcmUgbm8gbW9yZSByZXF1ZXN0cyBv dXRzdGFuZGluZyBhbmQgbm8gbW9yZQotCQkgKiBhcnJpdmUgd2l0aGluIGEgc21hbGwgcGVyaW9k IG9mIHRpbWUsIHdlIGZpcmUKLQkJICogb2ZmIHRoZSBpZGxlX3dvcmsuCi0JCSAqLwotCQlzdHJ1 Y3QgZGVsYXllZF93b3JrIGlkbGVfd29yazsKKwkJYXRvbWljX3QgYWN0aXZlOwogCX0gZ3Q7CiAK IAkvKiBwZXJmb3JtIFBIWSBzdGF0ZSBzYW5pdHkgY2hlY2tzPyAqLwpAQCAtMzIwNyw3ICszMjM1 LDcgQEAgdm9pZCBpOTE1X2dlbV90cmFja19mYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2xkLAogaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTMyIHNlcW5vKTsKIAogc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKLWk5 MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKK2k5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGk5MTVfdGltZWxpbmVfZW5n aW5lICp0ZSk7CiAKIHZvaWQgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGZjNDZl ZTEwZTVjZC4uNGI0YThlNTgzM2E4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI0MTAs NyArMjQxMCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogfQogCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgot aTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCitpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpOTE1X3RpbWVsaW5lX2Vu Z2luZSAqdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwogCkBA IC0yNDIyLDcgKzI0MjIsNyBAQCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiBleHRyYSBkZWxheSBmb3IgYSByZWNlbnQgaW50 ZXJydXB0IGlzIHBvaW50bGVzcy4gSGVuY2UsIHdlIGRvCiAJICogbm90IG5lZWQgYW4gZW5naW5l LT5pcnFfc2Vxbm9fYmFycmllcigpIGJlZm9yZSB0aGUgc2Vxbm8gcmVhZHMuCiAJICovCi0JbGlz dF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspIHsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZ0ZS0+cmVxdWVzdHMsIGxpbmspIHsKIAkJ aWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQogCQkJY29udGludWU7CiAK QEAgLTI0MzIsMzUgKzI0MzIsMzcgQEAgaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyB2 b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZV9zdGF0dXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQorc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfdGltZWxpbmVfc3RhdHVzKHN0cnVj dCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3Q7CisJaW50IGk7CiAKLQlyZXF1ZXN0ID0gaTkxNV9nZW1fZmluZF9hY3RpdmVf cmVxdWVzdChlbmdpbmUpOwotCWlmIChyZXF1ZXN0ID09IE5VTEwpCi0JCXJldHVybjsKKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0aW1lbGluZS0+ZW5naW5lKTsgaSsrKSB7CisJCXN0cnVj dCBpOTE1X3RpbWVsaW5lX2VuZ2luZSAqdGUgPSAmdGltZWxpbmUtPmVuZ2luZVtpXTsKKwkJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OworCisJCWlmIChsaXN0X2VtcHR5KCZ0 ZS0+cmVxdWVzdHMpKQorCQkJY29udGludWU7CisKKwkJcmVxdWVzdCA9IGk5MTVfZ2VtX2ZpbmRf YWN0aXZlX3JlcXVlc3QodGUpOworCQlpZiAocmVxdWVzdCkgeworCQkJaTkxNV9zZXRfcmVzZXRf c3RhdHVzKHJlcXVlc3QtPmN0eCwKKwkJCQkJICAgICAgaTkxNV9nZW1fcmVxdWVzdF9zdGFydGVk KHJlcXVlc3QpKTsKKwkJCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUocmVxdWVzdCwgJnRl LT5yZXF1ZXN0cywgbGluaykKKwkJCQlpOTE1X3NldF9yZXNldF9zdGF0dXMocmVxdWVzdC0+Y3R4 LCBmYWxzZSk7CisJCX0KIAotCWk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhyZXF1ZXN0LT5jdHgsCi0J CQkgICAgICBpOTE1X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQocmVxdWVzdCkpOwotCWxpc3RfZm9yX2Vh Y2hfZW50cnlfY29udGludWUocmVxdWVzdCwgJmVuZ2luZS0+cmVxdWVzdF9saXN0LCBsaW5rKQot CQlpOTE1X3NldF9yZXNldF9zdGF0dXMocmVxdWVzdC0+Y3R4LCBmYWxzZSk7CisJCXJlcXVlc3Qg PSBsaXN0X2xhc3RfZW50cnkoJnRlLT5yZXF1ZXN0cywKKwkJCQkJICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QsCisJCQkJCSAgbGluayk7CisJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3Vw dG8ocmVxdWVzdCk7CisJCS8vaW50ZWxfZW5naW5lX2luaXRfc2Vxbm8odGUsIHRlLT5sYXN0X3N1 Ym1pdHRlZF9zZXFubyk7CisJfQogfQogCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdp bmVfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwog Ci0JcmVxdWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZlbmdpbmUtPmxhc3RfcmVxdWVzdCwK LQkJCQkgICAgICAgJmVuZ2luZS0+aTkxNS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCi0JLyogTWFy ayBhbGwgcGVuZGluZyByZXF1ZXN0cyBhcyBjb21wbGV0ZSBzbyB0aGF0IGFueSBjb25jdXJyZW50 Ci0JICogKGxvY2tsZXNzKSBsb29rdXAgZG9lc24ndCB0cnkgYW5kIHdhaXQgdXBvbiB0aGUgcmVx dWVzdCBhcyB3ZQotCSAqIHJlc2V0IGl0LgotCSAqLwotCWlmIChyZXF1ZXN0KQotCQlpbnRlbF9l bmdpbmVfaW5pdF9zZXFubyhlbmdpbmUsIHJlcXVlc3QtPmZlbmNlLnNlcW5vKTsKLQogCS8qCiAJ ICogQ2xlYXIgdGhlIGV4ZWNsaXN0cyBxdWV1ZSB1cCBiZWZvcmUgZnJlZWluZyB0aGUgcmVxdWVz dHMsIGFzIHRob3NlCiAJICogYXJlIHRoZSBvbmVzIHRoYXQga2VlcCB0aGUgY29udGV4dCBhbmQg cmluZ2J1ZmZlciBiYWNraW5nIG9iamVjdHMKQEAgLTI0NzgsMTcgKzI0ODAsNiBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmVfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiAJCQkJCU5VTEwpOwogCX0KIAotCS8qCi0JICogV2UgbXVzdCBmcmVlIHRoZSBy ZXF1ZXN0cyBhZnRlciBhbGwgdGhlIGNvcnJlc3BvbmRpbmcgb2JqZWN0cyBoYXZlCi0JICogYmVl biBtb3ZlZCBvZmYgYWN0aXZlIGxpc3RzLiBXaGljaCBpcyB0aGUgc2FtZSBvcmRlciBhcyB0aGUg bm9ybWFsCi0JICogcmV0aXJlX3JlcXVlc3RzIGZ1bmN0aW9uIGRvZXMuIFRoaXMgaXMgaW1wb3J0 YW50IGlmIG9iamVjdCBob2xkCi0JICogaW1wbGljaXQgcmVmZXJlbmNlcyBvbiB0aGluZ3MgbGlr ZSBlLmcuIHBwZ3R0IGFkZHJlc3Mgc3BhY2VzIHRocm91Z2gKLQkgKiB0aGUgcmVxdWVzdC4KLQkg Ki8KLQlpZiAocmVxdWVzdCkKLQkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVfdXB0byhyZXF1ZXN0 KTsKLQlHRU1fQlVHX09OKGludGVsX2VuZ2luZV9pc19hY3RpdmUoZW5naW5lKSk7Ci0KIAkvKiBI YXZpbmcgZmx1c2hlZCBhbGwgcmVxdWVzdHMgZnJvbSBhbGwgcXVldWVzLCB3ZSBrbm93IHRoYXQg YWxsCiAJICogcmluZ2J1ZmZlcnMgbXVzdCBub3cgYmUgZW1wdHkuIEhvd2V2ZXIsIHNpbmNlIHdl IGRvIG5vdCByZWNsYWltCiAJICogYWxsIHNwYWNlIHdoZW4gcmV0aXJpbmcgdGhlIHJlcXVlc3Qg KHRvIHByZXZlbnQgSEVBRHMgY29sbGlkaW5nCkBAIC0yNTA2LDE0ICsyNDk3LDE1IEBAIHZvaWQg aTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7CiAKIAkv KgogCSAqIEJlZm9yZSB3ZSBmcmVlIHRoZSBvYmplY3RzIGZyb20gdGhlIHJlcXVlc3RzLCB3ZSBu ZWVkIHRvIGluc3BlY3QKIAkgKiB0aGVtIGZvciBmaW5kaW5nIHRoZSBndWlsdHkgcGFydHkuIEFz IHRoZSByZXF1ZXN0cyBvbmx5IGJvcnJvdwogCSAqIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgb2Jq ZWN0cywgdGhlIGluc3BlY3Rpb24gbXVzdCBiZSBkb25lIGZpcnN0LgogCSAqLwotCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQotCQlpOTE1X2dlbV9yZXNldF9lbmdpbmVfc3RhdHVz KGVuZ2luZSk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmRldl9wcml2LT5ndC50 aW1lbGluZXMsIGxpbmspCisJCWk5MTVfZ2VtX3Jlc2V0X3RpbWVsaW5lX3N0YXR1cyh0aW1lbGlu ZSk7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikKIAkJaTkxNV9nZW1fcmVz ZXRfZW5naW5lX2NsZWFudXAoZW5naW5lKTsKQEAgLTI1MjMsNTcgKzI1MTUsNiBAQCB2b2lkIGk5 MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaTkxNV9nZW1fcmVzdG9yZV9m ZW5jZXMoZGV2KTsKIH0KIAotc3RhdGljIHZvaWQKLWk5MTVfZ2VtX3JldGlyZV93b3JrX2hhbmRs ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Ci0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmRldl9wcml2KSwgZ3Qu cmV0aXJlX3dvcmsud29yayk7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5k ZXY7Ci0KLQkvKiBDb21lIGJhY2sgbGF0ZXIgaWYgdGhlIGRldmljZSBpcyBidXN5Li4uICovCi0J aWYgKG11dGV4X3RyeWxvY2soJmRldi0+c3RydWN0X211dGV4KSkgewotCQlpOTE1X2dlbV9yZXRp cmVfcmVxdWVzdHMoZGV2X3ByaXYpOwotCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKLQl9Ci0KLQkvKiBLZWVwIHRoZSByZXRpcmUgaGFuZGxlciBydW5uaW5nIHVudGlsIHdlIGFy ZSBmaW5hbGx5IGlkbGUuCi0JICogV2UgZG8gbm90IG5lZWQgdG8gZG8gdGhpcyB0ZXN0IHVuZGVy IGxvY2tpbmcgYXMgaW4gdGhlIHdvcnN0LWNhc2UKLQkgKiB3ZSBxdWV1ZSB0aGUgcmV0aXJlIHdv cmtlciBvbmNlIHRvbyBvZnRlbi4KLQkgKi8KLQlpZiAoUkVBRF9PTkNFKGRldl9wcml2LT5ndC5h d2FrZSkpCi0JCXF1ZXVlX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsCi0JCQkJICAgJmRldl9w cml2LT5ndC5yZXRpcmVfd29yaywKLQkJCQkgICByb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKEha KSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1pOTE1X2dlbV9pZGxlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBndC5pZGxlX3dvcmsu d29yayk7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Ci0Jc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCi0JaWYgKCFSRUFEX09OQ0UoZGV2X3ByaXYtPmd0 LmF3YWtlKSkKLQkJcmV0dXJuOwotCi0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwot CWlmIChkZXZfcHJpdi0+Z3QuYWN0aXZlX2VuZ2luZXMpCi0JCWdvdG8gb3V0OwotCi0JZm9yX2Vh Y2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpCi0JCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgm ZW5naW5lLT5iYXRjaF9wb29sKTsKLQotCUdFTV9CVUdfT04oIWRldl9wcml2LT5ndC5hd2FrZSk7 Ci0JZGV2X3ByaXYtPmd0LmF3YWtlID0gZmFsc2U7Ci0KLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA2KQotCQlnZW42X3Jwc19pZGxlKGRldl9wcml2KTsKLQlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7Ci1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Ci19Ci0KIHZvaWQgaTkxNV9nZW1fY2xvc2Vfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZ2VtLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IHRvX2ludGVsX2JvKGdlbSk7CkBAIC00MTI4LDIyICs0MDY5LDEwIEBAIGk5 MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCi0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+Z3QucmV0aXJl X3dvcmspOwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmd0LmlkbGVfd29y ayk7CisJLy9jYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5ndC5yZXRpcmVfd29y ayk7CisJLy9mbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ndC5pZGxlX3dvcmspOwogCWZs dXNoX3dvcmsoJmRldl9wcml2LT5tbS5mcmVlX3dvcmspOwogCi0JbXV0ZXhfbG9jaygmZGV2X3By aXYtPmRldi0+c3RydWN0X211dGV4KTsKLQotCS8qIEFzc2VydCB0aGF0IHdlIHN1Y2Vzc2Z1bGx5 IGZsdXNoZWQgYWxsIHRoZSB3b3JrIGFuZAotCSAqIHJlc2V0IHRoZSBHUFUgYmFjayB0byBpdHMg aWRsZSwgbG93IHBvd2VyIHN0YXRlLgotCSAqLwotCWlmIChkZXZfcHJpdi0+Z3QuYXdha2UpIHsK LQkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikKLQkJCWdlbjZfcnBzX2lkbGUo ZGV2X3ByaXYpOwotCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Ci0JCWRldl9wcml2 LT5ndC5hd2FrZSA9IGZhbHNlOwotCX0KLQogCWk5MTVfZ2VtX2NvbnRleHRfbG9zdChkZXZfcHJp dik7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCkBAIC00 MzgzLDEzICs0MzEyLDYgQEAgaTkxNV9nZW1fY2xlYW51cF9lbmdpbmVzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJCWRldl9wcml2LT5ndC5jbGVhbnVwX2VuZ2luZShlbmdpbmUpOwogfQogCi1z dGF0aWMgdm9pZAotaW5pdF9lbmdpbmVfbGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQotewotCS8qIEVhcmx5IGluaXRpYWxpc2F0aW9uIHNvIHRoYXQgY29yZSBHRU0gd29ya3Mg ZHVyaW5nIGVuZ2luZSBzZXR1cCAqLwotCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPnJlcXVlc3Rf bGlzdCk7Ci19Ci0KIHZvaWQKIGk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogewpAQCAtNDQyNSw3ICs0MzQ3LDYgQEAgdm9pZAogaTkx NV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlpbnQgaTsKIAogCWRl dl9wcml2LT5vYmplY3RzID0KIAkJa21lbV9jYWNoZV9jcmVhdGUoImk5MTVfZ2VtX29iamVjdCIs CkBAIC00NDUxLDEyICs0MzcyLDcgQEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3QpOwog CUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7CiAJSU5JVF9MSVNUX0hF QUQoJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKLQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1f RU5HSU5FUzsgaSsrKQotCQlpbml0X2VuZ2luZV9saXN0cygmZGV2X3ByaXYtPmVuZ2luZVtpXSk7 Ci0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5ndC5yZXRpcmVfd29yaywKLQkJCSAgaTkx NV9nZW1fcmV0aXJlX3dvcmtfaGFuZGxlcik7Ci0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2 LT5ndC5pZGxlX3dvcmssCi0JCQkgIGk5MTVfZ2VtX2lkbGVfd29ya19oYW5kbGVyKTsKKwlJTklU X0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcyk7CiAJaW5pdF93YWl0cXVldWVfaGVh ZCgmZGV2X3ByaXYtPmdwdV9lcnJvci53YWl0X3F1ZXVlKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFk KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDNlZmY5YzgxYzhmMy4uNGZkZjk5NWI5ODA4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC02MCw2 ICs2MCw3IEBAIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgewogCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyICpleGVjOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2VuZ2lu ZSAqdGltZWxpbmU7CiAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07CiAJc3RydWN0IGk5 MTVfdm1hICpiYXRjaF92bWE7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 OwpAQCAtMTU2MCw3ICsxNTYxLDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqZWJfcGFyc2Uo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wgaXNfbWFzdGVyKQogCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKLQlzaGFkb3dfYmF0Y2hfb2JqID0gaTkxNV9nZW1fYmF0 Y2hfcG9vbF9nZXQoJmViLT5lbmdpbmUtPmJhdGNoX3Bvb2wsCisJc2hhZG93X2JhdGNoX29iaiA9 IGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KCZlYi0+dGltZWxpbmUtPmJhdGNoX3Bvb2wsCiAJCQkJ CQkgICBQQUdFX0FMSUdOKGViLT5hcmdzLT5iYXRjaF9sZW4pKTsKIAlpZiAoSVNfRVJSKHNoYWRv d19iYXRjaF9vYmopKQogCQlyZXR1cm4gRVJSX0NBU1Qoc2hhZG93X2JhdGNoX29iaik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggNDNiNWQ0ZmE0ODBhLi41ZTZi OTExNmUwOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTI2 LDYgKzI2LDEyNSBAQAogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKIAorc3RhdGljIHZvaWQgaTkx NV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KTsKKworc3RhdGljIGJvb2wKK2k5MTVfdGltZWxpbmVfZW5naW5lX3JldGlyZShzdHJ1Y3QgaTkx NV90aW1lbGluZV9lbmdpbmUgKnRlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCwgKm5leHQ7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVxdWVzdCwgbmV4 dCwgJnRlLT5yZXF1ZXN0cywgbGluaykgeworCQlpZiAoIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKHJlcXVlc3QpKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0 aXJlKHJlcXVlc3QpOworCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaTkxNV90 aW1lbGluZV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQoreworCWlu dCBpOworCisJaWYgKFJFQURfT05DRSh0bC0+YWN0aXZlX2VuZ2luZXMpID09IDApCisJCXJldHVy biBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRsLT5lbmdpbmUpOyBpKysp IHsKKwkJaWYgKGk5MTVfdGltZWxpbmVfZW5naW5lX3JldGlyZSgmdGwtPmVuZ2luZVtpXSkpCisJ CQl0bC0+YWN0aXZlX2VuZ2luZXMgJj0gfigxIDw8IGkpOworCX0KKworCWlmICh0bC0+YWN0aXZl X2VuZ2luZXMgPT0gMCAmJgorCSAgICBhdG9taWNfZGVjX2FuZF90ZXN0KCZ0bC0+aTkxNS0+Z3Qu YWN0aXZlKSkgeworCQlpZiAoSU5URUxfR0VOKHRsLT5pOTE1KSA+PSA2KQorCQkJZ2VuNl9ycHNf aWRsZSh0bC0+aTkxNSk7CisJCWludGVsX3J1bnRpbWVfcG1fcHV0KHRsLT5pOTE1KTsKKwl9CisK KwlyZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kZXYtPnN0cnVjdF9t dXRleCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmRldl9wcml2LT5ndC50aW1l bGluZXMsIGxpbmspCisJCWk5MTVfdGltZWxpbmVfcmV0aXJlX3JlcXVlc3RzKHRpbWVsaW5lKTsK K30KKworc3RhdGljIHZvaWQKK2k5MTVfdGltZWxpbmVfcmV0aXJlX3dvcmsoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCA9CisJCWNvbnRhaW5l cl9vZih3b3JrLCB0eXBlb2YoKnRsKSwgcmV0aXJlX3dvcmsud29yayk7CisKKwkvKiBLZWVwIHRo ZSByZXRpcmUgaGFuZGxlciBydW5uaW5nIHVudGlsIHdlIGFyZSBmaW5hbGx5IGlkbGUuCisJICog V2UgZG8gbm90IG5lZWQgdG8gZG8gdGhpcyB0ZXN0IHVuZGVyIGxvY2tpbmcgYXMgaW4gdGhlIHdv cnN0LWNhc2UKKwkgKiB3ZSBxdWV1ZSB0aGUgcmV0aXJlIHdvcmtlciBvbmNlIHRvbyBvZnRlbi4K KwkgKi8KKwlpZiAoaTkxNV90aW1lbGluZV9yZXRpcmVfcmVxdWVzdHModGwpKQorCQlxdWV1ZV9k ZWxheWVkX3dvcmsodGwtPmk5MTUtPndxLCAmdGwtPnJldGlyZV93b3JrLAorCQkJCSAgIHJvdW5k X2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKK30KKworc3RhdGljIGludCBpOTE1X3RpbWVsaW5l X2luaXRfc2Vxbm8oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLCB1MzIgc2Vxbm8pCit7CisJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWludCByZXQ7CisKKwlpZiAodGwtPmlkKQor CQlyZXR1cm4gMDsKKworCS8qIENhcmVmdWxseSByZXRpcmUgYWxsIHJlcXVlc3RzIHdpdGhvdXQg d3JpdGluZyB0byB0aGUgcmluZ3MgKi8KKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCB0bC0+aTkx NSkgeworCQlyZXQgPSBpbnRlbF9lbmdpbmVfaWRsZShlbmdpbmUpOworCQlpZiAocmV0KQorCQkJ cmV0dXJuIHJldDsKKwl9CisJaTkxNV90aW1lbGluZV9yZXRpcmVfcmVxdWVzdHModGwpOworCisJ LyogRmluYWxseSByZXNldCBodyBzdGF0ZSAqLworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIHRs LT5pOTE1KQorCQlpbnRlbF9lbmdpbmVfaW5pdF9zZXFubyhlbmdpbmUsIHNlcW5vKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50CitpOTE1X3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGwsIHUzMiAqc2Vxbm8pCit7CisJLyogcmVzZXJ2ZSAwIGZvciBub24t c2Vxbm8gKi8KKwlpZiAodW5saWtlbHkodGwtPm5leHRfc2Vxbm8gPT0gMCkpIHsKKwkJaW50IHJl dCA9IGk5MTVfdGltZWxpbmVfaW5pdF9zZXFubyh0bCwgMCk7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCisJCXRsLT5uZXh0X3NlcW5vID0gMjsKKwl9CisKKwkvKiBFYWNoIHJlcXVlc3Qg dXNlcyBhIHN0YXJ0IC8gc3RvcCBzZXF1ZW5jZSAqLworCUdFTV9CVUdfT04odGwtPm5leHRfc2Vx bm8gJiAxKTsKKwkqc2Vxbm8gPSB0bC0+bmV4dF9zZXFubzsKKwl0bC0+bmV4dF9zZXFubyArPSAy OworCXJldHVybiAwOworfQorCit2b2lkIGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCkKK3sKKwlpbnQg aTsKKworCXRsLT5pOTE1ID0gaTkxNTsKKwlsaXN0X2FkZCgmdGwtPmxpbmssICZpOTE1LT5ndC50 aW1lbGluZXMpOworCXRsLT5uZXh0X3NlcW5vID0gMjsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKHRsLT5lbmdpbmUpOyBpKyspCisJCUlOSVRfTElTVF9IRUFEKCZ0bC0+ZW5naW5lW2ld LnJlcXVlc3RzKTsKKworCUlOSVRfREVMQVlFRF9XT1JLKCZ0bC0+cmV0aXJlX3dvcmssIGk5MTVf dGltZWxpbmVfcmV0aXJlX3dvcmspOworfQorCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqCiB0b19pOTE1X3JlcXVlc3Qoc3RydWN0IGZlbmNlICpmZW5jZSkKIHsK QEAgLTE4MywxNiArMzAyLDE0IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJl KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogdm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X3JldGlyZV91cHRvKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewot CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBp OTE1X3RpbWVsaW5lX2VuZ2luZSAqdGUgPSByZXEtPnRpbWVsaW5lOwogCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqdG1wOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcmVxLT5pOTE1LT5k ZXYtPnN0cnVjdF9tdXRleCk7CiAJR0VNX0JVR19PTihsaXN0X2VtcHR5KCZyZXEtPmxpbmspKTsK IAogCWRvIHsKLQkJdG1wID0gbGlzdF9maXJzdF9lbnRyeSgmZW5naW5lLT5yZXF1ZXN0X2xpc3Qs Ci0JCQkJICAgICAgIHR5cGVvZigqdG1wKSwgbGluayk7Ci0KKwkJdG1wID0gbGlzdF9maXJzdF9l bnRyeSgmdGUtPnJlcXVlc3RzLCB0eXBlb2YoKnRtcCksIGxpbmspOwogCQlpOTE1X2dlbV9yZXF1 ZXN0X3JldGlyZSh0bXApOwogCX0gd2hpbGUgKHRtcCAhPSByZXEpOwogfQpAQCAtMjE0LDcxICsz MzEsNiBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX2NoZWNrX3dlZGdlKHVuc2lnbmVkIHJlc2V0X2Nv dW50ZXIsIGJvb2wgaW50ZXJydXB0aWJsZSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBp OTE1X2dlbV9pbml0X3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IHNlcW5vKQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQlpbnQgcmV0Owot Ci0JLyogQ2FyZWZ1bGx5IHJldGlyZSBhbGwgcmVxdWVzdHMgd2l0aG91dCB3cml0aW5nIHRvIHRo ZSByaW5ncyAqLwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7Ci0JCXJldCA9 IGludGVsX2VuZ2luZV9pZGxlKGVuZ2luZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0Owot CX0KLQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwotCi0JLyogSWYgdGhlIHNl cW5vIHdyYXBzIGFyb3VuZCwgd2UgbmVlZCB0byBjbGVhciB0aGUgYnJlYWRjcnVtYiByYnRyZWUg Ki8KLQlpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCBkZXZfcHJpdi0+bmV4dF9zZXFubykp IHsKLQkJd2hpbGUgKGludGVsX2tpY2tfd2FpdGVycyhkZXZfcHJpdikgfHwKLQkJICAgICAgIGlu dGVsX2tpY2tfc2lnbmFsZXJzKGRldl9wcml2KSkKLQkJCXlpZWxkKCk7Ci0JfQotCi0JLyogRmlu YWxseSByZXNldCBodyBzdGF0ZSAqLwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2 KQotCQlpbnRlbF9lbmdpbmVfaW5pdF9zZXFubyhlbmdpbmUsIHNlcW5vKTsKLQotCXJldHVybiAw OwotfQotCi1pbnQgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUz MiBzZXFubykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwotCWludCByZXQ7Ci0KLQlzZXFubyA9IChzZXFubyArIDEpICYgfjE7Ci0JaWYg KHNlcW5vID09IDApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JLyogSFdTIHBhZ2UgbmVlZHMgdG8g YmUgc2V0IGxlc3MgdGhhbiB3aGF0IHdlCi0JICogd2lsbCBpbmplY3QgdG8gcmluZwotCSAqLwot CXJldCA9IGk5MTVfZ2VtX2luaXRfc2Vxbm8oZGV2X3ByaXYsIHNlcW5vIC0gMik7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKLQotCWRldl9wcml2LT5uZXh0X3NlcW5vID0gc2Vxbm87Ci0JcmV0 dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgaTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpzZXFubykKLXsKLQkvKiByZXNlcnZlIDAgZm9yIG5v bi1zZXFubyAqLwotCWlmICh1bmxpa2VseShkZXZfcHJpdi0+bmV4dF9zZXFubyA9PSAwKSkgewot CQlpbnQgcmV0ID0gaTkxNV9nZW1faW5pdF9zZXFubyhkZXZfcHJpdiwgMCk7Ci0JCWlmIChyZXQp Ci0JCQlyZXR1cm4gcmV0OwotCi0JCWRldl9wcml2LT5uZXh0X3NlcW5vID0gMjsKLQl9Ci0KLQkv KiBFYWNoIHJlcXVlc3QgdXNlcyBhIHN0YXJ0IC8gc3RvcCBzZXF1ZW5jZSAqLwotCUdFTV9CVUdf T04oZGV2X3ByaXYtPm5leHRfc2Vxbm8gJiAxKTsKLQkqc2Vxbm8gPSBkZXZfcHJpdi0+bmV4dF9z ZXFubzsKLQlkZXZfcHJpdi0+bmV4dF9zZXFubyArPSAyOwotCXJldHVybiAwOwotfQotCiBzdGF0 aWMgdm9pZCBfX2tmZW5jZV9jYWxsIHN1Ym1pdF9ub3RpZnkoc3RydWN0IGtmZW5jZSAqZmVuY2Up CiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0KQEAgLTMxMSw2ICsz NjMsOCBAQCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 CiAJdW5zaWduZWQgcmVzZXRfY291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYt PmdwdV9lcnJvcik7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsICpwcmV2Owor CXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCA9ICZkZXZfcHJpdi0+a2VybmVsX3RpbWVsaW5lOwor CXN0cnVjdCBpOTE1X3RpbWVsaW5lX2VuZ2luZSAqdGUgPSAmdGwtPmVuZ2luZVtlbmdpbmUtPmlk XTsKIAl1MzIgc2Vxbm87CiAJaW50IHJldDsKIApAQCAtMzIyLDkgKzM3Niw4IEBAIGk5MTVfZ2Vt X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWlmIChyZXQp CiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAKLQlpZiAoIWxpc3RfZW1wdHkoJmVuZ2luZS0+cmVx dWVzdF9saXN0KSkgewotCQlyZXEgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPnJlcXVlc3Rf bGlzdCwKLQkJCQkgICAgICAgdHlwZW9mKCpyZXEpLCBsaW5rKTsKKwlpZiAoIWxpc3RfZW1wdHko JnRlLT5yZXF1ZXN0cykpIHsKKwkJcmVxID0gbGlzdF9maXJzdF9lbnRyeSgmdGUtPnJlcXVlc3Rz LCB0eXBlb2YoKnJlcSksIGxpbmspOwogCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQo cmVxKSkKIAkJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHJlcSk7CiAJfQpAQCAtMzMzLDcgKzM4 Niw3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAogCWlmIChyZXEgPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQly ZXQgPSBpOTE1X2dlbV9nZXRfc2Vxbm8oZGV2X3ByaXYsICZzZXFubyk7CisJcmV0ID0gaTkxNV90 aW1lbGluZV9nZXRfc2Vxbm8odGwsICZzZXFubyk7CiAJaWYgKHJldCkKIAkJZ290byBlcnI7CiAK QEAgLTM0OSw2ICs0MDIsNyBAQCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIAlyZXEtPmk5MTUgPSBkZXZfcHJpdjsKIAlyZXEtPmZpbGVfcHJp diA9IE5VTEw7CiAJcmVxLT5lbmdpbmUgPSBlbmdpbmU7CisJcmVxLT50aW1lbGluZSA9IHRlOwog CXJlcS0+c2lnbmFsaW5nLndhaXQudHNrID0gTlVMTDsKIAlyZXEtPnJlc2V0X2NvdW50ZXIgPSBy ZXNldF9jb3VudGVyOwogCXJlcS0+Y3R4ID0gY3R4OwpAQCAtMzk4LDI0ICs0NTIsMjggQEAgZXJy OgogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX21hcmtf YnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgICAgY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgaTkxNV9nZW1fbWFy a19idXN5KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCWRldl9wcml2LT5n dC5hY3RpdmVfZW5naW5lcyB8PSBpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOwotCWlmIChkZXZf cHJpdi0+Z3QuYXdha2UpCi0JCXJldHVybjsKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxp bmUgPSByZXEtPnRpbWVsaW5lLT50aW1lbGluZTsKIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0X25v cmVzdW1lKGRldl9wcml2KTsKLQlkZXZfcHJpdi0+Z3QuYXdha2UgPSB0cnVlOworCWlmICh0aW1l bGluZS0+YWN0aXZlX2VuZ2luZXMgJiByZXEtPnRpbWVsaW5lLT5tYXNrKQorCQlyZXR1cm47CiAK LQlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKLQlpOTE1X3VwZGF0ZV9nZnhf dmFsKGRldl9wcml2KTsKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KQotCQln ZW42X3Jwc19idXN5KGRldl9wcml2KTsKKwlpZiAodGltZWxpbmUtPmFjdGl2ZV9lbmdpbmVzID09 IDApIHsKKwkJcXVldWVfZGVsYXllZF93b3JrKHJlcS0+aTkxNS0+d3EsCisJCQkJICAgJnRpbWVs aW5lLT5yZXRpcmVfd29yaywKKwkJCQkgICByb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKEhaKSk7 CisKKwkJaWYgKGF0b21pY19pbmNfcmV0dXJuKCZyZXEtPmk5MTUtPmd0LmFjdGl2ZSkgPT0gMSkg eworCQkJaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUocmVxLT5pOTE1KTsKKwkJCWludGVs X2VuYWJsZV9ndF9wb3dlcnNhdmUocmVxLT5pOTE1KTsKKwkJCWk5MTVfdXBkYXRlX2dmeF92YWwo cmVxLT5pOTE1KTsKKwkJCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA2KQorCQkJCWdlbjZf cnBzX2J1c3kocmVxLT5pOTE1KTsKKwkJfQorCX0KIAotCXF1ZXVlX2RlbGF5ZWRfd29yayhkZXZf cHJpdi0+d3EsCi0JCQkgICAmZGV2X3ByaXYtPmd0LnJldGlyZV93b3JrLAotCQkJICAgcm91bmRf amlmZmllc191cF9yZWxhdGl2ZShIWikpOworCXRpbWVsaW5lLT5hY3RpdmVfZW5naW5lcyB8PSBy ZXEtPnRpbWVsaW5lLT5tYXNrOwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2Nh bmNlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCkBAIC00ODUsNyArNTQz LDcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKIAkgKi8KIAlyZXF1ZXN0LT5lbWl0dGVkX2pp ZmZpZXMgPSBqaWZmaWVzOwogCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJmVuZ2luZS0+bGFzdF9yZXF1 ZXN0LCByZXF1ZXN0KTsKLQlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmZW5naW5lLT5y ZXF1ZXN0X2xpc3QpOworCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmxpbmssICZyZXF1ZXN0LT50 aW1lbGluZS0+cmVxdWVzdHMpOwogCiAJLyogUmVjb3JkIHRoZSBwb3NpdGlvbiBvZiB0aGUgc3Rh cnQgb2YgdGhlIGJyZWFkY3J1bWIgc28gdGhhdAogCSAqIHNob3VsZCB3ZSBkZXRlY3QgdGhlIHVw ZGF0ZWQgc2Vxbm8gcGFydC13YXkgdGhyb3VnaCB0aGUKQEAgLTUwNSw3ICs1NjMsNyBAQCB2b2lk IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Qs IGJvb2wgZmx1c2hfY2FjaGVzKQogCQkgICJmb3IgYWRkaW5nIHRoZSByZXF1ZXN0ICglZCBieXRl cylcbiIsCiAJCSAgcmVzZXJ2ZWRfdGFpbCwgcmV0KTsKIAotCWk5MTVfZ2VtX21hcmtfYnVzeShy ZXF1ZXN0LT5pOTE1LCBlbmdpbmUpOworCWk5MTVfZ2VtX21hcmtfYnVzeShyZXF1ZXN0KTsKIAog CWtmZW5jZV9zaWduYWwoJnJlcXVlc3QtPnN1Ym1pdCk7CiAJa2ZlbmNlX3B1dCgmcmVxdWVzdC0+ c3VibWl0KTsKQEAgLTYzOCw3ICs2OTYsNyBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiBmb3JjaW5nIHRoZSBjbG9ja3MgdG9v IGhpZ2ggZm9yIHRoZSB3aG9sZSBzeXN0ZW0sIHdlIG9ubHkgYWxsb3cKIAkgKiBlYWNoIGNsaWVu dCB0byB3YWl0Ym9vc3Qgb25jZSBpbiBhIGJ1c3kgcGVyaW9kLgogCSAqLwotCWlmICghSVNfRVJS KHJwcykgJiYgSU5URUxfSU5GTyhyZXEtPmk5MTUpLT5nZW4gPj0gNikKKwlpZiAoIUlTX0VSUihy cHMpICYmIElOVEVMX0dFTihyZXEtPmk5MTUpID49IDYpCiAJCWdlbjZfcnBzX2Jvb3N0KHJlcS0+ aTkxNSwgcnBzLCByZXEtPmVtaXR0ZWRfamlmZmllcyk7CiAKIAkvKiBPcHRpbWlzdGljIHNwaW4g Zm9yIHRoZSBuZXh0IH5qaWZmaWUgYmVmb3JlIHRvdWNoaW5nIElSUXMgKi8KQEAgLTczMSw3ICs3 ODksNiBAQCBjb21wbGV0ZToKIAogc3RhdGljIGludCB3YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZywgaW50IGJ5dGVzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IHJpbmctPmVuZ2luZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRhcmdl dDsKIAlpbnQgcmV0OwogCkBAIC03MzksMTcgKzc5Niw5IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3Jf c3BhY2Uoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIGludCBieXRlcykKIAlpZiAocmluZy0+c3Bh Y2UgPj0gYnl0ZXMpCiAJCXJldHVybiAwOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeSh0YXJnZXQs ICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGluaykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkodGFy Z2V0LCAmcmluZy0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7CiAJCXVuc2lnbmVkIHNwYWNl OwogCi0JCS8qCi0JCSAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlzIHBlci1lbmdpbmUsIHNvIGNhbiBj b250YWluIHJlcXVlc3RzCi0JCSAqIGZyb20gbXVsdGlwbGUgcmluZy4gSGVyZSwgd2UgbXVzdCBp Z25vcmUgYW55IHRoYXQKLQkJICogYXJlbid0IGZyb20gdGhlIHJpbmcgd2UncmUgY29uc2lkZXJp bmcuCi0JCSAqLwotCQlpZiAodGFyZ2V0LT5yaW5nICE9IHJpbmcpCi0JCQljb250aW51ZTsKLQog CQkvKiBXb3VsZCBjb21wbGV0aW9uIG9mIHRoaXMgcmVxdWVzdCBmcmVlIGVub3VnaCBzcGFjZT8g Ki8KIAkJc3BhY2UgPSBfX2ludGVsX3Jpbmdfc3BhY2UodGFyZ2V0LT5wb3N0Zml4LAogCQkJCQkg ICByaW5nLT50YWlsLCByaW5nLT5zaXplKTsKQEAgLTc1Nyw3ICs4MDYsNyBAQCBzdGF0aWMgaW50 IHdhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCBpbnQgYnl0ZXMpCiAJCQli cmVhazsKIAl9CiAKLQlpZiAoV0FSTl9PTigmdGFyZ2V0LT5saW5rID09ICZlbmdpbmUtPnJlcXVl c3RfbGlzdCkpCisJaWYgKFdBUk5fT04oJnRhcmdldC0+bGluayA9PSAmcmluZy0+dGltZWxpbmUt PnJlcXVlc3RzKSkKIAkJcmV0dXJuIC1FTk9TUEM7CiAKIAlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1 ZXN0KHRhcmdldCwgdHJ1ZSwgTlVMTCwgTlVMTCk7CkBAIC04NjIsMzkgKzkxMSwzIEBAIGludCBp OTE1X2dlbV9yZXF1ZXN0X2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQog CW1lbXNldChvdXQsIDAsIGJ5dGVzKTsKIAlyZXR1cm4gMDsKIH0KLQotc3RhdGljIGJvb2wgaTkx NV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQotewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgKm5leHQ7Ci0KLQls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVxdWVzdCwgbmV4dCwgJmVuZ2luZS0+cmVxdWVzdF9s aXN0LCBsaW5rKSB7Ci0JCWlmICghaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkp Ci0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUocmVxdWVzdCk7 Ci0JfQotCi0JcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3Rz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7Ci0KLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZGV2LT5z dHJ1Y3RfbXV0ZXgpOwotCi0JaWYgKGRldl9wcml2LT5ndC5hY3RpdmVfZW5naW5lcyA9PSAwKQot CQlyZXR1cm47Ci0KLQlHRU1fQlVHX09OKCFkZXZfcHJpdi0+Z3QuYXdha2UpOwotCi0JZm9yX2Vh Y2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGRldl9wcml2LCBkZXZfcHJpdi0+Z3QuYWN0aXZlX2Vu Z2luZXMpIHsKLQkJaWYgKGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKGVuZ2luZSkpCi0J CQlkZXZfcHJpdi0+Z3QuYWN0aXZlX2VuZ2luZXMgJj0gfmludGVsX2VuZ2luZV9mbGFnKGVuZ2lu ZSk7Ci0JfQotCi0JaWYgKGRldl9wcml2LT5ndC5hY3RpdmVfZW5naW5lcyA9PSAwKQotCQlxdWV1 ZV9kZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLAotCQkJCSAgICZkZXZfcHJpdi0+Z3QuaWRsZV93 b3JrLAotCQkJCSAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7Ci19CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZXF1ZXN0LmgKaW5kZXggNWJmMzUwMTgzODgzLi40OTMzYTljNzg4NmIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKQEAgLTQwLDYgKzQwLDkgQEAg c3RydWN0IGludGVsX3NpZ25hbF9ub2RlIHsKIAlzdHJ1Y3QgaW50ZWxfd2FpdCB3YWl0OwogfTsK IAorc3RydWN0IGk5MTVfdGltZWxpbmU7CitzdHJ1Y3QgaTkxNV90aW1lbGluZV9lbmdpbmU7CisK IC8qKgogICogUmVxdWVzdCBxdWV1ZSBzdHJ1Y3R1cmUuCiAgKgpAQCAtNzUsNiArNzgsOCBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwog CXN0cnVjdCBpbnRlbF9zaWduYWxfbm9kZSBzaWduYWxpbmc7CiAKKwlzdHJ1Y3QgaTkxNV90aW1l bGluZV9lbmdpbmUgKnRpbWVsaW5lOworCiAJdW5zaWduZWQgcmVzZXRfY291bnRlcjsKIAlzdHJ1 Y3Qga2ZlbmNlIHN1Ym1pdDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5k ZXggMDVhNWZiMzI4YzEzLi5iN2RmY2M3NDIyM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwpAQCAtOTc4LDYxICs5NzgsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X3JlY29yZF9y aW5nX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9CiB9CiAKLXN0 YXRpYyB2b2lkIGVuZ2luZV9yZWNvcmRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAotCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqZmlyc3QsCi0JCQkJ ICAgc3RydWN0IGRybV9pOTE1X2Vycm9yX3JpbmcgKmVyaW5nKQotewotCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKLQlpbnQgY291bnQ7Ci0KLQljb3VudCA9IDA7Ci0JcmVx dWVzdCA9IGZpcnN0OwotCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShyZXF1ZXN0LCAmZW5naW5l LT5yZXF1ZXN0X2xpc3QsIGxpbmspCi0JCWNvdW50Kys7Ci0KLQllcmluZy0+cmVxdWVzdHMgPSBO VUxMOwotCWtjYWxsb2MoY291bnQsIHNpemVvZigqZXJpbmctPnJlcXVlc3RzKSwKLQkJR0ZQX0FU T01JQyk7Ci0JaWYgKGVyaW5nLT5yZXF1ZXN0cyA9PSBOVUxMKQotCQlyZXR1cm47Ci0JZXJpbmct Pm51bV9yZXF1ZXN0cyA9IGNvdW50OwotCi0JY291bnQgPSAwOwotCXJlcXVlc3QgPSBmaXJzdDsK LQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20ocmVxdWVzdCwgJmVuZ2luZS0+cmVxdWVzdF9saXN0 LCBsaW5rKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9yZXF1ZXN0ICplcnE7Ci0KLQkJaWYg KGNvdW50ID49IGVyaW5nLT5udW1fcmVxdWVzdHMpIHsKLQkJCS8qCi0JCQkgKiBJZiB0aGUgcmlu ZyByZXF1ZXN0IGxpc3Qgd2FzIGNoYW5nZWQgaW4KLQkJCSAqIGJldHdlZW4gdGhlIHBvaW50IHdo ZXJlIHRoZSBlcnJvciByZXF1ZXN0Ci0JCQkgKiBsaXN0IHdhcyBjcmVhdGVkIGFuZCBkaW1lbnNp b25lZCBhbmQgdGhpcwotCQkJICogcG9pbnQgdGhlbiBqdXN0IGV4aXQgZWFybHkgdG8gYXZvaWQg Y3Jhc2hlcy4KLQkJCSAqCi0JCQkgKiBXZSBkb24ndCBuZWVkIHRvIGNvbW11bmljYXRlIHRoYXQg dGhlCi0JCQkgKiByZXF1ZXN0IGxpc3QgY2hhbmdlZCBzdGF0ZSBkdXJpbmcgZXJyb3IKLQkJCSAq IHN0YXRlIGNhcHR1cmUgYW5kIHRoYXQgdGhlIGVycm9yIHN0YXRlIGlzCi0JCQkgKiBzbGlnaHRs eSBpbmNvcnJlY3QgYXMgYSBjb25zZXF1ZW5jZSBzaW5jZSB3ZQotCQkJICogYXJlIHR5cGljYWxs eSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJlcXVlc3QKLQkJCSAqIGxpc3Qgc3RhdGUgYXQgdGhl IHBvaW50IG9mIGVycm9yIHN0YXRlCi0JCQkgKiBjYXB0dXJlLCBub3QgaW4gYW55IGNoYW5nZXMg aGFwcGVuaW5nIGR1cmluZwotCQkJICogdGhlIGNhcHR1cmUuCi0JCQkgKi8KLQkJCWJyZWFrOwot CQl9Ci0KLQkJZXJxID0gJmVyaW5nLT5yZXF1ZXN0c1tjb3VudCsrXTsKLQkJZXJxLT5zZXFubyA9 IHJlcXVlc3QtPmZlbmNlLnNlcW5vOwotCQllcnEtPmppZmZpZXMgPSByZXF1ZXN0LT5lbWl0dGVk X2ppZmZpZXM7Ci0JCWVycS0+aGVhZCA9IHJlcXVlc3QtPmhlYWQ7Ci0JCWVycS0+dGFpbCA9IHJl cXVlc3QtPnRhaWw7Ci0KLQkJcmN1X3JlYWRfbG9jaygpOwotCQllcnEtPnBpZCA9IHJlcXVlc3Qt PmN0eCA/IHBpZF9ucihyZXF1ZXN0LT5jdHgtPnBpZCkgOiAwOwotCQlyY3VfcmVhZF91bmxvY2so KTsKLQl9Ci19Ci0KIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3Rh dGUgKmVycm9yKQogewpAQCAtMTA1NCw3ICs5OTksOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9y ZWNvcmRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpOTE1X3Jl Y29yZF9yaW5nX3N0YXRlKGRldl9wcml2LCBlcnJvciwgZW5naW5lLCBlcmluZyk7CiAJCWVuZ2lu ZV9yZWNvcmRfd2FpdGVycyhlbmdpbmUsIGVyaW5nKTsKIAotCQlyZXF1ZXN0ID0gaTkxNV9nZW1f ZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOworCQkvL3JlcXVlc3QgPSBpOTE1X2dlbV9maW5k X2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7CisJCXJlcXVlc3QgPSBOVUxMOwogCQlpZiAocmVxdWVz dCkgewogCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07CiAJCQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZzsKQEAgLTExMDIsOCArMTA0OCw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jl Y29yZF9yaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQllcmluZy0+ Y3B1X3JpbmdfdGFpbCA9IHJpbmctPnRhaWw7CiAJCQllcmluZy0+cmluZ2J1ZmZlciA9CiAJCQkJ aTkxNV9lcnJvcl9vYmplY3RfY3JlYXRlKGRldl9wcml2LCByaW5nLT52bWEpOwotCi0JCQllbmdp bmVfcmVjb3JkX3JlcXVlc3RzKGVuZ2luZSwgcmVxdWVzdCwgZXJpbmcpOwogCQl9CiAKIAkJZXJp bmctPmh3c19wYWdlID0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggNTQ4OTViMTZjNzY0 Li4wYmZhMDY1NGIwYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xNTYzLDcgKzE1 NjMsNyBAQCB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAogCWk5MTVfY21kX3BhcnNlcl9maW5pX3JpbmcoZW5naW5lKTsKIAlp OTE1X2dlbV9yZW5kZXJfc3RhdGVfZmluaShlbmdpbmUpOwotCWk5MTVfZ2VtX2JhdGNoX3Bvb2xf ZmluaSgmZW5naW5lLT5iYXRjaF9wb29sKTsKKwkvL2k5MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgm ZW5naW5lLT5iYXRjaF9wb29sKTsKIAogCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKGVu Z2luZSk7CiAKQEAgLTE3MDgsNyArMTcwOCw3IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCkKIAlsb2dpY2FsX3Jpbmdf ZGVmYXVsdF9pcnFzKGVuZ2luZSwgaW5mby0+aXJxX3NoaWZ0KTsKIAogCWludGVsX2VuZ2luZV9p bml0X3JlcXVlc3RzKGVuZ2luZSk7Ci0JaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGVuZ2luZSwg JmVuZ2luZS0+YmF0Y2hfcG9vbCk7CisJLy9pOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZW5naW5l LCAmZW5naW5lLT5iYXRjaF9wb29sKTsKIAlpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKGVuZ2lu ZSk7CiAKIAlyZXR1cm4gZW5naW5lOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNmY0ZTI5 OGExYWExLi4xN2ZmNjdiYThlNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNDg4Myw4 ICs0ODgzLDcgQEAgdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJLyogVGhpcyBpcyBpbnRlbnRpb25hbGx5IHJhY3khIFdlIHBlZWsgYXQgdGhl IHN0YXRlIGhlcmUsIHRoZW4KIAkgKiB2YWxpZGF0ZSBpbnNpZGUgdGhlIFJQUyB3b3JrZXIuCiAJ ICovCi0JaWYgKCEoZGV2X3ByaXYtPmd0LmF3YWtlICYmCi0JICAgICAgZGV2X3ByaXYtPnJwcy5l bmFibGVkICYmCisJaWYgKCEoZGV2X3ByaXYtPnJwcy5lbmFibGVkICYmCiAJICAgICAgZGV2X3By aXYtPnJwcy5jdXJfZnJlcSA8IGRldl9wcml2LT5ycHMubWF4X2ZyZXFfc29mdGxpbWl0KSkKIAkJ cmV0dXJuOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggOGZj YmQ1OWQ0ZjM2Li4zMjljN2M5Yjk3MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKQEAgLTIwMzksNyArMjAzOSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9lbmdp bmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAllbmdpbmUtPmZlbmNlX2NvbnRleHQgPSBmZW5j ZV9jb250ZXh0X2FsbG9jKDEpOwogCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1 ZXVlKTsKIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5idWZmZXJzKTsKLQlpOTE1X2dlbV9iYXRj aF9wb29sX2luaXQoZW5naW5lLCAmZW5naW5lLT5iYXRjaF9wb29sKTsKKwkvL2k5MTVfZ2VtX2Jh dGNoX3Bvb2xfaW5pdChlbmdpbmUsICZlbmdpbmUtPmJhdGNoX3Bvb2wpOwogCW1lbXNldChlbmdp bmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vLCAwLAogCSAgICAgICBzaXplb2YoZW5naW5lLT5zZW1h cGhvcmUuc3luY19zZXFubykpOwogCkBAIC0yMTM4LDcgKzIxMzgsNiBAQCB2b2lkIGludGVsX2Vu Z2luZV9jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWk5MTVfZ2Vt X3JlbmRlcl9zdGF0ZV9maW5pKGVuZ2luZSk7CiAJaTkxNV9jbWRfcGFyc2VyX2ZpbmlfcmluZyhl bmdpbmUpOwotCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgmZW5naW5lLT5iYXRjaF9wb29sKTsK IAlpbnRlbF9lbmdpbmVfZmluaV9icmVhZGNydW1icyhlbmdpbmUpOwogCiAJaW50ZWxfcmluZ19j b250ZXh0X3VucGluKGRldl9wcml2LT5rZXJuZWxfY29udGV4dCwgZW5naW5lKTsKQEAgLTIxNTUs NyArMjE1NCw2IEBAIGludGVsX2VuZ2luZV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAq YWN0aXZlLAogdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiB7CiAJaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmZW5naW5lLT5sYXN0X3Jl cXVlc3QsIGludGVsX2VuZ2luZV9yZXRpcmUpOwotCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPnJl cXVlc3RfbGlzdCk7CiB9CiAKIGludCBpbnRlbF9lbmdpbmVfaWRsZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5k ZXggYmRiNGYxNTAyNGQxLi4yOWUxNTYwNjRlMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKQEAgLTc3LDYgKzc3LDcgQEAgc3RydWN0IGludGVsX3JpbmcgewogCXZv aWQgKnZhZGRyOwogCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBp OTE1X3RpbWVsaW5lX2VuZ2luZSAqdGltZWxpbmU7CiAJc3RydWN0IGxpc3RfaGVhZCBsaW5rOwog CiAJdTMyIGhlYWQ7CkBAIC0xNzUsMTMgKzE3Niw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg ewogCQlib29sIHJwbV93YWtlbG9jazsKIAl9IGJyZWFkY3J1bWJzOwogCi0JLyoKLQkgKiBBIHBv b2wgb2Ygb2JqZWN0cyB0byB1c2UgYXMgc2hhZG93IGNvcGllcyBvZiBjbGllbnQgYmF0Y2ggYnVm ZmVycwotCSAqIHdoZW4gdGhlIGNvbW1hbmQgcGFyc2VyIGlzIGVuYWJsZWQuIFByZXZlbnRzIHRo ZSBjbGllbnQgZnJvbQotCSAqIG1vZGlmeWluZyB0aGUgYmF0Y2ggY29udGVudHMgYWZ0ZXIgc29m dHdhcmUgcGFyc2luZy4KLQkgKi8KLQlzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCBiYXRjaF9w b29sOwotCiAJc3RydWN0IGludGVsX2h3X3N0YXR1c19wYWdlIHN0YXR1c19wYWdlOwogCXN0cnVj dCBpOTE1X2N0eF93b3JrYXJvdW5kcyB3YV9jdHg7CiAKQEAgLTI4NywxMiArMjgxLDYgQEAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyB7CiAJYm9vbCBwcmVlbXB0X3dhOwogCXUzMiBjdHhfZGVzY190 ZW1wbGF0ZTsKIAotCS8qKgotCSAqIExpc3Qgb2YgYnJlYWRjcnVtYnMgYXNzb2NpYXRlZCB3aXRo IEdQVSByZXF1ZXN0cyBjdXJyZW50bHkKLQkgKiBvdXRzdGFuZGluZy4KLQkgKi8KLQlzdHJ1Y3Qg bGlzdF9oZWFkIHJlcXVlc3RfbGlzdDsKLQogCS8qIEFuIFJDVSBndWFyZGVkIHBvaW50ZXIgdG8g dGhlIGxhc3QgcmVxdWVzdC4gTm8gcmVmZXJlbmNlIGlzCiAJICogaGVsZCB0byB0aGUgcmVxdWVz dCwgdXNlcnMgbXVzdCBjYXJlZnVsbHkgYWNxdWlyZSBhIHJlZmVyZW5jZSB0bwogCSAqIHRoZSBy ZXF1ZXN0IHVzaW5nIGk5MTVfZ2VtX2FjdGl2ZV9nZXRfcmVxdWVzdF9yY3UoKSwgb3IgaG9sZCB0 aGUKLS0gCjIuOC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK