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=-10.0 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 5C7CEC433DF for ; Thu, 15 Oct 2020 11:26:34 +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 E3D1820878 for ; Thu, 15 Oct 2020 11:26:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E3D1820878 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 34E496EC6E; Thu, 15 Oct 2020 11:26:33 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id D452E6EC6D for ; Thu, 15 Oct 2020 11:26:31 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Thu, 15 Oct 2020 13:25:27 +0200 Message-Id: <20201015112627.1142745-4-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201015112627.1142745-1-maarten.lankhorst@linux.intel.com> References: <20201015112627.1142745-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v3 03/63] drm/i915: Do not share hwsp across contexts any more, v3. 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 dCBlbnRpcmUgY2FjaGVsaW5lIHRvIDAuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3Jz dCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVGhvbWFz IEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPiAjdjEKUmVwb3J0ZWQtYnk6 IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0X3R5cGVzLmggICAgICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF90aW1lbGluZS5jICAgICAgfCAzODUgKysrLS0tLS0tLS0tLS0tLS0tCiAuLi4v Z3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmggICAgfCAgMTUgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgICB8ICAxMSArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgICA0IC0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAgICAgICB8ICAxMCAtCiA2IGZpbGVzIGNo YW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDM2OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAppbmRleCA2ZDM5YTRhMTFiZjMuLjdhZmY4MzUwYzM2 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCkBAIC0zOSwxMCAr MzksNiBAQCBzdHJ1Y3QgaW50ZWxfZ3QgewogCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgewog CQlzcGlubG9ja190IGxvY2s7IC8qIHByb3RlY3RzIGFjdGl2ZV9saXN0ICovCiAJCXN0cnVjdCBs aXN0X2hlYWQgYWN0aXZlX2xpc3Q7Ci0KLQkJLyogUGFjayBtdWx0aXBsZSB0aW1lbGluZXMnIHNl cW5vcyBpbnRvIHRoZSBzYW1lIHBhZ2UgKi8KLQkJc3BpbmxvY2tfdCBod3NwX2xvY2s7Ci0JCXN0 cnVjdCBsaXN0X2hlYWQgaHdzcF9mcmVlX2xpc3Q7CiAJfSB0aW1lbGluZXM7CiAKIAlzdHJ1Y3Qg aW50ZWxfZ3RfcmVxdWVzdHMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5l LmMKaW5kZXggYTJmNzRjZWZlNGMzLi5lOTY3NDJkOTNlZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfdGltZWxpbmUuYwpAQCAtMTIsMjEgKzEyLDcgQEAKICNpbmNsdWRlICJpbnRl bF9yaW5nLmgiCiAjaW5jbHVkZSAiaW50ZWxfdGltZWxpbmUuaCIKIAotI2RlZmluZSBwdHJfc2V0 X2JpdChwdHIsIGJpdCkgKCh0eXBlb2YocHRyKSkoKHVuc2lnbmVkIGxvbmcpKHB0cikgfCBCSVQo Yml0KSkpCi0jZGVmaW5lIHB0cl90ZXN0X2JpdChwdHIsIGJpdCkgKCh1bnNpZ25lZCBsb25nKShw dHIpICYgQklUKGJpdCkpCi0KLSNkZWZpbmUgQ0FDSEVMSU5FX0JJVFMgNgotI2RlZmluZSBDQUNI RUxJTkVfRlJFRSBDQUNIRUxJTkVfQklUUwotCi1zdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCB7 Ci0Jc3RydWN0IGludGVsX2d0ICpndDsKLQlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICpndF90 aW1lbGluZXM7Ci0Jc3RydWN0IGxpc3RfaGVhZCBmcmVlX2xpbms7Ci0Jc3RydWN0IGk5MTVfdm1h ICp2bWE7Ci0JdTY0IGZyZWVfYml0bWFwOwotfTsKLQotc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAq X19od3NwX2FsbG9jKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCitzdGF0aWMgc3RydWN0IGk5MTVfdm1h ICpod3NwX2FsbG9jKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OwpAQCAtNDUsMTc0ICszMSwyNiBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpfX2h3c3BfYWxs b2Moc3RydWN0IGludGVsX2d0ICpndCkKIAlyZXR1cm4gdm1hOwogfQogCi1zdGF0aWMgc3RydWN0 IGk5MTVfdm1hICoKLWh3c3BfYWxsb2Moc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSwg dW5zaWduZWQgaW50ICpjYWNoZWxpbmUpCi17Ci0Jc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAq Z3QgPSAmdGltZWxpbmUtPmd0LT50aW1lbGluZXM7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2h3 c3AgKmh3c3A7Ci0KLQlCVUlMRF9CVUdfT04oQklUU19QRVJfVFlQRSh1NjQpICogQ0FDSEVMSU5F X0JZVEVTID4gUEFHRV9TSVpFKTsKLQotCXNwaW5fbG9ja19pcnEoJmd0LT5od3NwX2xvY2spOwot Ci0JLyogaHdzcF9mcmVlX2xpc3Qgb25seSBjb250YWlucyBIV1NQIHRoYXQgaGF2ZSBhdmFpbGFi bGUgY2FjaGVsaW5lcyAqLwotCWh3c3AgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmd0LT5o d3NwX2ZyZWVfbGlzdCwKLQkJCQkJdHlwZW9mKCpod3NwKSwgZnJlZV9saW5rKTsKLQlpZiAoIWh3 c3ApIHsKLQkJc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0KLQkJc3Bpbl91bmxvY2tfaXJxKCZndC0+ aHdzcF9sb2NrKTsKLQotCQlod3NwID0ga21hbGxvYyhzaXplb2YoKmh3c3ApLCBHRlBfS0VSTkVM KTsKLQkJaWYgKCFod3NwKQotCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQkJdm1hID0g X19od3NwX2FsbG9jKHRpbWVsaW5lLT5ndCk7Ci0JCWlmIChJU19FUlIodm1hKSkgewotCQkJa2Zy ZWUoaHdzcCk7Ci0JCQlyZXR1cm4gdm1hOwotCQl9Ci0KLQkJR1RfVFJBQ0UodGltZWxpbmUtPmd0 LCAibmV3IEhXU1AgYWxsb2NhdGVkXG4iKTsKLQotCQl2bWEtPnByaXZhdGUgPSBod3NwOwotCQlo d3NwLT5ndCA9IHRpbWVsaW5lLT5ndDsKLQkJaHdzcC0+dm1hID0gdm1hOwotCQlod3NwLT5mcmVl X2JpdG1hcCA9IH4wdWxsOwotCQlod3NwLT5ndF90aW1lbGluZXMgPSBndDsKLQotCQlzcGluX2xv Y2tfaXJxKCZndC0+aHdzcF9sb2NrKTsKLQkJbGlzdF9hZGQoJmh3c3AtPmZyZWVfbGluaywgJmd0 LT5od3NwX2ZyZWVfbGlzdCk7Ci0JfQotCi0JR0VNX0JVR19PTighaHdzcC0+ZnJlZV9iaXRtYXAp OwotCSpjYWNoZWxpbmUgPSBfX2ZmczY0KGh3c3AtPmZyZWVfYml0bWFwKTsKLQlod3NwLT5mcmVl X2JpdG1hcCAmPSB+QklUX1VMTCgqY2FjaGVsaW5lKTsKLQlpZiAoIWh3c3AtPmZyZWVfYml0bWFw KQotCQlsaXN0X2RlbCgmaHdzcC0+ZnJlZV9saW5rKTsKLQotCXNwaW5fdW5sb2NrX2lycSgmZ3Qt Pmh3c3BfbG9jayk7Ci0KLQlHRU1fQlVHX09OKGh3c3AtPnZtYS0+cHJpdmF0ZSAhPSBod3NwKTsK LQlyZXR1cm4gaHdzcC0+dm1hOwotfQotCi1zdGF0aWMgdm9pZCBfX2lkbGVfaHdzcF9mcmVlKHN0 cnVjdCBpbnRlbF90aW1lbGluZV9od3NwICpod3NwLCBpbnQgY2FjaGVsaW5lKQotewotCXN0cnVj dCBpbnRlbF9ndF90aW1lbGluZXMgKmd0ID0gaHdzcC0+Z3RfdGltZWxpbmVzOwotCXVuc2lnbmVk IGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZ3QtPmh3c3BfbG9jaywgZmxhZ3Mp OwotCi0JLyogQXMgYSBjYWNoZWxpbmUgYmVjb21lcyBhdmFpbGFibGUsIHB1Ymxpc2ggdGhlIEhX U1Agb24gdGhlIGZyZWVsaXN0ICovCi0JaWYgKCFod3NwLT5mcmVlX2JpdG1hcCkKLQkJbGlzdF9h ZGRfdGFpbCgmaHdzcC0+ZnJlZV9saW5rLCAmZ3QtPmh3c3BfZnJlZV9saXN0KTsKLQotCUdFTV9C VUdfT04oY2FjaGVsaW5lID49IEJJVFNfUEVSX1RZUEUoaHdzcC0+ZnJlZV9iaXRtYXApKTsKLQlo d3NwLT5mcmVlX2JpdG1hcCB8PSBCSVRfVUxMKGNhY2hlbGluZSk7Ci0KLQkvKiBBbmQgaWYgbm8g b25lIGlzIGxlZnQgdXNpbmcgaXQsIGdpdmUgdGhlIHBhZ2UgYmFjayB0byB0aGUgc3lzdGVtICov Ci0JaWYgKGh3c3AtPmZyZWVfYml0bWFwID09IH4wdWxsKSB7Ci0JCWk5MTVfdm1hX3B1dChod3Nw LT52bWEpOwotCQlsaXN0X2RlbCgmaHdzcC0+ZnJlZV9saW5rKTsKLQkJa2ZyZWUoaHdzcCk7Ci0J fQotCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3QtPmh3c3BfbG9jaywgZmxhZ3MpOwotfQot Ci1zdGF0aWMgdm9pZCBfX3JjdV9jYWNoZWxpbmVfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkK LXsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCA9Ci0JCWNvbnRhaW5lcl9v ZihyY3UsIHR5cGVvZigqY2wpLCByY3UpOwotCi0JaTkxNV9hY3RpdmVfZmluaSgmY2wtPmFjdGl2 ZSk7Ci0Ja2ZyZWUoY2wpOwotfQotCi1zdGF0aWMgdm9pZCBfX2lkbGVfY2FjaGVsaW5lX2ZyZWUo c3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wpCi17Ci0JR0VNX0JVR19PTighaTkx NV9hY3RpdmVfaXNfaWRsZSgmY2wtPmFjdGl2ZSkpOwotCi0JaTkxNV9nZW1fb2JqZWN0X3VucGlu X21hcChjbC0+aHdzcC0+dm1hLT5vYmopOwotCWk5MTVfdm1hX3B1dChjbC0+aHdzcC0+dm1hKTsK LQlfX2lkbGVfaHdzcF9mcmVlKGNsLT5od3NwLCBwdHJfdW5tYXNrX2JpdHMoY2wtPnZhZGRyLCBD QUNIRUxJTkVfQklUUykpOwotCi0JY2FsbF9yY3UoJmNsLT5yY3UsIF9fcmN1X2NhY2hlbGluZV9m cmVlKTsKLX0KLQogX19pOTE1X2FjdGl2ZV9jYWxsCi1zdGF0aWMgdm9pZCBfX2NhY2hlbGluZV9y ZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlICphY3RpdmUpCitzdGF0aWMgdm9pZCBfX3RpbWVsaW5l X3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmVfY2FjaGVsaW5lICpjbCA9Ci0JCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2wp LCBhY3RpdmUpOworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPQorCQljb250YWluZXJfb2Yo YWN0aXZlLCB0eXBlb2YoKnRsKSwgYWN0aXZlKTsKIAotCWk5MTVfdm1hX3VucGluKGNsLT5od3Nw LT52bWEpOwotCWlmIChwdHJfdGVzdF9iaXQoY2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJFRSkpCi0J CV9faWRsZV9jYWNoZWxpbmVfZnJlZShjbCk7CisJaTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0 dCk7CisJaW50ZWxfdGltZWxpbmVfcHV0KHRsKTsKIH0KIAotc3RhdGljIGludCBfX2NhY2hlbGlu ZV9hY3RpdmUoc3RydWN0IGk5MTVfYWN0aXZlICphY3RpdmUpCitzdGF0aWMgaW50IF9fdGltZWxp bmVfYWN0aXZlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0aXZlKQogewotCXN0cnVjdCBpbnRlbF90 aW1lbGluZV9jYWNoZWxpbmUgKmNsID0KLQkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpj bCksIGFjdGl2ZSk7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9CisJCWNvbnRhaW5lcl9v ZihhY3RpdmUsIHR5cGVvZigqdGwpLCBhY3RpdmUpOwogCi0JX19pOTE1X3ZtYV9waW4oY2wtPmh3 c3AtPnZtYSk7CisJX19pOTE1X3ZtYV9waW4odGwtPmh3c3BfZ2d0dCk7CisJaW50ZWxfdGltZWxp bmVfZ2V0KHRsKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF90aW1lbGlu ZV9jYWNoZWxpbmUgKgotY2FjaGVsaW5lX2FsbG9jKHN0cnVjdCBpbnRlbF90aW1lbGluZV9od3Nw ICpod3NwLCB1bnNpZ25lZCBpbnQgY2FjaGVsaW5lKQotewotCXN0cnVjdCBpbnRlbF90aW1lbGlu ZV9jYWNoZWxpbmUgKmNsOwotCXZvaWQgKnZhZGRyOwotCi0JR0VNX0JVR19PTihjYWNoZWxpbmUg Pj0gQklUKENBQ0hFTElORV9CSVRTKSk7Ci0KLQljbCA9IGttYWxsb2Moc2l6ZW9mKCpjbCksIEdG UF9LRVJORUwpOwotCWlmICghY2wpCi0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JdmFk ZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChod3NwLT52bWEtPm9iaiwgSTkxNV9NQVBfV0Ip OwotCWlmIChJU19FUlIodmFkZHIpKSB7Ci0JCWtmcmVlKGNsKTsKLQkJcmV0dXJuIEVSUl9DQVNU KHZhZGRyKTsKLQl9Ci0KLQlpOTE1X3ZtYV9nZXQoaHdzcC0+dm1hKTsKLQljbC0+aHdzcCA9IGh3 c3A7Ci0JY2wtPnZhZGRyID0gcGFnZV9wYWNrX2JpdHModmFkZHIsIGNhY2hlbGluZSk7Ci0KLQlp OTE1X2FjdGl2ZV9pbml0KCZjbC0+YWN0aXZlLCBfX2NhY2hlbGluZV9hY3RpdmUsIF9fY2FjaGVs aW5lX3JldGlyZSk7Ci0KLQlyZXR1cm4gY2w7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9h Y3F1aXJlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewotCWlmIChjbCkK LQkJaTkxNV9hY3RpdmVfYWNxdWlyZSgmY2wtPmFjdGl2ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNh Y2hlbGluZV9yZWxlYXNlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewot CWlmIChjbCkKLQkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19Ci0KLXN0YXRp YyB2b2lkIGNhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNs KQotewotCWlmICghaTkxNV9hY3RpdmVfYWNxdWlyZV9pZl9idXN5KCZjbC0+YWN0aXZlKSkgewot CQlfX2lkbGVfY2FjaGVsaW5lX2ZyZWUoY2wpOwotCQlyZXR1cm47Ci0JfQotCi0JR0VNX0JVR19P TihwdHJfdGVzdF9iaXQoY2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJFRSkpOwotCWNsLT52YWRkciA9 IHB0cl9zZXRfYml0KGNsLT52YWRkciwgQ0FDSEVMSU5FX0ZSRUUpOwotCi0JaTkxNV9hY3RpdmVf cmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19Ci0KIHN0YXRpYyBpbnQgaW50ZWxfdGltZWxpbmVfaW5p dChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lLAogCQkJICAgICAgIHN0cnVjdCBpbnRl bF9ndCAqZ3QsCiAJCQkgICAgICAgc3RydWN0IGk5MTVfdm1hICpod3NwLApAQCAtMjI1LDM4ICs2 MywyNCBAQCBzdGF0aWMgaW50IGludGVsX3RpbWVsaW5lX2luaXQoc3RydWN0IGludGVsX3RpbWVs aW5lICp0aW1lbGluZSwKIAogCXRpbWVsaW5lLT5ndCA9IGd0OwogCi0JdGltZWxpbmUtPmhhc19p bml0aWFsX2JyZWFkY3J1bWIgPSAhaHdzcDsKLQl0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUgPSBO VUxMOwotCi0JaWYgKCFod3NwKSB7Ci0JCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUg KmNsOwotCQl1bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwotCi0JCWh3c3AgPSBod3NwX2FsbG9jKHRp bWVsaW5lLCAmY2FjaGVsaW5lKTsKKwlpZiAoaHdzcCkgeworCQl0aW1lbGluZS0+aHdzcF9vZmZz ZXQgPSBvZmZzZXQ7CisJCXRpbWVsaW5lLT5od3NwX2dndHQgPSBpOTE1X3ZtYV9nZXQoaHdzcCk7 CisJfSBlbHNlIHsKKwkJdGltZWxpbmUtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIgPSB0cnVlOwor CQlod3NwID0gaHdzcF9hbGxvYyhndCk7CiAJCWlmIChJU19FUlIoaHdzcCkpCiAJCQlyZXR1cm4g UFRSX0VSUihod3NwKTsKLQotCQljbCA9IGNhY2hlbGluZV9hbGxvYyhod3NwLT5wcml2YXRlLCBj YWNoZWxpbmUpOwotCQlpZiAoSVNfRVJSKGNsKSkgewotCQkJX19pZGxlX2h3c3BfZnJlZShod3Nw LT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCQkJcmV0dXJuIFBUUl9FUlIoY2wpOwotCQl9Ci0KLQkJ dGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lID0gY2w7Ci0JCXRpbWVsaW5lLT5od3NwX29mZnNldCA9 IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsKLQotCQl2YWRkciA9IHBhZ2VfbWFza19iaXRz KGNsLT52YWRkcik7Ci0JfSBlbHNlIHsKLQkJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0gb2Zmc2V0 OwotCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGh3c3AtPm9iaiwgSTkxNV9NQVBf V0IpOwotCQlpZiAoSVNfRVJSKHZhZGRyKSkKLQkJCXJldHVybiBQVFJfRVJSKHZhZGRyKTsKKwkJ dGltZWxpbmUtPmh3c3BfZ2d0dCA9IGh3c3A7CiAJfQogCi0JdGltZWxpbmUtPmh3c3Bfc2Vxbm8g PQotCQltZW1zZXQodmFkZHIgKyB0aW1lbGluZS0+aHdzcF9vZmZzZXQsIDAsIENBQ0hFTElORV9C WVRFUyk7CisJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChod3NwLT5vYmosIEk5MTVf TUFQX1dCKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkKKwkJcmV0dXJuIFBUUl9FUlIodmFkZHIpOwor CisJdGltZWxpbmUtPmh3c3BfbWFwID0gdmFkZHI7CisJdGltZWxpbmUtPmh3c3Bfc2Vxbm8gPSBt ZW1zZXQodmFkZHIgKyB0aW1lbGluZS0+aHdzcF9vZmZzZXQsIDAsIENBQ0hFTElORV9CWVRFUyk7 CiAKLQl0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaTkxNV92bWFfZ2V0KGh3c3ApOwogCUdFTV9CVUdf T04odGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID49IGh3c3AtPnNpemUpOwogCiAJdGltZWxpbmUtPmZl bmNlX2NvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygxKTsKQEAgLTI2Nyw2ICs5MSw3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUg KnRpbWVsaW5lLAogCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZS0+cmVxdWVzdHMpOwogCiAJaTkx NV9zeW5jbWFwX2luaXQoJnRpbWVsaW5lLT5zeW5jKTsKKwlpOTE1X2FjdGl2ZV9pbml0KCZ0aW1l bGluZS0+YWN0aXZlLCBfX3RpbWVsaW5lX2FjdGl2ZSwgX190aW1lbGluZV9yZXRpcmUpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0yNzcsOSArMTAyLDYgQEAgdm9pZCBpbnRlbF9ndF9pbml0X3RpbWVs aW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiAJc3Bpbl9sb2NrX2luaXQoJnRpbWVsaW5lcy0+ bG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lcy0+YWN0aXZlX2xpc3QpOwotCi0Jc3Bp bl9sb2NrX2luaXQoJnRpbWVsaW5lcy0+aHdzcF9sb2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmdGlt ZWxpbmVzLT5od3NwX2ZyZWVfbGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5l X2Zpbmkoc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSkKQEAgLTI4OCwxMiArMTEwLDEw IEBAIHN0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGludGVsX3RpbWVsaW5l ICp0aW1lbGluZSkKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0aW1lbGluZS0+cmVxdWVzdHMp KTsKIAlHRU1fQlVHX09OKHRpbWVsaW5lLT5yZXRpcmUpOwogCi0JaWYgKHRpbWVsaW5lLT5od3Nw X2NhY2hlbGluZSkKLQkJY2FjaGVsaW5lX2ZyZWUodGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lKTsK LQllbHNlCi0JCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAodGltZWxpbmUtPmh3c3BfZ2d0dC0+ b2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHRpbWVsaW5lLT5od3NwX2dndHQtPm9i aik7CiAKIAlpOTE1X3ZtYV9wdXQodGltZWxpbmUtPmh3c3BfZ2d0dCk7CisJaTkxNV9hY3RpdmVf ZmluaSgmdGltZWxpbmUtPmFjdGl2ZSk7CiB9CiAKIHN0cnVjdCBpbnRlbF90aW1lbGluZSAqCkBA IC0zNDAsOSArMTYwLDkgQEAgaW50IGludGVsX3RpbWVsaW5lX3BpbihzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmUgKnRsLCBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dykKIAlHVF9UUkFDRSh0bC0+Z3Qs ICJ0aW1lbGluZTolbGx4IHVzaW5nIEhXU1Agb2Zmc2V0OiV4XG4iLAogCQkgdGwtPmZlbmNlX2Nv bnRleHQsIHRsLT5od3NwX29mZnNldCk7CiAKLQljYWNoZWxpbmVfYWNxdWlyZSh0bC0+aHdzcF9j YWNoZWxpbmUpOworCWk5MTVfYWN0aXZlX2FjcXVpcmUoJnRsLT5hY3RpdmUpOwogCWlmIChhdG9t aWNfZmV0Y2hfaW5jKCZ0bC0+cGluX2NvdW50KSkgewotCQljYWNoZWxpbmVfcmVsZWFzZSh0bC0+ aHdzcF9jYWNoZWxpbmUpOworCQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0aXZlKTsKIAkJ X19pOTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsKIAl9CiAKQEAgLTQyOSwxMDYgKzI0OSwy MCBAQCBzdGF0aWMgdTMyIHRpbWVsaW5lX2FkdmFuY2Uoc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bCkKIAlyZXR1cm4gdGwtPnNlcW5vICs9IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYjsK IH0KIAotc3RhdGljIHZvaWQgdGltZWxpbmVfcm9sbGJhY2soc3RydWN0IGludGVsX3RpbWVsaW5l ICp0bCkKLXsKLQl0bC0+c2Vxbm8gLT0gMSArIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iOwot fQotCiBzdGF0aWMgbm9pbmxpbmUgaW50CiBfX2ludGVsX3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1 Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAogCQkJICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJ CQkgICB1MzIgKnNlcW5vKQogewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNs OwotCXVuc2lnbmVkIGludCBjYWNoZWxpbmU7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0Jdm9p ZCAqdmFkZHI7Ci0JaW50IGVycjsKLQotCW1pZ2h0X2xvY2soJnRsLT5ndC0+Z2d0dC0+dm0ubXV0 ZXgpOwotCUdUX1RSQUNFKHRsLT5ndCwgInRpbWVsaW5lOiVsbHggd3JhcHBlZFxuIiwgdGwtPmZl bmNlX2NvbnRleHQpOwotCi0JLyoKLQkgKiBJZiB0aGVyZSBpcyBhbiBvdXRzdGFuZGluZyBHUFUg cmVmZXJlbmNlIHRvIHRoaXMgY2FjaGVsaW5lLAotCSAqIHN1Y2ggYXMgaXQgYmVpbmcgc2FtcGxl ZCBieSBhIEhXIHNlbWFwaG9yZSBvbiBhbm90aGVyIHRpbWVsaW5lLAotCSAqIHdlIGNhbm5vdCB3 cmFwYXJvdW5kIG91ciBzZXFubyB2YWx1ZSAodGhlIEhXIHNlbWFwaG9yZSBkb2VzCi0JICogYSBz dHJpY3QgZ3JlYXRlci10aGFuLW9yLWVxdWFscyBjb21wYXJlLCBub3QgaTkxNV9zZXFub19wYXNz ZWQpLgotCSAqIFNvIGlmIHRoZSBjYWNoZWxpbmUgaXMgc3RpbGwgYnVzeSwgd2UgbXVzdCBkZXRh Y2ggb3Vyc2VsdmVzCi0JICogZnJvbSBpdCBhbmQgbGVhdmUgaXQgaW5mbGlnaHQgYWxvbmdzaWRl IGl0cyB1c2Vycy4KLQkgKgotCSAqIEhvd2V2ZXIsIGlmIG5vYm9keSBpcyB3YXRjaGluZyBhbmQg d2UgY2FuIGd1YXJhbnRlZSB0aGF0IG5vYm9keQotCSAqIHdpbGwsIHdlIGNvdWxkIHNpbXBseSBy ZXVzZSB0aGUgc2FtZSBjYWNoZWxpbmUuCi0JICoKLQkgKiBpZiAoaTkxNV9hY3RpdmVfcmVxdWVz dF9pc19zaWduYWxlZCgmdGwtPmxhc3RfcmVxdWVzdCkgJiYKLQkgKiAgICAgaTkxNV9hY3RpdmVf aXNfc2lnbmFsZWQoJnRsLT5od3NwX2NhY2hlbGluZS0+YWN0aXZlKSkKLQkgKglyZXR1cm4gMDsK LQkgKgotCSAqIFRoYXQgc2VlbXMgdW5saWtlbHkgZm9yIGEgYnVzeSB0aW1lbGluZSB0aGF0IG5l ZWRlZCB0byB3cmFwIGluCi0JICogdGhlIGZpcnN0IHBsYWNlLCBzbyBqdXN0IHJlcGxhY2UgdGhl IGNhY2hlbGluZS4KLQkgKi8KKwl0bC0+aHdzcF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHRs LT5od3NwX2dndHQpICsKKwkJb2Zmc2V0X2luX3BhZ2UodGwtPmh3c3Bfb2Zmc2V0ICsgQ0FDSEVM SU5FX0JZVEVTKTsKIAotCXZtYSA9IGh3c3BfYWxsb2ModGwsICZjYWNoZWxpbmUpOwotCWlmIChJ U19FUlIodm1hKSkgewotCQllcnIgPSBQVFJfRVJSKHZtYSk7Ci0JCWdvdG8gZXJyX3JvbGxiYWNr OwotCX0KLQotCWVyciA9IGk5MTVfZ2d0dF9waW4odm1hLCBOVUxMLCAwLCBQSU5fSElHSCk7Ci0J aWYgKGVycikgewotCQlfX2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsK LQkJZ290byBlcnJfcm9sbGJhY2s7Ci0JfQotCi0JY2wgPSBjYWNoZWxpbmVfYWxsb2Modm1hLT5w cml2YXRlLCBjYWNoZWxpbmUpOwotCWlmIChJU19FUlIoY2wpKSB7Ci0JCWVyciA9IFBUUl9FUlIo Y2wpOwotCQlfX2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKLQkJZ290 byBlcnJfdW5waW47Ci0JfQotCUdFTV9CVUdfT04oY2wtPmh3c3AtPnZtYSAhPSB2bWEpOwotCi0J LyoKLQkgKiBBdHRhY2ggdGhlIG9sZCBjYWNoZWxpbmUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCwg c28gdGhhdCB3ZSBvbmx5Ci0JICogZnJlZSBpdCBhZnRlciB0aGUgY3VycmVudCByZXF1ZXN0IGlz IHJldGlyZWQsIHdoaWNoIGVuc3VyZXMgdGhhdAotCSAqIGFsbCB3cml0ZXMgaW50byB0aGUgY2Fj aGVsaW5lIGZyb20gcHJldmlvdXMgcmVxdWVzdHMgYXJlIGNvbXBsZXRlLgotCSAqLwotCWVyciA9 IGk5MTVfYWN0aXZlX3JlZigmdGwtPmh3c3BfY2FjaGVsaW5lLT5hY3RpdmUsCi0JCQkgICAgICB0 bC0+ZmVuY2VfY29udGV4dCwKLQkJCSAgICAgICZycS0+ZmVuY2UpOwotCWlmIChlcnIpCi0JCWdv dG8gZXJyX2NhY2hlbGluZTsKLQotCWNhY2hlbGluZV9yZWxlYXNlKHRsLT5od3NwX2NhY2hlbGlu ZSk7IC8qIG93bmVyc2hpcCBub3cgeGZlcmVkIHRvIHJxICovCi0JY2FjaGVsaW5lX2ZyZWUodGwt Pmh3c3BfY2FjaGVsaW5lKTsKLQotCWk5MTVfdm1hX3VucGluKHRsLT5od3NwX2dndHQpOyAvKiBi aW5kaW5nIGtlcHQgYWxpdmUgYnkgb2xkIGNhY2hlbGluZSAqLwotCWk5MTVfdm1hX3B1dCh0bC0+ aHdzcF9nZ3R0KTsKLQotCXRsLT5od3NwX2dndHQgPSBpOTE1X3ZtYV9nZXQodm1hKTsKLQotCXZh ZGRyID0gcGFnZV9tYXNrX2JpdHMoY2wtPnZhZGRyKTsKLQl0bC0+aHdzcF9vZmZzZXQgPSBjYWNo ZWxpbmUgKiBDQUNIRUxJTkVfQllURVM7Ci0JdGwtPmh3c3Bfc2Vxbm8gPQotCQltZW1zZXQodmFk ZHIgKyB0bC0+aHdzcF9vZmZzZXQsIDAsIENBQ0hFTElORV9CWVRFUyk7Ci0KLQl0bC0+aHdzcF9v ZmZzZXQgKz0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwotCUdUX1RSQUNFKHRsLT5ndCwgInRpbWVs aW5lOiVsbHggdXNpbmcgSFdTUCBvZmZzZXQ6JXhcbiIsCi0JCSB0bC0+ZmVuY2VfY29udGV4dCwg dGwtPmh3c3Bfb2Zmc2V0KTsKLQotCWNhY2hlbGluZV9hY3F1aXJlKGNsKTsKLQl0bC0+aHdzcF9j YWNoZWxpbmUgPSBjbDsKKwl0bC0+aHdzcF9zZXFubyA9IHRsLT5od3NwX21hcCArIG9mZnNldF9p bl9wYWdlKHRsLT5od3NwX29mZnNldCk7CisJaW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8odGwp OwogCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CiAJR0VNX0JVR19PTihpOTE1X3Nl cW5vX3Bhc3NlZCgqdGwtPmh3c3Bfc2Vxbm8sICpzZXFubykpOwogCXJldHVybiAwOwotCi1lcnJf Y2FjaGVsaW5lOgotCWNhY2hlbGluZV9mcmVlKGNsKTsKLWVycl91bnBpbjoKLQlpOTE1X3ZtYV91 bnBpbih2bWEpOwotZXJyX3JvbGxiYWNrOgotCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKLQlyZXR1 cm4gZXJyOwogfQogCiBpbnQgaW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGwsCkBAIC01MzgsNTMgKzI3Miw0MiBAQCBpbnQgaW50ZWxfdGltZWxpbmVfZ2V0 X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2 YW5jZSh0bCk7CiAKIAkvKiBSZXBsYWNlIHRoZSBIV1NQIG9uIHdyYXBhcm91bmQgZm9yIEhXIHNl bWFwaG9yZXMgKi8KLQlpZiAodW5saWtlbHkoISpzZXFubyAmJiB0bC0+aHdzcF9jYWNoZWxpbmUp KQorCWlmICh1bmxpa2VseSghKnNlcW5vICYmIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKSkK IAkJcmV0dXJuIF9faW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHRsLCBycSwgc2Vxbm8pOwogCiAJ cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY2FjaGVsaW5lX3JlZihzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmVfY2FjaGVsaW5lICpjbCwKLQkJCSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKLXsKLQly ZXR1cm4gaTkxNV9hY3RpdmVfYWRkX3JlcXVlc3QoJmNsLT5hY3RpdmUsIHJxKTsKLX0KLQogaW50 IGludGVsX3RpbWVsaW5lX3JlYWRfaHdzcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tLAogCQkJ ICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0bywKIAkJCSAgICAgdTMyICpod3NwKQogewotCXN0 cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsOworCXN0cnVjdCBpbnRlbF90aW1lbGlu ZSAqdGw7CiAJaW50IGVycjsKIAotCUdFTV9CVUdfT04oIXJjdV9hY2Nlc3NfcG9pbnRlcihmcm9t LT5od3NwX2NhY2hlbGluZSkpOwotCiAJcmN1X3JlYWRfbG9jaygpOwotCWNsID0gcmN1X2RlcmVm ZXJlbmNlKGZyb20tPmh3c3BfY2FjaGVsaW5lKTsKLQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRl ZChmcm9tKSkgLyogY29uZmlybSBjYWNoZWxpbmUgaXMgdmFsaWQgKi8KLQkJZ290byB1bmxvY2s7 Ci0JaWYgKHVubGlrZWx5KCFpOTE1X2FjdGl2ZV9hY3F1aXJlX2lmX2J1c3koJmNsLT5hY3RpdmUp KSkKLQkJZ290byB1bmxvY2s7IC8qIHNlcW5vIHdyYXBwZWQgYW5kIGNvbXBsZXRlZCEgKi8KLQlp ZiAodW5saWtlbHkoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChmcm9tKSkpCi0JCWdvdG8gcmVsZWFz ZTsKKwl0bCA9IHJjdV9kZXJlZmVyZW5jZShmcm9tLT50aW1lbGluZSk7CisJaWYgKHRsICYmIChp OTE1X3JlcXVlc3RfY29tcGxldGVkKGZyb20pIHx8CisJICAgICFpOTE1X2FjdGl2ZV9hY3F1aXJl X2lmX2J1c3koJnRsLT5hY3RpdmUpKSkKKwkJdGwgPSBOVUxMOworCisJLyogZW5zdXJlIHdlIHdh aXQgb24gdGhlIHJpZ2h0IHJlcXVlc3QsIGlmIG5vdCwgd2UgY29tcGxldGVkICovCisJaWYgKHRs ICYmIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQoZnJvbSkpIHsKKwkJaTkxNV9hY3RpdmVfcmVsZWFz ZSgmdGwtPmFjdGl2ZSk7CisJCXRsID0gTlVMTDsKKwl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAK LQllcnIgPSBjYWNoZWxpbmVfcmVmKGNsLCB0byk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7CisJ aWYgKCF0bCkKKwkJcmV0dXJuIDE7CiAKLQkqaHdzcCA9IGk5MTVfZ2d0dF9vZmZzZXQoY2wtPmh3 c3AtPnZtYSkgKwotCQlwdHJfdW5tYXNrX2JpdHMoY2wtPnZhZGRyLCBDQUNIRUxJTkVfQklUUykg KiBDQUNIRUxJTkVfQllURVM7CisJLyogaHdzcF9vZmZzZXQgbWF5IHdyYXBhcm91bmQsIHNvIHVz ZSBmcm9tLT5od3NwX3NlcW5vICovCisJKmh3c3AgPSBpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3Nw X2dndHQpICsKKwkJCW9mZnNldF9pbl9wYWdlKGZyb20tPmh3c3Bfc2Vxbm8pOwogCi1vdXQ6Ci0J aTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7CisJZXJyID0gaTkxNV9hY3RpdmVfYWRk X3JlcXVlc3QoJnRsLT5hY3RpdmUsIHRvKTsKKwlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0 aXZlKTsKIAlyZXR1cm4gZXJyOwotCi1yZWxlYXNlOgotCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNs LT5hY3RpdmUpOwotdW5sb2NrOgotCXJjdV9yZWFkX3VubG9jaygpOwotCXJldHVybiAxOwogfQog CiB2b2lkIGludGVsX3RpbWVsaW5lX3VucGluKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCkBA IC01OTMsOCArMzE2LDcgQEAgdm9pZCBpbnRlbF90aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsKQogCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmdGwtPnBpbl9jb3VudCkp CiAJCXJldHVybjsKIAotCWNhY2hlbGluZV9yZWxlYXNlKHRsLT5od3NwX2NhY2hlbGluZSk7Ci0K KwlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0aXZlKTsKIAlfX2k5MTVfdm1hX3VucGluKHRs LT5od3NwX2dndHQpOwogfQogCkBAIC02MTIsNyArMzM0LDYgQEAgdm9pZCBpbnRlbF9ndF9maW5p X3RpbWVsaW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXN0cnVjdCBpbnRlbF9ndF90aW1lbGlu ZXMgKnRpbWVsaW5lcyA9ICZndC0+dGltZWxpbmVzOwogCiAJR0VNX0JVR19PTighbGlzdF9lbXB0 eSgmdGltZWxpbmVzLT5hY3RpdmVfbGlzdCkpOwotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRp bWVsaW5lcy0+aHdzcF9mcmVlX2xpc3QpKTsKIH0KIAogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RS TV9JOTE1X1NFTEZURVNUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfdGltZWxpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVs aW5lX3R5cGVzLmgKaW5kZXggMDIxODFjNTAyMGRiLi42MTBkNTkzYjViZGEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmVfdHlwZXMuaApAQCAtMTgsNyArMTgs NiBAQAogc3RydWN0IGk5MTVfdm1hOwogc3RydWN0IGk5MTVfc3luY21hcDsKIHN0cnVjdCBpbnRl bF9ndDsKLXN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwOwogCiBzdHJ1Y3QgaW50ZWxfdGltZWxp bmUgewogCXU2NCBmZW5jZV9jb250ZXh0OwpAQCAtNDUsMTIgKzQ0LDExIEBAIHN0cnVjdCBpbnRl bF90aW1lbGluZSB7CiAJYXRvbWljX3QgcGluX2NvdW50OwogCWF0b21pY190IGFjdGl2ZV9jb3Vu dDsKIAorCXZvaWQgKmh3c3BfbWFwOwogCWNvbnN0IHUzMiAqaHdzcF9zZXFubzsKIAlzdHJ1Y3Qg aTkxNV92bWEgKmh3c3BfZ2d0dDsKIAl1MzIgaHdzcF9vZmZzZXQ7CiAKLQlzdHJ1Y3QgaW50ZWxf dGltZWxpbmVfY2FjaGVsaW5lICpod3NwX2NhY2hlbGluZTsKLQogCWJvb2wgaGFzX2luaXRpYWxf YnJlYWRjcnVtYjsKIAogCS8qKgpAQCAtNjcsNiArNjUsOCBAQCBzdHJ1Y3QgaW50ZWxfdGltZWxp bmUgewogCSAqLwogCXN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSBsYXN0X3JlcXVlc3Q7CiAKKwlz dHJ1Y3QgaTkxNV9hY3RpdmUgYWN0aXZlOworCiAJLyoqIEEgY2hhaW4gb2YgY29tcGxldGVkIHRp bWVsaW5lcyByZWFkeSBmb3IgZWFybHkgcmV0aXJlbWVudC4gKi8KIAlzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmUgKnJldGlyZTsKIApAQCAtODgsMTMgKzg4LDQgQEAgc3RydWN0IGludGVsX3RpbWVsaW5l IHsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwogfTsKIAotc3RydWN0IGludGVsX3RpbWVsaW5lX2Nh Y2hlbGluZSB7Ci0Jc3RydWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKLQotCXN0cnVjdCBpbnRlbF90 aW1lbGluZV9od3NwICpod3NwOwotCXZvaWQgKnZhZGRyOwotCi0Jc3RydWN0IHJjdV9oZWFkIHJj dTsKLX07Ci0KICNlbmRpZiAvKiBfX0k5MTVfVElNRUxJTkVfVFlQRVNfSF9fICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwppbmRleCAxOWMyY2IxNjZlN2Mu Ljk4Y2QxNjFiMzkyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfdGltZWxpbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1l bGluZS5jCkBAIC02NjQsNyArNjY0LDcgQEAgc3RhdGljIGludCBsaXZlX2h3c3Bfd3JhcCh2b2lk ICphcmcpCiAJaWYgKElTX0VSUih0bCkpCiAJCXJldHVybiBQVFJfRVJSKHRsKTsKIAotCWlmICgh dGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIgfHwgIXRsLT5od3NwX2NhY2hlbGluZSkKKwlpZiAo IXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQogCQlnb3RvIG91dF9mcmVlOwogCiAJZXJyID0g aW50ZWxfdGltZWxpbmVfcGluKHRsLCBOVUxMKTsKQEAgLTc4MCw5ICs3ODAsNyBAQCBzdGF0aWMg aW50IGxpdmVfaHdzcF9yb2xsb3Zlcl9rZXJuZWwodm9pZCAqYXJnKQogCQl9CiAKIAkJR0VNX0JV R19PTihpOTE1X2FjdGl2ZV9mZW5jZV9pc3NldCgmdGwtPmxhc3RfcmVxdWVzdCkpOwotCQl0bC0+ c2Vxbm8gPSAwOwotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7Ci0JCXRpbWVsaW5lX3JvbGxiYWNr KHRsKTsKKwkJdGwtPnNlcW5vID0gLTJ1OwogCQlXUklURV9PTkNFKCoodTMyICopdGwtPmh3c3Bf c2Vxbm8sIHRsLT5zZXFubyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocnEpOyBp KyspIHsKQEAgLTg2MiwxMSArODYwLDEwIEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JvbGxvdmVy X3VzZXIodm9pZCAqYXJnKQogCQkJZ290byBvdXQ7CiAKIAkJdGwgPSBjZS0+dGltZWxpbmU7Ci0J CWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIgfHwgIXRsLT5od3NwX2NhY2hlbGluZSkK KwkJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikKIAkJCWdvdG8gb3V0OwogCi0JCXRp bWVsaW5lX3JvbGxiYWNrKHRsKTsKLQkJdGltZWxpbmVfcm9sbGJhY2sodGwpOworCQl0bC0+c2Vx bm8gPSAtNHU7CiAJCVdSSVRFX09OQ0UoKih1MzIgKil0bC0+aHdzcF9zZXFubywgdGwtPnNlcW5v KTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShycSk7IGkrKykgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuYwppbmRleCAwZTgxMzgxOWIwNDEuLjU5OGZiYTA2MWJkYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKQEAgLTg1Myw3ICs4NTMsNiBAQCBfX2k5MTVf cmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBnZnBfdCBnZnApCiAJcnEt PmZlbmNlLnNlcW5vID0gc2Vxbm87CiAKIAlSQ1VfSU5JVF9QT0lOVEVSKHJxLT50aW1lbGluZSwg dGwpOwotCVJDVV9JTklUX1BPSU5URVIocnEtPmh3c3BfY2FjaGVsaW5lLCB0bC0+aHdzcF9jYWNo ZWxpbmUpOwogCXJxLT5od3NwX3NlcW5vID0gdGwtPmh3c3Bfc2Vxbm87CiAJR0VNX0JVR19PTihp OTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSk7CiAKQEAgLTEwOTIsOSArMTA5MSw2IEBAIGVtaXRf c2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCiAJaWYgKGk5MTVfcmVxdWVz dF9oYXNfaW5pdGlhbF9icmVhZGNydW1iKHRvKSkKIAkJZ290byBhd2FpdF9mZW5jZTsKIAotCWlm ICghcmN1X2FjY2Vzc19wb2ludGVyKGZyb20tPmh3c3BfY2FjaGVsaW5lKSkKLQkJZ290byBhd2Fp dF9mZW5jZTsKLQogCS8qCiAJICogSWYgdGhpcyBvciBpdHMgZGVwZW5kZW50cyBhcmUgd2FpdGlu ZyBvbiBhbiBleHRlcm5hbCBmZW5jZQogCSAqIHRoYXQgbWF5IGZhaWwgY2F0YXN0cm9waGljYWxs eSwgdGhlbiB3ZSB3YW50IHRvIGF2b2lkIHVzaW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5oCmluZGV4IDE2YjcyMTA4MDE5NS4uMDNiYTdjODU5MjljIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuaApAQCAtMjM0LDE2ICsyMzQsNiBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsK IAkgKi8KIAljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CiAKLQkvKgotCSAqIElmIHdlIG5lZWQgdG8g YWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5vIGZvciB0aGlzIHJlcXVlc3QgaW4KLQkgKiBhbm90 aGVyIHJlcXVlc3QsIHdlIG5lZWQgdG8ga2VlcCBhIHJlYWQgcmVmZXJlbmNlIHRvIHRoaXMgYXNz b2NpYXRlZAotCSAqIGNhY2hlbGluZSwgc28gdGhhdCB3ZSBkbyBub3QgZnJlZSBhbmQgcmVjeWNs ZSBpdCBiZWZvcmUgdGhlIGZvcmVpZ24KLQkgKiBvYnNlcnZlcnMgaGF2ZSBjb21wbGV0ZWQuIEhl bmNlLCB3ZSBrZWVwIGEgcG9pbnRlciB0byB0aGUgY2FjaGVsaW5lCi0JICogaW5zaWRlIHRoZSB0 aW1lbGluZSdzIEhXU1Agdm1hLCBidXQgaXQgaXMgb25seSB2YWxpZCB3aGlsZSB0aGlzCi0JICog cmVxdWVzdCBoYXMgbm90IGNvbXBsZXRlZCBhbmQgZ3VhcmRlZCBieSB0aGUgdGltZWxpbmUgbXV0 ZXguCi0JICovCi0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSBfX3JjdSAqaHdzcF9j YWNoZWxpbmU7Ci0KIAkvKiogUG9zaXRpb24gaW4gdGhlIHJpbmcgb2YgdGhlIHN0YXJ0IG9mIHRo ZSByZXF1ZXN0ICovCiAJdTMyIGhlYWQ7CiAKLS0gCjIuMjguMAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==