From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH 1/9] drm: provide management functions for drm_file Date: Wed, 23 May 2018 16:34:03 +0200 Message-ID: <20180523143411.64070-2-noralf@tronnes.org> References: <20180523143411.64070-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.domeneshop.no (smtp.domeneshop.no [IPv6:2a01:5b40:0:3005::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id F2C636E4B6 for ; Wed, 23 May 2018 14:34:36 +0000 (UTC) In-Reply-To: <20180523143411.64070-1-noralf@tronnes.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: intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5uQGdtYWlsLmNvbT4KClJhdGhlciB0aGFu IGRvaW5nIGRybV9maWxlIGFsbG9jYXRpb24vZGVzdHJ1Y3Rpb24gcmlnaHQgaW4gdGhlIGZvcHMs IGxldHMKcHJvdmlkZSBzZXBhcmF0ZSBoZWxwZXJzLiBUaGlzIGRlY291cGxlcyBkcm1fZmlsZSBt YW5hZ2VtZW50IGZyb20gdGhlCnN0aWxsLW1hbmRhdG9yeSBkcm0tZm9wcy4gSXQgcHJlcGFyZXMg Zm9yIHVzZSBvZiBkcm1fZmlsZSB3aXRob3V0IHRoZQpmb3BzLCBib3RoIGJ5IHBvc3NpYmxlIHNl cGFyYXRlIGZvcHMgaW1wbGVtZW50YXRpb25zIGFuZCBBUElzIChub3QgdGhhdCBJCmFtIGF3YXJl IG9mIGFueSBzdWNoIHBsYW5zKSwgYW5kIG1vcmUgaW1wb3J0YW50bHkgZnJvbSBpbi1rZXJuZWwg dXNlIHdoZXJlCm5vIHJlYWwgZmlsZSBpcyBhdmFpbGFibGUuCgpTaWduZWQtb2ZmLWJ5OiBEYXZp ZCBIZXJybWFubiA8ZGguaGVycm1hbm5AZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBOb3JhbGYg VHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIg PGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMg ICAgIHwgMzA1ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggfCAgIDIgKwogMiBmaWxlcyBjaGFuZ2VkLCAxNzUg aW5zZXJ0aW9ucygrKSwgMTMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMKaW5kZXggZTM5NDc5 OTk3OWE2Li5kNDU4OGQzM2Y5MWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmls ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCkBAIC0xMDEsNiArMTAxLDE3NSBA QCBERUZJTkVfTVVURVgoZHJtX2dsb2JhbF9tdXRleCk7CiAKIHN0YXRpYyBpbnQgZHJtX29wZW5f aGVscGVyKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcik7CiAKKy8q KgorICogZHJtX2ZpbGVfYWxsb2MgLSBhbGxvY2F0ZSBmaWxlIGNvbnRleHQKKyAqIEBtaW5vcjog bWlub3IgdG8gYWxsb2NhdGUgb24KKyAqCisgKiBUaGlzIGFsbG9jYXRlcyBhIG5ldyBEUk0gZmls ZSBjb250ZXh0LiBJdCBpcyBub3QgbGlua2VkIGludG8gYW55IGNvbnRleHQgYW5kCisgKiBjYW4g YmUgdXNlZCBieSB0aGUgY2FsbGVyIGZyZWVseS4gTm90ZSB0aGF0IHRoZSBjb250ZXh0IGtlZXBz IGEgcG9pbnRlciB0bworICogQG1pbm9yLCBzbyBpdCBtdXN0IGJlIGZyZWVkIGJlZm9yZSBAbWlu b3IgaXMuCisgKgorICogUkVUVVJOUzoKKyAqIFBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIGNv bnRleHQsIEVSUl9QVFIgb24gZmFpbHVyZS4KKyAqLworc3RydWN0IGRybV9maWxlICpkcm1fZmls ZV9hbGxvYyhzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gbWlub3ItPmRldjsKKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7CisJaW50IHJldDsKKwor CWZpbGUgPSBremFsbG9jKHNpemVvZigqZmlsZSksIEdGUF9LRVJORUwpOworCWlmICghZmlsZSkK KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlmaWxlLT5waWQgPSBnZXRfcGlkKHRhc2tf cGlkKGN1cnJlbnQpKTsKKwlmaWxlLT5taW5vciA9IG1pbm9yOworCisJLyogZm9yIGNvbXBhdGli aWxpdHkgcm9vdCBpcyBhbHdheXMgYXV0aGVudGljYXRlZCAqLworCWZpbGUtPmF1dGhlbnRpY2F0 ZWQgPSBjYXBhYmxlKENBUF9TWVNfQURNSU4pOworCWZpbGUtPmxvY2tfY291bnQgPSAwOworCisJ SU5JVF9MSVNUX0hFQUQoJmZpbGUtPmxoZWFkKTsKKwlJTklUX0xJU1RfSEVBRCgmZmlsZS0+ZmJz KTsKKwltdXRleF9pbml0KCZmaWxlLT5mYnNfbG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJmZpbGUt PmJsb2JzKTsKKwlJTklUX0xJU1RfSEVBRCgmZmlsZS0+cGVuZGluZ19ldmVudF9saXN0KTsKKwlJ TklUX0xJU1RfSEVBRCgmZmlsZS0+ZXZlbnRfbGlzdCk7CisJaW5pdF93YWl0cXVldWVfaGVhZCgm ZmlsZS0+ZXZlbnRfd2FpdCk7CisJZmlsZS0+ZXZlbnRfc3BhY2UgPSA0MDk2OyAvKiBzZXQgYXNp ZGUgNGsgZm9yIGV2ZW50IGJ1ZmZlciAqLworCisJbXV0ZXhfaW5pdCgmZmlsZS0+ZXZlbnRfcmVh ZF9sb2NrKTsKKworCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkp CisJCWRybV9nZW1fb3BlbihkZXYsIGZpbGUpOworCisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1 cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCWRybV9zeW5jb2JqX29wZW4oZmlsZSk7CisKKwlp ZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCisJCWRybV9wcmlt ZV9pbml0X2ZpbGVfcHJpdmF0ZSgmZmlsZS0+cHJpbWUpOworCisJaWYgKGRldi0+ZHJpdmVyLT5v cGVuKSB7CisJCXJldCA9IGRldi0+ZHJpdmVyLT5vcGVuKGRldiwgZmlsZSk7CisJCWlmIChyZXQg PCAwKQorCQkJZ290byBvdXRfcHJpbWVfZGVzdHJveTsKKwl9CisKKwlpZiAoZHJtX2lzX3ByaW1h cnlfY2xpZW50KGZpbGUpKSB7CisJCXJldCA9IGRybV9tYXN0ZXJfb3BlbihmaWxlKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gb3V0X2Nsb3NlOworCX0KKworCXJldHVybiBmaWxlOworCitvdXRfY2xv c2U6CisJaWYgKGRldi0+ZHJpdmVyLT5wb3N0Y2xvc2UpCisJCWRldi0+ZHJpdmVyLT5wb3N0Y2xv c2UoZGV2LCBmaWxlKTsKK291dF9wcmltZV9kZXN0cm95OgorCWlmIChkcm1fY29yZV9jaGVja19m ZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKKwkJZHJtX3ByaW1lX2Rlc3Ryb3lfZmlsZV9wcml2 YXRlKCZmaWxlLT5wcmltZSk7CisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklW RVJfU1lOQ09CSikpCisJCWRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZSk7CisJaWYgKGRybV9jb3Jl X2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKKwkJZHJtX2dlbV9yZWxlYXNlKGRldiwg ZmlsZSk7CisJcHV0X3BpZChmaWxlLT5waWQpOworCWtmcmVlKGZpbGUpOworCisJcmV0dXJuIEVS Ul9QVFIocmV0KTsKK30KKworc3RhdGljIHZvaWQgZHJtX2V2ZW50c19yZWxlYXNlKHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmaWxlX3By aXYtPm1pbm9yLT5kZXY7CisJc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50ICplLCAqZXQ7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ss IGZsYWdzKTsKKworCS8qIFVubGluayBwZW5kaW5nIGV2ZW50cyAqLworCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShlLCBldCwgJmZpbGVfcHJpdi0+cGVuZGluZ19ldmVudF9saXN0LAorCQkJCSBw ZW5kaW5nX2xpbmspIHsKKwkJbGlzdF9kZWwoJmUtPnBlbmRpbmdfbGluayk7CisJCWUtPmZpbGVf cHJpdiA9IE5VTEw7CisJfQorCisJLyogUmVtb3ZlIHVuY29uc3VtZWQgZXZlbnRzICovCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIGV0LCAmZmlsZV9wcml2LT5ldmVudF9saXN0LCBsaW5r KSB7CisJCWxpc3RfZGVsKCZlLT5saW5rKTsKKwkJa2ZyZWUoZSk7CisJfQorCisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cit9CisKKy8qKgorICogZHJt X2ZpbGVfZnJlZSAtIGZyZWUgZmlsZSBjb250ZXh0CisgKiBAZmlsZTogY29udGV4dCB0byBmcmVl LCBvciBOVUxMCisgKgorICogVGhpcyBkZXN0cm95cyBhbmQgZGVhbGxvY2F0ZXMgYSBEUk0gZmls ZSBjb250ZXh0IHByZXZpb3VzbHkgYWxsb2NhdGVkIHZpYQorICogZHJtX2ZpbGVfYWxsb2MoKS4g VGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZSB0byB1bmxpbmsgaXQgZnJvbSBhbnkgY29udGV4dHMK KyAqIGJlZm9yZSBjYWxsaW5nIHRoaXMuCisgKgorICogSWYgTlVMTCBpcyBwYXNzZWQsIHRoaXMg aXMgYSBuby1vcC4KKyAqCisgKiBSRVRVUk5TOgorICogMCBvbiBzdWNjZXNzLCBvciBlcnJvciBj b2RlIG9uIGZhaWx1cmUuCisgKi8KK3ZvaWQgZHJtX2ZpbGVfZnJlZShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKKworCWlmICghZmlsZSkKKwkJcmV0 dXJuOworCisJZGV2ID0gZmlsZS0+bWlub3ItPmRldjsKKworCURSTV9ERUJVRygicGlkID0gJWQs IGRldmljZSA9IDB4JWx4LCBvcGVuX2NvdW50ID0gJWRcbiIsCisJCSAgdGFza19waWRfbnIoY3Vy cmVudCksCisJCSAgKGxvbmcpb2xkX2VuY29kZV9kZXYoZmlsZS0+bWlub3ItPmtkZXYtPmRldnQp LAorCQkgIGRldi0+b3Blbl9jb3VudCk7CisKKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShk ZXYsIERSSVZFUl9MRUdBQ1kpICYmCisJICAgIGRldi0+ZHJpdmVyLT5wcmVjbG9zZSkKKwkJZGV2 LT5kcml2ZXItPnByZWNsb3NlKGRldiwgZmlsZSk7CisKKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVh dHVyZShkZXYsIERSSVZFUl9MRUdBQ1kpKQorCQlkcm1fbGVnYWN5X2xvY2tfcmVsZWFzZShkZXYs IGZpbGUtPmZpbHApOworCisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf SEFWRV9ETUEpKQorCQlkcm1fbGVnYWN5X3JlY2xhaW1fYnVmZmVycyhkZXYsIGZpbGUpOworCisJ ZHJtX2V2ZW50c19yZWxlYXNlKGZpbGUpOworCisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUo ZGV2LCBEUklWRVJfTU9ERVNFVCkpIHsKKwkJZHJtX2ZiX3JlbGVhc2UoZmlsZSk7CisJCWRybV9w cm9wZXJ0eV9kZXN0cm95X3VzZXJfYmxvYnMoZGV2LCBmaWxlKTsKKwl9CisKKwlpZiAoZHJtX2Nv cmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpfcmVs ZWFzZShmaWxlKTsKKworCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dF TSkpCisJCWRybV9nZW1fcmVsZWFzZShkZXYsIGZpbGUpOworCisJZHJtX2xlZ2FjeV9jdHhiaXRt YXBfZmx1c2goZGV2LCBmaWxlKTsKKworCWlmIChkcm1faXNfcHJpbWFyeV9jbGllbnQoZmlsZSkp CisJCWRybV9tYXN0ZXJfcmVsZWFzZShmaWxlKTsKKworCWlmIChkZXYtPmRyaXZlci0+cG9zdGNs b3NlKQorCQlkZXYtPmRyaXZlci0+cG9zdGNsb3NlKGRldiwgZmlsZSk7CisKKwlpZiAoZHJtX2Nv cmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCisJCWRybV9wcmltZV9kZXN0cm95 X2ZpbGVfcHJpdmF0ZSgmZmlsZS0+cHJpbWUpOworCisJV0FSTl9PTighbGlzdF9lbXB0eSgmZmls ZS0+ZXZlbnRfbGlzdCkpOworCisJcHV0X3BpZChmaWxlLT5waWQpOworCWtmcmVlKGZpbGUpOwor fQorCiBzdGF0aWMgaW50IGRybV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqIGRldikKIHsKIAlp bnQgcmV0OwpAQCAtMTk2LDcgKzM2NSw2IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVscGVyKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKIHsKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gbWlub3ItPmRldjsKIAlzdHJ1Y3QgZHJtX2ZpbGUgKnByaXY7Ci0JaW50 IHJldDsKIAogCWlmIChmaWxwLT5mX2ZsYWdzICYgT19FWENMKQogCQlyZXR1cm4gLUVCVVNZOwkv KiBObyBleGNsdXNpdmUgb3BlbnMgKi8KQEAgLTIwNyw1MCArMzc1LDEyIEBAIHN0YXRpYyBpbnQg ZHJtX29wZW5faGVscGVyKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5v cikKIAogCURSTV9ERUJVRygicGlkID0gJWQsIG1pbm9yID0gJWRcbiIsIHRhc2tfcGlkX25yKGN1 cnJlbnQpLCBtaW5vci0+aW5kZXgpOwogCi0JcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKCpwcml2KSwg R0ZQX0tFUk5FTCk7Ci0JaWYgKCFwcml2KQotCQlyZXR1cm4gLUVOT01FTTsKKwlwcml2ID0gZHJt X2ZpbGVfYWxsb2MobWlub3IpOworCWlmIChJU19FUlIocHJpdikpCisJCXJldHVybiBQVFJfRVJS KHByaXYpOwogCiAJZmlscC0+cHJpdmF0ZV9kYXRhID0gcHJpdjsKIAlwcml2LT5maWxwID0gZmls cDsKLQlwcml2LT5waWQgPSBnZXRfcGlkKHRhc2tfcGlkKGN1cnJlbnQpKTsKLQlwcml2LT5taW5v ciA9IG1pbm9yOwotCi0JLyogZm9yIGNvbXBhdGliaWxpdHkgcm9vdCBpcyBhbHdheXMgYXV0aGVu dGljYXRlZCAqLwotCXByaXYtPmF1dGhlbnRpY2F0ZWQgPSBjYXBhYmxlKENBUF9TWVNfQURNSU4p OwotCXByaXYtPmxvY2tfY291bnQgPSAwOwotCi0JSU5JVF9MSVNUX0hFQUQoJnByaXYtPmxoZWFk KTsKLQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+ZmJzKTsKLQltdXRleF9pbml0KCZwcml2LT5mYnNf bG9jayk7Ci0JSU5JVF9MSVNUX0hFQUQoJnByaXYtPmJsb2JzKTsKLQlJTklUX0xJU1RfSEVBRCgm cHJpdi0+cGVuZGluZ19ldmVudF9saXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+ZXZlbnRf bGlzdCk7Ci0JaW5pdF93YWl0cXVldWVfaGVhZCgmcHJpdi0+ZXZlbnRfd2FpdCk7Ci0JcHJpdi0+ ZXZlbnRfc3BhY2UgPSA0MDk2OyAvKiBzZXQgYXNpZGUgNGsgZm9yIGV2ZW50IGJ1ZmZlciAqLwot Ci0JbXV0ZXhfaW5pdCgmcHJpdi0+ZXZlbnRfcmVhZF9sb2NrKTsKLQotCWlmIChkcm1fY29yZV9j aGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCi0JCWRybV9nZW1fb3BlbihkZXYsIHByaXYp OwotCi0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCi0J CWRybV9zeW5jb2JqX29wZW4ocHJpdik7Ci0KLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShk ZXYsIERSSVZFUl9QUklNRSkpCi0JCWRybV9wcmltZV9pbml0X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+ cHJpbWUpOwotCi0JaWYgKGRldi0+ZHJpdmVyLT5vcGVuKSB7Ci0JCXJldCA9IGRldi0+ZHJpdmVy LT5vcGVuKGRldiwgcHJpdik7Ci0JCWlmIChyZXQgPCAwKQotCQkJZ290byBvdXRfcHJpbWVfZGVz dHJveTsKLQl9Ci0KLQlpZiAoZHJtX2lzX3ByaW1hcnlfY2xpZW50KHByaXYpKSB7Ci0JCXJldCA9 IGRybV9tYXN0ZXJfb3Blbihwcml2KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0X2Nsb3NlOwot CX0KIAogCW11dGV4X2xvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwogCWxpc3RfYWRkKCZwcml2 LT5saGVhZCwgJmRldi0+ZmlsZWxpc3QpOwpAQCAtMjc3LDQ1ICs0MDcsNiBAQCBzdGF0aWMgaW50 IGRybV9vcGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGRybV9taW5vciAqbWlu b3IpCiAjZW5kaWYKIAogCXJldHVybiAwOwotCi1vdXRfY2xvc2U6Ci0JaWYgKGRldi0+ZHJpdmVy LT5wb3N0Y2xvc2UpCi0JCWRldi0+ZHJpdmVyLT5wb3N0Y2xvc2UoZGV2LCBwcml2KTsKLW91dF9w cmltZV9kZXN0cm95OgotCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BS SU1FKSkKLQkJZHJtX3ByaW1lX2Rlc3Ryb3lfZmlsZV9wcml2YXRlKCZwcml2LT5wcmltZSk7Ci0J aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCi0JCWRybV9z eW5jb2JqX3JlbGVhc2UocHJpdik7Ci0JaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfR0VNKSkKLQkJZHJtX2dlbV9yZWxlYXNlKGRldiwgcHJpdik7Ci0JcHV0X3BpZChwcml2 LT5waWQpOwotCWtmcmVlKHByaXYpOwotCWZpbHAtPnByaXZhdGVfZGF0YSA9IE5VTEw7Ci0JcmV0 dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgZHJtX2V2ZW50c19yZWxlYXNlKHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2KQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmaWxlX3ByaXYt Pm1pbm9yLT5kZXY7Ci0Jc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50ICplLCAqZXQ7Ci0JdW5zaWdu ZWQgbG9uZyBmbGFnczsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZs YWdzKTsKLQotCS8qIFVubGluayBwZW5kaW5nIGV2ZW50cyAqLwotCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShlLCBldCwgJmZpbGVfcHJpdi0+cGVuZGluZ19ldmVudF9saXN0LAotCQkJCSBwZW5k aW5nX2xpbmspIHsKLQkJbGlzdF9kZWwoJmUtPnBlbmRpbmdfbGluayk7Ci0JCWUtPmZpbGVfcHJp diA9IE5VTEw7Ci0JfQotCi0JLyogUmVtb3ZlIHVuY29uc3VtZWQgZXZlbnRzICovCi0JbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGUsIGV0LCAmZmlsZV9wcml2LT5ldmVudF9saXN0LCBsaW5rKSB7 Ci0JCWxpc3RfZGVsKCZlLT5saW5rKTsKLQkJa2ZyZWUoZSk7Ci0JfQotCi0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkIGRy bV9sZWdhY3lfZGV2X3JlaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtMzgyLDU3ICs0 NzMsNyBAQCBpbnQgZHJtX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbHApCiAJbGlzdF9kZWwoJmZpbGVfcHJpdi0+bGhlYWQpOwogCW11dGV4X3VubG9jaygmZGV2 LT5maWxlbGlzdF9tdXRleCk7CiAKLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERS SVZFUl9MRUdBQ1kpICYmCi0JICAgIGRldi0+ZHJpdmVyLT5wcmVjbG9zZSkKLQkJZGV2LT5kcml2 ZXItPnByZWNsb3NlKGRldiwgZmlsZV9wcml2KTsKLQotCS8qID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0JICogQmVnaW4gaW5saW5lIGRy bV9yZWxlYXNlCi0JICovCi0KLQlEUk1fREVCVUcoInBpZCA9ICVkLCBkZXZpY2UgPSAweCVseCwg b3Blbl9jb3VudCA9ICVkXG4iLAotCQkgIHRhc2tfcGlkX25yKGN1cnJlbnQpLAotCQkgIChsb25n KW9sZF9lbmNvZGVfZGV2KGZpbGVfcHJpdi0+bWlub3ItPmtkZXYtPmRldnQpLAotCQkgIGRldi0+ b3Blbl9jb3VudCk7Ci0KLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9M RUdBQ1kpKQotCQlkcm1fbGVnYWN5X2xvY2tfcmVsZWFzZShkZXYsIGZpbHApOwotCi0JaWYgKGRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfSEFWRV9ETUEpKQotCQlkcm1fbGVnYWN5 X3JlY2xhaW1fYnVmZmVycyhkZXYsIGZpbGVfcHJpdik7Ci0KLQlkcm1fZXZlbnRzX3JlbGVhc2Uo ZmlsZV9wcml2KTsKLQotCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01P REVTRVQpKSB7Ci0JCWRybV9mYl9yZWxlYXNlKGZpbGVfcHJpdik7Ci0JCWRybV9wcm9wZXJ0eV9k ZXN0cm95X3VzZXJfYmxvYnMoZGV2LCBmaWxlX3ByaXYpOwotCX0KLQotCWlmIChkcm1fY29yZV9j aGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQotCQlkcm1fc3luY29ial9yZWxlYXNl KGZpbGVfcHJpdik7Ci0KLQlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9H RU0pKQotCQlkcm1fZ2VtX3JlbGVhc2UoZGV2LCBmaWxlX3ByaXYpOwotCi0JZHJtX2xlZ2FjeV9j dHhiaXRtYXBfZmx1c2goZGV2LCBmaWxlX3ByaXYpOwotCi0JaWYgKGRybV9pc19wcmltYXJ5X2Ns aWVudChmaWxlX3ByaXYpKQotCQlkcm1fbWFzdGVyX3JlbGVhc2UoZmlsZV9wcml2KTsKLQotCWlm IChkZXYtPmRyaXZlci0+cG9zdGNsb3NlKQotCQlkZXYtPmRyaXZlci0+cG9zdGNsb3NlKGRldiwg ZmlsZV9wcml2KTsKLQotCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BS SU1FKSkKLQkJZHJtX3ByaW1lX2Rlc3Ryb3lfZmlsZV9wcml2YXRlKCZmaWxlX3ByaXYtPnByaW1l KTsKLQotCVdBUk5fT04oIWxpc3RfZW1wdHkoJmZpbGVfcHJpdi0+ZXZlbnRfbGlzdCkpOwotCi0J cHV0X3BpZChmaWxlX3ByaXYtPnBpZCk7Ci0Ja2ZyZWUoZmlsZV9wcml2KTsKLQotCS8qID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0JICog RW5kIGlubGluZSBkcm1fcmVsZWFzZQotCSAqLworCWRybV9maWxlX2ZyZWUoZmlsZV9wcml2KTsK IAogCWlmICghLS1kZXYtPm9wZW5fY291bnQpIHsKIAkJZHJtX2xhc3RjbG9zZShkZXYpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJt L2RybV9pbnRlcm5hbC5oCmluZGV4IGI3MjI0MmU5M2VhNC4uNDAxNzljNWZjNmI4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9pbnRlcm5hbC5oCkBAIC0yNiw2ICsyNiw4IEBACiAKIC8qIGRybV9maWxlLmMgKi8KIGV4 dGVybiBzdHJ1Y3QgbXV0ZXggZHJtX2dsb2JhbF9tdXRleDsKK3N0cnVjdCBkcm1fZmlsZSAqZHJt X2ZpbGVfYWxsb2Moc3RydWN0IGRybV9taW5vciAqbWlub3IpOwordm9pZCBkcm1fZmlsZV9mcmVl KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CiB2b2lkIGRybV9sYXN0Y2xvc2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiAKIC8qIGRybV9wY2kuYyAqLwotLSAKMi4xNS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK