From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH v2] drm/panfrost: Implement per FD address spaces Date: Tue, 13 Aug 2019 09:01:15 -0600 Message-ID: <20190813150115.30338-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-f68.google.com (mail-ot1-f68.google.com [209.85.210.68]) by gabe.freedesktop.org (Postfix) with ESMTPS id B2B686E0EE for ; Tue, 13 Aug 2019 15:01:18 +0000 (UTC) Received: by mail-ot1-f68.google.com with SMTP id o101so20693831ota.8 for ; Tue, 13 Aug 2019 08:01:18 -0700 (PDT) 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 , David Airlie , Matthew Auld , Steven Price , Alyssa Rosenzweig , Robin Murphy List-Id: dri-devel@lists.freedesktop.org VXAgdW50aWwgbm93LCBhIHNpbmdsZSBzaGFyZWQgR1BVIGFkZHJlc3Mgc3BhY2Ugd2FzIHVzZWQu IFRoaXMgaXMgbm90CmlkZWFsIGFzIHRoZXJlJ3Mgbm8gcHJvdGVjdGlvbiBiZXR3ZWVuIHByb2Nl c3NlcyBhbmQgZG9lc24ndCB3b3JrIGZvcgpzdXBwb3J0aW5nIHRoZSBzYW1lIEdQVS9DUFUgVkEg ZmVhdHVyZS4gTW9zdCBpbXBvcnRhbnRseSwgdGhpcyB3aWxsCmhvcGVmdWxseSBtaXRpZ2F0ZSBB bHlzc2EncyBmZWFyIG9mIFdlYkdMLCB3aGF0ZXZlciB0aGF0IGlzLgoKTW9zdCBvZiB0aGUgY2hh bmdlcyBoZXJlIGFyZSBtb3Zpbmcgc3RydWN0IGRybV9tbSBhbmQgc3RydWN0CnBhbmZyb3N0X21t dSBvYmplY3RzIGZyb20gdGhlIHBlciBkZXZpY2Ugc3RydWN0IHRvIHRoZSBwZXIgRkQgc3RydWN0 LgpUaGUgY3JpdGljYWwgZnVuY3Rpb24gaXMgcGFuZnJvc3RfbW11X2FzX2dldCgpIHdoaWNoIGhh bmRsZXMgYWxsb2NhdGluZwphbmQgc3dpdGNoaW5nIHRoZSBoL3cgYWRkcmVzcyBzcGFjZXMuCgpU aGVyZSdzIDMgc3RhdGVzIGFuIEFTIGNhbiBiZSBpbjogZnJlZSwgYWxsb2NhdGVkLCBhbmQgaW4g dXNlLiBXaGVuIGEKam9iIHJ1bnMsIGl0IHJlcXVlc3RzIGFuIGFkZHJlc3Mgc3BhY2UgYW5kIHRo ZW4gbWFya3MgaXQgbm90IGluIHVzZSB3aGVuCmpvYiBpcyBjb21wbGV0ZShidXQgc3RheXMgYXNz aWduZWQpLiBUaGUgZmlyc3QgdGltZSB0aHJ1LCB3ZSBmaW5kIGEgZnJlZQpBUyBpbiB0aGUgYWxs b2NfbWFzayBhbmQgYXNzaWduIHRoZSBBUyB0byB0aGUgRkQuIFRoZW4gdGhlIG5leHQgdGltZQp0 aHJ1LCB3ZSBtb3N0IGxpa2VseSBhbHJlYWR5IGhhdmUgb3VyIEFTIGFuZCB3ZSBqdXN0IG1hcmsg aXQgaW4gdXNlIHdpdGgKYSByZWYgY291bnQuIFdlIG5lZWQgYSByZWYgY291bnQgYmVjYXVzZSB3 ZSBoYXZlIG11bHRpcGxlIGpvYiBzbG90cy4gSWYKdGhlIGpvYi9GRCBkb2Vzbid0IGhhdmUgYW4g QVMgYXNzaWduZWQgYW5kIHRoZXJlIGFyZSBubyBmcmVlIG9uZXMsIHRoZW4Kd2UgcGljayBhbiBh bGxvY2F0ZWQgb25lIG5vdCBpbiB1c2UgZnJvbSBvdXIgTFJVIGxpc3QgYW5kIHN3aXRjaCB0aGUg QVMKZnJvbSB0aGUgb2xkIEZEIHRvIHRoZSBuZXcgb25lLgoKQ2M6IFRvbWV1IFZpem9zbyA8dG9t ZXUudml6b3NvQGNvbGxhYm9yYS5jb20+CkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXgu aWU+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+CkNjOiBSb2JpbiBNdXJwaHkg PHJvYmluLm11cnBoeUBhcm0uY29tPgpDYzogU3RldmVuIFByaWNlIDxzdGV2ZW4ucHJpY2VAYXJt LmNvbT4KQ2M6IEFseXNzYSBSb3Nlbnp3ZWlnIDxhbHlzc2Eucm9zZW56d2VpZ0Bjb2xsYWJvcmEu Y29tPgpTaWduZWQtb2ZmLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgotLS0KdjI6 Ci0gRml4IGFzc2lnbm1lbnQgb2YgY29sb3JfYWRqdXN0IHB0cgotIE1vdmUgY2xlYXJpbmcgb2Yg am9iIGFycmF5IHB0cnMgdG8gSVNSCi0gQWRkIGxvY2tpbmcgYmV0d2VlbiBtbXVfaHdfZG9fb3Bl cmF0aW9uKCkgYW5kIHBhbmZyb3N0X21tdV9hc19nZXQoKQotIERyb3AgdW5uZWNlc3NhcnkgcGFu ZnJvc3RfbW11X2VuYWJsZSgpIHdoZW4gd2UgYWxyZWFkeSBhc3NpZ25lZCBhbiBBUwotIFVzZSBh c19scnVfbGlzdCBpbnN0ZWFkIG9mIGZpbGUgbGlzdCB0byBpdGVyYXRlIHRocnUgYWxsIGFjdGl2 ZSBBU3MKLSBSZXdvcmsgdGhlIEFTIHJlc2V0IGhhbmRsaW5nCgogZHJpdmVycy9ncHUvZHJtL3Bh bmZyb3N0L1RPRE8gICAgICAgICAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9z dC9wYW5mcm9zdF9kZXZpY2UuYyB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfZGV2aWNlLmggfCAgMjQgKystCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJv c3RfZHJ2LmMgICAgfCAgMzEgKystCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rf Z2VtLmMgICAgfCAgMTUgKy0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0u aCAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMgICAg fCAgMTQgKy0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYyAgICB8IDIy MiArKysrKysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9tbXUuaCAgICB8ICAgOCArCiA5IGZpbGVzIGNoYW5nZWQsIDIzNiBpbnNlcnRpb25zKCspLCA4 NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvVE9E TyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9UT0RPCmluZGV4IGU3NzI3YjI5MjM1NS4uNTM2 YTBkNGY4ZDI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvVE9ETworKysg Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvVE9ETwpAQCAtNiwxMCArNiw2IEBACiAgIC0gQmlm cm9zdCBzcGVjaWZpYyBmZWF0dXJlIGFuZCBpc3N1ZSBoYW5kbGluZwogICAtIENvaGVyZW50IERN QSBzdXBwb3J0CiAKLS0gUGVyIEZEIGFkZHJlc3Mgc3BhY2Ugc3VwcG9ydC4gVGhlIGgvdyBzdXBw b3J0cyBtdWx0aXBsZSBhZGRyZXNzZXMgc3BhY2VzLgotICBUaGUgaGFyZCBwYXJ0IGlzIGhhbmRs aW5nIHdoZW4gbW9yZSBhZGRyZXNzIHNwYWNlcyBhcmUgbmVlZGVkIHRoYW4gd2hhdAotICB0aGUg aC93IHByb3ZpZGVzLgotCiAtIFN1cHBvcnQgdXNlcnNwYWNlIGNvbnRyb2xsZWQgR1BVIHZpcnR1 YWwgYWRkcmVzc2VzLiBOZWVkZWQgZm9yIFZ1bGthbi4gKFRvbWV1KQogCiAtIENvbXB1dGUgam9i IHN1cHBvcnQuIFNvIGNhbGxlZCAnY29tcHV0ZSBvbmx5JyBqb2JzIG5lZWQgdG8gYmUgcGx1bWJl ZCB1cCB0bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rl dmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2RldmljZS5jCmluZGV4 IDk4MTRmNGNjYmQyNi4uNGRhNzFiYjU2YzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZnJvc3QvcGFuZnJvc3RfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X2RldmljZS5jCkBAIC0xMjMsOCArMTIzLDEwIEBAIGludCBwYW5mcm9zdF9kZXZp Y2VfaW5pdChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldikKIAltdXRleF9pbml0KCZwZmRl di0+c2NoZWRfbG9jayk7CiAJbXV0ZXhfaW5pdCgmcGZkZXYtPnJlc2V0X2xvY2spOwogCUlOSVRf TElTVF9IRUFEKCZwZmRldi0+c2NoZWR1bGVkX2pvYnMpOworCUlOSVRfTElTVF9IRUFEKCZwZmRl di0+YXNfbHJ1X2xpc3QpOwogCiAJc3Bpbl9sb2NrX2luaXQoJnBmZGV2LT5od2FjY2Vzc19sb2Nr KTsKKwlzcGluX2xvY2tfaW5pdCgmcGZkZXYtPmFzX2xvY2spOwogCiAJZXJyID0gcGFuZnJvc3Rf Y2xrX2luaXQocGZkZXYpOwogCWlmIChlcnIpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9wYW5mcm9zdF9kZXZpY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9w YW5mcm9zdF9kZXZpY2UuaAppbmRleCA0ZTU2NDFkYjljN2UuLmY1MDNjNTY2ZTk5ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2RldmljZS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kZXZpY2UuaApAQCAtNSw2ICs1LDggQEAK ICNpZm5kZWYgX19QQU5GUk9TVF9ERVZJQ0VfSF9fCiAjZGVmaW5lIF9fUEFORlJPU1RfREVWSUNF X0hfXwogCisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CisjaW5jbHVkZSA8bGludXgvaW8tcGd0 YWJsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9k ZXZpY2UuaD4KICNpbmNsdWRlIDxkcm0vZHJtX21tLmg+CkBAIC02Myw5ICs2NSw2IEBAIHN0cnVj dCBwYW5mcm9zdF9kZXZpY2UgewogCiAJc3BpbmxvY2tfdCBod2FjY2Vzc19sb2NrOwogCi0Jc3Ry dWN0IGRybV9tbSBtbTsKLQlzcGlubG9ja190IG1tX2xvY2s7Ci0KIAl2b2lkIF9faW9tZW0gKmlv bWVtOwogCXN0cnVjdCBjbGsgKmNsb2NrOwogCXN0cnVjdCBjbGsgKmJ1c19jbG9jazsKQEAgLTc0 LDcgKzczLDExIEBAIHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgewogCiAJc3RydWN0IHBhbmZyb3N0 X2ZlYXR1cmVzIGZlYXR1cmVzOwogCi0Jc3RydWN0IHBhbmZyb3N0X21tdSAqbW11OworCXNwaW5s b2NrX3QgYXNfbG9jazsKKwl1bnNpZ25lZCBsb25nIGFzX2luX3VzZV9tYXNrOworCXVuc2lnbmVk IGxvbmcgYXNfYWxsb2NfbWFzazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGFzX2xydV9saXN0OworCiAJ c3RydWN0IHBhbmZyb3N0X2pvYl9zbG90ICpqczsKIAogCXN0cnVjdCBwYW5mcm9zdF9qb2IgKmpv YnNbTlVNX0pPQl9TTE9UU107CkBAIC05OCwxMCArMTAxLDIzIEBAIHN0cnVjdCBwYW5mcm9zdF9k ZXZpY2UgewogCX0gZGV2ZnJlcTsKIH07CiAKK3N0cnVjdCBwYW5mcm9zdF9tbXUgeworCXN0cnVj dCBpb19wZ3RhYmxlX2NmZyBwZ3RibF9jZmc7CisJc3RydWN0IGlvX3BndGFibGVfb3BzICpwZ3Ri bF9vcHM7CisJc3RydWN0IG11dGV4IGxvY2s7CisJaW50IGFzOworCWF0b21pY190IGFzX2NvdW50 OworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307CisKIHN0cnVjdCBwYW5mcm9zdF9maWxlX3By aXYgewogCXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2OwogCiAJc3RydWN0IGRybV9zY2hl ZF9lbnRpdHkgc2NoZWRfZW50aXR5W05VTV9KT0JfU0xPVFNdOworCisJc3RydWN0IHBhbmZyb3N0 X21tdSBtbXU7CisJc3RydWN0IGRybV9tbSBtbTsKKwlzcGlubG9ja190IG1tX2xvY2s7CiB9Owog CiBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnRvX3BhbmZyb3N0X2Rldmlj ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9w YW5mcm9zdC9wYW5mcm9zdF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9kcnYuYwppbmRleCBhMTM1Mjc1MDk4NGMuLmZjMjJmN2NhMTEwNyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYwpAQCAtNDAzLDYgKzQwMyw3IEBAIHN0YXRpYyB2b2lk IHBhbmZyb3N0X2RybV9tbV9jb2xvcl9hZGp1c3QoY29uc3Qgc3RydWN0IGRybV9tbV9ub2RlICpu b2RlLAogc3RhdGljIGludAogcGFuZnJvc3Rfb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CisJaW50IHJldDsKIAlzdHJ1Y3QgcGFuZnJvc3RfZGV2 aWNlICpwZmRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJp diAqcGFuZnJvc3RfcHJpdjsKIApAQCAtNDEzLDcgKzQxNCwyOCBAQCBwYW5mcm9zdF9vcGVuKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlwYW5mcm9zdF9w cml2LT5wZmRldiA9IHBmZGV2OwogCWZpbGUtPmRyaXZlcl9wcml2ID0gcGFuZnJvc3RfcHJpdjsK IAotCXJldHVybiBwYW5mcm9zdF9qb2Jfb3BlbihwYW5mcm9zdF9wcml2KTsKKwlzcGluX2xvY2tf aW5pdCgmcGFuZnJvc3RfcHJpdi0+bW1fbG9jayk7CisKKwkvKiA0RyBlbm91Z2ggZm9yIG5vdy4g Y2FuIGJlIDQ4LWJpdCAqLworCWRybV9tbV9pbml0KCZwYW5mcm9zdF9wcml2LT5tbSwgU1pfMzJN ID4+IFBBR0VfU0hJRlQsIChTWl80RyAtIFNaXzMyTSkgPj4gUEFHRV9TSElGVCk7CisJcGFuZnJv c3RfcHJpdi0+bW0uY29sb3JfYWRqdXN0ID0gcGFuZnJvc3RfZHJtX21tX2NvbG9yX2FkanVzdDsK KworCXJldCA9IHBhbmZyb3N0X21tdV9wZ3RhYmxlX2FsbG9jKHBhbmZyb3N0X3ByaXYpOworCWlm IChyZXQpCisJCWdvdG8gZXJyX3BndGFibGU7CisKKwlyZXQgPSBwYW5mcm9zdF9qb2Jfb3Blbihw YW5mcm9zdF9wcml2KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9qb2I7CisKKwlyZXR1cm4gMDsK KworZXJyX2pvYjoKKwlwYW5mcm9zdF9tbXVfcGd0YWJsZV9mcmVlKHBhbmZyb3N0X3ByaXYpOwor ZXJyX3BndGFibGU6CisJZHJtX21tX3Rha2Vkb3duKCZwYW5mcm9zdF9wcml2LT5tbSk7CisJa2Zy ZWUocGFuZnJvc3RfcHJpdik7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQy NCw2ICs0NDYsOCBAQCBwYW5mcm9zdF9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGRybV9maWxlICpmaWxlKQogCXBhbmZyb3N0X3BlcmZjbnRfY2xvc2UocGFuZnJvc3Rf cHJpdik7CiAJcGFuZnJvc3Rfam9iX2Nsb3NlKHBhbmZyb3N0X3ByaXYpOwogCisJcGFuZnJvc3Rf bW11X3BndGFibGVfZnJlZShwYW5mcm9zdF9wcml2KTsKKwlkcm1fbW1fdGFrZWRvd24oJnBhbmZy b3N0X3ByaXYtPm1tKTsKIAlrZnJlZShwYW5mcm9zdF9wcml2KTsKIH0KIApAQCAtNDk2LDE0ICs1 MjAsOSBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJZGRldi0+ZGV2X3ByaXZhdGUgPSBwZmRldjsKIAlwZmRldi0+ZGRldiA9IGRkZXY7 CiAKLQlzcGluX2xvY2tfaW5pdCgmcGZkZXYtPm1tX2xvY2spOwogCW11dGV4X2luaXQoJnBmZGV2 LT5zaHJpbmtlcl9sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmcGZkZXYtPnNocmlua2VyX2xpc3Qp OwogCi0JLyogNEcgZW5vdWdoIGZvciBub3cuIGNhbiBiZSA0OC1iaXQgKi8KLQlkcm1fbW1faW5p dCgmcGZkZXYtPm1tLCBTWl8zMk0gPj4gUEFHRV9TSElGVCwgKFNaXzRHIC0gU1pfMzJNKSA+PiBQ QUdFX1NISUZUKTsKLQlwZmRldi0+bW0uY29sb3JfYWRqdXN0ID0gcGFuZnJvc3RfZHJtX21tX2Nv bG9yX2FkanVzdDsKLQogCXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKHBmZGV2LT5kZXYpOwog CXBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KHBmZGV2LT5kZXYsIDUwKTsgLyogfjMg ZnJhbWVzICovCiAJcG1fcnVudGltZV9lbmFibGUocGZkZXYtPmRldik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKaW5kZXggZTcxZjI3YzQwNDFlLi5lMDg0YmM0ZTkwODMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKQEAgLTQ3LDggKzQ3LDgg QEAgc3RhdGljIGludCBwYW5mcm9zdF9nZW1fb3BlbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwgc3RydWN0IGRybV9maWxlICpmaWxlX3AKIAlzaXplX3Qgc2l6ZSA9IG9iai0+c2l6ZTsKIAl1 NjQgYWxpZ247CiAJc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJvID0gdG9fcGFuZnJvc3Rf Ym8ob2JqKTsKLQlzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiA9IG9iai0+ZGV2LT5kZXZf cHJpdmF0ZTsKIAl1bnNpZ25lZCBsb25nIGNvbG9yID0gYm8tPm5vZXhlYyA/IFBBTkZST1NUX0JP X05PRVhFQyA6IDA7CisJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqcHJpdiA9IGZpbGVfcHJp di0+ZHJpdmVyX3ByaXY7CiAKIAkvKgogCSAqIEV4ZWN1dGFibGUgYnVmZmVycyBjYW5ub3QgY3Jv c3MgYSAxNk1CIGJvdW5kYXJ5IGFzIHRoZSBwcm9ncmFtCkBAIC02MSw4ICs2MSw5IEBAIHN0YXRp YyBpbnQgcGFuZnJvc3RfZ2VtX29wZW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wCiAJZWxzZQogCQlhbGlnbiA9IHNpemUgPj0gU1pfMk0gPyBTWl8y TSA+PiBQQUdFX1NISUZUIDogMDsKIAotCXNwaW5fbG9jaygmcGZkZXYtPm1tX2xvY2spOwotCXJl dCA9IGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKCZwZmRldi0+bW0sICZiby0+bm9kZSwKKwli by0+bW11ID0gJnByaXYtPm1tdTsKKwlzcGluX2xvY2soJnByaXYtPm1tX2xvY2spOworCXJldCA9 IGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKCZwcml2LT5tbSwgJmJvLT5ub2RlLAogCQkJCQkg c2l6ZSA+PiBQQUdFX1NISUZULCBhbGlnbiwgY29sb3IsIDApOwogCWlmIChyZXQpCiAJCWdvdG8g b3V0OwpAQCAtNzMsMjIgKzc0LDIyIEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfZ2VtX29wZW4oc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wCiAJCQlkcm1f bW1fcmVtb3ZlX25vZGUoJmJvLT5ub2RlKTsKIAl9CiBvdXQ6Ci0Jc3Bpbl91bmxvY2soJnBmZGV2 LT5tbV9sb2NrKTsKKwlzcGluX3VubG9jaygmcHJpdi0+bW1fbG9jayk7CiAJcmV0dXJuIHJldDsK IH0KIAogc3RhdGljIHZvaWQgcGFuZnJvc3RfZ2VtX2Nsb3NlKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKIHsKIAlzdHJ1Y3QgcGFuZnJvc3Rf Z2VtX29iamVjdCAqYm8gPSB0b19wYW5mcm9zdF9ibyhvYmopOwotCXN0cnVjdCBwYW5mcm9zdF9k ZXZpY2UgKnBmZGV2ID0gb2JqLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBwYW5mcm9zdF9m aWxlX3ByaXYgKnByaXYgPSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OwogCiAJaWYgKGJvLT5pc19t YXBwZWQpCiAJCXBhbmZyb3N0X21tdV91bm1hcChibyk7CiAKLQlzcGluX2xvY2soJnBmZGV2LT5t bV9sb2NrKTsKKwlzcGluX2xvY2soJnByaXYtPm1tX2xvY2spOwogCWlmIChkcm1fbW1fbm9kZV9h bGxvY2F0ZWQoJmJvLT5ub2RlKSkKIAkJZHJtX21tX3JlbW92ZV9ub2RlKCZiby0+bm9kZSk7Ci0J c3Bpbl91bmxvY2soJnBmZGV2LT5tbV9sb2NrKTsKKwlzcGluX3VubG9jaygmcHJpdi0+bW1fbG9j ayk7CiB9CiAKIHN0YXRpYyBpbnQgcGFuZnJvc3RfZ2VtX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9n ZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uaAppbmRleCBlMTBm NTgzMTY5MTUuLjUwOTIwODE5Y2MxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZy b3N0L3BhbmZyb3N0X2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9nZW0uaApAQCAtNywxMCArNywxMyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3NobWVtX2hl bHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fbW0uaD4KIAorc3RydWN0IHBhbmZyb3N0X21tdTsK Kwogc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgewogCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29i amVjdCBiYXNlOwogCXN0cnVjdCBzZ190YWJsZSAqc2d0czsKIAorCXN0cnVjdCBwYW5mcm9zdF9t bXUgKm1tdTsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKIAlib29sIGlzX21hcHBlZAkJOjE7 CiAJYm9vbCBub2V4ZWMJCToxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X2pvYi5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2pvYi5j CmluZGV4IGQ1NjdjZTk4NDk0Yy4uY2NmYWMwZTViZGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZy b3N0L3BhbmZyb3N0X2pvYi5jCkBAIC0xNTMsNiArMTUzLDggQEAgc3RhdGljIHZvaWQgcGFuZnJv c3Rfam9iX2h3X3N1Ym1pdChzdHJ1Y3QgcGFuZnJvc3Rfam9iICpqb2IsIGludCBqcykKIAlpZiAo V0FSTl9PTihqb2JfcmVhZChwZmRldiwgSlNfQ09NTUFORF9ORVhUKGpzKSkpKQogCQlnb3RvIGVu ZDsKIAorCWNmZyA9IHBhbmZyb3N0X21tdV9hc19nZXQocGZkZXYsICZqb2ItPmZpbGVfcHJpdi0+ bW11KTsKKwogCXBhbmZyb3N0X2RldmZyZXFfcmVjb3JkX3RyYW5zaXRpb24ocGZkZXYsIGpzKTsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmcGZkZXYtPmh3YWNjZXNzX2xvY2ssIGZsYWdzKTsKIApAQCAt MTYzLDggKzE2NSw3IEBAIHN0YXRpYyB2b2lkIHBhbmZyb3N0X2pvYl9od19zdWJtaXQoc3RydWN0 IHBhbmZyb3N0X2pvYiAqam9iLCBpbnQganMpCiAKIAkvKiBzdGFydCBNTVUsIG1lZGl1bSBwcmlv cml0eSwgY2FjaGUgY2xlYW4vZmx1c2ggb24gZW5kLCBjbGVhbi9mbHVzaCBvbgogCSAqIHN0YXJ0 ICovCi0JLyogVE9ETzogZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzICovCi0JY2ZnID0gSlNfQ09O RklHX1RIUkVBRF9QUkkoOCkgfAorCWNmZyB8PSBKU19DT05GSUdfVEhSRUFEX1BSSSg4KSB8CiAJ CUpTX0NPTkZJR19TVEFSVF9GTFVTSF9DTEVBTl9JTlZBTElEQVRFIHwKIAkJSlNfQ09ORklHX0VO RF9GTFVTSF9DTEVBTl9JTlZBTElEQVRFOwogCkBAIC0zNzcsOCArMzc4LDkgQEAgc3RhdGljIHZv aWQgcGFuZnJvc3Rfam9iX3RpbWVkb3V0KHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2Ip CiAJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZChqb2ItPmRvbmVfZmVuY2UpKQogCQlyZXR1cm47 CiAKLQlkZXZfZXJyKHBmZGV2LT5kZXYsICJncHUgc2NoZWQgdGltZW91dCwganM9JWQsIHN0YXR1 cz0weCV4LCBoZWFkPTB4JXgsIHRhaWw9MHgleCwgc2NoZWRfam9iPSVwIiwKKwlkZXZfZXJyKHBm ZGV2LT5kZXYsICJncHUgc2NoZWQgdGltZW91dCwganM9JWQsIGNvbmZpZz0weCV4LCBzdGF0dXM9 MHgleCwgaGVhZD0weCV4LCB0YWlsPTB4JXgsIHNjaGVkX2pvYj0lcCIsCiAJCWpzLAorCQlqb2Jf cmVhZChwZmRldiwgSlNfQ09ORklHKGpzKSksCiAJCWpvYl9yZWFkKHBmZGV2LCBKU19TVEFUVVMo anMpKSwKIAkJam9iX3JlYWQocGZkZXYsIEpTX0hFQURfTE8oanMpKSwKIAkJam9iX3JlYWQocGZk ZXYsIEpTX1RBSUxfTE8oanMpKSwKQEAgLTQ0OCw4ICs0NTAsMTIgQEAgc3RhdGljIGlycXJldHVy bl90IHBhbmZyb3N0X2pvYl9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQogCQl9CiAK IAkJaWYgKHN0YXR1cyAmIEpPQl9JTlRfTUFTS19ET05FKGopKSB7CisJCQlzdHJ1Y3QgcGFuZnJv c3Rfam9iICpqb2IgPSBwZmRldi0+am9ic1tqXTsKKworCQkJcGZkZXYtPmpvYnNbal0gPSBOVUxM OworCQkJcGFuZnJvc3RfbW11X2FzX3B1dChwZmRldiwgJmpvYi0+ZmlsZV9wcml2LT5tbXUpOwog CQkJcGFuZnJvc3RfZGV2ZnJlcV9yZWNvcmRfdHJhbnNpdGlvbihwZmRldiwgaik7Ci0JCQlkbWFf ZmVuY2Vfc2lnbmFsKHBmZGV2LT5qb2JzW2pdLT5kb25lX2ZlbmNlKTsKKwkJCWRtYV9mZW5jZV9z aWduYWwoam9iLT5kb25lX2ZlbmNlKTsKIAkJfQogCiAJCXN0YXR1cyAmPSB+bWFzazsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYwppbmRleCAyZWQ0MTFmMDlkODAuLmYyMmQ4 ZjAyNTY4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21t dS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYwpAQCAtMSw1 ICsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOglHUEwtMi4wCiAvKiBDb3B5cmln aHQgMjAxOSBMaW5hcm8sIEx0ZCwgUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4gKi8KKyNp bmNsdWRlIDxsaW51eC9hdG9taWMuaD4KICNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgogI2lu Y2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KQEAg LTIyLDEyICsyMyw2IEBACiAjZGVmaW5lIG1tdV93cml0ZShkZXYsIHJlZywgZGF0YSkgd3JpdGVs KGRhdGEsIGRldi0+aW9tZW0gKyByZWcpCiAjZGVmaW5lIG1tdV9yZWFkKGRldiwgcmVnKSByZWFk bChkZXYtPmlvbWVtICsgcmVnKQogCi1zdHJ1Y3QgcGFuZnJvc3RfbW11IHsKLQlzdHJ1Y3QgaW9f cGd0YWJsZV9jZmcgcGd0YmxfY2ZnOwotCXN0cnVjdCBpb19wZ3RhYmxlX29wcyAqcGd0Ymxfb3Bz OwotCXN0cnVjdCBtdXRleCBsb2NrOwotfTsKLQogc3RhdGljIGludCB3YWl0X3JlYWR5KHN0cnVj dCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCB1MzIgYXNfbnIpCiB7CiAJaW50IHJldDsKQEAgLTg1 LDEzICs4MCwxOSBAQCBzdGF0aWMgdm9pZCBsb2NrX3JlZ2lvbihzdHJ1Y3QgcGFuZnJvc3RfZGV2 aWNlICpwZmRldiwgdTMyIGFzX25yLAogfQogCiAKLXN0YXRpYyBpbnQgbW11X2h3X2RvX29wZXJh dGlvbihzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgdTMyIGFzX25yLAotCQl1NjQgaW92 YSwgc2l6ZV90IHNpemUsIHUzMiBvcCkKK3N0YXRpYyBpbnQgbW11X2h3X2RvX29wZXJhdGlvbihz dHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwKKwkJCSAgICAgICBzdHJ1Y3QgcGFuZnJvc3Rf bW11ICptbXUsCisJCQkgICAgICAgdTY0IGlvdmEsIHNpemVfdCBzaXplLCB1MzIgb3ApCiB7Ci0J dW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgcmV0OworCWludCByZXQsIGFzX25yOwogCi0Jc3Bp bl9sb2NrX2lycXNhdmUoJnBmZGV2LT5od2FjY2Vzc19sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2Nr KCZwZmRldi0+YXNfbG9jayk7CisJYXNfbnIgPSBtbXUtPmFzOworCisJaWYgKGFzX25yIDwgMCkg eworCQlzcGluX3VubG9jaygmcGZkZXYtPmFzX2xvY2spOworCQlyZXR1cm4gMDsKKwl9CiAKIAlp ZiAob3AgIT0gQVNfQ09NTUFORF9VTkxPQ0spCiAJCWxvY2tfcmVnaW9uKHBmZGV2LCBhc19uciwg aW92YSwgc2l6ZSk7CkBAIC0xMDIsMTQgKzEwMywxNSBAQCBzdGF0aWMgaW50IG1tdV9od19kb19v cGVyYXRpb24oc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIHUzMiBhc19uciwKIAkvKiBX YWl0IGZvciB0aGUgZmx1c2ggdG8gY29tcGxldGUgKi8KIAlyZXQgPSB3YWl0X3JlYWR5KHBmZGV2 LCBhc19ucik7CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZmRldi0+aHdhY2Nlc3NfbG9j aywgZmxhZ3MpOworCXNwaW5fdW5sb2NrKCZwZmRldi0+YXNfbG9jayk7CiAKIAlyZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgdm9pZCBwYW5mcm9zdF9tbXVfZW5hYmxlKHN0cnVjdCBwYW5mcm9zdF9k ZXZpY2UgKnBmZGV2LCB1MzIgYXNfbnIpCitzdGF0aWMgdm9pZCBwYW5mcm9zdF9tbXVfZW5hYmxl KHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBzdHJ1Y3QgcGFuZnJvc3RfbW11ICptbXUp CiB7Ci0Jc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcgPSAmcGZkZXYtPm1tdS0+cGd0YmxfY2Zn OworCWludCBhc19uciA9IG1tdS0+YXM7CisJc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcgPSAm bW11LT5wZ3RibF9jZmc7CiAJdTY0IHRyYW5zdGFiID0gY2ZnLT5hcm1fbWFsaV9scGFlX2NmZy50 cmFuc3RhYjsKIAl1NjQgbWVtYXR0ciA9IGNmZy0+YXJtX21hbGlfbHBhZV9jZmcubWVtYXR0cjsK IApAQCAtMTM2LDkgKzEzOCw3NSBAQCBzdGF0aWMgdm9pZCBtbXVfZGlzYWJsZShzdHJ1Y3QgcGFu ZnJvc3RfZGV2aWNlICpwZmRldiwgdTMyIGFzX25yKQogCXdyaXRlX2NtZChwZmRldiwgYXNfbnIs IEFTX0NPTU1BTkRfVVBEQVRFKTsKIH0KIAordTMyIHBhbmZyb3N0X21tdV9hc19nZXQoc3RydWN0 IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIHN0cnVjdCBwYW5mcm9zdF9tbXUgKm1tdSkKK3sKKwlp bnQgYXM7CisKKwlzcGluX2xvY2soJnBmZGV2LT5hc19sb2NrKTsKKworCWFzID0gbW11LT5hczsK KwlpZiAoYXMgPj0gMCkgeworCQlpbnQgZW4gPSBhdG9taWNfaW5jX3JldHVybigmbW11LT5hc19j b3VudCk7CisJCVdBUk5fT04oZW4gPj0gTlVNX0pPQl9TTE9UUyk7CisKKwkJbGlzdF9tb3ZlKCZt bXUtPmxpc3QsICZwZmRldi0+YXNfbHJ1X2xpc3QpOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBD aGVjayBmb3IgYSBmcmVlIEFTICovCisJYXMgPSBmZnoocGZkZXYtPmFzX2FsbG9jX21hc2spOwor CWlmICghKEJJVChhcykgJiBwZmRldi0+ZmVhdHVyZXMuYXNfcHJlc2VudCkpIHsKKwkJc3RydWN0 IHBhbmZyb3N0X21tdSAqbHJ1X21tdTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2Uo bHJ1X21tdSwgJnBmZGV2LT5hc19scnVfbGlzdCwgbGlzdCkgeworCQkJaWYgKCFhdG9taWNfcmVh ZCgmbHJ1X21tdS0+YXNfY291bnQpKQorCQkJCWJyZWFrOworCQl9CisJCVdBUk5fT04oJmxydV9t bXUtPmxpc3QgPT0gJnBmZGV2LT5hc19scnVfbGlzdCk7CisKKwkJbGlzdF9kZWxfaW5pdCgmbHJ1 X21tdS0+bGlzdCk7CisJCWFzID0gbHJ1X21tdS0+YXM7CisKKwkJV0FSTl9PTihhcyA8IDApOwor CQlscnVfbW11LT5hcyA9IC0xOworCX0KKworCS8qIEFzc2lnbiB0aGUgZnJlZSBvciByZWNsYWlt ZWQgQVMgdG8gdGhlIEZEICovCisJbW11LT5hcyA9IGFzOworCXNldF9iaXQoYXMsICZwZmRldi0+ YXNfYWxsb2NfbWFzayk7CisJYXRvbWljX3NldCgmbW11LT5hc19jb3VudCwgMSk7CisJbGlzdF9h ZGQoJm1tdS0+bGlzdCwgJnBmZGV2LT5hc19scnVfbGlzdCk7CisKKwlkZXZfZGJnKHBmZGV2LT5k ZXYsICJBc3NpZ25lZCBBUyVkIHRvIG1tdSAlcCwgYWxsb2NfbWFzaz0lbHgiLCBhcywgbW11LCBw ZmRldi0+YXNfYWxsb2NfbWFzayk7CisKKwlwYW5mcm9zdF9tbXVfZW5hYmxlKHBmZGV2LCBtbXUp OworCitvdXQ6CisJc3Bpbl91bmxvY2soJnBmZGV2LT5hc19sb2NrKTsKKwlyZXR1cm4gYXM7Cit9 CisKK3ZvaWQgcGFuZnJvc3RfbW11X2FzX3B1dChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRl diwgc3RydWN0IHBhbmZyb3N0X21tdSAqbW11KQoreworCWF0b21pY19kZWMoJm1tdS0+YXNfY291 bnQpOworCVdBUk5fT04oYXRvbWljX3JlYWQoJm1tdS0+YXNfY291bnQpIDwgMCk7Cit9CisKIHZv aWQgcGFuZnJvc3RfbW11X3Jlc2V0KHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2KQogewot CXBhbmZyb3N0X21tdV9lbmFibGUocGZkZXYsIDApOworCXN0cnVjdCBwYW5mcm9zdF9tbXUgKm1t dSwgKm1tdV90bXA7CisKKwlzcGluX2xvY2soJnBmZGV2LT5hc19sb2NrKTsKKworCXBmZGV2LT5h c19hbGxvY19tYXNrID0gMDsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtbXUsIG1tdV90 bXAsICZwZmRldi0+YXNfbHJ1X2xpc3QsIGxpc3QpIHsKKwkJbW11LT5hcyA9IC0xOworCQlhdG9t aWNfc2V0KCZtbXUtPmFzX2NvdW50LCAwKTsKKwkJbGlzdF9kZWxfaW5pdCgmbW11LT5saXN0KTsK Kwl9CisKKwlzcGluX3VubG9jaygmcGZkZXYtPmFzX2xvY2spOwogCiAJbW11X3dyaXRlKHBmZGV2 LCBNTVVfSU5UX0NMRUFSLCB+MCk7CiAJbW11X3dyaXRlKHBmZGV2LCBNTVVfSU5UX01BU0ssIH4w KTsKQEAgLTE1MiwyMSArMjIwLDIxIEBAIHN0YXRpYyBzaXplX3QgZ2V0X3Bnc2l6ZSh1NjQgYWRk ciwgc2l6ZV90IHNpemUpCiAJcmV0dXJuIFNaXzJNOwogfQogCi1zdGF0aWMgaW50IG1tdV9tYXBf c2coc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIHU2NCBpb3ZhLAotCQkgICAgICBpbnQg cHJvdCwgc3RydWN0IHNnX3RhYmxlICpzZ3QpCitzdGF0aWMgaW50IG1tdV9tYXBfc2coc3RydWN0 IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIHN0cnVjdCBwYW5mcm9zdF9tbXUgKm1tdSwKKwkJICAg ICAgdTY0IGlvdmEsIGludCBwcm90LCBzdHJ1Y3Qgc2dfdGFibGUgKnNndCkKIHsKIAl1bnNpZ25l ZCBpbnQgY291bnQ7CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2w7Ci0Jc3RydWN0IGlvX3BndGFi bGVfb3BzICpvcHMgPSBwZmRldi0+bW11LT5wZ3RibF9vcHM7CisJc3RydWN0IGlvX3BndGFibGVf b3BzICpvcHMgPSBtbXUtPnBndGJsX29wczsKIAl1NjQgc3RhcnRfaW92YSA9IGlvdmE7CiAKLQlt dXRleF9sb2NrKCZwZmRldi0+bW11LT5sb2NrKTsKKwltdXRleF9sb2NrKCZtbXUtPmxvY2spOwog CiAJZm9yX2VhY2hfc2coc2d0LT5zZ2wsIHNnbCwgc2d0LT5uZW50cywgY291bnQpIHsKIAkJdW5z aWduZWQgbG9uZyBwYWRkciA9IHNnX2RtYV9hZGRyZXNzKHNnbCk7CiAJCXNpemVfdCBsZW4gPSBz Z19kbWFfbGVuKHNnbCk7CiAKLQkJZGV2X2RiZyhwZmRldi0+ZGV2LCAibWFwOiBpb3ZhPSVsbHgs IHBhZGRyPSVseCwgbGVuPSV6eCIsIGlvdmEsIHBhZGRyLCBsZW4pOworCQlkZXZfZGJnKHBmZGV2 LT5kZXYsICJtYXA6IGFzPSVkLCBpb3ZhPSVsbHgsIHBhZGRyPSVseCwgbGVuPSV6eCIsIG1tdS0+ YXMsIGlvdmEsIHBhZGRyLCBsZW4pOwogCiAJCXdoaWxlIChsZW4pIHsKIAkJCXNpemVfdCBwZ3Np emUgPSBnZXRfcGdzaXplKGlvdmEgfCBwYWRkciwgbGVuKTsKQEAgLTE3OCwxMCArMjQ2LDEwIEBA IHN0YXRpYyBpbnQgbW11X21hcF9zZyhzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgdTY0 IGlvdmEsCiAJCX0KIAl9CiAKLQltbXVfaHdfZG9fb3BlcmF0aW9uKHBmZGV2LCAwLCBzdGFydF9p b3ZhLCBpb3ZhIC0gc3RhcnRfaW92YSwKKwltbXVfaHdfZG9fb3BlcmF0aW9uKHBmZGV2LCBtbXUs IHN0YXJ0X2lvdmEsIGlvdmEgLSBzdGFydF9pb3ZhLAogCQkJICAgIEFTX0NPTU1BTkRfRkxVU0hf UFQpOwogCi0JbXV0ZXhfdW5sb2NrKCZwZmRldi0+bW11LT5sb2NrKTsKKwltdXRleF91bmxvY2so Jm1tdS0+bG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIwOCw3ICsyNzYsNyBAQCBpbnQgcGFu ZnJvc3RfbW11X21hcChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pCiAJaWYgKHJldCA8 IDApCiAJCXJldHVybiByZXQ7CiAKLQltbXVfbWFwX3NnKHBmZGV2LCBiby0+bm9kZS5zdGFydCA8 PCBQQUdFX1NISUZULCBwcm90LCBzZ3QpOworCW1tdV9tYXBfc2cocGZkZXYsIGJvLT5tbXUsIGJv LT5ub2RlLnN0YXJ0IDw8IFBBR0VfU0hJRlQsIHByb3QsIHNndCk7CiAKIAlwbV9ydW50aW1lX21h cmtfbGFzdF9idXN5KHBmZGV2LT5kZXYpOwogCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKHBm ZGV2LT5kZXYpOwpAQCAtMjIxLDcgKzI4OSw3IEBAIHZvaWQgcGFuZnJvc3RfbW11X3VubWFwKHN0 cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibykKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiA9ICZiby0+YmFzZS5iYXNlOwogCXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2ID0g dG9fcGFuZnJvc3RfZGV2aWNlKG9iai0+ZGV2KTsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9w cyA9IHBmZGV2LT5tbXUtPnBndGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9 IGJvLT5tbXUtPnBndGJsX29wczsKIAl1NjQgaW92YSA9IGJvLT5ub2RlLnN0YXJ0IDw8IFBBR0Vf U0hJRlQ7CiAJc2l6ZV90IGxlbiA9IGJvLT5ub2RlLnNpemUgPDwgUEFHRV9TSElGVDsKIAlzaXpl X3QgdW5tYXBwZWRfbGVuID0gMDsKQEAgLTIzMCwxMyArMjk4LDEzIEBAIHZvaWQgcGFuZnJvc3Rf bW11X3VubWFwKHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibykKIAlpZiAoV0FSTl9PTigh Ym8tPmlzX21hcHBlZCkpCiAJCXJldHVybjsKIAotCWRldl9kYmcocGZkZXYtPmRldiwgInVubWFw OiBpb3ZhPSVsbHgsIGxlbj0lengiLCBpb3ZhLCBsZW4pOworCWRldl9kYmcocGZkZXYtPmRldiwg InVubWFwOiBhcz0lZCwgaW92YT0lbGx4LCBsZW49JXp4IiwgYm8tPm1tdS0+YXMsIGlvdmEsIGxl bik7CiAKIAlyZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKHBmZGV2LT5kZXYpOwogCWlmIChyZXQg PCAwKQogCQlyZXR1cm47CiAKLQltdXRleF9sb2NrKCZwZmRldi0+bW11LT5sb2NrKTsKKwltdXRl eF9sb2NrKCZiby0+bW11LT5sb2NrKTsKIAogCXdoaWxlICh1bm1hcHBlZF9sZW4gPCBsZW4pIHsK IAkJc2l6ZV90IHVubWFwcGVkX3BhZ2U7CkBAIC0yNTAsMTAgKzMxOCwxMCBAQCB2b2lkIHBhbmZy b3N0X21tdV91bm1hcChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pCiAJCXVubWFwcGVk X2xlbiArPSBwZ3NpemU7CiAJfQogCi0JbW11X2h3X2RvX29wZXJhdGlvbihwZmRldiwgMCwgYm8t Pm5vZGUuc3RhcnQgPDwgUEFHRV9TSElGVCwKKwltbXVfaHdfZG9fb3BlcmF0aW9uKHBmZGV2LCBi by0+bW11LCBiby0+bm9kZS5zdGFydCA8PCBQQUdFX1NISUZULAogCQkJICAgIGJvLT5ub2RlLnNp emUgPDwgUEFHRV9TSElGVCwgQVNfQ09NTUFORF9GTFVTSF9QVCk7CiAKLQltdXRleF91bmxvY2so JnBmZGV2LT5tbXUtPmxvY2spOworCW11dGV4X3VubG9jaygmYm8tPm1tdS0+bG9jayk7CiAKIAlw bV9ydW50aW1lX21hcmtfbGFzdF9idXN5KHBmZGV2LT5kZXYpOwogCXBtX3J1bnRpbWVfcHV0X2F1 dG9zdXNwZW5kKHBmZGV2LT5kZXYpOwpAQCAtMjYyLDkgKzMzMCw5IEBAIHZvaWQgcGFuZnJvc3Rf bW11X3VubWFwKHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibykKIAogc3RhdGljIHZvaWQg bW11X3RsYl9pbnZfY29udGV4dF9zMSh2b2lkICpjb29raWUpCiB7Ci0Jc3RydWN0IHBhbmZyb3N0 X2RldmljZSAqcGZkZXYgPSBjb29raWU7CisJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqcHJp diA9IGNvb2tpZTsKIAotCW1tdV9od19kb19vcGVyYXRpb24ocGZkZXYsIDAsIDAsIH4wVUwsIEFT X0NPTU1BTkRfRkxVU0hfTUVNKTsKKwltbXVfaHdfZG9fb3BlcmF0aW9uKHByaXYtPnBmZGV2LCAm cHJpdi0+bW11LCAwLCB+MFVMLCBBU19DT01NQU5EX0ZMVVNIX01FTSk7CiB9CiAKIHN0YXRpYyB2 b2lkIG1tdV90bGJfaW52X3JhbmdlX25vc3luYyh1bnNpZ25lZCBsb25nIGlvdmEsIHNpemVfdCBz aXplLApAQCAtMjgzLDE2ICszNTEsNjkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpb21tdV9nYXRo ZXJfb3BzIG1tdV90bGJfb3BzID0gewogCS50bGJfc3luYwk9IG1tdV90bGJfc3luY19jb250ZXh0 LAogfTsKIAoraW50IHBhbmZyb3N0X21tdV9wZ3RhYmxlX2FsbG9jKHN0cnVjdCBwYW5mcm9zdF9m aWxlX3ByaXYgKnByaXYpCit7CisJc3RydWN0IHBhbmZyb3N0X21tdSAqbW11ID0gJnByaXYtPm1t dTsKKwlzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiA9IHByaXYtPnBmZGV2OworCisJbXV0 ZXhfaW5pdCgmbW11LT5sb2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmbW11LT5saXN0KTsKKwltbXUt PmFzID0gLTE7CisKKwltbXUtPnBndGJsX2NmZyA9IChzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcpIHsK KwkJLnBnc2l6ZV9iaXRtYXAJPSBTWl80SyB8IFNaXzJNLAorCQkuaWFzCQk9IEZJRUxEX0dFVCgw eGZmLCBwZmRldi0+ZmVhdHVyZXMubW11X2ZlYXR1cmVzKSwKKwkJLm9hcwkJPSBGSUVMRF9HRVQo MHhmZjAwLCBwZmRldi0+ZmVhdHVyZXMubW11X2ZlYXR1cmVzKSwKKwkJLnRsYgkJPSAmbW11X3Rs Yl9vcHMsCisJCS5pb21tdV9kZXYJPSBwZmRldi0+ZGV2LAorCX07CisKKwltbXUtPnBndGJsX29w cyA9IGFsbG9jX2lvX3BndGFibGVfb3BzKEFSTV9NQUxJX0xQQUUsICZtbXUtPnBndGJsX2NmZywK KwkJCQkJICAgICAgcHJpdik7CisJaWYgKCFtbXUtPnBndGJsX29wcykKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBwYW5mcm9zdF9tbXVfcGd0YWJsZV9mcmVlKHN0 cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnByaXYpCit7CisJc3RydWN0IHBhbmZyb3N0X2Rldmlj ZSAqcGZkZXYgPSBwcml2LT5wZmRldjsKKwlzdHJ1Y3QgcGFuZnJvc3RfbW11ICptbXUgPSAmcHJp di0+bW11OworCisJc3Bpbl9sb2NrKCZwZmRldi0+YXNfbG9jayk7CisJaWYgKG1tdS0+YXMgPj0g MCkgeworCQljbGVhcl9iaXQobW11LT5hcywgJnBmZGV2LT5hc19hbGxvY19tYXNrKTsKKwkJY2xl YXJfYml0KG1tdS0+YXMsICZwZmRldi0+YXNfaW5fdXNlX21hc2spOworCQlsaXN0X2RlbCgmbW11 LT5saXN0KTsKKwl9CisJc3Bpbl91bmxvY2soJnBmZGV2LT5hc19sb2NrKTsKKworCWZyZWVfaW9f cGd0YWJsZV9vcHMobW11LT5wZ3RibF9vcHMpOworfQorCiBzdGF0aWMgc3RydWN0IGRybV9tbV9u b2RlICphZGRyX3RvX2RybV9tbV9ub2RlKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBp bnQgYXMsIHU2NCBhZGRyKQogewotCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZTsKKwlzdHJ1Y3Qg ZHJtX21tX25vZGUgKm5vZGUgPSBOVUxMOwogCXU2NCBvZmZzZXQgPSBhZGRyID4+IFBBR0VfU0hJ RlQ7CisJc3RydWN0IHBhbmZyb3N0X21tdSAqbW11OwogCi0JZHJtX21tX2Zvcl9lYWNoX25vZGUo bm9kZSwgJnBmZGV2LT5tbSkgewotCQlpZiAob2Zmc2V0ID49IG5vZGUtPnN0YXJ0ICYmIG9mZnNl dCA8IChub2RlLT5zdGFydCArIG5vZGUtPnNpemUpKQotCQkJcmV0dXJuIG5vZGU7CisJc3Bpbl9s b2NrKCZwZmRldi0+YXNfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShtbXUsICZwZmRldi0+ YXNfbHJ1X2xpc3QsIGxpc3QpIHsKKwkJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqcHJpdjsK KwkJaWYgKGFzICE9IG1tdS0+YXMpCisJCQljb250aW51ZTsKKworCQlwcml2ID0gY29udGFpbmVy X29mKG1tdSwgc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiwgbW11KTsKKwkJZHJtX21tX2Zvcl9l YWNoX25vZGUobm9kZSwgJnByaXYtPm1tKSB7CisJCQlpZiAob2Zmc2V0ID49IG5vZGUtPnN0YXJ0 ICYmIG9mZnNldCA8IChub2RlLT5zdGFydCArIG5vZGUtPnNpemUpKQorCQkJCWdvdG8gb3V0Owor CQl9CiAJfQotCXJldHVybiBOVUxMOworCitvdXQ6CisJc3Bpbl91bmxvY2soJnBmZGV2LT5hc19s b2NrKTsKKwlyZXR1cm4gbm9kZTsKIH0KIAogI2RlZmluZSBOVU1fRkFVTFRfUEFHRVMgKFNaXzJN IC8gUEFHRV9TSVpFKQpAQCAtMzE3LDYgKzQzOCw4IEBAIGludCBwYW5mcm9zdF9tbXVfbWFwX2Zh dWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIGludCBhcywgdTY0IGFkZHIp CiAJCQkgbm9kZS0+c3RhcnQgPDwgUEFHRV9TSElGVCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K KwlXQVJOX09OKGJvLT5tbXUtPmFzICE9IGFzKTsKKwogCS8qIEFzc3VtZSAyTUIgYWxpZ25tZW50 IGFuZCBzaXplIG11bHRpcGxlICovCiAJYWRkciAmPSB+KCh1NjQpU1pfMk0gLSAxKTsKIAlwYWdl X29mZnNldCA9IGFkZHIgPj4gUEFHRV9TSElGVDsKQEAgLTM2NywxMSArNDkwLDExIEBAIGludCBw YW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYs IGludCBhcywgdTY0IGFkZHIpCiAJCWdvdG8gZXJyX21hcDsKIAl9CiAKLQltbXVfbWFwX3NnKHBm ZGV2LCBhZGRyLCBJT01NVV9XUklURSB8IElPTU1VX1JFQUQgfCBJT01NVV9OT0VYRUMsIHNndCk7 CisJbW11X21hcF9zZyhwZmRldiwgYm8tPm1tdSwgYWRkciwgSU9NTVVfV1JJVEUgfCBJT01NVV9S RUFEIHwgSU9NTVVfTk9FWEVDLCBzZ3QpOwogCiAJYm8tPmlzX21hcHBlZCA9IHRydWU7CiAKLQlk ZXZfZGJnKHBmZGV2LT5kZXYsICJtYXBwZWQgcGFnZSBmYXVsdCBAICVsbHgiLCBhZGRyKTsKKwlk ZXZfZGJnKHBmZGV2LT5kZXYsICJtYXBwZWQgcGFnZSBmYXVsdCBAIEFTJWQgJWxseCIsIGFzLCBh ZGRyKTsKIAogCXJldHVybiAwOwogCkBAIC00ODAsMTUgKzYwMyw4IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCBwYW5mcm9zdF9tbXVfaXJxX2hhbmRsZXJfdGhyZWFkKGludCBpcnEsIHZvaWQgKmRhdGEp CiAKIGludCBwYW5mcm9zdF9tbXVfaW5pdChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldikK IHsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKnBndGJsX29wczsKIAlpbnQgZXJyLCBpcnE7CiAK LQlwZmRldi0+bW11ID0gZGV2bV9remFsbG9jKHBmZGV2LT5kZXYsIHNpemVvZigqcGZkZXYtPm1t dSksIEdGUF9LRVJORUwpOwotCWlmICghcGZkZXYtPm1tdSkKLQkJcmV0dXJuIC1FTk9NRU07Ci0K LQltdXRleF9pbml0KCZwZmRldi0+bW11LT5sb2NrKTsKLQogCWlycSA9IHBsYXRmb3JtX2dldF9p cnFfYnluYW1lKHRvX3BsYXRmb3JtX2RldmljZShwZmRldi0+ZGV2KSwgIm1tdSIpOwogCWlmIChp cnEgPD0gMCkKIAkJcmV0dXJuIC1FTk9ERVY7CkBAIC01MDEsMjIgKzYxNyw2IEBAIGludCBwYW5m cm9zdF9tbXVfaW5pdChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldikKIAkJZGV2X2Vycihw ZmRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlcXVlc3QgbW11IGlycSIpOwogCQlyZXR1cm4gZXJyOwog CX0KLQlwZmRldi0+bW11LT5wZ3RibF9jZmcgPSAoc3RydWN0IGlvX3BndGFibGVfY2ZnKSB7Ci0J CS5wZ3NpemVfYml0bWFwCT0gU1pfNEsgfCBTWl8yTSwKLQkJLmlhcwkJPSBGSUVMRF9HRVQoMHhm ZiwgcGZkZXYtPmZlYXR1cmVzLm1tdV9mZWF0dXJlcyksCi0JCS5vYXMJCT0gRklFTERfR0VUKDB4 ZmYwMCwgcGZkZXYtPmZlYXR1cmVzLm1tdV9mZWF0dXJlcyksCi0JCS50bGIJCT0gJm1tdV90bGJf b3BzLAotCQkuaW9tbXVfZGV2CT0gcGZkZXYtPmRldiwKLQl9OwotCi0JcGd0Ymxfb3BzID0gYWxs b2NfaW9fcGd0YWJsZV9vcHMoQVJNX01BTElfTFBBRSwgJnBmZGV2LT5tbXUtPnBndGJsX2NmZywK LQkJCQkJIHBmZGV2KTsKLQlpZiAoIXBndGJsX29wcykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlw ZmRldi0+bW11LT5wZ3RibF9vcHMgPSBwZ3RibF9vcHM7Ci0KLQlwYW5mcm9zdF9tbXVfZW5hYmxl KHBmZGV2LCAwKTsKIAogCXJldHVybiAwOwogfQpAQCAtNTI1LDYgKzYyNSw0IEBAIHZvaWQgcGFu ZnJvc3RfbW11X2Zpbmkoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCiB7CiAJbW11X3dy aXRlKHBmZGV2LCBNTVVfSU5UX01BU0ssIDApOwogCW1tdV9kaXNhYmxlKHBmZGV2LCAwKTsKLQot CWZyZWVfaW9fcGd0YWJsZV9vcHMocGZkZXYtPm1tdS0+cGd0Ymxfb3BzKTsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuaCBiL2RyaXZlcnMvZ3B1 L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuaAppbmRleCBkNWY5YjI0NTM3ZGIuLjdjNWI2Nzc1 YWUyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuaApAQCAtNSw2ICs1 LDggQEAKICNkZWZpbmUgX19QQU5GUk9TVF9NTVVfSF9fCiAKIHN0cnVjdCBwYW5mcm9zdF9nZW1f b2JqZWN0Oworc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdjsKK3N0cnVjdCBwYW5mcm9zdF9tbXU7 CiAKIGludCBwYW5mcm9zdF9tbXVfbWFwKHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibyk7 CiB2b2lkIHBhbmZyb3N0X21tdV91bm1hcChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8p OwpAQCAtMTMsNCArMTUsMTAgQEAgaW50IHBhbmZyb3N0X21tdV9pbml0KHN0cnVjdCBwYW5mcm9z dF9kZXZpY2UgKnBmZGV2KTsKIHZvaWQgcGFuZnJvc3RfbW11X2Zpbmkoc3RydWN0IHBhbmZyb3N0 X2RldmljZSAqcGZkZXYpOwogdm9pZCBwYW5mcm9zdF9tbXVfcmVzZXQoc3RydWN0IHBhbmZyb3N0 X2RldmljZSAqcGZkZXYpOwogCit1MzIgcGFuZnJvc3RfbW11X2FzX2dldChzdHJ1Y3QgcGFuZnJv c3RfZGV2aWNlICpwZmRldiwgc3RydWN0IHBhbmZyb3N0X21tdSAqbW11KTsKK3ZvaWQgcGFuZnJv c3RfbW11X2FzX3B1dChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgc3RydWN0IHBhbmZy b3N0X21tdSAqbW11KTsKKworaW50IHBhbmZyb3N0X21tdV9wZ3RhYmxlX2FsbG9jKHN0cnVjdCBw YW5mcm9zdF9maWxlX3ByaXYgKnByaXYpOwordm9pZCBwYW5mcm9zdF9tbXVfcGd0YWJsZV9mcmVl KHN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnByaXYpOworCiAjZW5kaWYKLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs