From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 09/16] drm/i915/execlists: Force preemption Date: Mon, 21 Oct 2019 09:02:19 +0100 Message-ID: <20191021080226.537-9-chris@chris-wilson.co.uk> References: <20191021080226.537-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id B85DD89B20 for ; Mon, 21 Oct 2019 08:02:47 +0000 (UTC) In-Reply-To: <20191021080226.537-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 SWYgdGhlIHByZWVtcHRlZCBjb250ZXh0IHRha2VzIHRvbyBsb25nIHRvIHJlbGlucXVpc2ggY29u dHJvbCwgZS5nLiBpdAppcyBzdHVjayBpbnNpZGUgYSBzaGFkZXIgd2l0aCBhcmJpdHJhdGlvbiBk aXNhYmxlZCwgZXZpY3QgdGhhdCBjb250ZXh0CndpdGggYW4gZW5naW5lIHJlc2V0LiBUaGlzIGVu c3VyZXMgdGhhdCBwcmVlbXB0aW9ucyBhcmUgcmVhc29uYWJseQpyZXNwb25zaXZlLCBwcm92aWRp bmcgYSB0aWdodGVyIFFvUyBmb3IgdGhlIG1vcmUgaW1wb3J0YW50IGNvbnRleHQgYXQKdGhlIGNv c3Qgb2YgZmxhZ2dpbmcgdW5yZXNwb25zaXZlIGNvbnRleHRzIG1vcmUgZnJlcXVlbnRseSAoaS5l LiBpbnN0ZWFkCm9mIHVzaW5nIGFuIH4xMHMgaGFuZ2NoZWNrLCB3ZSBub3cgZXZpY3QgYXQgfjEw MG1zKS4gIFRoZSBjaGFsbGVuZ2Ugb2YKbGllcyBpbiBwaWNraW5nIGEgdGltZW91dCB0aGF0IGNh biBiZSByZWFzb25hYmx5IHNlcnZpY2VkIGJ5IEhXIGZvcgp0eXBpY2FsIHdvcmtsb2FkcywgYmFs YW5jaW5nIHRoZSBleGlzdGluZyBjbGllbnRzIGFnYWluc3QgdGhlIG5lZWRzIGZvcgpyZXNwb25z aXZlbmVzcy4KCk5vdGUgdGhhdCBjb3VwbGVkIHdpdGggdGltZXNsaWNpbmcsIHRoaXMgd2lsbCBs ZWFkIHRvIHJhcGlkIEdQVSAiaGFuZyIKZGV0ZWN0aW9uIHdpdGggbXVsdGlwbGUgYWN0aXZlIGNv bnRleHRzIHZ5aW5nIGZvciBHUFUgdGltZS4KClRoZSBwcmVlbXB0IHRpbWVvdXQgY2FuIGJlIGFk anVzdGVkIHBlci1lbmdpbmUgdXNpbmcsCgoJL3N5cy9jbGFzcy9kcm0vY2FyZD8vZW5naW5lLyov cHJlZW1wdF90aW1lb3V0X21zCgp2MjogQ291cGxlIGluIHN5c2ZzIGNvbnRyb2wgb2YgcHJlZW1w dGlvbiB0aW1lb3V0CgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwu Y29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3 ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcucHJvZmlsZSAgICAgICAgIHwgIDE1ICsrKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggICAgICAgfCAgIDkgKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgIHwgICA1ICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuYyB8ICA0NyArKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIHwgICA2ICsrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICB8ICA5MiArKysrKysr KysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgICAgICAg fCAxMDAgKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJh bXMuaCAgICAgICAgICAgfCAgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjY2IGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tj b25maWcucHJvZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcucHJvZmlsZQppbmRl eCBiOGRmODBiYzBiNDcuLjAwYmQzN2FhODhkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZy5wcm9maWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcu cHJvZmlsZQpAQCAtNDMsMyArNDMsMTggQEAgY29uZmlnIERSTV9JOTE1X1RJTUVTTElDRV9EVVJB VElPTgogCSAgL3N5cy9jbGFzcy9kcm0vY2FyZD8vZW5naW5lLyovdGltZXNsaWNlX2R1cmF0aW9u X21zCiAKIAkgIE1heSBiZSAwIHRvIGRpc2FibGUgdGltZXNsaWNpbmcuCisKK2NvbmZpZyBEUk1f STkxNV9QUkVFTVBUX1RJTUVPVVQKKwlpbnQgIlByZWVtcHQgdGltZW91dCAobXMsIGppZmZ5IGdy YW51bGFyaXR5KSIKKwlkZWZhdWx0IDEwMCAjIG1pbGxpc2Vjb25kcworCWhlbHAKKwkgIEhvdyBs b25nIHRvIHdhaXQgKGluIG1pbGxpc2Vjb25kcykgZm9yIGEgcHJlZW1wdGlvbiBldmVudCB0byBv Y2N1cgorCSAgd2hlbiBzdWJtaXR0aW5nIGEgbmV3IGNvbnRleHQgdmlhIGV4ZWNsaXN0cy4gSWYg dGhlIGN1cnJlbnQgY29udGV4dAorCSAgZG9lcyBub3QgaGl0IGFuIGFyYml0cmF0aW9uIHBvaW50 IGFuZCB5aWVsZCB0byBIVyBiZWZvcmUgdGhlIHRpbWVyCisJICBleHBpcmVzLCB0aGUgSFcgd2ls bCBiZSByZXNldCB0byBhbGxvdyB0aGUgbW9yZSBpbXBvcnRhbnQgY29udGV4dAorCSAgdG8gZXhl Y3V0ZS4KKworCSAgVGhpcyBpcyBhZGp1c3RhYmxlIHZpYQorCSAgL3N5cy9jbGFzcy9kcm0vY2Fy ZD8vZW5naW5lLyovcHJlZW1wdF90aW1lb3V0X21zCisKKwkgIE1heSBiZSAwIHRvIGRpc2FibGUg dGhlIHRpbWVvdXQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCmluZGV4IDM5 MzQ4MTM3NGY5Ni4uZWY0YjhmZGMwYTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmUuaApAQCAtNTM0LDQgKzUzNCwxMyBAQCBpbnRlbF9lbmdpbmVfaGFzX3RpbWVzbGljZXMo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiBpbnRlbF9lbmdp bmVfaGFzX3NlbWFwaG9yZXMoZW5naW5lKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCitpbnRl bF9lbmdpbmVfaGFzX3ByZWVtcHRfcmVzZXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQoreworCWlmICghQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVCkKKwkJcmV0 dXJuIDA7CisKKwlyZXR1cm4gaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGVuZ2luZSk7Cit9 CisKICNlbmRpZiAvKiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBiOTNkYmVkNjdmZTcuLjdlOGQzY2MyNDU5YyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTMwOCw2ICsz MDgsOCBAQCBzdGF0aWMgaW50IGludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgaW50ZWxfZ3QgKmd0 LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCkKIAllbmdpbmUtPmluc3RhbmNlID0gaW5mby0+aW5z dGFuY2U7CiAJX19zcHJpbnRfZW5naW5lX25hbWUoZW5naW5lKTsKIAorCWVuZ2luZS0+cHJvcHMu cHJlZW1wdF90aW1lb3V0X21zID0KKwkJQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVDsK IAllbmdpbmUtPnByb3BzLnRpbWVzbGljZV9kdXJhdGlvbl9tcyA9CiAJCUNPTkZJR19EUk1fSTkx NV9USU1FU0xJQ0VfRFVSQVRJT047CiAKQEAgLTEzMjEsMTAgKzEzMjMsMTEgQEAgc3RhdGljIHZv aWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJCXVuc2lnbmVkIGludCBpZHg7CiAJCXU4IHJlYWQsIHdyaXRlOwogCi0JCWRybV9w cmludGYobSwgIlx0RXhlY2xpc3QgdGFza2xldCBxdWV1ZWQ/ICVzICglcyksIHRpbWVzbGljZT8g JXNcbiIsCisJCWRybV9wcmludGYobSwgIlx0RXhlY2xpc3QgdGFza2xldCBxdWV1ZWQ/ICVzICgl cyksIHByZWVtcHQ/ICVzLCB0aW1lc2xpY2U/ICVzXG4iLAogCQkJICAgeWVzbm8odGVzdF9iaXQo VEFTS0xFVF9TVEFURV9TQ0hFRCwKIAkJCQkJICAmZW5naW5lLT5leGVjbGlzdHMudGFza2xldC5z dGF0ZSkpLAogCQkJICAgZW5hYmxlZGRpc2FibGVkKCFhdG9taWNfcmVhZCgmZW5naW5lLT5leGVj bGlzdHMudGFza2xldC5jb3VudCkpLAorCQkJICAgcmVwcl90aW1lcigmZW5naW5lLT5leGVjbGlz dHMucHJlZW1wdCksCiAJCQkgICByZXByX3RpbWVyKCZlbmdpbmUtPmV4ZWNsaXN0cy50aW1lcikp OwogCiAJCXJlYWQgPSBleGVjbGlzdHMtPmNzYl9oZWFkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuYwppbmRleCA1NWFlODE3NjlhOGUuLjI3YzE0NGI3NzAy MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2Zz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMKQEAg LTE4NCw2ICsxODQsNDkgQEAgdGltZXNsaWNlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBz dHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRl IHRpbWVzbGljZV9kdXJhdGlvbl9hdHRyID0KIF9fQVRUUih0aW1lc2xpY2VfZHVyYXRpb25fbXMs IDA2NDQsIHRpbWVzbGljZV9zaG93LCB0aW1lc2xpY2Vfc3RvcmUpOwogCitzdGF0aWMgc3NpemVf dAorcHJlZW1wdF90aW1lb3V0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2Jq X2F0dHJpYnV0ZSAqYXR0ciwKKwkJICAgICBjaGFyICpidWYpCit7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0ga29ial90b19lbmdpbmUoa29iaik7CisKKwlyZXR1cm4gc3ByaW50 ZihidWYsICIlbHVcbiIsIGVuZ2luZS0+cHJvcHMucHJlZW1wdF90aW1lb3V0X21zKTsKK30KKwor c3RhdGljIHNzaXplX3QKK3ByZWVtcHRfdGltZW91dF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29i aiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLAorCQkgICAgICBjb25zdCBjaGFyICpidWYs IHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBrb2Jq X3RvX2VuZ2luZShrb2JqKTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgdGltZW91dDsKKwlpbnQgZXJy OworCisJZXJyID0ga3N0cnRvdWxsKGJ1ZiwgMCwgJnRpbWVvdXQpOworCWlmIChlcnIpCisJCXJl dHVybiBlcnI7CisKKwlpZiAodGltZW91dCA+IGppZmZpZXNfdG9fbXNlY3MoTUFYX1NDSEVEVUxF X1RJTUVPVVQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCVdSSVRFX09OQ0UoZW5naW5lLT5wcm9w cy5wcmVlbXB0X3RpbWVvdXRfbXMsIHRpbWVvdXQpOworCisJaWYgKFJFQURfT05DRShlbmdpbmUt PmV4ZWNsaXN0cy5wZW5kaW5nWzBdKSkgeworCQlzdHJ1Y3QgdGltZXJfbGlzdCAqdCA9ICZlbmdp bmUtPmV4ZWNsaXN0cy5wcmVlbXB0OworCisJCWlmICghdGltZW91dCkgeworCQkJY2FuY2VsX3Rp bWVyKHQpOworCQl9IGVsc2UgeworCQkJdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXNfdGltZW91 dCh0aW1lb3V0KTsKKwkJCW1vZF90aW1lcih0LCBqaWZmaWVzICsgdGltZW91dCk7CisJCX0KKwl9 CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgcHJl ZW1wdF90aW1lb3V0X2F0dHIgPQorX19BVFRSKHByZWVtcHRfdGltZW91dF9tcywgMDY0NCwgcHJl ZW1wdF90aW1lb3V0X3Nob3csIHByZWVtcHRfdGltZW91dF9zdG9yZSk7CisKIHN0YXRpYyB2b2lk IGtvYmpfZW5naW5lX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopCiB7CiAJa2ZyZWUoa29i aik7CkBAIC0yNDksNiArMjkyLDEwIEBAIHZvaWQgaW50ZWxfZW5naW5lc19hZGRfc3lzZnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCSAgICBzeXNmc19jcmVhdGVfZmlsZShrb2Jq LCAmdGltZXNsaWNlX2R1cmF0aW9uX2F0dHIuYXR0cikpCiAJCQlnb3RvIGVycl9lbmdpbmU7CiAK KwkJaWYgKGludGVsX2VuZ2luZV9oYXNfcHJlZW1wdF9yZXNldChlbmdpbmUpICYmCisJCSAgICBz eXNmc19jcmVhdGVfZmlsZShrb2JqLCAmcHJlZW1wdF90aW1lb3V0X2F0dHIuYXR0cikpCisJCQln b3RvIGVycl9lbmdpbmU7CisKIAkJaWYgKDApIHsKIGVycl9vYmplY3Q6CiAJCQlrb2JqZWN0X3B1 dChrb2JqKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgK aW5kZXggODlhOTYxNmU4NTM5Li4wMTkyNmE4MjZkNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCkBAIC0xNzQsNiArMTc0LDExIEBAIHN0cnVjdCBp bnRlbF9lbmdpbmVfZXhlY2xpc3RzIHsKIAkgKi8KIAlzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsK IAorCS8qKgorCSAqIEBwcmVlbXB0OiByZXNldCB0aGUgY3VycmVudCBjb250ZXh0IGlmIGl0IGZh aWxzIHRvIGdpdmUgd2F5CisJICovCisJc3RydWN0IHRpbWVyX2xpc3QgcHJlZW1wdDsKKwogCS8q KgogCSAqIEBkZWZhdWx0X3ByaW9saXN0OiBwcmlvcml0eSBsaXN0IGZvciBJOTE1X1BSSU9SSVRZ X05PUk1BTAogCSAqLwpAQCAtNTQ0LDYgKzU0OSw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg ewogCX0gc3RhdHM7CiAKIAlzdHJ1Y3QgeworCQl1bnNpZ25lZCBsb25nIHByZWVtcHRfdGltZW91 dF9tczsKIAkJdW5zaWduZWQgbG9uZyB0aW1lc2xpY2VfZHVyYXRpb25fbXM7CiAJfSBwcm9wczsK IH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCmluZGV4IDMwMTQyZWJjZThmZS4uZWMw ZjdlZjg4ZTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwpAQCAtMTQwOSw2ICsx NDA5LDI1IEBAIHN0YXRpYyB2b2lkIHJlY29yZF9wcmVlbXB0aW9uKHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCiAJKHZvaWQpSTkxNV9TRUxGVEVTVF9PTkxZKGV4ZWNs aXN0cy0+cHJlZW1wdF9oYW5nLmNvdW50KyspOwogfQogCitzdGF0aWMgdW5zaWduZWQgbG9uZyBh Y3RpdmVfcHJlZW1wdF90aW1lb3V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sK KwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKworCXJxID0gbGFzdF9hY3RpdmUoJmVuZ2luZS0+ ZXhlY2xpc3RzKTsKKwlpZiAoIXJxKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBSRUFEX09OQ0Uo ZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVvdXRfbXMpOworfQorCitzdGF0aWMgdm9pZCBzZXRf cHJlZW1wdF90aW1lb3V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpZiAo IWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdF9yZXNldChlbmdpbmUpKQorCQlyZXR1cm47CisKKwlf X3NldF90aW1lcigmZW5naW5lLT5leGVjbGlzdHMucHJlZW1wdCwgYWN0aXZlX3ByZWVtcHRfdGlt ZW91dChlbmdpbmUpKTsKK30KKwogc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xp c3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwpAQCAtMTc4NSw2ICsx ODA0LDggQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCiAJCW1lbXNldChwb3J0ICsgMSwgMCwgKGxhc3RfcG9ydCAtIHBvcnQp ICogc2l6ZW9mKCpwb3J0KSk7CiAJCWV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoZW5naW5lKTsKKwor CQlzZXRfcHJlZW1wdF90aW1lb3V0KGVuZ2luZSk7CiAJfSBlbHNlIHsKIHNraXBfc3VibWl0Ogog CQlyaW5nX3NldF9wYXVzZWQoZW5naW5lLCAwKTsKQEAgLTIwMjIsNiArMjA0Myw0MyBAQCBzdGF0 aWMgdm9pZCBfX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqY29uc3QgZW5naW5lKQogCX0KIH0KIAorc3RhdGljIG5vaW5saW5lIHZvaWQgcHJlZW1w dF9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJY29uc3QgdW5zaWdu ZWQgaW50IGJpdCA9IEk5MTVfUkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZDsKKwl1bnNpZ25lZCBs b25nICpsb2NrID0gJmVuZ2luZS0+Z3QtPnJlc2V0LmZsYWdzOworCisJaWYgKGk5MTVfbW9kcGFy YW1zLnJlc2V0IDwgMykKKwkJcmV0dXJuOworCisJaWYgKHRlc3RfYW5kX3NldF9iaXQoYml0LCBs b2NrKSkKKwkJcmV0dXJuOworCisJLyogTWFyayB0aGlzIHRhc2tsZXQgYXMgZGlzYWJsZWQgdG8g YXZvaWQgd2FpdGluZyBmb3IgaXQgdG8gY29tcGxldGUgKi8KKwl0YXNrbGV0X2Rpc2FibGVfbm9z eW5jKCZlbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0KTsKKworCUdFTV9UUkFDRSgiJXM6IHByZWVt cHQgdGltZW91dCAlbHUrJXVtc1xuIiwKKwkJICBlbmdpbmUtPm5hbWUsCisJCSAgZW5naW5lLT5w cm9wcy5wcmVlbXB0X3RpbWVvdXRfbXMsCisJCSAgamlmZmllc190b19tc2VjcyhqaWZmaWVzIC0g ZW5naW5lLT5leGVjbGlzdHMucHJlZW1wdC5leHBpcmVzKSk7CisJaW50ZWxfZW5naW5lX3Jlc2V0 KGVuZ2luZSwgInByZWVtcHRpb24gdGltZSBvdXQiKTsKKworCXRhc2tsZXRfZW5hYmxlKCZlbmdp bmUtPmV4ZWNsaXN0cy50YXNrbGV0KTsKKwljbGVhcl9hbmRfd2FrZV91cF9iaXQoYml0LCBsb2Nr KTsKK30KKworc3RhdGljIGJvb2wgcHJlZW1wdF90aW1lb3V0KGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmNvbnN0IGVuZ2luZSkKK3sKKwljb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqdCA9 ICZlbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0OworCisJaWYgKCFDT05GSUdfRFJNX0k5MTVfUFJF RU1QVF9USU1FT1VUKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoIXRpbWVyX2V4cGlyZWQodCkp CisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBSRUFEX09OQ0UoZW5naW5lLT5leGVjbGlzdHMu cGVuZGluZ1swXSk7Cit9CisKIC8qCiAgKiBDaGVjayB0aGUgdW5yZWFkIENvbnRleHQgU3RhdHVz IEJ1ZmZlcnMgYW5kIG1hbmFnZSB0aGUgc3VibWlzc2lvbiBvZiBuZXcKICAqIGNvbnRleHRzIHRv IHRoZSBFTFNQIGFjY29yZGluZ2x5LgpAQCAtMjAyOSwyMyArMjA4NywzOSBAQCBzdGF0aWMgdm9p ZCBfX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq Y29uc3QgZW5naW5lKQogc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGFza2xldCh1 bnNpZ25lZCBsb25nIGRhdGEpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVu Z2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKLQl1bnNpZ25lZCBsb25nIGZs YWdzOworCWJvb2wgdGltZW91dCA9IHByZWVtcHRfdGltZW91dChlbmdpbmUpOwogCiAJcHJvY2Vz c19jc2IoZW5naW5lKTsKLQlpZiAoIVJFQURfT05DRShlbmdpbmUtPmV4ZWNsaXN0cy5wZW5kaW5n WzBdKSkgeworCWlmICghUkVBRF9PTkNFKGVuZ2luZS0+ZXhlY2xpc3RzLnBlbmRpbmdbMF0pIHx8 IHRpbWVvdXQpIHsKKwkJdW5zaWduZWQgbG9uZyBmbGFnczsKKwogCQlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogCQlfX2V4ZWNsaXN0c19zdWJtaXNzaW9u X3Rhc2tsZXQoZW5naW5lKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3Rp dmUubG9jaywgZmxhZ3MpOworCisJCS8qIFJlY2hlY2sgYWZ0ZXIgc2VyaWFsaXNpbmcgd2l0aCBk aXJlY3Qtc3VibWlzc2lvbiAqLworCQlpZiAodGltZW91dCAmJiBwcmVlbXB0X3RpbWVvdXQoZW5n aW5lKSkKKwkJCXByZWVtcHRfcmVzZXQoZW5naW5lKTsKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19zdWJtaXNzaW9uX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcikKK3N0YXRp YyB2b2lkIF9fZXhlY2xpc3RzX2tpY2soc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4 ZWNsaXN0cykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQotCQlmcm9tX3Rp bWVyKGVuZ2luZSwgdGltZXIsIGV4ZWNsaXN0cy50aW1lcik7Ci0KIAkvKiBLaWNrIHRoZSB0YXNr bGV0IGZvciBzb21lIGludGVycnVwdCBjb2FsZXNjaW5nIGFuZCByZXNldCBoYW5kbGluZyAqLwot CXRhc2tsZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQpOworCXRhc2ts ZXRfaGlfc2NoZWR1bGUoJmV4ZWNsaXN0cy0+dGFza2xldCk7Cit9CisKKyNkZWZpbmUgZXhlY2xp c3RzX2tpY2sodCwgbWVtYmVyKSBcCisJX19leGVjbGlzdHNfa2ljayhjb250YWluZXJfb2YodCwg c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMsIG1lbWJlcikpCisKK3N0YXRpYyB2b2lkIGV4 ZWNsaXN0c190aW1lc2xpY2Uoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKQoreworCWV4ZWNsaXN0 c19raWNrKHRpbWVyLCB0aW1lcik7Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c19wcmVlbXB0 KHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcikKK3sKKwlleGVjbGlzdHNfa2ljayh0aW1lciwgcHJl ZW1wdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHF1ZXVlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLApAQCAtMzQ5MCw2ICszNTY0LDcgQEAgZ2VuMTJfZW1pdF9maW5pX2JyZWFk Y3J1bWJfcmNzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCiBzdGF0aWMg dm9pZCBleGVjbGlzdHNfcGFyayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJ Y2FuY2VsX3RpbWVyKCZlbmdpbmUtPmV4ZWNsaXN0cy50aW1lcik7CisJY2FuY2VsX3RpbWVyKCZl bmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0KTsKIH0KIAogdm9pZCBpbnRlbF9leGVjbGlzdHNfc2V0 X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCkBAIC0z NjA3LDcgKzM2ODIsOCBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb25fc2V0dXAoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXRhc2tsZXRfaW5pdCgmZW5naW5lLT5l eGVjbGlzdHMudGFza2xldCwKIAkJICAgICBleGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0LCAo dW5zaWduZWQgbG9uZyllbmdpbmUpOwotCXRpbWVyX3NldHVwKCZlbmdpbmUtPmV4ZWNsaXN0cy50 aW1lciwgZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGltZXIsIDApOworCXRpbWVyX3NldHVwKCZlbmdp bmUtPmV4ZWNsaXN0cy50aW1lciwgZXhlY2xpc3RzX3RpbWVzbGljZSwgMCk7CisJdGltZXJfc2V0 dXAoJmVuZ2luZS0+ZXhlY2xpc3RzLnByZWVtcHQsIGV4ZWNsaXN0c19wcmVlbXB0LCAwKTsKIAog CWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhlbmdpbmUpOwogCWxvZ2ljYWxfcmluZ19kZWZh dWx0X2lycXMoZW5naW5lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKaW5k ZXggMDQ4NjRkNzU4OGEyLi4xYjIyOGYyYjExMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2xyYy5jCkBAIC0xNzA2LDYgKzE3MDYsMTA1IEBAIHN0YXRpYyBpbnQgbGl2ZV9wcmVl bXB0X2hhbmcodm9pZCAqYXJnKQogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQgbGl2ZV9w cmVlbXB0X3RpbWVvdXQodm9pZCAqYXJnKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBhcmc7 CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eF9oaSwgKmN0eF9sbzsKKwlzdHJ1Y3QgaWd0 X3NwaW5uZXIgc3Bpbl9sbzsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51 bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50IGVyciA9IC1FTk9NRU07CisKKwkvKgorCSAqIENo ZWNrIHRoYXQgd2UgZm9yY2UgcHJlZW1wdGlvbiB0byBvY2N1ciBieSBjYW5jZWxsaW5nIHRoZSBw cmV2aW91cworCSAqIGNvbnRleHQgaWYgaXQgcmVmdXNlcyB0byB5aWVsZCB0aGUgR1BVLgorCSAq LworCWlmICghQ09ORklHX0RSTV9JOTE1X1BSRUVNUFRfVElNRU9VVCkKKwkJcmV0dXJuIDA7CisK KwlpZiAoIUhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihndC0+aTkxNSkpCisJCXJldHVybiAw OworCisJaWYgKCFpbnRlbF9oYXNfcmVzZXRfZW5naW5lKGd0KSkKKwkJcmV0dXJuIDA7CisKKwlp ZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3Bpbl9sbywgZ3QpKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWN0eF9oaSA9IGtlcm5lbF9jb250ZXh0KGd0LT5pOTE1KTsKKwlpZiAoIWN0eF9oaSkKKwkJZ290 byBlcnJfc3Bpbl9sbzsKKwljdHhfaGktPnNjaGVkLnByaW9yaXR5ID0KKwkJSTkxNV9VU0VSX1BS SU9SSVRZKEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWSk7CisKKwljdHhfbG8gPSBrZXJu ZWxfY29udGV4dChndC0+aTkxNSk7CisJaWYgKCFjdHhfbG8pCisJCWdvdG8gZXJyX2N0eF9oaTsK KwljdHhfbG8tPnNjaGVkLnByaW9yaXR5ID0KKwkJSTkxNV9VU0VSX1BSSU9SSVRZKEk5MTVfQ09O VEVYVF9NSU5fVVNFUl9QUklPUklUWSk7CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwg aWQpIHsKKwkJdW5zaWduZWQgbG9uZyBzYXZlZF90aW1lb3V0OworCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycTsKKworCQlpZiAoIWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlvbihlbmdpbmUpKQor CQkJY29udGludWU7CisKKwkJcnEgPSBzcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZzcGluX2xvLCBj dHhfbG8sIGVuZ2luZSwKKwkJCQkJICAgIE1JX05PT1ApOyAvKiBwcmVlbXB0aW9uIGRpc2FibGVk ICovCisJCWlmIChJU19FUlIocnEpKSB7CisJCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJCWdvdG8g ZXJyX2N0eF9sbzsKKwkJfQorCisJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCQlpZiAoIWlndF93 YWl0X2Zvcl9zcGlubmVyKCZzcGluX2xvLCBycSkpIHsKKwkJCWludGVsX2d0X3NldF93ZWRnZWQo Z3QpOworCQkJZXJyID0gLUVJTzsKKwkJCWdvdG8gZXJyX2N0eF9sbzsKKwkJfQorCisJCXJxID0g aWd0X3JlcXVlc3RfYWxsb2MoY3R4X2hpLCBlbmdpbmUpOworCQlpZiAoSVNfRVJSKHJxKSkgewor CQkJaWd0X3NwaW5uZXJfZW5kKCZzcGluX2xvKTsKKwkJCWVyciA9IFBUUl9FUlIocnEpOworCQkJ Z290byBlcnJfY3R4X2xvOworCQl9CisKKwkJLyogRmx1c2ggdGhlIHByZXZpb3VzIENTIGFjayBi ZWZvcmUgY2hhbmdpbmcgdGltZW91dHMgKi8KKwkJd2hpbGUgKFJFQURfT05DRShlbmdpbmUtPmV4 ZWNsaXN0cy5wZW5kaW5nWzBdKSkKKwkJCWNwdV9yZWxheCgpOworCisJCXNhdmVkX3RpbWVvdXQg PSBlbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tczsKKwkJZW5naW5lLT5wcm9wcy5wcmVl bXB0X3RpbWVvdXRfbXMgPSAxOyAvKiBpbiBtcywgLT4gMSBqaWZmaWUgKi8KKworCQlpOTE1X3Jl cXVlc3RfZ2V0KHJxKTsKKwkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisKKwkJaW50ZWxfZW5naW5l X2ZsdXNoX3N1Ym1pc3Npb24oZW5naW5lKTsKKwkJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVv dXRfbXMgPSBzYXZlZF90aW1lb3V0OworCisJCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycSwgMCwg SFogLyAxMCkgPCAwKSB7CisJCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKKwkJCWk5MTVfcmVx dWVzdF9wdXQocnEpOworCQkJZXJyID0gLUVUSU1FOworCQkJZ290byBlcnJfY3R4X2xvOworCQl9 CisKKwkJaWd0X3NwaW5uZXJfZW5kKCZzcGluX2xvKTsKKwkJaTkxNV9yZXF1ZXN0X3B1dChycSk7 CisJfQorCisJZXJyID0gMDsKK2Vycl9jdHhfbG86CisJa2VybmVsX2NvbnRleHRfY2xvc2UoY3R4 X2xvKTsKK2Vycl9jdHhfaGk6CisJa2VybmVsX2NvbnRleHRfY2xvc2UoY3R4X2hpKTsKK2Vycl9z cGluX2xvOgorCWlndF9zcGlubmVyX2ZpbmkoJnNwaW5fbG8pOworCXJldHVybiBlcnI7Cit9CisK IHN0YXRpYyBpbnQgcmFuZG9tX3JhbmdlKHN0cnVjdCBybmRfc3RhdGUgKnJuZCwgaW50IG1pbiwg aW50IG1heCkKIHsKIAlyZXR1cm4gaTkxNV9wcmFuZG9tX3UzMl9tYXhfc3RhdGUobWF4IC0gbWlu LCBybmQpICsgbWluOwpAQCAtMjYwNyw2ICsyNzA2LDcgQEAgaW50IGludGVsX2V4ZWNsaXN0c19s aXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJU1VCVEVTVChs aXZlX3N1cHByZXNzX3dhaXRfcHJlZW1wdCksCiAJCVNVQlRFU1QobGl2ZV9jaGFpbl9wcmVlbXB0 KSwKIAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfaGFuZyksCisJCVNVQlRFU1QobGl2ZV9wcmVlbXB0 X3RpbWVvdXQpLAogCQlTVUJURVNUKGxpdmVfcHJlZW1wdF9zbW9rZSksCiAJCVNVQlRFU1QobGl2 ZV92aXJ0dWFsX2VuZ2luZSksCiAJCVNVQlRFU1QobGl2ZV92aXJ0dWFsX21hc2spLApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGFyYW1zLmgKaW5kZXggZDI5YWRlM2I3ZGU2Li41NjA1ODk3OGJiMjcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgZHJt X3ByaW50ZXI7CiAJcGFyYW0oY2hhciAqLCBkbWNfZmlybXdhcmVfcGF0aCwgTlVMTCkgXAogCXBh cmFtKGludCwgbW1pb19kZWJ1ZywgLUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX01N SU8pKSBcCiAJcGFyYW0oaW50LCBlZHBfdnN3aW5nLCAwKSBcCi0JcGFyYW0oaW50LCByZXNldCwg MikgXAorCXBhcmFtKGludCwgcmVzZXQsIDMpIFwKIAlwYXJhbSh1bnNpZ25lZCBpbnQsIGluamVj dF9sb2FkX2ZhaWx1cmUsIDApIFwKIAlwYXJhbShpbnQsIGZhc3Rib290LCAtMSkgXAogCXBhcmFt KGludCwgZW5hYmxlX2RwY2RfYmFja2xpZ2h0LCAwKSBcCi0tIAoyLjI0LjAucmMwCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=