From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5727C433DF for ; Fri, 16 Oct 2020 11:00:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 35F8A207F7 for ; Fri, 16 Oct 2020 11:00:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 35F8A207F7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4DCAD6EB9B; Fri, 16 Oct 2020 11:00:04 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 664116EC30 for ; Fri, 16 Oct 2020 11:00:03 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Fri, 16 Oct 2020 12:59:59 +0200 Message-Id: <20201016105959.1524220-1-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201016104444.1492028-4-maarten.lankhorst@linux.intel.com> References: <20201016104444.1492028-4-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v4] drm/i915: Do not share hwsp across contexts any more, v4. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SW5zdGVhZCBvZiBzaGFyaW5nIHBhZ2VzIHdpdGggYnJlYWRjcnVtYnMsIGdpdmUgZWFjaCB0aW1l bGluZSBhCnNpbmdsZSBwYWdlLiBUaGlzIGFsbG93cyB1bnJlbGF0ZWQgdGltZWxpbmVzIG5vdCB0 byBzaGFyZSBsb2NrcwphbnkgbW9yZSBkdXJpbmcgY29tbWFuZCBzdWJtaXNzaW9uLgoKQXMgYW4g YWRkaXRpb25hbCBiZW5lZml0LCBzZXFubyB3cmFwYXJvdW5kIG5vIGxvbmdlciByZXF1aXJlcwpp OTE1X3ZtYV9waW4sIHdoaWNoIG1lYW5zIHdlIG5vIGxvbmdlciBuZWVkIHRvIHdvcnJ5IGFib3V0 IGEKcG90ZW50aWFsIC1FREVBRExLIGF0IGEgcG9pbnQgd2hlcmUgd2UgYXJlIHJlYWR5IHRvIHN1 Ym1pdC4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gRml4IGVycm9uZW91cyBpOTE1X3ZtYV9hY3F1aXJl IHRoYXQgc2hvdWxkIGJlIGEgaTkxNV92bWFfcmVsZWFzZSAoaWNrbGUpLgotIEV4dHJhIGNoZWNr IGZvciBjb21wbGV0aW9uIGluIGludGVsX3JlYWRfaHdzcCgpLgpDaGFuZ2VzIHNpbmNlIHYyOgot IEZpeCBpbmNvbnNpc3RlbnQgaW5kZW50IGluIGh3c3BfYWxsb2MoKSAoa2J1aWxkKQotIG1lbXNl dCBlbnRpcmUgY2FjaGVsaW5lIHRvIDAuCkNoYW5nZXMgc2luY2UgdjM6Ci0gRG8gc2FtZSBpbiBp bnRlbF90aW1lbGluZV9yZXNldF9zZXFubygpLCBhbmQgY2xmbHVzaCBmb3IgZ29vZCBtZWFzdXJl LgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVs bHN0cm9tQGludGVsLmNvbT4gI3YxClJlcG9ydGVkLWJ5OiBrZXJuZWwgdGVzdCByb2JvdCA8bGtw QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5o ICAgICAgfCAgIDQgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYyAg ICAgIHwgMzg4ICsrKy0tLS0tLS0tLS0tLS0tLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90 aW1lbGluZV90eXBlcy5oICAgIHwgIDE1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF90aW1lbGluZS5jICAgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jICAgICAgICAgICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaCAgICAgICAgICAgfCAgMTAgLQogNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCsp LCAzNjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVz LmgKaW5kZXggNmQzOWE0YTExYmYzLi43YWZmODM1MGMzNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaApAQCAtMzksMTAgKzM5LDYgQEAgc3RydWN0IGludGVsX2d0 IHsKIAlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzIHsKIAkJc3BpbmxvY2tfdCBsb2NrOyAvKiBw cm90ZWN0cyBhY3RpdmVfbGlzdCAqLwogCQlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0Owot Ci0JCS8qIFBhY2sgbXVsdGlwbGUgdGltZWxpbmVzJyBzZXFub3MgaW50byB0aGUgc2FtZSBwYWdl ICovCi0JCXNwaW5sb2NrX3QgaHdzcF9sb2NrOwotCQlzdHJ1Y3QgbGlzdF9oZWFkIGh3c3BfZnJl ZV9saXN0OwogCX0gdGltZWxpbmVzOwogCiAJc3RydWN0IGludGVsX2d0X3JlcXVlc3RzIHsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCmluZGV4IGEyZjc0Y2VmZTRjMy4u MDMyMGVmMWI0Y2Q4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90 aW1lbGluZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMK QEAgLTEyLDIxICsxMiw3IEBACiAjaW5jbHVkZSAiaW50ZWxfcmluZy5oIgogI2luY2x1ZGUgImlu dGVsX3RpbWVsaW5lLmgiCiAKLSNkZWZpbmUgcHRyX3NldF9iaXQocHRyLCBiaXQpICgodHlwZW9m KHB0cikpKCh1bnNpZ25lZCBsb25nKShwdHIpIHwgQklUKGJpdCkpKQotI2RlZmluZSBwdHJfdGVz dF9iaXQocHRyLCBiaXQpICgodW5zaWduZWQgbG9uZykocHRyKSAmIEJJVChiaXQpKQotCi0jZGVm aW5lIENBQ0hFTElORV9CSVRTIDYKLSNkZWZpbmUgQ0FDSEVMSU5FX0ZSRUUgQ0FDSEVMSU5FX0JJ VFMKLQotc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3AgewotCXN0cnVjdCBpbnRlbF9ndCAqZ3Q7 Ci0Jc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAqZ3RfdGltZWxpbmVzOwotCXN0cnVjdCBsaXN0 X2hlYWQgZnJlZV9saW5rOwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXU2NCBmcmVlX2JpdG1h cDsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqaHdzcF9hbGxvYyhzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKQEAgLTQ1LDE3NCArMzEsMjYgQEAg c3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19od3NwX2FsbG9jKHN0cnVjdCBpbnRlbF9ndCAqZ3Qp CiAJcmV0dXJuIHZtYTsKIH0KIAotc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCi1od3NwX2FsbG9j KHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5l KQotewotCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgKmd0ID0gJnRpbWVsaW5lLT5ndC0+dGlt ZWxpbmVzOwotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwICpod3NwOwotCi0JQlVJTERfQlVH X09OKEJJVFNfUEVSX1RZUEUodTY0KSAqIENBQ0hFTElORV9CWVRFUyA+IFBBR0VfU0laRSk7Ci0K LQlzcGluX2xvY2tfaXJxKCZndC0+aHdzcF9sb2NrKTsKLQotCS8qIGh3c3BfZnJlZV9saXN0IG9u bHkgY29udGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZhaWxhYmxlIGNhY2hlbGluZXMgKi8KLQlod3Nw ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZndC0+aHdzcF9mcmVlX2xpc3QsCi0JCQkJCXR5 cGVvZigqaHdzcCksIGZyZWVfbGluayk7Ci0JaWYgKCFod3NwKSB7Ci0JCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwotCi0JCXNwaW5fdW5sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7Ci0KLQkJaHdzcCA9 IGttYWxsb2Moc2l6ZW9mKCpod3NwKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghaHdzcCkKLQkJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JCXZtYSA9IF9faHdzcF9hbGxvYyh0aW1lbGluZS0+ Z3QpOwotCQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJCWtmcmVlKGh3c3ApOwotCQkJcmV0dXJuIHZt YTsKLQkJfQotCi0JCUdUX1RSQUNFKHRpbWVsaW5lLT5ndCwgIm5ldyBIV1NQIGFsbG9jYXRlZFxu Iik7Ci0KLQkJdm1hLT5wcml2YXRlID0gaHdzcDsKLQkJaHdzcC0+Z3QgPSB0aW1lbGluZS0+Z3Q7 Ci0JCWh3c3AtPnZtYSA9IHZtYTsKLQkJaHdzcC0+ZnJlZV9iaXRtYXAgPSB+MHVsbDsKLQkJaHdz cC0+Z3RfdGltZWxpbmVzID0gZ3Q7Ci0KLQkJc3Bpbl9sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7 Ci0JCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xpbmssICZndC0+aHdzcF9mcmVlX2xpc3QpOwotCX0K LQotCUdFTV9CVUdfT04oIWh3c3AtPmZyZWVfYml0bWFwKTsKLQkqY2FjaGVsaW5lID0gX19mZnM2 NChod3NwLT5mcmVlX2JpdG1hcCk7Ci0JaHdzcC0+ZnJlZV9iaXRtYXAgJj0gfkJJVF9VTEwoKmNh Y2hlbGluZSk7Ci0JaWYgKCFod3NwLT5mcmVlX2JpdG1hcCkKLQkJbGlzdF9kZWwoJmh3c3AtPmZy ZWVfbGluayk7Ci0KLQlzcGluX3VubG9ja19pcnEoJmd0LT5od3NwX2xvY2spOwotCi0JR0VNX0JV R19PTihod3NwLT52bWEtPnByaXZhdGUgIT0gaHdzcCk7Ci0JcmV0dXJuIGh3c3AtPnZtYTsKLX0K LQotc3RhdGljIHZvaWQgX19pZGxlX2h3c3BfZnJlZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdz cCAqaHdzcCwgaW50IGNhY2hlbGluZSkKLXsKLQlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICpn dCA9IGh3c3AtPmd0X3RpbWVsaW5lczsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9s b2NrX2lycXNhdmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsKLQotCS8qIEFzIGEgY2FjaGVsaW5l IGJlY29tZXMgYXZhaWxhYmxlLCBwdWJsaXNoIHRoZSBIV1NQIG9uIHRoZSBmcmVlbGlzdCAqLwot CWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCi0JCWxpc3RfYWRkX3RhaWwoJmh3c3AtPmZyZWVfbGlu aywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7Ci0KLQlHRU1fQlVHX09OKGNhY2hlbGluZSA+PSBCSVRT X1BFUl9UWVBFKGh3c3AtPmZyZWVfYml0bWFwKSk7Ci0JaHdzcC0+ZnJlZV9iaXRtYXAgfD0gQklU X1VMTChjYWNoZWxpbmUpOwotCi0JLyogQW5kIGlmIG5vIG9uZSBpcyBsZWZ0IHVzaW5nIGl0LCBn aXZlIHRoZSBwYWdlIGJhY2sgdG8gdGhlIHN5c3RlbSAqLwotCWlmIChod3NwLT5mcmVlX2JpdG1h cCA9PSB+MHVsbCkgewotCQlpOTE1X3ZtYV9wdXQoaHdzcC0+dm1hKTsKLQkJbGlzdF9kZWwoJmh3 c3AtPmZyZWVfbGluayk7Ci0JCWtmcmVlKGh3c3ApOwotCX0KLQotCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsKLX0KLQotc3RhdGljIHZvaWQgX19yY3VfY2Fj aGVsaW5lX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyY3UpCi17Ci0Jc3RydWN0IGludGVsX3RpbWVs aW5lX2NhY2hlbGluZSAqY2wgPQotCQljb250YWluZXJfb2YocmN1LCB0eXBlb2YoKmNsKSwgcmN1 KTsKLQotCWk5MTVfYWN0aXZlX2ZpbmkoJmNsLT5hY3RpdmUpOwotCWtmcmVlKGNsKTsKLX0KLQot c3RhdGljIHZvaWQgX19pZGxlX2NhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9j YWNoZWxpbmUgKmNsKQotewotCUdFTV9CVUdfT04oIWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5h Y3RpdmUpKTsKLQotCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2wtPmh3c3AtPnZtYS0+b2Jq KTsKLQlpOTE1X3ZtYV9wdXQoY2wtPmh3c3AtPnZtYSk7Ci0JX19pZGxlX2h3c3BfZnJlZShjbC0+ aHdzcCwgcHRyX3VubWFza19iaXRzKGNsLT52YWRkciwgQ0FDSEVMSU5FX0JJVFMpKTsKLQotCWNh bGxfcmN1KCZjbC0+cmN1LCBfX3JjdV9jYWNoZWxpbmVfZnJlZSk7Ci19Ci0KIF9faTkxNV9hY3Rp dmVfY2FsbAotc3RhdGljIHZvaWQgX19jYWNoZWxpbmVfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2 ZSAqYWN0aXZlKQorc3RhdGljIHZvaWQgX190aW1lbGluZV9yZXRpcmUoc3RydWN0IGk5MTVfYWN0 aXZlICphY3RpdmUpCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wgPQot CQljb250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsKKwlzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCp0bCksIGFj dGl2ZSk7CiAKLQlpOTE1X3ZtYV91bnBpbihjbC0+aHdzcC0+dm1hKTsKLQlpZiAocHRyX3Rlc3Rf Yml0KGNsLT52YWRkciwgQ0FDSEVMSU5FX0ZSRUUpKQotCQlfX2lkbGVfY2FjaGVsaW5lX2ZyZWUo Y2wpOworCWk5MTVfdm1hX3VucGluKHRsLT5od3NwX2dndHQpOworCWludGVsX3RpbWVsaW5lX3B1 dCh0bCk7CiB9CiAKLXN0YXRpYyBpbnQgX19jYWNoZWxpbmVfYWN0aXZlKHN0cnVjdCBpOTE1X2Fj dGl2ZSAqYWN0aXZlKQorc3RhdGljIGludCBfX3RpbWVsaW5lX2FjdGl2ZShzdHJ1Y3QgaTkxNV9h Y3RpdmUgKmFjdGl2ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCA9 Ci0JCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2wpLCBhY3RpdmUpOworCXN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGwgPQorCQljb250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKnRsKSwg YWN0aXZlKTsKIAotCV9faTkxNV92bWFfcGluKGNsLT5od3NwLT52bWEpOworCV9faTkxNV92bWFf cGluKHRsLT5od3NwX2dndHQpOworCWludGVsX3RpbWVsaW5lX2dldCh0bCk7CiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICoKLWNhY2hlbGlu ZV9hbGxvYyhzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcCwgdW5zaWduZWQgaW50IGNh Y2hlbGluZSkKLXsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKLQl2b2lk ICp2YWRkcjsKLQotCUdFTV9CVUdfT04oY2FjaGVsaW5lID49IEJJVChDQUNIRUxJTkVfQklUUykp OwotCi0JY2wgPSBrbWFsbG9jKHNpemVvZigqY2wpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWNsKQot CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKLQotCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoaHdzcC0+dm1hLT5vYmosIEk5MTVfTUFQX1dCKTsKLQlpZiAoSVNfRVJSKHZhZGRyKSkg ewotCQlrZnJlZShjbCk7Ci0JCXJldHVybiBFUlJfQ0FTVCh2YWRkcik7Ci0JfQotCi0JaTkxNV92 bWFfZ2V0KGh3c3AtPnZtYSk7Ci0JY2wtPmh3c3AgPSBod3NwOwotCWNsLT52YWRkciA9IHBhZ2Vf cGFja19iaXRzKHZhZGRyLCBjYWNoZWxpbmUpOwotCi0JaTkxNV9hY3RpdmVfaW5pdCgmY2wtPmFj dGl2ZSwgX19jYWNoZWxpbmVfYWN0aXZlLCBfX2NhY2hlbGluZV9yZXRpcmUpOwotCi0JcmV0dXJu IGNsOwotfQotCi1zdGF0aWMgdm9pZCBjYWNoZWxpbmVfYWNxdWlyZShzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmVfY2FjaGVsaW5lICpjbCkKLXsKLQlpZiAoY2wpCi0JCWk5MTVfYWN0aXZlX2FjcXVpcmUo JmNsLT5hY3RpdmUpOwotfQotCi1zdGF0aWMgdm9pZCBjYWNoZWxpbmVfcmVsZWFzZShzdHJ1Y3Qg aW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKLXsKLQlpZiAoY2wpCi0JCWk5MTVfYWN0aXZl X3JlbGVhc2UoJmNsLT5hY3RpdmUpOwotfQotCi1zdGF0aWMgdm9pZCBjYWNoZWxpbmVfZnJlZShz dHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKLXsKLQlpZiAoIWk5MTVfYWN0aXZl X2FjcXVpcmVfaWZfYnVzeSgmY2wtPmFjdGl2ZSkpIHsKLQkJX19pZGxlX2NhY2hlbGluZV9mcmVl KGNsKTsKLQkJcmV0dXJuOwotCX0KLQotCUdFTV9CVUdfT04ocHRyX3Rlc3RfYml0KGNsLT52YWRk ciwgQ0FDSEVMSU5FX0ZSRUUpKTsKLQljbC0+dmFkZHIgPSBwdHJfc2V0X2JpdChjbC0+dmFkZHIs IENBQ0hFTElORV9GUkVFKTsKLQotCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNsLT5hY3RpdmUpOwot fQotCiBzdGF0aWMgaW50IGludGVsX3RpbWVsaW5lX2luaXQoc3RydWN0IGludGVsX3RpbWVsaW5l ICp0aW1lbGluZSwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJICAgICAgIHN0 cnVjdCBpOTE1X3ZtYSAqaHdzcCwKQEAgLTIyNSwzOCArNjMsMjUgQEAgc3RhdGljIGludCBpbnRl bF90aW1lbGluZV9pbml0KHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUsCiAKIAl0aW1l bGluZS0+Z3QgPSBndDsKIAotCXRpbWVsaW5lLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iID0gIWh3 c3A7Ci0JdGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lID0gTlVMTDsKLQotCWlmICghaHdzcCkgewot CQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKLQkJdW5zaWduZWQgaW50IGNh Y2hlbGluZTsKLQotCQlod3NwID0gaHdzcF9hbGxvYyh0aW1lbGluZSwgJmNhY2hlbGluZSk7CisJ aWYgKGh3c3ApIHsKKwkJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0gb2Zmc2V0OworCQl0aW1lbGlu ZS0+aHdzcF9nZ3R0ID0gaTkxNV92bWFfZ2V0KGh3c3ApOworCX0gZWxzZSB7CisJCXRpbWVsaW5l LT5oYXNfaW5pdGlhbF9icmVhZGNydW1iID0gdHJ1ZTsKKwkJaHdzcCA9IGh3c3BfYWxsb2MoZ3Qp OwogCQlpZiAoSVNfRVJSKGh3c3ApKQogCQkJcmV0dXJuIFBUUl9FUlIoaHdzcCk7Ci0KLQkJY2wg PSBjYWNoZWxpbmVfYWxsb2MoaHdzcC0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKLQkJaWYgKElTX0VS UihjbCkpIHsKLQkJCV9faWRsZV9od3NwX2ZyZWUoaHdzcC0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsK LQkJCXJldHVybiBQVFJfRVJSKGNsKTsKLQkJfQotCi0JCXRpbWVsaW5lLT5od3NwX2NhY2hlbGlu ZSA9IGNsOwotCQl0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSBjYWNoZWxpbmUgKiBDQUNIRUxJTkVf QllURVM7Ci0KLQkJdmFkZHIgPSBwYWdlX21hc2tfYml0cyhjbC0+dmFkZHIpOwotCX0gZWxzZSB7 Ci0JCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IG9mZnNldDsKLQkJdmFkZHIgPSBpOTE1X2dlbV9v YmplY3RfcGluX21hcChod3NwLT5vYmosIEk5MTVfTUFQX1dCKTsKLQkJaWYgKElTX0VSUih2YWRk cikpCi0JCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CisJCXRpbWVsaW5lLT5od3NwX2dndHQgPSBo d3NwOwogCX0KIAorCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoaHdzcC0+b2JqLCBJ OTE1X01BUF9XQik7CisJaWYgKElTX0VSUih2YWRkcikpCisJCXJldHVybiBQVFJfRVJSKHZhZGRy KTsKKworCXRpbWVsaW5lLT5od3NwX21hcCA9IHZhZGRyOwogCXRpbWVsaW5lLT5od3NwX3NlcW5v ID0KIAkJbWVtc2V0KHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0LCAwLCBDQUNIRUxJTkVf QllURVMpOwogCi0JdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKIAlH RU1fQlVHX09OKHRpbWVsaW5lLT5od3NwX29mZnNldCA+PSBod3NwLT5zaXplKTsKIAogCXRpbWVs aW5lLT5mZW5jZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CkBAIC0yNjcs NiArOTIsNyBAQCBzdGF0aWMgaW50IGludGVsX3RpbWVsaW5lX2luaXQoc3RydWN0IGludGVsX3Rp bWVsaW5lICp0aW1lbGluZSwKIAlJTklUX0xJU1RfSEVBRCgmdGltZWxpbmUtPnJlcXVlc3RzKTsK IAogCWk5MTVfc3luY21hcF9pbml0KCZ0aW1lbGluZS0+c3luYyk7CisJaTkxNV9hY3RpdmVfaW5p dCgmdGltZWxpbmUtPmFjdGl2ZSwgX190aW1lbGluZV9hY3RpdmUsIF9fdGltZWxpbmVfcmV0aXJl KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjc3LDkgKzEwMyw2IEBAIHZvaWQgaW50ZWxfZ3RfaW5p dF90aW1lbGluZXMoc3RydWN0IGludGVsX2d0ICpndCkKIAogCXNwaW5fbG9ja19pbml0KCZ0aW1l bGluZXMtPmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZXMtPmFjdGl2ZV9saXN0KTsK LQotCXNwaW5fbG9ja19pbml0KCZ0aW1lbGluZXMtPmh3c3BfbG9jayk7Ci0JSU5JVF9MSVNUX0hF QUQoJnRpbWVsaW5lcy0+aHdzcF9mcmVlX2xpc3QpOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF90 aW1lbGluZV9maW5pKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUpCkBAIC0yODgsMTIg KzExMSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF90aW1lbGluZV9maW5pKHN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGltZWxpbmUpCiAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJl cXVlc3RzKSk7CiAJR0VNX0JVR19PTih0aW1lbGluZS0+cmV0aXJlKTsKIAotCWlmICh0aW1lbGlu ZS0+aHdzcF9jYWNoZWxpbmUpCi0JCWNhY2hlbGluZV9mcmVlKHRpbWVsaW5lLT5od3NwX2NhY2hl bGluZSk7Ci0JZWxzZQotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHRpbWVsaW5lLT5od3Nw X2dndHQtPm9iaik7CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcCh0aW1lbGluZS0+aHdzcF9n Z3R0LT5vYmopOwogCiAJaTkxNV92bWFfcHV0KHRpbWVsaW5lLT5od3NwX2dndHQpOworCWk5MTVf YWN0aXZlX2ZpbmkoJnRpbWVsaW5lLT5hY3RpdmUpOwogfQogCiBzdHJ1Y3QgaW50ZWxfdGltZWxp bmUgKgpAQCAtMzQwLDkgKzE2MSw5IEBAIGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bCwgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCiAJR1RfVFJBQ0Uo dGwtPmd0LCAidGltZWxpbmU6JWxseCB1c2luZyBIV1NQIG9mZnNldDoleFxuIiwKIAkJIHRsLT5m ZW5jZV9jb250ZXh0LCB0bC0+aHdzcF9vZmZzZXQpOwogCi0JY2FjaGVsaW5lX2FjcXVpcmUodGwt Pmh3c3BfY2FjaGVsaW5lKTsKKwlpOTE1X2FjdGl2ZV9hY3F1aXJlKCZ0bC0+YWN0aXZlKTsKIAlp ZiAoYXRvbWljX2ZldGNoX2luYygmdGwtPnBpbl9jb3VudCkpIHsKLQkJY2FjaGVsaW5lX3JlbGVh c2UodGwtPmh3c3BfY2FjaGVsaW5lKTsKKwkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2 ZSk7CiAJCV9faTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7CiAJfQogCkBAIC0zNTEsOSAr MTcyLDEzIEBAIGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bCwgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCiAKIHZvaWQgaW50ZWxfdGltZWxpbmVfcmVz ZXRfc2Vxbm8oY29uc3Qgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIHsKKwl1MzIgKmh3c3Bf c2Vxbm8gPSAodTMyICopdGwtPmh3c3Bfc2Vxbm87CiAJLyogTXVzdCBiZSBwaW5uZWQgdG8gYmUg d3JpdGFibGUsIGFuZCBubyByZXF1ZXN0cyBpbiBmbGlnaHQuICovCiAJR0VNX0JVR19PTighYXRv bWljX3JlYWQoJnRsLT5waW5fY291bnQpKTsKLQlXUklURV9PTkNFKCoodTMyICopdGwtPmh3c3Bf c2Vxbm8sIHRsLT5zZXFubyk7CisKKwltZW1zZXQoaHdzcF9zZXFubywgMCwgQ0FDSEVMSU5FX0JZ VEVTKTsKKwlXUklURV9PTkNFKCpod3NwX3NlcW5vLCB0bC0+c2Vxbm8pOworCWNsZmx1c2goaHdz cF9zZXFubyk7CiB9CiAKIHZvaWQgaW50ZWxfdGltZWxpbmVfZW50ZXIoc3RydWN0IGludGVsX3Rp bWVsaW5lICp0bCkKQEAgLTQyOSwxMDYgKzI1NCwyMCBAQCBzdGF0aWMgdTMyIHRpbWVsaW5lX2Fk dmFuY2Uoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIAlyZXR1cm4gdGwtPnNlcW5vICs9IDEg KyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKIH0KIAotc3RhdGljIHZvaWQgdGltZWxpbmVf cm9sbGJhY2soc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKLXsKLQl0bC0+c2Vxbm8gLT0gMSAr IHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iOwotfQotCiBzdGF0aWMgbm9pbmxpbmUgaW50CiBf X2ludGVsX3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAogCQkJ ICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkgICB1MzIgKnNlcW5vKQogewotCXN0cnVj dCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsOwotCXVuc2lnbmVkIGludCBjYWNoZWxpbmU7 Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0Jdm9pZCAqdmFkZHI7Ci0JaW50IGVycjsKLQotCW1p Z2h0X2xvY2soJnRsLT5ndC0+Z2d0dC0+dm0ubXV0ZXgpOwotCUdUX1RSQUNFKHRsLT5ndCwgInRp bWVsaW5lOiVsbHggd3JhcHBlZFxuIiwgdGwtPmZlbmNlX2NvbnRleHQpOwotCi0JLyoKLQkgKiBJ ZiB0aGVyZSBpcyBhbiBvdXRzdGFuZGluZyBHUFUgcmVmZXJlbmNlIHRvIHRoaXMgY2FjaGVsaW5l LAotCSAqIHN1Y2ggYXMgaXQgYmVpbmcgc2FtcGxlZCBieSBhIEhXIHNlbWFwaG9yZSBvbiBhbm90 aGVyIHRpbWVsaW5lLAotCSAqIHdlIGNhbm5vdCB3cmFwYXJvdW5kIG91ciBzZXFubyB2YWx1ZSAo dGhlIEhXIHNlbWFwaG9yZSBkb2VzCi0JICogYSBzdHJpY3QgZ3JlYXRlci10aGFuLW9yLWVxdWFs cyBjb21wYXJlLCBub3QgaTkxNV9zZXFub19wYXNzZWQpLgotCSAqIFNvIGlmIHRoZSBjYWNoZWxp bmUgaXMgc3RpbGwgYnVzeSwgd2UgbXVzdCBkZXRhY2ggb3Vyc2VsdmVzCi0JICogZnJvbSBpdCBh bmQgbGVhdmUgaXQgaW5mbGlnaHQgYWxvbmdzaWRlIGl0cyB1c2Vycy4KLQkgKgotCSAqIEhvd2V2 ZXIsIGlmIG5vYm9keSBpcyB3YXRjaGluZyBhbmQgd2UgY2FuIGd1YXJhbnRlZSB0aGF0IG5vYm9k eQotCSAqIHdpbGwsIHdlIGNvdWxkIHNpbXBseSByZXVzZSB0aGUgc2FtZSBjYWNoZWxpbmUuCi0J ICoKLQkgKiBpZiAoaTkxNV9hY3RpdmVfcmVxdWVzdF9pc19zaWduYWxlZCgmdGwtPmxhc3RfcmVx dWVzdCkgJiYKLQkgKiAgICAgaTkxNV9hY3RpdmVfaXNfc2lnbmFsZWQoJnRsLT5od3NwX2NhY2hl bGluZS0+YWN0aXZlKSkKLQkgKglyZXR1cm4gMDsKLQkgKgotCSAqIFRoYXQgc2VlbXMgdW5saWtl bHkgZm9yIGEgYnVzeSB0aW1lbGluZSB0aGF0IG5lZWRlZCB0byB3cmFwIGluCi0JICogdGhlIGZp cnN0IHBsYWNlLCBzbyBqdXN0IHJlcGxhY2UgdGhlIGNhY2hlbGluZS4KLQkgKi8KKwl0bC0+aHdz cF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3NwX2dndHQpICsKKwkJb2Zmc2V0X2lu X3BhZ2UodGwtPmh3c3Bfb2Zmc2V0ICsgQ0FDSEVMSU5FX0JZVEVTKTsKIAotCXZtYSA9IGh3c3Bf YWxsb2ModGwsICZjYWNoZWxpbmUpOwotCWlmIChJU19FUlIodm1hKSkgewotCQllcnIgPSBQVFJf RVJSKHZtYSk7Ci0JCWdvdG8gZXJyX3JvbGxiYWNrOwotCX0KLQotCWVyciA9IGk5MTVfZ2d0dF9w aW4odm1hLCBOVUxMLCAwLCBQSU5fSElHSCk7Ci0JaWYgKGVycikgewotCQlfX2lkbGVfaHdzcF9m cmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKLQkJZ290byBlcnJfcm9sbGJhY2s7Ci0JfQot Ci0JY2wgPSBjYWNoZWxpbmVfYWxsb2Modm1hLT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCWlmIChJ U19FUlIoY2wpKSB7Ci0JCWVyciA9IFBUUl9FUlIoY2wpOwotCQlfX2lkbGVfaHdzcF9mcmVlKHZt YS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKLQkJZ290byBlcnJfdW5waW47Ci0JfQotCUdFTV9CVUdf T04oY2wtPmh3c3AtPnZtYSAhPSB2bWEpOwotCi0JLyoKLQkgKiBBdHRhY2ggdGhlIG9sZCBjYWNo ZWxpbmUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCwgc28gdGhhdCB3ZSBvbmx5Ci0JICogZnJlZSBp dCBhZnRlciB0aGUgY3VycmVudCByZXF1ZXN0IGlzIHJldGlyZWQsIHdoaWNoIGVuc3VyZXMgdGhh dAotCSAqIGFsbCB3cml0ZXMgaW50byB0aGUgY2FjaGVsaW5lIGZyb20gcHJldmlvdXMgcmVxdWVz dHMgYXJlIGNvbXBsZXRlLgotCSAqLwotCWVyciA9IGk5MTVfYWN0aXZlX3JlZigmdGwtPmh3c3Bf Y2FjaGVsaW5lLT5hY3RpdmUsCi0JCQkgICAgICB0bC0+ZmVuY2VfY29udGV4dCwKLQkJCSAgICAg ICZycS0+ZmVuY2UpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyX2NhY2hlbGluZTsKLQotCWNhY2hl bGluZV9yZWxlYXNlKHRsLT5od3NwX2NhY2hlbGluZSk7IC8qIG93bmVyc2hpcCBub3cgeGZlcmVk IHRvIHJxICovCi0JY2FjaGVsaW5lX2ZyZWUodGwtPmh3c3BfY2FjaGVsaW5lKTsKLQotCWk5MTVf dm1hX3VucGluKHRsLT5od3NwX2dndHQpOyAvKiBiaW5kaW5nIGtlcHQgYWxpdmUgYnkgb2xkIGNh Y2hlbGluZSAqLwotCWk5MTVfdm1hX3B1dCh0bC0+aHdzcF9nZ3R0KTsKLQotCXRsLT5od3NwX2dn dHQgPSBpOTE1X3ZtYV9nZXQodm1hKTsKLQotCXZhZGRyID0gcGFnZV9tYXNrX2JpdHMoY2wtPnZh ZGRyKTsKLQl0bC0+aHdzcF9vZmZzZXQgPSBjYWNoZWxpbmUgKiBDQUNIRUxJTkVfQllURVM7Ci0J dGwtPmh3c3Bfc2Vxbm8gPQotCQltZW1zZXQodmFkZHIgKyB0bC0+aHdzcF9vZmZzZXQsIDAsIENB Q0hFTElORV9CWVRFUyk7Ci0KLQl0bC0+aHdzcF9vZmZzZXQgKz0gaTkxNV9nZ3R0X29mZnNldCh2 bWEpOwotCUdUX1RSQUNFKHRsLT5ndCwgInRpbWVsaW5lOiVsbHggdXNpbmcgSFdTUCBvZmZzZXQ6 JXhcbiIsCi0JCSB0bC0+ZmVuY2VfY29udGV4dCwgdGwtPmh3c3Bfb2Zmc2V0KTsKLQotCWNhY2hl bGluZV9hY3F1aXJlKGNsKTsKLQl0bC0+aHdzcF9jYWNoZWxpbmUgPSBjbDsKKwl0bC0+aHdzcF9z ZXFubyA9IHRsLT5od3NwX21hcCArIG9mZnNldF9pbl9wYWdlKHRsLT5od3NwX29mZnNldCk7CisJ aW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8odGwpOwogCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2 YW5jZSh0bCk7CiAJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgqdGwtPmh3c3Bfc2Vxbm8s ICpzZXFubykpOwogCXJldHVybiAwOwotCi1lcnJfY2FjaGVsaW5lOgotCWNhY2hlbGluZV9mcmVl KGNsKTsKLWVycl91bnBpbjoKLQlpOTE1X3ZtYV91bnBpbih2bWEpOwotZXJyX3JvbGxiYWNrOgot CXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKLQlyZXR1cm4gZXJyOwogfQogCiBpbnQgaW50ZWxfdGlt ZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCkBAIC01MzgsNTMgKzI3 Nyw0MiBAQCBpbnQgaW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGlu ZSAqdGwsCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CiAKIAkvKiBSZXBsYWNlIHRo ZSBIV1NQIG9uIHdyYXBhcm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KLQlpZiAodW5saWtlbHko ISpzZXFubyAmJiB0bC0+aHdzcF9jYWNoZWxpbmUpKQorCWlmICh1bmxpa2VseSghKnNlcW5vICYm IHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKSkKIAkJcmV0dXJuIF9faW50ZWxfdGltZWxpbmVf Z2V0X3NlcW5vKHRsLCBycSwgc2Vxbm8pOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQg Y2FjaGVsaW5lX3JlZihzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCwKLQkJCSBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKLXsKLQlyZXR1cm4gaTkxNV9hY3RpdmVfYWRkX3JlcXVl c3QoJmNsLT5hY3RpdmUsIHJxKTsKLX0KLQogaW50IGludGVsX3RpbWVsaW5lX3JlYWRfaHdzcChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tLAogCQkJICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0 bywKIAkJCSAgICAgdTMyICpod3NwKQogewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxp bmUgKmNsOworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CiAJaW50IGVycjsKIAotCUdFTV9C VUdfT04oIXJjdV9hY2Nlc3NfcG9pbnRlcihmcm9tLT5od3NwX2NhY2hlbGluZSkpOwotCiAJcmN1 X3JlYWRfbG9jaygpOwotCWNsID0gcmN1X2RlcmVmZXJlbmNlKGZyb20tPmh3c3BfY2FjaGVsaW5l KTsKLQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChmcm9tKSkgLyogY29uZmlybSBjYWNoZWxp bmUgaXMgdmFsaWQgKi8KLQkJZ290byB1bmxvY2s7Ci0JaWYgKHVubGlrZWx5KCFpOTE1X2FjdGl2 ZV9hY3F1aXJlX2lmX2J1c3koJmNsLT5hY3RpdmUpKSkKLQkJZ290byB1bmxvY2s7IC8qIHNlcW5v IHdyYXBwZWQgYW5kIGNvbXBsZXRlZCEgKi8KLQlpZiAodW5saWtlbHkoaTkxNV9yZXF1ZXN0X2Nv bXBsZXRlZChmcm9tKSkpCi0JCWdvdG8gcmVsZWFzZTsKKwl0bCA9IHJjdV9kZXJlZmVyZW5jZShm cm9tLT50aW1lbGluZSk7CisJaWYgKHRsICYmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKGZyb20p IHx8CisJICAgICFpOTE1X2FjdGl2ZV9hY3F1aXJlX2lmX2J1c3koJnRsLT5hY3RpdmUpKSkKKwkJ dGwgPSBOVUxMOworCisJLyogZW5zdXJlIHdlIHdhaXQgb24gdGhlIHJpZ2h0IHJlcXVlc3QsIGlm IG5vdCwgd2UgY29tcGxldGVkICovCisJaWYgKHRsICYmIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQo ZnJvbSkpIHsKKwkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7CisJCXRsID0gTlVM TDsKKwl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAKLQllcnIgPSBjYWNoZWxpbmVfcmVmKGNsLCB0 byk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7CisJaWYgKCF0bCkKKwkJcmV0dXJuIDE7CiAKLQkq aHdzcCA9IGk5MTVfZ2d0dF9vZmZzZXQoY2wtPmh3c3AtPnZtYSkgKwotCQlwdHJfdW5tYXNrX2Jp dHMoY2wtPnZhZGRyLCBDQUNIRUxJTkVfQklUUykgKiBDQUNIRUxJTkVfQllURVM7CisJLyogaHdz cF9vZmZzZXQgbWF5IHdyYXBhcm91bmQsIHNvIHVzZSBmcm9tLT5od3NwX3NlcW5vICovCisJKmh3 c3AgPSBpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3NwX2dndHQpICsKKwkJCW9mZnNldF9pbl9wYWdl KGZyb20tPmh3c3Bfc2Vxbm8pOwogCi1vdXQ6Ci0JaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFj dGl2ZSk7CisJZXJyID0gaTkxNV9hY3RpdmVfYWRkX3JlcXVlc3QoJnRsLT5hY3RpdmUsIHRvKTsK KwlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0aXZlKTsKIAlyZXR1cm4gZXJyOwotCi1yZWxl YXNlOgotCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNsLT5hY3RpdmUpOwotdW5sb2NrOgotCXJjdV9y ZWFkX3VubG9jaygpOwotCXJldHVybiAxOwogfQogCiB2b2lkIGludGVsX3RpbWVsaW5lX3VucGlu KHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCkBAIC01OTMsOCArMzIxLDcgQEAgdm9pZCBpbnRl bF90aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQogCWlmICghYXRvbWlj X2RlY19hbmRfdGVzdCgmdGwtPnBpbl9jb3VudCkpCiAJCXJldHVybjsKIAotCWNhY2hlbGluZV9y ZWxlYXNlKHRsLT5od3NwX2NhY2hlbGluZSk7Ci0KKwlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+ YWN0aXZlKTsKIAlfX2k5MTVfdm1hX3VucGluKHRsLT5od3NwX2dndHQpOwogfQogCkBAIC02MTIs NyArMzM5LDYgQEAgdm9pZCBpbnRlbF9ndF9maW5pX3RpbWVsaW5lcyhzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQogCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgKnRpbWVsaW5lcyA9ICZndC0+dGltZWxp bmVzOwogCiAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxpbmVzLT5hY3RpdmVfbGlzdCkp OwotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lcy0+aHdzcF9mcmVlX2xpc3QpKTsK IH0KIAogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmVfdHlwZXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmgKaW5kZXggMDIxODFjNTAy MGRiLi42MTBkNTkzYjViZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3RpbWVsaW5lX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf dGltZWxpbmVfdHlwZXMuaApAQCAtMTgsNyArMTgsNiBAQAogc3RydWN0IGk5MTVfdm1hOwogc3Ry dWN0IGk5MTVfc3luY21hcDsKIHN0cnVjdCBpbnRlbF9ndDsKLXN0cnVjdCBpbnRlbF90aW1lbGlu ZV9od3NwOwogCiBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewogCXU2NCBmZW5jZV9jb250ZXh0OwpA QCAtNDUsMTIgKzQ0LDExIEBAIHN0cnVjdCBpbnRlbF90aW1lbGluZSB7CiAJYXRvbWljX3QgcGlu X2NvdW50OwogCWF0b21pY190IGFjdGl2ZV9jb3VudDsKIAorCXZvaWQgKmh3c3BfbWFwOwogCWNv bnN0IHUzMiAqaHdzcF9zZXFubzsKIAlzdHJ1Y3QgaTkxNV92bWEgKmh3c3BfZ2d0dDsKIAl1MzIg aHdzcF9vZmZzZXQ7CiAKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpod3NwX2Nh Y2hlbGluZTsKLQogCWJvb2wgaGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKIAogCS8qKgpAQCAtNjcs NiArNjUsOCBAQCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewogCSAqLwogCXN0cnVjdCBpOTE1X2Fj dGl2ZV9mZW5jZSBsYXN0X3JlcXVlc3Q7CiAKKwlzdHJ1Y3QgaTkxNV9hY3RpdmUgYWN0aXZlOwor CiAJLyoqIEEgY2hhaW4gb2YgY29tcGxldGVkIHRpbWVsaW5lcyByZWFkeSBmb3IgZWFybHkgcmV0 aXJlbWVudC4gKi8KIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnJldGlyZTsKIApAQCAtODgsMTMg Kzg4LDQgQEAgc3RydWN0IGludGVsX3RpbWVsaW5lIHsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1Owog fTsKIAotc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSB7Ci0Jc3RydWN0IGk5MTVfYWN0 aXZlIGFjdGl2ZTsKLQotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwICpod3NwOwotCXZvaWQg KnZhZGRyOwotCi0Jc3RydWN0IHJjdV9oZWFkIHJjdTsKLX07Ci0KICNlbmRpZiAvKiBfX0k5MTVf VElNRUxJTkVfVFlQRVNfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf dGltZWxpbmUuYwppbmRleCAxOWMyY2IxNjZlN2MuLjk4Y2QxNjFiMzkyNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCkBAIC02NjQsNyArNjY0LDcgQEAg c3RhdGljIGludCBsaXZlX2h3c3Bfd3JhcCh2b2lkICphcmcpCiAJaWYgKElTX0VSUih0bCkpCiAJ CXJldHVybiBQVFJfRVJSKHRsKTsKIAotCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIg fHwgIXRsLT5od3NwX2NhY2hlbGluZSkKKwlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1i KQogCQlnb3RvIG91dF9mcmVlOwogCiAJZXJyID0gaW50ZWxfdGltZWxpbmVfcGluKHRsLCBOVUxM KTsKQEAgLTc4MCw5ICs3ODAsNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yb2xsb3Zlcl9rZXJu ZWwodm9pZCAqYXJnKQogCQl9CiAKIAkJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9mZW5jZV9pc3Nl dCgmdGwtPmxhc3RfcmVxdWVzdCkpOwotCQl0bC0+c2Vxbm8gPSAwOwotCQl0aW1lbGluZV9yb2xs YmFjayh0bCk7Ci0JCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKKwkJdGwtPnNlcW5vID0gLTJ1Owog CQlXUklURV9PTkNFKCoodTMyICopdGwtPmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CiAKIAkJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUocnEpOyBpKyspIHsKQEAgLTg2MiwxMSArODYwLDEwIEBA IHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JvbGxvdmVyX3VzZXIodm9pZCAqYXJnKQogCQkJZ290byBv dXQ7CiAKIAkJdGwgPSBjZS0+dGltZWxpbmU7Ci0JCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFk Y3J1bWIgfHwgIXRsLT5od3NwX2NhY2hlbGluZSkKKwkJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJl YWRjcnVtYikKIAkJCWdvdG8gb3V0OwogCi0JCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKLQkJdGlt ZWxpbmVfcm9sbGJhY2sodGwpOworCQl0bC0+c2Vxbm8gPSAtNHU7CiAJCVdSSVRFX09OQ0UoKih1 MzIgKil0bC0+aHdzcF9zZXFubywgdGwtPnNlcW5vKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShycSk7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwppbmRleCAw ZTgxMzgxOWIwNDEuLjU5OGZiYTA2MWJkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMKQEAgLTg1Myw3ICs4NTMsNiBAQCBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVs X2NvbnRleHQgKmNlLCBnZnBfdCBnZnApCiAJcnEtPmZlbmNlLnNlcW5vID0gc2Vxbm87CiAKIAlS Q1VfSU5JVF9QT0lOVEVSKHJxLT50aW1lbGluZSwgdGwpOwotCVJDVV9JTklUX1BPSU5URVIocnEt Pmh3c3BfY2FjaGVsaW5lLCB0bC0+aHdzcF9jYWNoZWxpbmUpOwogCXJxLT5od3NwX3NlcW5vID0g dGwtPmh3c3Bfc2Vxbm87CiAJR0VNX0JVR19PTihpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSk7 CiAKQEAgLTEwOTIsOSArMTA5MSw2IEBAIGVtaXRfc2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVf cmVxdWVzdCAqdG8sCiAJaWYgKGk5MTVfcmVxdWVzdF9oYXNfaW5pdGlhbF9icmVhZGNydW1iKHRv KSkKIAkJZ290byBhd2FpdF9mZW5jZTsKIAotCWlmICghcmN1X2FjY2Vzc19wb2ludGVyKGZyb20t Pmh3c3BfY2FjaGVsaW5lKSkKLQkJZ290byBhd2FpdF9mZW5jZTsKLQogCS8qCiAJICogSWYgdGhp cyBvciBpdHMgZGVwZW5kZW50cyBhcmUgd2FpdGluZyBvbiBhbiBleHRlcm5hbCBmZW5jZQogCSAq IHRoYXQgbWF5IGZhaWwgY2F0YXN0cm9waGljYWxseSwgdGhlbiB3ZSB3YW50IHRvIGF2b2lkIHVz aW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCmluZGV4IDE2YjcyMTA4MDE5NS4uMDNi YTdjODU5MjljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaApAQCAtMjM0LDE2ICsy MzQsNiBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsKIAkgKi8KIAljb25zdCB1MzIgKmh3c3Bfc2Vx bm87CiAKLQkvKgotCSAqIElmIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5v IGZvciB0aGlzIHJlcXVlc3QgaW4KLQkgKiBhbm90aGVyIHJlcXVlc3QsIHdlIG5lZWQgdG8ga2Vl cCBhIHJlYWQgcmVmZXJlbmNlIHRvIHRoaXMgYXNzb2NpYXRlZAotCSAqIGNhY2hlbGluZSwgc28g dGhhdCB3ZSBkbyBub3QgZnJlZSBhbmQgcmVjeWNsZSBpdCBiZWZvcmUgdGhlIGZvcmVpZ24KLQkg KiBvYnNlcnZlcnMgaGF2ZSBjb21wbGV0ZWQuIEhlbmNlLCB3ZSBrZWVwIGEgcG9pbnRlciB0byB0 aGUgY2FjaGVsaW5lCi0JICogaW5zaWRlIHRoZSB0aW1lbGluZSdzIEhXU1Agdm1hLCBidXQgaXQg aXMgb25seSB2YWxpZCB3aGlsZSB0aGlzCi0JICogcmVxdWVzdCBoYXMgbm90IGNvbXBsZXRlZCBh bmQgZ3VhcmRlZCBieSB0aGUgdGltZWxpbmUgbXV0ZXguCi0JICovCi0Jc3RydWN0IGludGVsX3Rp bWVsaW5lX2NhY2hlbGluZSBfX3JjdSAqaHdzcF9jYWNoZWxpbmU7Ci0KIAkvKiogUG9zaXRpb24g aW4gdGhlIHJpbmcgb2YgdGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCiAJdTMyIGhlYWQ7CiAK LS0gCjIuMjguMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==