From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH v3 3/5] drm/i915/guc: Implement dynamic WOPCM partitioning Date: Fri, 8 Dec 2017 13:41:50 -0800 Message-ID: <1512769312-21993-3-git-send-email-yaodong.li@intel.com> References: <1512769312-21993-1-git-send-email-yaodong.li@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2BBD46E988 for ; Fri, 8 Dec 2017 21:43:19 +0000 (UTC) In-Reply-To: <1512769312-21993-1-git-send-email-yaodong.li@intel.com> 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: Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org SGFyZHdhcmUgbWF5IGhhdmUgc3BlY2lmaWMgcmVzdHJpY3Rpb25zIG9uIEd1QyBXT1BDTSBwYXJ0 aXRpb24Kc2l6ZSB2ZXJzdXMgSHVDIGZpcm13YXJlIHNpemUuIFdpdGggc3RhdGljIFdPUENNIHBh cnRpdGlvbmluZywKdGhlcmUncyBubyB3YXkgdG8gYWRqdXN0IHRoZSBHdUMgV09QQ00gcGFydGl0 aW9uIHNpemUgYmFzZWQgb24KdGhlIGFjdHVhbCBIdUMgZmlybXdhcmUgc2l6ZSwgc28gdGhhdCBH dUMvSHVDIGxvYWRpbmcgZmFpbHVyZQp3b3VsZCBvY2N1ciBldmVuIGlmIHRoZXJlIHdhcyBlbm91 Z2ggV09QQ00gc3BhY2UgZm9yIGJvdGgKR3VDIGFuZCBIdUMgZmlybXdhcmUuCgpUaGlzIHBhdGNo IGVuYWJsZXMgdGhlIGR5bmFtaWMgY2FsY3VsYXRpb24gb2YgdGhlIFdPUENNIGFwZXJ0dXJlCnNp emVzIHVzZWQgYnkgR3VDIGFuZCBIdUMgZmlybXdhcmUuIEd1QyBXT1BDTSBvZmZzZXQgaXMgc2V0 IHRvCkh1QyBzaXplICsgcmVzZXJ2ZWQgV09QQ00gc2l6ZS4gR3VDIFdPUENNIHNpemUgaXMgc2V0 IHRvCnRvdGFsIFdPUENNIHNpemUgLSBHdUMgV09QQ00gb2Zmc2V0IC0gUkM2Q1RYIHNpemUuIElu IHRoaXMgY2FzZSwKR3VDIFdPUENNIG9mZnNldCB3aWxsIGJlIHVwZGF0ZWQgYmFzZWQgb24gdGhl IHNpemUgb2YgSHVDIGZpcm13YXJlCndoaWxlIEd1QyBXT1BDTSBzaXplIHdpbGwgYmUgc2V0IHRv IHVzZSBhbGwgdGhlIHJlbWFpbmluZyBXT1BDTSBzcGFjZS4KCnYyOgogLSBSZW1vdmVkIGludGVs X3dvcGNtX2luaXQgKFZpbGxlL1NhZ2FyL0pvb25hcykKIC0gUmVuYW1lZCBhbmQgTW92ZWQgdGhl IGludGVsX3dvcGNtX3BhcnRpdGlvbiBpbnRvIGludGVsX2d1YyAoU2FnYXIpCiAtIFJlbW92ZWQg dW5uZWNlc3NhcnkgZnVuY3Rpb24gY2FsbHMgKEpvb25hcykKIC0gSW5pdCBHdUMgV09QQ00gcGFy dGl0aW9uIGFzIHNvb24gYXMgZmlybXdhcmUgZmV0Y2hpbmcgaXMgY29tcGxldGVkCgp2MzoKIC0g Rml4ZWQgaW5kZW50YXRpb24gaXNzdWVzIChDaHJpcykKIC0gUmVtb3ZlZCBsYXllcmluZyB2aW9s YXRpb24gY29kZSAoQ2hyaXMvTWljaGFsKQogLSBDcmVhdGVkIHNlcGFyYXQgZmlsZXMgZm9yIEd1 QyB3b3BjbSBjb2RlICAoTWljaGFsKQogLSBVc2VkIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCBj b2RlIGR1cGxpY2F0aW9uIChNaWNoYWwpCgpDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndh amRlY3prb0BpbnRlbC5jb20+CkNjOiBTYWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVA aW50ZWwuY29tPgpDYzogU3VqYXJpdGhhIFN1bmRhcmVzYW4gPHN1amFyaXRoYS5zdW5kYXJlc2Fu QGludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3Nw dXJpb0BpbnRlbC5jb20+CkNjOiBKb2huIFNwb3Rzd29vZCA8am9obi5hLnNwb3Rzd29vZEBpbnRl bC5jb20+CkNjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBKYWNraWUgTGkgPHlhb2RvbmcubGlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAxMiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWMuYyAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oICAgICAgICB8ICAxMiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf d29wY20uYyAgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5oICB8ICAyNSArKysrKystLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Yy5jICAgICAgICAgfCAgMzkgKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Y19mdy5jICAgICAgfCAgMTEgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWNfZncuaCAgICAgIHwgIDE2ICsrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDE5MiBp bnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKaW5kZXggMjFjZTM3NC4uODllY2YyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMzEyLDEyICszMTIsMTYgQEAgX19jcmVhdGVfaHdfY29u dGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJY3R4LT5kZXNjX3RlbXBs YXRlID0KIAkJZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGRldl9wcml2LCBkZXZfcHJpdi0+bW0uYWxp YXNpbmdfcHBndHQpOwogCi0JLyogR3VDIHJlcXVpcmVzIHRoZSByaW5nIHRvIGJlIHBsYWNlZCBh Ym92ZSBHVUNfV09QQ01fVE9QLiBJZiBHdUMgaXMgbm90Ci0JICogcHJlc2VudCBvciBub3QgaW4g dXNlIHdlIHN0aWxsIG5lZWQgYSBzbWFsbCBiaWFzIGFzIHJpbmcgd3JhcGFyb3VuZAotCSAqIGF0 IG9mZnNldCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3aHkuCisJLyogR3VDIHJlcXVpcmVz IHRoZSByaW5nIHRvIGJlIHBsYWNlZCBhYm92ZSBHdUMgV09QQ00gdG9wLiBTaW5jZSBHdUMKKwkg KiBXT1BDTSB3b24ndCBiZSBhdmFpbGFibGUgdW50aWwgaW50ZWxfdWNfaW5pdF9odygpLCB3ZSB3 aWxsIHBsYWNlCisJICogdGhlIGNvbnRleHQgYWJvdmUgV09QQ00gaW5zdGVhZCBpZiBHdUMgV09Q Q00gd2Fzbid0IGluaXRpYWxpemVkLgorCSAqIGlmIEd1QyBpcyBub3QgcHJlc2VudCBvciBub3Qg aW4gdXNlIHdlIHN0aWxsIG5lZWQgYSBzbWFsbCBiaWFzIGFzCisJICogcmluZyB3cmFwYXJvdW5k IGF0IG9mZnNldCAwIHNvbWV0aW1lcyBoYW5ncy4gTm8gaWRlYSB3aHkuCiAJICovCiAJaWYgKFVT RVNfR1VDKGRldl9wcml2KSkKLQkJY3R4LT5nZ3R0X29mZnNldF9iaWFzID0gR1VDX1dPUENNX1RP UDsKKwkJY3R4LT5nZ3R0X29mZnNldF9iaWFzID0gZGV2X3ByaXYtPmd1Yy53b3BjbS52YWxpZCA/ CisJCQlkZXZfcHJpdi0+Z3VjLndvcGNtLnRvcCA6IFdPUENNX0RFRkFVTFRfU0laRTsKKwogCWVs c2UKIAkJY3R4LT5nZ3R0X29mZnNldF9iaWFzID0gSTkxNV9HVFRfUEFHRV9TSVpFOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5jCmluZGV4IDQxYWVlOTYuLjhiODMwZjEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5jCkBAIC0zMzksNyArMzM5LDcgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICogVGhpcyBpcyBhIHdyYXBwZXIgdG8g Y3JlYXRlIGFuIG9iamVjdCBmb3IgdXNlIHdpdGggdGhlIEd1Qy4gSW4gb3JkZXIgdG8KICAqIHVz ZSBpdCBpbnNpZGUgdGhlIEd1QywgYW4gb2JqZWN0IG5lZWRzIHRvIGJlIHBpbm5lZCBsaWZldGlt ZSwgc28gd2UgYWxsb2NhdGUKICAqIGJvdGggc29tZSBiYWNraW5nIHN0b3JhZ2UgYW5kIGEgcmFu Z2UgaW5zaWRlIHRoZSBHbG9iYWwgR1RULiBXZSBtdXN0IHBpbgotICogaXQgaW4gdGhlIEdHVFQg c29tZXdoZXJlIG90aGVyIHRoYW4gdGhhbiBbMCwgR1VDX1dPUENNX1RPUCkgYmVjYXVzZSB0aGF0 CisgKiBpdCBpbiB0aGUgR0dUVCBzb21ld2hlcmUgb3RoZXIgdGhhbiB0aGFuIFswLCBHdUMgV09Q Q00gdG9wKSBiZWNhdXNlIHRoYXQKICAqIHJhbmdlIGlzIHJlc2VydmVkIGluc2lkZSBHdUMuCiAg KgogICogUmV0dXJuOglBIGk5MTVfdm1hIGlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBhbiBFUlJf UFRSLgpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0cnVjdCBpOTE1X3ZtYSAqaW50ZWxfZ3VjX2FsbG9j YXRlX3ZtYShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBzaXplKQogCQlnb3RvIGVycjsKIAog CXJldCA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIFBBR0VfU0laRSwKLQkJCSAgIFBJTl9HTE9CQUwg fCBQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9QKTsKKwkJCSAgIFBJTl9HTE9CQUwgfCBQ SU5fT0ZGU0VUX0JJQVMgfCBndWMtPndvcGNtLnRvcCk7CiAJaWYgKHJldCkgewogCQl2bWEgPSBF UlJfUFRSKHJldCk7CiAJCWdvdG8gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAppbmRleCAz OTk2MTJkLi5iODI0OGJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaApAQCAtNDksNiArNDks NyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7CiAJc3RydWN0 IGludGVsX2d1Y19sb2cgbG9nOwogCXN0cnVjdCBpbnRlbF9ndWNfY3QgY3Q7CisJc3RydWN0IGlu dGVsX2d1Y193b3BjbSB3b3BjbTsKIAogCS8qIExvZyBzbmFwc2hvdCBpZiBHdUMgZXJyb3JzIGR1 cmluZyBsb2FkICovCiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmxvYWRfZXJyX2xvZzsK QEAgLTEwNSwxMCArMTA2LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndWNfbm90aWZ5 KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKICAqIEBndWM6IGludGVsIGd1Yy4KICAqIEB2bWE6IGk5 MTUgZ3JhcGhpY3MgdmlydHVhbCBtZW1vcnkgYXJlYS4KICAqCi0gKiBHdUMgZG9lcyBub3QgYWxs b3cgYW55IGdmeCBHR1RUIGFkZHJlc3MgdGhhdCBmYWxscyBpbnRvIHJhbmdlIFswLCBXT1BDTV9U T1ApLAotICogd2hpY2ggaXMgcmVzZXJ2ZWQgZm9yIEJvb3QgUk9NLCBTUkFNIGFuZCBXT1BDTS4g Q3VycmVudGx5IHRoaXMgdG9wIGFkZHJlc3MgaXMKLSAqIDUxMksuIEluIG9yZGVyIHRvIGV4Y2x1 ZGUgMC01MTJLIGFkZHJlc3Mgc3BhY2UgZnJvbSBHR1RULCBhbGwgZ2Z4IG9iamVjdHMKLSAqIHVz ZWQgYnkgR3VDIGlzIHBpbm5lZCB3aXRoIFBJTl9PRkZTRVRfQklBUyBhbG9uZyB3aXRoIHNpemUg b2YgV09QQ00uCisgKiBHdUMgZG9lcyBub3QgYWxsb3cgYW55IGdmeCBHR1RUIGFkZHJlc3MgdGhh dCBmYWxscyBpbnRvIHJhbmdlCisgKiBbMCwgR3VDIFdPUENNIHRvcCksIHdoaWNoIGlzIHJlc2Vy dmVkIGZvciBCb290IFJPTSwgU1JBTSBhbmQgV09QQ00uCisgKiBBbGwgZ2Z4IG9iamVjdHMgdXNl ZCBieSBHdUMgaXMgcGlubmVkIHdpdGggUElOX09GRlNFVF9CSUFTIGFsb25nIHdpdGgKKyAqIHRv cCBvZiBXT1BDTS4KICAqCiAgKiBSZXR1cm46IEdHVFQgb2Zmc2V0IHRoYXQgbWVldHMgdGhlIEd1 QyBnZnggYWRkcmVzcyByZXF1aXJlbWVudC4KICAqLwpAQCAtMTE3LDcgKzExOCw4IEBAIHN0YXRp YyBpbmxpbmUgdTMyIGludGVsX2d1Y19nZ3R0X29mZnNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs CiB7CiAJdTMyIG9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKIAotCUdFTV9CVUdfT04o b2Zmc2V0IDwgR1VDX1dPUENNX1RPUCk7CisJR0VNX0JVR19PTighZ3VjLT53b3BjbS52YWxpZCk7 CisJR0VNX0JVR19PTihvZmZzZXQgPCBndWMtPndvcGNtLnRvcCk7CiAJR0VNX0JVR19PTihyYW5n ZV9vdmVyZmxvd3NfdCh1NjQsIG9mZnNldCwgdm1hLT5zaXplLCBHVUNfR0dUVF9UT1ApKTsKIAog CXJldHVybiBvZmZzZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfd29wY20uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5jCmluZGV4 IDg3NjQzYTAuLjYxZmFmOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y193b3BjbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5j CkBAIC0yNSwyMyArMjUsMTA1IEBACiAjaW5jbHVkZSAiaW50ZWxfZ3VjX3dvcGNtLmgiCiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKIAorc3RhdGljIGlubGluZSB1MzIgZ3VjX3Jlc2VydmVkX3dvcGNt X3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKKworCS8qIE9uIEJYVCwgdGhlIHRvcCBvZiBXT1BD TSBpcyByZXNlcnZlZCBmb3IgUkM2IGNvbnRleHQgKi8KKwlpZiAoSVNfR0VOOV9MUChpOTE1KSkK KwkJcmV0dXJuIEJYVF9XT1BDTV9SQzZfUkVTRVJWRUQ7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGlubGluZSBpbnQgZ2VuOV93b2NwbV9zaXplX2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQoreworCXN0cnVjdCBpbnRlbF9ndWNfd29wY20gKndvcGNtID0gJmk5MTUtPmd1 Yy53b3BjbTsKKwl1MzIgd29wY21fYmFzZTsKKwl1MzIgZGVsdGE7CisKKwkvKgorCSAqIENoZWNr IGhhcmR3YXJlIHJlc3RyaWN0aW9uIG9uIEdlbjkKKwkgKiBHdUMgV09QQ00gc2l6ZSBpcyBhdCBs ZWFzdCA0IGJ5dGVzIGxhcmdlciB0aGFuIEd1QyBXT1BDTSBiYXNlIGR1ZQorCSAqIHRvIGhhcmR3 YXJlIGxpbWl0YXRpb24gb24gR2VuOS4KKwkgKi8KKwl3b3BjbV9iYXNlID0gd29wY20tPm9mZnNl dCArIEdFTjlfR1VDX1dPUENNX09GRlNFVDsKKwlpZiAodW5saWtlbHkod29wY21fYmFzZSA+IHdv cGNtLT5zaXplKSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCWRlbHRhID0gd29wY20tPnNpemUgLSB3 b3BjbV9iYXNlOworCWlmICh1bmxpa2VseShkZWx0YSA8IEdFTjlfR1VDX1dPUENNX0RFTFRBKSkK KwkJcmV0dXJuIC1FMkJJRzsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBn dWNfd29wY21fc2l6ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndWNfdG9faTkxNShndWMpOworCisJaWYgKElTX0dFTjko aTkxNSkpCisJCXJldHVybiBnZW45X3dvY3BtX3NpemVfY2hlY2soaTkxNSk7CisKKwlyZXR1cm4g MDsKK30KKwogLyoKLSAqIGludGVsX2d1Y193b3BjbV9zaXplKCkgLSBHZXQgdGhlIHNpemUgb2Yg R3VDIFdPUENNLgorICogaW50ZWxfZ3VjX3dvcGNtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEd1 QyBXT1BDTSBwYXJ0aXRpb24uCiAgKiBAZ3VjOiBpbnRlbCBndWMuCisgKiBAZ3VjX2Z3X3NpemU6 IHNpemUgb2YgR3VDIGZpcm13YXJlLgorICogQGh1Y19md19zaXplOiBzaXplIG9mIEh1QyBmaXJt d2FyZS4KICAqCi0gKiBHZXQgdGhlIHBsYXRmb3JtIHNwZWNpZmljIEd1QyBXT1BDTSBzaXplLgor ICogVGhpcyBmdW5jdGlvbiB0cmllcyB0byBpbml0aWFsaXplIHRoZSBXT1BDTSBwYXJ0aXRpb24g YmFzZWQgb24gSHVDIGZpcm13YXJlCisgKiBzaXplIGFuZCB0aGUgcmVzZXJ2ZWQgV09QQ00gbWVt b3J5IHNpemUuCiAgKgotICogUmV0dXJuOiBzaXplIG9mIHRoZSBHdUMgV09QQ00uCisgKiBSZXR1 cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gZXJyb3IgY29kZSBvbiBmYWlsdXJlLgogICovCi11 MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoraW50IGludGVs X2d1Y19pbml0X3dvcGNtKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGd1Y19md19zaXplLAor CQkJIHUzMiBodWNfZndfc2l6ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGd1Y190b19pOTE1KGd1Yyk7CisJdTMyIHJlc2VydmVkID0gZ3VjX3Jlc2VydmVkX3dvcGNtX3Np emUoZ3VjKTsKKwl1MzIgb2Zmc2V0LCBzaXplLCB0b3A7CisJaW50IGVycjsKIAotCXUzMiB3b3Bj bV9zaXplID0gR1VDX1dPUENNX1RPUDsKKwlpZiAoIWd1Y19md19zaXplKQorCQlyZXR1cm4gLUVJ TlZBTDsKIAotCS8qIE9uIEJYVCwgdGhlIHRvcCBvZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2 IGNvbnRleHQgKi8KLQlpZiAoSVNfR0VOOV9MUChpOTE1KSkKLQkJd29wY21fc2l6ZSAtPSBCWFRf R1VDX1dPUENNX1JDNl9SRVNFUlZFRDsKKwlpZiAocmVzZXJ2ZWQgPj0gV09QQ01fREVGQVVMVF9T SVpFKQorCQlyZXR1cm4gLUUyQklHOworCisJb2Zmc2V0ID0gaHVjX2Z3X3NpemUgKyBXT1BDTV9S RVNFUlZFRF9TSVpFOworCWlmIChvZmZzZXQgPj0gV09QQ01fREVGQVVMVF9TSVpFKQorCQlyZXR1 cm4gLUUyQklHOworCisJLyogSGFyZHdhcmUgcmVxdWlyZXMgR3VDIFdPUENNIG9mZnNldCBuZWVk cyB0byBiZSAxNksgYWxpZ25lZC4gKi8KKwlvZmZzZXQgPSBBTElHTihvZmZzZXQsIFdPUENNX09G RlNFVF9BTElHTk1FTlQpOworCWlmICgob2Zmc2V0ICsgcmVzZXJ2ZWQpID49IFdPUENNX0RFRkFV TFRfU0laRSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCXRvcCA9IFdPUENNX0RFRkFVTFRfU0laRSAt IG9mZnNldDsKKwlzaXplID0gdG9wIC0gcmVzZXJ2ZWQ7CisKKwkvKgorCSAqIEd1QyBzaXplIG5l ZWRzIHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBHdUMgV09QQ00gc2l6ZS4KKwkgKiBOZWVk IGV4dHJhIDhLIHN0YWNrIGZvciBHdUMuCisJICovCisJaWYgKChndWNfZndfc2l6ZSArIEdVQ19X T1BDTV9TVEFDS19SRVNFUlZFRCkgPiBzaXplKQorCQlyZXR1cm4gLUUyQklHOworCisJZ3VjLT53 b3BjbS5vZmZzZXQgPSBvZmZzZXQ7CisJZ3VjLT53b3BjbS5zaXplID0gc2l6ZTsKKwlndWMtPndv cGNtLnRvcCA9IHRvcDsKKworCS8qIENoZWNrIHBsYXRmb3JtIHNwZWNpZmljIHJlc3RyaWN0aW9u cyAqLworCWVyciA9IGd1Y193b3BjbV9zaXplX2NoZWNrKGd1Yyk7CisJaWYgKGVycikKKwkJcmV0 dXJuIGVycjsKKworCWd1Yy0+d29wY20udmFsaWQgPSB0cnVlOworCisJRFJNX0RFQlVHX0RSSVZF UigiR3VDIFdPUENNIG9mZnNldCAlZEtCLCBzaXplICVkS0IsIHRvcCAlZEtCXG4iLAorCQkJIG9m ZnNldCA+PiAxMCwgc2l6ZSA+PiAxMCwgdG9wID4+IDEwKTsKIAotCXJldHVybiB3b3BjbV9zaXpl OworCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX3dvcGNtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfd29wY20uaAppbmRl eCAwNGQ2MWM4Li5jYWJmMDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfd29wY20uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfd29wY20u aApAQCAtMjksMTAgKzI5LDI3IEBACiAKIHN0cnVjdCBpbnRlbF9ndWM7CiAKLS8qIEd1QyBhZGRy ZXNzZXMgYmVsb3cgR1VDX1dPUENNX1RPUCBkb24ndCBtYXAgdGhyb3VnaCB0aGUgR1RUICovCi0j ZGVmaW5lIEdVQ19XT1BDTV9UT1AJCQkgICgweDgwIDw8IDEyKQkvKiA1MTJLQiAqLwotI2RlZmlu ZSBCWFRfR1VDX1dPUENNX1JDNl9SRVNFUlZFRAkgICgweDEwIDw8IDEyKQkvKiA2NEtCICAqLwor LyogRGVmYXVsdCBXT1BDTSBzaXplIDFNQiAqLworI2RlZmluZSBXT1BDTV9ERUZBVUxUX1NJWkUJ CSgweDEgPDwgMjApCisvKiBSZXNlcnZlZCBXT1BDTSBzaXplIDE2S0IgKi8KKyNkZWZpbmUgV09Q Q01fUkVTRVJWRURfU0laRQkJKDB4NDAwMCkKKy8qIEdVQyBXT1BDTSBPZmZzZXQgbmVlZCB0byBi ZSAxNktCIGFsaWduZWQgKi8KKyNkZWZpbmUgV09QQ01fT0ZGU0VUX0FMSUdOTUVOVAkJKDB4NDAw MCkKKy8qIDhLQiBzdGFjayByZXNlcnZlZCBmb3IgR3VDIEZXKi8KKyNkZWZpbmUgR1VDX1dPUENN X1NUQUNLX1JFU0VSVkVECSgweDIwMDApCisvKiAyNEtCIFdPUENNIHJlc2VydmVkIGZvciBSQzYg Q1RYIG9uIEJYVCAqLworI2RlZmluZSBCWFRfV09QQ01fUkM2X1JFU0VSVkVECQkoMHg2MDAwKQog Ci11MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKKyNkZWZp bmUgR0VOOV9HVUNfV09QQ01fREVMVEEJCTQKKyNkZWZpbmUgR0VOOV9HVUNfV09QQ01fT0ZGU0VU CQkoMHgyNDAwMCkKKworc3RydWN0IGludGVsX2d1Y193b3BjbSB7CisJdTMyIG9mZnNldDsKKwl1 MzIgc2l6ZTsKKwl1MzIgdG9wOworCWJvb2wgdmFsaWQ7Cit9OworCitpbnQgaW50ZWxfZ3VjX2lu aXRfd29wY20oc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgZ3VjX3NpemUsIHUzMiBodWNfc2l6 ZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwppbmRleCA2NDgyMTc0Li5kZGEy OTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwpAQCAtMjE3LDcgKzIxNyw3IEBAIGludCBp bnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCiAJCXJldHVybiAtRU5PRVhFQzsK IAogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWMtPmZ3Lm9iaiwgTlVMTCwgMCwg MCwKLQkJCQlQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9QKTsKKwkJCQlQSU5fT0ZGU0VU X0JJQVMgfCBndWMtPndvcGNtLnRvcCk7CiAJaWYgKElTX0VSUih2bWEpKSB7CiAJCXJldCA9IFBU Ul9FUlIodm1hKTsKIAkJRFJNX0VSUk9SKCJIdUM6IEZhaWxlZCB0byBwaW4gaHVjIGZ3IG9iamVj dCAlZFxuIiwgcmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCmluZGV4IDQ0ZGViODAuLjhjNGI4 YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwpAQCAtMTg3LDYgKzE4NywzNyBAQCBzdGF0aWMg dm9pZCBndWNfZGlzYWJsZV9jb21tdW5pY2F0aW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAln dWMtPnNlbmQgPSBpbnRlbF9ndWNfc2VuZF9ub3A7CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxfdWNf d29wY21fcGFydGl0aW9uX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJ c3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmk5MTUtPmd1YzsKKwlzdHJ1Y3QgaW50ZWxfaHVjICpo dWMgPSAmaTkxNS0+aHVjOworCXUzMiBndWNfZndfc2l6ZSA9IGludGVsX3VjX2Z3X2dldF9zaXpl KCZndWMtPmZ3KTsKKwl1MzIgaHVjX2Z3X3NpemUgPSBpbnRlbF91Y19md19nZXRfc2l6ZSgmaHVj LT5mdyk7CisJaW50IGVycjsKKworCWlmIChndWMtPndvcGNtLnZhbGlkKQorCQlyZXR1cm4gMDsK KworCWVyciA9IGludGVsX2d1Y19pbml0X3dvcGNtKGd1YywgZ3VjX2Z3X3NpemUsIGh1Y19md19z aXplKTsKKwlpZiAoZXJyKSB7CisJCWlmICghaHVjX2Z3X3NpemUpCisJCQlyZXR1cm4gZXJyOwor CisJCWh1Y19md19zaXplID0gMDsKKworCQkvKiBUcnkgdG8gZW5hYmxlIEd1QyBvbmx5ICovCisJ CWVyciA9IGludGVsX2d1Y19pbml0X3dvcGNtKGd1YywgZ3VjX2Z3X3NpemUsIDApOworCQlpZiAo ZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwkvKiBQYXJ0aXRpb25pbmcgc3VjY2VlZCB3aXRo b3V0IEh1QyAqLworCWlmICghaHVjX2Z3X3NpemUpCisJCWludGVsX3VjX2Z3X2ZpbmkoJmh1Yy0+ ZncpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2 X3ByaXYtPmd1YzsKQEAgLTIwMSw2ICsyMzIsMTAgQEAgaW50IGludGVsX3VjX2luaXRfaHcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlnb3RvIGVycl9vdXQ7CiAJfQogCisJ cmV0ID0gaW50ZWxfdWNfd29wY21fcGFydGl0aW9uX2luaXQoZGV2X3ByaXYpOworCWlmIChyZXQp CisJCWdvdG8gZXJyX291dDsKKwogCWd1Y19kaXNhYmxlX2NvbW11bmljYXRpb24oZ3VjKTsKIAln ZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKIApAQCAtMjE4LDkgKzI1Myw5IEBA IGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAl9CiAKIAkvKiBpbml0IFdPUENNICovCi0JSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgaW50 ZWxfZ3VjX3dvcGNtX3NpemUoZ3VjKSk7CisJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgZ3Vj LT53b3BjbS5zaXplKTsKIAlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULAotCQkgICBH VUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHwgSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKKwkJICAgZ3Vj LT53b3BjbS5vZmZzZXQgfCBIVUNfTE9BRElOR19BR0VOVF9HVUMpOwogCiAJLyogV2FFbmFibGV1 S2VybmVsSGVhZGVyVmFsaWRGaXg6c2tsICovCiAJLyogV2FFbmFibGVHdUNCb290SGFzaENoZWNr Tm90U2V0OnNrbCxieHQsa2JsICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwppbmRleCAy NDk0NWNmLi43OTEyNjNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Y19mdy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMKQEAgLTk1LDkg Kzk1LDEzIEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCXVjX2Z3LT51Y29kZV9vZmZzZXQgPSB1Y19mdy0+aGVhZGVyX29mZnNldCAr IHVjX2Z3LT5oZWFkZXJfc2l6ZTsKIAl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcg LSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCi0JLyogSGVhZGVyIGFuZCB1 Q29kZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BDTSAqLworCS8qCisJICogSGVhZGVyIGFuZCB1Q29k ZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BDTQorCSAqIE9ubHkgY2hlY2sgdGhlIHNpemUgYWdhaW5z dCB0aGUgb3ZlcmFsbCBhdmFpbGFibGUgV09QQ00gaGVyZS4gV2lsbAorCSAqIGNvbnRpbnVlIHRv IGNoZWNrIHRoZSBzaXplIGR1cmluZyBXT1BDTSBwYXJ0aXRpb24gY2FsY3VsYXRpb24uCisJICov CiAJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwotCWlmIChz aXplID4gaW50ZWxfZ3VjX3dvcGNtX3NpemUoJmRldl9wcml2LT5ndWMpKSB7CisJaWYgKHNpemUg PiBXT1BDTV9ERUZBVUxUX1NJWkUpIHsKIAkJRFJNX1dBUk4oIiVzOiBGaXJtd2FyZSBpcyB0b28g bGFyZ2UgdG8gZml0IGluIFdPUENNXG4iLAogCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19m dy0+dHlwZSkpOwogCQllcnIgPSAtRTJCSUc7CkBAIC0yMDcsNiArMjExLDcgQEAgaW50IGludGVs X3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCQkgICAgICAgaW50ICgq eGZlcikoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAkJCQkgICBzdHJ1Y3QgaTkxNV92bWEg KnZtYSkpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHVjX2Z3 LT5vYmotPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgZXJyOwogCkBA IC0yMzAsNyArMjM1LDcgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNf ZncgKnVjX2Z3LAogCX0KIAogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbih1Y19mdy0+ b2JqLCBOVUxMLCAwLCAwLAotCQkJCSAgICAgICBQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01f VE9QKTsKKwkJCQkgICAgICAgUElOX09GRlNFVF9CSUFTIHwgaTkxNS0+Z3VjLndvcGNtLnRvcCk7 CiAJaWYgKElTX0VSUih2bWEpKSB7CiAJCWVyciA9IFBUUl9FUlIodm1hKTsKIAkJRFJNX0RFQlVH X0RSSVZFUigiJXMgZncgZ2d0dC1waW4gZXJyPSVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vj X2Z3LmgKaW5kZXggZDVmZDQ2MC4uZDAwZDg4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdWNfZncuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19m dy5oCkBAIC0xMTUsNiArMTE1LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19p c19zZWxlY3RlZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogCXJldHVybiB1Y19mdy0+cGF0 aCAhPSBOVUxMOwogfQogCisvKgorICogaW50ZWxfdWNfZndfZ2V0X3NpemUoKSAtIEdldCB0aGUg c2l6ZSBvZiB0aGUgZmlybXdhcmUuCisgKiBAdWNfZnc6IGludGVsX3VjX2Z3IHN0cnVjdHVyZS4K KyAqCisgKiBHZXQgdGhlIHNpemUgb2YgdGhlIGZpcm13YXJlIHRoYXQgd2lsbCBiZSBwbGFjZWQg aW4gV09QQ00uCisgKgorICogUmV0dXJuOiBaZXJvIG9uIGludmFsaWQgZmlybXdhcmUgc3RhdHVz LiBhY3R1YWwgc2l6ZSBvbiBzdWNjZXNzLgorICovCitzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF91 Y19md19nZXRfc2l6ZShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQoreworCWlmICh1Y19mdy0+ ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJCXJldHVybiAwOwor CisJcmV0dXJuIHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOworfQorCiB2 b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJICAgICAgIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwogaW50IGludGVsX3VjX2Z3X3Vw bG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAotLSAKMi43LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=