From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH v4 8/9] drm/panfrost: Add support for GPU heap allocations Date: Thu, 8 Aug 2019 16:21:59 -0600 Message-ID: <20190808222200.13176-9-robh@kernel.org> References: <20190808222200.13176-1-robh@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ot1-f66.google.com (mail-ot1-f66.google.com [209.85.210.66]) by gabe.freedesktop.org (Postfix) with ESMTPS id 782C86ECD2 for ; Thu, 8 Aug 2019 22:22:13 +0000 (UTC) Received: by mail-ot1-f66.google.com with SMTP id r21so119115142otq.6 for ; Thu, 08 Aug 2019 15:22:13 -0700 (PDT) In-Reply-To: <20190808222200.13176-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 , Robin Murphy , Steven Price , David Airlie , Boris Brezillon , Alyssa Rosenzweig , Sean Paul 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 Ky0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYyB8ICA0MyArKysrKysr LQogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oIHwgICA4ICsrCiBkcml2 ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfbW11LmMgfCAxMjkgKysrKysrKysrKysrKysr KysrKysrKy0tCiBpbmNsdWRlL3VhcGkvZHJtL3BhbmZyb3N0X2RybS5oICAgICAgICAgfCAgIDEg KwogNiBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L1RPRE8gYi9kcml2ZXJzL2dwdS9k cm0vcGFuZnJvc3QvVE9ETwppbmRleCBkNGM3ZmI3ZTdkMTMuLmU3NzI3YjI5MjM1NSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L1RPRE8KKysrIGIvZHJpdmVycy9ncHUvZHJt L3BhbmZyb3N0L1RPRE8KQEAgLTEwLDggKzEwLDYgQEAKICAgVGhlIGhhcmQgcGFydCBpcyBoYW5k bGluZyB3aGVuIG1vcmUgYWRkcmVzcyBzcGFjZXMgYXJlIG5lZWRlZCB0aGFuIHdoYXQKICAgdGhl IGgvdyBwcm92aWRlcy4KIAotLSBTdXBwb3J0IHBpbm5pbmcgcGFnZXMgb24gZGVtYW5kIChHUFUg cGFnZSBmYXVsdHMpLgotCiAtIFN1cHBvcnQgdXNlcnNwYWNlIGNvbnRyb2xsZWQgR1BVIHZpcnR1 YWwgYWRkcmVzc2VzLiBOZWVkZWQgZm9yIFZ1bGthbi4gKFRvbWV1KQogCiAtIENvbXB1dGUgam9i IHN1cHBvcnQuIFNvIGNhbGxlZCAnY29tcHV0ZSBvbmx5JyBqb2JzIG5lZWQgdG8gYmUgcGx1bWJl ZCB1cCB0bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jCmluZGV4IGYwNzBm MmRkOWY4NC4uOTk0ZGJjMzdlNGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJv c3QvcGFuZnJvc3RfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0 X2Rydi5jCkBAIC04Miw3ICs4MiwxMiBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X2lvY3RsX2NyZWF0 ZV9ibyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBkcm1fcGFu ZnJvc3RfY3JlYXRlX2JvICphcmdzID0gZGF0YTsKIAogCWlmICghYXJncy0+c2l6ZSB8fCBhcmdz LT5wYWQgfHwKLQkgICAgKGFyZ3MtPmZsYWdzICYgflBBTkZST1NUX0JPX05PRVhFQykpCisJICAg IChhcmdzLT5mbGFncyAmIH4oUEFORlJPU1RfQk9fTk9FWEVDIHwgUEFORlJPU1RfQk9fSEVBUCkp KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIEhlYXBzIHNob3VsZCBuZXZlciBiZSBleGVjdXRh YmxlICovCisJaWYgKChhcmdzLT5mbGFncyAmIFBBTkZST1NUX0JPX0hFQVApICYmCisJICAgICEo YXJncy0+ZmxhZ3MgJiBQQU5GUk9TVF9CT19OT0VYRUMpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAog CWJvID0gcGFuZnJvc3RfZ2VtX2NyZWF0ZV93aXRoX2hhbmRsZShmaWxlLCBkZXYsIGFyZ3MtPnNp emUsIGFyZ3MtPmZsYWdzLApAQCAtMjk3LDYgKzMwMiwxMCBAQCBzdGF0aWMgaW50IHBhbmZyb3N0 X2lvY3RsX21tYXBfYm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0 dXJuIC1FTk9FTlQ7CiAJfQogCisJLyogRG9uJ3QgYWxsb3cgbW1hcHBpbmcgb2YgaGVhcCBvYmpl Y3RzIGFzIHBhZ2VzIGFyZSBub3QgcGlubmVkLiAqLworCWlmICh0b19wYW5mcm9zdF9ibyhnZW1f b2JqKS0+aXNfaGVhcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlyZXQgPSBkcm1fZ2VtX2NyZWF0 ZV9tbWFwX29mZnNldChnZW1fb2JqKTsKIAlpZiAocmV0ID09IDApCiAJCWFyZ3MtPm9mZnNldCA9 IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmZ2VtX29iai0+dm1hX25vZGUpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jCmluZGV4IGYzOTgxMDliOGUwYy4uMzdhM2E2ZWQ0 NjE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jCkBAIC0xNiw2ICsx NiwyMyBAQAogICovCiBzdGF0aWMgdm9pZCBwYW5mcm9zdF9nZW1fZnJlZV9vYmplY3Qoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopCiB7CisJc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJv ID0gdG9fcGFuZnJvc3RfYm8ob2JqKTsKKwlzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiA9 IG9iai0+ZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlmIChiby0+c2d0cykgeworCQlpbnQgaTsKKwkJ aW50IG5fc2d0ID0gYm8tPmJhc2UuYmFzZS5zaXplIC8gU1pfMk07CisKKwkJZm9yIChpID0gMDsg aSA8IG5fc2d0OyBpKyspIHsKKwkJCWlmIChiby0+c2d0c1tpXS5zZ2wpIHsKKwkJCQlkbWFfdW5t YXBfc2cocGZkZXYtPmRldiwgYm8tPnNndHNbaV0uc2dsLAorCQkJCQkgICAgIGJvLT5zZ3RzW2ld Lm5lbnRzLCBETUFfQklESVJFQ1RJT05BTCk7CisJCQkJc2dfZnJlZV90YWJsZSgmYm8tPnNndHNb aV0pOworCQkJfQorCQl9CisJCWtmcmVlKGJvLT5zZ3RzKTsKKwl9CisKIAltdXRleF9sb2NrKCZw ZmRldi0+c2hyaW5rZXJfbG9jayk7CiAJaWYgKCFsaXN0X2VtcHR5KCZiby0+YmFzZS5tYWR2X2xp c3QpKQogCQlsaXN0X2RlbCgmYm8tPmJhc2UubWFkdl9saXN0KTsKQEAgLTUwLDEwICs2NywxMSBA QCBzdGF0aWMgaW50IHBhbmZyb3N0X2dlbV9vcGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCi0JcmV0 ID0gcGFuZnJvc3RfbW11X21hcChibyk7Ci0JaWYgKHJldCkKLQkJZHJtX21tX3JlbW92ZV9ub2Rl KCZiby0+bm9kZSk7Ci0KKwlpZiAoIWJvLT5pc19oZWFwKSB7CisJCXJldCA9IHBhbmZyb3N0X21t dV9tYXAoYm8pOworCQlpZiAocmV0KQorCQkJZHJtX21tX3JlbW92ZV9ub2RlKCZiby0+bm9kZSk7 CisJfQogb3V0OgogCXNwaW5fdW5sb2NrKCZwZmRldi0+bW1fbG9jayk7CiAJcmV0dXJuIHJldDsK QEAgLTczLDEyICs5MSwyMCBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9nZW1fY2xvc2Uoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZQogCXNwaW5fdW5sb2Nr KCZwZmRldi0+bW1fbG9jayk7CiB9CiAKK3N0YXRpYyBpbnQgcGFuZnJvc3RfZ2VtX3BpbihzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlpZiAodG9fcGFuZnJvc3RfYm8ob2JqKS0+aXNf aGVhcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gZHJtX2dlbV9zaG1lbV9waW4ob2Jq KTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyBwYW5mcm9z dF9nZW1fZnVuY3MgPSB7CiAJLmZyZWUgPSBwYW5mcm9zdF9nZW1fZnJlZV9vYmplY3QsCiAJLm9w ZW4gPSBwYW5mcm9zdF9nZW1fb3BlbiwKIAkuY2xvc2UgPSBwYW5mcm9zdF9nZW1fY2xvc2UsCiAJ LnByaW50X2luZm8gPSBkcm1fZ2VtX3NobWVtX3ByaW50X2luZm8sCi0JLnBpbiA9IGRybV9nZW1f c2htZW1fcGluLAorCS5waW4gPSBwYW5mcm9zdF9nZW1fcGluLAogCS51bnBpbiA9IGRybV9nZW1f c2htZW1fdW5waW4sCiAJLmdldF9zZ190YWJsZSA9IGRybV9nZW1fc2htZW1fZ2V0X3NnX3RhYmxl LAogCS52bWFwID0gZHJtX2dlbV9zaG1lbV92bWFwLApAQCAtMTE3LDEyICsxNDMsMTkgQEAgcGFu ZnJvc3RfZ2VtX2NyZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwK IAlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtOwogCXN0cnVjdCBwYW5mcm9zdF9n ZW1fb2JqZWN0ICpibzsKIAorCS8qIFJvdW5kIHVwIGhlYXAgYWxsb2NhdGlvbnMgdG8gMk1CIHRv IGtlZXAgZmF1bHQgaGFuZGxpbmcgc2ltcGxlICovCisJaWYgKGZsYWdzICYgUEFORlJPU1RfQk9f SEVBUCkKKwkJc2l6ZSA9IHJvdW5kdXAoc2l6ZSwgU1pfMk0pOworCWVsc2UKKwkJc2l6ZSA9IHJv dW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKKwogCXNobWVtID0gZHJtX2dlbV9zaG1lbV9jcmVhdGUo ZGV2LCBzaXplKTsKIAlpZiAoSVNfRVJSKHNobWVtKSkKIAkJcmV0dXJuIEVSUl9DQVNUKHNobWVt KTsKIAogCWJvID0gdG9fcGFuZnJvc3RfYm8oJnNobWVtLT5iYXNlKTsKIAliby0+bm9leGVjID0g ISEoZmxhZ3MgJiBQQU5GUk9TVF9CT19OT0VYRUMpOworCWJvLT5pc19oZWFwID0gISEoZmxhZ3Mg JiBQQU5GUk9TVF9CT19IRUFQKTsKIAogCS8qCiAJICogQWxsb2NhdGUgYW4gaWQgb2YgaWRyIHRh YmxlIHdoZXJlIHRoZSBvYmogaXMgcmVnaXN0ZXJlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X2dlbS5oCmluZGV4IGQ0YzdhYTE3OTBhNy4uZTEwZjU4MzE2OTE1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oCkBAIC05LDEwICs5LDEyIEBACiAKIHN0cnVj dCBwYW5mcm9zdF9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgYmFz ZTsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNndHM7CiAKIAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsK IAlib29sIGlzX21hcHBlZAkJOjE7CiAJYm9vbCBub2V4ZWMJCToxOworCWJvb2wgaXNfaGVhcAkJ OjE7CiB9OwogCiBzdGF0aWMgaW5saW5lCkBAIC0yMSw2ICsyMywxMiBAQCBzdHJ1Y3QgIHBhbmZy b3N0X2dlbV9vYmplY3QgKnRvX3BhbmZyb3N0X2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KQogCXJldHVybiBjb250YWluZXJfb2YodG9fZHJtX2dlbV9zaG1lbV9vYmoob2JqKSwgc3RydWN0 IHBhbmZyb3N0X2dlbV9vYmplY3QsIGJhc2UpOwogfQogCitzdGF0aWMgaW5saW5lCitzdHJ1Y3Qg IHBhbmZyb3N0X2dlbV9vYmplY3QgKmRybV9tbV9ub2RlX3RvX3BhbmZyb3N0X2JvKHN0cnVjdCBk cm1fbW1fbm9kZSAqbm9kZSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBw YW5mcm9zdF9nZW1fb2JqZWN0LCBub2RlKTsKK30KKwogc3RydWN0IGRybV9nZW1fb2JqZWN0ICpw YW5mcm9zdF9nZW1fY3JlYXRlX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qg c2l6ZSk7CiAKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfbW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3RfbW11LmMKaW5kZXggYjYwOWVlNTVhODcyLi4yZWQ0MTFmMDlkODAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfbW11LmMKQEAgLTIsNiArMiw3IEBACiAvKiBDb3B5 cmlnaHQgMjAxOSBMaW5hcm8sIEx0ZCwgUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4gKi8K ICNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cisj aW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQu aD4KICNpbmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgpAQCAt OSw2ICsxMCw3IEBACiAjaW5jbHVkZSA8bGludXgvaW9tbXUuaD4KICNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisjaW5jbHVk ZSA8bGludXgvc2htZW1fZnMuaD4KICNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgogCiAjaW5jbHVk ZSAicGFuZnJvc3RfZGV2aWNlLmgiCkBAIC0yNDAsMTIgKzI0MiwxMiBAQCB2b2lkIHBhbmZyb3N0 X21tdV91bm1hcChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pCiAJCXNpemVfdCB1bm1h cHBlZF9wYWdlOwogCQlzaXplX3QgcGdzaXplID0gZ2V0X3Bnc2l6ZShpb3ZhLCBsZW4gLSB1bm1h cHBlZF9sZW4pOwogCi0JCXVubWFwcGVkX3BhZ2UgPSBvcHMtPnVubWFwKG9wcywgaW92YSwgcGdz aXplKTsKLQkJaWYgKCF1bm1hcHBlZF9wYWdlKQotCQkJYnJlYWs7Ci0KLQkJaW92YSArPSB1bm1h cHBlZF9wYWdlOwotCQl1bm1hcHBlZF9sZW4gKz0gdW5tYXBwZWRfcGFnZTsKKwkJaWYgKG9wcy0+ aW92YV90b19waHlzKG9wcywgaW92YSkpIHsKKwkJCXVubWFwcGVkX3BhZ2UgPSBvcHMtPnVubWFw KG9wcywgaW92YSwgcGdzaXplKTsKKwkJCVdBUk5fT04odW5tYXBwZWRfcGFnZSAhPSBwZ3NpemUp OworCQl9CisJCWlvdmEgKz0gcGdzaXplOworCQl1bm1hcHBlZF9sZW4gKz0gcGdzaXplOwogCX0K IAogCW1tdV9od19kb19vcGVyYXRpb24ocGZkZXYsIDAsIGJvLT5ub2RlLnN0YXJ0IDw8IFBBR0Vf U0hJRlQsCkBAIC0yODEsNiArMjgzLDEwNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlvbW11X2dh dGhlcl9vcHMgbW11X3RsYl9vcHMgPSB7CiAJLnRsYl9zeW5jCT0gbW11X3RsYl9zeW5jX2NvbnRl eHQsCiB9OwogCitzdGF0aWMgc3RydWN0IGRybV9tbV9ub2RlICphZGRyX3RvX2RybV9tbV9ub2Rl KHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBpbnQgYXMsIHU2NCBhZGRyKQoreworCXN0 cnVjdCBkcm1fbW1fbm9kZSAqbm9kZTsKKwl1NjQgb2Zmc2V0ID0gYWRkciA+PiBQQUdFX1NISUZU OworCisJZHJtX21tX2Zvcl9lYWNoX25vZGUobm9kZSwgJnBmZGV2LT5tbSkgeworCQlpZiAob2Zm c2V0ID49IG5vZGUtPnN0YXJ0ICYmIG9mZnNldCA8IChub2RlLT5zdGFydCArIG5vZGUtPnNpemUp KQorCQkJcmV0dXJuIG5vZGU7CisJfQorCXJldHVybiBOVUxMOworfQorCisjZGVmaW5lIE5VTV9G QVVMVF9QQUdFUyAoU1pfMk0gLyBQQUdFX1NJWkUpCisKK2ludCBwYW5mcm9zdF9tbXVfbWFwX2Zh dWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIGludCBhcywgdTY0IGFkZHIp Cit7CisJaW50IHJldCwgaTsKKwlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7CisJc3RydWN0IHBh bmZyb3N0X2dlbV9vYmplY3QgKmJvOworCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwor CXBnb2ZmX3QgcGFnZV9vZmZzZXQ7CisJc3RydWN0IHNnX3RhYmxlICpzZ3Q7CisJc3RydWN0IHBh Z2UgKipwYWdlczsKKworCW5vZGUgPSBhZGRyX3RvX2RybV9tbV9ub2RlKHBmZGV2LCBhcywgYWRk cik7CisJaWYgKCFub2RlKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWJvID0gZHJtX21tX25vZGVf dG9fcGFuZnJvc3RfYm8obm9kZSk7CisJaWYgKCFiby0+aXNfaGVhcCkgeworCQlkZXZfV0FSTihw ZmRldi0+ZGV2LCAibWF0Y2hpbmcgQk8gaXMgbm90IGhlYXAgdHlwZSAoR1BVIFZBID0gJWxseCki LAorCQkJIG5vZGUtPnN0YXJ0IDw8IFBBR0VfU0hJRlQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisJLyogQXNzdW1lIDJNQiBhbGlnbm1lbnQgYW5kIHNpemUgbXVsdGlwbGUgKi8KKwlhZGRyICY9 IH4oKHU2NClTWl8yTSAtIDEpOworCXBhZ2Vfb2Zmc2V0ID0gYWRkciA+PiBQQUdFX1NISUZUOwor CXBhZ2Vfb2Zmc2V0IC09IG5vZGUtPnN0YXJ0OworCisJbXV0ZXhfbG9jaygmYm8tPmJhc2UucGFn ZXNfbG9jayk7CisKKwlpZiAoIWJvLT5iYXNlLnBhZ2VzKSB7CisJCWJvLT5zZ3RzID0ga3ZtYWxs b2NfYXJyYXkoYm8tPmJhc2UuYmFzZS5zaXplIC8gU1pfMk0sCisJCQkJICAgICBzaXplb2Yoc3Ry dWN0IHNnX3RhYmxlKSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOworCQlpZiAoIWJvLT5zZ3Rz KQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJcGFnZXMgPSBrdm1hbGxvY19hcnJheShiby0+YmFz ZS5iYXNlLnNpemUgPj4gUEFHRV9TSElGVCwKKwkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBwYWdl ICopLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7CisJCWlmICghcGFnZXMpIHsKKwkJCWtmcmVl KGJvLT5zZ3RzKTsKKwkJCWJvLT5zZ3RzID0gTlVMTDsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9 CisJCWJvLT5iYXNlLnBhZ2VzID0gcGFnZXM7CisJCWJvLT5iYXNlLnBhZ2VzX3VzZV9jb3VudCA9 IDE7CisJfSBlbHNlCisJCXBhZ2VzID0gYm8tPmJhc2UucGFnZXM7CisKKwltYXBwaW5nID0gYm8t PmJhc2UuYmFzZS5maWxwLT5mX21hcHBpbmc7CisJbWFwcGluZ19zZXRfdW5ldmljdGFibGUobWFw cGluZyk7CisKKwlmb3IgKGkgPSBwYWdlX29mZnNldDsgaSA8IHBhZ2Vfb2Zmc2V0ICsgTlVNX0ZB VUxUX1BBR0VTOyBpKyspIHsKKwkJcGFnZXNbaV0gPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZSht YXBwaW5nLCBpKTsKKwkJaWYgKElTX0VSUihwYWdlc1tpXSkpIHsKKwkJCW11dGV4X3VubG9jaygm Ym8tPmJhc2UucGFnZXNfbG9jayk7CisJCQlyZXQgPSBQVFJfRVJSKHBhZ2VzW2ldKTsKKwkJCWdv dG8gZXJyX3BhZ2VzOworCQl9CisJfQorCisJbXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19s b2NrKTsKKworCXNndCA9ICZiby0+c2d0c1twYWdlX29mZnNldCAvIChTWl8yTSAvIFBBR0VfU0la RSldOworCXJldCA9IHNnX2FsbG9jX3RhYmxlX2Zyb21fcGFnZXMoc2d0LCBwYWdlcyArIHBhZ2Vf b2Zmc2V0LAorCQkJCQlOVU1fRkFVTFRfUEFHRVMsIDAsIFNaXzJNLCBHRlBfS0VSTkVMKTsKKwlp ZiAocmV0KQorCQlnb3RvIGVycl9wYWdlczsKKworCWlmICghZG1hX21hcF9zZyhwZmRldi0+ZGV2 LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgRE1BX0JJRElSRUNUSU9OQUwpKSB7CisJCXJldCA9IC1F SU5WQUw7CisJCWdvdG8gZXJyX21hcDsKKwl9CisKKwltbXVfbWFwX3NnKHBmZGV2LCBhZGRyLCBJ T01NVV9XUklURSB8IElPTU1VX1JFQUQgfCBJT01NVV9OT0VYRUMsIHNndCk7CisKKwliby0+aXNf bWFwcGVkID0gdHJ1ZTsKKworCWRldl9kYmcocGZkZXYtPmRldiwgIm1hcHBlZCBwYWdlIGZhdWx0 IEAgJWxseCIsIGFkZHIpOworCisJcmV0dXJuIDA7CisKK2Vycl9tYXA6CisJc2dfZnJlZV90YWJs ZShzZ3QpOworZXJyX3BhZ2VzOgorCWRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKCZiby0+YmFzZSk7 CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGNvbnN0IGNoYXIgKmFjY2Vzc190eXBlX25hbWUo c3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJCXUzMiBmYXVsdF9zdGF0dXMpCiB7CkBA IC0zMTcsOSArNDE4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHBhbmZyb3N0X21tdV9pcnFfaGFu ZGxlcl90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgcGFuZnJvc3RfZGV2 aWNlICpwZmRldiA9IGRhdGE7CiAJdTMyIHN0YXR1cyA9IG1tdV9yZWFkKHBmZGV2LCBNTVVfSU5U X1JBV1NUQVQpOwotCWludCBpOwotCi0JZGV2X2VycihwZmRldi0+ZGV2LCAibW11IGlycSBzdGF0 dXM9JXhcbiIsIHN0YXR1cyk7CisJaW50IGksIHJldDsKIAogCWZvciAoaSA9IDA7IHN0YXR1czsg aSsrKSB7CiAJCXUzMiBtYXNrID0gQklUKGkpIHwgQklUKGkgKyAxNik7CkBAIC0zNDEsNiArNDQw LDE4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwYW5mcm9zdF9tbXVfaXJxX2hhbmRsZXJfdGhyZWFk KGludCBpcnEsIHZvaWQgKmRhdGEpCiAJCWFjY2Vzc190eXBlID0gKGZhdWx0X3N0YXR1cyA+PiA4 KSAmIDB4MzsKIAkJc291cmNlX2lkID0gKGZhdWx0X3N0YXR1cyA+PiAxNik7CiAKKwkJLyogUGFn ZSBmYXVsdCBvbmx5ICovCisJCWlmICgoc3RhdHVzICYgbWFzaykgPT0gQklUKGkpKSB7CisJCQlX QVJOX09OKGV4Y2VwdGlvbl90eXBlIDwgMHhDMSB8fCBleGNlcHRpb25fdHlwZSA+IDB4QzQpOwor CisJCQlyZXQgPSBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIocGZkZXYsIGksIGFkZHIpOwor CQkJaWYgKCFyZXQpIHsKKwkJCQltbXVfd3JpdGUocGZkZXYsIE1NVV9JTlRfQ0xFQVIsIEJJVChp KSk7CisJCQkJc3RhdHVzICY9IH5tYXNrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJ LyogdGVybWluYWwgZmF1bHQsIHByaW50IGluZm8gYWJvdXQgdGhlIGZhdWx0ICovCiAJCWRldl9l cnIocGZkZXYtPmRldiwKIAkJCSJVbmhhbmRsZWQgUGFnZSBmYXVsdCBpbiBBUyVkIGF0IFZBIDB4 JTAxNmxsWFxuIgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9wYW5mcm9zdF9kcm0uaCBi L2luY2x1ZGUvdWFwaS9kcm0vcGFuZnJvc3RfZHJtLmgKaW5kZXggYjgwYzIwZDE3ZGVjLi5lYzE5 ZGIxZWVhZDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vcGFuZnJvc3RfZHJtLmgKKysr IGIvaW5jbHVkZS91YXBpL2RybS9wYW5mcm9zdF9kcm0uaApAQCAtODUsNiArODUsNyBAQCBzdHJ1 Y3QgZHJtX3BhbmZyb3N0X3dhaXRfYm8gewogfTsKIAogI2RlZmluZSBQQU5GUk9TVF9CT19OT0VY RUMJMQorI2RlZmluZSBQQU5GUk9TVF9CT19IRUFQCTIKIAogLyoqCiAgKiBzdHJ1Y3QgZHJtX3Bh bmZyb3N0X2NyZWF0ZV9ibyAtIGlvY3RsIGFyZ3VtZW50IGZvciBjcmVhdGluZyBQYW5mcm9zdCBC T3MuCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbA==