From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 1/3] drm/i915/execlists: Lift process_csb() out of the irq-off spinlock Date: Fri, 16 Aug 2019 10:24:22 +0100 Message-ID: <20190816092424.31386-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 4CCD66E27A for ; Fri, 16 Aug 2019 09:24:48 +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 List-Id: intel-gfx@lists.freedesktop.org SWYgd2Ugb25seSBjYWxsIHByb2Nlc3NfY3NiKCkgZnJvbSB0aGUgdGFza2xldCwgdGhvdWdoIHdl IGxvc2UgdGhlCmFiaWxpdHkgdG8gYnlwYXNzIGtzb2Z0aXJxZCBpbnRlcnJ1cHQgcHJvY2Vzc2lu ZyBvbiBkaXJlY3Qgc3VibWlzc2lvbgpwYXRocywgd2UgY2FuIHB1c2ggaXQgb3V0IG9mIHRoZSBp cnEtb2ZmIHNwaW5sb2NrLgoKVGhlIHBlbmFsdHkgaXMgdGhhdCB3ZSB0aGVuIGFsbG93IHNjaGVk dWxlX291dCB0byBiZSBjYWxsZWQgY29uY3VycmVudGx5CndpdGggc2NoZWR1bGVfaW4gcmVxdWly aW5nIHVzIHRvIGhhbmRsZSB0aGUgdXNhZ2UgY291bnQgKGJha2VkIGludG8gdGhlCnBvaW50ZXIg aXRzZWxmKSBhdG9taWNhbGx5LgoKQXMgd2UgZG8ga2ljayB0aGUgdGFza2xldHMgKHZpYSBsb2Nh bF9iaF9lbmFibGUoKSkgYWZ0ZXIgb3VyIHN1Ym1pc3Npb24sCnRoZXJlIGlzIGEgcG9zc2liaWxp dHkgdGhlcmUgdG8gc2VlIGlmIHdlIGNhbiBwdWxsIHRoZSBsb2NhbCBzb2Z0aXJxCnByb2Nlc3Np bmcgYmFjayBmcm9tIHRoZSBrc29mdGlycWQuCgp2MjogU3RvcmUgdGhlICdzd2l0Y2hfcHJpb3Jp dHlfaGludCcgb24gc3VibWlzc2lvbiwgc28gdGhhdCB3ZSBjYW4Kc2FmZWx5IGNoZWNrIGR1cmlu ZyBwcm9jZXNzX2NzYigpLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+CkNjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4Lmlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVz LmggfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAg ICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgg IHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAg fCAxMzYgKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxz LmggICAgICAgICAgICAgfCAgMjAgKystCiA1IGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25z KCspLCA2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9j b250ZXh0X3R5cGVzLmgKaW5kZXggYTYzMmIyMGVjNGQ4Li5kOGNlMjY2YzA0OWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKQEAgLTQxLDkgKzQx LDcgQEAgc3RydWN0IGludGVsX2NvbnRleHQgewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICppbmZsaWdodDsKICNkZWZpbmUgaW50ZWxf Y29udGV4dF9pbmZsaWdodChjZSkgcHRyX21hc2tfYml0cygoY2UpLT5pbmZsaWdodCwgMikKLSNk ZWZpbmUgaW50ZWxfY29udGV4dF9pbmZsaWdodF9jb3VudChjZSkgIHB0cl91bm1hc2tfYml0cygo Y2UpLT5pbmZsaWdodCwgMikKLSNkZWZpbmUgaW50ZWxfY29udGV4dF9pbmZsaWdodF9pbmMoY2Up IHB0cl9jb3VudF9pbmMoJihjZSktPmluZmxpZ2h0KQotI2RlZmluZSBpbnRlbF9jb250ZXh0X2lu ZmxpZ2h0X2RlYyhjZSkgcHRyX2NvdW50X2RlYygmKGNlKS0+aW5mbGlnaHQpCisjZGVmaW5lIGlu dGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpIHB0cl91bm1hc2tfYml0cygoY2UpLT5pbmZs aWdodCwgMikKIAogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwogCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpnZW1fY29udGV4dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMKaW5kZXggOTU3ZjI3YTJlYzk3Li5iYTQ1N2MxYzdkYzAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0xNDU5LDcgKzE0NTksNyBAQCBp bnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAKIAkJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5wZW5kaW5nOyAocnEgPSAqcG9ydCk7IHBv cnQrKykgewogCQkJLyogRXhjbHVkZSBhbnkgY29udGV4dHMgYWxyZWFkeSBjb3VudGVkIGluIGFj dGl2ZSAqLwotCQkJaWYgKGludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQocnEtPmh3X2NvbnRl eHQpID09IDEpCisJCQlpZiAoIWludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQocnEtPmh3X2Nv bnRleHQpKQogCQkJCWVuZ2luZS0+c3RhdHMuYWN0aXZlKys7CiAJCX0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAppbmRleCA5OTY1YTMyNjAxZDYuLjU0 NDFhYTljYjg2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5 cGVzLmgKQEAgLTIwNCw2ICsyMDQsMTYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMg ewogCSAqLwogCXVuc2lnbmVkIGludCBwb3J0X21hc2s7CiAKKwkvKioKKwkgKiBAc3dpdGNoX3By aW9yaXR5X2hpbnQ6IFNlY29uZCBjb250ZXh0IHByaW9yaXR5LgorCSAqCisJICogV2Ugc3VibWl0 IG11bHRpcGxlIGNvbnRleHRzIHRvIHRoZSBIVyBzaW11bHRhbmVvdXNseSBhbmQgd291bGQKKwkg KiBsaWtlIHRvIG9jY2FzaW9uYWxseSBzd2l0Y2ggYmV0d2VlbiB0aGVtIHRvIGVtdWxhdGUgdGlt ZXNsaWNpbmcuCisJICogVG8ga25vdyB3aGVuIHRpbWVzbGljaW5nIGlzIHN1aXRhYmxlLCB3ZSB0 cmFjayB0aGUgcHJpb3JpdHkgb2YKKwkgKiB0aGUgY29udGV4dCBzdWJtaXR0ZWQgc2Vjb25kLgor CSAqLworCWludCBzd2l0Y2hfcHJpb3JpdHlfaGludDsKKwogCS8qKgogCSAqIEBxdWV1ZV9wcmlv cml0eV9oaW50OiBIaWdoZXN0IHBlbmRpbmcgcHJpb3JpdHkuCiAJICoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmMKaW5kZXggZTk4NjNmNGQ4MjZiLi44Y2I4YzUzMDNmNDIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCkBAIC01NDcsMjcgKzU0NywzOSBAQCBleGVjbGlzdHNf Y29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBs b25nIHN0YXR1cykKIAkJCQkgICBzdGF0dXMsIHJxKTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICoKK19fZXhlY2xpc3RzX3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUg PSBycS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICogY29uc3QgY2UgPSBycS0+aHdf Y29udGV4dDsKKworCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKKworCWludGVsX2d0X3BtX2dldChl bmdpbmUtPmd0KTsKKwlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9D T05URVhUX1NDSEVEVUxFX0lOKTsKKwlpbnRlbF9lbmdpbmVfY29udGV4dF9pbihlbmdpbmUpOwor CisJcmV0dXJuIGVuZ2luZTsKK30KKwogc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICoKIGV4ZWNsaXN0c19zY2hlZHVsZV9pbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IGlk eCkKIHsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+aHdfY29udGV4dDsKLQlpbnQg Y291bnQ7CisJc3RydWN0IGludGVsX2NvbnRleHQgKiBjb25zdCBjZSA9IHJxLT5od19jb250ZXh0 OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm9sZDsKIAorCUdFTV9CVUdfT04oIWludGVsX2Vu Z2luZV9wbV9pc19hd2FrZShycS0+ZW5naW5lKSk7CiAJdHJhY2VfaTkxNV9yZXF1ZXN0X2luKHJx LCBpZHgpOwogCi0JY291bnQgPSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKTsKLQlp ZiAoIWNvdW50KSB7Ci0JCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKLQkJY2UtPmluZmxpZ2h0ID0g cnEtPmVuZ2luZTsKLQotCQlpbnRlbF9ndF9wbV9nZXQoY2UtPmluZmxpZ2h0LT5ndCk7Ci0JCWV4 ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVf SU4pOwotCQlpbnRlbF9lbmdpbmVfY29udGV4dF9pbihjZS0+aW5mbGlnaHQpOwotCX0KKwlvbGQg PSBSRUFEX09OQ0UoY2UtPmluZmxpZ2h0KTsKKwlkbyB7CisJCWlmICghb2xkKSB7CisJCQlXUklU RV9PTkNFKGNlLT5pbmZsaWdodCwgX19leGVjbGlzdHNfc2NoZWR1bGVfaW4ocnEpKTsKKwkJCWJy ZWFrOworCQl9CisJfSB3aGlsZSAoIXRyeV9jbXB4Y2hnKCZjZS0+aW5mbGlnaHQsICZvbGQsIHB0 cl9pbmMob2xkKSkpOwogCi0JaW50ZWxfY29udGV4dF9pbmZsaWdodF9pbmMoY2UpOwogCUdFTV9C VUdfT04oaW50ZWxfY29udGV4dF9pbmZsaWdodChjZSkgIT0gcnEtPmVuZ2luZSk7Ci0KIAlyZXR1 cm4gaTkxNV9yZXF1ZXN0X2dldChycSk7CiB9CiAKQEAgLTU4MSwzNSArNTkzLDQ1IEBAIHN0YXRp YyB2b2lkIGtpY2tfc2libGluZ3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCi1leGVjbGlzdHNfc2NoZWR1 bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorX19leGVjbGlzdHNfc2NoZWR1bGVfb3V0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBj b25zdCBlbmdpbmUpCiB7Ci0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2NvbnRl eHQ7CisJc3RydWN0IGludGVsX2NvbnRleHQgKiBjb25zdCBjZSA9IHJxLT5od19jb250ZXh0Owog Ci0JR0VNX0JVR19PTighaW50ZWxfY29udGV4dF9pbmZsaWdodF9jb3VudChjZSkpOworCWludGVs X2VuZ2luZV9jb250ZXh0X291dChlbmdpbmUpOworCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19j aGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfT1VUKTsKKwlpbnRlbF9ndF9wbV9wdXQo ZW5naW5lLT5ndCk7CiAKLQl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHJxKTsKKwkvKgorCSAqIElm IHRoaXMgaXMgcGFydCBvZiBhIHZpcnR1YWwgZW5naW5lLCBpdHMgbmV4dCByZXF1ZXN0IG1heQor CSAqIGhhdmUgYmVlbiBibG9ja2VkIHdhaXRpbmcgZm9yIGFjY2VzcyB0byB0aGUgYWN0aXZlIGNv bnRleHQuCisJICogV2UgaGF2ZSB0byBraWNrIGFsbCB0aGUgc2libGluZ3MgYWdhaW4gaW4gY2Fz ZSB3ZSBuZWVkIHRvCisJICogc3dpdGNoIChlLmcuIHRoZSBuZXh0IHJlcXVlc3QgaXMgbm90IHJ1 bm5hYmxlIG9uIHRoaXMKKwkgKiBlbmdpbmUpLiBIb3BlZnVsbHksIHdlIHdpbGwgYWxyZWFkeSBo YXZlIHN1Ym1pdHRlZCB0aGUgbmV4dAorCSAqIHJlcXVlc3QgYmVmb3JlIHRoZSB0YXNrbGV0IHJ1 bnMgYW5kIGRvIG5vdCBuZWVkIHRvIHJlYnVpbGQKKwkgKiBlYWNoIHZpcnR1YWwgdHJlZSBhbmQg a2ljayBldmVyeW9uZSBhZ2Fpbi4KKwkgKi8KKwlpZiAoY2UtPmVuZ2luZSAhPSBlbmdpbmUpCisJ CWtpY2tfc2libGluZ3MocnEsIGNlKTsKIAotCWludGVsX2NvbnRleHRfaW5mbGlnaHRfZGVjKGNl KTsKLQlpZiAoIWludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpKSB7Ci0JCWludGVsX2Vu Z2luZV9jb250ZXh0X291dChjZS0+aW5mbGlnaHQpOwotCQlleGVjbGlzdHNfY29udGV4dF9zdGF0 dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7Ci0JCWludGVsX2d0X3Bt X3B1dChjZS0+aW5mbGlnaHQtPmd0KTsKKwlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cit9CiAKLQkJ LyoKLQkJICogSWYgdGhpcyBpcyBwYXJ0IG9mIGEgdmlydHVhbCBlbmdpbmUsIGl0cyBuZXh0IHJl cXVlc3QgbWF5Ci0JCSAqIGhhdmUgYmVlbiBibG9ja2VkIHdhaXRpbmcgZm9yIGFjY2VzcyB0byB0 aGUgYWN0aXZlIGNvbnRleHQuCi0JCSAqIFdlIGhhdmUgdG8ga2ljayBhbGwgdGhlIHNpYmxpbmdz IGFnYWluIGluIGNhc2Ugd2UgbmVlZCB0bwotCQkgKiBzd2l0Y2ggKGUuZy4gdGhlIG5leHQgcmVx dWVzdCBpcyBub3QgcnVubmFibGUgb24gdGhpcwotCQkgKiBlbmdpbmUpLiBIb3BlZnVsbHksIHdl IHdpbGwgYWxyZWFkeSBoYXZlIHN1Ym1pdHRlZCB0aGUgbmV4dAotCQkgKiByZXF1ZXN0IGJlZm9y ZSB0aGUgdGFza2xldCBydW5zIGFuZCBkbyBub3QgbmVlZCB0byByZWJ1aWxkCi0JCSAqIGVhY2gg dmlydHVhbCB0cmVlIGFuZCBraWNrIGV2ZXJ5b25lIGFnYWluLgotCQkgKi8KLQkJY2UtPmluZmxp Z2h0ID0gTlVMTDsKLQkJaWYgKHJxLT5lbmdpbmUgIT0gY2UtPmVuZ2luZSkKLQkJCWtpY2tfc2li bGluZ3MocnEsIGNlKTsKK3N0YXRpYyBpbmxpbmUgdm9pZAorZXhlY2xpc3RzX3NjaGVkdWxlX291 dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqIGNv bnN0IGNlID0gcnEtPmh3X2NvbnRleHQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqY3VyLCAq b2xkOwogCi0JCWludGVsX2NvbnRleHRfcHV0KGNlKTsKLQl9CisJdHJhY2VfaTkxNV9yZXF1ZXN0 X291dChycSk7CisJR0VNX0JVR19PTihpbnRlbF9jb250ZXh0X2luZmxpZ2h0KGNlKSAhPSBycS0+ ZW5naW5lKTsKKworCW9sZCA9IFJFQURfT05DRShjZS0+aW5mbGlnaHQpOworCWRvCisJCWN1ciA9 IHB0cl91bm1hc2tfYml0cyhvbGQsIDIpID8gcHRyX2RlYyhvbGQpIDogTlVMTDsKKwl3aGlsZSAo IXRyeV9jbXB4Y2hnKCZjZS0+aW5mbGlnaHQsICZvbGQsIGN1cikpOworCWlmICghY3VyKQorCQlf X2V4ZWNsaXN0c19zY2hlZHVsZV9vdXQocnEsIG9sZCk7CiAKIAlpOTE1X3JlcXVlc3RfcHV0KHJx KTsKIH0KQEAgLTY4NCw2ICs3MDYsOSBAQCBhc3NlcnRfcGVuZGluZ192YWxpZChjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzLAogCiAJdHJhY2VfcG9ydHMoZXhl Y2xpc3RzLCBtc2csIGV4ZWNsaXN0cy0+cGVuZGluZyk7CiAKKwlpZiAoIWV4ZWNsaXN0cy0+cGVu ZGluZ1swXSkKKwkJcmV0dXJuIGZhbHNlOworCiAJaWYgKGV4ZWNsaXN0cy0+cGVuZGluZ1tleGVj bGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0cyldKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTk0Miwx MSArOTY3LDIzIEBAIG5lZWRfdGltZXNsaWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB9CiAKIHN0YXRpYyBib29sCi1lbmFi bGVfdGltZXNsaWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N3aXRjaF9wcmlv KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCit7CisJaWYgKGxpc3RfaXNfbGFzdCgmcnEtPnNjaGVkLmxpbmssICZlbmdpbmUtPmFj dGl2ZS5yZXF1ZXN0cykpCisJCXJldHVybiBJTlRfTUlOOworCisJcmV0dXJuIHJxX3ByaW8obGlz dF9uZXh0X2VudHJ5KHJxLCBzY2hlZC5saW5rKSk7Cit9CisKK3N0YXRpYyBib29sCitlbmFibGVf dGltZXNsaWNlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMp CiB7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdCA9IGxhc3RfYWN0aXZlKCZlbmdpbmUtPmV4 ZWNsaXN0cyk7CisJY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSAqZXhlY2xpc3RzLT5h Y3RpdmU7CiAKLQlyZXR1cm4gbGFzdCAmJiBuZWVkX3RpbWVzbGljZShlbmdpbmUsIGxhc3QpOwor CWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0 dXJuIGV4ZWNsaXN0cy0+c3dpdGNoX3ByaW9yaXR5X2hpbnQgPj0gZWZmZWN0aXZlX3ByaW8ocnEp OwogfQogCiBzdGF0aWMgdm9pZCByZWNvcmRfcHJlZW1wdGlvbihzdHJ1Y3QgaW50ZWxfZW5naW5l X2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQpAQCAtMTI5Miw2ICsxMzI5LDggQEAgc3RhdGljIHZvaWQg ZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkqcG9y dCA9IGV4ZWNsaXN0c19zY2hlZHVsZV9pbihsYXN0LCBwb3J0IC0gZXhlY2xpc3RzLT5wZW5kaW5n KTsKIAkJbWVtc2V0KHBvcnQgKyAxLCAwLCAobGFzdF9wb3J0IC0gcG9ydCkgKiBzaXplb2YoKnBv cnQpKTsKIAkJZXhlY2xpc3RzX3N1Ym1pdF9wb3J0cyhlbmdpbmUpOworCQlleGVjbGlzdHMtPnN3 aXRjaF9wcmlvcml0eV9oaW50ID0KKwkJCXN3aXRjaF9wcmlvKGVuZ2luZSwgKmV4ZWNsaXN0cy0+ cGVuZGluZyk7CiAJfSBlbHNlIHsKIAkJcmluZ19zZXRfcGF1c2VkKGVuZ2luZSwgMCk7CiAJfQpA QCAtMTM1Niw3ICsxMzk1LDYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCWNvbnN0IHU4IG51bV9lbnRyaWVzID0gZXhlY2xpc3RzLT5j c2Jfc2l6ZTsKIAl1OCBoZWFkLCB0YWlsOwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5l LT5hY3RpdmUubG9jayk7CiAJR0VNX0JVR19PTihVU0VTX0dVQ19TVUJNSVNTSU9OKGVuZ2luZS0+ aTkxNSkpOwogCiAJLyoKQEAgLTE0MjcsMTUgKzE0NjUsMTQgQEAgc3RhdGljIHZvaWQgcHJvY2Vz c19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJCSAgICAgICBleGVjbGlz dHMtPnBlbmRpbmcsCiAJCQkJICAgICAgIGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKSAq CiAJCQkJICAgICAgIHNpemVvZigqZXhlY2xpc3RzLT5wZW5kaW5nKSk7Ci0JCQlleGVjbGlzdHMt PnBlbmRpbmdbMF0gPSBOVUxMOwogCi0JCQl0cmFjZV9wb3J0cyhleGVjbGlzdHMsICJwcm9tb3Rl ZCIsIGV4ZWNsaXN0cy0+YWN0aXZlKTsKLQotCQkJaWYgKGVuYWJsZV90aW1lc2xpY2UoZW5naW5l KSkKKwkJCWlmIChlbmFibGVfdGltZXNsaWNlKGV4ZWNsaXN0cykpCiAJCQkJbW9kX3RpbWVyKCZl eGVjbGlzdHMtPnRpbWVyLCBqaWZmaWVzICsgMSk7CiAKIAkJCWlmICghaW5qZWN0X3ByZWVtcHRf aGFuZyhleGVjbGlzdHMpKQogCQkJCXJpbmdfc2V0X3BhdXNlZChlbmdpbmUsIDApOworCisJCQlX UklURV9PTkNFKGV4ZWNsaXN0cy0+cGVuZGluZ1swXSwgTlVMTCk7CiAJCQlicmVhazsKIAogCQlj YXNlIENTQl9DT01QTEVURTogLyogcG9ydDAgY29tcGxldGVkLCBhZHZhbmNlZCB0byBwb3J0MSAq LwpAQCAtMTQ3OSw4ICsxNTE2LDYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogc3RhdGljIHZvaWQgX19leGVjbGlzdHNfc3VibWlzc2lv bl90YXNrbGV0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmNvbnN0IGVuZ2luZSkKIHsKIAlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKLQotCXByb2Nlc3NfY3NiKGVu Z2luZSk7CiAJaWYgKCFlbmdpbmUtPmV4ZWNsaXN0cy5wZW5kaW5nWzBdKQogCQlleGVjbGlzdHNf ZGVxdWV1ZShlbmdpbmUpOwogfQpAQCAtMTQ5NCw5ICsxNTI5LDEyIEBAIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq KWRhdGE7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdp bmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7Ci0JX19leGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0 KGVuZ2luZSk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywg ZmxhZ3MpOworCXByb2Nlc3NfY3NiKGVuZ2luZSk7CisJaWYgKCFSRUFEX09OQ0UoZW5naW5lLT5l eGVjbGlzdHMucGVuZGluZ1swXSkpIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0 aXZlLmxvY2ssIGZsYWdzKTsKKwkJX19leGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0KGVuZ2lu ZSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdz KTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3RpbWVyKHN0cnVj dCB0aW1lcl9saXN0ICp0aW1lcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdXRpbHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaAppbmRleCBkNjUy YmE1ZDIzMjAuLjU2MmY3NTZkYTQyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV91dGlscy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaApAQCAt MTYxLDE3ICsxNjEsMTUgQEAgX19jaGVja19zdHJ1Y3Rfc2l6ZShzaXplX3QgYmFzZSwgc2l6ZV90 IGFyciwgc2l6ZV90IGNvdW50LCBzaXplX3QgKnNpemUpCiAJKCh0eXBlb2YocHRyKSkoKHVuc2ln bmVkIGxvbmcpKHB0cikgfCBfX2JpdHMpKTsJCQlcCiB9KQogCi0jZGVmaW5lIHB0cl9jb3VudF9k ZWMocF9wdHIpIGRvIHsJCQkJCVwKLQl0eXBlb2YocF9wdHIpIF9fcCA9IChwX3B0cik7CQkJCQlc Ci0JdW5zaWduZWQgbG9uZyBfX3YgPSAodW5zaWduZWQgbG9uZykoKl9fcCk7CQkJXAotCSpfX3Ag PSAodHlwZW9mKCpwX3B0cikpKC0tX192KTsJCQkJCVwKLX0gd2hpbGUgKDApCi0KLSNkZWZpbmUg cHRyX2NvdW50X2luYyhwX3B0cikgZG8gewkJCQkJXAotCXR5cGVvZihwX3B0cikgX19wID0gKHBf cHRyKTsJCQkJCVwKLQl1bnNpZ25lZCBsb25nIF9fdiA9ICh1bnNpZ25lZCBsb25nKSgqX19wKTsJ CQlcCi0JKl9fcCA9ICh0eXBlb2YoKnBfcHRyKSkoKytfX3YpOwkJCQkJXAotfSB3aGlsZSAoMCkK KyNkZWZpbmUgcHRyX2RlYyhwdHIpICh7CQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIF9fdiA9ICh1 bnNpZ25lZCBsb25nKShwdHIpOwkJCVwKKwkodHlwZW9mKHB0cikpKF9fdiAtIDEpOwkJCQkJCVwK K30pCisKKyNkZWZpbmUgcHRyX2luYyhwdHIpICh7CQkJCQkJCVwKKwl1bnNpZ25lZCBsb25nIF9f diA9ICh1bnNpZ25lZCBsb25nKShwdHIpOwkJCVwKKwkodHlwZW9mKHB0cikpKF9fdiArIDEpOwkJ CQkJCVwKK30pCiAKICNkZWZpbmUgcGFnZV9tYXNrX2JpdHMocHRyKSBwdHJfbWFza19iaXRzKHB0 ciwgUEFHRV9TSElGVCkKICNkZWZpbmUgcGFnZV91bm1hc2tfYml0cyhwdHIpIHB0cl91bm1hc2tf Yml0cyhwdHIsIFBBR0VfU0hJRlQpCi0tIAoyLjIzLjAucmMxCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=