From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: =?UTF-8?q?=5BPATCH=5D=20Mapping=20snooped=20user=20pages=20into=20the=20GTT?= Date: Fri, 7 Jan 2011 16:07:36 +0000 Message-ID: <1294416456-5410-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SSd2ZSBiZWVuIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBpbXByb3ZlIHVwbG9hZC9kb3dubG9hZCBw ZXJmb3JtYW5jZSBvbiBvdXIKVU1BIGdmeC4gT25lIHVuZGVyLXVzZWQgYXNwZWN0IG9mIHRoZSBJ R1AgaXMgaXRzIGFiaWxpdHkgdG8gYmxpdCBiZXR3ZWVuCnNub29wZWQtYW5kLXVuc25vb3BlZCBt ZW1vcnkgaS5lLiBmcm9tIG5vcm1hbCByYW0gaW50byB0aGUgR1RULiBPbmx5IHRoZQpCTFQgaGFz IHRoaXMgYWJpbGl0eSwgYWxtb3N0IGFsbCBvdGhlciBmdW5jdGlvbnMgb2YgdGhlIEdQVSBtb3N0 IGJlIGZyb20KdW5zbm9vcGVkIG1lbW9yeS4gU05CIGludHJvZHVjZXMgaXRzIG93biBjYWNoZSBo YW5kbGluZyB0aGF0IHdlIG5lZWQgdG8KZXhwbG9pdCBmdXJ0aGVyLCBob3dldmVyIHRoZSBCTFQg cmVtYWlucyBhbmQgaXMgb3JkZXJzIG9mIG1hZ25pdHVkZSBmYXN0ZXIKZm9yIHJlYWQgYmFjayB0 aGFuIGFuIFVDIHJlYWQgYnkgdGhlIENQVS4uLiAKCkl0IGlzIHN1cnByaXNpbmdseSBzaW1wbGUg dG8gcmVwbGFjZSB0aGUgc2htZW1fZ2V0cGFnZSB3aXRoCmdldF91c2VyX3BhZ2VzIGFuZCBpbnNl cnQgYSB1c2VyLWJvIGludG8gdGhlIEdUVC4gVGhlIGRvd25zaWRlIGlzIHRoYXQKdGhpcyBwaW5z IHVzZXItbWVtb3J5IHVudGlsIGl0IGJlY29tZXMgaW5hY3RpdmUgYW5kIHNvIGNhcmUgbmVlZHMg dG8gYmUKdGFrZW4gYnkgdGhlIGNsaWVudCB0byBzeW5jaHJvbml6ZSBhcHByb3ByaWF0ZWx5LiBB bm90aGVyIGlzc3VlIHRoYXQgSSd2ZQpub3QgZGVhbHQgd2l0aCBzdWNjZXNzZnVsbHkgaXMgdHJh Y2tpbmcgbWVtb3J5IHByb3RlY3Rpb24gb24gdXNlciBwYWdlcy4KRGlmZmVyZW50IHByb2Nlc3Nl cyB3aWxsIG5lZWQgZGlmZmVyZW50IHByb3RlY3Rpb24gb24gcG90ZW50aWFsbHkgdGhlIHNhbWUK UFRFcy4gKEkndmUgYWxzbyBsb29rZWQgYXQgaW1wbGVtZW50aW5nIDJEIHB3cml0ZS9wcmVhZCB1 c2luZyB0aGUgQkxUIGJ1dApJJ20gZGlzc2F0aXNmaWVkIHdpdGggdGhlIHBlci1yZXF1ZXN0IG92 ZXJoZWFkOyB0aG91Z2ggdGhhdCB0b28gaXMgc3RpbGwKbWFueSB0aW1lcyBmYXN0ZXIgZm9yIHBy ZWFkLikKCkknbSBzbGlnaHRseSBjb25jZXJuZWQgYWJvdXQgcGlubmluZyB1c2VyLW1lbW9yeSBm b3IgdW5kZXRlcm1pbmFibGUKbGVuZ3RocyBvZiB0aW1lLiBIb3dldmVyLCB0aGlzIGlzIG5vIHdv cnNlIHRoYW4gYW55IG90aGVyIGJvLCBhbmQgdGhlCnBhZ2VzIHdpbGwgYmUgcmVhcGVkIHVuZGVy IG1lbW9yeSBwcmVzc3VyZSBieSBldmljdGlvbi4KCkFueSBvdGhlciBjb21tZW50cyBvciBzdWdn ZXN0aW9ucz8KLUNocmlzCgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAg ICAgIHwgICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgfCAg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgIHwgICAgMyArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgfCAgIDEyICsrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgfCAgIDkzICsrKysrKysrKysrKysrLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICB8ICAgIDQgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2lvLmMgICAgIHwgICAxMCArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgfCAgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3ZtYXAuYyAgIHwgIDE0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogaW5jbHVkZS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysK IDEwIGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV92bWFwLmMKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW0uYwppbmRleCBlYTFjNGIwLi5hZGI4ODZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKQEAgLTQyNSw3ICs0 MjUsOCBAQCBkcm1fZ2VtX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXZhdGUpCiB2b2lkCiBkcm1fZ2VtX29iamVjdF9yZWxlYXNlKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKQogewotCWZwdXQob2JqLT5maWxwKTsKKwlpZiAob2JqLT5m aWxwKQorCQlmcHV0KG9iai0+ZmlscCk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0 X3JlbGVhc2UpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDA3YTM1MWYuLjRiOTAxYzUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xMyw2ICsxMyw3IEBAIGk5MTUteSA6PSBpOTE1X2Rydi5v IGk5MTVfZG1hLm8gaTkxNV9pcnEubyBpOTE1X21lbS5vIFwKIAkgIGk5MTVfZ2VtX2d0dC5vIFwK IAkgIGk5MTVfZ2VtX2lvLm8gXAogCSAgaTkxNV9nZW1fdGlsaW5nLm8gXAorCSAgaTkxNV9nZW1f dm1hcC5vIFwKIAkgIGk5MTVfdHJhY2VfcG9pbnRzLm8gXAogCSAgaW50ZWxfZGlzcGxheS5vIFwK IAkgIGludGVsX2NydC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IDhkZWY2MTQuLjUy ZWZhMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRp YyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQl2YWx1ZSA9IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQ7CiAJCWJyZWFrOwogCWNhc2UgSTkx NV9QQVJBTV9IQVNfMkRfSU86Ci0JCS8qIGRlcGVuZHMgb24gR0VNICovCisJY2FzZSBJOTE1X1BB UkFNX0hBU19WTUFQOgogCQl2YWx1ZSA9IGRldl9wcml2LT5oYXNfZ2VtOwogCQlicmVhazsKIAlk ZWZhdWx0OgpAQCAtMjI1Niw2ICsyMjU2LDcgQEAgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVf aW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9PVkVSTEFZX0FUVFJTLCBpbnRl bF9vdmVybGF5X2F0dHJzLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tF RCksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fUFJFQURfMkQsIGk5MTVfZ2VtX3ByZWFk XzJkX2lvY3RsLCBEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1BX UklURV8yRCwgaTkxNV9nZW1fcHdyaXRlXzJkX2lvY3RsLCBEUk1fVU5MT0NLRUQpLAorCURSTV9J T0NUTF9ERUZfRFJWKEk5MTVfR0VNX1ZNQVAsIGk5MTVfZ2VtX3ZtYXBfaW9jdGwsIERSTV9VTkxP Q0tFRCksCiB9OwogCiBpbnQgaTkxNV9tYXhfaW9jdGwgPSBEUk1fQVJSQVlfU0laRShpOTE1X2lv Y3Rscyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA2NDAzM2NjLi42ODk5YmRlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTY5NSw2ICs2OTUsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGludGVsX2ZiZGV2ICpmYmRldjsKIH0gZHJtX2k5 MTVfcHJpdmF0ZV90OwogCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgeworCWludCAo KmdldF9wYWdlcykoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKiwgZ2ZwX3QsIHUzMiAqb2Zm c2V0KTsKKwl2b2lkICgqcHV0X3BhZ2VzKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqKTsK K307CisKIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgYmFzZTsKIApAQCAtNzgyLDYgKzc4Nyw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 IHsKIAl1bnNpZ25lZCBpbnQgZmVuY2VkX2dwdV9hY2Nlc3M6MTsKIAogCXN0cnVjdCBwYWdlICoq cGFnZXM7CisJaW50IG51bV9wYWdlczsKIAogCS8qKgogCSAqIERNQVIgc3VwcG9ydApAQCAtMTA5 Nyw2ICsxMTAzLDcgQEAgdm9pZCBpOTE1X2dlbV9mbHVzaF9yaW5nKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJCQkgdWludDMyX3QgZmx1c2hfZG9tYWlucyk7CiBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkJCQkgIHNpemVfdCBzaXplKTsKK3ZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0 X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJCSAgICAgdWludDMyX3Qg YWxpZ25tZW50LApAQCAtMTExMyw2ICsxMTIwLDExIEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X21v dmVfdG9fYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJICAgIHN0 cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZywKIAkJCQkgICAgdTMyIHNlcW5vKTsKIAorLyog aTkxNV9nZW1fdm1hcC5jICovCitpbnQKK2k5MTVfZ2VtX3ZtYXBfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CisK IC8qKgogICogUmV0dXJucyB0cnVlIGlmIHNlcTEgaXMgbGF0ZXIgdGhhbiBzZXEyLgogICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA0MzlhZDc4Li5kNTI5ZGU0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKQEAgLTUxMyw2ICs1MTMsMTIgQEAgaTkxNV9nZW1fcHJlYWRfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZ290byB1bmxvY2s7CiAJfQogCisJ aWYgKG9iai0+YWdwX3R5cGUgPT0gQUdQX1VTRVJfQ0FDSEVEX01FTU9SWSkgeworCQkvKiBYWFgg d29ydGggaGFuZGxpbmc/ICovCisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKwog CS8qIEJvdW5kcyBjaGVjayBzb3VyY2UuICAqLwogCWlmIChhcmdzLT5vZmZzZXQgPiBvYmotPmJh c2Uuc2l6ZSB8fAogCSAgICBhcmdzLT5zaXplID4gb2JqLT5iYXNlLnNpemUgLSBhcmdzLT5vZmZz ZXQpIHsKQEAgLTk1NCw2ICs5NjAsMTIgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWdvdG8gdW5sb2NrOwogCX0KIAorCWlmIChv YmotPmFncF90eXBlID09IEFHUF9VU0VSX0NBQ0hFRF9NRU1PUlkpIHsKKwkJLyogWFhYIHdvcnRo IGhhbmRsaW5nPyAqLworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKIAkvKiBC b3VuZHMgY2hlY2sgZGVzdGluYXRpb24uICovCiAJaWYgKGFyZ3MtPm9mZnNldCA+IG9iai0+YmFz ZS5zaXplIHx8CiAJICAgIGFyZ3MtPnNpemUgPiBvYmotPmJhc2Uuc2l6ZSAtIGFyZ3MtPm9mZnNl dCkgewpAQCAtMTEyNSw2ICsxMTM3LDExIEBAIGk5MTVfZ2VtX21tYXBfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAob2JqID09IE5VTEwpCiAJCXJldHVybiAt RU5PRU5UOwogCisJaWYgKHRvX2ludGVsX2JvKG9iaiktPmFncF90eXBlID09IEFHUF9VU0VSX0NB Q0hFRF9NRU1PUlkpIHsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2Jq KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCiAJaWYgKG9iai0+c2l6ZSA+IGRldl9wcml2LT5t bS5ndHRfbWFwcGFibGVfZW5kKSB7CiAJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9j a2VkKG9iaik7CiAJCXJldHVybiAtRTJCSUc7CkBAIC0xNDg0LDI1ICsxNTAxLDI2IEBAIHVubG9j azoKIAogc3RhdGljIGludAogaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCSAgICAgIGdmcF90IGdmcG1hc2spCisJCQkgICAg ICBnZnBfdCBnZnBtYXNrLAorCQkJICAgICAgdTMyICpvZmZzZXQpCiB7Ci0JaW50IHBhZ2VfY291 bnQsIGk7CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAJc3RydWN0IGlub2RlICpp bm9kZTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwlpbnQgaTsKIAogCS8qIEdldCB0aGUgbGlzdCBv ZiBwYWdlcyBvdXQgb2Ygb3VyIHN0cnVjdCBmaWxlLiAgVGhleSdsbCBiZSBwaW5uZWQKIAkgKiBh dCB0aGlzIHBvaW50IHVudGlsIHdlIHJlbGVhc2UgdGhlbS4KIAkgKi8KLQlwYWdlX2NvdW50ID0g b2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7CisJb2JqLT5udW1fcGFnZXMgPSBvYmotPmJhc2Uu c2l6ZSAvIFBBR0VfU0laRTsKIAlCVUdfT04ob2JqLT5wYWdlcyAhPSBOVUxMKTsKLQlvYmotPnBh Z2VzID0gZHJtX21hbGxvY19hYihwYWdlX2NvdW50LCBzaXplb2Yoc3RydWN0IHBhZ2UgKikpOwor CW9iai0+cGFnZXMgPSBkcm1fbWFsbG9jX2FiKG9iai0+bnVtX3BhZ2VzLCBzaXplb2Yoc3RydWN0 IHBhZ2UgKikpOwogCWlmIChvYmotPnBhZ2VzID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwog CiAJaW5vZGUgPSBvYmotPmJhc2UuZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsKIAltYXBw aW5nID0gaW5vZGUtPmlfbWFwcGluZzsKLQlmb3IgKGkgPSAwOyBpIDwgcGFnZV9jb3VudDsgaSsr KSB7CisJZm9yIChpID0gMDsgaSA8IG9iai0+bnVtX3BhZ2VzOyBpKyspIHsKIAkJcGFnZSA9IHJl YWRfY2FjaGVfcGFnZV9nZnAobWFwcGluZywgaSwKIAkJCQkJICAgR0ZQX0hJR0hVU0VSIHwKIAkJ CQkJICAgX19HRlBfQ09MRCB8CkBAIC0xNTE3LDYgKzE1MzUsNyBAQCBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWlmIChvYmot PnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkUpCiAJCWk5MTVfZ2VtX29iamVjdF9kb19i aXRfMTdfc3dpenpsZShvYmopOwogCisJKm9mZnNldCA9IDA7CiAJcmV0dXJuIDA7CiAKIGVycl9w YWdlczoKQEAgLTE1MzEsNyArMTU1MCw2IEBAIGVycl9wYWdlczoKIHN0YXRpYyB2b2lkCiBpOTE1 X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogewotCWludCBwYWdlX2NvdW50ID0gb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7CiAJaW50 IGk7CiAKIAlCVUdfT04ob2JqLT5tYWR2ID09IF9fSTkxNV9NQURWX1BVUkdFRCk7CkBAIC0xNTQy LDcgKzE1NjAsNyBAQCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQogCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVE KQogCQlvYmotPmRpcnR5ID0gMDsKIAotCWZvciAoaSA9IDA7IGkgPCBwYWdlX2NvdW50OyBpKysp IHsKKwlmb3IgKGkgPSAwOyBpIDwgb2JqLT5udW1fcGFnZXM7IGkrKykgewogCQlpZiAob2JqLT5k aXJ0eSkKIAkJCXNldF9wYWdlX2RpcnR5KG9iai0+cGFnZXNbaV0pOwogCkBAIC0xNjQzLDYgKzE2 NjEsOSBAQCBpOTE1X2dlbV9vYmplY3RfdHJ1bmNhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlOwogCisJaWYgKG9iai0+YmFzZS5maWxw ID09IE5VTEwpCisJCXJldHVybjsKKwogCS8qIE91ciBnb2FsIGhlcmUgaXMgdG8gcmV0dXJuIGFz IG11Y2ggb2YgdGhlIG1lbW9yeSBhcwogCSAqIGlzIHBvc3NpYmxlIGJhY2sgdG8gdGhlIHN5c3Rl bSBhcyB3ZSBhcmUgY2FsbGVkIGZyb20gT09NLgogCSAqIFRvIGRvIHRoaXMgd2UgbXVzdCBpbnN0 cnVjdCB0aGUgc2htZnMgdG8gZHJvcCBhbGwgb2YgaXRzCkBAIC0yMDkwLDYgKzIxMTEsNyBAQCBp OTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIGludAogaTkxNV9nZW1fb2JqZWN0X3VuYmluZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogeworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyAqb3Bz ID0gb2JqLT5iYXNlLmRyaXZlcl9wcml2YXRlOwogCWludCByZXQgPSAwOwogCiAJaWYgKG9iai0+ Z3R0X3NwYWNlID09IE5VTEwpCkBAIC0yMTI3LDcgKzIxNDksNyBAQCBpOTE1X2dlbV9vYmplY3Rf dW5iaW5kKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCXJldHVybiByZXQ7CiAK IAlpOTE1X2dlbV9ndHRfdW5iaW5kX29iamVjdChvYmopOwotCWk5MTVfZ2VtX29iamVjdF9wdXRf cGFnZXNfZ3R0KG9iaik7CisJb3BzLT5wdXRfcGFnZXMob2JqKTsKIAogCWxpc3RfZGVsX2luaXQo Jm9iai0+Z3R0X2xpc3QpOwogCWxpc3RfZGVsX2luaXQoJm9iai0+bW1fbGlzdCk7CkBAIC0yNjY3 LDExICsyNjg5LDEzIEBAIGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX2d0dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICAgIHVuc2lnbmVkIGFsaWdubWVudCwKIAkJCSAgICBi b29sIG1hcF9hbmRfZmVuY2VhYmxlKQogeworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0X29wcyAqb3BzID0gb2JqLT5iYXNlLmRyaXZlcl9wcml2YXRlOwogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fbW1fbm9kZSAqZnJlZV9zcGFjZTsKIAln ZnBfdCBnZnBtYXNrID0gX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05PV0FSTjsKIAl1MzIgc2l6ZSwg ZmVuY2Vfc2l6ZSwgZmVuY2VfYWxpZ25tZW50LCB1bmZlbmNlZF9hbGlnbm1lbnQ7CisJdTMyIG9m ZnNldDsKIAlib29sIG1hcHBhYmxlLCBmZW5jZWFibGU7CiAJaW50IHJldDsKIApAQCAtMjczNyw3 ICsyNzYxLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fZ3R0KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCiAJCWdvdG8gc2VhcmNoX2ZyZWU7CiAJfQogCi0JcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlc19ndHQob2JqLCBnZnBtYXNrKTsKKwlyZXQgPSBvcHMtPmdldF9w YWdlcyhvYmosIGdmcG1hc2ssICZvZmZzZXQpOwogCWlmIChyZXQpIHsKIAkJZHJtX21tX3B1dF9i bG9jayhvYmotPmd0dF9zcGFjZSk7CiAJCW9iai0+Z3R0X3NwYWNlID0gTlVMTDsKQEAgLTI3NjUs NyArMjc4OSw3IEBAIGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX2d0dChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAogCiAJcmV0ID0gaTkxNV9nZW1fZ3R0X2JpbmRfb2JqZWN0KG9iaik7 CiAJaWYgKHJldCkgewotCQlpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0dChvYmopOworCQlv cHMtPnB1dF9wYWdlcyhvYmopOwogCQlkcm1fbW1fcHV0X2Jsb2NrKG9iai0+Z3R0X3NwYWNlKTsK IAkJb2JqLT5ndHRfc3BhY2UgPSBOVUxMOwogCkBAIC0yNzg3LDExICsyODExLDExIEBAIGk5MTVf Z2VtX29iamVjdF9iaW5kX3RvX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAog CUJVR19PTihvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwog CUJVR19PTihvYmotPmJhc2Uud3JpdGVfZG9tYWluICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwog Ci0Jb2JqLT5ndHRfb2Zmc2V0ID0gb2JqLT5ndHRfc3BhY2UtPnN0YXJ0OworCW9iai0+Z3R0X29m ZnNldCA9IG9iai0+Z3R0X3NwYWNlLT5zdGFydCArIG9mZnNldDsKIAogCWZlbmNlYWJsZSA9CiAJ CW9iai0+Z3R0X3NwYWNlLT5zaXplID09IGZlbmNlX3NpemUgJiYKLQkJKG9iai0+Z3R0X3NwYWNl LT5zdGFydCAmIChmZW5jZV9hbGlnbm1lbnQgLTEpKSA9PSAwOworCQkob2JqLT5ndHRfb2Zmc2V0 ICYgKGZlbmNlX2FsaWdubWVudCAtMSkpID09IDA7CiAKIAltYXBwYWJsZSA9CiAJCW9iai0+Z3R0 X29mZnNldCArIG9iai0+YmFzZS5zaXplIDw9IGRldl9wcml2LT5tbS5ndHRfbWFwcGFibGVfZW5k OwpAQCAtMjgwOSw3ICsyODMzLDcgQEAgaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkgKiB0byBHUFUsIGFuZCB3ZSBjYW4gaWdub3JlIHRo ZSBjYWNoZSBmbHVzaCBiZWNhdXNlIGl0J2xsIGhhcHBlbgogCSAqIGFnYWluIGF0IGJpbmQgdGlt ZS4KIAkgKi8KLQlpZiAob2JqLT5wYWdlcyA9PSBOVUxMKQorCWlmIChvYmotPnBhZ2VzID09IE5V TEwgfHwgb2JqLT5hZ3BfdHlwZSA9PSBBR1BfVVNFUl9DQUNIRURfTUVNT1JZKQogCQlyZXR1cm47 CiAKIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfY2xmbHVzaChvYmopOwpAQCAtMzQ2NCw2ICszNDg4 LDMxIEBAIHVubG9jazoKIAlyZXR1cm4gcmV0OwogfQogCit2b2lkCitpOTE1X2dlbV9vYmplY3Rf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCW9iai0+YmFzZS53cml0 ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fQ1BVOworCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMg PSBJOTE1X0dFTV9ET01BSU5fQ1BVOworCisJb2JqLT5hZ3BfdHlwZSA9IEFHUF9VU0VSX01FTU9S WTsKKworCW9iai0+ZmVuY2VfcmVnID0gSTkxNV9GRU5DRV9SRUdfTk9ORTsKKwlJTklUX0xJU1Rf SEVBRCgmb2JqLT5tbV9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmb2JqLT5ndHRfbGlzdCk7CisJ SU5JVF9MSVNUX0hFQUQoJm9iai0+cmluZ19saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmb2JqLT5l eGVjX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZvYmotPmdwdV93cml0ZV9saXN0KTsKKwlvYmot Pm1hZHYgPSBJOTE1X01BRFZfV0lMTE5FRUQ7CisKKwkvKiBBdm9pZCBhbiB1bm5lY2Vzc2FyeSBj YWxsIHRvIHVuYmluZCBvbiB0aGUgZmlyc3QgYmluZC4gKi8KKwlvYmotPm1hcF9hbmRfZmVuY2Vh YmxlID0gdHJ1ZTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 X29wcyBpOTE1X2dlbV9vYmplY3Rfb3BzID0geworCS5nZXRfcGFnZXMgPSBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzX2d0dCwKKwkucHV0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl c19ndHQsCit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxsb2Nf b2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCQkgIHNpemVfdCBzaXplKQogewpA QCAtMzQ3OSwyMiArMzUyOCwxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9n ZW1fYWxsb2Nfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiBOVUxMOwog CX0KIAotCWk5MTVfZ2VtX2luZm9fYWRkX29iaihkZXZfcHJpdiwgc2l6ZSk7CisJb2JqLT5iYXNl LmRyaXZlcl9wcml2YXRlID0gKHZvaWQgKikmaTkxNV9nZW1fb2JqZWN0X29wczsKIAotCW9iai0+ YmFzZS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fQ1BVOwotCW9iai0+YmFzZS5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVOwotCi0Jb2JqLT5hZ3BfdHlwZSA9IEFHUF9V U0VSX01FTU9SWTsKLQlvYmotPmJhc2UuZHJpdmVyX3ByaXZhdGUgPSBOVUxMOwotCW9iai0+ZmVu Y2VfcmVnID0gSTkxNV9GRU5DRV9SRUdfTk9ORTsKLQlJTklUX0xJU1RfSEVBRCgmb2JqLT5tbV9s aXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmb2JqLT5ndHRfbGlzdCk7Ci0JSU5JVF9MSVNUX0hFQUQo Jm9iai0+cmluZ19saXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmb2JqLT5leGVjX2xpc3QpOwotCUlO SVRfTElTVF9IRUFEKCZvYmotPmdwdV93cml0ZV9saXN0KTsKLQlvYmotPm1hZHYgPSBJOTE1X01B RFZfV0lMTE5FRUQ7Ci0JLyogQXZvaWQgYW4gdW5uZWNlc3NhcnkgY2FsbCB0byB1bmJpbmQgb24g dGhlIGZpcnN0IGJpbmQuICovCi0Jb2JqLT5tYXBfYW5kX2ZlbmNlYWJsZSA9IHRydWU7CisJaTkx NV9nZW1fb2JqZWN0X2luaXQob2JqKTsKKwlpOTE1X2dlbV9pbmZvX2FkZF9vYmooZGV2X3ByaXYs IHNpemUpOwogCiAJcmV0dXJuIG9iajsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK aW5kZXggOTIxNjFiYi4uNDI5ZjUyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK QEAgLTY0LDcgKzY0LDcgQEAgaW50IGk5MTVfZ2VtX2d0dF9iaW5kX29iamVjdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJaWYgKGRldl9wcml2LT5tbS5ndHQtPm5lZWRzX2Rt YXIpIHsKIAkJcmV0ID0gaW50ZWxfZ3R0X21hcF9tZW1vcnkob2JqLT5wYWdlcywKLQkJCQkJICAg b2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVCwKKwkJCQkJICAgb2JqLT5udW1fcGFnZXMsCiAJ CQkJCSAgICZvYmotPnNnX2xpc3QsCiAJCQkJCSAgICZvYmotPm51bV9zZyk7CiAJCWlmIChyZXQg IT0gMCkKQEAgLTc2LDcgKzc2LDcgQEAgaW50IGk5MTVfZ2VtX2d0dF9iaW5kX29iamVjdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJCQkgICAgb2JqLT5hZ3BfdHlwZSk7CiAJ fSBlbHNlCiAJCWludGVsX2d0dF9pbnNlcnRfcGFnZXMob2JqLT5ndHRfc3BhY2UtPnN0YXJ0ID4+ IFBBR0VfU0hJRlQsCi0JCQkJICAgICAgIG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQsCisJ CQkJICAgICAgIG9iai0+bnVtX3BhZ2VzLAogCQkJCSAgICAgICBvYmotPnBhZ2VzLAogCQkJCSAg ICAgICBvYmotPmFncF90eXBlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1faW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2lvLmMKaW5kZXgg NmMxZGVmMS4uZTgzYjhlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1faW8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pby5jCkBAIC01NDks NiArNTQ5LDExIEBAIGk5MTVfZ2VtX3B3cml0ZV8yZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQlnb3RvIHVubG9jazsKIAl9CiAKKwlpZiAob2JqLT5hZ3BfdHlwZSA9PSBBR1BfVVNF Ul9DQUNIRURfTUVNT1JZKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gdW5yZWY7CisJfQor CiAJLyogQm91bmRzIGNoZWNrIGRlc3RpbmF0aW9uLiAqLwogCW9mZnNldCA9IGFyZ3MtPmRzdF94 ICogYXJncy0+Y3BwICsgYXJncy0+ZHN0X3kgKiBhcmdzLT5kc3Rfc3RyaWRlOwogCXNpemUgPSBh cmdzLT5kc3Rfc3RyaWRlICogKGFyZ3MtPmhlaWdodC0xKSArIGFyZ3MtPndpZHRoICogYXJncy0+ Y3BwOwpAQCAtOTYxLDYgKzk2NiwxMSBAQCBpOTE1X2dlbV9wcmVhZF8yZF9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQlnb3RvIHVubG9jazsKIAl9CiAKKwlpZiAob2JqLT5hZ3BfdHlw ZSA9PSBBR1BfVVNFUl9DQUNIRURfTUVNT1JZKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8g dW5yZWY7CisJfQorCiAJLyogQm91bmRzIGNoZWNrIHNvdXJjZS4gKi8KIAlvZmZzZXQgPSBhcmdz LT5zcmNfeCAqIGFyZ3MtPmNwcCArIGFyZ3MtPnNyY195ICogYXJncy0+c3JjX3N0cmlkZTsKIAlz aXplID0gYXJncy0+c3JjX3N0cmlkZSAqIChhcmdzLT5oZWlnaHQtMSkgKyBhcmdzLT53aWR0aCAq IGFyZ3MtPmNwcDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Rp bGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKaW5kZXggMjJh MzJiOS4uM2E5Yzg4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKQEAg LTI5NCw2ICsyOTQsMTEgQEAgaTkxNV9nZW1fc2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCWlmIChvYmogPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAK KwlpZiAob2JqLT5hZ3BfdHlwZSA9PSBBR1BfVVNFUl9DQUNIRURfTUVNT1JZKSB7CisJCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZvYmotPmJhc2UpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKIAlpZiAoIWk5MTVfdGlsaW5nX29rKGRldiwKIAkJCSAgICBhcmdzLT5zdHJp ZGUsIG9iai0+YmFzZS5zaXplLCBhcmdzLT50aWxpbmdfbW9kZSkpIHsKIAkJZHJtX2dlbV9vYmpl Y3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoJm9iai0+YmFzZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV92bWFwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV92bWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgwYTUxNAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3ZtYXAuYwpA QCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDEwIEludGVsIENvcnBvcmF0 aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisg KiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq LworCisjaW5jbHVkZSAiZHJtUC5oIgorI2luY2x1ZGUgImRybS5oIgorI2luY2x1ZGUgImk5MTVf ZHJtLmgiCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisjaW5jbHVkZSA8bGludXgvc3dhcC5oPgorCitzdHJ1Y3Qg aTkxNV9nZW1fdm1hcF9vYmplY3QgeworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IGdlbTsK Kwl1aW50cHRyX3QgdXNlcl9wdHI7CisJaW50IHJlYWRfb25seTsKK307CisKK3N0YXRpYyBzdHJ1 Y3QgaTkxNV9nZW1fdm1hcF9vYmplY3QgKnRvX3ZtYXBfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihvYmosIHN0cnVjdCBpOTE1 X2dlbV92bWFwX29iamVjdCwgZ2VtKTsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fdm1hcF9n ZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgZ2ZwX3QgZ2ZwLCB1MzIg Km9mZnNldCkKK3sKKwlzdHJ1Y3QgaTkxNV9nZW1fdm1hcF9vYmplY3QgKnZtYXAgPSB0b192bWFw X29iamVjdChvYmopOworCWxvZmZfdCBmaXJzdF9kYXRhX3BhZ2UsIGxhc3RfZGF0YV9wYWdlOwor CWludCBwaW5uZWRfcGFnZXMsIGk7CisKKwlpZiAoIWFjY2Vzc19vayh2bWFwLT5yZWFkX29ubHkg PyBWRVJJRllfUkVBRCA6IFZFUklGWV9XUklURSwKKwkJICAgICAgIChjaGFyIF9fdXNlciAqKXZt YXAtPnVzZXJfcHRyLAorCQkgICAgICAgdm1hcC0+Z2VtLmJhc2Uuc2l6ZSkpCisJCXJldHVybiAt RUZBVUxUOworCisJZmlyc3RfZGF0YV9wYWdlID0gdm1hcC0+dXNlcl9wdHIgLyBQQUdFX1NJWkU7 CisJbGFzdF9kYXRhX3BhZ2UgPSAodm1hcC0+dXNlcl9wdHIgKyB2bWFwLT5nZW0uYmFzZS5zaXpl IC0gMSkgLyBQQUdFX1NJWkU7CisJdm1hcC0+Z2VtLm51bV9wYWdlcyA9IGxhc3RfZGF0YV9wYWdl IC0gZmlyc3RfZGF0YV9wYWdlICsgMTsKKworCXZtYXAtPmdlbS5wYWdlcyA9IGRybV9tYWxsb2Nf YWIodm1hcC0+Z2VtLm51bV9wYWdlcywKKwkJCQkgICAgICAgCXNpemVvZihzdHJ1Y3QgcGFnZSAq KSk7CisJaWYgKHZtYXAtPmdlbS5wYWdlcyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CXBpbm5lZF9wYWdlcyA9IGdldF91c2VyX3BhZ2VzX2Zhc3Qodm1hcC0+dXNlcl9wdHIsCisJCQkJ CSAgIHZtYXAtPmdlbS5udW1fcGFnZXMsCisJCQkJCSAgICF2bWFwLT5yZWFkX29ubHksCisJCQkJ CSAgIHZtYXAtPmdlbS5wYWdlcyk7CisJaWYgKHBpbm5lZF9wYWdlcyA8IHZtYXAtPmdlbS5udW1f cGFnZXMpIHsKKwkJZm9yIChpID0gMDsgaSA8IHBpbm5lZF9wYWdlczsgaSsrKQorCQkJcGFnZV9j YWNoZV9yZWxlYXNlKHZtYXAtPmdlbS5wYWdlc1tpXSk7CisJCWRybV9mcmVlX2xhcmdlKHZtYXAt PmdlbS5wYWdlcyk7CisJCXJldHVybiAtRUZBVUxUOworCX0KKworCSpvZmZzZXQgPSB2bWFwLT51 c2VyX3B0ciAmIH5QQUdFX01BU0s7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitpOTE1 X2dlbV92bWFwX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorewor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG9iai0+bnVtX3BhZ2VzOyBpKyspIHsKKwkJaWYg KG9iai0+ZGlydHkpCisJCQlzZXRfcGFnZV9kaXJ0eShvYmotPnBhZ2VzW2ldKTsKKworCQltYXJr X3BhZ2VfYWNjZXNzZWQob2JqLT5wYWdlc1tpXSk7CisJCXBhZ2VfY2FjaGVfcmVsZWFzZShvYmot PnBhZ2VzW2ldKTsKKwl9CisKKwlvYmotPmRpcnR5ID0gMDsKKwlkcm1fZnJlZV9sYXJnZShvYmot PnBhZ2VzKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29w cyBpOTE1X2dlbV92bWFwX29wcyA9IHsKKwkuZ2V0X3BhZ2VzID0gaTkxNV9nZW1fdm1hcF9nZXRf cGFnZXMsCisJLnB1dF9wYWdlcyA9IGk5MTVfZ2VtX3ZtYXBfcHV0X3BhZ2VzLAorfTsKKworLyoq CisgKiBDcmVhdGVzIGEgbmV3IG1tIG9iamVjdCB0aGF0IHdyYXBzIHNvbWUgdXNlciBtZW1vcnku CisgKi8KK2ludAoraTkxNV9nZW1fdm1hcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAorCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1f aTkxNV9nZW1fdm1hcCAqYXJncyA9IGRhdGE7CisJc3RydWN0IGk5MTVfZ2VtX3ZtYXBfb2JqZWN0 ICpvYmo7CisJaW50IHJldDsKKwl1MzIgaGFuZGxlOworCisJLyogQWxsb2NhdGUgdGhlIG5ldyBv YmplY3QgKi8KKwlvYmogPSBremFsbG9jKHNpemVvZigqb2JqKSwgR0ZQX0tFUk5FTCk7CisJaWYg KG9iaiA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW9iai0+Z2VtLmJhc2UuZHJpdmVy X3ByaXZhdGUgPSAodm9pZCAqKSZpOTE1X2dlbV92bWFwX29wczsKKworCW9iai0+Z2VtLmJhc2Uu ZGV2ID0gZGV2OworCW9iai0+Z2VtLmJhc2Uuc2l6ZSA9IGFyZ3MtPnVzZXJfc2l6ZTsKKworCWty ZWZfaW5pdCgmb2JqLT5nZW0uYmFzZS5yZWZjb3VudCk7CisJYXRvbWljX3NldCgmb2JqLT5nZW0u YmFzZS5oYW5kbGVfY291bnQsIDApOworCisJaTkxNV9nZW1fb2JqZWN0X2luaXQoJm9iai0+Z2Vt KTsKKwlvYmotPmdlbS5hZ3BfdHlwZSA9IEFHUF9VU0VSX0NBQ0hFRF9NRU1PUlk7CisKKwlvYmot PnVzZXJfcHRyID0gYXJncy0+dXNlcl9wdHI7CisJb2JqLT5yZWFkX29ubHkgPSBhcmdzLT5mbGFn cyAmIEk5MTVfVk1BUF9SRUFEX09OTFk7CisKKwlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUo ZmlsZSwgJm9iai0+Z2VtLmJhc2UsICZoYW5kbGUpOworCWlmIChyZXQpIHsKKwkJZHJtX2dlbV9v YmplY3RfcmVsZWFzZSgmb2JqLT5nZW0uYmFzZSk7CisJCWtmcmVlKG9iaik7CisJCXJldHVybiBy ZXQ7CisJfQorCisJLyogZHJvcCByZWZlcmVuY2UgZnJvbSBhbGxvY2F0ZSAtIGhhbmRsZSBob2xk cyBpdCBub3cgKi8KKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5nZW0uYmFzZSk7 CisKKwlhcmdzLT5oYW5kbGUgPSBoYW5kbGU7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAppbmRleCBkM2M5 M2JlLi4zYjhiN2Y5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9pOTE1X2RybS5oCisrKyBiL2lu Y2x1ZGUvZHJtL2k5MTVfZHJtLmgKQEAgLTIwMCw2ICsyMDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBf ZHJtX2k5MTVfc2FyZWEgewogI2RlZmluZSBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIJMHgyOQog I2RlZmluZSBEUk1fSTkxNV9HRU1fUFJFQURfMkQJMHgyYQogI2RlZmluZSBEUk1fSTkxNV9HRU1f UFdSSVRFXzJECTB4MmIKKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1ZNQVAJMHgyYwogCiAjZGVmaW5l IERSTV9JT0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9JTklULCBkcm1faTkxNV9pbml0X3QpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0ZMVVNICQlE Uk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxVU0gpCkBAIC0yNDMsNiArMjQ0 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RM X0k5MTVfT1ZFUkxBWV9BVFRSUwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf T1ZFUkxBWV9BVFRSUywgc3RydWN0IGRybV9pbnRlbF9vdmVybGF5X2F0dHJzKQogI2RlZmluZSBE Uk1fSU9DVExfSTkxNV9HRU1fUFJFQURfMkQJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9JOTE1X0dFTV9QUkVBRF8yRCwgc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZF8yZCkKICNkZWZp bmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1BXUklURV8yRAlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX1BXUklURV8yRCwgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGVfMmQp CisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9WTUFQCURSTV9JT1dSIChEUk1fQ09NTUFORF9C QVNFICsgRFJNX0k5MTVfR0VNX1ZNQVAsIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1hcCkKIAogLyog QWxsb3cgZHJpdmVycyB0byBzdWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5IHRvIGhhcmR3YXJl LCByZWx5aW5nCiAgKiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJk d2FyZS4KQEAgLTI5NSw2ICsyOTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9pcnFfd2Fp dCB7CiAjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0NPSEVSRU5UX1JJTkdTCSAxMwogI2RlZmluZSBJ OTE1X1BBUkFNX0hBU19FWEVDX0NPTlNUQU5UUwkgMTQKICNkZWZpbmUgSTkxNV9QQVJBTV9IQVNf MkRfSU8JCSAxNQorI2RlZmluZSBJOTE1X1BBUkFNX0hBU19WTUFQCQkgMTYKIAogdHlwZWRlZiBz dHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gewogCWludCBwYXJhbTsKQEAgLTM5Miw2ICszOTUsMTkg QEAgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgewogCV9fdTMyIHBhZDsKIH07CiAKK3N0cnVj dCBkcm1faTkxNV9nZW1fdm1hcCB7CisJX191NjQgdXNlcl9wdHI7CisJX191MzIgdXNlcl9zaXpl OworCV9fdTMyIGZsYWdzOworI2RlZmluZSBJOTE1X1ZNQVBfUkVBRF9PTkxZIDB4MQorCS8qKgoJ ICogUmV0dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogT2JqZWN0IGhhbmRs ZXMgYXJlIG5vbnplcm8uCisJICovCisJX191MzIgaGFuZGxlOworfTsKKwogc3RydWN0IGRybV9p OTE1X2dlbV9wcmVhZCB7CiAJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyByZWFkLiAq LwogCV9fdTMyIGhhbmRsZTsKLS0gCjEuNy4yLjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==