From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v4 08/16] drm/i915: Protect the request->global_seqno with the engine->timeline lock Date: Thu, 23 Feb 2017 07:44:14 +0000 Message-ID: <20170223074422.4125-9-chris@chris-wilson.co.uk> References: <20170223074422.4125-1-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-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71B576E97F for ; Thu, 23 Feb 2017 07:44:34 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id r18so1182242wmd.3 for ; Wed, 22 Feb 2017 23:44:34 -0800 (PST) In-Reply-To: <20170223074422.4125-1-chris@chris-wilson.co.uk> 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 QSByZXF1ZXN0IGlzIGFzc2lnbmVkIGEgZ2xvYmFsIHNlcW5vIG9ubHkgd2hlbiBpdCBpcyBvbiB0 aGUgaGFyZHdhcmUKZXhlY3V0aW9uIHF1ZXVlLiBUaGUgZ2xvYmFsIHNlcW5vIGNhbiBiZSB1c2Vk IHRvIG1haW50YWluIGEgbGlzdCBvZgpyZXF1ZXN0cyBvbiB0aGUgc2FtZSBlbmdpbmUgaW4gcmV0 aXJlbWVudCBvcmRlciwgZm9yIGV4YW1wbGUgZm9yCmNvbnN0cnVjdGluZyBhIHByaW9yaXR5IHF1 ZXVlIGZvciB3YWl0aW5nLiBQcmlvciB0byBpdHMgZXhlY3V0aW9uLCBvcgppZiBpdCBpcyBzdWJz ZXF1ZW50bHkgcmVtb3ZlZCBpbiB0aGUgZXZlbnQgb2YgcHJlZW1wdGlvbiwgaXRzIGdsb2JhbApz ZXFubyBpcyB6ZXJvLiBBcyBib3RoIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBmcm9tIHRoZSBleGVj dXRpb24gcXVldWUKbWF5IG9wZXJhdGUgaW4gSVJRIGNvbnRleHQsIGl0IGlzIG5vdCBndWFyZGVk IGJ5IHRoZSB1c3VhbCBzdHJ1Y3RfbXV0ZXgKQktMLiBJbnN0ZWFkIHRob3NlIHJlbHlpbmcgb24g dGhlIGdsb2JhbCBzZXFubyBtdXN0IGJlIHByZXBhcmVkIGZvciBpdHMKdmFsdWUgdG8gY2hhbmdl IGJldHdlZW4gcmVhZHMuIE9ubHkgd2hlbiB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZSBjYW4KdGhl IGdsb2JhbCBzZXFubyBiZSBzdGFibGUgKGR1ZSB0byB0aGUgbWVtb3J5IGJhcnJpZXJzIG9uIHN1 Ym1pdHRpbmcKdGhlIGNvbW1hbmRzIHRvIHRoZSBoYXJkd2FyZSB0byB3cml0ZSB0aGUgYnJlYWRj cnVtYiwgaWYgdGhlIEhXUyBzaG93cwp0aGF0IGl0IGhhcyBwYXNzZWQgdGhlIGdsb2JhbCBzZXFu byBhbmQgdGhlIGdsb2JhbCBzZXFubyBpcyB1bmNoYW5nZWQKYWZ0ZXIgdGhlIHJlYWQsIGl0IGlz IGluZGVlZCBjb21wbGV0ZSkuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgICAgICAgICAgfCAxNyArKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmMgICAgICAgICAgICB8IDQ1ICsrKysrKysrKystLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgICAgICAgICAgfCA2NiArKysrKysr KysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5j ICAgICAgICAgICB8IDExICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaCAgICAgICAgICAgIHwgMzkgKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2ludGVsX2JyZWFkY3J1bWJzLmMgfCAgNiArLQogNyBmaWxlcyBjaGFuZ2VkLCAx NTUgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggMGQzZjc4N2EwYTdhLi4zNDNkNzUxODFiYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtNDAyMiw5ICs0MDIyLDEwIEBAIHdhaXRfcmVtYWluaW5nX21zX2Zyb21famlmZmllcyh1 bnNpZ25lZCBsb25nIHRpbWVzdGFtcF9qaWZmaWVzLCBpbnQgdG9fd2FpdF9tcykKIH0KIAogc3Rh dGljIGlubGluZSBib29sCi1fX2k5MTVfcmVxdWVzdF9pcnFfY29tcGxldGUoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCitfX2k5MTVfcmVxdWVzdF9pcnFfY29tcGxldGUoY29uc3Qg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJdTMyIHNlcW5vOwogCiAJLyogTm90ZSB0aGF0 IHRoZSBlbmdpbmUgbWF5IGhhdmUgd3JhcHBlZCBhcm91bmQgdGhlIHNlcW5vLCBhbmQKIAkgKiBz byBvdXIgcmVxdWVzdC0+Z2xvYmFsX3NlcW5vIHdpbGwgYmUgYWhlYWQgb2YgdGhlIGhhcmR3YXJl LApAQCAtNDAzNSwxMCArNDAzNiwyMCBAQCBfX2k5MTVfcmVxdWVzdF9pcnFfY29tcGxldGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYgKHRlc3RfYml0KERNQV9GRU5DRV9G TEFHX1NJR05BTEVEX0JJVCwgJnJlcS0+ZmVuY2UuZmxhZ3MpKQogCQlyZXR1cm4gdHJ1ZTsKIAor CS8qIFRoZSByZXF1ZXN0IHdhcyBkZXF1ZXVlZCBiZWZvcmUgd2Ugd2VyZSBhd29rZW4uIFdlIGNo ZWNrIGFmdGVyCisJICogaW5zcGVjdGluZyB0aGUgaHcgdG8gY29uZmlybSB0aGF0IHRoaXMgd2Fz IHRoZSBzYW1lIHJlcXVlc3QKKwkgKiB0aGF0IGdlbmVyYXRlZCB0aGUgSFdTIHVwZGF0ZS4gVGhl IG1lbW9yeSBiYXJyaWVycyB3aXRoaW4KKwkgKiB0aGUgcmVxdWVzdCBleGVjdXRpb24gYXJlIHN1 ZmZpY2llbnQgdG8gZW5zdXJlIHRoYXQgYSBjaGVjaworCSAqIGFmdGVyIHJlYWRpbmcgdGhlIHZh bHVlIGZyb20gaHcgbWF0Y2hlcyB0aGlzIHJlcXVlc3QuCisJICovCisJc2Vxbm8gPSBpOTE1X2dl bV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhyZXEpOworCWlmICghc2Vxbm8pCisJCXJldHVybiBmYWxz ZTsKKwogCS8qIEJlZm9yZSB3ZSBkbyB0aGUgaGVhdmllciBjb2hlcmVudCByZWFkIG9mIHRoZSBz ZXFubywKIAkgKiBjaGVjayB0aGUgdmFsdWUgKGhvcGVmdWxseSkgaW4gdGhlIENQVSBjYWNoZWxp bmUuCiAJICovCi0JaWYgKF9faTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKKwlpZiAo X19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHNlcW5vKSkKIAkJcmV0dXJuIHRydWU7 CiAKIAkvKiBFbnN1cmUgb3VyIHJlYWQgb2YgdGhlIHNlcW5vIGlzIGNvaGVyZW50IHNvIHRoYXQg d2UKQEAgLTQwODksNyArNDEwMCw3IEBAIF9faTkxNV9yZXF1ZXN0X2lycV9jb21wbGV0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJCXdha2VfdXBfcHJvY2Vzcyh0c2spOwog CQlyY3VfcmVhZF91bmxvY2soKTsKIAotCQlpZiAoX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRl ZChyZXEpKQorCQlpZiAoX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHNlcW5vKSkK IAkJCXJldHVybiB0cnVlOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggZmNlMmNl YzhlNjY1Li5mOTUwY2VkYjY1MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMzk3LDcg KzM5Nyw3IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0X2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZl bmNlLAogCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQgJiYgaTkxNV9nZW1fcmVxdWVzdF9j b21wbGV0ZWQocnEpKQogCQlpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV91cHRvKHJxKTsKIAotCWlm IChycHMgJiYgcnEtPmdsb2JhbF9zZXFubyA9PSBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQocnEt PmVuZ2luZSkpIHsKKwlpZiAocnBzICYmIGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3NlcW5vKHJx KSA9PSBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQocnEtPmVuZ2luZSkpIHsKIAkJLyogVGhlIEdQ VSBpcyBub3cgaWRsZSBhbmQgdGhpcyBjbGllbnQgaGFzIHN0YWxsZWQuCiAJCSAqIFNpbmNlIG5v IG90aGVyIGNsaWVudCBoYXMgc3VibWl0dGVkIGEgcmVxdWVzdCBpbiB0aGUKIAkJICogbWVhbnRp bWUsIGFzc3VtZSB0aGF0IHRoaXMgY2xpZW50IGlzIHRoZSBvbmx5IG9uZQpAQCAtMjYwOSw3ICsy NjA5LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9tYXJrX2lubm9jZW50KHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgog aTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OworCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgKmFjdGl2ZSA9IE5VTEw7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKIAogCS8qIFdlIGFyZSBjYWxsZWQgYnkgdGhlIGVycm9yIGNhcHR1cmUgYW5k IHJlc2V0IGF0IGEgcmFuZG9tCiAJICogcG9pbnQgaW4gdGltZS4gSW4gcGFydGljdWxhciwgbm90 ZSB0aGF0IG5laXRoZXIgaXMgY3J1Y2lhbGx5CkBAIC0yNjE5LDE3ICsyNjIwLDIyIEBAIGk5MTVf Z2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CSAqIGV4dHJhIGRlbGF5IGZvciBhIHJlY2VudCBpbnRlcnJ1cHQgaXMgcG9pbnRsZXNzLiBIZW5j ZSwgd2UgZG8KIAkgKiBub3QgbmVlZCBhbiBlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKCkgYmVm b3JlIHRoZSBzZXFubyByZWFkcy4KIAkgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50 aW1lbGluZS0+bG9jaywgZmxhZ3MpOwogCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVu Z2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7Ci0JCWlmIChfX2k5MTVfZ2VtX3JlcXVl c3RfY29tcGxldGVkKHJlcXVlc3QpKQorCQlpZiAoX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRl ZChyZXF1ZXN0LAorCQkJCQkJIHJlcXVlc3QtPmdsb2JhbF9zZXFubykpCiAJCQljb250aW51ZTsK IAogCQlHRU1fQlVHX09OKHJlcXVlc3QtPmVuZ2luZSAhPSBlbmdpbmUpOwogCQlHRU1fQlVHX09O KHRlc3RfYml0KERNQV9GRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwKIAkJCQkgICAgJnJlcXVlc3Qt PmZlbmNlLmZsYWdzKSk7Ci0JCXJldHVybiByZXF1ZXN0OworCisJCWFjdGl2ZSA9IHJlcXVlc3Q7 CisJCWJyZWFrOwogCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5l LT5sb2NrLCBmbGFncyk7CiAKLQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gYWN0aXZlOwogfQogCiBz dGF0aWMgYm9vbCBlbmdpbmVfc3RhbGxlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggNDc3ZThmYzEyNWNl Li41ZWQ1MjUyMTM5N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK QEAgLTQxOCw3ICs0MTgsNiBAQCB2b2lkIF9faTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCQlpbnRlbF9lbmdpbmVfZW5hYmxlX3Np Z25hbGluZyhyZXF1ZXN0KTsKIAlzcGluX3VubG9jaygmcmVxdWVzdC0+bG9jayk7CiAKLQlHRU1f QlVHX09OKCFyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOwogCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1i KHJlcXVlc3QsCiAJCQkJcmVxdWVzdC0+cmluZy0+dmFkZHIgKyByZXF1ZXN0LT5wb3N0Zml4KTsK IApAQCAtNTA1LDcgKzUwNCw3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAogCS8qIE1vdmUgdGhlIG9sZGVzdCByZXF1ZXN0IHRvIHRoZSBz bGFiLWNhY2hlIChpZiBub3QgaW4gdXNlISkgKi8KIAlyZXEgPSBsaXN0X2ZpcnN0X2VudHJ5X29y X251bGwoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAogCQkJCSAgICAgICB0eXBlb2YoKnJl cSksIGxpbmspOwotCWlmIChyZXEgJiYgX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEp KQorCWlmIChyZXEgJiYgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKIAkJaTkxNV9n ZW1fcmVxdWVzdF9yZXRpcmUocmVxKTsKIAogCS8qIEJld2FyZTogRHJhZ29ucyBiZSBmbHlpbmcg b3ZlcmhlYWQuCkBAIC02MTEsNiArNjEwLDcgQEAgc3RhdGljIGludAogaTkxNV9nZW1fcmVxdWVz dF9hd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCiAJCQkgICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpmcm9tKQogeworCXUzMiBzZXFubzsKIAlp bnQgcmV0OwogCiAJR0VNX0JVR19PTih0byA9PSBmcm9tKTsKQEAgLTYzMywxNCArNjMzLDE1IEBA IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnRvLAogCQlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7CiAJfQogCi0JaWYgKCFmcm9tLT5n bG9iYWxfc2Vxbm8pIHsKKwlzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3NlcW5vKGZy b20pOworCWlmICghc2Vxbm8pIHsKIAkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVu Y2UoJnRvLT5zdWJtaXQsCiAJCQkJCQkgICAgJmZyb20tPmZlbmNlLCAwLAogCQkJCQkJICAgIEdG UF9LRVJORUwpOwogCQlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7CiAJfQogCi0JaWYgKGZyb20t Pmdsb2JhbF9zZXFubyA8PSB0by0+dGltZWxpbmUtPnN5bmNfc2Vxbm9bZnJvbS0+ZW5naW5lLT5p ZF0pCisJaWYgKHNlcW5vIDw9IHRvLT50aW1lbGluZS0+c3luY19zZXFub1tmcm9tLT5lbmdpbmUt PmlkXSkKIAkJcmV0dXJuIDA7CiAKIAl0cmFjZV9pOTE1X2dlbV9yaW5nX3N5bmNfdG8odG8sIGZy b20pOwpAQCAtNjU4LDcgKzY1OSw3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRvLAogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQl0 by0+dGltZWxpbmUtPnN5bmNfc2Vxbm9bZnJvbS0+ZW5naW5lLT5pZF0gPSBmcm9tLT5nbG9iYWxf c2Vxbm87CisJdG8tPnRpbWVsaW5lLT5zeW5jX3NlcW5vW2Zyb20tPmVuZ2luZS0+aWRdID0gc2Vx bm87CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTkzOSw3ICs5NDAsNyBAQCBzdGF0aWMgYm9vbCBidXN5 d2FpdF9zdG9wKHVuc2lnbmVkIGxvbmcgdGltZW91dCwgdW5zaWduZWQgaW50IGNwdSkKIH0KIAog Ym9vbCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLAotCQkJIGludCBzdGF0ZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0X3VzKQorCQkJIHUz MiBzZXFubywgaW50IHN0YXRlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXRfdXMpCiB7CiAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CiAJdW5zaWduZWQgaW50IGly cSwgY3B1OwpAQCAtOTU3LDcgKzk1OCwxMSBAQCBib29sIF9faTkxNV9zcGluX3JlcXVlc3QoY29u c3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJaXJxID0gYXRvbWljX3JlYWQo JmVuZ2luZS0+aXJxX2NvdW50KTsKIAl0aW1lb3V0X3VzICs9IGxvY2FsX2Nsb2NrX3VzKCZjcHUp OwogCWRvIHsKLQkJaWYgKF9faTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKKwkJaWYg KHNlcW5vICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3NlcW5vKHJlcSkpCisJCQlicmVhazsK KworCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9zZXFubyhyZXEtPmVu Z2luZSksCisJCQkJICAgICAgc2Vxbm8pKQogCQkJcmV0dXJuIHRydWU7CiAKIAkJLyogU2Vxbm8g YXJlIG1lYW50IHRvIGJlIG9yZGVyZWQgKmJlZm9yZSogdGhlIGludGVycnVwdC4gSWYKQEAgLTEw MjksMTEgKzEwMzQsMTQgQEAgbG9uZyBpOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKIAlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKQogCQlhZGRf d2FpdF9xdWV1ZShlcnJxLCAmcmVzZXQpOwogCisJaW50ZWxfd2FpdF9pbml0KCZ3YWl0KTsKKwog CXJlc2V0X3dhaXRfcXVldWUoJnJlcS0+ZXhlY3V0ZSwgJmV4ZWMpOwotCWlmICghcmVxLT5nbG9i YWxfc2Vxbm8pIHsKKwlpZiAoIWludGVsX3dhaXRfdXBkYXRlX3JlcXVlc3QoJndhaXQsIHJlcSkp IHsKIAkJZG8gewogCQkJc2V0X2N1cnJlbnRfc3RhdGUoc3RhdGUpOwotCQkJaWYgKHJlcS0+Z2xv YmFsX3NlcW5vKQorCisJCQlpZiAoaW50ZWxfd2FpdF91cGRhdGVfcmVxdWVzdCgmd2FpdCwgcmVx KSkKIAkJCQlicmVhazsKIAogCQkJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCAmJgpAQCAt MTA2MSw3ICsxMDY5LDcgQEAgbG9uZyBpOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKIAkJaWYgKHRpbWVvdXQgPCAwKQogCQkJZ290byBjb21wbGV0ZTsK IAotCQlHRU1fQlVHX09OKCFyZXEtPmdsb2JhbF9zZXFubyk7CisJCUdFTV9CVUdfT04oIWludGVs X3dhaXRfaGFzX3NlcW5vKCZ3YWl0KSk7CiAJfQogCUdFTV9CVUdfT04oIWk5MTVfc3dfZmVuY2Vf c2lnbmFsZWQoJnJlcS0+c3VibWl0KSk7CiAKQEAgLTEwNzAsNyArMTA3OCw2IEBAIGxvbmcgaTkx NV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCWdvdG8g Y29tcGxldGU7CiAKIAlzZXRfY3VycmVudF9zdGF0ZShzdGF0ZSk7Ci0JaW50ZWxfd2FpdF9pbml0 KCZ3YWl0LCByZXEtPmdsb2JhbF9zZXFubyk7CiAJaWYgKGludGVsX2VuZ2luZV9hZGRfd2FpdChy ZXEtPmVuZ2luZSwgJndhaXQpKQogCQkvKiBJbiBvcmRlciB0byBjaGVjayB0aGF0IHdlIGhhdmVu J3QgbWlzc2VkIHRoZSBpbnRlcnJ1cHQKIAkJICogYXMgd2UgZW5hYmxlZCBpdCwgd2UgbmVlZCB0 byBraWNrIG91cnNlbHZlcyB0byBkbyBhCkBAIC0xMDkxLDcgKzEwOTgsOCBAQCBsb25nIGk5MTVf d2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCiAJCXRpbWVv dXQgPSBpb19zY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwogCi0JCWlmIChpbnRlbF93YWl0X2Nv bXBsZXRlKCZ3YWl0KSkKKwkJaWYgKGludGVsX3dhaXRfY29tcGxldGUoJndhaXQpICYmCisJCSAg ICBpbnRlbF93YWl0X2NoZWNrX3JlcXVlc3QoJndhaXQsIHJlcSkpCiAJCQlicmVhazsKIAogCQlz ZXRfY3VycmVudF9zdGF0ZShzdGF0ZSk7CkBAIC0xMTQyLDE0ICsxMTUwLDIxIEBAIGxvbmcgaTkx NV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiBzdGF0aWMg dm9pZCBlbmdpbmVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsICpuZXh0OworCXUz MiBzZXFubyA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKKwlMSVNUX0hFQUQocmV0 aXJlKTsKIAorCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwogCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBuZXh0LAogCQkJCSAmZW5naW5lLT50aW1lbGlu ZS0+cmVxdWVzdHMsIGxpbmspIHsKLQkJaWYgKCFfX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVk KHJlcXVlc3QpKQotCQkJcmV0dXJuOworCQlpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCBy ZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pKQorCQkJYnJlYWs7CiAKLQkJaTkxNV9nZW1fcmVxdWVzdF9y ZXRpcmUocmVxdWVzdCk7CisJCWxpc3RfbW92ZV90YWlsKCZyZXF1ZXN0LT5saW5rLCAmcmV0aXJl KTsKIAl9CisJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKworCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBuZXh0LCAmcmV0aXJlLCBsaW5rKQorCQlp OTE1X2dlbV9yZXF1ZXN0X3JldGlyZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBpOTE1X2dlbV9yZXRp cmVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCmluZGV4IDQ2N2QzZTEzZmNlMC4uYjgxZjY3MDk5 MDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCkBAIC0xMzUsNiAr MTM1LDExIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiAJc3RydWN0IGk5MTVfcHJp b3RyZWUgcHJpb3RyZWU7CiAJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSBkZXA7CiAKKwkvKiogR0VN IHNlcXVlbmNlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IG9uIHRoZQorCSAq IGdsb2JhbCBleGVjdXRpb24gdGltZWxpbmUuIEl0IGlzIHplcm8gd2hlbiB0aGUgcmVxdWVzdCBp cyBub3QKKwkgKiBvbiB0aGUgSFcgcXVldWUgKGkuZS4gbm90IG9uIHRoZSBlbmdpbmUgdGltZWxp bmUgbGlzdCkuCisJICogSXRzIHZhbHVlIGlzIGd1YXJkZWQgYnkgdGhlIHRpbWVsaW5lIHNwaW5s b2NrLgorCSAqLwogCXUzMiBnbG9iYWxfc2Vxbm87CiAKIAkvKiogUG9zaXRpb24gaW4gdGhlIHJp bmcgb2YgdGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCkBAIC0yMjksNiArMjM0LDMwIEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKipwZHN0LAogCSpwZHN0ID0gc3JjOwogfQogCisvKioKKyAqIGk5MTVfZ2Vt X3JlcXVlc3RfZ2xvYmFsX3NlcW5vIC0gcmVwb3J0IHRoZSBjdXJyZW50IGdsb2JhbCBzZXFubwor ICogQHJlcXVlc3QgLSB0aGUgcmVxdWVzdAorICoKKyAqIEEgcmVxdWVzdCBpcyBhc3NpZ25lZCBh IGdsb2JhbCBzZXFubyBvbmx5IHdoZW4gaXQgaXMgb24gdGhlIGhhcmR3YXJlCisgKiBleGVjdXRp b24gcXVldWUuIFRoZSBnbG9iYWwgc2Vxbm8gY2FuIGJlIHVzZWQgdG8gbWFpbnRhaW4gYSBsaXN0 IG9mCisgKiByZXF1ZXN0cyBvbiB0aGUgc2FtZSBlbmdpbmUgaW4gcmV0aXJlbWVudCBvcmRlciwg Zm9yIGV4YW1wbGUgZm9yCisgKiBjb25zdHJ1Y3RpbmcgYSBwcmlvcml0eSBxdWV1ZSBmb3Igd2Fp dGluZy4gUHJpb3IgdG8gaXRzIGV4ZWN1dGlvbiwgb3IKKyAqIGlmIGl0IGlzIHN1YnNlcXVlbnRs eSByZW1vdmVkIGluIHRoZSBldmVudCBvZiBwcmVlbXB0aW9uLCBpdHMgZ2xvYmFsCisgKiBzZXFu byBpcyB6ZXJvLiBBcyBib3RoIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBmcm9tIHRoZSBleGVjdXRp b24gcXVldWUKKyAqIG1heSBvcGVyYXRlIGluIElSUSBjb250ZXh0LCBpdCBpcyBub3QgZ3VhcmRl ZCBieSB0aGUgdXN1YWwgc3RydWN0X211dGV4CisgKiBCS0wuIEluc3RlYWQgdGhvc2UgcmVseWlu ZyBvbiB0aGUgZ2xvYmFsIHNlcW5vIG11c3QgYmUgcHJlcGFyZWQgZm9yIGl0cworICogdmFsdWUg dG8gY2hhbmdlIGJldHdlZW4gcmVhZHMuIE9ubHkgd2hlbiB0aGUgcmVxdWVzdCBpcyBjb21wbGV0 ZSBjYW4KKyAqIHRoZSBnbG9iYWwgc2Vxbm8gYmUgc3RhYmxlIChkdWUgdG8gdGhlIG1lbW9yeSBi YXJyaWVycyBvbiBzdWJtaXR0aW5nCisgKiB0aGUgY29tbWFuZHMgdG8gdGhlIGhhcmR3YXJlIHRv IHdyaXRlIHRoZSBicmVhZGNydW1iLCBpZiB0aGUgSFdTIHNob3dzCisgKiB0aGF0IGl0IGhhcyBw YXNzZWQgdGhlIGdsb2JhbCBzZXFubyBhbmQgdGhlIGdsb2JhbCBzZXFubyBpcyB1bmNoYW5nZWQK KyAqIGFmdGVyIHRoZSByZWFkLCBpdCBpcyBpbmRlZWQgY29tcGxldGUpLgorICovCitzdGF0aWMg dTMyCitpOTE1X2dlbV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QpCit7CisJcmV0dXJuIFJFQURfT05DRShyZXF1ZXN0LT5nbG9i YWxfc2Vxbm8pOworfQorCiBpbnQKIGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfb2JqZWN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCiAJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLApAQCAtMjY5LDQ2ICsyOTgsNTUgQEAgc3RhdGljIGlubGluZSBib29sIGk5 MTVfc2Vxbm9fcGFzc2VkKHUzMiBzZXExLCB1MzIgc2VxMikKIH0KIAogc3RhdGljIGlubGluZSBi b29sCi1fX2k5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKK19faTkxNV9nZW1fcmVxdWVzdF9zdGFydGVkKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgc2Vxbm8pCiB7Ci0JR0VNX0JVR19PTighcmVx LT5nbG9iYWxfc2Vxbm8pOworCUdFTV9CVUdfT04oIXNlcW5vKTsKIAlyZXR1cm4gaTkxNV9zZXFu b19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9zZXFubyhyZXEtPmVuZ2luZSksCi0JCQkJIHJlcS0+ Z2xvYmFsX3NlcW5vIC0gMSk7CisJCQkJIHNlcW5vIC0gMSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg Ym9vbAogaTkxNV9nZW1fcmVxdWVzdF9zdGFydGVkKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQogewotCWlmICghcmVxLT5nbG9iYWxfc2Vxbm8pCisJdTMyIHNlcW5vOwor CisJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhyZXEpOworCWlmICghc2Vx bm8pCiAJCXJldHVybiBmYWxzZTsKIAotCXJldHVybiBfX2k5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRl ZChyZXEpOworCXJldHVybiBfX2k5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChyZXEsIHNlcW5vKTsK IH0KIAogc3RhdGljIGlubGluZSBib29sCi1fX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQorX19pOTE1X2dlbV9yZXF1ZXN0 X2NvbXBsZXRlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIHNl cW5vKQogewotCUdFTV9CVUdfT04oIXJlcS0+Z2xvYmFsX3NlcW5vKTsKLQlyZXR1cm4gaTkxNV9z ZXFub19wYXNzZWQoaW50ZWxfZW5naW5lX2dldF9zZXFubyhyZXEtPmVuZ2luZSksCi0JCQkJIHJl cS0+Z2xvYmFsX3NlcW5vKTsKKwlHRU1fQlVHX09OKCFzZXFubyk7CisJcmV0dXJuIGk5MTVfc2Vx bm9fcGFzc2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLCBzZXFubykgJiYK KwkJc2Vxbm8gPT0gaTkxNV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vxbm8ocmVxKTsKIH0KIAogc3Rh dGljIGlubGluZSBib29sCiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlpZiAoIXJlcS0+Z2xvYmFsX3NlcW5vKQor CXUzMiBzZXFubzsKKworCXNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vxbm8ocmVx KTsKKwlpZiAoIXNlcW5vKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gX19pOTE1X2dlbV9y ZXF1ZXN0X2NvbXBsZXRlZChyZXEpOworCXJldHVybiBfX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKHJlcSwgc2Vxbm8pOwogfQogCiBib29sIF9faTkxNV9zcGluX3JlcXVlc3QoY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAotCQkJIGludCBzdGF0ZSwgdW5zaWdu ZWQgbG9uZyB0aW1lb3V0X3VzKTsKKwkJCSB1MzIgc2Vxbm8sIGludCBzdGF0ZSwgdW5zaWduZWQg bG9uZyB0aW1lb3V0X3VzKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3NwaW5fcmVxdWVzdChj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiAJCQkJICAgICBpbnQg c3RhdGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dF91cykKIHsKLQlyZXR1cm4gKF9faTkxNV9nZW1f cmVxdWVzdF9zdGFydGVkKHJlcXVlc3QpICYmCi0JCV9faTkxNV9zcGluX3JlcXVlc3QocmVxdWVz dCwgc3RhdGUsIHRpbWVvdXRfdXMpKTsKKwl1MzIgc2Vxbm87CisKKwlzZXFubyA9IGk5MTVfZ2Vt X3JlcXVlc3RfZ2xvYmFsX3NlcW5vKHJlcXVlc3QpOworCXJldHVybiAoX19pOTE1X2dlbV9yZXF1 ZXN0X3N0YXJ0ZWQocmVxdWVzdCwgc2Vxbm8pICYmCisJCV9faTkxNV9zcGluX3JlcXVlc3QocmVx dWVzdCwgc2Vxbm8sIHN0YXRlLCB0aW1lb3V0X3VzKSk7CiB9CiAKIC8qIFdlIHRyZWF0IHJlcXVl c3RzIGFzIGZlbmNlcy4gVGhpcyBpcyBub3QgYmUgdG8gY29uZnVzZWQgd2l0aCBvdXIKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCmluZGV4IDRmNGU3MDNkMWIxNC4uZDVi ZjRjMGIyZGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNy dW1icy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKQEAg LTU0NSw2ICs1NDUsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9lbmFibGVfc2lnbmFsaW5nKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgKmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsKIAlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LCAq KnA7CiAJYm9vbCBmaXJzdCwgd2FrZXVwOworCXUzMiBzZXFubzsKIAogCS8qIE5vdGUgdGhhdCB3 ZSBtYXkgYmUgY2FsbGVkIGZyb20gYW4gaW50ZXJydXB0IGhhbmRsZXIgb24gYW5vdGhlcgogCSAq IGRldmljZSAoZS5nLiBub3V2ZWF1IHNpZ25hbGluZyBhIGZlbmNlIGNvbXBsZXRpb24gY2F1c2lu ZyB1cwpAQCAtNTU1LDExICs1NTYsMTMgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZW5hYmxlX3NpZ25h bGluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAKIAkvKiBsb2NrZWQg YnkgZG1hX2ZlbmNlX2VuYWJsZV9zd19zaWduYWxpbmcoKSAoaXJxc2FmZSBmZW5jZS0+bG9jaykg Ki8KIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJnJlcXVlc3QtPmxvY2spOwotCWlmICghcmVxdWVzdC0+ Z2xvYmFsX3NlcW5vKQorCisJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhy ZXF1ZXN0KTsKKwlpZiAoIXNlcW5vKQogCQlyZXR1cm47CiAKIAlyZXF1ZXN0LT5zaWduYWxpbmcu d2FpdC50c2sgPSBiLT5zaWduYWxlcjsKLQlyZXF1ZXN0LT5zaWduYWxpbmcud2FpdC5zZXFubyA9 IHJlcXVlc3QtPmdsb2JhbF9zZXFubzsKKwlyZXF1ZXN0LT5zaWduYWxpbmcud2FpdC5zZXFubyA9 IHNlcW5vOwogCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJlcXVlc3QpOwogCiAJc3Bpbl9sb2NrKCZi LT5sb2NrKTsKQEAgLTU4Myw4ICs1ODYsOCBAQCB2b2lkIGludGVsX2VuZ2luZV9lbmFibGVfc2ln bmFsaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlwID0gJmItPnNp Z25hbHMucmJfbm9kZTsKIAl3aGlsZSAoKnApIHsKIAkJcGFyZW50ID0gKnA7Ci0JCWlmIChpOTE1 X3NlcW5vX3Bhc3NlZChyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8sCi0JCQkJICAgICAgdG9fc2lnbmFs ZXIocGFyZW50KS0+Z2xvYmFsX3NlcW5vKSkgeworCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vx bm8sCisJCQkJICAgICAgdG9fc2lnbmFsZXIocGFyZW50KS0+c2lnbmFsaW5nLndhaXQuc2Vxbm8p KSB7CiAJCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7CiAJCQlmaXJzdCA9IGZhbHNlOwogCQl9IGVs c2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IGI5MWMyYzdl ZjVhNi4uMDRlN2Q1YTllZTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCkBAIC01ODIsMTAgKzU4Miw0NyBAQCBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9od3Nfc2Vx bm9fYWRkcmVzcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAvKiBpbnRlbF9icmVh ZGNydW1icy5jIC0tIHVzZXIgaW50ZXJydXB0IGJvdHRvbS1oYWxmIGZvciB3YWl0ZXJzICovCiBp bnQgaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKIAotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3dhaXRfaW5pdChzdHJ1Y3QgaW50 ZWxfd2FpdCAqd2FpdCwgdTMyIHNlcW5vKQorc3RhdGljIGlubGluZSB2b2lkIGludGVsX3dhaXRf aW5pdChzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCkKIHsKIAl3YWl0LT50c2sgPSBjdXJyZW50Owor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfd2FpdF9pbml0X2Zvcl9zZXFubyhzdHJ1Y3Qg aW50ZWxfd2FpdCAqd2FpdCwgdTMyIHNlcW5vKQoreworCXdhaXQtPnRzayA9IGN1cnJlbnQ7CisJ d2FpdC0+c2Vxbm8gPSBzZXFubzsKK30KKworc3RhdGljIGlubGluZSBib29sIGludGVsX3dhaXRf aGFzX3NlcW5vKGNvbnN0IHN0cnVjdCBpbnRlbF93YWl0ICp3YWl0KQoreworCXJldHVybiB3YWl0 LT5zZXFubzsKK30KKworc3RhdGljIGlubGluZSBib29sCitpbnRlbF93YWl0X3VwZGF0ZV9zZXFu byhzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCwgdTMyIHNlcW5vKQorewogCXdhaXQtPnNlcW5vID0g c2Vxbm87CisJcmV0dXJuIGludGVsX3dhaXRfaGFzX3NlcW5vKHdhaXQpOworfQorCitzdGF0aWMg aW5saW5lIGJvb2wKK2ludGVsX3dhaXRfdXBkYXRlX3JlcXVlc3Qoc3RydWN0IGludGVsX3dhaXQg KndhaXQsCisJCQkgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCit7CisJ cmV0dXJuIGludGVsX3dhaXRfdXBkYXRlX3NlcW5vKHdhaXQsIGk5MTVfZ2VtX3JlcXVlc3RfZ2xv YmFsX3NlcW5vKHJxKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAoraW50ZWxfd2FpdF9jaGVj a19zZXFubyhjb25zdCBzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCwgdTMyIHNlcW5vKQoreworCXJl dHVybiB3YWl0LT5zZXFubyA9PSBzZXFubzsKK30KKworc3RhdGljIGlubGluZSBib29sCitpbnRl bF93YWl0X2NoZWNrX3JlcXVlc3QoY29uc3Qgc3RydWN0IGludGVsX3dhaXQgKndhaXQsCisJCQkg Y29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKK3sKKwlyZXR1cm4gaW50ZWxf d2FpdF9jaGVja19zZXFubyh3YWl0LCBpOTE1X2dlbV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhycSkp OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfd2FpdF9jb21wbGV0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfd2FpdCAqd2FpdCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9icmVhZGNydW1icy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX2JyZWFkY3J1bWJzLmMKaW5kZXggNjQyNmFjYzlmZGNhLi42MjFiZTFjYTUzZDgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9icmVhZGNy dW1icy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9icmVhZGNy dW1icy5jCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIGludCBpZ3RfcmFuZG9tX2luc2VydF9y ZW1vdmUodm9pZCAqYXJnKQogCQlnb3RvIG91dF9iaXRtYXA7CiAKIAlmb3IgKG4gPSAwOyBuIDwg Y291bnQ7IG4rKykKLQkJaW50ZWxfd2FpdF9pbml0KCZ3YWl0ZXJzW25dLCBzZXFub19iaWFzICsg bik7CisJCWludGVsX3dhaXRfaW5pdF9mb3Jfc2Vxbm8oJndhaXRlcnNbbl0sIHNlcW5vX2JpYXMg KyBuKTsKIAogCWVyciA9IGNoZWNrX3JidHJlZShlbmdpbmUsIGJpdG1hcCwgd2FpdGVycywgY291 bnQpOwogCWlmIChlcnIpCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIGludCBpZ3RfaW5zZXJ0 X2NvbXBsZXRlKHZvaWQgKmFyZykKIAkJZ290byBvdXRfd2FpdGVyczsKIAogCWZvciAobiA9IDA7 IG4gPCBjb3VudDsgbisrKSB7Ci0JCWludGVsX3dhaXRfaW5pdCgmd2FpdGVyc1tuXSwgbiArIHNl cW5vX2JpYXMpOworCQlpbnRlbF93YWl0X2luaXRfZm9yX3NlcW5vKCZ3YWl0ZXJzW25dLCBuICsg c2Vxbm9fYmlhcyk7CiAJCWludGVsX2VuZ2luZV9hZGRfd2FpdChlbmdpbmUsICZ3YWl0ZXJzW25d KTsKIAkJX19zZXRfYml0KG4sIGJpdG1hcCk7CiAJfQpAQCAtMzE4LDcgKzMxOCw3IEBAIHN0YXRp YyBpbnQgaWd0X3dha2V1cF90aHJlYWQodm9pZCAqYXJnKQogCXdoaWxlICh3YWl0X2Zvcl9yZWFk eSh3KSkgewogCQlHRU1fQlVHX09OKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSk7CiAKLQkJaW50ZWxf d2FpdF9pbml0KCZ3YWl0LCB3LT5zZXFubyk7CisJCWludGVsX3dhaXRfaW5pdF9mb3Jfc2Vxbm8o JndhaXQsIHctPnNlcW5vKTsKIAkJaW50ZWxfZW5naW5lX2FkZF93YWl0KHctPmVuZ2luZSwgJndh aXQpOwogCQlmb3IgKDs7KSB7CiAJCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1VOSU5URVJSVVBU SUJMRSk7Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=