From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI 01/21] drm/i915: Add a sw fence for collecting up dma fences Date: Fri, 9 Sep 2016 12:00:41 +0100 Message-ID: <20160909110101.31967-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8D5D26E77E for ; Fri, 9 Sep 2016 11:01:07 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id w12so2213047wmf.1 for ; Fri, 09 Sep 2016 04:01:07 -0700 (PDT) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id kq2sm2786494wjc.41.2016.09.09.04.01.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Sep 2016 04:01:04 -0700 (PDT) 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 VGhpcyBpcyByZWFsbHkgYSBjb3JlIGtlcm5lbCBzdHJ1Y3QgaW4gZGlzZ3Vpc2UgdW50aWwgd2Ug Y2FuIGZpbmFsbHkKcGxhY2UgaXQgaW4ga2VybmVsLy4gVGhlcmUgaXMgYW4gaW1tZWRpYXRlIG5l ZWQgZm9yIGEgZmVuY2UgY29sbGVjdGlvbgptZWNoYW5pc20gdGhhdCBpcyBtb3JlIGZsZXhpYmxl IHRoYW4gZmVuY2UtYXJyYXksIGluIHBhcnRpY3VsYXIgYmVpbmcKYWJsZSB0byBlYXNpbHkgZHJp dmUgcmVxdWVzdCBzdWJtaXNzaW9uIHZpYSBldmVudHMgKGFuZCBub3QganVzdAppbnRlcnJ1cHQg ZHJpdmVuKS4gVGhlIHNhbWUgbWVjaGFuaXNtIHdvdWxkIGJlIHVzZWZ1bCBmb3IgaGFuZGxpbmcK bm9uYmxvY2tpbmcgYW5kIGFzeW5jaHJvbm91cyBhdG9taWMgbW9kZXNldHMsIHBhcmFsbGVsIGV4 ZWN1dGlvbiBhbmQKbW9yZSwgYnV0IGZvciB0aGUgdGltZSBiZWluZyBqdXN0IGNyZWF0ZSBhIGxv Y2FsIHN3IGZlbmNlIGZvciBleGVjYnVmLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVu Y2UuYyB8IDM2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oIHwgIDY1ICsrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgNDI4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N3X2ZlbmNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N3X2ZlbmNlLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGE3ZGEyNDY0MGU4 OC4uYTk5OGMyYmNlNzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMTYsNiArMTYsNyBAQCBp OTE1LXkgOj0gaTkxNV9kcnYubyBcCiAJICBpOTE1X3BhcmFtcy5vIFwKIAkgIGk5MTVfcGNpLm8g XAogICAgICAgICAgIGk5MTVfc3VzcGVuZC5vIFwKKwkgIGk5MTVfc3dfZmVuY2UubyBcCiAJICBp OTE1X3N5c2ZzLm8gXAogCSAgaW50ZWxfY3NyLm8gXAogCSAgaW50ZWxfZGV2aWNlX2luZm8ubyBc CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi4zNTUyYTMzNjI5NmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMKQEAgLTAsMCArMSwzNjIgQEAKKy8qCisgKiAo QykgQ29weXJpZ2h0IDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24g MgorICogb2YgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNp bmNsdWRlIDxsaW51eC9mZW5jZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CisK KyNpbmNsdWRlICJpOTE1X3N3X2ZlbmNlLmgiCisKK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0soaTkx NV9zd19mZW5jZV9sb2NrKTsKKworc3RhdGljIGludCBfX2k5MTVfc3dfZmVuY2Vfbm90aWZ5KHN0 cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKKwkJCQkgIGVudW0gaTkxNV9zd19mZW5jZV9ub3Rp Znkgc3RhdGUpCit7CisJaTkxNV9zd19mZW5jZV9ub3RpZnlfdCBmbjsKKworCWZuID0gKGk5MTVf c3dfZmVuY2Vfbm90aWZ5X3QpKGZlbmNlLT5mbGFncyAmIEk5MTVfU1dfRkVOQ0VfTUFTSyk7CisJ cmV0dXJuIGZuKGZlbmNlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfc3dfZmVuY2Vf ZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2Ug PSBjb250YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCpmZW5jZSksIGtyZWYpOworCisJV0FSTl9PTihh dG9taWNfcmVhZCgmZmVuY2UtPnBlbmRpbmcpID4gMCk7CisKKwlpZiAoZmVuY2UtPmZsYWdzICYg STkxNV9TV19GRU5DRV9NQVNLKQorCQlfX2k5MTVfc3dfZmVuY2Vfbm90aWZ5KGZlbmNlLCBGRU5D RV9GUkVFKTsKKwllbHNlCisJCWtmcmVlKGZlbmNlKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9z d19mZW5jZV9wdXQoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlKQoreworCWtyZWZfcHV0KCZm ZW5jZS0+a3JlZiwgaTkxNV9zd19mZW5jZV9mcmVlKTsKK30KKworc3RhdGljIHN0cnVjdCBpOTE1 X3N3X2ZlbmNlICppOTE1X3N3X2ZlbmNlX2dldChzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2Up Cit7CisJa3JlZl9nZXQoJmZlbmNlLT5rcmVmKTsKKwlyZXR1cm4gZmVuY2U7Cit9CisKK3N0YXRp YyB2b2lkIF9faTkxNV9zd19mZW5jZV93YWtlX3VwX2FsbChzdHJ1Y3QgaTkxNV9zd19mZW5jZSAq ZmVuY2UsCisJCQkJCXN0cnVjdCBsaXN0X2hlYWQgKmNvbnRpbnVhdGlvbikKK3sKKwl3YWl0X3F1 ZXVlX2hlYWRfdCAqeCA9ICZmZW5jZS0+d2FpdDsKKwl3YWl0X3F1ZXVlX3QgKnBvcywgKm5leHQ7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNtcF93bWIoKTsKKwlhdG9taWNfc2V0KCZmZW5j ZS0+cGVuZGluZywgLTEpOyAvKiAwIC0+IC0xIFtkb25lXSAqLworCisJLyoKKwkgKiBUbyBwcmV2 ZW50IHVuYm91bmRlZCByZWN1cnNpb24gYXMgd2UgdHJhdmVyc2UgdGhlIGdyYXBoIG9mCisJICog aTkxNV9zd19mZW5jZXMsIHdlIG1vdmUgdGhlIHRhc2tfbGlzdCBmcm9tIHRoaXMsIHRoZSBuZXh0 IHJlYWR5CisJICogZmVuY2UsIHRvIHRoZSB0YWlsIG9mIHRoZSBvcmlnaW5hbCBmZW5jZSdzIHRh c2tfbGlzdAorCSAqIChhbmQgc28gYWRkZWQgdG8gdGhlIGxpc3QgdG8gYmUgd29rZW4pLgorCSAq LworCisJc3Bpbl9sb2NrX2lycXNhdmVfbmVzdGVkKCZ4LT5sb2NrLCBmbGFncywgMSArICEhY29u dGludWF0aW9uKTsKKwlpZiAoY29udGludWF0aW9uKSB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShwb3MsIG5leHQsICZ4LT50YXNrX2xpc3QsIHRhc2tfbGlzdCkgeworCQkJaWYgKHBvcy0+ ZnVuYyA9PSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24pCisJCQkJcG9zLT5mdW5jKHBvcywgVEFT S19OT1JNQUwsIDAsIGNvbnRpbnVhdGlvbik7CisJCQllbHNlCisJCQkJbGlzdF9tb3ZlX3RhaWwo JnBvcy0+dGFza19saXN0LCBjb250aW51YXRpb24pOworCQl9CisJfSBlbHNlIHsKKwkJTElTVF9I RUFEKGV4dHJhKTsKKworCQlkbyB7CisJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBu ZXh0LAorCQkJCQkJICZ4LT50YXNrX2xpc3QsIHRhc2tfbGlzdCkKKwkJCQlwb3MtPmZ1bmMocG9z LCBUQVNLX05PUk1BTCwgMCwgJmV4dHJhKTsKKworCQkJaWYgKGxpc3RfZW1wdHkoJmV4dHJhKSkK KwkJCQlicmVhazsKKworCQkJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZleHRyYSwgJngtPnRhc2tf bGlzdCk7CisJCX0gd2hpbGUgKDEpOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4LT5s b2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIF9faTkxNV9zd19mZW5jZV9jb21wbGV0ZShz dHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCisJCQkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpj b250aW51YXRpb24pCit7CisJaWYgKCFhdG9taWNfZGVjX2FuZF90ZXN0KCZmZW5jZS0+cGVuZGlu ZykpCisJCXJldHVybjsKKworCWlmIChmZW5jZS0+ZmxhZ3MgJiBJOTE1X1NXX0ZFTkNFX01BU0sg JiYKKwkgICAgX19pOTE1X3N3X2ZlbmNlX25vdGlmeShmZW5jZSwgRkVOQ0VfQ09NUExFVEUpICE9 IE5PVElGWV9ET05FKQorCQlyZXR1cm47CisKKwlfX2k5MTVfc3dfZmVuY2Vfd2FrZV91cF9hbGwo ZmVuY2UsIGNvbnRpbnVhdGlvbik7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfc3dfZmVuY2VfY29t cGxldGUoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlKQoreworCWlmIChXQVJOX09OKGk5MTVf c3dfZmVuY2VfZG9uZShmZW5jZSkpKQorCQlyZXR1cm47CisKKwlfX2k5MTVfc3dfZmVuY2VfY29t cGxldGUoZmVuY2UsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3N3X2ZlbmNlX2F3YWl0 KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSkKK3sKKwlXQVJOX09OKGF0b21pY19pbmNfcmV0 dXJuKCZmZW5jZS0+cGVuZGluZykgPD0gMSk7Cit9CisKK3ZvaWQgaTkxNV9zd19mZW5jZV9pbml0 KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwgaTkxNV9zd19mZW5jZV9ub3RpZnlfdCBmbikK K3sKKwlCVUdfT04oKHVuc2lnbmVkIGxvbmcpZm4gJiB+STkxNV9TV19GRU5DRV9NQVNLKTsKKwor CWluaXRfd2FpdHF1ZXVlX2hlYWQoJmZlbmNlLT53YWl0KTsKKwlrcmVmX2luaXQoJmZlbmNlLT5r cmVmKTsKKwlhdG9taWNfc2V0KCZmZW5jZS0+cGVuZGluZywgMSk7CisJZmVuY2UtPmZsYWdzID0g KHVuc2lnbmVkIGxvbmcpZm47Cit9CisKK3ZvaWQgaTkxNV9zd19mZW5jZV9jb21taXQoc3RydWN0 IGk5MTVfc3dfZmVuY2UgKmZlbmNlKQoreworCWk5MTVfc3dfZmVuY2VfY29tcGxldGUoZmVuY2Up OworCWk5MTVfc3dfZmVuY2VfcHV0KGZlbmNlKTsKK30KKworc3RhdGljIGludCBpOTE1X3N3X2Zl bmNlX3dha2Uod2FpdF9xdWV1ZV90ICp3cSwgdW5zaWduZWQgbW9kZSwgaW50IGZsYWdzLCB2b2lk ICprZXkpCit7CisJbGlzdF9kZWwoJndxLT50YXNrX2xpc3QpOworCV9faTkxNV9zd19mZW5jZV9j b21wbGV0ZSh3cS0+cHJpdmF0ZSwga2V5KTsKKwlpOTE1X3N3X2ZlbmNlX3B1dCh3cS0+cHJpdmF0 ZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sIF9faTkxNV9zd19mZW5jZV9jaGVja19p Zl9hZnRlcihzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCisJCQkJICAgIGNvbnN0IHN0cnVj dCBpOTE1X3N3X2ZlbmNlICogY29uc3Qgc2lnbmFsZXIpCit7CisJd2FpdF9xdWV1ZV90ICp3cTsK KworCWlmIChfX3Rlc3RfYW5kX3NldF9iaXQoSTkxNV9TV19GRU5DRV9DSEVDS0VEX0JJVCwgJmZl bmNlLT5mbGFncykpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChmZW5jZSA9PSBzaWduYWxlcikK KwkJcmV0dXJuIHRydWU7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHdxLCAmZmVuY2UtPndhaXQu dGFza19saXN0LCB0YXNrX2xpc3QpIHsKKwkJaWYgKHdxLT5mdW5jICE9IGk5MTVfc3dfZmVuY2Vf d2FrZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChfX2k5MTVfc3dfZmVuY2VfY2hlY2tfaWZfYWZ0 ZXIod3EtPnByaXZhdGUsIHNpZ25hbGVyKSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVy biBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgX19pOTE1X3N3X2ZlbmNlX2NsZWFyX2NoZWNrZWRf Yml0KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSkKK3sKKwl3YWl0X3F1ZXVlX3QgKndxOwor CisJaWYgKCFfX3Rlc3RfYW5kX2NsZWFyX2JpdChJOTE1X1NXX0ZFTkNFX0NIRUNLRURfQklULCAm ZmVuY2UtPmZsYWdzKSkKKwkJcmV0dXJuOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeSh3cSwgJmZl bmNlLT53YWl0LnRhc2tfbGlzdCwgdGFza19saXN0KSB7CisJCWlmICh3cS0+ZnVuYyAhPSBpOTE1 X3N3X2ZlbmNlX3dha2UpCisJCQljb250aW51ZTsKKworCQlfX2k5MTVfc3dfZmVuY2VfY2xlYXJf Y2hlY2tlZF9iaXQod3EtPnByaXZhdGUpOworCX0KK30KKworc3RhdGljIGJvb2wgaTkxNV9zd19m ZW5jZV9jaGVja19pZl9hZnRlcihzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCisJCQkJICBj b25zdCBzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqIGNvbnN0IHNpZ25hbGVyKQoreworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJYm9vbCBlcnI7CisKKwlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0k5MTVf U1dfRkVOQ0VfQ0hFQ0tfREFHKSkKKwkJcmV0dXJuIGZhbHNlOworCisJc3Bpbl9sb2NrX2lycXNh dmUoJmk5MTVfc3dfZmVuY2VfbG9jaywgZmxhZ3MpOworCWVyciA9IF9faTkxNV9zd19mZW5jZV9j aGVja19pZl9hZnRlcihmZW5jZSwgc2lnbmFsZXIpOworCV9faTkxNV9zd19mZW5jZV9jbGVhcl9j aGVja2VkX2JpdChmZW5jZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaTkxNV9zd19mZW5j ZV9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaTkxNV9zd19mZW5jZV9h d2FpdF9zd19mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCisJCQkJIHN0cnVjdCBp OTE1X3N3X2ZlbmNlICpzaWduYWxlciwKKwkJCQkgd2FpdF9xdWV1ZV90ICp3cSkKK3sKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCWludCBwZW5kaW5nOworCisJaWYgKGk5MTVfc3dfZmVuY2VfZG9u ZShzaWduYWxlcikpCisJCXJldHVybiAwOworCisJLyogVGhlIGRlcGVuZGVuY3kgZ3JhcGggbXVz dCBiZSBhY3ljbGljLiAqLworCWlmICh1bmxpa2VseShpOTE1X3N3X2ZlbmNlX2NoZWNrX2lmX2Fm dGVyKGZlbmNlLCBzaWduYWxlcikpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCUlOSVRfTElTVF9I RUFEKCZ3cS0+dGFza19saXN0KTsKKwl3cS0+ZmxhZ3MgPSAwOworCXdxLT5mdW5jID0gaTkxNV9z d19mZW5jZV93YWtlOworCXdxLT5wcml2YXRlID0gaTkxNV9zd19mZW5jZV9nZXQoZmVuY2UpOwor CisJaTkxNV9zd19mZW5jZV9hd2FpdChmZW5jZSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2ln bmFsZXItPndhaXQubG9jaywgZmxhZ3MpOworCWlmIChsaWtlbHkoIWk5MTVfc3dfZmVuY2VfZG9u ZShzaWduYWxlcikpKSB7CisJCV9fYWRkX3dhaXRfcXVldWVfdGFpbCgmc2lnbmFsZXItPndhaXQs IHdxKTsKKwkJcGVuZGluZyA9IDE7CisJfSBlbHNlIHsKKwkJaTkxNV9zd19mZW5jZV93YWtlKHdx LCAwLCAwLCBOVUxMKTsKKwkJcGVuZGluZyA9IDA7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnNpZ25hbGVyLT53YWl0LmxvY2ssIGZsYWdzKTsKKworCXJldHVybiBwZW5kaW5nOworfQor CitzdHJ1Y3QgZG1hX2ZlbmNlX2NiIHsKKwlzdHJ1Y3QgZmVuY2VfY2IgYmFzZTsKKwlzdHJ1Y3Qg aTkxNV9zd19mZW5jZSAqZmVuY2U7CisJc3RydWN0IGZlbmNlICpkbWE7CisJc3RydWN0IHRpbWVy X2xpc3QgdGltZXI7Cit9OworCitzdGF0aWMgdm9pZCB0aW1lcl9pOTE1X3N3X2ZlbmNlX3dha2Uo dW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiID0gKHN0cnVj dCBkbWFfZmVuY2VfY2IgKilkYXRhOworCisJcHJpbnRrKEtFUk5fV0FSTklORyAiYXN5bmNocm9u b3VzIHdhaXQgb24gZmVuY2UgJXM6JXM6JWQgdGltZWQgb3V0XG4iLAorCSAgICAgICBjYi0+ZG1h LT5vcHMtPmdldF9kcml2ZXJfbmFtZShjYi0+ZG1hKSwKKwkgICAgICAgY2ItPmRtYS0+b3BzLT5n ZXRfdGltZWxpbmVfbmFtZShjYi0+ZG1hKSwKKwkgICAgICAgY2ItPmRtYS0+c2Vxbm8pOworCWZl bmNlX3B1dChjYi0+ZG1hKTsKKwljYi0+ZG1hID0gTlVMTDsKKworCWk5MTVfc3dfZmVuY2VfY29t bWl0KGNiLT5mZW5jZSk7CisJY2ItPnRpbWVyLmZ1bmN0aW9uID0gTlVMTDsKK30KKworc3RhdGlj IHZvaWQgZG1hX2k5MTVfc3dfZmVuY2Vfd2FrZShzdHJ1Y3QgZmVuY2UgKmRtYSwgc3RydWN0IGZl bmNlX2NiICpkYXRhKQoreworCXN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiID0gY29udGFpbmVyX29m KGRhdGEsIHR5cGVvZigqY2IpLCBiYXNlKTsKKworCWRlbF90aW1lcl9zeW5jKCZjYi0+dGltZXIp OworCWlmIChjYi0+dGltZXIuZnVuY3Rpb24pCisJCWk5MTVfc3dfZmVuY2VfY29tbWl0KGNiLT5m ZW5jZSk7CisJZmVuY2VfcHV0KGNiLT5kbWEpOworCisJa2ZyZWUoY2IpOworfQorCitpbnQgaTkx NV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2Uoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAor CQkJCSAgc3RydWN0IGZlbmNlICpkbWEsCisJCQkJICB1bnNpZ25lZCBsb25nIHRpbWVvdXQsCisJ CQkJICBnZnBfdCBnZnApCit7CisJc3RydWN0IGRtYV9mZW5jZV9jYiAqY2I7CisJaW50IHJldDsK KworCWlmIChmZW5jZV9pc19zaWduYWxlZChkbWEpKQorCQlyZXR1cm4gMDsKKworCWNiID0ga21h bGxvYyhzaXplb2YoKmNiKSwgZ2ZwKTsKKwlpZiAoIWNiKSB7CisJCWlmICghZ2ZwZmxhZ3NfYWxs b3dfYmxvY2tpbmcoZ2ZwKSkKKwkJCXJldHVybiAtRU5PTUVNOworCisJCXJldHVybiBmZW5jZV93 YWl0KGRtYSwgZmFsc2UpOworCX0KKworCWNiLT5mZW5jZSA9IGk5MTVfc3dfZmVuY2VfZ2V0KGZl bmNlKTsKKwlpOTE1X3N3X2ZlbmNlX2F3YWl0KGZlbmNlKTsKKworCV9fc2V0dXBfdGltZXIoJmNi LT50aW1lciwKKwkJICAgICAgdGltZXJfaTkxNV9zd19mZW5jZV93YWtlLCAodW5zaWduZWQgbG9u ZyljYiwKKwkJICAgICAgVElNRVJfSVJRU0FGRSk7CisJaWYgKHRpbWVvdXQpIHsKKwkJY2ItPmRt YSA9IGZlbmNlX2dldChkbWEpOworCQltb2RfdGltZXIoJmNiLT50aW1lciwgcm91bmRfamlmZmll c191cChqaWZmaWVzICsgdGltZW91dCkpOworCX0KKworCXJldCA9IGZlbmNlX2FkZF9jYWxsYmFj ayhkbWEsICZjYi0+YmFzZSwgZG1hX2k5MTVfc3dfZmVuY2Vfd2FrZSk7CisJaWYgKHJldCA9PSAw KSB7CisJCXJldCA9IDE7CisJfSBlbHNlIHsKKwkJZG1hX2k5MTVfc3dfZmVuY2Vfd2FrZShkbWEs ICZjYi0+YmFzZSk7CisJCWlmIChyZXQgPT0gLUVOT0VOVCkgLyogZmVuY2UgYWxyZWFkeSBzaWdu YWxlZCAqLworCQkJcmV0ID0gMDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaTkxNV9z d19mZW5jZV9hd2FpdF9yZXNlcnZhdGlvbihzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCisJ CQkJICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YsCisJCQkJICAgIGNvbnN0IHN0 cnVjdCBmZW5jZV9vcHMgKmV4Y2x1ZGUsCisJCQkJICAgIGJvb2wgd3JpdGUsCisJCQkJICAgIHVu c2lnbmVkIGxvbmcgdGltZW91dCwKKwkJCQkgICAgZ2ZwX3QgZ2ZwKQoreworCXN0cnVjdCBmZW5j ZSAqZXhjbDsKKwlpbnQgcmV0ID0gMCwgcGVuZGluZzsKKworCWlmICh3cml0ZSkgeworCQlzdHJ1 Y3QgZmVuY2UgKipzaGFyZWQ7CisJCXVuc2lnbmVkIGludCBjb3VudCwgaTsKKworCQlyZXQgPSBy ZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3UocmVzdiwKKwkJCQkJCQkmZXhjbCwgJmNv dW50LCAmc2hhcmVkKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJZm9yIChpID0g MDsgaSA8IGNvdW50OyBpKyspIHsKKwkJCWlmIChzaGFyZWRbaV0tPm9wcyA9PSBleGNsdWRlKQor CQkJCWNvbnRpbnVlOworCisJCQlwZW5kaW5nID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVu Y2UoZmVuY2UsCisJCQkJCQkJCXNoYXJlZFtpXSwKKwkJCQkJCQkJdGltZW91dCwKKwkJCQkJCQkJ Z2ZwKTsKKwkJCWlmIChwZW5kaW5nIDwgMCkgeworCQkJCXJldCA9IHBlbmRpbmc7CisJCQkJYnJl YWs7CisJCQl9CisKKwkJCXJldCB8PSBwZW5kaW5nOworCQl9CisKKwkJZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspCisJCQlmZW5jZV9wdXQoc2hhcmVkW2ldKTsKKwkJa2ZyZWUoc2hhcmVkKTsK Kwl9IGVsc2UgeworCQlleGNsID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9leGNsX3JjdShyZXN2 KTsKKwl9CisKKwlpZiAocmV0ID49IDAgJiYgZXhjbCAmJiBleGNsLT5vcHMgIT0gZXhjbHVkZSkg eworCQlwZW5kaW5nID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoZmVuY2UsCisJCQkJ CQkJZXhjbCwKKwkJCQkJCQl0aW1lb3V0LAorCQkJCQkJCWdmcCk7CisJCWlmIChwZW5kaW5nIDwg MCkKKwkJCXJldCA9IHBlbmRpbmc7CisJCWVsc2UKKwkJCXJldCB8PSBwZW5kaW5nOworCX0KKwor CWZlbmNlX3B1dChleGNsKTsKKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N3X2ZlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNzMx NDE2MDJjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3 X2ZlbmNlLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIGk5MTVfc3dfZmVuY2UuaCAtIGxpYnJh cnkgcm91dGluZXMgZm9yIE46TSBzeW5jaHJvbmlzYXRpb24gcG9pbnRzCisgKgorICogQ29weXJp Z2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogVGhpcyBmaWxlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBHUEx2Mi4KKyAqCisgKi8KKworI2lmbmRlZiBfSTkxNV9TV19GRU5DRV9I XworI2RlZmluZSBfSTkxNV9TV19GRU5DRV9IXworCisjaW5jbHVkZSA8bGludXgvZ2ZwLmg+Cisj aW5jbHVkZSA8bGludXgva3JlZi5oPgorI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+IC8qIGZv ciBOT1RJRllfRE9ORSAqLworI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KKworc3RydWN0IGNvbXBs ZXRpb247CitzdHJ1Y3QgZmVuY2U7CitzdHJ1Y3QgZmVuY2Vfb3BzOworc3RydWN0IHJlc2VydmF0 aW9uX29iamVjdDsKKworc3RydWN0IGk5MTVfc3dfZmVuY2UgeworCXdhaXRfcXVldWVfaGVhZF90 IHdhaXQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3Qga3JlZiBrcmVmOworCWF0b21p Y190IHBlbmRpbmc7Cit9OworCisjZGVmaW5lIEk5MTVfU1dfRkVOQ0VfQ0hFQ0tFRF9CSVQJMCAv KiB1c2VkIGludGVybmFsbHkgZm9yIERBRyBjaGVja2luZyAqLworI2RlZmluZSBJOTE1X1NXX0ZF TkNFX1BSSVZBVEVfQklUCTEgLyogYXZhaWxhYmxlIGZvciB1c2UgYnkgb3duZXIgKi8KKyNkZWZp bmUgSTkxNV9TV19GRU5DRV9NQVNLCQkofjMpCisKK2VudW0gaTkxNV9zd19mZW5jZV9ub3RpZnkg eworCUZFTkNFX0NPTVBMRVRFLAorCUZFTkNFX0ZSRUUKK307CisKK3R5cGVkZWYgaW50ICgqaTkx NV9zd19mZW5jZV9ub3RpZnlfdCkoc3RydWN0IGk5MTVfc3dfZmVuY2UgKiwKKwkJCQkgICAgICBl bnVtIGk5MTVfc3dfZmVuY2Vfbm90aWZ5IHN0YXRlKTsKKyNkZWZpbmUgX19pOTE1X3N3X2ZlbmNl X2NhbGwgX19hbGlnbmVkKDQpCisKK3ZvaWQgaTkxNV9zd19mZW5jZV9pbml0KHN0cnVjdCBpOTE1 X3N3X2ZlbmNlICpmZW5jZSwgaTkxNV9zd19mZW5jZV9ub3RpZnlfdCBmbik7Cit2b2lkIGk5MTVf c3dfZmVuY2VfY29tbWl0KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSk7CisKK2ludCBpOTE1 X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKKwkJ CQkgc3RydWN0IGk5MTVfc3dfZmVuY2UgKmFmdGVyLAorCQkJCSB3YWl0X3F1ZXVlX3QgKndxKTsK K2ludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAq ZmVuY2UsCisJCQkJICBzdHJ1Y3QgZmVuY2UgKmRtYSwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgdGlt ZW91dCwKKwkJCQkgIGdmcF90IGdmcCk7CitpbnQgaTkxNV9zd19mZW5jZV9hd2FpdF9yZXNlcnZh dGlvbihzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCisJCQkJICAgIHN0cnVjdCByZXNlcnZh dGlvbl9vYmplY3QgKnJlc3YsCisJCQkJICAgIGNvbnN0IHN0cnVjdCBmZW5jZV9vcHMgKmV4Y2x1 ZGUsCisJCQkJICAgIGJvb2wgd3JpdGUsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCwK KwkJCQkgICAgZ2ZwX3QgZ2ZwKTsKKworc3RhdGljIGlubGluZSBib29sIGk5MTVfc3dfZmVuY2Vf ZG9uZShjb25zdCBzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UpCit7CisJcmV0dXJuIGF0b21p Y19yZWFkKCZmZW5jZS0+cGVuZGluZykgPCAwOworfQorCisjZW5kaWYgLyogX0k5MTVfU1dfRkVO Q0VfSF8gKi8KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK