From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI] drm/i915/execlists: Suppress mere WAIT preemption Date: Thu, 28 Feb 2019 22:06:39 +0000 Message-ID: <20190228220639.3173-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 CF5AF6E23D for ; Thu, 28 Feb 2019 22:06:54 +0000 (UTC) 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 Cc: Matthew Auld List-Id: intel-gfx@lists.freedesktop.org V0FJVCBpcyBvY2Nhc2lvbmFsbHkgc3VwcHJlc3NlZCBieSB2aXJ0dWUgb2YgcHJlZW1wdGVkIHJl cXVlc3RzIGJlaW5nCnByb21vdGVkIHRvIE5FV0NMSUVOVCBpZiB0aGV5IGhhdmUgbm90IGFsbCBy ZWFkeSByZWNlaXZlZCB0aGF0IGJvb3N0LgpNYWtlIHRoaXMgY29uc2lzdGVudCBmb3IgYWxsIFdB SVQgYm9vc3RzIHRoYXQgdGhleSBhcmUgbm90IGFsbG93ZWQgdG8KcHJlZW1wdCBleGVjdXRpbmcg Y29udGV4dHMgYW5kIGFyZSBtZXJlbHkgZ3JhbnRlZCB0aGUgcmlnaHQgdG8gYmUgYXQgdGhlCmZy b250IG9mIHRoZSBxdWV1ZSBmb3IgdGhlIG5leHQgZXhlY3V0aW9uIHNsb3QuIFRoaXMgaXMgaW4g a2VlcGluZyB3aXRoCnRoZSBkZXNpcmUgdGhhdCB0aGUgV0FJVCBib29zdCBiZSBhIG1pbm9yIHR3 ZWFrIHRoYXQgZG9lcyBub3QgZ2l2ZQpleGNlc3NpdmUgcHJvbW90aW9uIHRvIGl0cyB1c2VyIGFu ZCBvcGVuIG91cnNlbHZlcyB0byB0cml2aWFsIGFidXNlLgoKVGhlIHByb2JsZW0gd2l0aCB0aGUg aW5jb25zaXN0ZW50IFdBSVQgcHJlZW1wdGlvbiBiZWNvbWVzIG1vcmUgYXBwYXJlbnQKYXMgdGhl IHByZWVtcHRpb24gaXMgcHJvcGFnYXRlZCBhY3Jvc3MgdGhlIGVuZ2luZXMsIHdoZXJlIG9uZSBl bmdpbmUgbWF5CnByZWVtcHQgYW5kIHRoZSBvdGhlciBub3QsIGFuZCB3ZSBiZSByZWx5aW5nIG9u IHRoZSBleGFjdCBleGVjdXRpb24Kb3JkZXIgYmVpbmcgY29uc2lzdGVudCBhY3Jvc3MgZW5naW5l cyAoZS5nLiB1c2luZyBIVyBzZW1hcGhvcmVzIHRvCmNvb3JkaW5hdGUgcGFyYWxsZWwgZXhlY3V0 aW9uKS4KCnYyOiBBbHNvIHByb3RlY3QgR3VDIHN1Ym1pc3Npb24gZnJvbSBmYWxzZSBwcmVlbXB0 aW9uIGxvb3BzLgp2MzogQnVpbGQgYnVnIHNhZmVndWFyZHMgYW5kIGJldHRlciBkZWJ1ZyBtZXNz YWdlcyBmb3Igc3QuCnY0OiBEbyB0aGUgcHJpb3JpdHkgYnVtcGluZyBpbiB1bnN1Ym1pdCAoaS5l LiBvbiBwcmVlbXB0aW9uL3Jlc2V0CnVud2luZCksIGFwcGx5aW5nIGl0IGVhcmxpZXIgZHVyaW5n IHN1Ym1pdCBjYXVzZXMgb3V0LW9mLW9yZGVyIGV4ZWN1dGlvbgpjb21iaW5lZCB3aXRoIGV4ZWN1 dGUgZmVuY2VzLgp2NTogQ2FsbCBzd19mZW5jZV9maW5pIGZvciBvdXIgZHVtbXkgcmVxdWVzdCAo TWF0dGhldykKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2 aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBN YXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICB8ICAxNSArKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zY2hlZHVsZXIuYyAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3NjaGVkdWxlci5oICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jICAgICAgICAgICAgfCAgIDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF9scmMuYyAgfCAxNjMgKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg MTg5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuYwppbmRleCBhMDExYmY0YmU0OGUuLmM2NWY2Yzk5MGZkZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmMKQEAgLTM1OCwxMSArMzU4LDE0IEBAIHZvaWQgX19pOTE1X3JlcXVl c3Rfc3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCiAKIAkvKiBXZSBtYXkgYmUg cmVjdXJzaW5nIGZyb20gdGhlIHNpZ25hbCBjYWxsYmFjayBvZiBhbm90aGVyIGk5MTUgZmVuY2Ug Ki8KIAlzcGluX2xvY2tfbmVzdGVkKCZyZXF1ZXN0LT5sb2NrLCBTSU5HTEVfREVQVEhfTkVTVElO Ryk7CisKIAlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVfRkVOQ0VfRkxBR19BQ1RJVkUsICZyZXF1 ZXN0LT5mZW5jZS5mbGFncykpOwogCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwgJnJl cXVlc3QtPmZlbmNlLmZsYWdzKTsKKwogCWlmICh0ZXN0X2JpdChETUFfRkVOQ0VfRkxBR19FTkFC TEVfU0lHTkFMX0JJVCwgJnJlcXVlc3QtPmZlbmNlLmZsYWdzKSAmJgogCSAgICAhaTkxNV9yZXF1 ZXN0X2VuYWJsZV9icmVhZGNydW1iKHJlcXVlc3QpKQogCQlpbnRlbF9lbmdpbmVfcXVldWVfYnJl YWRjcnVtYnMoZW5naW5lKTsKKwogCXNwaW5fdW5sb2NrKCZyZXF1ZXN0LT5sb2NrKTsKIAogCWVu Z2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIocmVxdWVzdCwKQEAgLTQwNiwxMCArNDA5LDIyIEBA IHZvaWQgX19pOTE1X3JlcXVlc3RfdW5zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVz dCkKIAogCS8qIFdlIG1heSBiZSByZWN1cnNpbmcgZnJvbSB0aGUgc2lnbmFsIGNhbGxiYWNrIG9m IGFub3RoZXIgaTkxNSBmZW5jZSAqLwogCXNwaW5fbG9ja19uZXN0ZWQoJnJlcXVlc3QtPmxvY2ss IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKKworCS8qCisJICogQXMgd2UgZG8gbm90IGFsbG93IFdB SVQgdG8gcHJlZW1wdCBpbmZsaWdodCByZXF1ZXN0cywKKwkgKiBvbmNlIHdlIGhhdmUgZXhlY3V0 ZWQgYSByZXF1ZXN0LCBhbG9uZyB3aXRoIHRyaWdnZXJpbmcKKwkgKiBhbnkgZXhlY3V0aW9uIGNh bGxiYWNrcywgd2UgbXVzdCBwcmVzZXJ2ZSBpdHMgb3JkZXJpbmcKKwkgKiB3aXRoaW4gdGhlIG5v bi1wcmVlbXB0aWJsZSBGSUZPLgorCSAqLworCUJVSUxEX0JVR19PTihfX05PX1BSRUVNUFRJT04g JiB+STkxNV9QUklPUklUWV9NQVNLKTsgLyogb25seSBpbnRlcm5hbCAqLworCXJlcXVlc3QtPnNj aGVkLmF0dHIucHJpb3JpdHkgfD0gX19OT19QUkVFTVBUSU9OOworCiAJaWYgKHRlc3RfYml0KERN QV9GRU5DRV9GTEFHX0VOQUJMRV9TSUdOQUxfQklULCAmcmVxdWVzdC0+ZmVuY2UuZmxhZ3MpKQog CQlpOTE1X3JlcXVlc3RfY2FuY2VsX2JyZWFkY3J1bWIocmVxdWVzdCk7CisKIAlHRU1fQlVHX09O KCF0ZXN0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAmcmVxdWVzdC0+ZmVuY2UuZmxhZ3Mp KTsKIAljbGVhcl9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwgJnJlcXVlc3QtPmZlbmNlLmZs YWdzKTsKKwogCXNwaW5fdW5sb2NrKCZyZXF1ZXN0LT5sb2NrKTsKIAogCS8qIFRyYW5zZmVyIGJh Y2sgZnJvbSB0aGUgZ2xvYmFsIHBlci1lbmdpbmUgdGltZWxpbmUgdG8gcGVyLWNvbnRleHQgKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCmluZGV4IDBkZDcyMDU5M2Y5Yy4uNTAw MThhZDMwMjMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKQEAgLTMyNCw3 ICszMjQsNiBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfc2NoZWR1bGUoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsCiAJCQlpZiAobm9kZV9zaWduYWxlZChwLT5zaWduYWxlcikpCiAJCQkJY29udGludWU7 CiAKLQkJCUdFTV9CVUdfT04ocC0+c2lnbmFsZXItPmF0dHIucHJpb3JpdHkgPCBub2RlLT5hdHRy LnByaW9yaXR5KTsKIAkJCWlmIChwcmlvID4gUkVBRF9PTkNFKHAtPnNpZ25hbGVyLT5hdHRyLnBy aW9yaXR5KSkKIAkJCQlsaXN0X21vdmVfdGFpbCgmcC0+ZGZzX2xpbmssICZkZnMpOwogCQl9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAppbmRleCBiYjNkNDk2ZDRjNDkuLjdkNGE0 OTc1MGQ5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCkBAIC0zMyw2ICsz Myw4IEBAIGVudW0gewogI2RlZmluZSBJOTE1X1BSSU9SSVRZX1dBSVQJKCh1OClCSVQoMCkpCiAj ZGVmaW5lIEk5MTVfUFJJT1JJVFlfTkVXQ0xJRU5UCSgodTgpQklUKDEpKQogCisjZGVmaW5lIF9f Tk9fUFJFRU1QVElPTiAoSTkxNV9QUklPUklUWV9XQUlUKQorCiBzdHJ1Y3QgaTkxNV9zY2hlZF9h dHRyIHsKIAkvKioKIAkgKiBAcHJpb3JpdHk6IGV4ZWN1dGlvbiBhbmQgc2VydmljZSBwcmlvcml0 eQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggNDM2 NmRiNzk3OGE4Li41NmJhMmZjYmFiZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYwpAQCAtNzIwLDcgKzcyMCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJx X3ByaW8oY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAKIHN0YXRpYyBpbmxpbmUgaW50 IHBvcnRfcHJpbyhjb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCkKIHsKLQlyZXR1cm4g cnFfcHJpbyhwb3J0X3JlcXVlc3QocG9ydCkpOworCXJldHVybiBycV9wcmlvKHBvcnRfcmVxdWVz dChwb3J0KSkgfCBfX05PX1BSRUVNUFRJT047CiB9CiAKIHN0YXRpYyBib29sIF9fZ3VjX2RlcXVl dWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwppbmRleCA2NjFkMmY2ZGE4NGYuLjRmMjE4N2FhNDRlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKQEAgLTE4OCw2ICsxODgsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25z dCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlyZXR1cm4gcnEtPnNjaGVkLmF0dHIucHJpb3Jp dHk7CiB9CiAKK3N0YXRpYyBpbnQgZWZmZWN0aXZlX3ByaW8oY29uc3Qgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCit7CisJLyogUmVzdHJpY3QgbWVyZSBXQUlUIGJvb3N0cyBmcm9tIHRyaWdnZXJp bmcgcHJlZW1wdGlvbiAqLworCXJldHVybiBycV9wcmlvKHJxKSB8IF9fTk9fUFJFRU1QVElPTjsK K30KKwogc3RhdGljIGludCBxdWV1ZV9wcmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhl Y2xpc3RzICpleGVjbGlzdHMpCiB7CiAJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnA7CkBAIC0yMDgs NyArMjE0LDcgQEAgc3RhdGljIGludCBxdWV1ZV9wcmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCiBzdGF0aWMgaW5saW5lIGJvb2wgbmVlZF9wcmVlbXB0 KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQljb25zdCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKIHsKLQljb25zdCBpbnQgbGFzdF9wcmlvID0gcnFfcHJpbyhycSk7 CisJaW50IGxhc3RfcHJpbzsKIAogCWlmICghaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGVu Z2luZSkpCiAJCXJldHVybiBmYWxzZTsKQEAgLTIyOCw2ICsyMzQsNyBAQCBzdGF0aWMgaW5saW5l IGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK IAkgKiBwcmVlbXB0LiBJZiB0aGF0IGhpbnQgaXMgc3RhbGUgb3Igd2UgbWF5IGJlIHRyeWluZyB0 byBwcmVlbXB0CiAJICogb3Vyc2VsdmVzLCBpZ25vcmUgdGhlIHJlcXVlc3QuCiAJICovCisJbGFz dF9wcmlvID0gZWZmZWN0aXZlX3ByaW8ocnEpOwogCWlmICghX19leGVjbGlzdHNfbmVlZF9wcmVl bXB0KGVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQsCiAJCQkJICAgICAgbGFz dF9wcmlvKSkKIAkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX2xyYy5jCmluZGV4IDBmN2E1YmY2OTY0Ni4uMDY3NzAzOGE1NDY2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCkBAIC00MDcsNiArNDA3LDE2OCBA QCBzdGF0aWMgaW50IGxpdmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KHZvaWQgKmFyZykKIAlnb3Rv IGVycl9jbGllbnRfYjsKIH0KIAorc3RhdGljIGludCBfX2k5MTVfc3dfZmVuY2VfY2FsbAorZHVt bXlfbm90aWZ5KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwgZW51bSBpOTE1X3N3X2ZlbmNl X25vdGlmeSBzdGF0ZSkKK3sKKwlyZXR1cm4gTk9USUZZX0RPTkU7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpkdW1teV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKworCXJxID0ga3phbGxvYyhzaXpl b2YoKnJxKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFycSkKKwkJcmV0dXJuIE5VTEw7CisKKwlJTklU X0xJU1RfSEVBRCgmcnEtPmFjdGl2ZV9saXN0KTsKKwlycS0+ZW5naW5lID0gZW5naW5lOworCisJ aTkxNV9zY2hlZF9ub2RlX2luaXQoJnJxLT5zY2hlZCk7CisKKwkvKiBtYXJrIHRoaXMgcmVxdWVz dCBhcyBwZXJtYW5lbnRseSBpbmNvbXBsZXRlICovCisJcnEtPmZlbmNlLnNlcW5vID0gMTsKKwlC VUlMRF9CVUdfT04oc2l6ZW9mKHJxLT5mZW5jZS5zZXFubykgIT0gOCk7IC8qIHVwcGVyIDMyYiA9 PSAwICovCisJcnEtPmh3c3Bfc2Vxbm8gPSAodTMyICopJnJxLT5mZW5jZS5zZXFubyArIDE7CisJ R0VNX0JVR19PTihpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSk7CisKKwlpOTE1X3N3X2ZlbmNl X2luaXQoJnJxLT5zdWJtaXQsIGR1bW15X25vdGlmeSk7CisJaTkxNV9zd19mZW5jZV9jb21taXQo JnJxLT5zdWJtaXQpOworCisJcmV0dXJuIHJxOworfQorCitzdGF0aWMgdm9pZCBkdW1teV9yZXF1 ZXN0X2ZyZWUoc3RydWN0IGk5MTVfcmVxdWVzdCAqZHVtbXkpCit7CisJaTkxNV9yZXF1ZXN0X21h cmtfY29tcGxldGUoZHVtbXkpOworCWk5MTVfc2NoZWRfbm9kZV9maW5pKCZkdW1teS0+c2NoZWQp OworCWk5MTVfc3dfZmVuY2VfZmluaSgmZHVtbXktPnN1Ym1pdCk7CisKKwlkbWFfZmVuY2VfZnJl ZSgmZHVtbXktPmZlbmNlKTsKK30KKworc3RhdGljIGludCBsaXZlX3N1cHByZXNzX3dhaXRfcHJl ZW1wdCh2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7 CisJc3RydWN0IHByZWVtcHRfY2xpZW50IGNsaWVudFs0XTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7CisJaW50IGVyciA9IC1FTk9NRU07CisJaW50IGk7CisKKwkvKgorCSAqIFdhaXRl cnMgYXJlIGdpdmVuIGEgbGl0dGxlIHByaW9yaXR5IG51ZGdlLCBidXQgbm90IGVub3VnaAorCSAq IHRvIGFjdHVhbGx5IGNhdXNlIGFueSBwcmVlbXB0aW9uLiBEb3VibGUgY2hlY2sgdGhhdCB3ZSBk bworCSAqIG5vdCBuZWVkbGVzc2x5IGdlbmVyYXRlIHByZWVtcHQtdG8taWRsZSBjeWNsZXMuCisJ ICovCisKKwlpZiAoIUhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihpOTE1KSkKKwkJcmV0dXJu IDA7CisKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwlpZiAocHJlZW1wdF9jbGllbnRfaW5pdChp OTE1LCAmY2xpZW50WzBdKSkgLyogRUxTUFswXSAqLworCQlnb3RvIGVycl91bmxvY2s7CisJaWYg KHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmNsaWVudFsxXSkpIC8qIEVMU1BbMV0gKi8KKwkJ Z290byBlcnJfY2xpZW50XzA7CisJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmNsaWVu dFsyXSkpIC8qIGhlYWQgb2YgcXVldWUgKi8KKwkJZ290byBlcnJfY2xpZW50XzE7CisJaWYgKHBy ZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmNsaWVudFszXSkpIC8qIGJ5c3RhbmRlciAqLworCQln b3RvIGVycl9jbGllbnRfMjsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7 CisJCWludCBkZXB0aDsKKworCQlpZiAoIWVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIpCisJ CQljb250aW51ZTsKKworCQlmb3IgKGRlcHRoID0gMDsgZGVwdGggPCBBUlJBWV9TSVpFKGNsaWVu dCk7IGRlcHRoKyspIHsKKwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxW0FSUkFZX1NJWkUoY2xp ZW50KV07CisJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpkdW1teTsKKworCQkJZW5naW5lLT5leGVj bGlzdHMucHJlZW1wdF9oYW5nLmNvdW50ID0gMDsKKworCQkJZHVtbXkgPSBkdW1teV9yZXF1ZXN0 KGVuZ2luZSk7CisJCQlpZiAoIWR1bW15KQorCQkJCWdvdG8gZXJyX2NsaWVudF8zOworCisJCQlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbGllbnQpOyBpKyspIHsKKwkJCQlycVtpXSA9IGln dF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZjbGllbnRbaV0uc3BpbiwKKwkJCQkJCQkJICAgY2xp ZW50W2ldLmN0eCwgZW5naW5lLAorCQkJCQkJCQkgICBNSV9OT09QKTsKKwkJCQlpZiAoSVNfRVJS KHJxW2ldKSkgeworCQkJCQllcnIgPSBQVFJfRVJSKHJxW2ldKTsKKwkJCQkJZ290byBlcnJfd2Vk Z2VkOworCQkJCX0KKworCQkJCS8qIERpc2FibGUgTkVXQ0xJRU5UIHByb21vdGlvbiAqLworCQkJ CV9faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJnJxW2ldLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0 LAorCQkJCQkJCSAgZHVtbXkpOworCQkJCWk5MTVfcmVxdWVzdF9hZGQocnFbaV0pOworCQkJfQor CisJCQlkdW1teV9yZXF1ZXN0X2ZyZWUoZHVtbXkpOworCisJCQlHRU1fQlVHX09OKGk5MTVfcmVx dWVzdF9jb21wbGV0ZWQocnFbMF0pKTsKKwkJCWlmICghaWd0X3dhaXRfZm9yX3NwaW5uZXIoJmNs aWVudFswXS5zcGluLCBycVswXSkpIHsKKwkJCQlwcl9lcnIoIiVzOiBGaXJzdCBjbGllbnQgZmFp bGVkIHRvIHN0YXJ0XG4iLAorCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOworCQkJCWdvdG8gZXJy X3dlZGdlZDsKKwkJCX0KKwkJCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVzdF9zdGFydGVkKHJxWzBd KSk7CisKKwkJCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycVtkZXB0aF0sCisJCQkJCSAgICAgIEk5 MTVfV0FJVF9MT0NLRUQgfAorCQkJCQkgICAgICBJOTE1X1dBSVRfUFJJT1JJVFksCisJCQkJCSAg ICAgIDEpICE9IC1FVElNRSkgeworCQkJCXByX2VycigiJXM6IFdhaXRlciBkZXB0aDolZCBjb21w bGV0ZWQhXG4iLAorCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIGRlcHRoKTsKKwkJCQlnb3RvIGVy cl93ZWRnZWQ7CisJCQl9CisKKwkJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNsaWVudCk7 IGkrKykKKwkJCQlpZ3Rfc3Bpbm5lcl9lbmQoJmNsaWVudFtpXS5zcGluKTsKKworCQkJaWYgKGln dF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQorCQkJCWdvdG8gZXJyX3dlZGdl ZDsKKworCQkJaWYgKGVuZ2luZS0+ZXhlY2xpc3RzLnByZWVtcHRfaGFuZy5jb3VudCkgeworCQkJ CXByX2VycigiJXM6IFByZWVtcHRpb24gcmVjb3JkZWQgeCVkLCBkZXB0aCAlZDsgc2hvdWxkIGhh dmUgYmVlbiBzdXBwcmVzc2VkIVxuIiwKKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLAorCQkJCSAg ICAgICBlbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0X2hhbmcuY291bnQsCisJCQkJICAgICAgIGRl cHRoKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJCWdvdG8gZXJyX2NsaWVudF8zOworCQkJfQor CQl9CisJfQorCisJZXJyID0gMDsKK2Vycl9jbGllbnRfMzoKKwlwcmVlbXB0X2NsaWVudF9maW5p KCZjbGllbnRbM10pOworZXJyX2NsaWVudF8yOgorCXByZWVtcHRfY2xpZW50X2ZpbmkoJmNsaWVu dFsyXSk7CitlcnJfY2xpZW50XzE6CisJcHJlZW1wdF9jbGllbnRfZmluaSgmY2xpZW50WzFdKTsK K2Vycl9jbGllbnRfMDoKKwlwcmVlbXB0X2NsaWVudF9maW5pKCZjbGllbnRbMF0pOworZXJyX3Vu bG9jazoKKwlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCisJCWVy ciA9IC1FSU87CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CisJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlyZXR1cm4gZXJyOworCitlcnJfd2Vk Z2VkOgorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNsaWVudCk7IGkrKykKKwkJaWd0X3Nw aW5uZXJfZW5kKCZjbGllbnRbaV0uc3Bpbik7CisJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsK KwllcnIgPSAtRUlPOworCWdvdG8gZXJyX2NsaWVudF8zOworfQorCiBzdGF0aWMgaW50IGxpdmVf Y2hhaW5fcHJlZW1wdCh2b2lkICphcmcpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBhcmc7CkBAIC04ODcsNiArMTA0OSw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfbGl2ZV9z ZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCVNVQlRFU1QobGl2ZV9w cmVlbXB0KSwKIAkJU1VCVEVTVChsaXZlX2xhdGVfcHJlZW1wdCksCiAJCVNVQlRFU1QobGl2ZV9z dXBwcmVzc19zZWxmX3ByZWVtcHQpLAorCQlTVUJURVNUKGxpdmVfc3VwcHJlc3Nfd2FpdF9wcmVl bXB0KSwKIAkJU1VCVEVTVChsaXZlX2NoYWluX3ByZWVtcHQpLAogCQlTVUJURVNUKGxpdmVfcHJl ZW1wdF9oYW5nKSwKIAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfc21va2UpLAotLSAKMi4yMC4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=