From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Francis Subject: [PATCH 1/3] drm/i915: Move dsc rate params compute into drm Date: Wed, 13 Feb 2019 09:45:34 -0500 Message-ID: <20190213144536.21661-2-David.Francis@amd.com> References: <20190213144536.21661-1-David.Francis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190213144536.21661-1-David.Francis-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nikola.cornij-5C7GfCeVMHo@public.gmane.org, manasi.d.navare-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, harry.wentland-5C7GfCeVMHo@public.gmane.org, David Francis VGhlIGZ1bmN0aW9uIGludGVsX2NvbXB1dGVfcmNfcGFyYW1ldGVycyBpcyBwYXJ0IG9mIHRoZSBk c2Mgc3BlYwphbmQgaXMgbm90IGRyaXZlci1zcGVjaWZpYy4gT3RoZXIgZHJtIGRyaXZlcnMgbWln aHQgbGlrZSB0byB1c2UKaXQuICBUaGUgZnVuY3Rpb24gaXMgbm90IGNoYW5nZWQ7IGp1c3QgbW92 ZWQgYW5kIHJlbmFtZWQuCgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBGcmFuY2lzIDxEYXZpZC5GcmFu Y2lzQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9kc2MuYyAgICAgICAgIHwgMTMz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdmRzYy5jIHwgMTI1ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvZHJt L2RybV9kc2MuaCAgICAgICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDEzNSBpbnNl cnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9kc2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHNjLmMKaW5kZXggYmMyYjIzYWRiMDcy Li40YjBlM2M5YzNmZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHNjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kc2MuYwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUg PGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4 L2J5dGVvcmRlci9nZW5lcmljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgogI2luY2x1 ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kc2MuaD4KIApAQCAt MjI2LDMgKzIyNywxMzUgQEAgdm9pZCBkcm1fZHNjX3Bwc19pbmZvZnJhbWVfcGFjayhzdHJ1Y3Qg ZHJtX2RzY19wcHNfaW5mb2ZyYW1lICpwcHNfc2RwLAogCS8qIFBQUyA5NCAtIDEyNyBhcmUgTyAq LwogfQogRVhQT1JUX1NZTUJPTChkcm1fZHNjX3Bwc19pbmZvZnJhbWVfcGFjayk7CisKKy8qKgor ICogZHJtX2RzY19jb21wdXRlX3JjX3BhcmFtZXRlcnMoKSAtIFdyaXRlIHJhdGUgY29udHJvbAor ICogcGFyYW1ldGVycyB0byB0aGUgZHNjIGNvbmZpZ3VyYXRpb24uIFNvbWUgY29uZmlndXJhdGlv bgorICogZmllbGRzIG11c3QgYmUgcHJlc2VudCBiZWZvcmVoYW5kLgorICoKKyAqIEBkc2NfY2Zn OgorICogRFNDIENvbmZpZ3VyYXRpb24gZGF0YSBwYXJ0aWFsbHkgZmlsbGVkIGJ5IGRyaXZlcgor ICovCitpbnQgZHJtX2RzY19jb21wdXRlX3JjX3BhcmFtZXRlcnMoc3RydWN0IGRybV9kc2NfY29u ZmlnICp2ZHNjX2NmZykKK3sKKwl1bnNpZ25lZCBsb25nIGdyb3Vwc19wZXJfbGluZSA9IDA7CisJ dW5zaWduZWQgbG9uZyBncm91cHNfdG90YWwgPSAwOworCXVuc2lnbmVkIGxvbmcgbnVtX2V4dHJh X211eF9iaXRzID0gMDsKKwl1bnNpZ25lZCBsb25nIHNsaWNlX2JpdHMgPSAwOworCXVuc2lnbmVk IGxvbmcgaHJkX2RlbGF5ID0gMDsKKwl1bnNpZ25lZCBsb25nIGZpbmFsX3NjYWxlID0gMDsKKwl1 bnNpZ25lZCBsb25nIHJic19taW4gPSAwOworCisJLyogTnVtYmVyIG9mIGdyb3VwcyB1c2VkIHRv IGNvZGUgZWFjaCBsaW5lIG9mIGEgc2xpY2UgKi8KKwlncm91cHNfcGVyX2xpbmUgPSBESVZfUk9V TkRfVVAodmRzY19jZmctPnNsaWNlX3dpZHRoLAorCQkJCSAgICAgICBEU0NfUkNfUElYRUxTX1BF Ul9HUk9VUCk7CisKKwkvKiBjaHVua3NpemUgaW4gQnl0ZXMgKi8KKwl2ZHNjX2NmZy0+c2xpY2Vf Y2h1bmtfc2l6ZSA9IERJVl9ST1VORF9VUCh2ZHNjX2NmZy0+c2xpY2Vfd2lkdGggKgorCQkJCQkJ ICB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwsCisJCQkJCQkgICg4ICogMTYpKTsKKworCWlmICh2 ZHNjX2NmZy0+Y29udmVydF9yZ2IpCisJCW51bV9leHRyYV9tdXhfYml0cyA9IDMgKiAodmRzY19j ZmctPm11eF93b3JkX3NpemUgKworCQkJCQkgICg0ICogdmRzY19jZmctPmJpdHNfcGVyX2NvbXBv bmVudCArIDQpCisJCQkJCSAgLSAyKTsKKwllbHNlCisJCW51bV9leHRyYV9tdXhfYml0cyA9IDMg KiB2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSArCisJCQkoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9j b21wb25lbnQgKyA0KSArCisJCQkyICogKDQgKiB2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50 KSAtIDI7CisJLyogTnVtYmVyIG9mIGJpdHMgaW4gb25lIFNsaWNlICovCisJc2xpY2VfYml0cyA9 IDggKiB2ZHNjX2NmZy0+c2xpY2VfY2h1bmtfc2l6ZSAqIHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQ7 CisKKwl3aGlsZSAoKG51bV9leHRyYV9tdXhfYml0cyA+IDApICYmCisJICAgICAgICgoc2xpY2Vf Yml0cyAtIG51bV9leHRyYV9tdXhfYml0cykgJSB2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSkpCisJ CW51bV9leHRyYV9tdXhfYml0cy0tOworCisJaWYgKGdyb3Vwc19wZXJfbGluZSA8IHZkc2NfY2Zn LT5pbml0aWFsX3NjYWxlX3ZhbHVlIC0gOCkKKwkJdmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFs dWUgPSBncm91cHNfcGVyX2xpbmUgKyA4OworCisJLyogc2NhbGVfZGVjcmVtZW50X2ludGVydmFs IGNhbGN1bGF0aW9uIGFjY29yZGluZyB0byBEU0Mgc3BlYyAxLjExICovCisJaWYgKHZkc2NfY2Zn LT5pbml0aWFsX3NjYWxlX3ZhbHVlID4gOCkKKwkJdmRzY19jZmctPnNjYWxlX2RlY3JlbWVudF9p bnRlcnZhbCA9IGdyb3Vwc19wZXJfbGluZSAvCisJCQkodmRzY19jZmctPmluaXRpYWxfc2NhbGVf dmFsdWUgLSA4KTsKKwllbHNlCisJCXZkc2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwg PSBEU0NfU0NBTEVfREVDUkVNRU5UX0lOVEVSVkFMX01BWDsKKworCXZkc2NfY2ZnLT5maW5hbF9v ZmZzZXQgPSB2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSAtCisJCSh2ZHNjX2NmZy0+aW5pdGlhbF94 bWl0X2RlbGF5ICoKKwkJIHZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCArIDgpIC8gMTYgKyBudW1f ZXh0cmFfbXV4X2JpdHM7CisKKwlpZiAodmRzY19jZmctPmZpbmFsX29mZnNldCA+PSB2ZHNjX2Nm Zy0+cmNfbW9kZWxfc2l6ZSkgeworCQlEUk1fREVCVUdfS01TKCJGaW5hbE9mcyA8IFJjTW9kZWxT emUgZm9yIHRoaXMgSW5pdGlhbFhtaXREZWxheVxuIik7CisJCXJldHVybiAtRVJBTkdFOworCX0K KworCWZpbmFsX3NjYWxlID0gKHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplICogOCkgLworCQkodmRz Y19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0KTsKKwlpZiAodmRz Y19jZmctPnNsaWNlX2hlaWdodCA+IDEpCisJCS8qCisJCSAqIE5mbEJwZ09mZnNldCBpcyAxNiBi aXQgdmFsdWUgd2l0aCAxMSBmcmFjdGlvbmFsIGJpdHMKKwkJICogaGVuY2Ugd2UgbXVsdGlwbHkg YnkgMl4xMSBmb3IgcHJlc2VydmluZyB0aGUKKwkJICogZnJhY3Rpb25hbCBwYXJ0CisJCSAqLwor CQl2ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQgPSBESVZfUk9VTkRfVVAoKHZkc2NfY2ZnLT5maXJz dF9saW5lX2JwZ19vZmZzZXQgPDwgMTEpLAorCQkJCQkJCSh2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0 IC0gMSkpOworCWVsc2UKKwkJdmRzY19jZmctPm5mbF9icGdfb2Zmc2V0ID0gMDsKKworCS8qIDJe MTYgLSAxICovCisJaWYgKHZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCA+IDY1NTM1KSB7CisJCURS TV9ERUJVR19LTVMoIk5mbEJwZ09mZnNldCBpcyB0b28gbGFyZ2UgZm9yIHRoaXMgc2xpY2UgaGVp Z2h0XG4iKTsKKwkJcmV0dXJuIC1FUkFOR0U7CisJfQorCisJLyogTnVtYmVyIG9mIGdyb3VwcyB1 c2VkIHRvIGNvZGUgdGhlIGVudGlyZSBzbGljZSAqLworCWdyb3Vwc190b3RhbCA9IGdyb3Vwc19w ZXJfbGluZSAqIHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQ7CisKKwkvKiBzbGljZV9icGdfb2Zmc2V0 IGlzIDE2IGJpdCB2YWx1ZSB3aXRoIDExIGZyYWN0aW9uYWwgYml0cyAqLworCXZkc2NfY2ZnLT5z bGljZV9icGdfb2Zmc2V0ID0gRElWX1JPVU5EX1VQKCgodmRzY19jZmctPnJjX21vZGVsX3NpemUg LQorCQkJCQkJICAgIHZkc2NfY2ZnLT5pbml0aWFsX29mZnNldCArCisJCQkJCQkgICAgbnVtX2V4 dHJhX211eF9iaXRzKSA8PCAxMSksCisJCQkJCQkgIGdyb3Vwc190b3RhbCk7CisKKwlpZiAoZmlu YWxfc2NhbGUgPiA5KSB7CisJCS8qCisJCSAqIFNjYWxlSW5jcmVtZW50SW50ZXJ2YWwgPQorCQkg KiBmaW5hbG9mZnNldC8oKE5mbEJwZ09mZnNldCArIFNsaWNlQnBnT2Zmc2V0KSo4KGZpbmFsc2Nh bGUgLSAxLjEyNSkpCisJCSAqIGFzIChOZmxCcGdPZmZzZXQgKyBTbGljZUJwZ09mZnNldCkgaGFz IDExIGJpdCBmcmFjdGlvbmFsIHZhbHVlLAorCQkgKiB3ZSBuZWVkIGRpdmlkZSBieSAyXjExIGZy b20gcHN0RHNjQ2ZnIHZhbHVlcworCQkgKi8KKwkJdmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9p bnRlcnZhbCA9CisJCQkJKHZkc2NfY2ZnLT5maW5hbF9vZmZzZXQgKiAoMSA8PCAxMSkpIC8KKwkJ CQkoKHZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCArCisJCQkJdmRzY19jZmctPnNsaWNlX2JwZ19v ZmZzZXQpICoKKwkJCQkoZmluYWxfc2NhbGUgLSA5KSk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICog SWYgZmluYWxTY2FsZVZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA5LCBhIHZhbHVlIG9m IDAgc2hvdWxkCisJCSAqIGJlIHVzZWQgdG8gZGlzYWJsZSB0aGUgc2NhbGUgaW5jcmVtZW50IGF0 IHRoZSBlbmQgb2YgdGhlIHNsaWNlCisJCSAqLworCQl2ZHNjX2NmZy0+c2NhbGVfaW5jcmVtZW50 X2ludGVydmFsID0gMDsKKwl9CisKKwlpZiAodmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRl cnZhbCA+IDY1NTM1KSB7CisJCURSTV9ERUJVR19LTVMoIlNjYWxlSW5jcmVtZW50SW50ZXJ2YWwg aXMgbGFyZ2UgZm9yIHNsaWNlIGhlaWdodFxuIik7CisJCXJldHVybiAtRVJBTkdFOworCX0KKwor CS8qCisJICogRFNDIHNwZWMgbWVudGlvbnMgdGhhdCBiaXRzX3Blcl9waXhlbCBzcGVjaWZpZXMg dGhlIHRhcmdldAorCSAqIGJpdHMvcGl4ZWwgKGJwcCkgcmF0ZSB0aGF0IGlzIHVzZWQgYnkgdGhl IGVuY29kZXIsCisJICogaW4gc3RlcHMgb2YgMS8xNiBvZiBhIGJpdCBwZXIgcGl4ZWwKKwkgKi8K KwlyYnNfbWluID0gdmRzY19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9v ZmZzZXQgKworCQlESVZfUk9VTkRfVVAodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSAqCisJ CQkgICAgIHZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCwgMTYpICsKKwkJZ3JvdXBzX3Blcl9saW5l ICogdmRzY19jZmctPmZpcnN0X2xpbmVfYnBnX29mZnNldDsKKworCWhyZF9kZWxheSA9IERJVl9S T1VORF9VUCgocmJzX21pbiAqIDE2KSwgdmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKKwl2ZHNj X2NmZy0+cmNfYml0cyA9IChocmRfZGVsYXkgKiB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwpIC8g MTY7CisJdmRzY19jZmctPmluaXRpYWxfZGVjX2RlbGF5ID0gaHJkX2RlbGF5IC0gdmRzY19jZmct PmluaXRpYWxfeG1pdF9kZWxheTsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1f ZHNjX2NvbXB1dGVfcmNfcGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKaW5k ZXggYzU2YmEwZTA0MDQ0Li5jNzZjZWM4YmZiNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Zkc2MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNj LmMKQEAgLTMxOCwxMjkgKzMxOCw2IEBAIHN0YXRpYyBpbnQgZ2V0X2NvbHVtbl9pbmRleF9mb3Jf cmNfcGFyYW1zKHU4IGJpdHNfcGVyX2NvbXBvbmVudCkKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaW50 ZWxfY29tcHV0ZV9yY19wYXJhbWV0ZXJzKHN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcp Ci17Ci0JdW5zaWduZWQgbG9uZyBncm91cHNfcGVyX2xpbmUgPSAwOwotCXVuc2lnbmVkIGxvbmcg Z3JvdXBzX3RvdGFsID0gMDsKLQl1bnNpZ25lZCBsb25nIG51bV9leHRyYV9tdXhfYml0cyA9IDA7 Ci0JdW5zaWduZWQgbG9uZyBzbGljZV9iaXRzID0gMDsKLQl1bnNpZ25lZCBsb25nIGhyZF9kZWxh eSA9IDA7Ci0JdW5zaWduZWQgbG9uZyBmaW5hbF9zY2FsZSA9IDA7Ci0JdW5zaWduZWQgbG9uZyBy YnNfbWluID0gMDsKLQotCS8qIE51bWJlciBvZiBncm91cHMgdXNlZCB0byBjb2RlIGVhY2ggbGlu ZSBvZiBhIHNsaWNlICovCi0JZ3JvdXBzX3Blcl9saW5lID0gRElWX1JPVU5EX1VQKHZkc2NfY2Zn LT5zbGljZV93aWR0aCwKLQkJCQkgICAgICAgRFNDX1JDX1BJWEVMU19QRVJfR1JPVVApOwotCi0J LyogY2h1bmtzaXplIGluIEJ5dGVzICovCi0JdmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUgPSBE SVZfUk9VTkRfVVAodmRzY19jZmctPnNsaWNlX3dpZHRoICoKLQkJCQkJCSAgdmRzY19jZmctPmJp dHNfcGVyX3BpeGVsLAotCQkJCQkJICAoOCAqIDE2KSk7Ci0KLQlpZiAodmRzY19jZmctPmNvbnZl cnRfcmdiKQotCQludW1fZXh0cmFfbXV4X2JpdHMgPSAzICogKHZkc2NfY2ZnLT5tdXhfd29yZF9z aXplICsKLQkJCQkJICAoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgKyA0KQotCQkJ CQkgIC0gMik7Ci0JZWxzZQotCQludW1fZXh0cmFfbXV4X2JpdHMgPSAzICogdmRzY19jZmctPm11 eF93b3JkX3NpemUgKwotCQkJKDQgKiB2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ICsgNCkg KwotCQkJMiAqICg0ICogdmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCkgLSAyOwotCS8qIE51 bWJlciBvZiBiaXRzIGluIG9uZSBTbGljZSAqLwotCXNsaWNlX2JpdHMgPSA4ICogdmRzY19jZmct PnNsaWNlX2NodW5rX3NpemUgKiB2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0OwotCi0Jd2hpbGUgKChu dW1fZXh0cmFfbXV4X2JpdHMgPiAwKSAmJgotCSAgICAgICAoKHNsaWNlX2JpdHMgLSBudW1fZXh0 cmFfbXV4X2JpdHMpICUgdmRzY19jZmctPm11eF93b3JkX3NpemUpKQotCQludW1fZXh0cmFfbXV4 X2JpdHMtLTsKLQotCWlmIChncm91cHNfcGVyX2xpbmUgPCB2ZHNjX2NmZy0+aW5pdGlhbF9zY2Fs ZV92YWx1ZSAtIDgpCi0JCXZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlID0gZ3JvdXBzX3Bl cl9saW5lICsgODsKLQotCS8qIHNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCBjYWxjdWxhdGlvbiBh Y2NvcmRpbmcgdG8gRFNDIHNwZWMgMS4xMSAqLwotCWlmICh2ZHNjX2NmZy0+aW5pdGlhbF9zY2Fs ZV92YWx1ZSA+IDgpCi0JCXZkc2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwgPSBncm91 cHNfcGVyX2xpbmUgLwotCQkJKHZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlIC0gOCk7Ci0J ZWxzZQotCQl2ZHNjX2NmZy0+c2NhbGVfZGVjcmVtZW50X2ludGVydmFsID0gRFNDX1NDQUxFX0RF Q1JFTUVOVF9JTlRFUlZBTF9NQVg7Ci0KLQl2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0ID0gdmRzY19j ZmctPnJjX21vZGVsX3NpemUgLQotCQkodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSAqCi0J CSB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwgKyA4KSAvIDE2ICsgbnVtX2V4dHJhX211eF9iaXRz OwotCi0JaWYgKHZkc2NfY2ZnLT5maW5hbF9vZmZzZXQgPj0gdmRzY19jZmctPnJjX21vZGVsX3Np emUpIHsKLQkJRFJNX0RFQlVHX0tNUygiRmluYWxPZnMgPCBSY01vZGVsU3plIGZvciB0aGlzIElu aXRpYWxYbWl0RGVsYXlcbiIpOwotCQlyZXR1cm4gLUVSQU5HRTsKLQl9Ci0KLQlmaW5hbF9zY2Fs ZSA9ICh2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSAqIDgpIC8KLQkJKHZkc2NfY2ZnLT5yY19tb2Rl bF9zaXplIC0gdmRzY19jZmctPmZpbmFsX29mZnNldCk7Ci0JaWYgKHZkc2NfY2ZnLT5zbGljZV9o ZWlnaHQgPiAxKQotCQkvKgotCQkgKiBOZmxCcGdPZmZzZXQgaXMgMTYgYml0IHZhbHVlIHdpdGgg MTEgZnJhY3Rpb25hbCBiaXRzCi0JCSAqIGhlbmNlIHdlIG11bHRpcGx5IGJ5IDJeMTEgZm9yIHBy ZXNlcnZpbmcgdGhlCi0JCSAqIGZyYWN0aW9uYWwgcGFydAotCQkgKi8KLQkJdmRzY19jZmctPm5m bF9icGdfb2Zmc2V0ID0gRElWX1JPVU5EX1VQKCh2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zm c2V0IDw8IDExKSwKLQkJCQkJCQkodmRzY19jZmctPnNsaWNlX2hlaWdodCAtIDEpKTsKLQllbHNl Ci0JCXZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCA9IDA7Ci0KLQkvKiAyXjE2IC0gMSAqLwotCWlm ICh2ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQgPiA2NTUzNSkgewotCQlEUk1fREVCVUdfS01TKCJO ZmxCcGdPZmZzZXQgaXMgdG9vIGxhcmdlIGZvciB0aGlzIHNsaWNlIGhlaWdodFxuIik7Ci0JCXJl dHVybiAtRVJBTkdFOwotCX0KLQotCS8qIE51bWJlciBvZiBncm91cHMgdXNlZCB0byBjb2RlIHRo ZSBlbnRpcmUgc2xpY2UgKi8KLQlncm91cHNfdG90YWwgPSBncm91cHNfcGVyX2xpbmUgKiB2ZHNj X2NmZy0+c2xpY2VfaGVpZ2h0OwotCi0JLyogc2xpY2VfYnBnX29mZnNldCBpcyAxNiBiaXQgdmFs dWUgd2l0aCAxMSBmcmFjdGlvbmFsIGJpdHMgKi8KLQl2ZHNjX2NmZy0+c2xpY2VfYnBnX29mZnNl dCA9IERJVl9ST1VORF9VUCgoKHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIC0KLQkJCQkJCSAgICB2 ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQgKwotCQkJCQkJICAgIG51bV9leHRyYV9tdXhfYml0cykg PDwgMTEpLAotCQkJCQkJICBncm91cHNfdG90YWwpOwotCi0JaWYgKGZpbmFsX3NjYWxlID4gOSkg ewotCQkvKgotCQkgKiBTY2FsZUluY3JlbWVudEludGVydmFsID0KLQkJICogZmluYWxvZmZzZXQv KChOZmxCcGdPZmZzZXQgKyBTbGljZUJwZ09mZnNldCkqOChmaW5hbHNjYWxlIC0gMS4xMjUpKQot CQkgKiBhcyAoTmZsQnBnT2Zmc2V0ICsgU2xpY2VCcGdPZmZzZXQpIGhhcyAxMSBiaXQgZnJhY3Rp b25hbCB2YWx1ZSwKLQkJICogd2UgbmVlZCBkaXZpZGUgYnkgMl4xMSBmcm9tIHBzdERzY0NmZyB2 YWx1ZXMKLQkJICovCi0JCXZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwgPQotCQkJ CSh2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0ICogKDEgPDwgMTEpKSAvCi0JCQkJKCh2ZHNjX2NmZy0+ bmZsX2JwZ19vZmZzZXQgKwotCQkJCXZkc2NfY2ZnLT5zbGljZV9icGdfb2Zmc2V0KSAqCi0JCQkJ KGZpbmFsX3NjYWxlIC0gOSkpOwotCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIElmIGZpbmFsU2NhbGVW YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gOSwgYSB2YWx1ZSBvZiAwIHNob3VsZAotCQkg KiBiZSB1c2VkIHRvIGRpc2FibGUgdGhlIHNjYWxlIGluY3JlbWVudCBhdCB0aGUgZW5kIG9mIHRo ZSBzbGljZQotCQkgKi8KLQkJdmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZhbCA9IDA7 Ci0JfQotCi0JaWYgKHZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwgPiA2NTUzNSkg ewotCQlEUk1fREVCVUdfS01TKCJTY2FsZUluY3JlbWVudEludGVydmFsIGlzIGxhcmdlIGZvciBz bGljZSBoZWlnaHRcbiIpOwotCQlyZXR1cm4gLUVSQU5HRTsKLQl9Ci0KLQkvKgotCSAqIERTQyBz cGVjIG1lbnRpb25zIHRoYXQgYml0c19wZXJfcGl4ZWwgc3BlY2lmaWVzIHRoZSB0YXJnZXQKLQkg KiBiaXRzL3BpeGVsIChicHApIHJhdGUgdGhhdCBpcyB1c2VkIGJ5IHRoZSBlbmNvZGVyLAotCSAq IGluIHN0ZXBzIG9mIDEvMTYgb2YgYSBiaXQgcGVyIHBpeGVsCi0JICovCi0JcmJzX21pbiA9IHZk c2NfY2ZnLT5yY19tb2RlbF9zaXplIC0gdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ICsKLQkJRElW X1JPVU5EX1VQKHZkc2NfY2ZnLT5pbml0aWFsX3htaXRfZGVsYXkgKgotCQkJICAgICB2ZHNjX2Nm Zy0+Yml0c19wZXJfcGl4ZWwsIDE2KSArCi0JCWdyb3Vwc19wZXJfbGluZSAqIHZkc2NfY2ZnLT5m aXJzdF9saW5lX2JwZ19vZmZzZXQ7Ci0KLQlocmRfZGVsYXkgPSBESVZfUk9VTkRfVVAoKHJic19t aW4gKiAxNiksIHZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCk7Ci0JdmRzY19jZmctPnJjX2JpdHMg PSAoaHJkX2RlbGF5ICogdmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKSAvIDE2OwotCXZkc2NfY2Zn LT5pbml0aWFsX2RlY19kZWxheSA9IGhyZF9kZWxheSAtIHZkc2NfY2ZnLT5pbml0aWFsX3htaXRf ZGVsYXk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFt cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZykKIHsKQEAgLTU3NSw3ICs0NTIsNyBAQCBpbnQgaW50ZWxfZHBfY29tcHV0 ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJdmRzY19jZmctPmluaXRp YWxfc2NhbGVfdmFsdWUgPSAodmRzY19jZmctPnJjX21vZGVsX3NpemUgPDwgMykgLwogCQkodmRz Y19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOwogCi0JcmV0 dXJuIGludGVsX2NvbXB1dGVfcmNfcGFyYW1ldGVycyh2ZHNjX2NmZyk7CisJcmV0dXJuIGRybV9k c2NfY29tcHV0ZV9yY19wYXJhbWV0ZXJzKHZkc2NfY2ZnKTsKIH0KIAogZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RzYy5oIGIvaW5j bHVkZS9kcm0vZHJtX2RzYy5oCmluZGV4IGQwM2YxYjgzNDIxYS4uYWQ0MzQ5NGYxY2M4IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZHNjLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RzYy5o CkBAIC00ODEsNSArNDgxLDYgQEAgc3RydWN0IGRybV9kc2NfcHBzX2luZm9mcmFtZSB7CiB2b2lk IGRybV9kc2NfZHBfcHBzX2hlYWRlcl9pbml0KHN0cnVjdCBkcm1fZHNjX3Bwc19pbmZvZnJhbWUg KnBwc19zZHApOwogdm9pZCBkcm1fZHNjX3Bwc19pbmZvZnJhbWVfcGFjayhzdHJ1Y3QgZHJtX2Rz Y19wcHNfaW5mb2ZyYW1lICpwcHNfc2RwLAogCQkJCWNvbnN0IHN0cnVjdCBkcm1fZHNjX2NvbmZp ZyAqZHNjX2NmZyk7CitpbnQgZHJtX2RzY19jb21wdXRlX3JjX3BhcmFtZXRlcnMoc3RydWN0IGRy bV9kc2NfY29uZmlnICp2ZHNjX2NmZyk7CiAKICNlbmRpZiAvKiBfRFJNX0RTQ19IXyAqLwotLSAK Mi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwph bWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=