From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH] amdgpu/dc: drop display_pipe_clocks.c. Date: Thu, 28 Sep 2017 10:10:22 +1000 Message-ID: <20170928001022.22166-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgY29kZSBpc24ndCB1 c2VkIGF0IGFsbCBpbiB0aGUga2VybmVsIHRyZWUsIHBlcmhhcHMgaXQgY2FuIHdhaXQgdG8KYmUg aW1wb3J0ZWQgd2hlbiBpdCBpcy4gSXQgYWxzbyBkb2VzIGEgbG90IG9mIGZsb2F0aW5nIHBvaW50 IGNhbGNzLApzbyBwcm9iYWJseSBnb29kIHRvIGRyb3AgaXQgdW50aWwgaXQncyBuZWVkZWQgYW5k IHdlIGNhbiBlbnN1cmUKcHJvcGVyIGZwdSBhY2Nlc3NvcnMuCgpTaWduZWQtb2ZmLWJ5OiBEYXZl IEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kbWwvTWFrZWZpbGUgICAgICAgIHwgICAyICstCiAuLi4vZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX2xpYi5oICB8ICAgMSAtCiAuLi4vZHJtL2FtZC9kaXNw bGF5L2RjL2RtbC9kaXNwbGF5X3BpcGVfY2xvY2tzLmMgICB8IDM2NyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0KIC4uLi9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfcGlwZV9jbG9ja3MuaCAg IHwgIDQxIC0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNDEwIGRlbGV0aW9u cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9k bWwvZGlzcGxheV9waXBlX2Nsb2Nrcy5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X3BpcGVfY2xvY2tzLmgKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RtbC9NYWtlZmlsZQppbmRleCA5ZDc3OTFkLi5hNmJmMzY0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kbWwvTWFrZWZpbGUKQEAgLTEz LDcgKzEzLDcgQEAgQ0ZMQUdTX2RtbF9jb21tb25fZGVmcy5vIDo9IC1taGFyZC1mbG9hdCAtbXNz ZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT00CiBDRkxBR1NfZGlzcGxheV9tb2RlX3N1cHBv cnQubyA6PSAtbWhhcmQtZmxvYXQgLW1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9NAog CiAKLURNTCA9IGRpc3BsYXlfbW9kZV9saWIubyBkaXNwbGF5X3BpcGVfY2xvY2tzLm8gZGlzcGxh eV9ycV9kbGdfY2FsYy5vIFwKK0RNTCA9IGRpc3BsYXlfbW9kZV9saWIubyBkaXNwbGF5X3JxX2Rs Z19jYWxjLm8gXAogCSAgZGlzcGxheV9ycV9kbGdfaGVscGVycy5vIGRpc3BsYXlfd2F0ZXJtYXJr Lm8gXAogCSAgc29jX2JvdW5kaW5nX2JveC5vIGRtbF9jb21tb25fZGVmcy5vIGRpc3BsYXlfbW9k ZV9zdXBwb3J0Lm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2RtbC9kaXNwbGF5X21vZGVfbGliLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZG1sL2Rpc3BsYXlfbW9kZV9saWIuaAppbmRleCBlMmUzMTExLi5lYjFjOGU2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfbW9kZV9saWIuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfbW9kZV9saWIu aApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgImRtbF9jb21tb25fZGVmcy5oIgogI2luY2x1 ZGUgInNvY19ib3VuZGluZ19ib3guaCIKICNpbmNsdWRlICJkaXNwbGF5X3dhdGVybWFyay5oIgot I2luY2x1ZGUgImRpc3BsYXlfcGlwZV9jbG9ja3MuaCIKICNpbmNsdWRlICJkaXNwbGF5X3JxX2Rs Z19jYWxjLmgiCiAjaW5jbHVkZSAiZGlzcGxheV9tb2RlX3N1cHBvcnQuaCIKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X3BpcGVfY2xvY2tz LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfcGlwZV9jbG9j a3MuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU0ZGM1Ny4uMDAwMDAwMAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfcGlwZV9jbG9ja3Mu YworKysgL2Rldi9udWxsCkBAIC0xLDM2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMTcg QWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0gKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us Ci0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg aW4KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl LgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAotICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAqIEFSSVNJ TkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUgotICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIEF1dGhv cnM6IEFNRAotICoKLSAqLwotCi0jaW5jbHVkZSAiZGlzcGxheV9waXBlX2Nsb2Nrcy5oIgotI2lu Y2x1ZGUgImRpc3BsYXlfbW9kZV9saWIuaCIKLSNpbmNsdWRlICJzb2NfYm91bmRpbmdfYm94Lmgi Ci0KLXN0YXRpYyBlbnVtIHZvbHRhZ2Vfc3RhdGUgcG93ZXJfc3RhdGUoCi0JCXN0cnVjdCBkaXNw bGF5X21vZGVfbGliICptb2RlX2xpYiwKLQkJZG91YmxlIGRpc3BjbGssCi0JCWRvdWJsZSBkcHBj bGspCi17Ci0JZW51bSB2b2x0YWdlX3N0YXRlIHN0YXRlMTsKLQllbnVtIHZvbHRhZ2Vfc3RhdGUg c3RhdGUyOwotCi0JaWYgKGRpc3BjbGsgPD0gbW9kZV9saWItPnNvYy52bWluLmRpc3BjbGtfbWh6 KQotCQlzdGF0ZTEgPSBkbV92bWluOwotCWVsc2UgaWYgKGRpc3BjbGsgPD0gbW9kZV9saWItPnNv Yy52bm9tLmRpc3BjbGtfbWh6KQotCQlzdGF0ZTEgPSBkbV92bm9tOwotCWVsc2UgaWYgKGRpc3Bj bGsgPD0gbW9kZV9saWItPnNvYy52bWF4LmRpc3BjbGtfbWh6KQotCQlzdGF0ZTEgPSBkbV92bWF4 OwotCWVsc2UKLQkJc3RhdGUxID0gZG1fdm1heF9leGNlZWRlZDsKLQotCWlmIChkcHBjbGsgPD0g bW9kZV9saWItPnNvYy52bWluLmRwcGNsa19taHopCi0JCXN0YXRlMiA9IGRtX3ZtaW47Ci0JZWxz ZSBpZiAoZHBwY2xrIDw9IG1vZGVfbGliLT5zb2Mudm5vbS5kcHBjbGtfbWh6KQotCQlzdGF0ZTIg PSBkbV92bm9tOwotCWVsc2UgaWYgKGRwcGNsayA8PSBtb2RlX2xpYi0+c29jLnZtYXguZHBwY2xr X21oeikKLQkJc3RhdGUyID0gZG1fdm1heDsKLQllbHNlCi0JCXN0YXRlMiA9IGRtX3ZtYXhfZXhj ZWVkZWQ7Ci0KLQlpZiAoc3RhdGUxID4gc3RhdGUyKQotCQlyZXR1cm4gc3RhdGUxOwotCWVsc2UK LQkJcmV0dXJuIHN0YXRlMjsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGludCBkcHBfaW5fZ3JwKAot CQlzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKmUyZSwKLQkJdW5z aWduZWQgaW50IG51bV9waXBlcywKLQkJdW5zaWduZWQgaW50IGhzcGxpdF9ncnApCi17Ci0JdW5z aWduZWQgaW50IG51bV9kcHAgPSAwOwotCXVuc2lnbmVkIGludCBpOwotCi0JZm9yIChpID0gMDsg aSA8IG51bV9waXBlczsgaSsrKSB7Ci0JCWlmIChlMmVbaV0ucGlwZS5zcmMuaXNfaHNwbGl0KSB7 Ci0JCQlpZiAoZTJlW2ldLnBpcGUuc3JjLmhzcGxpdF9ncnAgPT0gaHNwbGl0X2dycCkgewotCQkJ CW51bV9kcHArKzsKLQkJCX0KLQkJfQotCX0KLQotCWlmICgwID09IG51bV9kcHApCi0JCW51bV9k cHAgPSAxOwotCi0JcmV0dXJuIG51bV9kcHA7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhbGN1bGF0ZV9w aXBlX2Nsa19yZXF1aXJlbWVudCgKLQkJc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LAotCQlzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKmUyZSwKLQkJ dW5zaWduZWQgaW50IG51bV9kcHBfaW5fZ3JwLAotCQlkb3VibGUgKmRwcGNsaywKLQkJZG91Ymxl ICpkaXNwY2xrLAotCQlib29sICpkcHBkaXYpCi17Ci0JZG91YmxlIHBzY2xfdGhyb3VnaHB1dCA9 IDAuMDsKLQlkb3VibGUgbWF4X2hyYXRpbyA9IGUyZS0+cGlwZS5zY2FsZV9yYXRpb19kZXB0aC5o c2NsX3JhdGlvOwotCWRvdWJsZSBtYXhfdnJhdGlvID0gZTJlLT5waXBlLnNjYWxlX3JhdGlvX2Rl cHRoLnZzY2xfcmF0aW87Ci0JZG91YmxlIG1heF9odGFwcyA9IGUyZS0+cGlwZS5zY2FsZV90YXBz Lmh0YXBzOwotCWRvdWJsZSBtYXhfdnRhcHMgPSBlMmUtPnBpcGUuc2NhbGVfdGFwcy52dGFwczsK LQlkb3VibGUgZHBwX2Nsb2NrX2RpdmlkZXIgPSAoZG91YmxlKSBudW1fZHBwX2luX2dycDsKLQlk b3VibGUgZGlzcGNsa19kcHBjbGtfcmF0aW87Ci0JZG91YmxlIGRpc3BjbGtfcmFtcF9tYXJnaW5f cGVyY2VudDsKLQotCWlmIChtYXhfaHJhdGlvID4gMS4wKSB7Ci0JCWRvdWJsZSBwc2NsX3RvX2xi ID0gKChkb3VibGUpIG1vZGVfbGliLT5pcC5tYXhfcHNjbF9sYl9id19waXhfcGVyX2NsayAqIG1h eF9ocmF0aW8pCi0JCQkJLyBkbWxfY2VpbChtYXhfaHRhcHMgLyA2LjApOwotCQlwc2NsX3Rocm91 Z2hwdXQgPSBkbWxfbWluKAotCQkJCXBzY2xfdG9fbGIsCi0JCQkJKGRvdWJsZSkgbW9kZV9saWIt PmlwLm1heF9kY2h1Yl9wc2NsX2J3X3BpeF9wZXJfY2xrKTsKLQl9IGVsc2UgewotCQlwc2NsX3Ro cm91Z2hwdXQgPSBkbWxfbWluKAotCQkJCShkb3VibGUpIG1vZGVfbGliLT5pcC5tYXhfcHNjbF9s Yl9id19waXhfcGVyX2NsaywKLQkJCQkoZG91YmxlKSBtb2RlX2xpYi0+aXAubWF4X2RjaHViX3Bz Y2xfYndfcGl4X3Blcl9jbGspOwotCX0KLQotCURUUkFDRSgicHNjbF90aHJvdWdocHV0OiAlZiBw aXggcGVyIGNsayIsIHBzY2xfdGhyb3VnaHB1dCk7Ci0JRFRSQUNFKCJ2dGFwczogJWYgaHJhdGlv OiAlZiB2cmF0aW86ICVmIiwgbWF4X3Z0YXBzLCBtYXhfaHJhdGlvLCBtYXhfdnJhdGlvKTsKLQkq ZHBwY2xrID0gZG1sX21heCgKLQkJCW1heF92dGFwcyAvIDYuMCAqIGRtbF9taW4oMS4wLCBtYXhf aHJhdGlvKSwKLQkJCW1heF9ocmF0aW8gKiBtYXhfdnJhdGlvIC8gcHNjbF90aHJvdWdocHV0KTsK LQlEVFJBQ0UoInBpeGVsIHJhdGUgbXVsdGlwbGllcjogJWYiLCAqZHBwY2xrKTsKLQkqZHBwY2xr ID0gZG1sX21heCgqZHBwY2xrLCAxLjApOwotCURUUkFDRSgicGl4ZWwgcmF0ZSBtdWx0aXBsaWVy IGNsYW1wZWQ6ICVmIiwgKmRwcGNsayk7Ci0JKmRwcGNsayA9ICpkcHBjbGsgKiBlMmUtPnBpcGUu ZGVzdC5waXhlbF9yYXRlX21oejsKLQotCSpkcHBjbGsgPSAqZHBwY2xrIC8gZHBwX2Nsb2NrX2Rp dmlkZXI7Ci0JRFRSQUNFKCJkcHBjbGsgYWZ0ZXIgc3BsaXQ6ICVmIiwgKmRwcGNsayk7Ci0KLQlp ZiAoZHBwX2Nsb2NrX2RpdmlkZXIgPiAxLjAgJiYgKCpkcHBjbGsgPCBlMmUtPnBpcGUuZGVzdC5w aXhlbF9yYXRlX21oeikpIHsKLQkJZGlzcGNsa19kcHBjbGtfcmF0aW8gPSAyLjA7Ci0JCSpkcHBk aXYgPSB0cnVlOwotCX0gZWxzZSB7Ci0JCWRpc3BjbGtfZHBwY2xrX3JhdGlvID0gMS4wOwotCQkq ZHBwZGl2ID0gZmFsc2U7Ci0JfQotCi0JZGlzcGNsa19yYW1wX21hcmdpbl9wZXJjZW50ID0gbW9k ZV9saWItPmlwLmRpc3BjbGtfcmFtcF9tYXJnaW5fcGVyY2VudDsKLQotCS8qIENvbW1lbnQgdGhp cyBvdXQgYmVjYXVzZSBvZiBHYWJlcyBwb3NzaWJsZSBidWcgaW4gc3ByZWFkc2hlZXQsCi0JICog anVzdCB0byBtYWtlIG90aGVyIGNhc2VzIGV2aWRlbnQgZHVyaW5nIGRlYnVnCi0JICoKLQkgKmlm KGUyZS0+Y2xrc19jZmcudm9sdGFnZSA9PSBkbV92bWF4KQotCSAqICAgIGRpc3BjbGtfcmFtcF9t YXJnaW5fcGVyY2VudCA9IDAuMDsKLQkgKi8KLQotCS8qIGFjY291bnQgZm9yIHJhbXBpbmcgbWFy Z2luIGFuZCBkb3duc3ByZWFkICovCi0JKmRpc3BjbGsgPSBkbWxfbWF4KCpkcHBjbGsgKiBkaXNw Y2xrX2RwcGNsa19yYXRpbywgZTJlLT5waXBlLmRlc3QucGl4ZWxfcmF0ZV9taHopCi0JCQkqICgx LjAgKyAoZG91YmxlKSBtb2RlX2xpYi0+c29jLmRvd25zcHJlYWRfcGVyY2VudCAvIDEwMC4wKQot CQkJKiAoMS4wICsgKGRvdWJsZSkgZGlzcGNsa19yYW1wX21hcmdpbl9wZXJjZW50IC8gMTAwLjAp OwotCi0JcmV0dXJuOwotfQotCi1ib29sIGRtbF9jbGtzX3BpcGVfY2xvY2tfcmVxdWlyZW1lbnRf Zml0X3Bvd2VyX2NvbnN0cmFpbnQoCi0JCXN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwKLQkJc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICplMmUsCi0J CXVuc2lnbmVkIGludCBudW1fZHBwX2luX2dycCkKLXsKLQlkb3VibGUgZHBwY2xrID0gMDsKLQlk b3VibGUgZGlzcGNsayA9IDA7Ci0JYm9vbCBkcHBkaXYgPSAwOwotCi0JY2FsY3VsYXRlX3BpcGVf Y2xrX3JlcXVpcmVtZW50KG1vZGVfbGliLCBlMmUsIG51bV9kcHBfaW5fZ3JwLCAmZHBwY2xrLCAm ZGlzcGNsaywgJmRwcGRpdik7Ci0KLQlpZiAocG93ZXJfc3RhdGUobW9kZV9saWIsIGRpc3BjbGss IGRwcGNsaykgPiBlMmUtPmNsa3NfY2ZnLnZvbHRhZ2UpIHsKLQkJcmV0dXJuIGZhbHNlOwotCX0K LQotCXJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBnZXRfcGxhbmVfY2xrcygKLQkJc3Ry dWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLAotCQlzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxh eV9lMmVfcGlwZV9wYXJhbXNfc3QgKmUyZSwKLQkJdW5zaWduZWQgaW50IG51bV9waXBlcywKLQkJ ZG91YmxlICpkcHBjbGtzLAotCQlkb3VibGUgKmRpc3BjbGtzLAotCQlib29sICpkcHBkaXYpCi17 Ci0JLyogaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBzY2FsZSByYXRpb3MgcGFzc2VkIGludG8gdGhl IGUyZSBwaXBlIHBhcmFtcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxjdWxhdGVkCi0JICogZm9yIGFu eSBzcGxpdCBwaXBlIGNvbmZpZ3VyYXRpb25zLCB3aGVyZSBleHRyYSBwaXhlbHMgaW50aGUgb3Zl cmxhcCByZWdpb24gZG8gbm90IGNvbnRyaWJ1dGUgdG8KLQkgKiB0aGUgc2NhbGUgcmF0aW8uIFRo aXMgbWVhbnMgdGhhdCB3ZSBjYW4gc2ltcGx5IGNhbGN1bGF0ZSB0aGUgZHBwY2xrIGZvciBlYWNo IGRwcCBpbmRlcGVuZGVudGx5Ci0JICogYW5kIHdlIHdvdWxkIGV4cGVjdCB0aGUgc2FtZSByZXN1 bHQgb24gYW55IHNwbGl0IHBpcGVzLCB3aGljaCB3b3VsZCBiZSBoYW5kbGVkCi0JICovCi0JdW5z aWduZWQgaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BpcGVzOyBpKyspIHsKLQkJZG91 YmxlIG51bV9kcHBfaW5fZ3JwOwotCQlkb3VibGUgZGlzcGNsa19yYW1wX21hcmdpbl9wZXJjZW50 OwotCQlkb3VibGUgZGlzcGNsa19tYXJnaW5lZDsKLQotCQlpZiAoZTJlW2ldLnBpcGUuc3JjLmlz X2hzcGxpdCkKLQkJCW51bV9kcHBfaW5fZ3JwID0gKGRvdWJsZSkgZHBwX2luX2dycCgKLQkJCQkJ ZTJlLAotCQkJCQludW1fcGlwZXMsCi0JCQkJCWUyZVtpXS5waXBlLnNyYy5oc3BsaXRfZ3JwKTsK LQkJZWxzZQotCQkJbnVtX2RwcF9pbl9ncnAgPSAxOwotCi0JCWNhbGN1bGF0ZV9waXBlX2Nsa19y ZXF1aXJlbWVudCgKLQkJCQltb2RlX2xpYiwKLQkJCQkmZTJlW2ldLAotCQkJCW51bV9kcHBfaW5f Z3JwLAotCQkJCSZkcHBjbGtzW2ldLAotCQkJCSZkaXNwY2xrc1tpXSwKLQkJCQkmZHBwZGl2W2ld KTsKLQotCQlkaXNwY2xrX3JhbXBfbWFyZ2luX3BlcmNlbnQgPSBtb2RlX2xpYi0+aXAuZGlzcGNs a19yYW1wX21hcmdpbl9wZXJjZW50OwotCi0JCWRpc3BjbGtfbWFyZ2luZWQgPSBlMmVbaV0ucGlw ZS5kZXN0LnBpeGVsX3JhdGVfbWh6Ci0JCQkJKiAoMS4wICsgKGRvdWJsZSkgbW9kZV9saWItPnNv Yy5kb3duc3ByZWFkX3BlcmNlbnQgLyAxMDAuMCkKLQkJCQkqICgxLjAgKyAoZG91YmxlKSBkaXNw Y2xrX3JhbXBfbWFyZ2luX3BlcmNlbnQgLyAxMDAuMCk7Ci0KLQkJRFRSQUNFKCJwJWQ6IHJlcXVl c3RlZCBwb3dlciBzdGF0ZTogJWQiLCBpLCAoaW50KSBlMmVbMF0uY2xrc19jZmcudm9sdGFnZSk7 Ci0KLQkJaWYgKHBvd2VyX3N0YXRlKG1vZGVfbGliLCBkaXNwY2xrc1tpXSwgZHBwY2xrc1tpXSkK LQkJCQk+IHBvd2VyX3N0YXRlKG1vZGVfbGliLCBkaXNwY2xrX21hcmdpbmVkLCBkaXNwY2xrX21h cmdpbmVkKQotCQkJCSYmIGRpc3BjbGtfbWFyZ2luZWQgPiBkcHBjbGtzW2ldKSB7Ci0JCQlpZiAo cG93ZXJfc3RhdGUobW9kZV9saWIsIGRpc3BjbGtzW2ldLCBkcHBjbGtzW2ldKQotCQkJCQk+IGUy ZVswXS5jbGtzX2NmZy52b2x0YWdlKSB7Ci0JCQkJZGlzcGNsa3NbaV0gPSBkaXNwY2xrX21hcmdp bmVkOwotCQkJCWRwcGNsa3NbaV0gPSBkaXNwY2xrX21hcmdpbmVkOwotCQkJCWRwcGRpdltpXSA9 IGZhbHNlOwotCQkJfQotCQl9Ci0KLQkJRFRSQUNFKCJwJWQ6IGRpc3BjbGs6ICVmIiwgaSwgZGlz cGNsa3NbaV0pOwotCX0KLX0KLQotc3RhdGljIHZvaWQgZ2V0X2RjZmNsaygKLQkJc3RydWN0IGRp c3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLAotCQlzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9lMmVf cGlwZV9wYXJhbXNfc3QgKmUyZSwKLQkJdW5zaWduZWQgaW50IG51bV9waXBlcywKLQkJZG91Ymxl ICpkY2ZjbGtfbWh6KQotewotCWRvdWJsZSBieXRlc19wZXJfcGl4ZWxfZGV0X3lbRENfX05VTV9Q SVBFU19fTUFYXTsKLQlkb3VibGUgYnl0ZXNfcGVyX3BpeGVsX2RldF9jW0RDX19OVU1fUElQRVNf X01BWF07Ci0JZG91YmxlIHN3YXRoX3dpZHRoX3lbRENfX05VTV9QSVBFU19fTUFYXTsKLQl1bnNp Z25lZCBpbnQgaTsKLQlkb3VibGUgdG90YWxfcmVhZF9iYW5kd2lkdGhfZ2JwcyA9IDAuMDsKLQot CWZvciAoaSA9IDA7IGkgPCBudW1fcGlwZXM7IGkrKykgewotCQlpZiAoZTJlW2ldLnBpcGUuc3Jj LnNvdXJjZV9zY2FuID09IGRtX2hvcnopIHsKLQkJCXN3YXRoX3dpZHRoX3lbaV0gPSBlMmVbaV0u cGlwZS5zcmMudmlld3BvcnRfd2lkdGggKiAxLjA7Ci0JCX0gZWxzZSB7Ci0JCQlzd2F0aF93aWR0 aF95W2ldID0gZTJlW2ldLnBpcGUuc3JjLnZpZXdwb3J0X2hlaWdodCAqIDEuMDsKLQkJfQotCi0J CXN3aXRjaCAoZTJlW2ldLnBpcGUuc3JjLnNvdXJjZV9mb3JtYXQpIHsKLQkJY2FzZSBkbV80NDRf NjQ6Ci0JCQlieXRlc19wZXJfcGl4ZWxfZGV0X3lbaV0gPSA4LjA7Ci0JCQlieXRlc19wZXJfcGl4 ZWxfZGV0X2NbaV0gPSAwLjA7Ci0JCQlicmVhazsKLQkJY2FzZSBkbV80NDRfMzI6Ci0JCQlieXRl c19wZXJfcGl4ZWxfZGV0X3lbaV0gPSA0LjA7Ci0JCQlieXRlc19wZXJfcGl4ZWxfZGV0X2NbaV0g PSAwLjA7Ci0JCQlicmVhazsKLQkJY2FzZSBkbV80NDRfMTY6Ci0JCQlieXRlc19wZXJfcGl4ZWxf ZGV0X3lbaV0gPSAyLjA7Ci0JCQlieXRlc19wZXJfcGl4ZWxfZGV0X2NbaV0gPSAwLjA7Ci0JCQli cmVhazsKLQkJY2FzZSBkbV80MjJfODoKLQkJCWJ5dGVzX3Blcl9waXhlbF9kZXRfeVtpXSA9IDIu MDsKLQkJCWJ5dGVzX3Blcl9waXhlbF9kZXRfY1tpXSA9IDAuMDsKLQkJCWJyZWFrOwotCQljYXNl IGRtXzQyMl8xMDoKLQkJCWJ5dGVzX3Blcl9waXhlbF9kZXRfeVtpXSA9IDQuMDsKLQkJCWJ5dGVz X3Blcl9waXhlbF9kZXRfY1tpXSA9IDAuMDsKLQkJCWJyZWFrOwotCQljYXNlIGRtXzQyMF84Ogot CQkJYnl0ZXNfcGVyX3BpeGVsX2RldF95W2ldID0gMS4wOwotCQkJYnl0ZXNfcGVyX3BpeGVsX2Rl dF9jW2ldID0gMi4wOwotCQkJYnJlYWs7Ci0JCWNhc2UgZG1fNDIwXzEwOgotCQkJYnl0ZXNfcGVy X3BpeGVsX2RldF95W2ldID0gNC4wIC8gMy4wOwotCQkJYnl0ZXNfcGVyX3BpeGVsX2RldF9jW2ld ID0gOC4wIC8gMy4wOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlCUkVBS19UT19ERUJVR0dF UigpOyAvKiBpbnZhbGlkIHNyY19mb3JtYXQgaW4gZ2V0X2RjZmNsayAqLwotCQl9Ci0JfQotCi0J Zm9yIChpID0gMDsgaSA8IG51bV9waXBlczsgaSsrKSB7Ci0JCWRvdWJsZSByZWFkX2JhbmR3aWR0 aF9wbGFuZV9tYnBzID0gMC4wOwotCQlyZWFkX2JhbmR3aWR0aF9wbGFuZV9tYnBzID0gKGRvdWJs ZSkgc3dhdGhfd2lkdGhfeVtpXQotCQkJCSogKChkb3VibGUpIGJ5dGVzX3Blcl9waXhlbF9kZXRf eVtpXQotCQkJCQkJKyAoZG91YmxlKSBieXRlc19wZXJfcGl4ZWxfZGV0X2NbaV0gLyAyLjApCi0J CQkJLyAoKGRvdWJsZSkgZTJlW2ldLnBpcGUuZGVzdC5odG90YWwKLQkJCQkJCS8gKGRvdWJsZSkg ZTJlW2ldLnBpcGUuZGVzdC5waXhlbF9yYXRlX21oeikKLQkJCQkqIGUyZVtpXS5waXBlLnNjYWxl X3JhdGlvX2RlcHRoLnZzY2xfcmF0aW87Ci0KLQkJaWYgKGUyZVtpXS5waXBlLnNyYy5kY2MpIHsK LQkJCXJlYWRfYmFuZHdpZHRoX3BsYW5lX21icHMgKz0gKHJlYWRfYmFuZHdpZHRoX3BsYW5lX21i cHMgLyAxMDAwLjAgLyAyNTYuMCk7Ci0JCX0KLQotCQlpZiAoZTJlW2ldLnBpcGUuc3JjLnZtKSB7 Ci0JCQlyZWFkX2JhbmR3aWR0aF9wbGFuZV9tYnBzICs9IChyZWFkX2JhbmR3aWR0aF9wbGFuZV9t YnBzIC8gMTAwMC4wIC8gNTEyLjApOwotCQl9Ci0KLQkJdG90YWxfcmVhZF9iYW5kd2lkdGhfZ2Jw cyA9IHRvdGFsX3JlYWRfYmFuZHdpZHRoX2dicHMKLQkJCQkrIHJlYWRfYmFuZHdpZHRoX3BsYW5l X21icHMgLyAxMDAwLjA7Ci0JfQotCi0JRFRSQUNFKCJ0b3RhbCBiYW5kd2lkdGggPSAlZiBnYnBz IiwgdG90YWxfcmVhZF9iYW5kd2lkdGhfZ2Jwcyk7Ci0KLQkoKmRjZmNsa19taHopID0gKHRvdGFs X3JlYWRfYmFuZHdpZHRoX2dicHMgKiAxMDAwLjApIC8gbW9kZV9saWItPnNvYy5yZXR1cm5fYnVz X3dpZHRoX2J5dGVzOwotCi0JRFRSQUNFKAotCQkJIm1pbmltdW0gdGhlb3JldGljYWwgZGNmY2xr IHdpdGhvdXQgc3R1dHRlciBhbmQgZnVsbCB1dGlsaXphdGlvbiA9ICVmIE1IeiIsCi0JCQkoKmRj ZmNsa19taHopKTsKLQotfQotCi1zdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Nsb2NrX3N0 IGRtbF9jbGtzX2dldF9waXBlX2Nsb2NrcygKLQkJc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1v ZGVfbGliLAotCQlzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKmUy ZSwKLQkJdW5zaWduZWQgaW50IG51bV9waXBlcykKLXsKLQlzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxh eV9waXBlX2Nsb2NrX3N0IGNsb2NrczsKLQlkb3VibGUgbWF4X2Rpc3BjbGsgPSAwLjA7Ci0JZG91 YmxlIGRjZmNsazsKLQlkb3VibGUgZGlzcGNsa3NbRENfX05VTV9QSVBFU19fTUFYXTsKLQlkb3Vi bGUgZHBwY2xrc1tEQ19fTlVNX1BJUEVTX19NQVhdOwotCWJvb2wgZHBwZGl2W0RDX19OVU1fUElQ RVNfX01BWF07Ci0JdW5zaWduZWQgaW50IGk7Ci0KLQlEVFJBQ0UoIkNhbGN1bGF0aW5nIHBpcGUg Y2xvY2tzLi4uIik7Ci0KLQkvKiB0aGlzIGlzIHRoZSB0aGVvcmV0aWNhbCBtaW5pbXVtLCBoYXZl IHRvIGFkanVzdCBiYXNlZCBvbiB2YWxpZCB2YWx1ZXMgZm9yIHNvYyAqLwotCWdldF9kY2ZjbGso bW9kZV9saWIsIGUyZSwgbnVtX3BpcGVzLCAmZGNmY2xrKTsKLQotCS8qICAgIGlmKGRjZmNsayA+ IHNvYy52bm9tLmRjZmNsa19taHopCi0JICogICAgICAgIGRjZmNsayA9IHNvYy52bWF4LmRjZmNs a19taHo7Ci0JICogICAgZWxzZSBpZihkY2ZjbGsgPiBzb2Mudm1pbi5kY2ZjbGtfbWh6KQotCSAq ICAgICAgICBkY2ZjbGsgPSBzb2Mudm5vbS5kY2ZjbGtfbWh6OwotCSAqICAgIGVsc2UKLQkgKiAg ICAgICAgZGNmY2xrID0gc29jLnZtaW4uZGNmY2xrX21oejsKLQkgKi8KLQotCWRjZmNsayA9IGRt bF9zb2NiYl92b2x0YWdlX3NjYWxpbmcoCi0JCQkmbW9kZV9saWItPnNvYywKLQkJCShlbnVtIHZv bHRhZ2Vfc3RhdGUpIGUyZVswXS5jbGtzX2NmZy52b2x0YWdlKS5kY2ZjbGtfbWh6OwotCWNsb2Nr cy5kY2ZjbGtfbWh6ID0gZGNmY2xrOwotCi0JZ2V0X3BsYW5lX2Nsa3MobW9kZV9saWIsIGUyZSwg bnVtX3BpcGVzLCBkcHBjbGtzLCBkaXNwY2xrcywgZHBwZGl2KTsKLQotCWZvciAoaSA9IDA7IGkg PCBudW1fcGlwZXM7IGkrKykgewotCQltYXhfZGlzcGNsayA9IGRtbF9tYXgobWF4X2Rpc3BjbGss IGRpc3BjbGtzW2ldKTsKLQl9Ci0KLQljbG9ja3MuZGlzcGNsa19taHogPSBtYXhfZGlzcGNsazsK LQlEVFJBQ0UoImRpc3BjbGs6ICVmIE1oeiIsIGNsb2Nrcy5kaXNwY2xrX21oeik7Ci0JRFRSQUNF KCJkY2ZjbGs6ICVmIE1oeiIsIGNsb2Nrcy5kY2ZjbGtfbWh6KTsKLQotCWZvciAoaSA9IDA7IGkg PCBudW1fcGlwZXM7IGkrKykgewotCQlpZiAoZHBwY2xrc1tpXSAqIDIgPCBtYXhfZGlzcGNsaykK LQkJCWRwcGRpdltpXSA9IDE7Ci0KLQkJaWYgKGRwcGRpdltpXSkKLQkJCWNsb2Nrcy5kcHBjbGtf ZGl2W2ldID0gMTsKLQkJZWxzZQotCQkJY2xvY2tzLmRwcGNsa19kaXZbaV0gPSAwOwotCi0JCWNs b2Nrcy5kcHBjbGtfbWh6W2ldID0gbWF4X2Rpc3BjbGsgLyAoKGRwcGRpdltpXSkgPyAyLjAgOiAx LjApOwotCQlEVFJBQ0UoImRwcGNsayVkOiAlZiBNaHoiLCBpLCBjbG9ja3MuZHBwY2xrX21oeltp XSk7Ci0JfQotCi0JcmV0dXJuIGNsb2NrczsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kbWwvZGlzcGxheV9waXBlX2Nsb2Nrcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X3BpcGVfY2xvY2tzLmgKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGFlZDVmMzMuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X3BpcGVfY2xvY2tzLmgKKysrIC9kZXYvbnVsbApA QCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMTcgQWR2YW5jZWQgTWljcm8gRGV2 aWNlcywgSW5jLgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAot ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK LSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLSAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotICogVEhF IENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SCi0gKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICogT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqIEF1dGhvcnM6IEFNRAotICoKLSAqLwot I2lmbmRlZiBfX0RJU1BMQVlfUElQRV9DTE9DS1NfSF9fCi0jZGVmaW5lIF9fRElTUExBWV9QSVBF X0NMT0NLU19IX18KLQotI2luY2x1ZGUgImRtbF9jb21tb25fZGVmcy5oIgotCi1zdHJ1Y3QgZGlz cGxheV9tb2RlX2xpYjsKLQotc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9jbG9ja19zdCBk bWxfY2xrc19nZXRfcGlwZV9jbG9ja3MoCi0JCXN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2Rl X2xpYiwKLQkJc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICplMmUs Ci0JCXVuc2lnbmVkIGludCBudW1fcGlwZXMpOwotCi1ib29sIGRtbF9jbGtzX3BpcGVfY2xvY2tf cmVxdWlyZW1lbnRfZml0X3Bvd2VyX2NvbnN0cmFpbnQoCi0JCXN0cnVjdCBkaXNwbGF5X21vZGVf bGliICptb2RlX2xpYiwKLQkJc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICplMmUsCi0JCXVuc2lnbmVkIGludCBudW1fZHBwX2luX2dycCk7Ci0jZW5kaWYKLS0gCjIu OS40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQt Z2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK