From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH v3 7/8] drm/panfrost: Add support for GPU heap allocations Date: Fri, 2 Aug 2019 13:51:49 -0600 Message-ID: <20190802195150.23207-8-robh@kernel.org> References: <20190802195150.23207-1-robh@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-io1-f66.google.com (mail-io1-f66.google.com [209.85.166.66]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80E746EDD5 for ; Fri, 2 Aug 2019 19:52:02 +0000 (UTC) Received: by mail-io1-f66.google.com with SMTP id j6so34879714ioa.5 for ; Fri, 02 Aug 2019 12:52:02 -0700 (PDT) In-Reply-To: <20190802195150.23207-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: Tomeu Vizoso , Maxime Ripard , Sean Paul , Steven Price , David Airlie , Boris Brezillon , Alyssa Rosenzweig , Robin Murphy List-Id: dri-devel@lists.freedesktop.org VGhlIG1pZGdhcmQvYmlmcm9zdCBHUFVzIG5lZWQgdG8gYWxsb2NhdGUgR1BVIGhlYXAgbWVtb3J5 IHdoaWNoIGlzCmFsbG9jYXRlZCBvbiBHUFUgcGFnZSBmYXVsdHMgYW5kIG5vdCBwaW5uZWQgaW4g bWVtb3J5LiBUaGUgdmVuZG9yIGRyaXZlcgpjYWxscyB0aGlzIGZ1bmN0aW9uYWxpdHkgR1JPV19P Tl9HUEYuCgpUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCBCT3MgYWxsb2NhdGVkIHdp dGggdGhlClBBTkZST1NUX0JPX05PRVhFQyBmbGFnIGFyZSBuZXZlciBtbWFwcGVkIG9yIGV4cG9y dGVkLiBCb3RoIG9mIHRob3NlIG1heQphY3R1YWxseSB3b3JrLCBidXQgSSdtIHVuc3VyZSBpZiB0 aGVyZSdzIHNvbWUgaW50ZXJhY3Rpb24gdGhlcmUuIEl0CndvdWxkIGNhdXNlIHRoZSB3aG9sZSBv YmplY3QgdG8gYmUgcGlubmVkIGluIG1lbW9yeSB3aGljaCB3b3VsZCBkZWZlYXQKdGhlIHBvaW50 IG9mIHRoaXMuCgpPbiBmYXVsdHMsIHdlIG1hcCBpbiAyTUIgYXQgYSB0aW1lIGluIG9yZGVyIHRv IHV0aWxpemUgaHVnZSBwYWdlcyAoaWYKZW5hYmxlZCkuIEN1cnJlbnRseSwgb25jZSB3ZSd2ZSBt YXBwZWQgcGFnZXMgaW4sIHRoZXkgYXJlIG9ubHkgdW5tYXBwZWQKaWYgdGhlIEJPIGlzIGZyZWVk LiBPbmNlIHdlIGFkZCBzaHJpbmtlciBzdXBwb3J0LCB3ZSBjYW4gdW5tYXAgcGFnZXMKd2l0aCB0 aGUgc2hyaW5rZXIuCgpDYzogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNv bT4KQ2M6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+CkNj OiBSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBoeUBhcm0uY29tPgpDYzogU3RldmVuIFByaWNlIDxz dGV2ZW4ucHJpY2VAYXJtLmNvbT4KQWNrZWQtYnk6IEFseXNzYSBSb3Nlbnp3ZWlnIDxhbHlzc2Eu cm9zZW56d2VpZ0Bjb2xsYWJvcmEuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb2IgSGVycmluZyA8cm9i aEBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9UT0RPICAgICAgICAg ICB8ICAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMgfCAgMTEg Ky0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYyB8ICAzNiArKysrKyst CiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmggfCAgIDggKysKIGRyaXZl cnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYyB8IDEyOSArKysrKysrKysrKysrKysr KysrKysrLS0KIGluY2x1ZGUvdWFwaS9kcm0vcGFuZnJvc3RfZHJtLmggICAgICAgICB8ICAgMSAr CiA2IGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvVE9ETyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9UT0RPCmluZGV4IGMyZTQ0YWRkMzdkOC4uNjQxMjliZjczOTMzIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvVE9ETworKysgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZnJvc3QvVE9ETwpAQCAtMTQsOCArMTQsNiBAQAogICBUaGUgaGFyZCBwYXJ0IGlzIGhhbmRs aW5nIHdoZW4gbW9yZSBhZGRyZXNzIHNwYWNlcyBhcmUgbmVlZGVkIHRoYW4gd2hhdAogICB0aGUg aC93IHByb3ZpZGVzLgogCi0tIFN1cHBvcnQgcGlubmluZyBwYWdlcyBvbiBkZW1hbmQgKEdQVSBw YWdlIGZhdWx0cykuCi0KIC0gU3VwcG9ydCB1c2Vyc3BhY2UgY29udHJvbGxlZCBHUFUgdmlydHVh bCBhZGRyZXNzZXMuIE5lZWRlZCBmb3IgVnVsa2FuLiAoVG9tZXUpCiAKIC0gU3VwcG9ydCBmb3Ig bWFkdmlzZSBhbmQgYSBzaHJpbmtlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5m cm9zdC9wYW5mcm9zdF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9k cnYuYwppbmRleCA3ZWJkODJkOGQ1NzAuLmE3MTI2YjVmOGU1ZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9w YW5mcm9zdC9wYW5mcm9zdF9kcnYuYwpAQCAtNTAsNyArNTAsMTIgQEAgc3RhdGljIGludCBwYW5m cm9zdF9pb2N0bF9jcmVhdGVfYm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAlzdHJ1Y3QgZHJtX3BhbmZyb3N0X2NyZWF0ZV9ibyAqYXJncyA9IGRhdGE7CiAKIAlpZiAoIWFy Z3MtPnNpemUgfHwgYXJncy0+cGFkIHx8Ci0JICAgIChhcmdzLT5mbGFncyAmIH5QQU5GUk9TVF9C T19OT0VYRUMpKQorCSAgICAoYXJncy0+ZmxhZ3MgJiB+KFBBTkZST1NUX0JPX05PRVhFQyB8IFBB TkZST1NUX0JPX0hFQVApKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBIZWFwcyBzaG91bGQg bmV2ZXIgYmUgZXhlY3V0YWJsZSAqLworCWlmICgoYXJncy0+ZmxhZ3MgJiBQQU5GUk9TVF9CT19I RUFQKSAmJgorCSAgICAhKGFyZ3MtPmZsYWdzICYgUEFORlJPU1RfQk9fTk9FWEVDKSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKIAlibyA9IHBhbmZyb3N0X2dlbV9jcmVhdGVfd2l0aF9oYW5kbGUoZmls ZSwgZGV2LCBhcmdzLT5zaXplLCBhcmdzLT5mbGFncywKQEAgLTI2NSw2ICsyNzAsMTAgQEAgc3Rh dGljIGludCBwYW5mcm9zdF9pb2N0bF9tbWFwX2JvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJCXJldHVybiAtRU5PRU5UOwogCX0KIAorCS8qIERvbid0IGFsbG93IG1tYXBw aW5nIG9mIGhlYXAgb2JqZWN0cyBhcyBwYWdlcyBhcmUgbm90IHBpbm5lZC4gKi8KKwlpZiAodG9f cGFuZnJvc3RfYm8oZ2VtX29iaiktPmlzX2hlYXApCisJCXJldHVybiAtRUlOVkFMOworCiAJcmV0 ID0gZHJtX2dlbV9jcmVhdGVfbW1hcF9vZmZzZXQoZ2VtX29iaik7CiAJaWYgKHJldCA9PSAwKQog CQlhcmdzLT5vZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJmdlbV9vYmotPnZtYV9u b2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYwppbmRleCA2MzczMWY2 YzUyMjMuLmYzZDVmNjE3MTRhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9n ZW0uYwpAQCAtMjcsMTMgKzI3LDM1IEBAIHN0YXRpYyB2b2lkIHBhbmZyb3N0X2dlbV9mcmVlX29i amVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAkJZHJtX21tX3JlbW92ZV9ub2RlKCZi by0+bm9kZSk7CiAJc3Bpbl91bmxvY2soJnBmZGV2LT5tbV9sb2NrKTsKIAorCWlmIChiby0+c2d0 cykgeworCQlpbnQgaTsKKwkJaW50IG5fc2d0ID0gYm8tPmJhc2UuYmFzZS5zaXplIC8gU1pfMk07 CisKKwkJZm9yIChpID0gMDsgaSA8IG5fc2d0OyBpKyspIHsKKwkJCWlmIChiby0+c2d0c1tpXS5z Z2wpIHsKKwkJCQlkbWFfdW5tYXBfc2cocGZkZXYtPmRldiwgYm8tPnNndHNbaV0uc2dsLAorCQkJ CQkgICAgIGJvLT5zZ3RzW2ldLm5lbnRzLCBETUFfQklESVJFQ1RJT05BTCk7CisJCQkJc2dfZnJl ZV90YWJsZSgmYm8tPnNndHNbaV0pOworCQkJfQorCQl9CisJCWtmcmVlKGJvLT5zZ3RzKTsKKwl9 CisKIAlkcm1fZ2VtX3NobWVtX2ZyZWVfb2JqZWN0KG9iaik7CiB9CiAKK3N0YXRpYyBpbnQgcGFu ZnJvc3RfZ2VtX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlpZiAodG9fcGFu ZnJvc3RfYm8ob2JqKS0+aXNfaGVhcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gZHJt X2dlbV9zaG1lbV9waW4ob2JqKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZ2VtX29i amVjdF9mdW5jcyBwYW5mcm9zdF9nZW1fZnVuY3MgPSB7CiAJLmZyZWUgPSBwYW5mcm9zdF9nZW1f ZnJlZV9vYmplY3QsCiAJLnByaW50X2luZm8gPSBkcm1fZ2VtX3NobWVtX3ByaW50X2luZm8sCi0J LnBpbiA9IGRybV9nZW1fc2htZW1fcGluLAorCS5waW4gPSBwYW5mcm9zdF9nZW1fcGluLAogCS51 bnBpbiA9IGRybV9nZW1fc2htZW1fdW5waW4sCiAJLmdldF9zZ190YWJsZSA9IGRybV9nZW1fc2ht ZW1fZ2V0X3NnX3RhYmxlLAogCS52bWFwID0gZHJtX2dlbV9zaG1lbV92bWFwLApAQCAtODcsNyAr MTA5LDEwIEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfZ2VtX21hcChzdHJ1Y3QgcGFuZnJvc3RfZGV2 aWNlICpwZmRldiwgc3RydWN0IHBhbmZyb3N0X2dlbV9vCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCXJldHVybiBwYW5mcm9zdF9tbXVfbWFwKGJvKTsKKwlpZiAoIWJvLT5pc19oZWFwKQor CQlyZXQgPSBwYW5mcm9zdF9tbXVfbWFwKGJvKTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0cnVj dCBwYW5mcm9zdF9nZW1fb2JqZWN0ICoKQEAgLTEwMSw3ICsxMjYsMTEgQEAgcGFuZnJvc3RfZ2Vt X2NyZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAlzdHJ1Y3Qg ZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtOwogCXN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0 ICpibzsKIAotCXNpemUgPSByb3VuZHVwKHNpemUsIFBBR0VfU0laRSk7CisJLyogUm91bmQgdXAg aGVhcCBhbGxvY2F0aW9ucyB0byAyTUIgdG8ga2VlcCBmYXVsdCBoYW5kbGluZyBzaW1wbGUgKi8K KwlpZiAoZmxhZ3MgJiBQQU5GUk9TVF9CT19IRUFQKQorCQlzaXplID0gcm91bmR1cChzaXplLCBT Wl8yTSk7CisJZWxzZQorCQlzaXplID0gcm91bmR1cChzaXplLCBQQUdFX1NJWkUpOwogCiAJc2ht ZW0gPSBkcm1fZ2VtX3NobWVtX2NyZWF0ZV93aXRoX2hhbmRsZShmaWxlX3ByaXYsIGRldiwgc2l6 ZSwgaGFuZGxlKTsKIAlpZiAoSVNfRVJSKHNobWVtKSkKQEAgLTEwOSw2ICsxMzgsNyBAQCBwYW5m cm9zdF9nZW1fY3JlYXRlX3dpdGhfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAog CiAJYm8gPSB0b19wYW5mcm9zdF9ibygmc2htZW0tPmJhc2UpOwogCWJvLT5ub2V4ZWMgPSAhIShm bGFncyAmIFBBTkZST1NUX0JPX05PRVhFQyk7CisJYm8tPmlzX2hlYXAgPSAhIShmbGFncyAmIFBB TkZST1NUX0JPX0hFQVApOwogCiAJcmV0ID0gcGFuZnJvc3RfZ2VtX21hcChwZmRldiwgYm8pOwog CWlmIChyZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rf Z2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmgKaW5kZXggMTMy ZjAyMzk5YjdiLi5iNjI4YzliNjc3ODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5m cm9zdC9wYW5mcm9zdF9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJv c3RfZ2VtLmgKQEAgLTksMTAgKzksMTIgQEAKIAogc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3Qg ewogCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCBiYXNlOworCXN0cnVjdCBzZ190YWJsZSAq c2d0czsKIAogCXN0cnVjdCBkcm1fbW1fbm9kZSBub2RlOwogCWJvb2wgaXNfbWFwcGVkCQk6MTsK IAlib29sIG5vZXhlYwkJOjE7CisJYm9vbCBpc19oZWFwCQk6MTsKIH07CiAKIHN0YXRpYyBpbmxp bmUKQEAgLTIxLDYgKzIzLDEyIEBAIHN0cnVjdCAgcGFuZnJvc3RfZ2VtX29iamVjdCAqdG9fcGFu ZnJvc3RfYm8oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIGNvbnRhaW5lcl9v Zih0b19kcm1fZ2VtX3NobWVtX29iaihvYmopLCBzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCwg YmFzZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUKK3N0cnVjdCAgcGFuZnJvc3RfZ2VtX29iamVjdCAq ZHJtX21tX25vZGVfdG9fcGFuZnJvc3RfYm8oc3RydWN0IGRybV9tbV9ub2RlICpub2RlKQorewor CXJldHVybiBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QsIG5v ZGUpOworfQorCiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnBhbmZyb3N0X2dlbV9jcmVhdGVfb2Jq ZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKTsKIAogc3RydWN0IHBhbmZy b3N0X2dlbV9vYmplY3QgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jCmlu ZGV4IDdkNDQzMjhiMjgwZi4uYWE4M2JmNDYzNjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcGFuZnJvc3QvcGFuZnJvc3RfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X21tdS5jCkBAIC0yLDYgKzIsNyBAQAogLyogQ29weXJpZ2h0IDIwMTkgTGluYXJv LCBMdGQsIFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+ICovCiAjaW5jbHVkZSA8bGludXgv Yml0ZmllbGQuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Rt YS1tYXBwaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8bGlu dXgvaW8uaD4KICNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KQEAgLTksNiArMTAsNyBAQAogI2lu Y2x1ZGUgPGxpbnV4L2lvbW11Lmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ CiAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NobWVtX2Zz Lmg+CiAjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KIAogI2luY2x1ZGUgInBhbmZyb3N0X2Rldmlj ZS5oIgpAQCAtMjM1LDEyICsyMzcsMTIgQEAgdm9pZCBwYW5mcm9zdF9tbXVfdW5tYXAoc3RydWN0 IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJvKQogCQlzaXplX3QgdW5tYXBwZWRfcGFnZTsKIAkJc2l6 ZV90IHBnc2l6ZSA9IGdldF9wZ3NpemUoaW92YSwgbGVuIC0gdW5tYXBwZWRfbGVuKTsKIAotCQl1 bm1hcHBlZF9wYWdlID0gb3BzLT51bm1hcChvcHMsIGlvdmEsIHBnc2l6ZSk7Ci0JCWlmICghdW5t YXBwZWRfcGFnZSkKLQkJCWJyZWFrOwotCi0JCWlvdmEgKz0gdW5tYXBwZWRfcGFnZTsKLQkJdW5t YXBwZWRfbGVuICs9IHVubWFwcGVkX3BhZ2U7CisJCWlmIChvcHMtPmlvdmFfdG9fcGh5cyhvcHMs IGlvdmEpKSB7CisJCQl1bm1hcHBlZF9wYWdlID0gb3BzLT51bm1hcChvcHMsIGlvdmEsIHBnc2l6 ZSk7CisJCQlXQVJOX09OKHVubWFwcGVkX3BhZ2UgIT0gcGdzaXplKTsKKwkJfQorCQlpb3ZhICs9 IHBnc2l6ZTsKKwkJdW5tYXBwZWRfbGVuICs9IHBnc2l6ZTsKIAl9CiAKIAltbXVfaHdfZG9fb3Bl cmF0aW9uKHBmZGV2LCAwLCBiby0+bm9kZS5zdGFydCA8PCBQQUdFX1NISUZULApAQCAtMjc2LDYg KzI3OCwxMDUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpb21tdV9nYXRoZXJfb3BzIG1tdV90bGJf b3BzID0gewogCS50bGJfc3luYwk9IG1tdV90bGJfc3luY19jb250ZXh0LAogfTsKIAorc3RhdGlj IHN0cnVjdCBkcm1fbW1fbm9kZSAqYWRkcl90b19kcm1fbW1fbm9kZShzdHJ1Y3QgcGFuZnJvc3Rf ZGV2aWNlICpwZmRldiwgaW50IGFzLCB1NjQgYWRkcikKK3sKKwlzdHJ1Y3QgZHJtX21tX25vZGUg Km5vZGU7CisJdTY0IG9mZnNldCA9IGFkZHIgPj4gUEFHRV9TSElGVDsKKworCWRybV9tbV9mb3Jf ZWFjaF9ub2RlKG5vZGUsICZwZmRldi0+bW0pIHsKKwkJaWYgKG9mZnNldCA+PSBub2RlLT5zdGFy dCAmJiBvZmZzZXQgPCAobm9kZS0+c3RhcnQgKyBub2RlLT5zaXplKSkKKwkJCXJldHVybiBub2Rl OworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworI2RlZmluZSBOVU1fRkFVTFRfUEFHRVMgKFNaXzJN IC8gUEFHRV9TSVpFKQorCitpbnQgcGFuZnJvc3RfbW11X21hcF9mYXVsdF9hZGRyKHN0cnVjdCBw YW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBpbnQgYXMsIHU2NCBhZGRyKQoreworCWludCByZXQsIGk7 CisJc3RydWN0IGRybV9tbV9ub2RlICpub2RlOworCXN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0 ICpibzsKKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKKwlwZ29mZl90IHBhZ2Vfb2Zm c2V0OworCXN0cnVjdCBzZ190YWJsZSAqc2d0OworCXN0cnVjdCBwYWdlICoqcGFnZXM7CisKKwlu b2RlID0gYWRkcl90b19kcm1fbW1fbm9kZShwZmRldiwgYXMsIGFkZHIpOworCWlmICghbm9kZSkK KwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlibyA9IGRybV9tbV9ub2RlX3RvX3BhbmZyb3N0X2JvKG5v ZGUpOworCWlmICghYm8tPmlzX2hlYXApIHsKKwkJZGV2X1dBUk4ocGZkZXYtPmRldiwgIm1hdGNo aW5nIEJPIGlzIG5vdCBoZWFwIHR5cGUgKEdQVSBWQSA9ICVsbHgpIiwKKwkJCSBub2RlLT5zdGFy dCA8PCBQQUdFX1NISUZUKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCS8qIEFzc3VtZSAyTUIg YWxpZ25tZW50IGFuZCBzaXplIG11bHRpcGxlICovCisJYWRkciAmPSB+KCh1NjQpU1pfMk0gLSAx KTsKKwlwYWdlX29mZnNldCA9IGFkZHIgPj4gUEFHRV9TSElGVDsKKwlwYWdlX29mZnNldCAtPSBu b2RlLT5zdGFydDsKKworCW11dGV4X2xvY2soJmJvLT5iYXNlLnBhZ2VzX2xvY2spOworCisJaWYg KCFiby0+YmFzZS5wYWdlcykgeworCQliby0+c2d0cyA9IGt2bWFsbG9jX2FycmF5KGJvLT5iYXNl LmJhc2Uuc2l6ZSAvIFNaXzJNLAorCQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBzZ190YWJsZSksIEdG UF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKKwkJaWYgKCFiby0+c2d0cykKKwkJCXJldHVybiAtRU5P TUVNOworCisJCXBhZ2VzID0ga3ZtYWxsb2NfYXJyYXkoYm8tPmJhc2UuYmFzZS5zaXplID4+IFBB R0VfU0hJRlQsCisJCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgcGFnZSAqKSwgR0ZQX0tFUk5FTCB8 IF9fR0ZQX1pFUk8pOworCQlpZiAoIXBhZ2VzKSB7CisJCQlrZnJlZShiby0+c2d0cyk7CisJCQli by0+c2d0cyA9IE5VTEw7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQliby0+YmFzZS5wYWdl cyA9IHBhZ2VzOworCQliby0+YmFzZS5wYWdlc191c2VfY291bnQgPSAxOworCX0gZWxzZQorCQlw YWdlcyA9IGJvLT5iYXNlLnBhZ2VzOworCisJbWFwcGluZyA9IGJvLT5iYXNlLmJhc2UuZmlscC0+ Zl9tYXBwaW5nOworCW1hcHBpbmdfc2V0X3VuZXZpY3RhYmxlKG1hcHBpbmcpOworCisJZm9yIChp ID0gcGFnZV9vZmZzZXQ7IGkgPCBwYWdlX29mZnNldCArIE5VTV9GQVVMVF9QQUdFUzsgaSsrKSB7 CisJCXBhZ2VzW2ldID0gc2htZW1fcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgaSk7CisJCWlm IChJU19FUlIocGFnZXNbaV0pKSB7CisJCQltdXRleF91bmxvY2soJmJvLT5iYXNlLnBhZ2VzX2xv Y2spOworCQkJcmV0ID0gUFRSX0VSUihwYWdlc1tpXSk7CisJCQlnb3RvIGVycl9wYWdlczsKKwkJ fQorCX0KKworCW11dGV4X3VubG9jaygmYm8tPmJhc2UucGFnZXNfbG9jayk7CisKKwlzZ3QgPSAm Ym8tPnNndHNbcGFnZV9vZmZzZXQgLyAoU1pfMk0gLyBQQUdFX1NJWkUpXTsKKwlyZXQgPSBzZ19h bGxvY190YWJsZV9mcm9tX3BhZ2VzKHNndCwgcGFnZXMgKyBwYWdlX29mZnNldCwKKwkJCQkJTlVN X0ZBVUxUX1BBR0VTLCAwLCBTWl8yTSwgR0ZQX0tFUk5FTCk7CisJaWYgKHJldCkKKwkJZ290byBl cnJfcGFnZXM7CisKKwlpZiAoIWRtYV9tYXBfc2cocGZkZXYtPmRldiwgc2d0LT5zZ2wsIHNndC0+ bmVudHMsIERNQV9CSURJUkVDVElPTkFMKSkgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGVy cl9tYXA7CisJfQorCisJbW11X21hcF9zZyhwZmRldiwgYWRkciwgSU9NTVVfV1JJVEUgfCBJT01N VV9SRUFEIHwgSU9NTVVfTk9FWEVDLCBzZ3QpOworCisJYm8tPmlzX21hcHBlZCA9IHRydWU7CisK KwlkZXZfZGJnKHBmZGV2LT5kZXYsICJtYXBwZWQgcGFnZSBmYXVsdCBAICVsbHgiLCBhZGRyKTsK KworCXJldHVybiAwOworCitlcnJfbWFwOgorCXNnX2ZyZWVfdGFibGUoc2d0KTsKK2Vycl9wYWdl czoKKwlkcm1fZ2VtX3NobWVtX3B1dF9wYWdlcygmYm8tPmJhc2UpOworCXJldHVybiByZXQ7Cit9 CisKIHN0YXRpYyBjb25zdCBjaGFyICphY2Nlc3NfdHlwZV9uYW1lKHN0cnVjdCBwYW5mcm9zdF9k ZXZpY2UgKnBmZGV2LAogCQl1MzIgZmF1bHRfc3RhdHVzKQogewpAQCAtMzEyLDkgKzQxMyw3IEBA IHN0YXRpYyBpcnFyZXR1cm5fdCBwYW5mcm9zdF9tbXVfaXJxX2hhbmRsZXJfdGhyZWFkKGludCBp cnEsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYgPSBkYXRh OwogCXUzMiBzdGF0dXMgPSBtbXVfcmVhZChwZmRldiwgTU1VX0lOVF9SQVdTVEFUKTsKLQlpbnQg aTsKLQotCWRldl9lcnIocGZkZXYtPmRldiwgIm1tdSBpcnEgc3RhdHVzPSV4XG4iLCBzdGF0dXMp OworCWludCBpLCByZXQ7CiAKIAlmb3IgKGkgPSAwOyBzdGF0dXM7IGkrKykgewogCQl1MzIgbWFz ayA9IEJJVChpKSB8IEJJVChpICsgMTYpOwpAQCAtMzM2LDYgKzQzNSwxOCBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgcGFuZnJvc3RfbW11X2lycV9oYW5kbGVyX3RocmVhZChpbnQgaXJxLCB2b2lkICpk YXRhKQogCQlhY2Nlc3NfdHlwZSA9IChmYXVsdF9zdGF0dXMgPj4gOCkgJiAweDM7CiAJCXNvdXJj ZV9pZCA9IChmYXVsdF9zdGF0dXMgPj4gMTYpOwogCisJCS8qIFBhZ2UgZmF1bHQgb25seSAqLwor CQlpZiAoKHN0YXR1cyAmIG1hc2spID09IEJJVChpKSkgeworCQkJV0FSTl9PTihleGNlcHRpb25f dHlwZSA8IDB4QzEgfHwgZXhjZXB0aW9uX3R5cGUgPiAweEM0KTsKKworCQkJcmV0ID0gcGFuZnJv c3RfbW11X21hcF9mYXVsdF9hZGRyKHBmZGV2LCBpLCBhZGRyKTsKKwkJCWlmICghcmV0KSB7CisJ CQkJbW11X3dyaXRlKHBmZGV2LCBNTVVfSU5UX0NMRUFSLCBCSVQoaSkpOworCQkJCXN0YXR1cyAm PSB+bWFzazsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCiAJCS8qIHRlcm1pbmFsIGZhdWx0 LCBwcmludCBpbmZvIGFib3V0IHRoZSBmYXVsdCAqLwogCQlkZXZfZXJyKHBmZGV2LT5kZXYsCiAJ CQkiVW5oYW5kbGVkIFBhZ2UgZmF1bHQgaW4gQVMlZCBhdCBWQSAweCUwMTZsbFhcbiIKZGlmZiAt LWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vcGFuZnJvc3RfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJt L3BhbmZyb3N0X2RybS5oCmluZGV4IDE3ZmI1ZDIwMGY3YS4uOTE1MGRkNzVhYWQ4IDEwMDY0NAot LS0gYS9pbmNsdWRlL3VhcGkvZHJtL3BhbmZyb3N0X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9k cm0vcGFuZnJvc3RfZHJtLmgKQEAgLTgzLDYgKzgzLDcgQEAgc3RydWN0IGRybV9wYW5mcm9zdF93 YWl0X2JvIHsKIH07CiAKICNkZWZpbmUgUEFORlJPU1RfQk9fTk9FWEVDCTEKKyNkZWZpbmUgUEFO RlJPU1RfQk9fSEVBUAkyCiAKIC8qKgogICogc3RydWN0IGRybV9wYW5mcm9zdF9jcmVhdGVfYm8g LSBpb2N0bCBhcmd1bWVudCBmb3IgY3JlYXRpbmcgUGFuZnJvc3QgQk9zLgotLSAKMi4yMC4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=