From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 49/49] drm/amd/display: Load NV12 SOC BB from firmware Date: Fri, 9 Aug 2019 17:37:42 -0400 Message-ID: <20190809213742.30301-50-sunpeng.li@amd.com> References: <20190809213742.30301-1-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809213742.30301-1-sunpeng.li-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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Leo Li , Hersen Wu RnJvbTogTGVvIExpIDxzdW5wZW5nLmxpQGFtZC5jb20+CgpbV2h5XQoKUHJldmlvdXMgU09DIGJv dW5kaW5nIGJveCBmaXJtd2FyZSBsb2FkaW5nIGxvZ2ljIHdhcyBmb3IgTlYxMCwgd2hlbiB3ZQpz dGlsbCBoYWQgaXQgaW4gZmlybXdhcmUuIE5vdyB0aGF0IGl0J3MgYnJvdWdodCBpbnRvIGRyaXZl ciBjb2RlLCBhbmQKTlYxMiBCQiBpcyBpbiBmaXJtd2FyZSwgdGhpcyBsb2dpYyBuZWVkcyB0byBi ZSByZXB1cnBvc2VkIGZvciBOVjEyLgoKW0hvd10KClNldCBTT0NfQk9VTkRJTkdfQk9YX1ZBTElE IHRvIGZhbHNlLCBhbmQgYWRkIHRoZSBkY25fMl8wX252MTJfc29jIEJCCnN0cnVjdC4gSW4gaW5p dF9zb2NfYm91bmRpbmdfYm94LCBsb2FkIGZpcm13YXJlIHRvIG52MTIgQkIgaW5zdGVhZC4KCklu IGFkZGl0aW9uLCBjb25kaXRpb25hbGx5IHVwZGF0ZSBhbmQgcGF0Y2ggdGhlIEJCLCBkZXBlbmRp bmcgb24gQVNJQwpSRVYuCgpTaWduZWQtb2ZmLWJ5OiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNv bT4KUmV2aWV3ZWQtYnk6IEhlcnNlbiBXdSA8aGVyc2VueHMud3VAYW1kLmNvbT4KLS0tCiAuLi4v ZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNlLmMgfCAxNTYgKysrKysrKysr KystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2Rj bjIwX3Jlc291cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNu MjBfcmVzb3VyY2UuYwppbmRleCBiZTY2MzhjZDM3M2QuLmM3MDk5OWM2YmI5MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNlLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNl LmMKQEAgLTgwLDcgKzgwLDggQEAKIAogI2luY2x1ZGUgImFtZGdwdV9zb2NiYi5oIgogCi0jZGVm aW5lIFNPQ19CT1VORElOR19CT1hfVkFMSUQgdHJ1ZQorLyogTlYxMiBTT0MgQkIgaXMgY3VycmVu dGx5IGluIEZXLCBtYXJrIFNXIGJvdW5kaW5nIGJveCBpbnZhbGlkLiAqLworI2RlZmluZSBTT0Nf Qk9VTkRJTkdfQk9YX1ZBTElEIGZhbHNlCiAjZGVmaW5lIERDX0xPR0dFUl9JTklUKGxvZ2dlcikK IAogc3RydWN0IF92Y3NfZHBpX2lwX3BhcmFtc19zdCBkY24yXzBfaXAgPSB7CkBAIC0yNjYsNiAr MjY3LDcgQEAgc3RydWN0IF92Y3NfZHBpX3NvY19ib3VuZGluZ19ib3hfc3QgZGNuMl8wX3NvYyA9 IHsKIAkudXNlX3VyZ2VudF9idXJzdF9idyA9IDAKIH07CiAKK3N0cnVjdCBfdmNzX2RwaV9zb2Nf Ym91bmRpbmdfYm94X3N0IGRjbjJfMF9udjEyX3NvYyA9IHsgMCB9OwogCiAjaWZuZGVmIG1tRFAw X0RQX0RQSFlfSU5URVJOQUxfQ1RSTAogCSNkZWZpbmUgbW1EUDBfRFBfRFBIWV9JTlRFUk5BTF9D VFJMCQkweDIxMGYKQEAgLTMwNDIsNiArMzA0NCwyNyBAQCBzdGF0aWMgdm9pZCBwYXRjaF9ib3Vu ZGluZ19ib3goc3RydWN0IGRjICpkYywgc3RydWN0IF92Y3NfZHBpX3NvY19ib3VuZGluZ19ib3hf cwogCWtlcm5lbF9mcHVfZW5kKCk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgX3Zjc19kcGlfc29jX2Jv dW5kaW5nX2JveF9zdCAqZ2V0X2FzaWNfcmV2X3NvY19iYigKKwl1aW50MzJfdCBod19pbnRlcm5h bF9yZXYpCit7CisJaWYgKEFTSUNSRVZfSVNfTkFWSTEyX1AoaHdfaW50ZXJuYWxfcmV2KSkKKwkJ cmV0dXJuICZkY24yXzBfbnYxMl9zb2M7CisKKwlyZXR1cm4gJmRjbjJfMF9zb2M7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgX3Zjc19kcGlfaXBfcGFyYW1zX3N0ICpnZXRfYXNpY19yZXZfaXBfcGFyYW1z KAorCXVpbnQzMl90IGh3X2ludGVybmFsX3JldikKK3sKKwkvKiBOVjEyIGFuZCBOVjEwICovCisJ cmV0dXJuICZkY24yXzBfaXA7Cit9CisKK3N0YXRpYyBlbnVtIGRtbF9wcm9qZWN0IGdldF9kbWxf cHJvamVjdF92ZXJzaW9uKHVpbnQzMl90IGh3X2ludGVybmFsX3JldikKK3sKKwlyZXR1cm4gRE1M X1BST0pFQ1RfTkFWSTEwdjI7Cit9CisKICNkZWZpbmUgZml4ZWQxNl90b19kb3VibGUoeCkgKCgo ZG91YmxlKSB4KSAvICgoZG91YmxlKSAoMSA8PCAxNikpKQogI2RlZmluZSBmaXhlZDE2X3RvX2Rv dWJsZV90b19jcHUoeCkgZml4ZWQxNl90b19kb3VibGUobGUzMl90b19jcHUoeCkpCiAKQEAgLTMw NDksNiArMzA3MiwxMSBAQCBzdGF0aWMgYm9vbCBpbml0X3NvY19ib3VuZGluZ19ib3goc3RydWN0 IGRjICpkYywKIAkJCQkgIHN0cnVjdCBkY24yMF9yZXNvdXJjZV9wb29sICpwb29sKQogewogCWNv bnN0IHN0cnVjdCBncHVfaW5mb19zb2NfYm91bmRpbmdfYm94X3YxXzAgKmJiID0gZGMtPnNvY19i b3VuZGluZ19ib3g7CisJc3RydWN0IF92Y3NfZHBpX3NvY19ib3VuZGluZ19ib3hfc3QgKmxvYWRl ZF9iYiA9CisJCQlnZXRfYXNpY19yZXZfc29jX2JiKGRjLT5jdHgtPmFzaWNfaWQuaHdfaW50ZXJu YWxfcmV2KTsKKwlzdHJ1Y3QgX3Zjc19kcGlfaXBfcGFyYW1zX3N0ICpsb2FkZWRfaXAgPQorCQkJ Z2V0X2FzaWNfcmV2X2lwX3BhcmFtcyhkYy0+Y3R4LT5hc2ljX2lkLmh3X2ludGVybmFsX3Jldik7 CisKIAlEQ19MT0dHRVJfSU5JVChkYy0+Y3R4LT5sb2dnZXIpOwogCiAJaWYgKCFiYiAmJiAhU09D X0JPVU5ESU5HX0JPWF9WQUxJRCkgewpAQCAtMzA1OSwxMDEgKzMwODcsMTAzIEBAIHN0YXRpYyBi b29sIGluaXRfc29jX2JvdW5kaW5nX2JveChzdHJ1Y3QgZGMgKmRjLAogCWlmIChiYiAmJiAhU09D X0JPVU5ESU5HX0JPWF9WQUxJRCkgewogCQlpbnQgaTsKIAotCQlkY24yXzBfc29jLnNyX2V4aXRf dGltZV91cyA9CisJCWRjbjJfMF9udjEyX3NvYy5zcl9leGl0X3RpbWVfdXMgPQogCQkJCWZpeGVk MTZfdG9fZG91YmxlX3RvX2NwdShiYi0+c3JfZXhpdF90aW1lX3VzKTsKLQkJZGNuMl8wX3NvYy5z cl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9CisJCWRjbjJfMF9udjEyX3NvYy5zcl9lbnRlcl9w bHVzX2V4aXRfdGltZV91cyA9CiAJCQkJZml4ZWQxNl90b19kb3VibGVfdG9fY3B1KGJiLT5zcl9l bnRlcl9wbHVzX2V4aXRfdGltZV91cyk7Ci0JCWRjbjJfMF9zb2MudXJnZW50X2xhdGVuY3lfdXMg PQorCQlkY24yXzBfbnYxMl9zb2MudXJnZW50X2xhdGVuY3lfdXMgPQogCQkJCWZpeGVkMTZfdG9f ZG91YmxlX3RvX2NwdShiYi0+dXJnZW50X2xhdGVuY3lfdXMpOwotCQlkY24yXzBfc29jLnVyZ2Vu dF9sYXRlbmN5X3BpeGVsX2RhdGFfb25seV91cyA9CisJCWRjbjJfMF9udjEyX3NvYy51cmdlbnRf bGF0ZW5jeV9waXhlbF9kYXRhX29ubHlfdXMgPQogCQkJCWZpeGVkMTZfdG9fZG91YmxlX3RvX2Nw dShiYi0+dXJnZW50X2xhdGVuY3lfcGl4ZWxfZGF0YV9vbmx5X3VzKTsKLQkJZGNuMl8wX3NvYy51 cmdlbnRfbGF0ZW5jeV9waXhlbF9taXhlZF93aXRoX3ZtX2RhdGFfdXMgPQorCQlkY24yXzBfbnYx Ml9zb2MudXJnZW50X2xhdGVuY3lfcGl4ZWxfbWl4ZWRfd2l0aF92bV9kYXRhX3VzID0KIAkJCQlm aXhlZDE2X3RvX2RvdWJsZV90b19jcHUoYmItPnVyZ2VudF9sYXRlbmN5X3BpeGVsX21peGVkX3dp dGhfdm1fZGF0YV91cyk7Ci0JCWRjbjJfMF9zb2MudXJnZW50X2xhdGVuY3lfdm1fZGF0YV9vbmx5 X3VzID0KKwkJZGNuMl8wX252MTJfc29jLnVyZ2VudF9sYXRlbmN5X3ZtX2RhdGFfb25seV91cyA9 CiAJCQkJZml4ZWQxNl90b19kb3VibGVfdG9fY3B1KGJiLT51cmdlbnRfbGF0ZW5jeV92bV9kYXRh X29ubHlfdXMpOwotCQlkY24yXzBfc29jLnVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9j aGFubmVsX3BpeGVsX29ubHlfYnl0ZXMgPQorCQlkY24yXzBfbnYxMl9zb2MudXJnZW50X291dF9v Zl9vcmRlcl9yZXR1cm5fcGVyX2NoYW5uZWxfcGl4ZWxfb25seV9ieXRlcyA9CiAJCQkJbGUzMl90 b19jcHUoYmItPnVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX3BpeGVsX29u bHlfYnl0ZXMpOwotCQlkY24yXzBfc29jLnVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9j aGFubmVsX3BpeGVsX2FuZF92bV9ieXRlcyA9CisJCWRjbjJfMF9udjEyX3NvYy51cmdlbnRfb3V0 X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbF9waXhlbF9hbmRfdm1fYnl0ZXMgPQogCQkJCWxl MzJfdG9fY3B1KGJiLT51cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbF9waXhl bF9hbmRfdm1fYnl0ZXMpOwotCQlkY24yXzBfc29jLnVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJu X3Blcl9jaGFubmVsX3ZtX29ubHlfYnl0ZXMgPQorCQlkY24yXzBfbnYxMl9zb2MudXJnZW50X291 dF9vZl9vcmRlcl9yZXR1cm5fcGVyX2NoYW5uZWxfdm1fb25seV9ieXRlcyA9CiAJCQkJbGUzMl90 b19jcHUoYmItPnVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX3ZtX29ubHlf Ynl0ZXMpOwotCQlkY24yXzBfc29jLnBjdF9pZGVhbF9kcmFtX3NkcF9id19hZnRlcl91cmdlbnRf cGl4ZWxfb25seSA9CisJCWRjbjJfMF9udjEyX3NvYy5wY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0 ZXJfdXJnZW50X3BpeGVsX29ubHkgPQogCQkJCWZpeGVkMTZfdG9fZG91YmxlX3RvX2NwdShiYi0+ cGN0X2lkZWFsX2RyYW1fc2RwX2J3X2FmdGVyX3VyZ2VudF9waXhlbF9vbmx5KTsKLQkJZGNuMl8w X3NvYy5wY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVsX2FuZF92bSA9CisJ CWRjbjJfMF9udjEyX3NvYy5wY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVs X2FuZF92bSA9CiAJCQkJZml4ZWQxNl90b19kb3VibGVfdG9fY3B1KGJiLT5wY3RfaWRlYWxfZHJh bV9zZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVsX2FuZF92bSk7Ci0JCWRjbjJfMF9zb2MucGN0X2lk ZWFsX2RyYW1fc2RwX2J3X2FmdGVyX3VyZ2VudF92bV9vbmx5ID0KKwkJZGNuMl8wX252MTJfc29j LnBjdF9pZGVhbF9kcmFtX3NkcF9id19hZnRlcl91cmdlbnRfdm1fb25seSA9CiAJCQkJZml4ZWQx Nl90b19kb3VibGVfdG9fY3B1KGJiLT5wY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJfdXJnZW50 X3ZtX29ubHkpOwotCQlkY24yXzBfc29jLm1heF9hdmdfc2RwX2J3X3VzZV9ub3JtYWxfcGVyY2Vu dCA9CisJCWRjbjJfMF9udjEyX3NvYy5tYXhfYXZnX3NkcF9id191c2Vfbm9ybWFsX3BlcmNlbnQg PQogCQkJCWZpeGVkMTZfdG9fZG91YmxlX3RvX2NwdShiYi0+bWF4X2F2Z19zZHBfYndfdXNlX25v cm1hbF9wZXJjZW50KTsKLQkJZGNuMl8wX3NvYy5tYXhfYXZnX2RyYW1fYndfdXNlX25vcm1hbF9w ZXJjZW50ID0KKwkJZGNuMl8wX252MTJfc29jLm1heF9hdmdfZHJhbV9id191c2Vfbm9ybWFsX3Bl cmNlbnQgPQogCQkJCWZpeGVkMTZfdG9fZG91YmxlX3RvX2NwdShiYi0+bWF4X2F2Z19kcmFtX2J3 X3VzZV9ub3JtYWxfcGVyY2VudCk7Ci0JCWRjbjJfMF9zb2Mud3JpdGViYWNrX2xhdGVuY3lfdXMg PQorCQlkY24yXzBfbnYxMl9zb2Mud3JpdGViYWNrX2xhdGVuY3lfdXMgPQogCQkJCWZpeGVkMTZf dG9fZG91YmxlX3RvX2NwdShiYi0+d3JpdGViYWNrX2xhdGVuY3lfdXMpOwotCQlkY24yXzBfc29j LmlkZWFsX2RyYW1fYndfYWZ0ZXJfdXJnZW50X3BlcmNlbnQgPQorCQlkY24yXzBfbnYxMl9zb2Mu aWRlYWxfZHJhbV9id19hZnRlcl91cmdlbnRfcGVyY2VudCA9CiAJCQkJZml4ZWQxNl90b19kb3Vi bGVfdG9fY3B1KGJiLT5pZGVhbF9kcmFtX2J3X2FmdGVyX3VyZ2VudF9wZXJjZW50KTsKLQkJZGNu Ml8wX3NvYy5tYXhfcmVxdWVzdF9zaXplX2J5dGVzID0KKwkJZGNuMl8wX252MTJfc29jLm1heF9y ZXF1ZXN0X3NpemVfYnl0ZXMgPQogCQkJCWxlMzJfdG9fY3B1KGJiLT5tYXhfcmVxdWVzdF9zaXpl X2J5dGVzKTsKLQkJZGNuMl8wX3NvYy5kcmFtX2NoYW5uZWxfd2lkdGhfYnl0ZXMgPQorCQlkY24y XzBfbnYxMl9zb2MuZHJhbV9jaGFubmVsX3dpZHRoX2J5dGVzID0KIAkJCQlsZTMyX3RvX2NwdShi Yi0+ZHJhbV9jaGFubmVsX3dpZHRoX2J5dGVzKTsKLQkJZGNuMl8wX3NvYy5mYWJyaWNfZGF0YXBh dGhfdG9fZGNuX2RhdGFfcmV0dXJuX2J5dGVzID0KKwkJZGNuMl8wX252MTJfc29jLmZhYnJpY19k YXRhcGF0aF90b19kY25fZGF0YV9yZXR1cm5fYnl0ZXMgPQogCQkJCWxlMzJfdG9fY3B1KGJiLT5m YWJyaWNfZGF0YXBhdGhfdG9fZGNuX2RhdGFfcmV0dXJuX2J5dGVzKTsKLQkJZGNuMl8wX3NvYy5k Y25fZG93bnNwcmVhZF9wZXJjZW50ID0KKwkJZGNuMl8wX252MTJfc29jLmRjbl9kb3duc3ByZWFk X3BlcmNlbnQgPQogCQkJCWZpeGVkMTZfdG9fZG91YmxlX3RvX2NwdShiYi0+ZGNuX2Rvd25zcHJl YWRfcGVyY2VudCk7Ci0JCWRjbjJfMF9zb2MuZG93bnNwcmVhZF9wZXJjZW50ID0KKwkJZGNuMl8w X252MTJfc29jLmRvd25zcHJlYWRfcGVyY2VudCA9CiAJCQkJZml4ZWQxNl90b19kb3VibGVfdG9f Y3B1KGJiLT5kb3duc3ByZWFkX3BlcmNlbnQpOwotCQlkY24yXzBfc29jLmRyYW1fcGFnZV9vcGVu X3RpbWVfbnMgPQorCQlkY24yXzBfbnYxMl9zb2MuZHJhbV9wYWdlX29wZW5fdGltZV9ucyA9CiAJ CQkJZml4ZWQxNl90b19kb3VibGVfdG9fY3B1KGJiLT5kcmFtX3BhZ2Vfb3Blbl90aW1lX25zKTsK LQkJZGNuMl8wX3NvYy5kcmFtX3J3X3R1cm5hcm91bmRfdGltZV9ucyA9CisJCWRjbjJfMF9udjEy X3NvYy5kcmFtX3J3X3R1cm5hcm91bmRfdGltZV9ucyA9CiAJCQkJZml4ZWQxNl90b19kb3VibGVf dG9fY3B1KGJiLT5kcmFtX3J3X3R1cm5hcm91bmRfdGltZV9ucyk7Ci0JCWRjbjJfMF9zb2MuZHJh bV9yZXR1cm5fYnVmZmVyX3Blcl9jaGFubmVsX2J5dGVzID0KKwkJZGNuMl8wX252MTJfc29jLmRy YW1fcmV0dXJuX2J1ZmZlcl9wZXJfY2hhbm5lbF9ieXRlcyA9CiAJCQkJbGUzMl90b19jcHUoYmIt PmRyYW1fcmV0dXJuX2J1ZmZlcl9wZXJfY2hhbm5lbF9ieXRlcyk7Ci0JCWRjbjJfMF9zb2Mucm91 bmRfdHJpcF9waW5nX2xhdGVuY3lfZGNmY2xrX2N5Y2xlcyA9CisJCWRjbjJfMF9udjEyX3NvYy5y b3VuZF90cmlwX3BpbmdfbGF0ZW5jeV9kY2ZjbGtfY3ljbGVzID0KIAkJCQlsZTMyX3RvX2NwdShi Yi0+cm91bmRfdHJpcF9waW5nX2xhdGVuY3lfZGNmY2xrX2N5Y2xlcyk7Ci0JCWRjbjJfMF9zb2Mu dXJnZW50X291dF9vZl9vcmRlcl9yZXR1cm5fcGVyX2NoYW5uZWxfYnl0ZXMgPQorCQlkY24yXzBf bnYxMl9zb2MudXJnZW50X291dF9vZl9vcmRlcl9yZXR1cm5fcGVyX2NoYW5uZWxfYnl0ZXMgPQog CQkJCWxlMzJfdG9fY3B1KGJiLT51cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5l bF9ieXRlcyk7Ci0JCWRjbjJfMF9zb2MuY2hhbm5lbF9pbnRlcmxlYXZlX2J5dGVzID0KKwkJZGNu Ml8wX252MTJfc29jLmNoYW5uZWxfaW50ZXJsZWF2ZV9ieXRlcyA9CiAJCQkJbGUzMl90b19jcHUo YmItPmNoYW5uZWxfaW50ZXJsZWF2ZV9ieXRlcyk7Ci0JCWRjbjJfMF9zb2MubnVtX2JhbmtzID0K KwkJZGNuMl8wX252MTJfc29jLm51bV9iYW5rcyA9CiAJCQkJbGUzMl90b19jcHUoYmItPm51bV9i YW5rcyk7Ci0JCWRjbjJfMF9zb2MubnVtX2NoYW5zID0KKwkJZGNuMl8wX252MTJfc29jLm51bV9j aGFucyA9CiAJCQkJbGUzMl90b19jcHUoYmItPm51bV9jaGFucyk7Ci0JCWRjbjJfMF9zb2Mudm1t X3BhZ2Vfc2l6ZV9ieXRlcyA9CisJCWRjbjJfMF9udjEyX3NvYy52bW1fcGFnZV9zaXplX2J5dGVz ID0KIAkJCQlsZTMyX3RvX2NwdShiYi0+dm1tX3BhZ2Vfc2l6ZV9ieXRlcyk7Ci0JCWRjbjJfMF9z b2MuZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV91cyA9CisJCWRjbjJfMF9udjEyX3NvYy5kcmFt X2Nsb2NrX2NoYW5nZV9sYXRlbmN5X3VzID0KIAkJCQlmaXhlZDE2X3RvX2RvdWJsZV90b19jcHUo YmItPmRyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3lfdXMpOwotCQlkY24yXzBfc29jLndyaXRlYmFj a19kcmFtX2Nsb2NrX2NoYW5nZV9sYXRlbmN5X3VzID0KKwkJLy8gSEFDSyEhIExvd2VyIHVjbG9j ayBsYXRlbmN5IHN3aXRjaCB0aW1lIHNvIHdlIGRvbid0IHN3aXRjaAorCQlkY24yXzBfbnYxMl9z b2MuZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV91cyA9IDEwOworCQlkY24yXzBfbnYxMl9zb2Mu d3JpdGViYWNrX2RyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3lfdXMgPQogCQkJCWZpeGVkMTZfdG9f ZG91YmxlX3RvX2NwdShiYi0+d3JpdGViYWNrX2RyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3lfdXMp OwotCQlkY24yXzBfc29jLnJldHVybl9idXNfd2lkdGhfYnl0ZXMgPQorCQlkY24yXzBfbnYxMl9z b2MucmV0dXJuX2J1c193aWR0aF9ieXRlcyA9CiAJCQkJbGUzMl90b19jcHUoYmItPnJldHVybl9i dXNfd2lkdGhfYnl0ZXMpOwotCQlkY24yXzBfc29jLmRpc3BjbGtfZHBwY2xrX3Zjb19zcGVlZF9t aHogPQorCQlkY24yXzBfbnYxMl9zb2MuZGlzcGNsa19kcHBjbGtfdmNvX3NwZWVkX21oeiA9CiAJ CQkJbGUzMl90b19jcHUoYmItPmRpc3BjbGtfZHBwY2xrX3Zjb19zcGVlZF9taHopOwotCQlkY24y XzBfc29jLnhmY19idXNfdHJhbnNwb3J0X3RpbWVfdXMgPQorCQlkY24yXzBfbnYxMl9zb2MueGZj X2J1c190cmFuc3BvcnRfdGltZV91cyA9CiAJCQkJbGUzMl90b19jcHUoYmItPnhmY19idXNfdHJh bnNwb3J0X3RpbWVfdXMpOwotCQlkY24yXzBfc29jLnhmY194YnVmX2xhdGVuY3lfdG9sZXJhbmNl X3VzID0KKwkJZGNuMl8wX252MTJfc29jLnhmY194YnVmX2xhdGVuY3lfdG9sZXJhbmNlX3VzID0K IAkJCQlsZTMyX3RvX2NwdShiYi0+eGZjX3hidWZfbGF0ZW5jeV90b2xlcmFuY2VfdXMpOwotCQlk Y24yXzBfc29jLnVzZV91cmdlbnRfYnVyc3RfYncgPQorCQlkY24yXzBfbnYxMl9zb2MudXNlX3Vy Z2VudF9idXJzdF9idyA9CiAJCQkJbGUzMl90b19jcHUoYmItPnVzZV91cmdlbnRfYnVyc3RfYncp OwotCQlkY24yXzBfc29jLm51bV9zdGF0ZXMgPQorCQlkY24yXzBfbnYxMl9zb2MubnVtX3N0YXRl cyA9CiAJCQkJbGUzMl90b19jcHUoYmItPm51bV9zdGF0ZXMpOwogCi0JCWZvciAoaSA9IDA7IGkg PCBkY24yXzBfc29jLm51bV9zdGF0ZXM7IGkrKykgewotCQkJZGNuMl8wX3NvYy5jbG9ja19saW1p dHNbaV0uc3RhdGUgPQorCQlmb3IgKGkgPSAwOyBpIDwgZGNuMl8wX252MTJfc29jLm51bV9zdGF0 ZXM7IGkrKykgeworCQkJZGNuMl8wX252MTJfc29jLmNsb2NrX2xpbWl0c1tpXS5zdGF0ZSA9CiAJ CQkJCWxlMzJfdG9fY3B1KGJiLT5jbG9ja19saW1pdHNbaV0uc3RhdGUpOwotCQkJZGNuMl8wX3Nv Yy5jbG9ja19saW1pdHNbaV0uZGNmY2xrX21oeiA9CisJCQlkY24yXzBfbnYxMl9zb2MuY2xvY2tf bGltaXRzW2ldLmRjZmNsa19taHogPQogCQkJCQlmaXhlZDE2X3RvX2RvdWJsZV90b19jcHUoYmIt PmNsb2NrX2xpbWl0c1tpXS5kY2ZjbGtfbWh6KTsKLQkJCWRjbjJfMF9zb2MuY2xvY2tfbGltaXRz W2ldLmZhYnJpY2Nsa19taHogPQorCQkJZGNuMl8wX252MTJfc29jLmNsb2NrX2xpbWl0c1tpXS5m YWJyaWNjbGtfbWh6ID0KIAkJCQkJZml4ZWQxNl90b19kb3VibGVfdG9fY3B1KGJiLT5jbG9ja19s aW1pdHNbaV0uZmFicmljY2xrX21oeik7Ci0JCQlkY24yXzBfc29jLmNsb2NrX2xpbWl0c1tpXS5k aXNwY2xrX21oeiA9CisJCQlkY24yXzBfbnYxMl9zb2MuY2xvY2tfbGltaXRzW2ldLmRpc3BjbGtf bWh6ID0KIAkJCQkJZml4ZWQxNl90b19kb3VibGVfdG9fY3B1KGJiLT5jbG9ja19saW1pdHNbaV0u ZGlzcGNsa19taHopOwotCQkJZGNuMl8wX3NvYy5jbG9ja19saW1pdHNbaV0uZHBwY2xrX21oeiA9 CisJCQlkY24yXzBfbnYxMl9zb2MuY2xvY2tfbGltaXRzW2ldLmRwcGNsa19taHogPQogCQkJCQlm aXhlZDE2X3RvX2RvdWJsZV90b19jcHUoYmItPmNsb2NrX2xpbWl0c1tpXS5kcHBjbGtfbWh6KTsK LQkJCWRjbjJfMF9zb2MuY2xvY2tfbGltaXRzW2ldLnBoeWNsa19taHogPQorCQkJZGNuMl8wX252 MTJfc29jLmNsb2NrX2xpbWl0c1tpXS5waHljbGtfbWh6ID0KIAkJCQkJZml4ZWQxNl90b19kb3Vi bGVfdG9fY3B1KGJiLT5jbG9ja19saW1pdHNbaV0ucGh5Y2xrX21oeik7Ci0JCQlkY24yXzBfc29j LmNsb2NrX2xpbWl0c1tpXS5zb2NjbGtfbWh6ID0KKwkJCWRjbjJfMF9udjEyX3NvYy5jbG9ja19s aW1pdHNbaV0uc29jY2xrX21oeiA9CiAJCQkJCWZpeGVkMTZfdG9fZG91YmxlX3RvX2NwdShiYi0+ Y2xvY2tfbGltaXRzW2ldLnNvY2Nsa19taHopOwotCQkJZGNuMl8wX3NvYy5jbG9ja19saW1pdHNb aV0uZHNjY2xrX21oeiA9CisJCQlkY24yXzBfbnYxMl9zb2MuY2xvY2tfbGltaXRzW2ldLmRzY2Ns a19taHogPQogCQkJCQlmaXhlZDE2X3RvX2RvdWJsZV90b19jcHUoYmItPmNsb2NrX2xpbWl0c1tp XS5kc2NjbGtfbWh6KTsKLQkJCWRjbjJfMF9zb2MuY2xvY2tfbGltaXRzW2ldLmRyYW1fc3BlZWRf bXRzID0KKwkJCWRjbjJfMF9udjEyX3NvYy5jbG9ja19saW1pdHNbaV0uZHJhbV9zcGVlZF9tdHMg PQogCQkJCQlmaXhlZDE2X3RvX2RvdWJsZV90b19jcHUoYmItPmNsb2NrX2xpbWl0c1tpXS5kcmFt X3NwZWVkX210cyk7CiAJCX0KIAl9CkBAIC0zMTg0LDE0ICszMjE0LDE0IEBAIHN0YXRpYyBib29s IGluaXRfc29jX2JvdW5kaW5nX2JveChzdHJ1Y3QgZGMgKmRjLAogCQl9CiAKIAkJaWYgKGNsb2Nr X2xpbWl0c19hdmFpbGFibGUgJiYgdWNsa19zdGF0ZXNfYXZhaWxhYmxlICYmIG51bV9zdGF0ZXMp Ci0JCQl1cGRhdGVfYm91bmRpbmdfYm94KGRjLCAmZGNuMl8wX3NvYywgJm1heF9jbG9ja3MsIHVj bGtfc3RhdGVzLCBudW1fc3RhdGVzKTsKKwkJCXVwZGF0ZV9ib3VuZGluZ19ib3goZGMsIGxvYWRl ZF9iYiwgJm1heF9jbG9ja3MsIHVjbGtfc3RhdGVzLCBudW1fc3RhdGVzKTsKIAkJZWxzZSBpZiAo Y2xvY2tfbGltaXRzX2F2YWlsYWJsZSkKLQkJCWNhcF9zb2NfY2xvY2tzKCZkY24yXzBfc29jLCBt YXhfY2xvY2tzKTsKKwkJCWNhcF9zb2NfY2xvY2tzKGxvYWRlZF9iYiwgbWF4X2Nsb2Nrcyk7CiAJ fQogCi0JZGNuMl8wX2lwLm1heF9udW1fb3RnID0gcG9vbC0+YmFzZS5yZXNfY2FwLT5udW1fdGlt aW5nX2dlbmVyYXRvcjsKLQlkY24yXzBfaXAubWF4X251bV9kcHAgPSBwb29sLT5iYXNlLnBpcGVf Y291bnQ7Ci0JcGF0Y2hfYm91bmRpbmdfYm94KGRjLCAmZGNuMl8wX3NvYyk7CisJbG9hZGVkX2lw LT5tYXhfbnVtX290ZyA9IHBvb2wtPmJhc2UucmVzX2NhcC0+bnVtX3RpbWluZ19nZW5lcmF0b3I7 CisJbG9hZGVkX2lwLT5tYXhfbnVtX2RwcCA9IHBvb2wtPmJhc2UucGlwZV9jb3VudDsKKwlwYXRj aF9ib3VuZGluZ19ib3goZGMsIGxvYWRlZF9iYik7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTMy MDQsNiArMzIzNCwxMiBAQCBzdGF0aWMgYm9vbCBjb25zdHJ1Y3QoCiAJaW50IGk7CiAJc3RydWN0 IGRjX2NvbnRleHQgKmN0eCA9IGRjLT5jdHg7CiAJc3RydWN0IGlycV9zZXJ2aWNlX2luaXRfZGF0 YSBpbml0X2RhdGE7CisJc3RydWN0IF92Y3NfZHBpX3NvY19ib3VuZGluZ19ib3hfc3QgKmxvYWRl ZF9iYiA9CisJCQlnZXRfYXNpY19yZXZfc29jX2JiKGN0eC0+YXNpY19pZC5od19pbnRlcm5hbF9y ZXYpOworCXN0cnVjdCBfdmNzX2RwaV9pcF9wYXJhbXNfc3QgKmxvYWRlZF9pcCA9CisJCQlnZXRf YXNpY19yZXZfaXBfcGFyYW1zKGN0eC0+YXNpY19pZC5od19pbnRlcm5hbF9yZXYpOworCWVudW0g ZG1sX3Byb2plY3QgZG1sX3Byb2plY3RfdmVyc2lvbiA9CisJCQlnZXRfZG1sX3Byb2plY3RfdmVy c2lvbihjdHgtPmFzaWNfaWQuaHdfaW50ZXJuYWxfcmV2KTsKIAogCWN0eC0+ZGNfYmlvcy0+cmVn cyA9ICZiaW9zX3JlZ3M7CiAJcG9vbC0+YmFzZS5mdW5jcyA9ICZkY24yMF9yZXNfcG9vbF9mdW5j czsKQEAgLTMzMjcsNyArMzM2Myw3IEBAIHN0YXRpYyBib29sIGNvbnN0cnVjdCgKIAkJZ290byBj cmVhdGVfZmFpbDsKIAl9CiAKLQlkbWxfaW5pdF9pbnN0YW5jZSgmZGMtPmRtbCwgJmRjbjJfMF9z b2MsICZkY24yXzBfaXAsIERNTF9QUk9KRUNUX05BVkkxMHYyKTsKKwlkbWxfaW5pdF9pbnN0YW5j ZSgmZGMtPmRtbCwgbG9hZGVkX2JiLCBsb2FkZWRfaXAsIGRtbF9wcm9qZWN0X3ZlcnNpb24pOwog CiAJaWYgKCFkYy0+ZGVidWcuZGlzYWJsZV9wcGxpYl93bV9yYW5nZSkgewogCQlzdHJ1Y3QgcHBf c211X3dtX3JhbmdlX3NldHMgcmFuZ2VzID0gezB9OwpAQCAtMzMzNSw3ICszMzcxLDcgQEAgc3Rh dGljIGJvb2wgY29uc3RydWN0KAogCiAJCXJhbmdlcy5udW1fcmVhZGVyX3dtX3NldHMgPSAwOwog Ci0JCWlmIChkY24yXzBfc29jLm51bV9zdGF0ZXMgPT0gMSkgeworCQlpZiAobG9hZGVkX2JiLT5u dW1fc3RhdGVzID09IDEpIHsKIAkJCXJhbmdlcy5yZWFkZXJfd21fc2V0c1swXS53bV9pbnN0ID0g aTsKIAkJCXJhbmdlcy5yZWFkZXJfd21fc2V0c1swXS5taW5fZHJhaW5fY2xrX21oeiA9IFBQX1NN VV9XTV9TRVRfUkFOR0VfQ0xLX1VOQ09OU1RSQUlORURfTUlOOwogCQkJcmFuZ2VzLnJlYWRlcl93 bV9zZXRzWzBdLm1heF9kcmFpbl9jbGtfbWh6ID0gUFBfU01VX1dNX1NFVF9SQU5HRV9DTEtfVU5D T05TVFJBSU5FRF9NQVg7CkBAIC0zMzQzLDEzICszMzc5LDEzIEBAIHN0YXRpYyBib29sIGNvbnN0 cnVjdCgKIAkJCXJhbmdlcy5yZWFkZXJfd21fc2V0c1swXS5tYXhfZmlsbF9jbGtfbWh6ID0gUFBf U01VX1dNX1NFVF9SQU5HRV9DTEtfVU5DT05TVFJBSU5FRF9NQVg7CiAKIAkJCXJhbmdlcy5udW1f cmVhZGVyX3dtX3NldHMgPSAxOwotCQl9IGVsc2UgaWYgKGRjbjJfMF9zb2MubnVtX3N0YXRlcyA+ IDEpIHsKLQkJCWZvciAoaSA9IDA7IGkgPCA0ICYmIGkgPCBkY24yXzBfc29jLm51bV9zdGF0ZXM7 IGkrKykgeworCQl9IGVsc2UgaWYgKGxvYWRlZF9iYi0+bnVtX3N0YXRlcyA+IDEpIHsKKwkJCWZv ciAoaSA9IDA7IGkgPCA0ICYmIGkgPCBsb2FkZWRfYmItPm51bV9zdGF0ZXM7IGkrKykgewogCQkJ CXJhbmdlcy5yZWFkZXJfd21fc2V0c1tpXS53bV9pbnN0ID0gaTsKIAkJCQlyYW5nZXMucmVhZGVy X3dtX3NldHNbaV0ubWluX2RyYWluX2Nsa19taHogPSBQUF9TTVVfV01fU0VUX1JBTkdFX0NMS19V TkNPTlNUUkFJTkVEX01JTjsKIAkJCQlyYW5nZXMucmVhZGVyX3dtX3NldHNbaV0ubWF4X2RyYWlu X2Nsa19taHogPSBQUF9TTVVfV01fU0VUX1JBTkdFX0NMS19VTkNPTlNUUkFJTkVEX01BWDsKLQkJ CQlyYW5nZXMucmVhZGVyX3dtX3NldHNbaV0ubWluX2ZpbGxfY2xrX21oeiA9IChpID4gMCkgPyAo ZGNuMl8wX3NvYy5jbG9ja19saW1pdHNbaSAtIDFdLmRyYW1fc3BlZWRfbXRzIC8gMTYpICsgMSA6 IDA7Ci0JCQkJcmFuZ2VzLnJlYWRlcl93bV9zZXRzW2ldLm1heF9maWxsX2Nsa19taHogPSBkY24y XzBfc29jLmNsb2NrX2xpbWl0c1tpXS5kcmFtX3NwZWVkX210cyAvIDE2OworCQkJCXJhbmdlcy5y ZWFkZXJfd21fc2V0c1tpXS5taW5fZmlsbF9jbGtfbWh6ID0gKGkgPiAwKSA/IChsb2FkZWRfYmIt PmNsb2NrX2xpbWl0c1tpIC0gMV0uZHJhbV9zcGVlZF9tdHMgLyAxNikgKyAxIDogMDsKKwkJCQly YW5nZXMucmVhZGVyX3dtX3NldHNbaV0ubWF4X2ZpbGxfY2xrX21oeiA9IGxvYWRlZF9iYi0+Y2xv Y2tfbGltaXRzW2ldLmRyYW1fc3BlZWRfbXRzIC8gMTY7CiAKIAkJCQlyYW5nZXMubnVtX3JlYWRl cl93bV9zZXRzID0gaSArIDE7CiAJCQl9Ci0tIAoyLjIyLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeA==