From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: [PATCH] drm/panfrost: Implement per FD address spaces Date: Thu, 8 Aug 2019 16:29:18 -0600 Message-ID: <20190808222918.15153-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-f65.google.com (mail-ot1-f65.google.com [209.85.210.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 804196ECCF for ; Thu, 8 Aug 2019 22:29:22 +0000 (UTC) Received: by mail-ot1-f65.google.com with SMTP id r6so125125729oti.3 for ; Thu, 08 Aug 2019 15:29:22 -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 , Steven Price , Alyssa Rosenzweig , Robin Murphy List-Id: dri-devel@lists.freedesktop.org VXAgdW50aWwgbm93LCBhIHNpbmdsZSBzaGFyZWQgR1BVIGFkZHJlc3Mgc3BhY2Ugd2FzIHVzZWQu IFRoaXMgaXMgbm90CmlkZWFsIGFzIHRoZXJlJ3Mgbm8gcHJvdGVjdGlvbiBiZXR3ZWVuIHByb2Nl c3NlcyBhbmQgZG9lc24ndCB3b3JrIGZvcgpzdXBwb3J0aW5nIHRoZSBzYW1lIEdQVS9DUFUgVkEg ZmVhdHVyZS4gTW9zdCBpbXBvcnRhbnRseSwgdGhpcyB3aWxsCmhvcGVmdWxseSBtaXRpZ2F0ZSBB bHlzc2EncyBmZWFyIG9mIFdlYkdMLCB3aGF0ZXZlciB0aGF0IGlzLgoKTW9zdCBvZiB0aGUgY2hh bmdlcyBoZXJlIGFyZSBtb3Zpbmcgc3RydWN0IGRybV9tbSBhbmQgc3RydWN0CnBhbmZyb3N0X21t dSBvYmplY3RzIGZyb20gdGhlIHBlciBkZXZpY2Ugc3RydWN0IHRvIHRoZSBwZXIgRkQgc3RydWN0 LgpUaGUgY3JpdGljYWwgZnVuY3Rpb24gaXMgcGFuZnJvc3RfbW11X2FzX2dldCgpIHdoaWNoIGhh bmRsZXMgYWxsb2NhdGluZwphbmQgc3dpdGNoaW5nIHRoZSBoL3cgYWRkcmVzcyBzcGFjZXMuCgpD YzogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KQ2M6IERhdmlkIEFp cmxpZSA8YWlybGllZEBsaW51eC5pZT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5j aD4KQ2M6IFJvYmluIE11cnBoeSA8cm9iaW4ubXVycGh5QGFybS5jb20+CkNjOiBTdGV2ZW4gUHJp Y2UgPHN0ZXZlbi5wcmljZUBhcm0uY29tPgpDYzogQWx5c3NhIFJvc2VuendlaWcgPGFseXNzYS5y b3Nlbnp3ZWlnQGNvbGxhYm9yYS5jb20+ClNpZ25lZC1vZmYtYnk6IFJvYiBIZXJyaW5nIDxyb2Jo QGtlcm5lbC5vcmc+Ci0tLQpUaGlzIGRlcGVuZHMgb24gbWFkdmlzZSBzdXBwb3J0IChub3cgaW4g ZHJtLW1pc2MpIGFuZCB0aGUgaGVhcC9uby1leGVjIApzZXJpZXMgKGp1c3QgdGhlIHJld29yayku IFNlZWVtcyB0byBiZSB3b3JraW5nIHByZXR0eSB3ZWxsIGZvciBtZSwgYnV0IAptb3JlIHRlc3Rp bmcgd291bGQgYmUgaGVscGZ1bC4gSSd2ZSBydW4gbXVsdGlwbGUgJ2dsbWFyazItZXMyLWRybSAK LS1vZmYtc2NyZWVuJyBpbnN0YW5jZXMgYW5kIEdub21lIFNoZWxsLiBSdW5uaW5nIG1vcmUgdGhh biA4IGNsaWVudHMgKGF0IApsZWFzdCBmb3IgVDg2MCkgd2lsbCBoaXQgdGhlIGFkZHJlc3Mgc3Bh Y2Ugc3dpdGNoIGNvZGUgcGF0aHMuCgpSb2IKCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvVE9E TyAgICAgICAgICAgICAgfCAgIDQgLQogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0 X2RldmljZS5jIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kZXZp Y2UuaCB8ICAyNCArKy0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYyAg ICB8ICAzMSArKy0KIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYyAgICB8 ICAxNSArLQogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oICAgIHwgICAz ICsKIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9qb2IuYyAgICB8ICAxMiArLQog ZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jICAgIHwgMjIwICsrKysrKysr KysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5oICAg IHwgICA4ICsKIDkgZmlsZXMgY2hhbmdlZCwgMjM5IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9UT0RPIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmZyb3N0L1RPRE8KaW5kZXggZTc3MjdiMjkyMzU1Li41MzZhMGQ0ZjhkMjkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9UT0RPCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9UT0RPCkBAIC02LDEwICs2LDYgQEAKICAgLSBCaWZyb3N0IHNwZWNp ZmljIGZlYXR1cmUgYW5kIGlzc3VlIGhhbmRsaW5nCiAgIC0gQ29oZXJlbnQgRE1BIHN1cHBvcnQK IAotLSBQZXIgRkQgYWRkcmVzcyBzcGFjZSBzdXBwb3J0LiBUaGUgaC93IHN1cHBvcnRzIG11bHRp cGxlIGFkZHJlc3NlcyBzcGFjZXMuCi0gIFRoZSBoYXJkIHBhcnQgaXMgaGFuZGxpbmcgd2hlbiBt b3JlIGFkZHJlc3Mgc3BhY2VzIGFyZSBuZWVkZWQgdGhhbiB3aGF0Ci0gIHRoZSBoL3cgcHJvdmlk ZXMuCi0KIC0gU3VwcG9ydCB1c2Vyc3BhY2UgY29udHJvbGxlZCBHUFUgdmlydHVhbCBhZGRyZXNz ZXMuIE5lZWRlZCBmb3IgVnVsa2FuLiAoVG9tZXUpCiAKIC0gQ29tcHV0ZSBqb2Igc3VwcG9ydC4g U28gY2FsbGVkICdjb21wdXRlIG9ubHknIGpvYnMgbmVlZCB0byBiZSBwbHVtYmVkIHVwIHRvCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZGV2aWNlLmMgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZGV2aWNlLmMKaW5kZXggOTgxNGY0Y2Ni ZDI2Li40ZGE3MWJiNTZjMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9w YW5mcm9zdF9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rf ZGV2aWNlLmMKQEAgLTEyMyw4ICsxMjMsMTAgQEAgaW50IHBhbmZyb3N0X2RldmljZV9pbml0KHN0 cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2KQogCW11dGV4X2luaXQoJnBmZGV2LT5zY2hlZF9s b2NrKTsKIAltdXRleF9pbml0KCZwZmRldi0+cmVzZXRfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQo JnBmZGV2LT5zY2hlZHVsZWRfam9icyk7CisJSU5JVF9MSVNUX0hFQUQoJnBmZGV2LT5hc19scnVf bGlzdCk7CiAKIAlzcGluX2xvY2tfaW5pdCgmcGZkZXYtPmh3YWNjZXNzX2xvY2spOworCXNwaW5f bG9ja19pbml0KCZwZmRldi0+YXNfbG9jayk7CiAKIAllcnIgPSBwYW5mcm9zdF9jbGtfaW5pdChw ZmRldik7CiAJaWYgKGVycikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X2RldmljZS5oIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rl dmljZS5oCmluZGV4IDRlNTY0MWRiOWM3ZS4uZjUwM2M1NjZlOTlmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZGV2aWNlLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2RldmljZS5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBf X1BBTkZST1NUX0RFVklDRV9IX18KICNkZWZpbmUgX19QQU5GUk9TVF9ERVZJQ0VfSF9fCiAKKyNp bmNsdWRlIDxsaW51eC9hdG9taWMuaD4KKyNpbmNsdWRlIDxsaW51eC9pby1wZ3RhYmxlLmg+CiAj aW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgog I2luY2x1ZGUgPGRybS9kcm1fbW0uaD4KQEAgLTYzLDkgKzY1LDYgQEAgc3RydWN0IHBhbmZyb3N0 X2RldmljZSB7CiAKIAlzcGlubG9ja190IGh3YWNjZXNzX2xvY2s7CiAKLQlzdHJ1Y3QgZHJtX21t IG1tOwotCXNwaW5sb2NrX3QgbW1fbG9jazsKLQogCXZvaWQgX19pb21lbSAqaW9tZW07CiAJc3Ry dWN0IGNsayAqY2xvY2s7CiAJc3RydWN0IGNsayAqYnVzX2Nsb2NrOwpAQCAtNzQsNyArNzMsMTEg QEAgc3RydWN0IHBhbmZyb3N0X2RldmljZSB7CiAKIAlzdHJ1Y3QgcGFuZnJvc3RfZmVhdHVyZXMg ZmVhdHVyZXM7CiAKLQlzdHJ1Y3QgcGFuZnJvc3RfbW11ICptbXU7CisJc3BpbmxvY2tfdCBhc19s b2NrOworCXVuc2lnbmVkIGxvbmcgYXNfaW5fdXNlX21hc2s7CisJdW5zaWduZWQgbG9uZyBhc19h bGxvY19tYXNrOworCXN0cnVjdCBsaXN0X2hlYWQgYXNfbHJ1X2xpc3Q7CisKIAlzdHJ1Y3QgcGFu ZnJvc3Rfam9iX3Nsb3QgKmpzOwogCiAJc3RydWN0IHBhbmZyb3N0X2pvYiAqam9ic1tOVU1fSk9C X1NMT1RTXTsKQEAgLTk4LDEwICsxMDEsMjMgQEAgc3RydWN0IHBhbmZyb3N0X2RldmljZSB7CiAJ fSBkZXZmcmVxOwogfTsKIAorc3RydWN0IHBhbmZyb3N0X21tdSB7CisJc3RydWN0IGlvX3BndGFi bGVfY2ZnIHBndGJsX2NmZzsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKnBndGJsX29wczsKKwlz dHJ1Y3QgbXV0ZXggbG9jazsKKwlpbnQgYXM7CisJYXRvbWljX3QgYXNfY291bnQ7CisJc3RydWN0 IGxpc3RfaGVhZCBsaXN0OworfTsKKwogc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiB7CiAJc3Ry dWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXY7CiAKIAlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSBz Y2hlZF9lbnRpdHlbTlVNX0pPQl9TTE9UU107CisKKwlzdHJ1Y3QgcGFuZnJvc3RfbW11IG1tdTsK KwlzdHJ1Y3QgZHJtX21tIG1tOworCXNwaW5sb2NrX3QgbW1fbG9jazsKIH07CiAKIHN0YXRpYyBp bmxpbmUgc3RydWN0IHBhbmZyb3N0X2RldmljZSAqdG9fcGFuZnJvc3RfZGV2aWNlKHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jCmlu ZGV4IGExMzUyNzUwOTg0Yy4uN2M4YWExYTgwNTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X2Rydi5jCkBAIC00MDMsNiArNDAzLDcgQEAgc3RhdGljIHZvaWQgcGFuZnJvc3Rf ZHJtX21tX2NvbG9yX2FkanVzdChjb25zdCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCiBzdGF0 aWMgaW50CiBwYW5mcm9zdF9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSkKIHsKKwlpbnQgcmV0OwogCXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICpwYW5mcm9z dF9wcml2OwogCkBAIC00MTMsNyArNDE0LDI4IEBAIHBhbmZyb3N0X29wZW4oc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCXBhbmZyb3N0X3ByaXYtPnBmZGV2 ID0gcGZkZXY7CiAJZmlsZS0+ZHJpdmVyX3ByaXYgPSBwYW5mcm9zdF9wcml2OwogCi0JcmV0dXJu IHBhbmZyb3N0X2pvYl9vcGVuKHBhbmZyb3N0X3ByaXYpOworCXNwaW5fbG9ja19pbml0KCZwYW5m cm9zdF9wcml2LT5tbV9sb2NrKTsKKworCS8qIDRHIGVub3VnaCBmb3Igbm93LiBjYW4gYmUgNDgt Yml0ICovCisJcGFuZnJvc3RfcHJpdi0+bW0uY29sb3JfYWRqdXN0ID0gcGFuZnJvc3RfZHJtX21t X2NvbG9yX2FkanVzdDsKKwlkcm1fbW1faW5pdCgmcGFuZnJvc3RfcHJpdi0+bW0sIFNaXzMyTSA+ PiBQQUdFX1NISUZULCAoU1pfNEcgLSBTWl8zMk0pID4+IFBBR0VfU0hJRlQpOworCisJcmV0ID0g cGFuZnJvc3RfbW11X3BndGFibGVfYWxsb2MocGFuZnJvc3RfcHJpdik7CisJaWYgKHJldCkKKwkJ Z290byBlcnJfcGd0YWJsZTsKKworCXJldCA9IHBhbmZyb3N0X2pvYl9vcGVuKHBhbmZyb3N0X3By aXYpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2pvYjsKKworCXJldHVybiAwOworCitlcnJfam9i OgorCXBhbmZyb3N0X21tdV9wZ3RhYmxlX2ZyZWUocGFuZnJvc3RfcHJpdik7CitlcnJfcGd0YWJs ZToKKwlkcm1fbW1fdGFrZWRvd24oJnBhbmZyb3N0X3ByaXYtPm1tKTsKKwlrZnJlZShwYW5mcm9z dF9wcml2KTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDI0LDYgKzQ0Niw4 IEBAIHBhbmZyb3N0X3Bvc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCiAJcGFuZnJvc3RfcGVyZmNudF9jbG9zZShwYW5mcm9zdF9wcml2KTsKIAlw YW5mcm9zdF9qb2JfY2xvc2UocGFuZnJvc3RfcHJpdik7CiAKKwlwYW5mcm9zdF9tbXVfcGd0YWJs ZV9mcmVlKHBhbmZyb3N0X3ByaXYpOworCWRybV9tbV90YWtlZG93bigmcGFuZnJvc3RfcHJpdi0+ bW0pOwogCWtmcmVlKHBhbmZyb3N0X3ByaXYpOwogfQogCkBAIC00OTYsMTQgKzUyMCw5IEBAIHN0 YXRpYyBpbnQgcGFuZnJvc3RfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlk ZGV2LT5kZXZfcHJpdmF0ZSA9IHBmZGV2OwogCXBmZGV2LT5kZGV2ID0gZGRldjsKIAotCXNwaW5f bG9ja19pbml0KCZwZmRldi0+bW1fbG9jayk7CiAJbXV0ZXhfaW5pdCgmcGZkZXYtPnNocmlua2Vy X2xvY2spOwogCUlOSVRfTElTVF9IRUFEKCZwZmRldi0+c2hyaW5rZXJfbGlzdCk7CiAKLQkvKiA0 RyBlbm91Z2ggZm9yIG5vdy4gY2FuIGJlIDQ4LWJpdCAqLwotCWRybV9tbV9pbml0KCZwZmRldi0+ bW0sIFNaXzMyTSA+PiBQQUdFX1NISUZULCAoU1pfNEcgLSBTWl8zMk0pID4+IFBBR0VfU0hJRlQp OwotCXBmZGV2LT5tbS5jb2xvcl9hZGp1c3QgPSBwYW5mcm9zdF9kcm1fbW1fY29sb3JfYWRqdXN0 OwotCiAJcG1fcnVudGltZV91c2VfYXV0b3N1c3BlbmQocGZkZXYtPmRldik7CiAJcG1fcnVudGlt ZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkocGZkZXYtPmRldiwgNTApOyAvKiB+MyBmcmFtZXMgKi8K IAlwbV9ydW50aW1lX2VuYWJsZShwZmRldi0+ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9w YW5mcm9zdF9nZW0uYwppbmRleCAzN2EzYTZlZDQ2MTcuLjkzMjA0YjQ0ZWY5MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYwpAQCAtNDcsOCArNDcsOCBAQCBzdGF0aWMg aW50IHBhbmZyb3N0X2dlbV9vcGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcAogCXNpemVfdCBzaXplID0gb2JqLT5zaXplOwogCXU2NCBhbGlnbjsK IAlzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8gPSB0b19wYW5mcm9zdF9ibyhvYmopOwot CXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2ID0gb2JqLT5kZXYtPmRldl9wcml2YXRlOwog CXVuc2lnbmVkIGxvbmcgY29sb3IgPSBiby0+bm9leGVjID8gUEFORlJPU1RfQk9fTk9FWEVDIDog MDsKKwlzdHJ1Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICpwcml2ID0gZmlsZV9wcml2LT5kcml2ZXJf cHJpdjsKIAogCS8qCiAJICogRXhlY3V0YWJsZSBidWZmZXJzIGNhbm5vdCBjcm9zcyBhIDE2TUIg Ym91bmRhcnkgYXMgdGhlIHByb2dyYW0KQEAgLTYxLDggKzYxLDkgQEAgc3RhdGljIGludCBwYW5m cm9zdF9nZW1fb3BlbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRybV9maWxl ICpmaWxlX3AKIAllbHNlCiAJCWFsaWduID0gc2l6ZSA+PSBTWl8yTSA/IFNaXzJNID4+IFBBR0Vf U0hJRlQgOiAwOwogCi0Jc3Bpbl9sb2NrKCZwZmRldi0+bW1fbG9jayk7Ci0JcmV0ID0gZHJtX21t X2luc2VydF9ub2RlX2dlbmVyaWMoJnBmZGV2LT5tbSwgJmJvLT5ub2RlLAorCWJvLT5tbXUgPSAm cHJpdi0+bW11OworCXNwaW5fbG9jaygmcHJpdi0+bW1fbG9jayk7CisJcmV0ID0gZHJtX21tX2lu c2VydF9ub2RlX2dlbmVyaWMoJnByaXYtPm1tLCAmYm8tPm5vZGUsCiAJCQkJCSBzaXplID4+IFBB R0VfU0hJRlQsIGFsaWduLCBjb2xvciwgMCk7CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CkBAIC03 MywyMiArNzQsMjIgQEAgc3RhdGljIGludCBwYW5mcm9zdF9nZW1fb3BlbihzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaiwgc3RydWN0IGRybV9maWxlICpmaWxlX3AKIAkJCWRybV9tbV9yZW1vdmVf bm9kZSgmYm8tPm5vZGUpOwogCX0KIG91dDoKLQlzcGluX3VubG9jaygmcGZkZXYtPm1tX2xvY2sp OworCXNwaW5fdW5sb2NrKCZwcml2LT5tbV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0 aWMgdm9pZCBwYW5mcm9zdF9nZW1fY2xvc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewogCXN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0 ICpibyA9IHRvX3BhbmZyb3N0X2JvKG9iaik7Ci0Jc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZk ZXYgPSBvYmotPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAq cHJpdiA9IGZpbGVfcHJpdi0+ZHJpdmVyX3ByaXY7CiAKIAlpZiAoYm8tPmlzX21hcHBlZCkKIAkJ cGFuZnJvc3RfbW11X3VubWFwKGJvKTsKIAotCXNwaW5fbG9jaygmcGZkZXYtPm1tX2xvY2spOwor CXNwaW5fbG9jaygmcHJpdi0+bW1fbG9jayk7CiAJaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgm Ym8tPm5vZGUpKQogCQlkcm1fbW1fcmVtb3ZlX25vZGUoJmJvLT5ub2RlKTsKLQlzcGluX3VubG9j aygmcGZkZXYtPm1tX2xvY2spOworCXNwaW5fdW5sb2NrKCZwcml2LT5tbV9sb2NrKTsKIH0KIAog c3RhdGljIGludCBwYW5mcm9zdF9nZW1fcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oIGIvZHJp dmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oCmluZGV4IGUxMGY1ODMxNjkxNS4u NTA5MjA4MTljYzE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJv c3RfZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5oCkBA IC03LDEwICs3LDEzIEBACiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmg+CiAj aW5jbHVkZSA8ZHJtL2RybV9tbS5oPgogCitzdHJ1Y3QgcGFuZnJvc3RfbW11OworCiBzdHJ1Y3Qg cGFuZnJvc3RfZ2VtX29iamVjdCB7CiAJc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0IGJhc2U7 CiAJc3RydWN0IHNnX3RhYmxlICpzZ3RzOwogCisJc3RydWN0IHBhbmZyb3N0X21tdSAqbW11Owog CXN0cnVjdCBkcm1fbW1fbm9kZSBub2RlOwogCWJvb2wgaXNfbWFwcGVkCQk6MTsKIAlib29sIG5v ZXhlYwkJOjE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rf am9iLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMKaW5kZXggZDU2 N2NlOTg0OTRjLi5hZWE4NDYxMGI4Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5m cm9zdC9wYW5mcm9zdF9qb2IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJv c3Rfam9iLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9qb2JfaHdf c3VibWl0KHN0cnVjdCBwYW5mcm9zdF9qb2IgKmpvYiwgaW50IGpzKQogCWlmIChXQVJOX09OKGpv Yl9yZWFkKHBmZGV2LCBKU19DT01NQU5EX05FWFQoanMpKSkpCiAJCWdvdG8gZW5kOwogCisJY2Zn ID0gcGFuZnJvc3RfbW11X2FzX2dldChwZmRldiwgJmpvYi0+ZmlsZV9wcml2LT5tbXUpOworCiAJ cGFuZnJvc3RfZGV2ZnJlcV9yZWNvcmRfdHJhbnNpdGlvbihwZmRldiwganMpOwogCXNwaW5fbG9j a19pcnFzYXZlKCZwZmRldi0+aHdhY2Nlc3NfbG9jaywgZmxhZ3MpOwogCkBAIC0xNjMsOCArMTY1 LDcgQEAgc3RhdGljIHZvaWQgcGFuZnJvc3Rfam9iX2h3X3N1Ym1pdChzdHJ1Y3QgcGFuZnJvc3Rf am9iICpqb2IsIGludCBqcykKIAogCS8qIHN0YXJ0IE1NVSwgbWVkaXVtIHByaW9yaXR5LCBjYWNo ZSBjbGVhbi9mbHVzaCBvbiBlbmQsIGNsZWFuL2ZsdXNoIG9uCiAJICogc3RhcnQgKi8KLQkvKiBU T0RPOiBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZXMgKi8KLQljZmcgPSBKU19DT05GSUdfVEhSRUFE X1BSSSg4KSB8CisJY2ZnIHw9IEpTX0NPTkZJR19USFJFQURfUFJJKDgpIHwKIAkJSlNfQ09ORklH X1NUQVJUX0ZMVVNIX0NMRUFOX0lOVkFMSURBVEUgfAogCQlKU19DT05GSUdfRU5EX0ZMVVNIX0NM RUFOX0lOVkFMSURBVEU7CiAKQEAgLTI4MCw2ICsyODEsOSBAQCBzdGF0aWMgdm9pZCBwYW5mcm9z dF9qb2JfY2xlYW51cChzdHJ1Y3Qga3JlZiAqcmVmKQogCQlrdmZyZWUoam9iLT5ib3MpOwogCX0K IAorCWZvciAoaSA9IDA7IGkgPCBOVU1fSk9CX1NMT1RTOyBpKyspCisJCWlmIChqb2IgPT0gam9i LT5wZmRldi0+am9ic1tpXSkKKwkJCWpvYi0+cGZkZXYtPmpvYnNbaV0gPSBOVUxMOwogCWtmcmVl KGpvYik7CiB9CiAKQEAgLTM3Nyw4ICszODEsOSBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9qb2Jf dGltZWRvdXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKIAlpZiAoZG1hX2ZlbmNl X2lzX3NpZ25hbGVkKGpvYi0+ZG9uZV9mZW5jZSkpCiAJCXJldHVybjsKIAotCWRldl9lcnIocGZk ZXYtPmRldiwgImdwdSBzY2hlZCB0aW1lb3V0LCBqcz0lZCwgc3RhdHVzPTB4JXgsIGhlYWQ9MHgl eCwgdGFpbD0weCV4LCBzY2hlZF9qb2I9JXAiLAorCWRldl9lcnIocGZkZXYtPmRldiwgImdwdSBz Y2hlZCB0aW1lb3V0LCBqcz0lZCwgY29uZmlnPTB4JXgsIHN0YXR1cz0weCV4LCBoZWFkPTB4JXgs IHRhaWw9MHgleCwgc2NoZWRfam9iPSVwIiwKIAkJanMsCisJCWpvYl9yZWFkKHBmZGV2LCBKU19D T05GSUcoanMpKSwKIAkJam9iX3JlYWQocGZkZXYsIEpTX1NUQVRVUyhqcykpLAogCQlqb2JfcmVh ZChwZmRldiwgSlNfSEVBRF9MTyhqcykpLAogCQlqb2JfcmVhZChwZmRldiwgSlNfVEFJTF9MTyhq cykpLApAQCAtNDQ4LDYgKzQ1Myw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwYW5mcm9zdF9qb2Jf aXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKIAkJfQogCiAJCWlmIChzdGF0dXMgJiBK T0JfSU5UX01BU0tfRE9ORShqKSkgeworCQkJcGFuZnJvc3RfbW11X2FzX3B1dChwZmRldiwgJnBm ZGV2LT5qb2JzW2pdLT5maWxlX3ByaXYtPm1tdSk7CiAJCQlwYW5mcm9zdF9kZXZmcmVxX3JlY29y ZF90cmFuc2l0aW9uKHBmZGV2LCBqKTsKIAkJCWRtYV9mZW5jZV9zaWduYWwocGZkZXYtPmpvYnNb al0tPmRvbmVfZmVuY2UpOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJv c3QvcGFuZnJvc3RfbW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfbW11 LmMKaW5kZXggMmVkNDExZjA5ZDgwLi5mOGRhNzU1N2QxYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZnJvc3QvcGFuZnJvc3RfbW11LmMKQEAgLTEsNSArMSw2IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjoJR1BMLTIuMAogLyogQ29weXJpZ2h0IDIwMTkgTGluYXJvLCBMdGQsIFJvYiBIZXJy aW5nIDxyb2JoQGtlcm5lbC5vcmc+ICovCisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CiAjaW5j bHVkZSA8bGludXgvYml0ZmllbGQuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1 ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CkBAIC0yMiwxMiArMjMsNiBAQAogI2RlZmluZSBtbXVf d3JpdGUoZGV2LCByZWcsIGRhdGEpIHdyaXRlbChkYXRhLCBkZXYtPmlvbWVtICsgcmVnKQogI2Rl ZmluZSBtbXVfcmVhZChkZXYsIHJlZykgcmVhZGwoZGV2LT5pb21lbSArIHJlZykKIAotc3RydWN0 IHBhbmZyb3N0X21tdSB7Ci0Jc3RydWN0IGlvX3BndGFibGVfY2ZnIHBndGJsX2NmZzsKLQlzdHJ1 Y3QgaW9fcGd0YWJsZV9vcHMgKnBndGJsX29wczsKLQlzdHJ1Y3QgbXV0ZXggbG9jazsKLX07Ci0K IHN0YXRpYyBpbnQgd2FpdF9yZWFkeShzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgdTMy IGFzX25yKQogewogCWludCByZXQ7CkBAIC05MSw2ICs4Niw5IEBAIHN0YXRpYyBpbnQgbW11X2h3 X2RvX29wZXJhdGlvbihzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgdTMyIGFzX25yLAog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHJldDsKIAorCWlmIChhc19uciA8IDApCisJCXJl dHVybiAwOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnBmZGV2LT5od2FjY2Vzc19sb2NrLCBmbGFn cyk7CiAKIAlpZiAob3AgIT0gQVNfQ09NTUFORF9VTkxPQ0spCkBAIC0xMDcsOSArMTA1LDEwIEBA IHN0YXRpYyBpbnQgbW11X2h3X2RvX29wZXJhdGlvbihzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpw ZmRldiwgdTMyIGFzX25yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIHBhbmZyb3N0 X21tdV9lbmFibGUoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIHUzMiBhc19ucikKK3N0 YXRpYyB2b2lkIHBhbmZyb3N0X21tdV9lbmFibGUoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZk ZXYsIHN0cnVjdCBwYW5mcm9zdF9tbXUgKm1tdSkKIHsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcg KmNmZyA9ICZwZmRldi0+bW11LT5wZ3RibF9jZmc7CisJaW50IGFzX25yID0gbW11LT5hczsKKwlz dHJ1Y3QgaW9fcGd0YWJsZV9jZmcgKmNmZyA9ICZtbXUtPnBndGJsX2NmZzsKIAl1NjQgdHJhbnN0 YWIgPSBjZmctPmFybV9tYWxpX2xwYWVfY2ZnLnRyYW5zdGFiOwogCXU2NCBtZW1hdHRyID0gY2Zn LT5hcm1fbWFsaV9scGFlX2NmZy5tZW1hdHRyOwogCkBAIC0xMzYsOSArMTM1LDg3IEBAIHN0YXRp YyB2b2lkIG1tdV9kaXNhYmxlKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCB1MzIgYXNf bnIpCiAJd3JpdGVfY21kKHBmZGV2LCBhc19uciwgQVNfQ09NTUFORF9VUERBVEUpOwogfQogCit1 MzIgcGFuZnJvc3RfbW11X2FzX2dldChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgc3Ry dWN0IHBhbmZyb3N0X21tdSAqbW11KQoreworCWludCBhcyA9IG1tdS0+YXM7CisKKwlzcGluX2xv Y2soJnBmZGV2LT5hc19sb2NrKTsKKworCWFzID0gbW11LT5hczsKKwlpZiAoYXMgPj0gMCkgewor CQlpbnQgZW4gPSBhdG9taWNfZmV0Y2hfaW5jKCZtbXUtPmFzX2NvdW50KTsKKwkJV0FSTl9PTihl biA+IDIpOworCisJCWxpc3RfbW92ZSgmbW11LT5saXN0LCAmcGZkZXYtPmFzX2xydV9saXN0KTsK KwkJc3Bpbl91bmxvY2soJnBmZGV2LT5hc19sb2NrKTsKKwkJaWYgKCFlbikKKwkJCXBhbmZyb3N0 X21tdV9lbmFibGUocGZkZXYsIG1tdSk7CisJCXJldHVybiBhczsKKwl9CisKKwkvKiBDaGVjayBm b3IgYSBmcmVlIEFTICovCisJYXMgPSBmZnoocGZkZXYtPmFzX2FsbG9jX21hc2spOworCWlmICgh KEJJVChhcykgJiBwZmRldi0+ZmVhdHVyZXMuYXNfcHJlc2VudCkpIHsKKwkJc3RydWN0IHBhbmZy b3N0X21tdSAqbHJ1X21tdTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UobHJ1X21t dSwgJnBmZGV2LT5hc19scnVfbGlzdCwgbGlzdCkgeworCQkJaWYgKCFhdG9taWNfcmVhZCgmbHJ1 X21tdS0+YXNfY291bnQpKQorCQkJCWJyZWFrOworCQl9CisJCVdBUk5fT04oIWxydV9tbXUpOwor CisJCWxpc3RfZGVsX2luaXQoJmxydV9tbXUtPmxpc3QpOworCQlhcyA9IGxydV9tbXUtPmFzOwor CisJCVdBUk5fT04oYXMgPCAwKTsKKwkJbHJ1X21tdS0+YXMgPSAtMTsKKwl9CisKKwkvKiBBc3Np Z24gdGhlIGZyZWUgb3IgcmVjbGFpbWVkIEFTIHRvIHRoZSAgKi8KKwltbXUtPmFzID0gYXM7CisJ c2V0X2JpdChhcywgJnBmZGV2LT5hc19hbGxvY19tYXNrKTsKKwlhdG9taWNfc2V0KCZtbXUtPmFz X2NvdW50LCAxKTsKKwlsaXN0X2FkZCgmbW11LT5saXN0LCAmcGZkZXYtPmFzX2xydV9saXN0KTsK KworCWRldl9kYmcocGZkZXYtPmRldiwgIkFzc2lnbmVkIEFTJWQgdG8gbW11ICVwLCBhbGxvY19t YXNrPSVseCIsIGFzLCBtbXUsIHBmZGV2LT5hc19hbGxvY19tYXNrKTsKKworCXNwaW5fdW5sb2Nr KCZwZmRldi0+YXNfbG9jayk7CisKKwlwYW5mcm9zdF9tbXVfZW5hYmxlKHBmZGV2LCBtbXUpOwor CXJldHVybiBhczsKK30KKwordm9pZCBwYW5mcm9zdF9tbXVfYXNfcHV0KHN0cnVjdCBwYW5mcm9z dF9kZXZpY2UgKnBmZGV2LCBzdHJ1Y3QgcGFuZnJvc3RfbW11ICptbXUpCit7CisJYXRvbWljX2Rl YygmbW11LT5hc19jb3VudCk7CisJV0FSTl9PTihhdG9taWNfcmVhZCgmbW11LT5hc19jb3VudCkg PCAwKTsKK30KKworc3RhdGljIHZvaWQgcGFuZnJvc3RfbW11X2FzX3Jlc2V0KHN0cnVjdCBwYW5m cm9zdF9kZXZpY2UgKnBmZGV2LCBzdHJ1Y3QgcGFuZnJvc3RfbW11ICptbXUpCit7CisJc3Bpbl9s b2NrKCZwZmRldi0+YXNfbG9jayk7CisKKwlhdG9taWNfc2V0KCZtbXUtPmFzX2NvdW50LCAwKTsK KwlpZiAobW11LT5hcyA+PSAwKSB7CisJCWNsZWFyX2JpdChtbXUtPmFzLCAmcGZkZXYtPmFzX2Fs bG9jX21hc2spOworCQlsaXN0X2RlbF9pbml0KCZtbXUtPmxpc3QpOworCQltbXUtPmFzID0gLTE7 CisJfQorCisJc3Bpbl91bmxvY2soJnBmZGV2LT5hc19sb2NrKTsKK30KKwogdm9pZCBwYW5mcm9z dF9tbXVfcmVzZXQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCiB7Ci0JcGFuZnJvc3Rf bW11X2VuYWJsZShwZmRldiwgMCk7CisJc3RydWN0IGRybV9maWxlICpmaWxlOworCisJbXV0ZXhf bG9jaygmcGZkZXYtPmRkZXYtPmZpbGVsaXN0X211dGV4KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGZpbGUsICZwZmRldi0+ZGRldi0+ZmlsZWxpc3QsIGxoZWFkKSB7CisJCXN0cnVjdCBwYW5mcm9z dF9maWxlX3ByaXYgKnByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKKworCQlwYW5mcm9zdF9tbXVf YXNfcmVzZXQocGZkZXYsICZwcml2LT5tbXUpOworCX0KKwltdXRleF91bmxvY2soJnBmZGV2LT5k ZGV2LT5maWxlbGlzdF9tdXRleCk7CiAKIAltbXVfd3JpdGUocGZkZXYsIE1NVV9JTlRfQ0xFQVIs IH4wKTsKIAltbXVfd3JpdGUocGZkZXYsIE1NVV9JTlRfTUFTSywgfjApOwpAQCAtMTUyLDIxICsy MjksMjEgQEAgc3RhdGljIHNpemVfdCBnZXRfcGdzaXplKHU2NCBhZGRyLCBzaXplX3Qgc2l6ZSkK IAlyZXR1cm4gU1pfMk07CiB9CiAKLXN0YXRpYyBpbnQgbW11X21hcF9zZyhzdHJ1Y3QgcGFuZnJv c3RfZGV2aWNlICpwZmRldiwgdTY0IGlvdmEsCi0JCSAgICAgIGludCBwcm90LCBzdHJ1Y3Qgc2df dGFibGUgKnNndCkKK3N0YXRpYyBpbnQgbW11X21hcF9zZyhzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNl ICpwZmRldiwgc3RydWN0IHBhbmZyb3N0X21tdSAqbW11LAorCQkgICAgICB1NjQgaW92YSwgaW50 IHByb3QsIHN0cnVjdCBzZ190YWJsZSAqc2d0KQogewogCXVuc2lnbmVkIGludCBjb3VudDsKIAlz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbDsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IHBm ZGV2LT5tbXUtPnBndGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IG1tdS0+ cGd0Ymxfb3BzOwogCXU2NCBzdGFydF9pb3ZhID0gaW92YTsKIAotCW11dGV4X2xvY2soJnBmZGV2 LT5tbXUtPmxvY2spOworCW11dGV4X2xvY2soJm1tdS0+bG9jayk7CiAKIAlmb3JfZWFjaF9zZyhz Z3QtPnNnbCwgc2dsLCBzZ3QtPm5lbnRzLCBjb3VudCkgewogCQl1bnNpZ25lZCBsb25nIHBhZGRy ID0gc2dfZG1hX2FkZHJlc3Moc2dsKTsKIAkJc2l6ZV90IGxlbiA9IHNnX2RtYV9sZW4oc2dsKTsK IAotCQlkZXZfZGJnKHBmZGV2LT5kZXYsICJtYXA6IGlvdmE9JWxseCwgcGFkZHI9JWx4LCBsZW49 JXp4IiwgaW92YSwgcGFkZHIsIGxlbik7CisJCWRldl9kYmcocGZkZXYtPmRldiwgIm1hcDogYXM9 JWQsIGlvdmE9JWxseCwgcGFkZHI9JWx4LCBsZW49JXp4IiwgbW11LT5hcywgaW92YSwgcGFkZHIs IGxlbik7CiAKIAkJd2hpbGUgKGxlbikgewogCQkJc2l6ZV90IHBnc2l6ZSA9IGdldF9wZ3NpemUo aW92YSB8IHBhZGRyLCBsZW4pOwpAQCAtMTc4LDEwICsyNTUsMTAgQEAgc3RhdGljIGludCBtbXVf bWFwX3NnKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCB1NjQgaW92YSwKIAkJfQogCX0K IAotCW1tdV9od19kb19vcGVyYXRpb24ocGZkZXYsIDAsIHN0YXJ0X2lvdmEsIGlvdmEgLSBzdGFy dF9pb3ZhLAorCW1tdV9od19kb19vcGVyYXRpb24ocGZkZXYsIG1tdS0+YXMsIHN0YXJ0X2lvdmEs IGlvdmEgLSBzdGFydF9pb3ZhLAogCQkJICAgIEFTX0NPTU1BTkRfRkxVU0hfUFQpOwogCi0JbXV0 ZXhfdW5sb2NrKCZwZmRldi0+bW11LT5sb2NrKTsKKwltdXRleF91bmxvY2soJm1tdS0+bG9jayk7 CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIwOCw3ICsyODUsNyBAQCBpbnQgcGFuZnJvc3RfbW11X21h cChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pCiAJaWYgKHJldCA8IDApCiAJCXJldHVy biByZXQ7CiAKLQltbXVfbWFwX3NnKHBmZGV2LCBiby0+bm9kZS5zdGFydCA8PCBQQUdFX1NISUZU LCBwcm90LCBzZ3QpOworCW1tdV9tYXBfc2cocGZkZXYsIGJvLT5tbXUsIGJvLT5ub2RlLnN0YXJ0 IDw8IFBBR0VfU0hJRlQsIHByb3QsIHNndCk7CiAKIAlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5 KHBmZGV2LT5kZXYpOwogCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKHBmZGV2LT5kZXYpOwpA QCAtMjIxLDcgKzI5OCw3IEBAIHZvaWQgcGFuZnJvc3RfbW11X3VubWFwKHN0cnVjdCBwYW5mcm9z dF9nZW1fb2JqZWN0ICpibykKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZiby0+ YmFzZS5iYXNlOwogCXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2ID0gdG9fcGFuZnJvc3Rf ZGV2aWNlKG9iai0+ZGV2KTsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IHBmZGV2LT5t bXUtPnBndGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IGJvLT5tbXUtPnBn dGJsX29wczsKIAl1NjQgaW92YSA9IGJvLT5ub2RlLnN0YXJ0IDw8IFBBR0VfU0hJRlQ7CiAJc2l6 ZV90IGxlbiA9IGJvLT5ub2RlLnNpemUgPDwgUEFHRV9TSElGVDsKIAlzaXplX3QgdW5tYXBwZWRf bGVuID0gMDsKQEAgLTIzMCwxMyArMzA3LDEzIEBAIHZvaWQgcGFuZnJvc3RfbW11X3VubWFwKHN0 cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibykKIAlpZiAoV0FSTl9PTighYm8tPmlzX21hcHBl ZCkpCiAJCXJldHVybjsKIAotCWRldl9kYmcocGZkZXYtPmRldiwgInVubWFwOiBpb3ZhPSVsbHgs IGxlbj0lengiLCBpb3ZhLCBsZW4pOworCWRldl9kYmcocGZkZXYtPmRldiwgInVubWFwOiBhcz0l ZCwgaW92YT0lbGx4LCBsZW49JXp4IiwgYm8tPm1tdS0+YXMsIGlvdmEsIGxlbik7CiAKIAlyZXQg PSBwbV9ydW50aW1lX2dldF9zeW5jKHBmZGV2LT5kZXYpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1 cm47CiAKLQltdXRleF9sb2NrKCZwZmRldi0+bW11LT5sb2NrKTsKKwltdXRleF9sb2NrKCZiby0+ bW11LT5sb2NrKTsKIAogCXdoaWxlICh1bm1hcHBlZF9sZW4gPCBsZW4pIHsKIAkJc2l6ZV90IHVu bWFwcGVkX3BhZ2U7CkBAIC0yNTAsMTAgKzMyNywxMCBAQCB2b2lkIHBhbmZyb3N0X21tdV91bm1h cChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pCiAJCXVubWFwcGVkX2xlbiArPSBwZ3Np emU7CiAJfQogCi0JbW11X2h3X2RvX29wZXJhdGlvbihwZmRldiwgMCwgYm8tPm5vZGUuc3RhcnQg PDwgUEFHRV9TSElGVCwKKwltbXVfaHdfZG9fb3BlcmF0aW9uKHBmZGV2LCBiby0+bW11LT5hcywg Ym8tPm5vZGUuc3RhcnQgPDwgUEFHRV9TSElGVCwKIAkJCSAgICBiby0+bm9kZS5zaXplIDw8IFBB R0VfU0hJRlQsIEFTX0NPTU1BTkRfRkxVU0hfUFQpOwogCi0JbXV0ZXhfdW5sb2NrKCZwZmRldi0+ bW11LT5sb2NrKTsKKwltdXRleF91bmxvY2soJmJvLT5tbXUtPmxvY2spOwogCiAJcG1fcnVudGlt ZV9tYXJrX2xhc3RfYnVzeShwZmRldi0+ZGV2KTsKIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVu ZChwZmRldi0+ZGV2KTsKQEAgLTI2Miw5ICszMzksMTAgQEAgdm9pZCBwYW5mcm9zdF9tbXVfdW5t YXAoc3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJvKQogCiBzdGF0aWMgdm9pZCBtbXVfdGxi X2ludl9jb250ZXh0X3MxKHZvaWQgKmNvb2tpZSkKIHsKLQlzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNl ICpwZmRldiA9IGNvb2tpZTsKKwlzdHJ1Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICpwcml2ID0gY29v a2llOwogCi0JbW11X2h3X2RvX29wZXJhdGlvbihwZmRldiwgMCwgMCwgfjBVTCwgQVNfQ09NTUFO RF9GTFVTSF9NRU0pOworCS8qIE9ubHkgZmx1c2ggaWYgd2UgaGF2ZSBhbiBhc3NpZ25lZCBBUyAq LworCW1tdV9od19kb19vcGVyYXRpb24ocHJpdi0+cGZkZXYsIHByaXYtPm1tdS5hcywgMCwgfjBV TCwgQVNfQ09NTUFORF9GTFVTSF9NRU0pOwogfQogCiBzdGF0aWMgdm9pZCBtbXVfdGxiX2ludl9y YW5nZV9ub3N5bmModW5zaWduZWQgbG9uZyBpb3ZhLCBzaXplX3Qgc2l6ZSwKQEAgLTI4MywxNiAr MzYxLDY5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW9tbXVfZ2F0aGVyX29wcyBtbXVfdGxiX29w cyA9IHsKIAkudGxiX3N5bmMJPSBtbXVfdGxiX3N5bmNfY29udGV4dCwKIH07CiAKK2ludCBwYW5m cm9zdF9tbXVfcGd0YWJsZV9hbGxvYyhzdHJ1Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICpwcml2KQor eworCXN0cnVjdCBwYW5mcm9zdF9tbXUgKm1tdSA9ICZwcml2LT5tbXU7CisJc3RydWN0IHBhbmZy b3N0X2RldmljZSAqcGZkZXYgPSBwcml2LT5wZmRldjsKKworCW11dGV4X2luaXQoJm1tdS0+bG9j ayk7CisJSU5JVF9MSVNUX0hFQUQoJm1tdS0+bGlzdCk7CisJbW11LT5hcyA9IC0xOworCisJbW11 LT5wZ3RibF9jZmcgPSAoc3RydWN0IGlvX3BndGFibGVfY2ZnKSB7CisJCS5wZ3NpemVfYml0bWFw CT0gU1pfNEsgfCBTWl8yTSwKKwkJLmlhcwkJPSBGSUVMRF9HRVQoMHhmZiwgcGZkZXYtPmZlYXR1 cmVzLm1tdV9mZWF0dXJlcyksCisJCS5vYXMJCT0gRklFTERfR0VUKDB4ZmYwMCwgcGZkZXYtPmZl YXR1cmVzLm1tdV9mZWF0dXJlcyksCisJCS50bGIJCT0gJm1tdV90bGJfb3BzLAorCQkuaW9tbXVf ZGV2CT0gcGZkZXYtPmRldiwKKwl9OworCisJbW11LT5wZ3RibF9vcHMgPSBhbGxvY19pb19wZ3Rh YmxlX29wcyhBUk1fTUFMSV9MUEFFLCAmbW11LT5wZ3RibF9jZmcsCisJCQkJCSAgICAgIHByaXYp OworCWlmICghbW11LT5wZ3RibF9vcHMpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQgcGFuZnJvc3RfbW11X3BndGFibGVfZnJlZShzdHJ1Y3QgcGFuZnJvc3RfZmls ZV9wcml2ICpwcml2KQoreworCXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2ID0gcHJpdi0+ cGZkZXY7CisJc3RydWN0IHBhbmZyb3N0X21tdSAqbW11ID0gJnByaXYtPm1tdTsKKworCXNwaW5f bG9jaygmcGZkZXYtPmFzX2xvY2spOworCWlmIChtbXUtPmFzID49IDApIHsKKwkJY2xlYXJfYml0 KG1tdS0+YXMsICZwZmRldi0+YXNfYWxsb2NfbWFzayk7CisJCWNsZWFyX2JpdChtbXUtPmFzLCAm cGZkZXYtPmFzX2luX3VzZV9tYXNrKTsKKwkJbGlzdF9kZWwoJm1tdS0+bGlzdCk7CisJfQorCXNw aW5fdW5sb2NrKCZwZmRldi0+YXNfbG9jayk7CisKKwlmcmVlX2lvX3BndGFibGVfb3BzKG1tdS0+ cGd0Ymxfb3BzKTsKK30KKwogc3RhdGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqYWRkcl90b19kcm1f bW1fbm9kZShzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgaW50IGFzLCB1NjQgYWRkcikK IHsKLQlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7CisJc3RydWN0IGRybV9tbV9ub2RlICpub2Rl ID0gTlVMTDsKIAl1NjQgb2Zmc2V0ID0gYWRkciA+PiBQQUdFX1NISUZUOworCXN0cnVjdCBkcm1f ZmlsZSAqZmlsZTsKIAotCWRybV9tbV9mb3JfZWFjaF9ub2RlKG5vZGUsICZwZmRldi0+bW0pIHsK LQkJaWYgKG9mZnNldCA+PSBub2RlLT5zdGFydCAmJiBvZmZzZXQgPCAobm9kZS0+c3RhcnQgKyBu b2RlLT5zaXplKSkKLQkJCXJldHVybiBub2RlOworCW11dGV4X2xvY2soJnBmZGV2LT5kZGV2LT5m aWxlbGlzdF9tdXRleCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShmaWxlLCAmcGZkZXYtPmRkZXYt PmZpbGVsaXN0LCBsaGVhZCkgeworCQlzdHJ1Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICpwcml2ID0g ZmlsZS0+ZHJpdmVyX3ByaXY7CisKKwkJaWYgKGFzICE9IHByaXYtPm1tdS5hcykKKwkJCWNvbnRp bnVlOworCisJCWRybV9tbV9mb3JfZWFjaF9ub2RlKG5vZGUsICZwcml2LT5tbSkgeworCQkJaWYg KG9mZnNldCA+PSBub2RlLT5zdGFydCAmJiBvZmZzZXQgPCAobm9kZS0+c3RhcnQgKyBub2RlLT5z aXplKSkKKwkJCQlnb3RvIG91dDsKKwkJfQogCX0KLQlyZXR1cm4gTlVMTDsKKworb3V0OgorCW11 dGV4X3VubG9jaygmcGZkZXYtPmRkZXYtPmZpbGVsaXN0X211dGV4KTsKKwlyZXR1cm4gbm9kZTsK IH0KIAogI2RlZmluZSBOVU1fRkFVTFRfUEFHRVMgKFNaXzJNIC8gUEFHRV9TSVpFKQpAQCAtMzE3 LDYgKzQ0OCw4IEBAIGludCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZy b3N0X2RldmljZSAqcGZkZXYsIGludCBhcywgdTY0IGFkZHIpCiAJCQkgbm9kZS0+c3RhcnQgPDwg UEFHRV9TSElGVCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KKwlXQVJOX09OKGJvLT5tbXUtPmFz ID09IC0xKTsKKwogCS8qIEFzc3VtZSAyTUIgYWxpZ25tZW50IGFuZCBzaXplIG11bHRpcGxlICov CiAJYWRkciAmPSB+KCh1NjQpU1pfMk0gLSAxKTsKIAlwYWdlX29mZnNldCA9IGFkZHIgPj4gUEFH RV9TSElGVDsKQEAgLTM2NywxMSArNTAwLDExIEBAIGludCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0 X2FkZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIGludCBhcywgdTY0IGFkZHIpCiAJ CWdvdG8gZXJyX21hcDsKIAl9CiAKLQltbXVfbWFwX3NnKHBmZGV2LCBhZGRyLCBJT01NVV9XUklU RSB8IElPTU1VX1JFQUQgfCBJT01NVV9OT0VYRUMsIHNndCk7CisJbW11X21hcF9zZyhwZmRldiwg Ym8tPm1tdSwgYWRkciwgSU9NTVVfV1JJVEUgfCBJT01NVV9SRUFEIHwgSU9NTVVfTk9FWEVDLCBz Z3QpOwogCiAJYm8tPmlzX21hcHBlZCA9IHRydWU7CiAKLQlkZXZfZGJnKHBmZGV2LT5kZXYsICJt YXBwZWQgcGFnZSBmYXVsdCBAICVsbHgiLCBhZGRyKTsKKwlkZXZfZGJnKHBmZGV2LT5kZXYsICJt YXBwZWQgcGFnZSBmYXVsdCBAIEFTJWQgJWxseCIsIGJvLT5tbXUtPmFzLCBhZGRyKTsKIAogCXJl dHVybiAwOwogCkBAIC00ODAsMTUgKzYxMyw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwYW5mcm9z dF9tbXVfaXJxX2hhbmRsZXJfdGhyZWFkKGludCBpcnEsIHZvaWQgKmRhdGEpCiAKIGludCBwYW5m cm9zdF9tbXVfaW5pdChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldikKIHsKLQlzdHJ1Y3Qg aW9fcGd0YWJsZV9vcHMgKnBndGJsX29wczsKIAlpbnQgZXJyLCBpcnE7CiAKLQlwZmRldi0+bW11 ID0gZGV2bV9remFsbG9jKHBmZGV2LT5kZXYsIHNpemVvZigqcGZkZXYtPm1tdSksIEdGUF9LRVJO RUwpOwotCWlmICghcGZkZXYtPm1tdSkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQltdXRleF9pbml0 KCZwZmRldi0+bW11LT5sb2NrKTsKLQogCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKHRv X3BsYXRmb3JtX2RldmljZShwZmRldi0+ZGV2KSwgIm1tdSIpOwogCWlmIChpcnEgPD0gMCkKIAkJ cmV0dXJuIC1FTk9ERVY7CkBAIC01MDEsMjIgKzYyNyw2IEBAIGludCBwYW5mcm9zdF9tbXVfaW5p dChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldikKIAkJZGV2X2VycihwZmRldi0+ZGV2LCAi ZmFpbGVkIHRvIHJlcXVlc3QgbW11IGlycSIpOwogCQlyZXR1cm4gZXJyOwogCX0KLQlwZmRldi0+ bW11LT5wZ3RibF9jZmcgPSAoc3RydWN0IGlvX3BndGFibGVfY2ZnKSB7Ci0JCS5wZ3NpemVfYml0 bWFwCT0gU1pfNEsgfCBTWl8yTSwKLQkJLmlhcwkJPSBGSUVMRF9HRVQoMHhmZiwgcGZkZXYtPmZl YXR1cmVzLm1tdV9mZWF0dXJlcyksCi0JCS5vYXMJCT0gRklFTERfR0VUKDB4ZmYwMCwgcGZkZXYt PmZlYXR1cmVzLm1tdV9mZWF0dXJlcyksCi0JCS50bGIJCT0gJm1tdV90bGJfb3BzLAotCQkuaW9t bXVfZGV2CT0gcGZkZXYtPmRldiwKLQl9OwotCi0JcGd0Ymxfb3BzID0gYWxsb2NfaW9fcGd0YWJs ZV9vcHMoQVJNX01BTElfTFBBRSwgJnBmZGV2LT5tbXUtPnBndGJsX2NmZywKLQkJCQkJIHBmZGV2 KTsKLQlpZiAoIXBndGJsX29wcykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlwZmRldi0+bW11LT5w Z3RibF9vcHMgPSBwZ3RibF9vcHM7Ci0KLQlwYW5mcm9zdF9tbXVfZW5hYmxlKHBmZGV2LCAwKTsK IAogCXJldHVybiAwOwogfQpAQCAtNTI1LDYgKzYzNSw0IEBAIHZvaWQgcGFuZnJvc3RfbW11X2Zp bmkoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCiB7CiAJbW11X3dyaXRlKHBmZGV2LCBN TVVfSU5UX01BU0ssIDApOwogCW1tdV9kaXNhYmxlKHBmZGV2LCAwKTsKLQotCWZyZWVfaW9fcGd0 YWJsZV9vcHMocGZkZXYtPm1tdS0+cGd0Ymxfb3BzKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuaCBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9z dC9wYW5mcm9zdF9tbXUuaAppbmRleCBkNWY5YjI0NTM3ZGIuLjdjNWI2Nzc1YWUyMyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuaApAQCAtNSw2ICs1LDggQEAKICNkZWZp bmUgX19QQU5GUk9TVF9NTVVfSF9fCiAKIHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0Oworc3Ry dWN0IHBhbmZyb3N0X2ZpbGVfcHJpdjsKK3N0cnVjdCBwYW5mcm9zdF9tbXU7CiAKIGludCBwYW5m cm9zdF9tbXVfbWFwKHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibyk7CiB2b2lkIHBhbmZy b3N0X21tdV91bm1hcChzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pOwpAQCAtMTMsNCAr MTUsMTAgQEAgaW50IHBhbmZyb3N0X21tdV9pbml0KHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBm ZGV2KTsKIHZvaWQgcGFuZnJvc3RfbW11X2Zpbmkoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZk ZXYpOwogdm9pZCBwYW5mcm9zdF9tbXVfcmVzZXQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZk ZXYpOwogCit1MzIgcGFuZnJvc3RfbW11X2FzX2dldChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpw ZmRldiwgc3RydWN0IHBhbmZyb3N0X21tdSAqbW11KTsKK3ZvaWQgcGFuZnJvc3RfbW11X2FzX3B1 dChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgc3RydWN0IHBhbmZyb3N0X21tdSAqbW11 KTsKKworaW50IHBhbmZyb3N0X21tdV9wZ3RhYmxlX2FsbG9jKHN0cnVjdCBwYW5mcm9zdF9maWxl X3ByaXYgKnByaXYpOwordm9pZCBwYW5mcm9zdF9tbXVfcGd0YWJsZV9mcmVlKHN0cnVjdCBwYW5m cm9zdF9maWxlX3ByaXYgKnByaXYpOworCiAjZW5kaWYKLS0gCjIuMjAuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs