From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH v2 6/7] drm/panfrost: Add support for GPU heap allocations Date: Wed, 24 Jul 2019 19:10:02 -0600 Message-ID: <20190725011003.30837-7-robh@kernel.org> References: <20190725011003.30837-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 F0EED6E2D1 for ; Thu, 25 Jul 2019 01:10:14 +0000 (UTC) Received: by mail-io1-f66.google.com with SMTP id o9so93742019iom.3 for ; Wed, 24 Jul 2019 18:10:14 -0700 (PDT) In-Reply-To: <20190725011003.30837-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 dGV2ZW4ucHJpY2VAYXJtLmNvbT4KQ2M6IEFseXNzYSBSb3Nlbnp3ZWlnIDxhbHlzc2Eucm9zZW56 d2VpZ0Bjb2xsYWJvcmEuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJu ZWwub3JnPgotLS0KdjI6Ci0gU3RvcCBsZWFraW5nIHBhZ2VzIQotIFByb3Blcmx5IGNhbGwgZG1h X3VubWFwX3NnIG9uIGNsZWFudXAKLSBFbmZvcmNlIFBBTkZST1NUX0JPX05PRVhFQyB3aGVuIFBB TkZST1NUX0JPX0hFQVAgaXMgc2V0CgogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L1RPRE8gICAg ICAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYyB8 ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIHwgIDIzICsr Ky0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uaCB8ICAgOCArKwogZHJp dmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jIHwgMTM0ICsrKysrKysrKysrKysr KysrKysrKystLQogaW5jbHVkZS91YXBpL2RybS9wYW5mcm9zdF9kcm0uaCAgICAgICAgIHwgICAx ICsKIDYgZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9UT0RPIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L1RPRE8KaW5kZXggYzJlNDRhZGQzN2Q4Li42NDEyOWJmNzM5MzMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9UT0RPCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9UT0RPCkBAIC0xNCw4ICsxNCw2IEBACiAgIFRoZSBoYXJkIHBhcnQgaXMgaGFu ZGxpbmcgd2hlbiBtb3JlIGFkZHJlc3Mgc3BhY2VzIGFyZSBuZWVkZWQgdGhhbiB3aGF0CiAgIHRo ZSBoL3cgcHJvdmlkZXMuCgotLSBTdXBwb3J0IHBpbm5pbmcgcGFnZXMgb24gZGVtYW5kIChHUFUg cGFnZSBmYXVsdHMpLgotCiAtIFN1cHBvcnQgdXNlcnNwYWNlIGNvbnRyb2xsZWQgR1BVIHZpcnR1 YWwgYWRkcmVzc2VzLiBOZWVkZWQgZm9yIFZ1bGthbi4gKFRvbWV1KQoKIC0gU3VwcG9ydCBmb3Ig bWFkdmlzZSBhbmQgYSBzaHJpbmtlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5m cm9zdC9wYW5mcm9zdF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9k cnYuYwppbmRleCA3ZWJkODJkOGQ1NzAuLjQ2YTZiZWM3YTBmMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9w YW5mcm9zdC9wYW5mcm9zdF9kcnYuYwpAQCAtNTAsNyArNTAsMTIgQEAgc3RhdGljIGludCBwYW5m cm9zdF9pb2N0bF9jcmVhdGVfYm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAlzdHJ1Y3QgZHJtX3BhbmZyb3N0X2NyZWF0ZV9ibyAqYXJncyA9IGRhdGE7CgogCWlmICghYXJn cy0+c2l6ZSB8fCBhcmdzLT5wYWQgfHwKLQkgICAgKGFyZ3MtPmZsYWdzICYgflBBTkZST1NUX0JP X05PRVhFQykpCisJICAgIChhcmdzLT5mbGFncyAmIH4oUEFORlJPU1RfQk9fTk9FWEVDIHwgUEFO RlJPU1RfQk9fSEVBUCkpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIEhlYXBzIHNob3VsZCBu ZXZlciBiZSBleGVjdXRhYmxlICovCisJaWYgKChhcmdzLT5mbGFncyAmIFBBTkZST1NUX0JPX0hF QVApICYmCisJICAgICEoYXJncy0+ZmxhZ3MgJiBQQU5GUk9TVF9CT19OT0VYRUMpKQogCQlyZXR1 cm4gLUVJTlZBTDsKCiAJYm8gPSBwYW5mcm9zdF9nZW1fY3JlYXRlX3dpdGhfaGFuZGxlKGZpbGUs IGRldiwgYXJncy0+c2l6ZSwgYXJncy0+ZmxhZ3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfZ2VtLmMKaW5kZXggNjM3MzFmNmM1MjIzLi4xMjM3ZmI1MzEzMjEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKQEAgLTI3LDYgKzI3LDE3IEBAIHN0YXRpYyB2 b2lkIHBhbmZyb3N0X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikK IAkJZHJtX21tX3JlbW92ZV9ub2RlKCZiby0+bm9kZSk7CiAJc3Bpbl91bmxvY2soJnBmZGV2LT5t bV9sb2NrKTsKCisJaWYgKGJvLT5zZ3RzKSB7CisJCWludCBpOworCQlpbnQgbl9zZ3QgPSBiby0+ YmFzZS5iYXNlLnNpemUgLyBTWl8yTTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbl9zZ3Q7IGkrKykg eworCQkJaWYgKGJvLT5zZ3RzW2ldLnNnbCkKKwkJCQlkbWFfdW5tYXBfc2cocGZkZXYtPmRldiwg Ym8tPnNndHNbaV0uc2dsLAorCQkJCQkgICAgIGJvLT5zZ3RzW2ldLm5lbnRzLCBETUFfQklESVJF Q1RJT05BTCk7CisJCX0KKwl9CisKIAlkcm1fZ2VtX3NobWVtX2ZyZWVfb2JqZWN0KG9iaik7CiB9 CgpAQCAtODcsNyArOTgsMTAgQEAgc3RhdGljIGludCBwYW5mcm9zdF9nZW1fbWFwKHN0cnVjdCBw YW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBzdHJ1Y3QgcGFuZnJvc3RfZ2VtX28KIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwoKLQlyZXR1cm4gcGFuZnJvc3RfbW11X21hcChibyk7CisJaWYgKCFiby0+ aXNfaGVhcCkKKwkJcmV0ID0gcGFuZnJvc3RfbW11X21hcChibyk7CisKKwlyZXR1cm4gcmV0Owog fQoKIHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICoKQEAgLTEwMSw3ICsxMTUsMTEgQEAgcGFu ZnJvc3RfZ2VtX2NyZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwK IAlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtOwogCXN0cnVjdCBwYW5mcm9zdF9n ZW1fb2JqZWN0ICpibzsKCi0Jc2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKKwkvKiBS b3VuZCB1cCBoZWFwIGFsbG9jYXRpb25zIHRvIDJNQiB0byBrZWVwIGZhdWx0IGhhbmRsaW5nIHNp bXBsZSAqLworCWlmIChmbGFncyAmIFBBTkZST1NUX0JPX0hFQVApCisJCXNpemUgPSByb3VuZHVw KHNpemUsIFNaXzJNKTsKKwllbHNlCisJCXNpemUgPSByb3VuZHVwKHNpemUsIFBBR0VfU0laRSk7 CgogCXNobWVtID0gZHJtX2dlbV9zaG1lbV9jcmVhdGVfd2l0aF9oYW5kbGUoZmlsZV9wcml2LCBk ZXYsIHNpemUsIGhhbmRsZSk7CiAJaWYgKElTX0VSUihzaG1lbSkpCkBAIC0xMDksNiArMTI3LDcg QEAgcGFuZnJvc3RfZ2VtX2NyZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdiwKCiAJYm8gPSB0b19wYW5mcm9zdF9ibygmc2htZW0tPmJhc2UpOwogCWJvLT5ub2V4ZWMg PSAhIShmbGFncyAmIFBBTkZST1NUX0JPX05PRVhFQyk7CisJYm8tPmlzX2hlYXAgPSAhIShmbGFn cyAmIFBBTkZST1NUX0JPX0hFQVApOwoKIAlyZXQgPSBwYW5mcm9zdF9nZW1fbWFwKHBmZGV2LCBi byk7CiAJaWYgKHJldCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5m cm9zdF9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uaAppbmRl eCAxMzJmMDIzOTliN2IuLmI2MjhjOWI2Nzc4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9w YW5mcm9zdF9nZW0uaApAQCAtOSwxMCArOSwxMiBAQAoKIHN0cnVjdCBwYW5mcm9zdF9nZW1fb2Jq ZWN0IHsKIAlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgYmFzZTsKKwlzdHJ1Y3Qgc2dfdGFi bGUgKnNndHM7CgogCXN0cnVjdCBkcm1fbW1fbm9kZSBub2RlOwogCWJvb2wgaXNfbWFwcGVkCQk6 MTsKIAlib29sIG5vZXhlYwkJOjE7CisJYm9vbCBpc19oZWFwCQk6MTsKIH07Cgogc3RhdGljIGlu bGluZQpAQCAtMjEsNiArMjMsMTIgQEAgc3RydWN0ICBwYW5mcm9zdF9nZW1fb2JqZWN0ICp0b19w YW5mcm9zdF9ibyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gY29udGFpbmVy X29mKHRvX2RybV9nZW1fc2htZW1fb2JqKG9iaiksIHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0 LCBiYXNlKTsKIH0KCitzdGF0aWMgaW5saW5lCitzdHJ1Y3QgIHBhbmZyb3N0X2dlbV9vYmplY3Qg KmRybV9tbV9ub2RlX3RvX3BhbmZyb3N0X2JvKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSkKK3sK KwlyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0LCBu b2RlKTsKK30KKwogc3RydWN0IGRybV9nZW1fb2JqZWN0ICpwYW5mcm9zdF9nZW1fY3JlYXRlX29i amVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSk7Cgogc3RydWN0IHBhbmZy b3N0X2dlbV9vYmplY3QgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jCmlu ZGV4IGViYTZjZTc4NWVmMC4uZDE2NGVlYWYzOWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcGFuZnJvc3QvcGFuZnJvc3RfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X21tdS5jCkBAIC0yLDYgKzIsNyBAQAogLyogQ29weXJpZ2h0IDIwMTkgTGluYXJv LCBMdGQsIFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+ICovCiAjaW5jbHVkZSA8bGludXgv Yml0ZmllbGQuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Rt YS1tYXBwaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8bGlu dXgvaW8uaD4KICNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KQEAgLTksNiArMTAsNyBAQAogI2lu Y2x1ZGUgPGxpbnV4L2lvbW11Lmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ CiAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NobWVtX2Zz Lmg+CiAjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KCiAjaW5jbHVkZSAicGFuZnJvc3RfZGV2aWNl LmgiCkBAIC0yMzUsMTIgKzIzNywxMiBAQCB2b2lkIHBhbmZyb3N0X21tdV91bm1hcChzdHJ1Y3Qg cGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pCiAJCXNpemVfdCB1bm1hcHBlZF9wYWdlOwogCQlzaXpl X3QgcGdzaXplID0gZ2V0X3Bnc2l6ZShpb3ZhLCBsZW4gLSB1bm1hcHBlZF9sZW4pOwoKLQkJdW5t YXBwZWRfcGFnZSA9IG9wcy0+dW5tYXAob3BzLCBpb3ZhLCBwZ3NpemUpOwotCQlpZiAoIXVubWFw cGVkX3BhZ2UpCi0JCQlicmVhazsKLQotCQlpb3ZhICs9IHVubWFwcGVkX3BhZ2U7Ci0JCXVubWFw cGVkX2xlbiArPSB1bm1hcHBlZF9wYWdlOworCQlpZiAob3BzLT5pb3ZhX3RvX3BoeXMob3BzLCBp b3ZhKSkgeworCQkJdW5tYXBwZWRfcGFnZSA9IG9wcy0+dW5tYXAob3BzLCBpb3ZhLCBwZ3NpemUp OworCQkJV0FSTl9PTih1bm1hcHBlZF9wYWdlICE9IHBnc2l6ZSk7CisJCX0KKwkJaW92YSArPSBw Z3NpemU7CisJCXVubWFwcGVkX2xlbiArPSBwZ3NpemU7CiAJfQoKIAltbXVfaHdfZG9fb3BlcmF0 aW9uKHBmZGV2LCAwLCBiby0+bm9kZS5zdGFydCA8PCBQQUdFX1NISUZULApAQCAtMjc2LDYgKzI3 OCwxMDUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpb21tdV9nYXRoZXJfb3BzIG1tdV90bGJfb3Bz ID0gewogCS50bGJfc3luYwk9IG1tdV90bGJfc3luY19jb250ZXh0LAogfTsKCitzdGF0aWMgc3Ry dWN0IGRybV9tbV9ub2RlICphZGRyX3RvX2RybV9tbV9ub2RlKHN0cnVjdCBwYW5mcm9zdF9kZXZp Y2UgKnBmZGV2LCBpbnQgYXMsIHU2NCBhZGRyKQoreworCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9k ZTsKKwl1NjQgb2Zmc2V0ID0gYWRkciA+PiBQQUdFX1NISUZUOworCisJZHJtX21tX2Zvcl9lYWNo X25vZGUobm9kZSwgJnBmZGV2LT5tbSkgeworCQlpZiAob2Zmc2V0ID49IG5vZGUtPnN0YXJ0ICYm IG9mZnNldCA8IChub2RlLT5zdGFydCArIG5vZGUtPnNpemUpKQorCQkJcmV0dXJuIG5vZGU7CisJ fQorCXJldHVybiBOVUxMOworfQorCisjZGVmaW5lIE5VTV9GQVVMVF9QQUdFUyAoU1pfMk0gLyBQ QUdFX1NJWkUpCisKK2ludCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZy b3N0X2RldmljZSAqcGZkZXYsIGludCBhcywgdTY0IGFkZHIpCit7CisJaW50IHJldCwgaTsKKwlz dHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7CisJc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJv OworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOworCXBnb2ZmX3QgcGFnZV9vZmZzZXQ7 CisJc3RydWN0IHNnX3RhYmxlICpzZ3Q7CisJc3RydWN0IHBhZ2UgKipwYWdlczsKKworCW5vZGUg PSBhZGRyX3RvX2RybV9tbV9ub2RlKHBmZGV2LCBhcywgYWRkcik7CisJaWYgKCFub2RlKQorCQly ZXR1cm4gLUVOT0VOVDsKKworCWJvID0gZHJtX21tX25vZGVfdG9fcGFuZnJvc3RfYm8obm9kZSk7 CisJaWYgKCFiby0+aXNfaGVhcCkgeworCQlkZXZfV0FSTihwZmRldi0+ZGV2LCAibWF0Y2hpbmcg Qk8gaXMgbm90IGhlYXAgdHlwZSAoR1BVIFZBID0gJWxseCkiLAorCQkJIG5vZGUtPnN0YXJ0IDw8 IFBBR0VfU0hJRlQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJLyogQXNzdW1lIDJNQiBhbGln bm1lbnQgYW5kIHNpemUgbXVsdGlwbGUgKi8KKwlhZGRyICY9IH4oKHU2NClTWl8yTSAtIDEpOwor CXBhZ2Vfb2Zmc2V0ID0gYWRkciA+PiBQQUdFX1NISUZUOworCXBhZ2Vfb2Zmc2V0IC09IG5vZGUt PnN0YXJ0OworCisJbXV0ZXhfbG9jaygmYm8tPmJhc2UucGFnZXNfbG9jayk7CisKKwlpZiAoIWJv LT5iYXNlLnBhZ2VzKSB7CisJCWJvLT5zZ3RzID0ga3ZtYWxsb2NfYXJyYXkoYm8tPmJhc2UuYmFz ZS5zaXplIC8gU1pfMk0sCisJCQkJICAgICBzaXplb2Yoc3RydWN0IHNnX3RhYmxlKSwgR0ZQX0tF Uk5FTCB8IF9fR0ZQX1pFUk8pOworCQlpZiAoIWJvLT5zZ3RzKQorCQkJcmV0dXJuIC1FTk9NRU07 CisKKwkJcGFnZXMgPSBrdm1hbGxvY19hcnJheShiby0+YmFzZS5iYXNlLnNpemUgPj4gUEFHRV9T SElGVCwKKwkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBwYWdlICopLCBHRlBfS0VSTkVMIHwgX19H RlBfWkVSTyk7CisJCWlmICghcGFnZXMpIHsKKwkJCWtmcmVlKGJvLT5zZ3RzKTsKKwkJCWJvLT5z Z3RzID0gTlVMTDsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJCWJvLT5iYXNlLnBhZ2VzID0g cGFnZXM7CisJCWJvLT5iYXNlLnBhZ2VzX3VzZV9jb3VudCA9IDE7CisJfSBlbHNlCisJCXBhZ2Vz ID0gYm8tPmJhc2UucGFnZXM7CisKKwltYXBwaW5nID0gYm8tPmJhc2UuYmFzZS5maWxwLT5mX21h cHBpbmc7CisJbWFwcGluZ19zZXRfdW5ldmljdGFibGUobWFwcGluZyk7CisKKwlmb3IgKGkgPSBw YWdlX29mZnNldDsgaSA8IHBhZ2Vfb2Zmc2V0ICsgTlVNX0ZBVUxUX1BBR0VTOyBpKyspIHsKKwkJ cGFnZXNbaV0gPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBpKTsKKwkJaWYgKElT X0VSUihwYWdlc1tpXSkpIHsKKwkJCW11dGV4X3VubG9jaygmYm8tPmJhc2UucGFnZXNfbG9jayk7 CisJCQlyZXQgPSBQVFJfRVJSKHBhZ2VzW2ldKTsKKwkJCWdvdG8gZXJyX3BhZ2VzOworCQl9CisJ fQorCisJbXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsKKworCXNndCA9ICZiby0+ c2d0c1twYWdlX29mZnNldCAvIChTWl8yTSAvIFBBR0VfU0laRSldOworCXJldCA9IHNnX2FsbG9j X3RhYmxlX2Zyb21fcGFnZXMoc2d0LCBwYWdlcyArIHBhZ2Vfb2Zmc2V0LAorCQkJCQlOVU1fRkFV TFRfUEFHRVMsIDAsIFNaXzJNLCBHRlBfS0VSTkVMKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9w YWdlczsKKworCWlmICghZG1hX21hcF9zZyhwZmRldi0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50 cywgRE1BX0JJRElSRUNUSU9OQUwpKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gZXJyX21h cDsKKwl9CisKKwltbXVfbWFwX3NnKHBmZGV2LCBhZGRyLCBJT01NVV9XUklURSB8IElPTU1VX1JF QUQgfCBJT01NVV9OT0VYRUMsIHNndCk7CisKKwliby0+aXNfbWFwcGVkID0gdHJ1ZTsKKworCWRl dl9kYmcocGZkZXYtPmRldiwgIm1hcHBlZCBwYWdlIGZhdWx0IEAgJWxseCIsIGFkZHIpOworCisJ cmV0dXJuIDA7CisKK2Vycl9tYXA6CisJc2dfZnJlZV90YWJsZShzZ3QpOworZXJyX3BhZ2VzOgor CWRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKCZiby0+YmFzZSk7CisJcmV0dXJuIHJldDsKK30KKwog c3RhdGljIGNvbnN0IGNoYXIgKmFjY2Vzc190eXBlX25hbWUoc3RydWN0IHBhbmZyb3N0X2Rldmlj ZSAqcGZkZXYsCiAJCXUzMiBmYXVsdF9zdGF0dXMpCiB7CkBAIC0zMDEsMTMgKzQwMiwxMSBAQCBz dGF0aWMgaXJxcmV0dXJuX3QgcGFuZnJvc3RfbW11X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmRhdGEpCiB7CiAJc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYgPSBkYXRhOwogCXUzMiBz dGF0dXMgPSBtbXVfcmVhZChwZmRldiwgTU1VX0lOVF9TVEFUKTsKLQlpbnQgaTsKKwlpbnQgaSwg cmV0OwoKIAlpZiAoIXN0YXR1cykKIAkJcmV0dXJuIElSUV9OT05FOwoKLQlkZXZfZXJyKHBmZGV2 LT5kZXYsICJtbXUgaXJxIHN0YXR1cz0leFxuIiwgc3RhdHVzKTsKLQogCWZvciAoaSA9IDA7IHN0 YXR1czsgaSsrKSB7CiAJCXUzMiBtYXNrID0gQklUKGkpIHwgQklUKGkgKyAxNik7CiAJCXU2NCBh ZGRyOwpAQCAtMzI4LDYgKzQyNywxOCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcGFuZnJvc3RfbW11 X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCiAJCWFjY2Vzc190eXBlID0gKGZhdWx0 X3N0YXR1cyA+PiA4KSAmIDB4MzsKIAkJc291cmNlX2lkID0gKGZhdWx0X3N0YXR1cyA+PiAxNik7 CgorCQkvKiBQYWdlIGZhdWx0IG9ubHkgKi8KKwkJaWYgKChzdGF0dXMgJiBtYXNrKSA9PSBCSVQo aSkpIHsKKwkJCVdBUk5fT04oZXhjZXB0aW9uX3R5cGUgPCAweEMxIHx8IGV4Y2VwdGlvbl90eXBl ID4gMHhDNCk7CisKKwkJCXJldCA9IHBhbmZyb3N0X21tdV9tYXBfZmF1bHRfYWRkcihwZmRldiwg aSwgYWRkcik7CisJCQlpZiAoIXJldCkgeworCQkJCW1tdV93cml0ZShwZmRldiwgTU1VX0lOVF9D TEVBUiwgQklUKGkpKTsKKwkJCQlzdGF0dXMgJj0gfm1hc2s7CisJCQkJY29udGludWU7CisJCQl9 CisJCX0KKwogCQkvKiB0ZXJtaW5hbCBmYXVsdCwgcHJpbnQgaW5mbyBhYm91dCB0aGUgZmF1bHQg Ki8KIAkJZGV2X2VycihwZmRldi0+ZGV2LAogCQkJIlVuaGFuZGxlZCBQYWdlIGZhdWx0IGluIEFT JWQgYXQgVkEgMHglMDE2bGxYXG4iCkBAIC0zNjgsOCArNDc5LDkgQEAgaW50IHBhbmZyb3N0X21t dV9pbml0KHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2KQogCWlmIChpcnEgPD0gMCkKIAkJ cmV0dXJuIC1FTk9ERVY7CgotCWVyciA9IGRldm1fcmVxdWVzdF9pcnEocGZkZXYtPmRldiwgaXJx LCBwYW5mcm9zdF9tbXVfaXJxX2hhbmRsZXIsCi0JCQkgICAgICAgSVJRRl9TSEFSRUQsICJtbXUi LCBwZmRldik7CisJZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShwZmRldi0+ZGV2LCBp cnEsIE5VTEwsCisJCQkJCXBhbmZyb3N0X21tdV9pcnFfaGFuZGxlciwKKwkJCQkJSVJRRl9PTkVT SE9ULCAibW11IiwgcGZkZXYpOwoKIAlpZiAoZXJyKSB7CiAJCWRldl9lcnIocGZkZXYtPmRldiwg ImZhaWxlZCB0byByZXF1ZXN0IG1tdSBpcnEiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vcGFuZnJvc3RfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL3BhbmZyb3N0X2RybS5oCmluZGV4 IDE3ZmI1ZDIwMGY3YS4uOTE1MGRkNzVhYWQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJt L3BhbmZyb3N0X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vcGFuZnJvc3RfZHJtLmgKQEAg LTgzLDYgKzgzLDcgQEAgc3RydWN0IGRybV9wYW5mcm9zdF93YWl0X2JvIHsKIH07CgogI2RlZmlu ZSBQQU5GUk9TVF9CT19OT0VYRUMJMQorI2RlZmluZSBQQU5GUk9TVF9CT19IRUFQCTIKCiAvKioK ICAqIHN0cnVjdCBkcm1fcGFuZnJvc3RfY3JlYXRlX2JvIC0gaW9jdGwgYXJndW1lbnQgZm9yIGNy ZWF0aW5nIFBhbmZyb3N0IEJPcy4KLS0KMi4yMC4xCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA==