From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laura Abbott Subject: [RFC PATCH 07/12] staging: android: ion: Remove old platform support Date: Thu, 2 Mar 2017 13:44:39 -0800 Message-ID: <1488491084-17252-8-git-send-email-labbott@redhat.com> References: <1488491084-17252-1-git-send-email-labbott@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-f174.google.com (mail-qk0-f174.google.com [209.85.220.174]) by gabe.freedesktop.org (Postfix) with ESMTPS id 810C16EC8B for ; Thu, 2 Mar 2017 21:45:15 +0000 (UTC) Received: by mail-qk0-f174.google.com with SMTP id n127so147107476qkf.0 for ; Thu, 02 Mar 2017 13:45:15 -0800 (PST) In-Reply-To: <1488491084-17252-1-git-send-email-labbott@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sumit Semwal , Riley Andrews , arve@android.com Cc: devel@driverdev.osuosl.org, romlem@google.com, Greg Kroah-Hartman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-mm@kvack.org, Mark Brown , Daniel Vetter , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org CkRldmljZSBzcGVjaWZpYyBwbGF0Zm9ybSBzdXBwb3J0IGhhcyBiZWVuIGhhcGhhemFyZCBmb3Ig SW9uLiBUaGVyZSBoYXZlCmJlZW4gc2V2ZXJhbCBpbmRlcGVuZGVudCBhdHRlbXB0cyBhbmQgdGhl cmUgYXJlIHN0aWxsIG9iamVjdGlvbnMgdG8Kd2hhdCBiaW5kaW5ncyBleGlzdCByaWdodCBub3cu IEp1c3QgcmVtb3ZlIGV2ZXJ5dGhpbmcgZm9yIGEgZnJlc2ggc3RhcnQuCgpTaWduZWQtb2ZmLWJ5 OiBMYXVyYSBBYmJvdHQgPGxhYmJvdHRAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL3N0YWdpbmcv YW5kcm9pZC9pb24vS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAzNSAtLS0tCiBkcml2ZXJzL3N0 YWdpbmcvYW5kcm9pZC9pb24vTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNiAtCiBkcml2ZXJz L3N0YWdpbmcvYW5kcm9pZC9pb24vaGlzaWxpY29uL0tjb25maWcgICAgICB8ICAgNSAtCiBkcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaGlzaWxpY29uL01ha2VmaWxlICAgICB8ICAgMSAtCiBk cml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaGlzaWxpY29uL2hpNjIyMF9pb24uYyB8IDExMyAt LS0tLS0tLS0tLS0tCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uX2R1bW15X2RyaXZl ci5jICAgICB8IDE1NiAtLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQv aW9uL2lvbl9vZi5jICAgICAgICAgICAgICAgfCAxODQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uX29mLmggICAgICAgICAgICAgICB8ICAzNyAt LS0tLQogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL3RlZ3JhL01ha2VmaWxlICAgICAgICAg fCAgIDEgLQogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL3RlZ3JhL3RlZ3JhX2lvbi5jICAg ICAgfCAgODAgLS0tLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCA2MTggZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hpc2lsaWNvbi9L Y29uZmlnCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hp c2lsaWNvbi9NYWtlZmlsZQogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9hbmRy b2lkL2lvbi9oaXNpbGljb24vaGk2MjIwX2lvbi5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbl9kdW1teV9kcml2ZXIuYwogZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb25fb2YuYwogZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb25fb2YuaAogZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi90ZWdyYS9NYWtlZmlsZQogZGVsZXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi90ZWdyYS90ZWdyYV9pb24uYwoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9LY29uZmlnIGIvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvaW9uL0tjb25maWcKaW5kZXggYzhmYjQxMy4uMGM5MWIyYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL0tjb25maWcKKysrIGIvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvaW9uL0tjb25maWcKQEAgLTE3LDM4ICsxNywzIEBAIGNvbmZpZyBJ T05fVEVTVAogCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGNyZWF0ZSBhIGRldmljZSB0aGF0IGNh biBiZSB1c2VkIHRvIHRlc3QgdGhlCiAJICBrZXJuZWwgYW5kIGRldmljZSBzaWRlIElPTiBmdW5j dGlvbnMuCiAKLWNvbmZpZyBJT05fRFVNTVkKLQlib29sICJEdW1teSBJb24gZHJpdmVyIgotCWRl cGVuZHMgb24gSU9OCi0JaGVscAotCSAgUHJvdmlkZXMgYSBkdW1teSBJT04gZHJpdmVyIHRoYXQg cmVnaXN0ZXJzIHRoZQotCSAgL2Rldi9pb24gZGV2aWNlIGFuZCBzb21lIGJhc2ljIGhlYXBzLiBU aGlzIGNhbgotCSAgYmUgdXNlZCBmb3IgdGVzdGluZyB0aGUgSU9OIGluZnJhc3RydWN0dXJlIGlm Ci0JICBvbmUgZG9lc24ndCBoYXZlIGFjY2VzcyB0byBoYXJkd2FyZSBkcml2ZXJzIHRoYXQKLQkg IHVzZSBJT04uCi0KLWNvbmZpZyBJT05fVEVHUkEKLQl0cmlzdGF0ZSAiSW9uIGZvciBUZWdyYSIK LQlkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgJiYgSU9OCi0JaGVscAotCSAgQ2hvb3NlIHRoaXMgb3B0 aW9uIGlmIHlvdSB3aXNoIHRvIHVzZSBpb24gb24gYW4gblZpZGlhIFRlZ3JhLgotCi1jb25maWcg SU9OX0hJU0kKLQl0cmlzdGF0ZSAiSW9uIGZvciBIaXNpbGljb24iCi0JZGVwZW5kcyBvbiBBUkNI X0hJU0kgJiYgSU9OCi0Jc2VsZWN0IElPTl9PRgotCWhlbHAKLQkgIENob29zZSB0aGlzIG9wdGlv biBpZiB5b3Ugd2lzaCB0byB1c2UgaW9uIG9uIEhpc2lsaWNvbiBQbGF0Zm9ybS4KLQotc291cmNl ICJkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaGlzaWxpY29uL0tjb25maWciCi0KLWNvbmZp ZyBJT05fT0YKLQlib29sICJEZXZpY2V0cmVlIHN1cHBvcnQgZm9yIElvbiIKLQlkZXBlbmRzIG9u IElPTiAmJiBPRl9BRERSRVNTCi0JaGVscAotCSAgUHJvdmlkZXMgYmFzZSBzdXBwb3J0IGZvciBk ZWZpbmluZyBJb24gaGVhcHMgaW4gZGV2aWNldHJlZQotCSAgYW5kIHNldHRpbmcgdGhlbSB1cC4g QWxzbyBpbmNsdWRlcyBmdW5jdGlvbnMgZm9yIHBsYXRmb3JtcwotCSAgdG8gcGFyc2UgdGhlIGRl dmljZXRyZWUgYW5kIGV4cGFuZCBmb3IgdGhlaXIgb3duIGN1c3RvbQotCSAgZXh0ZW5zaW9ucwot Ci0JICBJZiB1c2luZyBJb24gYW5kIGRldmljZXRyZWUsIHlvdSBzaG91bGQgc2F5IFkgaGVyZQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL01ha2VmaWxlIGIvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvaW9uL01ha2VmaWxlCmluZGV4IDVkNjMwYTAuLjk0NTcwOTAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vTWFrZWZpbGUKQEAgLTUsOSArNSwzIEBAIG9iai0kKENP TkZJR19JT05fVEVTVCkgKz0gaW9uX3Rlc3QubwogaWZkZWYgQ09ORklHX0NPTVBBVAogb2JqLSQo Q09ORklHX0lPTikgKz0gY29tcGF0X2lvbi5vCiBlbmRpZgotCi1vYmotJChDT05GSUdfSU9OX0RV TU1ZKSArPSBpb25fZHVtbXlfZHJpdmVyLm8KLW9iai0kKENPTkZJR19JT05fVEVHUkEpICs9IHRl Z3JhLwotb2JqLSQoQ09ORklHX0lPTl9ISVNJKSArPSBoaXNpbGljb24vCi1vYmotJChDT05GSUdf SU9OX09GKSArPSBpb25fb2YubwotCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9p ZC9pb24vaGlzaWxpY29uL0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaGlz aWxpY29uL0tjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNGJkMDcuLjAw MDAwMDAKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hpc2lsaWNvbi9LY29uZmln CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1jb25maWcgSEk2MjIwX0lPTgotICAgICAg ICBib29sICJIaTYyMjAgSU9OIERyaXZlciIKLSAgICAgICAgZGVwZW5kcyBvbiBBUkNIX0hJU0kg JiYgSU9OCi0gICAgICAgIGhlbHAKLSAgICAgICAgICBCdWlsZCB0aGUgSGlzaWxpY29uIEhpNjIy MCBpb24gZHJpdmVyLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hp c2lsaWNvbi9NYWtlZmlsZSBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9oaXNpbGljb24v TWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhODk0MTQuLjAwMDAwMDAK LS0tIGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hpc2lsaWNvbi9NYWtlZmlsZQorKysg L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLW9iai0kKENPTkZJR19ISTYyMjBfSU9OKSArPSBoaTYy MjBfaW9uLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9oaXNpbGlj b24vaGk2MjIwX2lvbi5jIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hpc2lsaWNvbi9o aTYyMjBfaW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZTc4OTcuLjAwMDAw MDAKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2hpc2lsaWNvbi9oaTYyMjBfaW9u LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotLyoKLSAqIEhpc2lsaWNvbiBIaTYy MjAgSU9OIERyaXZlcgotICoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBIaXNpbGljb24gTGltaXRl ZC4KLSAqCi0gKiBBdXRob3I6IENoZW4gRmVuZyA8cHVjay5jaGVuQGhpc2lsaWNvbi5jb20+Ci0g KgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KLSAqLwotCi0jZGVmaW5lIHByX2ZtdChmbXQpICJJb246ICIg Zm10Ci0KLSNpbmNsdWRlIDxsaW51eC9lcnIuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvb2YuaD4K LSNpbmNsdWRlIDxsaW51eC9tbS5oPgotI2luY2x1ZGUgIi4uL2lvbl9wcml2LmgiCi0jaW5jbHVk ZSAiLi4vaW9uLmgiCi0jaW5jbHVkZSAiLi4vaW9uX29mLmgiCi0KLXN0cnVjdCBoaXNpX2lvbl9k ZXYgewotCXN0cnVjdCBpb25faGVhcAkqKmhlYXBzOwotCXN0cnVjdCBpb25fZGV2aWNlICppZGV2 OwotCXN0cnVjdCBpb25fcGxhdGZvcm1fZGF0YSAqZGF0YTsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg aW9uX29mX2hlYXAgaGlzaV9oZWFwc1tdID0gewotCVBMQVRGT1JNX0hFQVAoImhpc2lsaWNvbixz eXNfdXNlciIsIDAsCi0JCSAgICAgIElPTl9IRUFQX1RZUEVfU1lTVEVNLCAic3lzX3VzZXIiKSwK LQlQTEFURk9STV9IRUFQKCJoaXNpbGljb24sc3lzX2NvbnRpZyIsIDEsCi0JCSAgICAgIElPTl9I RUFQX1RZUEVfU1lTVEVNX0NPTlRJRywgInN5c19jb250aWciKSwKLQlQTEFURk9STV9IRUFQKCJo aXNpbGljb24sY21hIiwgSU9OX0hFQVBfVFlQRV9ETUEsIElPTl9IRUFQX1RZUEVfRE1BLAotCQkg ICAgICAiY21hIiksCi0Je30KLX07Ci0KLXN0YXRpYyBpbnQgaGk2MjIwX2lvbl9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCBoaXNpX2lvbl9kZXYgKmlwZGV2 OwotCWludCBpOwotCi0JaXBkZXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpp cGRldiksIEdGUF9LRVJORUwpOwotCWlmICghaXBkZXYpCi0JCXJldHVybiAtRU5PTUVNOwotCi0J cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaXBkZXYpOwotCi0JaXBkZXYtPmlkZXYgPSBpb25f ZGV2aWNlX2NyZWF0ZShOVUxMKTsKLQlpZiAoSVNfRVJSKGlwZGV2LT5pZGV2KSkKLQkJcmV0dXJu IFBUUl9FUlIoaXBkZXYtPmlkZXYpOwotCi0JaXBkZXYtPmRhdGEgPSBpb25fcGFyc2VfZHQocGRl diwgaGlzaV9oZWFwcyk7Ci0JaWYgKElTX0VSUihpcGRldi0+ZGF0YSkpCi0JCXJldHVybiBQVFJf RVJSKGlwZGV2LT5kYXRhKTsKLQotCWlwZGV2LT5oZWFwcyA9IGRldm1fa3phbGxvYygmcGRldi0+ ZGV2LAotCQkJCXNpemVvZihzdHJ1Y3QgaW9uX2hlYXApICogaXBkZXYtPmRhdGEtPm5yLAotCQkJ CUdGUF9LRVJORUwpOwotCWlmICghaXBkZXYtPmhlYXBzKSB7Ci0JCWlvbl9kZXN0cm95X3BsYXRm b3JtX2RhdGEoaXBkZXYtPmRhdGEpOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQlmb3IgKGkg PSAwOyBpIDwgaXBkZXYtPmRhdGEtPm5yOyBpKyspIHsKLQkJaXBkZXYtPmhlYXBzW2ldID0gaW9u X2hlYXBfY3JlYXRlKCZpcGRldi0+ZGF0YS0+aGVhcHNbaV0pOwotCQlpZiAoIWlwZGV2LT5oZWFw cykgewotCQkJaW9uX2Rlc3Ryb3lfcGxhdGZvcm1fZGF0YShpcGRldi0+ZGF0YSk7Ci0JCQlyZXR1 cm4gLUVOT01FTTsKLQkJfQotCQlpb25fZGV2aWNlX2FkZF9oZWFwKGlwZGV2LT5pZGV2LCBpcGRl di0+aGVhcHNbaV0pOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBoaTYyMjBfaW9u X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0cnVjdCBoaXNpX2lv bl9kZXYgKmlwZGV2OwotCWludCBpOwotCi0JaXBkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsKLQotCWZvciAoaSA9IDA7IGkgPCBpcGRldi0+ZGF0YS0+bnI7IGkrKykKLQkJaW9uX2hl YXBfZGVzdHJveShpcGRldi0+aGVhcHNbaV0pOwotCi0JaW9uX2Rlc3Ryb3lfcGxhdGZvcm1fZGF0 YShpcGRldi0+ZGF0YSk7Ci0JaW9uX2RldmljZV9kZXN0cm95KGlwZGV2LT5pZGV2KTsKLQotCXJl dHVybiAwOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBoaTYyMjBfaW9u X21hdGNoX3RhYmxlW10gPSB7Ci0Jey5jb21wYXRpYmxlID0gImhpc2lsaWNvbixoaTYyMjAtaW9u In0sCi0Je30sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoaTYyMjBfaW9u X2RyaXZlciA9IHsKLQkucHJvYmUgPSBoaTYyMjBfaW9uX3Byb2JlLAotCS5yZW1vdmUgPSBoaTYy MjBfaW9uX3JlbW92ZSwKLQkuZHJpdmVyID0gewotCQkubmFtZSA9ICJpb24taGk2MjIwIiwKLQkJ Lm9mX21hdGNoX3RhYmxlID0gaGk2MjIwX2lvbl9tYXRjaF90YWJsZSwKLQl9LAotfTsKLQotc3Rh dGljIGludCBfX2luaXQgaGk2MjIwX2lvbl9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIHBsYXRmb3Jt X2RyaXZlcl9yZWdpc3RlcigmaGk2MjIwX2lvbl9kcml2ZXIpOwotfQotCi1zdWJzeXNfaW5pdGNh bGwoaGk2MjIwX2lvbl9pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lk L2lvbi9pb25fZHVtbXlfZHJpdmVyLmMgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9u X2R1bW15X2RyaXZlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjVjMDEwLi4w MDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb25fZHVtbXlfZHJpdmVy LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqIGRyaXZlcnMvZ3B1L2lv bi9pb25fZHVtbXlfZHJpdmVyLmMKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJvLCBJ bmMKLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAotICogbWF5IGJlIGNvcGllZCwg ZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KLSAqCi0gKiBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICoKLSAqLwotCi0jaW5jbHVkZSA8bGludXgvZXJyLmg+Ci0jaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9ib290bWVtLmg+Ci0jaW5jbHVk ZSA8bGludXgvbWVtYmxvY2suaD4KLSNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgotI2luY2x1ZGUg PGxpbnV4L2lvLmg+Ci0jaW5jbHVkZSAiaW9uLmgiCi0jaW5jbHVkZSAiaW9uX3ByaXYuaCIKLQot c3RhdGljIHN0cnVjdCBpb25fZGV2aWNlICppZGV2Owotc3RhdGljIHN0cnVjdCBpb25faGVhcCAq KmhlYXBzOwotCi1zdGF0aWMgdm9pZCAqY2FydmVvdXRfcHRyOwotc3RhdGljIHZvaWQgKmNodW5r X3B0cjsKLQotc3RhdGljIHN0cnVjdCBpb25fcGxhdGZvcm1faGVhcCBkdW1teV9oZWFwc1tdID0g ewotCQl7Ci0JCQkuaWQJPSBJT05fSEVBUF9UWVBFX1NZU1RFTSwKLQkJCS50eXBlCT0gSU9OX0hF QVBfVFlQRV9TWVNURU0sCi0JCQkubmFtZQk9ICJzeXN0ZW0iLAotCQl9LAotCQl7Ci0JCQkuaWQJ PSBJT05fSEVBUF9UWVBFX1NZU1RFTV9DT05USUcsCi0JCQkudHlwZQk9IElPTl9IRUFQX1RZUEVf U1lTVEVNX0NPTlRJRywKLQkJCS5uYW1lCT0gInN5c3RlbSBjb250aWciLAotCQl9LAotCQl7Ci0J CQkuaWQJPSBJT05fSEVBUF9UWVBFX0NBUlZFT1VULAotCQkJLnR5cGUJPSBJT05fSEVBUF9UWVBF X0NBUlZFT1VULAotCQkJLm5hbWUJPSAiY2FydmVvdXQiLAotCQkJLnNpemUJPSBTWl80TSwKLQkJ fSwKLQkJewotCQkJLmlkCT0gSU9OX0hFQVBfVFlQRV9DSFVOSywKLQkJCS50eXBlCT0gSU9OX0hF QVBfVFlQRV9DSFVOSywKLQkJCS5uYW1lCT0gImNodW5rIiwKLQkJCS5zaXplCT0gU1pfNE0sCi0J CQkuYWxpZ24JPSBTWl8xNkssCi0JCQkucHJpdgk9ICh2b2lkICopKFNaXzE2SyksCi0JCX0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGlvbl9wbGF0Zm9ybV9kYXRhIGR1bW15X2lvbl9wZGF0 YSA9IHsKLQkubnIgPSBBUlJBWV9TSVpFKGR1bW15X2hlYXBzKSwKLQkuaGVhcHMgPSBkdW1teV9o ZWFwcywKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IGlvbl9kdW1teV9pbml0KHZvaWQpCi17Ci0J aW50IGksIGVycjsKLQotCWlkZXYgPSBpb25fZGV2aWNlX2NyZWF0ZShOVUxMKTsKLQlpZiAoSVNf RVJSKGlkZXYpKQotCQlyZXR1cm4gUFRSX0VSUihpZGV2KTsKLQloZWFwcyA9IGtjYWxsb2MoZHVt bXlfaW9uX3BkYXRhLm5yLCBzaXplb2Yoc3RydWN0IGlvbl9oZWFwICopLAotCQkJR0ZQX0tFUk5F TCk7Ci0JaWYgKCFoZWFwcykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQotCS8qIEFsbG9jYXRlIGEg ZHVtbXkgY2FydmVvdXQgaGVhcCAqLwotCWNhcnZlb3V0X3B0ciA9IGFsbG9jX3BhZ2VzX2V4YWN0 KAotCQkJCWR1bW15X2hlYXBzW0lPTl9IRUFQX1RZUEVfQ0FSVkVPVVRdLnNpemUsCi0JCQkJR0ZQ X0tFUk5FTCk7Ci0JaWYgKGNhcnZlb3V0X3B0cikKLQkJZHVtbXlfaGVhcHNbSU9OX0hFQVBfVFlQ RV9DQVJWRU9VVF0uYmFzZSA9Ci0JCQkJCQl2aXJ0X3RvX3BoeXMoY2FydmVvdXRfcHRyKTsKLQll bHNlCi0JCXByX2VycigiaW9uX2R1bW15OiBDb3VsZCBub3QgYWxsb2NhdGUgY2FydmVvdXRcbiIp OwotCi0JLyogQWxsb2NhdGUgYSBkdW1teSBjaHVuayBoZWFwICovCi0JY2h1bmtfcHRyID0gYWxs b2NfcGFnZXNfZXhhY3QoCi0JCQkJZHVtbXlfaGVhcHNbSU9OX0hFQVBfVFlQRV9DSFVOS10uc2l6 ZSwKLQkJCQlHRlBfS0VSTkVMKTsKLQlpZiAoY2h1bmtfcHRyKQotCQlkdW1teV9oZWFwc1tJT05f SEVBUF9UWVBFX0NIVU5LXS5iYXNlID0gdmlydF90b19waHlzKGNodW5rX3B0cik7Ci0JZWxzZQot CQlwcl9lcnIoImlvbl9kdW1teTogQ291bGQgbm90IGFsbG9jYXRlIGNodW5rXG4iKTsKLQotCWZv ciAoaSA9IDA7IGkgPCBkdW1teV9pb25fcGRhdGEubnI7IGkrKykgewotCQlzdHJ1Y3QgaW9uX3Bs YXRmb3JtX2hlYXAgKmhlYXBfZGF0YSA9ICZkdW1teV9pb25fcGRhdGEuaGVhcHNbaV07Ci0KLQkJ aWYgKGhlYXBfZGF0YS0+dHlwZSA9PSBJT05fSEVBUF9UWVBFX0NBUlZFT1VUICYmCi0JCSAgICAh aGVhcF9kYXRhLT5iYXNlKQotCQkJY29udGludWU7Ci0KLQkJaWYgKGhlYXBfZGF0YS0+dHlwZSA9 PSBJT05fSEVBUF9UWVBFX0NIVU5LICYmICFoZWFwX2RhdGEtPmJhc2UpCi0JCQljb250aW51ZTsK LQotCQloZWFwc1tpXSA9IGlvbl9oZWFwX2NyZWF0ZShoZWFwX2RhdGEpOwotCQlpZiAoSVNfRVJS X09SX05VTEwoaGVhcHNbaV0pKSB7Ci0JCQllcnIgPSBQVFJfRVJSKGhlYXBzW2ldKTsKLQkJCWdv dG8gZXJyOwotCQl9Ci0JCWlvbl9kZXZpY2VfYWRkX2hlYXAoaWRldiwgaGVhcHNbaV0pOwotCX0K LQlyZXR1cm4gMDsKLWVycjoKLQlmb3IgKGkgPSAwOyBpIDwgZHVtbXlfaW9uX3BkYXRhLm5yOyAr K2kpCi0JCWlvbl9oZWFwX2Rlc3Ryb3koaGVhcHNbaV0pOwotCWtmcmVlKGhlYXBzKTsKLQotCWlm IChjYXJ2ZW91dF9wdHIpIHsKLQkJZnJlZV9wYWdlc19leGFjdChjYXJ2ZW91dF9wdHIsCi0JCQkJ IGR1bW15X2hlYXBzW0lPTl9IRUFQX1RZUEVfQ0FSVkVPVVRdLnNpemUpOwotCQljYXJ2ZW91dF9w dHIgPSBOVUxMOwotCX0KLQlpZiAoY2h1bmtfcHRyKSB7Ci0JCWZyZWVfcGFnZXNfZXhhY3QoY2h1 bmtfcHRyLAotCQkJCSBkdW1teV9oZWFwc1tJT05fSEVBUF9UWVBFX0NIVU5LXS5zaXplKTsKLQkJ Y2h1bmtfcHRyID0gTlVMTDsKLQl9Ci0JcmV0dXJuIGVycjsKLX0KLWRldmljZV9pbml0Y2FsbChp b25fZHVtbXlfaW5pdCk7Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBpb25fZHVtbXlfZXhpdCh2b2lk KQotewotCWludCBpOwotCi0JaW9uX2RldmljZV9kZXN0cm95KGlkZXYpOwotCi0JZm9yIChpID0g MDsgaSA8IGR1bW15X2lvbl9wZGF0YS5ucjsgaSsrKQotCQlpb25faGVhcF9kZXN0cm95KGhlYXBz W2ldKTsKLQlrZnJlZShoZWFwcyk7Ci0KLQlpZiAoY2FydmVvdXRfcHRyKSB7Ci0JCWZyZWVfcGFn ZXNfZXhhY3QoY2FydmVvdXRfcHRyLAotCQkJCSBkdW1teV9oZWFwc1tJT05fSEVBUF9UWVBFX0NB UlZFT1VUXS5zaXplKTsKLQkJY2FydmVvdXRfcHRyID0gTlVMTDsKLQl9Ci0JaWYgKGNodW5rX3B0 cikgewotCQlmcmVlX3BhZ2VzX2V4YWN0KGNodW5rX3B0ciwKLQkJCQkgZHVtbXlfaGVhcHNbSU9O X0hFQVBfVFlQRV9DSFVOS10uc2l6ZSk7Ci0JCWNodW5rX3B0ciA9IE5VTEw7Ci0JfQotfQotX19l eGl0Y2FsbChpb25fZHVtbXlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5k cm9pZC9pb24vaW9uX29mLmMgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uX29mLmMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3OTFjNzAuLjAwMDAwMDAKLS0tIGEvZHJp dmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbl9vZi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTg0 ICswLDAgQEAKLS8qCi0gKiBCYXNlZCBvbiB3b3JrIGZyb206Ci0gKiAgIEFuZHJldyBBbmRyaWFu b3YgPGFuZHJld0BuY3JtbnQub3JnPgotICogICBHb29nbGUKLSAqICAgVGhlIExpbnV4IEZvdW5k YXRpb24KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9pbml0 Lmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgv c2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L29mLmg+Ci0jaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZv cm0uaD4KLSNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Ci0jaW5jbHVkZSA8bGludXgvY2xr Lmg+Ci0jaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC9jbWEu aD4KLSNpbmNsdWRlIDxsaW51eC9kbWEtY29udGlndW91cy5oPgotI2luY2x1ZGUgPGxpbnV4L2lv Lmg+Ci0jaW5jbHVkZSA8bGludXgvb2ZfcmVzZXJ2ZWRfbWVtLmg+Ci0jaW5jbHVkZSAiaW9uLmgi Ci0jaW5jbHVkZSAiaW9uX3ByaXYuaCIKLSNpbmNsdWRlICJpb25fb2YuaCIKLQotc3RhdGljIGlu dCBpb25fcGFyc2VfZHRfaGVhcF9jb21tb24oc3RydWN0IGRldmljZV9ub2RlICpoZWFwX25vZGUs Ci0JCQkJICAgIHN0cnVjdCBpb25fcGxhdGZvcm1faGVhcCAqaGVhcCwKLQkJCQkgICAgc3RydWN0 IGlvbl9vZl9oZWFwICpjb21wYXRpYmxlKQotewotCWludCBpOwotCi0JZm9yIChpID0gMDsgY29t cGF0aWJsZVtpXS5uYW1lOyBpKyspIHsKLQkJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGhl YXBfbm9kZSwgY29tcGF0aWJsZVtpXS5jb21wYXQpKQotCQkJYnJlYWs7Ci0JfQotCi0JaWYgKCFj b21wYXRpYmxlW2ldLm5hbWUpCi0JCXJldHVybiAtRU5PREVWOwotCi0JaGVhcC0+aWQgPSBjb21w YXRpYmxlW2ldLmhlYXBfaWQ7Ci0JaGVhcC0+dHlwZSA9IGNvbXBhdGlibGVbaV0udHlwZTsKLQlo ZWFwLT5uYW1lID0gY29tcGF0aWJsZVtpXS5uYW1lOwotCWhlYXAtPmFsaWduID0gY29tcGF0aWJs ZVtpXS5hbGlnbjsKLQotCS8qIFNvbWUga2luZCBvZiBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVy PyAqLwotCi0JcHJfaW5mbygiJXM6IGlkICVkIHR5cGUgJWQgbmFtZSAlcyBhbGlnbiAlbHhcbiIs IF9fZnVuY19fLAotCQloZWFwLT5pZCwgaGVhcC0+dHlwZSwgaGVhcC0+bmFtZSwgaGVhcC0+YWxp Z24pOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGlvbl9zZXR1cF9oZWFwX2NvbW1vbihz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwYXJlbnQsCi0JCQkJIHN0cnVjdCBkZXZpY2Vfbm9kZSAq aGVhcF9ub2RlLAotCQkJCSBzdHJ1Y3QgaW9uX3BsYXRmb3JtX2hlYXAgKmhlYXApCi17Ci0JaW50 IHJldCA9IDA7Ci0KLQlzd2l0Y2ggKGhlYXAtPnR5cGUpIHsKLQljYXNlIElPTl9IRUFQX1RZUEVf Q0FSVkVPVVQ6Ci0JY2FzZSBJT05fSEVBUF9UWVBFX0NIVU5LOgotCQlpZiAoaGVhcC0+YmFzZSAm JiBoZWFwLT5zaXplKQotCQkJcmV0dXJuIDA7Ci0KLQkJcmV0ID0gb2ZfcmVzZXJ2ZWRfbWVtX2Rl dmljZV9pbml0KGhlYXAtPnByaXYpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9 Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdHJ1Y3QgaW9uX3BsYXRmb3JtX2RhdGEgKmlvbl9wYXJz ZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAotCQkJCSAgICAgICBzdHJ1Y3QgaW9u X29mX2hlYXAgKmNvbXBhdGlibGUpCi17Ci0JaW50IG51bV9oZWFwcywgcmV0OwotCWNvbnN0IHN0 cnVjdCBkZXZpY2Vfbm9kZSAqZHRfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwotCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbm9kZTsKLQlzdHJ1Y3QgaW9uX3BsYXRmb3JtX2hlYXAgKmhlYXBzOwotCXN0 cnVjdCBpb25fcGxhdGZvcm1fZGF0YSAqZGF0YTsKLQlpbnQgaSA9IDA7Ci0KLQludW1faGVhcHMg PSBvZl9nZXRfYXZhaWxhYmxlX2NoaWxkX2NvdW50KGR0X25vZGUpOwotCi0JaWYgKCFudW1faGVh cHMpCi0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwotCi0JaGVhcHMgPSBkZXZtX2t6YWxsb2Mo JnBkZXYtPmRldiwKLQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBpb25fcGxhdGZvcm1faGVhcCkgKiBu dW1faGVhcHMsCi0JCQkgICAgIEdGUF9LRVJORUwpOwotCWlmICghaGVhcHMpCi0JCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwotCi0JZGF0YSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXpl b2Yoc3RydWN0IGlvbl9wbGF0Zm9ybV9kYXRhKSwKLQkJCSAgICBHRlBfS0VSTkVMKTsKLQlpZiAo IWRhdGEpCi0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JZm9yX2VhY2hfYXZhaWxhYmxl X2NoaWxkX29mX25vZGUoZHRfbm9kZSwgbm9kZSkgewotCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpoZWFwX3BkZXY7Ci0KLQkJcmV0ID0gaW9uX3BhcnNlX2R0X2hlYXBfY29tbW9uKG5vZGUsICZo ZWFwc1tpXSwgY29tcGF0aWJsZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gRVJSX1BUUihyZXQp OwotCi0JCWhlYXBfcGRldiA9IG9mX3BsYXRmb3JtX2RldmljZV9jcmVhdGUobm9kZSwgaGVhcHNb aV0ubmFtZSwKLQkJCQkJCSAgICAgICZwZGV2LT5kZXYpOwotCQlpZiAoIWhlYXBfcGRldikKLQkJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCQloZWFwX3BkZXYtPmRldi5wbGF0Zm9ybV9kYXRh ID0gJmhlYXBzW2ldOwotCi0JCWhlYXBzW2ldLnByaXYgPSAmaGVhcF9wZGV2LT5kZXY7Ci0KLQkJ cmV0ID0gaW9uX3NldHVwX2hlYXBfY29tbW9uKHBkZXYsIG5vZGUsICZoZWFwc1tpXSk7Ci0JCWlm IChyZXQpCi0JCQlnb3RvIG91dF9lcnI7Ci0JCWkrKzsKLQl9Ci0KLQlkYXRhLT5oZWFwcyA9IGhl YXBzOwotCWRhdGEtPm5yID0gbnVtX2hlYXBzOwotCXJldHVybiBkYXRhOwotCi1vdXRfZXJyOgot CWZvciAoIDsgaSA+PSAwOyBpLS0pCi0JCWlmIChoZWFwc1tpXS5wcml2KQotCQkJb2ZfZGV2aWNl X3VucmVnaXN0ZXIodG9fcGxhdGZvcm1fZGV2aWNlKGhlYXBzW2ldLnByaXYpKTsKLQotCXJldHVy biBFUlJfUFRSKHJldCk7Ci19Ci0KLXZvaWQgaW9uX2Rlc3Ryb3lfcGxhdGZvcm1fZGF0YShzdHJ1 Y3QgaW9uX3BsYXRmb3JtX2RhdGEgKmRhdGEpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBp IDwgZGF0YS0+bnI7IGkrKykKLQkJaWYgKGRhdGEtPmhlYXBzW2ldLnByaXYpCi0JCQlvZl9kZXZp Y2VfdW5yZWdpc3Rlcih0b19wbGF0Zm9ybV9kZXZpY2UoCi0JCQkJZGF0YS0+aGVhcHNbaV0ucHJp dikpOwotfQotCi0jaWZkZWYgQ09ORklHX09GX1JFU0VSVkVEX01FTQotI2luY2x1ZGUgPGxpbnV4 L29mLmg+Ci0jaW5jbHVkZSA8bGludXgvb2ZfZmR0Lmg+Ci0jaW5jbHVkZSA8bGludXgvb2ZfcmVz ZXJ2ZWRfbWVtLmg+Ci0KLXN0YXRpYyBpbnQgcm1lbV9pb25fZGV2aWNlX2luaXQoc3RydWN0IHJl c2VydmVkX21lbSAqcm1lbSwgc3RydWN0IGRldmljZSAqZGV2KQotewotCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKLQlzdHJ1Y3QgaW9uX3Bs YXRmb3JtX2hlYXAgKmhlYXAgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKLQotCWhlYXAtPmJh c2UgPSBybWVtLT5iYXNlOwotCWhlYXAtPmJhc2UgPSBybWVtLT5zaXplOwotCXByX2RlYnVnKCIl czogaGVhcCAlcyBiYXNlICVwYSBzaXplICVwYSBkZXYgJXBcbiIsIF9fZnVuY19fLAotCQkgaGVh cC0+bmFtZSwgJnJtZW0tPmJhc2UsICZybWVtLT5zaXplLCBkZXYpOwotCXJldHVybiAwOwotfQot Ci1zdGF0aWMgdm9pZCBybWVtX2lvbl9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgcmVzZXJ2ZWRfbWVt ICpybWVtLAotCQkJCSAgICBzdHJ1Y3QgZGV2aWNlICpkZXYpCi17Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgcmVzZXJ2ZWRfbWVtX29wcyBybWVtX2RtYV9vcHMgPSB7Ci0JLmRldmljZV9pbml0 CT0gcm1lbV9pb25fZGV2aWNlX2luaXQsCi0JLmRldmljZV9yZWxlYXNlCT0gcm1lbV9pb25fZGV2 aWNlX3JlbGVhc2UsCi19OwotCi1zdGF0aWMgaW50IF9faW5pdCBybWVtX2lvbl9zZXR1cChzdHJ1 Y3QgcmVzZXJ2ZWRfbWVtICpybWVtKQotewotCXBoeXNfYWRkcl90IHNpemUgPSBybWVtLT5zaXpl OwotCi0Jc2l6ZSA9IHNpemUgLyAxMDI0OwotCi0JcHJfaW5mbygiSW9uIG1lbW9yeSBzZXR1cCBh dCAlcGEgc2l6ZSAlcGEgTWlCXG4iLAotCQkmcm1lbS0+YmFzZSwgJnNpemUpOwotCXJtZW0tPm9w cyA9ICZybWVtX2RtYV9vcHM7Ci0JcmV0dXJuIDA7Ci19Ci0KLVJFU0VSVkVETUVNX09GX0RFQ0xB UkUoaW9uLCAiaW9uLXJlZ2lvbiIsIHJtZW1faW9uX3NldHVwKTsKLSNlbmRpZgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbl9vZi5oIGIvZHJpdmVycy9zdGFnaW5n L2FuZHJvaWQvaW9uL2lvbl9vZi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjQx YTE3Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb25fb2YuaAor KysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBCYXNlZCBvbiB3b3JrIGZyb206 Ci0gKiAgIEFuZHJldyBBbmRyaWFub3YgPGFuZHJld0BuY3JtbnQub3JnPgotICogICBHb29nbGUK LSAqICAgVGhlIExpbnV4IEZvdW5kYXRpb24KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIg YXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICovCi0K LSNpZm5kZWYgX0lPTl9PRl9ICi0jZGVmaW5lIF9JT05fT0ZfSAotCi1zdHJ1Y3QgaW9uX29mX2hl YXAgewotCWNvbnN0IGNoYXIgKmNvbXBhdDsKLQlpbnQgaGVhcF9pZDsKLQlpbnQgdHlwZTsKLQlj b25zdCBjaGFyICpuYW1lOwotCWludCBhbGlnbjsKLX07Ci0KLSNkZWZpbmUgUExBVEZPUk1fSEVB UChfY29tcGF0LCBfaWQsIF90eXBlLCBfbmFtZSkgXAoteyBcCi0JLmNvbXBhdCA9IF9jb21wYXQs IFwKLQkuaGVhcF9pZCA9IF9pZCwgXAotCS50eXBlID0gX3R5cGUsIFwKLQkubmFtZSA9IF9uYW1l LCBcCi0JLmFsaWduID0gUEFHRV9TSVpFLCBcCi19Ci0KLXN0cnVjdCBpb25fcGxhdGZvcm1fZGF0 YSAqaW9uX3BhcnNlX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0JCQkJCXN0cnVj dCBpb25fb2ZfaGVhcCAqY29tcGF0aWJsZSk7Ci0KLXZvaWQgaW9uX2Rlc3Ryb3lfcGxhdGZvcm1f ZGF0YShzdHJ1Y3QgaW9uX3BsYXRmb3JtX2RhdGEgKmRhdGEpOwotCi0jZW5kaWYKZGlmZiAtLWdp dCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi90ZWdyYS9NYWtlZmlsZSBiL2RyaXZlcnMv c3RhZ2luZy9hbmRyb2lkL2lvbi90ZWdyYS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggODA4ZjFmNS4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9p b24vdGVncmEvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1vYmotJChDT05G SUdfSU9OX1RFR1JBKSArPSB0ZWdyYV9pb24ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L2FuZHJvaWQvaW9uL3RlZ3JhL3RlZ3JhX2lvbi5jIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQv aW9uL3RlZ3JhL3RlZ3JhX2lvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWU1 NWU1Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi90ZWdyYS90ZWdy YV9pb24uYworKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBkcml2ZXJzL2dw dS90ZWdyYS90ZWdyYV9pb24uYwotICoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIElu Yy4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAotICogbWF5IGJlIGNvcGllZCwg ZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KLSAqCi0gKiBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICoKLSAqLwotCi0jaW5jbHVkZSA8bGludXgvZXJyLmg+Ci0jaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0j aW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgIi4uL2lvbi5oIgotI2luY2x1ZGUgIi4u L2lvbl9wcml2LmgiCi0KLXN0YXRpYyBzdHJ1Y3QgaW9uX2RldmljZSAqaWRldjsKLXN0YXRpYyBp bnQgbnVtX2hlYXBzOwotc3RhdGljIHN0cnVjdCBpb25faGVhcCAqKmhlYXBzOwotCi1zdGF0aWMg aW50IHRlZ3JhX2lvbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0 cnVjdCBpb25fcGxhdGZvcm1fZGF0YSAqcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsK LQlpbnQgZXJyOwotCWludCBpOwotCi0JbnVtX2hlYXBzID0gcGRhdGEtPm5yOwotCi0JaGVhcHMg PSBkZXZtX2tjYWxsb2MoJnBkZXYtPmRldiwgcGRhdGEtPm5yLAotCQkJICAgICBzaXplb2Yoc3Ry dWN0IGlvbl9oZWFwICopLCBHRlBfS0VSTkVMKTsKLQotCWlkZXYgPSBpb25fZGV2aWNlX2NyZWF0 ZShOVUxMKTsKLQlpZiAoSVNfRVJSKGlkZXYpKQotCQlyZXR1cm4gUFRSX0VSUihpZGV2KTsKLQot CS8qIGNyZWF0ZSB0aGUgaGVhcHMgYXMgc3BlY2lmaWVkIGluIHRoZSBib2FyZCBmaWxlICovCi0J Zm9yIChpID0gMDsgaSA8IG51bV9oZWFwczsgaSsrKSB7Ci0JCXN0cnVjdCBpb25fcGxhdGZvcm1f aGVhcCAqaGVhcF9kYXRhID0gJnBkYXRhLT5oZWFwc1tpXTsKLQotCQloZWFwc1tpXSA9IGlvbl9o ZWFwX2NyZWF0ZShoZWFwX2RhdGEpOwotCQlpZiAoSVNfRVJSX09SX05VTEwoaGVhcHNbaV0pKSB7 Ci0JCQllcnIgPSBQVFJfRVJSKGhlYXBzW2ldKTsKLQkJCWdvdG8gZXJyOwotCQl9Ci0JCWlvbl9k ZXZpY2VfYWRkX2hlYXAoaWRldiwgaGVhcHNbaV0pOwotCX0KLQlwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCBpZGV2KTsKLQlyZXR1cm4gMDsKLWVycjoKLQlmb3IgKGkgPSAwOyBpIDwgbnVtX2hl YXBzOyArK2kpCi0JCWlvbl9oZWFwX2Rlc3Ryb3koaGVhcHNbaV0pOwotCXJldHVybiBlcnI7Ci19 Ci0KLXN0YXRpYyBpbnQgdGVncmFfaW9uX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQotewotCXN0cnVjdCBpb25fZGV2aWNlICppZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7Ci0JaW50IGk7Ci0KLQlpb25fZGV2aWNlX2Rlc3Ryb3koaWRldik7Ci0JZm9yIChpID0g MDsgaSA8IG51bV9oZWFwczsgaSsrKQotCQlpb25faGVhcF9kZXN0cm95KGhlYXBzW2ldKTsKLQly ZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW9uX2RyaXZlciA9 IHsKLQkucHJvYmUgPSB0ZWdyYV9pb25fcHJvYmUsCi0JLnJlbW92ZSA9IHRlZ3JhX2lvbl9yZW1v dmUsCi0JLmRyaXZlciA9IHsgLm5hbWUgPSAiaW9uLXRlZ3JhIiB9Ci19OwotCi1tb2R1bGVfcGxh dGZvcm1fZHJpdmVyKGlvbl9kcml2ZXIpOwotCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==