From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH 5/6] drm/mediatek: Convert to use CMA helpers Date: Mon, 21 Oct 2019 16:45:49 -0500 Message-ID: <20191021214550.1461-6-robh@kernel.org> References: <20191021214550.1461-1-robh@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191021214550.1461-1-robh@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Neil Armstrong , David Airlie , Liviu Dudau , Laurent Pinchart , Yannick Fertre , Kevin Hilman , Xinwei Kong , Xinliang Liu , linux-rockchip@lists.infradead.org, Chen-Yu Tsai , Kieran Bingham , "James (Qian) Wang" , Alexandre Torgue , Chen Feng , linux-mediatek@lists.infradead.org, Matthias Brugger , Sean Paul , linux-arm-kernel@lists.infradead.org, Philippe Cornu , Vincent Abriou , Maxime Coquelin , Rongrong Zou List-Id: linux-rockchip.vger.kernel.org VGhlIG9ubHkgcmVhc29uIHRoZSBNZWRpYXRlayBkcml2ZXIgZG9lc24ndCB1c2UgdGhlIENNQSBo ZWxwZXJzIGlzIGl0CnNldHMgRE1BX0FUVFJfTk9fS0VSTkVMX01BUFBJTkcgYW5kIGRvZXMgYSB2 bWFwKCkgb24gZGVtYW5kLiBVc2luZwp2bWFwKCkgaXMgbm90IGV2ZW4gZ3VhcmFudGVlZCB0byB3 b3JrIGFzIERNQSBidWZmZXJzIG1heSBub3QgaGF2ZSBhCnN0cnVjdCBwYWdlLiBOb3cgdGhhdCB0 aGUgQ01BIGhlbHBlcnMgc3VwcG9ydCBzZXR0aW5nCkRNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5H IGFzIG5lZWRlZCBvciBub3QsIGNvbnZlcnQgTWVkaWF0ZWsgZHJpdmVyIHRvCnVzZSBDTUEgaGVs cGVycy4KCkNjOiBDSyBIdSA8Y2suaHVAbWVkaWF0ZWsuY29tPgpDYzogUGhpbGlwcCBaYWJlbCA8 cC56YWJlbEBwZW5ndXRyb25peC5kZT4KQ2M6IERhdmlkIEFpcmxpZSA8YWlybGllZEBsaW51eC5p ZT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KQ2M6IE1hdHRoaWFzIEJydWdn ZXIgPG1hdHRoaWFzLmJnZ0BnbWFpbC5jb20+CkNjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKQ2M6IGxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcKU2lnbmVk LW9mZi1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2NydGMuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2Rydi5jICAgfCAgMjggKy0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9mYi5jICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2dlbS5j ICAgfCAyODkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2dlbS5oICAgfCAgNTEgLS0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fcGxhbmUuYyB8ICAgNyArLQogNyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCsp LCAzNjQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZ2VtLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9nZW0uaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQppbmRleCA4 MmFlNDljNjQyMjEuLjUwYTUwZTg2NzM4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQpA QCAtOCw3ICs4LDYgQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3BfY29sb3IubyBcCiAJCSAg bXRrX2RybV9kZHBfY29tcC5vIFwKIAkJICBtdGtfZHJtX2Rydi5vIFwKIAkJICBtdGtfZHJtX2Zi Lm8gXAotCQkgIG10a19kcm1fZ2VtLm8gXAogCQkgIG10a19kcm1fcGxhbmUubyBcCiAJCSAgbXRr X2RzaS5vIFwKIAkJICBtdGtfbWlwaV90eC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2NydGMuYwppbmRleCAzNGE3MzE3NTU3OTEuLjYzOGQ1N2U4YWMxMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYwpAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxw ZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wcm9i ZV9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgogCkBAIC0xOCw3ICsxOSw2 IEBACiAjaW5jbHVkZSAibXRrX2RybV9jcnRjLmgiCiAjaW5jbHVkZSAibXRrX2RybV9kZHAuaCIK ICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCi0jaW5jbHVkZSAibXRrX2RybV9nZW0uaCIK ICNpbmNsdWRlICJtdGtfZHJtX3BsYW5lLmgiCiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kcnYuYwppbmRleCAzNTJiODFhN2E2NzAuLjM2ZjMyNTA3ZTVmYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRl ICJtdGtfZHJtX2RkcF9jb21wLmgiCiAjaW5jbHVkZSAibXRrX2RybV9kcnYuaCIKICNpbmNsdWRl ICJtdGtfZHJtX2ZiLmgiCi0jaW5jbHVkZSAibXRrX2RybV9nZW0uaCIKIAogI2RlZmluZSBEUklW RVJfTkFNRSAibWVkaWF0ZWsiCiAjZGVmaW5lIERSSVZFUl9ERVNDICJNZWRpYXRlayBTb0MgRFJN IgpAQCAtMzM1LDE2ICszMzQsMTQgQEAgc3RhdGljIHZvaWQgbXRrX2RybV9rbXNfZGVpbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0pCiAJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKIH0K IAotc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbXRrX2RybV9mb3BzID0gewot CS5vd25lciA9IFRISVNfTU9EVUxFLAotCS5vcGVuID0gZHJtX29wZW4sCi0JLnJlbGVhc2UgPSBk cm1fcmVsZWFzZSwKLQkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsCi0JLm1tYXAgPSBtdGtf ZHJtX2dlbV9tbWFwLAotCS5wb2xsID0gZHJtX3BvbGwsCi0JLnJlYWQgPSBkcm1fcmVhZCwKLQku Y29tcGF0X2lvY3RsID0gZHJtX2NvbXBhdF9pb2N0bCwKLX07CitERUZJTkVfRFJNX0dFTV9DTUFf Rk9QUyhtdGtfZHJtX2ZvcHMpOworCitzdGF0aWMgaW50IG10a19kcm1fZ2VtX2R1bWJfY3JlYXRl KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJCSAgIHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCisJCQkJICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKQoreworCXJldHVy biBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZV9pbnRlcm5hbChmaWxlX3ByaXYsIGRldiwgYXJncyk7 Cit9CiAKIC8qCiAgKiBXZSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgYmVjYXVzZSB0aGUgZGV2aWNl IHVzZWQgdG8gaW1wb3J0IHRoZSBtZW1vcnkgaXMKQEAgLTM2MSwxOCArMzU4LDE1IEBAIHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqbXRrX2RybV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgbXRrX2RybV9kcml2ZXIgPSB7CiAJ LmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9B VE9NSUMsCiAKLQkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gbXRrX2RybV9nZW1fZnJlZV9v YmplY3QsCiAJLmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5nZW1fY3JlYXRl X29iamVjdCA9IGRybV9jbWFfZ2VtX2NyZWF0ZV9vYmplY3RfZGVmYXVsdF9mdW5jcywKIAkuZHVt Yl9jcmVhdGUgPSBtdGtfZHJtX2dlbV9kdW1iX2NyZWF0ZSwKIAogCS5wcmltZV9oYW5kbGVfdG9f ZmQgPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCwKIAkucHJpbWVfZmRfdG9faGFuZGxlID0g ZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUsCiAJLmdlbV9wcmltZV9pbXBvcnQgPSBtdGtfZHJt X2dlbV9wcmltZV9pbXBvcnQsCi0JLmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSBtdGtfZ2VtX3By aW1lX2dldF9zZ190YWJsZSwKLQkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IG10a19nZW1f cHJpbWVfaW1wb3J0X3NnX3RhYmxlLAotCS5nZW1fcHJpbWVfbW1hcCA9IG10a19kcm1fZ2VtX21t YXBfYnVmLAotCS5nZW1fcHJpbWVfdm1hcCA9IG10a19kcm1fZ2VtX3ByaW1lX3ZtYXAsCi0JLmdl bV9wcmltZV92dW5tYXAgPSBtdGtfZHJtX2dlbV9wcmltZV92dW5tYXAsCisJLmdlbV9wcmltZV9p bXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGVfdm1hcCwK KwkuZ2VtX3ByaW1lX21tYXAgPSBkcm1fZ2VtX3ByaW1lX21tYXAsCiAJLmZvcHMgPSAmbXRrX2Ry bV9mb3BzLAogCiAJLm5hbWUgPSBEUklWRVJfTkFNRSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9mYi5jCmluZGV4IDNmMjMwYTI4YTJkYy4uNTk2YjRkNWVkMDAyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2ZiLmMKQEAgLTE0LDcgKzE0LDYgQEAKIAogI2luY2x1ZGUgIm10 a19kcm1fZHJ2LmgiCiAjaW5jbHVkZSAibXRrX2RybV9mYi5oIgotI2luY2x1ZGUgIm10a19kcm1f Z2VtLmgiCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIG10a19k cm1fZmJfZnVuY3MgPSB7CiAJLmNyZWF0ZV9oYW5kbGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZV9oYW5k bGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2dlbS5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBjYTY3MmYxZDE0MGQuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9nZW0uYworKysgL2Rldi9udWxsCkBAIC0xLDI4OSArMCww IEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogQ29w eXJpZ2h0IChjKSAyMDE1IE1lZGlhVGVrIEluYy4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgvZG1h LWJ1Zi5oPgotCi0jaW5jbHVkZSA8ZHJtL2RybS5oPgotI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNl Lmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KLSNpbmNsdWRlIDxkcm0vZHJtX3ByaW1lLmg+ Ci0KLSNpbmNsdWRlICJtdGtfZHJtX2Rydi5oIgotI2luY2x1ZGUgIm10a19kcm1fZ2VtLmgiCi0K LXN0YXRpYyBzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICptdGtfZHJtX2dlbV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCi0JCQkJCQl1bnNpZ25lZCBsb25nIHNpemUpCi17Ci0Jc3RydWN0IG10 a19kcm1fZ2VtX29iaiAqbXRrX2dlbV9vYmo7Ci0JaW50IHJldDsKLQotCXNpemUgPSByb3VuZF91 cChzaXplLCBQQUdFX1NJWkUpOwotCi0JbXRrX2dlbV9vYmogPSBremFsbG9jKHNpemVvZigqbXRr X2dlbV9vYmopLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW10a19nZW1fb2JqKQotCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKLQotCXJldCA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmbXRrX2dl bV9vYmotPmJhc2UsIHNpemUpOwotCWlmIChyZXQgPCAwKSB7Ci0JCURSTV9FUlJPUigiZmFpbGVk IHRvIGluaXRpYWxpemUgZ2VtIG9iamVjdFxuIik7Ci0JCWtmcmVlKG10a19nZW1fb2JqKTsKLQkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKLQl9Ci0KLQlyZXR1cm4gbXRrX2dlbV9vYmo7Ci19Ci0KLXN0 cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10a19kcm1fZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAotCQkJCQkgICBzaXplX3Qgc2l6ZSwgYm9vbCBhbGxvY19rbWFwKQotewotCXN0cnVj dCBtdGtfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBtdGtf ZHJtX2dlbV9vYmogKm10a19nZW07Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Ci0JaW50 IHJldDsKLQotCW10a19nZW0gPSBtdGtfZHJtX2dlbV9pbml0KGRldiwgc2l6ZSk7Ci0JaWYgKElT X0VSUihtdGtfZ2VtKSkKLQkJcmV0dXJuIEVSUl9DQVNUKG10a19nZW0pOwotCi0Jb2JqID0gJm10 a19nZW0tPmJhc2U7Ci0KLQltdGtfZ2VtLT5kbWFfYXR0cnMgPSBETUFfQVRUUl9XUklURV9DT01C SU5FOwotCi0JaWYgKCFhbGxvY19rbWFwKQotCQltdGtfZ2VtLT5kbWFfYXR0cnMgfD0gRE1BX0FU VFJfTk9fS0VSTkVMX01BUFBJTkc7Ci0KLQltdGtfZ2VtLT5jb29raWUgPSBkbWFfYWxsb2NfYXR0 cnMocHJpdi0+ZG1hX2Rldiwgb2JqLT5zaXplLAotCQkJCQkgICZtdGtfZ2VtLT5kbWFfYWRkciwg R0ZQX0tFUk5FTCwKLQkJCQkJICBtdGtfZ2VtLT5kbWFfYXR0cnMpOwotCWlmICghbXRrX2dlbS0+ Y29va2llKSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlICV6eCBieXRlIGRtYSBi dWZmZXIiLCBvYmotPnNpemUpOwotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGVycl9nZW1fZnJl ZTsKLQl9Ci0KLQlpZiAoYWxsb2Nfa21hcCkKLQkJbXRrX2dlbS0+a3ZhZGRyID0gbXRrX2dlbS0+ Y29va2llOwotCi0JRFJNX0RFQlVHX0RSSVZFUigiY29va2llID0gJXAgZG1hX2FkZHIgPSAlcGFk IHNpemUgPSAlenVcbiIsCi0JCQkgbXRrX2dlbS0+Y29va2llLCAmbXRrX2dlbS0+ZG1hX2FkZHIs Ci0JCQkgc2l6ZSk7Ci0KLQlyZXR1cm4gbXRrX2dlbTsKLQotZXJyX2dlbV9mcmVlOgotCWRybV9n ZW1fb2JqZWN0X3JlbGVhc2Uob2JqKTsKLQlrZnJlZShtdGtfZ2VtKTsKLQlyZXR1cm4gRVJSX1BU UihyZXQpOwotfQotCi12b2lkIG10a19kcm1fZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKQotewotCXN0cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10a19nZW0gPSB0b19t dGtfZ2VtX29iaihvYmopOwotCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXYgPSBvYmotPmRl di0+ZGV2X3ByaXZhdGU7Ci0KLQlpZiAobXRrX2dlbS0+c2cpCi0JCWRybV9wcmltZV9nZW1fZGVz dHJveShvYmosIG10a19nZW0tPnNnKTsKLQllbHNlCi0JCWRtYV9mcmVlX2F0dHJzKHByaXYtPmRt YV9kZXYsIG9iai0+c2l6ZSwgbXRrX2dlbS0+Y29va2llLAotCQkJICAgICAgIG10a19nZW0tPmRt YV9hZGRyLCBtdGtfZ2VtLT5kbWFfYXR0cnMpOwotCi0JLyogcmVsZWFzZSBmaWxlIHBvaW50ZXIg dG8gZ2VtIG9iamVjdC4gKi8KLQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKG9iaik7Ci0KLQlrZnJl ZShtdGtfZ2VtKTsKLX0KLQotaW50IG10a19kcm1fZ2VtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJICAgIHN0cnVjdCBk cm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykKLXsKLQlzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICpt dGtfZ2VtOwotCWludCByZXQ7Ci0KLQlhcmdzLT5waXRjaCA9IERJVl9ST1VORF9VUChhcmdzLT53 aWR0aCAqIGFyZ3MtPmJwcCwgOCk7Ci0JYXJncy0+c2l6ZSA9IGFyZ3MtPnBpdGNoICogYXJncy0+ aGVpZ2h0OwotCi0JbXRrX2dlbSA9IG10a19kcm1fZ2VtX2NyZWF0ZShkZXYsIGFyZ3MtPnNpemUs IGZhbHNlKTsKLQlpZiAoSVNfRVJSKG10a19nZW0pKQotCQlyZXR1cm4gUFRSX0VSUihtdGtfZ2Vt KTsKLQotCS8qCi0JICogYWxsb2NhdGUgYSBpZCBvZiBpZHIgdGFibGUgd2hlcmUgdGhlIG9iaiBp cyByZWdpc3RlcmVkCi0JICogYW5kIGhhbmRsZSBoYXMgdGhlIGlkIHdoYXQgdXNlciBjYW4gc2Vl LgotCSAqLwotCXJldCA9IGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlX3ByaXYsICZtdGtfZ2Vt LT5iYXNlLCAmYXJncy0+aGFuZGxlKTsKLQlpZiAocmV0KQotCQlnb3RvIGVycl9oYW5kbGVfY3Jl YXRlOwotCi0JLyogZHJvcCByZWZlcmVuY2UgZnJvbSBhbGxvY2F0ZSAtIGhhbmRsZSBob2xkcyBp dCBub3cuICovCi0JZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZtdGtfZ2VtLT5iYXNlKTsK LQotCXJldHVybiAwOwotCi1lcnJfaGFuZGxlX2NyZWF0ZToKLQltdGtfZHJtX2dlbV9mcmVlX29i amVjdCgmbXRrX2dlbS0+YmFzZSk7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBtdGtf ZHJtX2dlbV9vYmplY3RfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgICBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKLQotewotCWludCByZXQ7Ci0Jc3RydWN0IG10a19k cm1fZ2VtX29iaiAqbXRrX2dlbSA9IHRvX210a19nZW1fb2JqKG9iaik7Ci0Jc3RydWN0IG10a19k cm1fcHJpdmF0ZSAqcHJpdiA9IG9iai0+ZGV2LT5kZXZfcHJpdmF0ZTsKLQotCS8qCi0JICogZG1h X2FsbG9jX2F0dHJzKCkgYWxsb2NhdGVkIGEgc3RydWN0IHBhZ2UgdGFibGUgZm9yIG10a19nZW0s IHNvIGNsZWFyCi0JICogVk1fUEZOTUFQIGZsYWcgdGhhdCB3YXMgc2V0IGJ5IGRybV9nZW1fbW1h cF9vYmooKS9kcm1fZ2VtX21tYXAoKS4KLQkgKi8KLQl2bWEtPnZtX2ZsYWdzICY9IH5WTV9QRk5N QVA7Ci0KLQlyZXQgPSBkbWFfbW1hcF9hdHRycyhwcml2LT5kbWFfZGV2LCB2bWEsIG10a19nZW0t PmNvb2tpZSwKLQkJCSAgICAgbXRrX2dlbS0+ZG1hX2FkZHIsIG9iai0+c2l6ZSwgbXRrX2dlbS0+ ZG1hX2F0dHJzKTsKLQlpZiAocmV0KQotCQlkcm1fZ2VtX3ZtX2Nsb3NlKHZtYSk7Ci0KLQlyZXR1 cm4gcmV0OwotfQotCi1pbnQgbXRrX2RybV9nZW1fbW1hcF9idWYoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQotewotCWludCByZXQ7Ci0KLQly ZXQgPSBkcm1fZ2VtX21tYXBfb2JqKG9iaiwgb2JqLT5zaXplLCB2bWEpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gbXRrX2RybV9nZW1fb2JqZWN0X21tYXAob2JqLCB2bWEp OwotfQotCi1pbnQgbXRrX2RybV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEpCi17Ci0Jc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Ci0JaW50 IHJldDsKLQotCXJldCA9IGRybV9nZW1fbW1hcChmaWxwLCB2bWEpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KLQlvYmogPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKLQotCS8qCi0JICogU2V0 IHZtX3Bnb2ZmICh1c2VkIGFzIGEgZmFrZSBidWZmZXIgb2Zmc2V0IGJ5IERSTSkgdG8gMCBhbmQg bWFwIHRoZQotCSAqIHdob2xlIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KLQkgKi8KLQl2bWEtPnZt X3Bnb2ZmID0gMDsKLQotCXJldHVybiBtdGtfZHJtX2dlbV9vYmplY3RfbW1hcChvYmosIHZtYSk7 Ci19Ci0KLS8qCi0gKiBBbGxvY2F0ZSBhIHNnX3RhYmxlIGZvciB0aGlzIEdFTSBvYmplY3QuCi0g KiBOb3RlOiBCb3RoIHRoZSB0YWJsZSdzIGNvbnRlbnRzLCBhbmQgdGhlIHNnX3RhYmxlIGl0c2Vs ZiBtdXN0IGJlIGZyZWVkIGJ5Ci0gKiAgICAgICB0aGUgY2FsbGVyLgotICogUmV0dXJucyBhIHBv aW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBzZ190YWJsZSwgb3IgYW4gRVJSX1BUUigpIGVy cm9yLgotICovCi1zdHJ1Y3Qgc2dfdGFibGUgKm10a19nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10 a19nZW0gPSB0b19tdGtfZ2VtX29iaihvYmopOwotCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnBy aXYgPSBvYmotPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IHNnX3RhYmxlICpzZ3Q7Ci0JaW50 IHJldDsKLQotCXNndCA9IGt6YWxsb2Moc2l6ZW9mKCpzZ3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAo IXNndCkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQlyZXQgPSBkbWFfZ2V0X3NndGFi bGVfYXR0cnMocHJpdi0+ZG1hX2Rldiwgc2d0LCBtdGtfZ2VtLT5jb29raWUsCi0JCQkJICAgIG10 a19nZW0tPmRtYV9hZGRyLCBvYmotPnNpemUsCi0JCQkJICAgIG10a19nZW0tPmRtYV9hdHRycyk7 Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBzZ3QsICVkXG4i LCByZXQpOwotCQlrZnJlZShzZ3QpOwotCQlyZXR1cm4gRVJSX1BUUihyZXQpOwotCX0KLQotCXJl dHVybiBzZ3Q7Ci19Ci0KLXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqbXRrX2dlbV9wcmltZV9pbXBv cnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCXN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCwgc3RydWN0IHNnX3RhYmxlICpzZykKLXsKLQlzdHJ1Y3QgbXRrX2Ry bV9nZW1fb2JqICptdGtfZ2VtOwotCWludCByZXQ7Ci0Jc3RydWN0IHNjYXR0ZXJsaXN0ICpzOwot CXVuc2lnbmVkIGludCBpOwotCWRtYV9hZGRyX3QgZXhwZWN0ZWQ7Ci0KLQltdGtfZ2VtID0gbXRr X2RybV9nZW1faW5pdChkZXYsIGF0dGFjaC0+ZG1hYnVmLT5zaXplKTsKLQotCWlmIChJU19FUlIo bXRrX2dlbSkpCi0JCXJldHVybiBFUlJfQ0FTVChtdGtfZ2VtKTsKLQotCWV4cGVjdGVkID0gc2df ZG1hX2FkZHJlc3Moc2ctPnNnbCk7Ci0JZm9yX2VhY2hfc2coc2ctPnNnbCwgcywgc2ctPm5lbnRz LCBpKSB7Ci0JCWlmIChzZ19kbWFfYWRkcmVzcyhzKSAhPSBleHBlY3RlZCkgewotCQkJRFJNX0VS Uk9SKCJzZ190YWJsZSBpcyBub3QgY29udGlndW91cyIpOwotCQkJcmV0ID0gLUVJTlZBTDsKLQkJ CWdvdG8gZXJyX2dlbV9mcmVlOwotCQl9Ci0JCWV4cGVjdGVkID0gc2dfZG1hX2FkZHJlc3Mocykg KyBzZ19kbWFfbGVuKHMpOwotCX0KLQotCW10a19nZW0tPmRtYV9hZGRyID0gc2dfZG1hX2FkZHJl c3Moc2ctPnNnbCk7Ci0JbXRrX2dlbS0+c2cgPSBzZzsKLQotCXJldHVybiAmbXRrX2dlbS0+YmFz ZTsKLQotZXJyX2dlbV9mcmVlOgotCWtmcmVlKG10a19nZW0pOwotCXJldHVybiBFUlJfUFRSKHJl dCk7Ci19Ci0KLXZvaWQgKm10a19kcm1fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopCi17Ci0Jc3RydWN0IG10a19kcm1fZ2VtX29iaiAqbXRrX2dlbSA9IHRvX210a19n ZW1fb2JqKG9iaik7Ci0Jc3RydWN0IHNnX3RhYmxlICpzZ3Q7Ci0Jc3RydWN0IHNnX3BhZ2VfaXRl ciBpdGVyOwotCXVuc2lnbmVkIGludCBucGFnZXM7Ci0JdW5zaWduZWQgaW50IGkgPSAwOwotCi0J aWYgKG10a19nZW0tPmt2YWRkcikKLQkJcmV0dXJuIG10a19nZW0tPmt2YWRkcjsKLQotCXNndCA9 IG10a19nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKG9iaik7Ci0JaWYgKElTX0VSUihzZ3QpKQotCQly ZXR1cm4gTlVMTDsKLQotCW5wYWdlcyA9IG9iai0+c2l6ZSA+PiBQQUdFX1NISUZUOwotCW10a19n ZW0tPnBhZ2VzID0ga2NhbGxvYyhucGFnZXMsIHNpemVvZigqbXRrX2dlbS0+cGFnZXMpLCBHRlBf S0VSTkVMKTsKLQlpZiAoIW10a19nZW0tPnBhZ2VzKQotCQlnb3RvIG91dDsKLQotCWZvcl9lYWNo X3NnX3BhZ2Uoc2d0LT5zZ2wsICZpdGVyLCBzZ3QtPm9yaWdfbmVudHMsIDApIHsKLQkJbXRrX2dl bS0+cGFnZXNbaSsrXSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZpdGVyKTsKLQkJaWYgKGkgPiBucGFn ZXMpCi0JCQlicmVhazsKLQl9Ci0JbXRrX2dlbS0+a3ZhZGRyID0gdm1hcChtdGtfZ2VtLT5wYWdl cywgbnBhZ2VzLCBWTV9NQVAsCi0JCQkgICAgICAgcGdwcm90X3dyaXRlY29tYmluZShQQUdFX0tF Uk5FTCkpOwotCi1vdXQ6Ci0Ja2ZyZWUoKHZvaWQgKilzZ3QpOwotCi0JcmV0dXJuIG10a19nZW0t Pmt2YWRkcjsKLX0KLQotdm9pZCBtdGtfZHJtX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQotewotCXN0cnVjdCBtdGtfZHJtX2dlbV9vYmog Km10a19nZW0gPSB0b19tdGtfZ2VtX29iaihvYmopOwotCi0JaWYgKCFtdGtfZ2VtLT5wYWdlcykK LQkJcmV0dXJuOwotCi0JdnVubWFwKHZhZGRyKTsKLQltdGtfZ2VtLT5rdmFkZHIgPSAwOwotCWtm cmVlKCh2b2lkICopbXRrX2dlbS0+cGFnZXMpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9nZW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5Zjk3NmQ5ODA3Li4w MDAwMDAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmgK KysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5ICovCi0vKgotICogQ29weXJpZ2h0IChjKSAyMDE1IE1lZGlhVGVrIElu Yy4KLSAqLwotCi0jaWZuZGVmIF9NVEtfRFJNX0dFTV9IXwotI2RlZmluZSBfTVRLX0RSTV9HRU1f SF8KLQotI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Ci0KLS8qCi0gKiBtdGsgZHJtIGJ1ZmZlciBz dHJ1Y3R1cmUuCi0gKgotICogQGJhc2U6IGEgZ2VtIG9iamVjdC4KLSAqCS0gYSBuZXcgaGFuZGxl IHRvIHRoaXMgZ2VtIG9iamVjdCB3b3VsZCBiZSBjcmVhdGVkCi0gKglieSBkcm1fZ2VtX2hhbmRs ZV9jcmVhdGUoKS4KLSAqIEBjb29raWU6IHRoZSByZXR1cm4gdmFsdWUgb2YgZG1hX2FsbG9jX2F0 dHJzKCksIGtlZXAgaXQgZm9yIGRtYV9mcmVlX2F0dHJzKCkKLSAqIEBrdmFkZHI6IGtlcm5lbCB2 aXJ0dWFsIGFkZHJlc3Mgb2YgZ2VtIGJ1ZmZlci4KLSAqIEBkbWFfYWRkcjogZG1hIGFkZHJlc3Mg b2YgZ2VtIGJ1ZmZlci4KLSAqIEBkbWFfYXR0cnM6IGRtYSBhdHRyaWJ1dGVzIG9mIGdlbSBidWZm ZXIuCi0gKgotICogUC5TLiB0aGlzIG9iamVjdCB3b3VsZCBiZSB0cmFuc2ZlcnJlZCB0byB1c2Vy IGFzIGttc19iby5oYW5kbGUgc28KLSAqCXVzZXIgY2FuIGFjY2VzcyB0aGUgYnVmZmVyIHRocm91 Z2gga21zX2JvLmhhbmRsZS4KLSAqLwotc3RydWN0IG10a19kcm1fZ2VtX29iaiB7Ci0Jc3RydWN0 IGRybV9nZW1fb2JqZWN0CWJhc2U7Ci0Jdm9pZAkJCSpjb29raWU7Ci0Jdm9pZAkJCSprdmFkZHI7 Ci0JZG1hX2FkZHJfdAkJZG1hX2FkZHI7Ci0JdW5zaWduZWQgbG9uZwkJZG1hX2F0dHJzOwotCXN0 cnVjdCBzZ190YWJsZQkJKnNnOwotCXN0cnVjdCBwYWdlCQkqKnBhZ2VzOwotfTsKLQotI2RlZmlu ZSB0b19tdGtfZ2VtX29iaih4KQljb250YWluZXJfb2YoeCwgc3RydWN0IG10a19kcm1fZ2VtX29i aiwgYmFzZSkKLQotdm9pZCBtdGtfZHJtX2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdlbSk7Ci1zdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICptdGtfZHJtX2dlbV9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCi0JCQkJCSAgIGJvb2wgYWxsb2Nf a21hcCk7Ci1pbnQgbXRrX2RybV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgc3RydWN0IGRybV9tb2RlX2Ny ZWF0ZV9kdW1iICphcmdzKTsKLWludCBtdGtfZHJtX2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxw LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Ci1pbnQgbXRrX2RybV9nZW1fbW1hcF9idWYo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCi0JCQkgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEpOwotc3RydWN0IHNnX3RhYmxlICptdGtfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaik7Ci1zdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm10a19nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQlzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2gsIHN0cnVjdCBzZ190YWJsZSAqc2cpOwotdm9pZCAqbXRr X2RybV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIG10 a19kcm1fZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAq dmFkZHIpOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9wbGFuZS5j CmluZGV4IDU4NGE5ZWNhZGNlNi4uOGYyNTY2MDJmMDc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX3BsYW5lLmMKQEAgLTgsMTMgKzgsMTQgQEAKICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgogI2luY2x1ZGUg PGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9m cmFtZWJ1ZmZlcl9oZWxwZXIuaD4KIAogI2luY2x1ZGUgIm10a19kcm1fY3J0Yy5oIgogI2luY2x1 ZGUgIm10a19kcm1fZGRwX2NvbXAuaCIKICNpbmNsdWRlICJtdGtfZHJtX2Rydi5oIgogI2luY2x1 ZGUgIm10a19kcm1fZmIuaCIKLSNpbmNsdWRlICJtdGtfZHJtX2dlbS5oIgogI2luY2x1ZGUgIm10 a19kcm1fcGxhbmUuaCIKIAogc3RhdGljIGNvbnN0IHUzMiBmb3JtYXRzW10gPSB7CkBAIC0xMDgs NyArMTA5LDYgQEAgc3RhdGljIHZvaWQgbXRrX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGxhbmUtPnN0YXRlLT5j cnRjOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5mYjsKIAlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbTsKLQlzdHJ1Y3QgbXRrX2RybV9nZW1fb2JqICptdGtf Z2VtOwogCXVuc2lnbmVkIGludCBwaXRjaCwgZm9ybWF0OwogCWRtYV9hZGRyX3QgYWRkcjsKIApA QCAtMTE2LDggKzExNiw3IEBAIHN0YXRpYyB2b2lkIG10a19wbGFuZV9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlyZXR1cm47CiAKIAlnZW0gPSBmYi0+b2JqWzBdOwot CW10a19nZW0gPSB0b19tdGtfZ2VtX29iaihnZW0pOwotCWFkZHIgPSBtdGtfZ2VtLT5kbWFfYWRk cjsKKwlhZGRyID0gdG9fZHJtX2dlbV9jbWFfb2JqKGdlbSktPnBhZGRyOwogCXBpdGNoID0gZmIt PnBpdGNoZXNbMF07CiAJZm9ybWF0ID0gZmItPmZvcm1hdC0+Zm9ybWF0OwogCi0tIAoyLjIwLjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==