From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 10/29] drm/i915: gvt: Basic mmio emulation state Date: Thu, 28 Jan 2016 18:21:32 +0800 Message-ID: <1453976511-27322-11-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 3CCD56E7F5 for ; Thu, 28 Jan 2016 02:24:10 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBiYXNpYyBwcm90b3R5cGVzIGFuZCBkZWZpbml0aW9u cyBmb3IgR1ZUIGd1ZXN0Ck1NSU8gZW11bGF0aW9uLgoKLSBTYXZlIGFuIG9yaWdpbmFsIE1NSU8g c25hcGhvdCB3aGVuIHN5c3RlbSBib290IHVwLCB3aGljaCB3aWxsCmJlIHVzZWQgYXMgdGhlIGlu aXRpYWwgZ3Vlc3QgTU1JTyBjb250ZW50LgoKLSBJbnRyb2R1Y2UgYSBmcmFtZXdvcmsgdG8gdHJh Y2tlZCBhbGwga2luZHMgb2YgR0VOIE1NSU8gcmVnaXN0ZXJzLAplYWNoIHRyYWNrZWQgTU1JTyBy ZWdpc3RlciBtYXkgaGF2ZSBhIGhhbmRsZXIgdG8gZW11bGF0ZSB0aGUgSFcgcmVnaXN0ZXJzCmNo YW5nZS4KClNpZ25lZC1vZmYtYnk6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5jICAgICAgfCAgIDkgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9ndnQuaCAgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9oYW5kbGVycy5jIHwgIDQ3ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L21taW8uYyAgICAgfCAyOTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pby5oICAgICB8ICA4NyArKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oICAgICAgfCAgIDQgKwogNyBmaWxlcyBjaGFuZ2Vk LCA1NjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW8uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9tbWlvLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKaW5kZXgg NjY1NTkyOS4uNWQyOGVkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZQpAQCAtMSw0ICsx LDQgQEAKLUdWVF9TT1VSQ0UgOj0gZ3Z0Lm8gcGFyYW1zLm8gYXBlcnR1cmVfZ20ubyBmYl9kZWNv ZGVyLm8KK0dWVF9TT1VSQ0UgOj0gZ3Z0Lm8gcGFyYW1zLm8gYXBlcnR1cmVfZ20ubyBtbWlvLm8g aGFuZGxlcnMubyBmYl9kZWNvZGVyLm8KIAogY2NmbGFncy15CQkJKz0gLUkkKHNyYykgLUkkKHNy YykvLi4gLVdhbGwgLVdlcnJvciAtV25vLXVudXNlZC1mdW5jdGlvbgogaTkxNV9ndnQteQkJCTo9 ICQoR1ZUX1NPVVJDRSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYwppbmRleCBmMzFlOWY3Li5mNTA2NmJj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCkBAIC0xMzYsNiArMTM2LDggQEAgc3RhdGljIHZvaWQg aW5pdF9pbml0aWFsX2NmZ19zcGFjZV9zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKIAog c3RhdGljIHZvaWQgY2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KQogeworCWd2dF9jbGVhbl9pbml0aWFsX21taW9fc3RhdGUocGRldik7CisKIAlpZiAocGRl di0+Z3R0bW1pb192YSkgewogCQlpb3VubWFwKHBkZXYtPmd0dG1taW9fdmEpOwogCQlwZGV2LT5n dHRtbWlvX3ZhID0gTlVMTDsKQEAgLTE3OSw2ICsxODEsOSBAQCBzdGF0aWMgYm9vbCBpbml0X2lu aXRpYWxfbW1pb19zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKIAlndnRfaW5mbygiZ3R0 bW1pb192YTogJXAiLCBwZGV2LT5ndHRtbWlvX3ZhKTsKIAlndnRfaW5mbygiZ21hZHJfdmE6ICVw IiwgcGRldi0+Z21hZHJfdmEpOwogCisJaWYgKCFndnRfc2V0dXBfaW5pdGlhbF9tbWlvX3N0YXRl KHBkZXYpKQorCQlnb3RvIGVycjsKKwogCXJldHVybiB0cnVlOwogZXJyOgogCWNsZWFuX2luaXRp YWxfbW1pb19zdGF0ZShwZGV2KTsKQEAgLTIzMyw2ICsyMzgsNyBAQCBzdGF0aWMgYm9vbCBpbml0 X3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQogc3RhdGljIHZvaWQgY2xl YW5fcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKIHsKIAljbGVhbl9zZXJ2aWNl X3RocmVhZChwZGV2KTsKKwlndnRfY2xlYW5fbW1pb19lbXVsYXRpb25fc3RhdGUocGRldik7CiAJ Y2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpOwogCWd2dF9jbGVhbl9yZXNvdXJjZV9hbGxv Y2F0b3IocGRldik7CiB9CkBAIC0yNDksNiArMjU1LDkgQEAgc3RhdGljIGJvb2wgaW5pdF9wZ3Rf ZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGUKIAogCWd2dF9pbml0X3Jlc291cmNlX2FsbG9jYXRvcihwZGV2KTsKIAorCWlmICghZ3Z0X3Nl dHVwX21taW9fZW11bGF0aW9uX3N0YXRlKHBkZXYpKQorCQlnb3RvIGVycjsKKwogCWlmICghaW5p dF9zZXJ2aWNlX3RocmVhZChwZGV2KSkKIAkJZ290byBlcnI7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQu aAppbmRleCBhYTQ4NTFjLi43OThlMjE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC0zMyw2 ICszMyw3IEBACiAjaW5jbHVkZSAiaHlwZXJjYWxsLmgiCiAjaW5jbHVkZSAibXB0LmgiCiAjaW5j bHVkZSAiZmJfZGVjb2Rlci5oIgorI2luY2x1ZGUgIm1taW8uaCIKIAogI2RlZmluZSBHVlRfTUFY X1ZHUFUgOAogCkBAIC00MSw2ICs0Miw4IEBACiAjZGVmaW5lIEdWVF9NQVhfTlVNX0ZFTkNFUwkz MgogI2RlZmluZSBHVlRfRkVOQ0VfQklUTUFQX0JJVFMJR1ZUX01BWF9OVU1fRkVOQ0VTCiAKKyNk ZWZpbmUgR1ZUX0hBU0hfQklUUyA5CisKIGVudW0gewogCUdWVF9IWVBFUlZJU09SX1RZUEVfWEVO ID0gMCwKIAlHVlRfSFlQRVJWSVNPUl9UWVBFX0tWTSwKQEAgLTEzMyw3ICsxMzYsMTYgQEAgc3Ry dWN0IHBndF9kZXZpY2UgewogCURFQ0xBUkVfQklUTUFQKGZlbmNlX2JpdG1hcCwgR1ZUX0ZFTkNF X0JJVE1BUF9CSVRTKTsKIAogCXU2NCB0b3RhbF9nbV9zejsKKwogCXN0cnVjdCBndnRfZ21fYWxs b2NhdG9yIGdtX2FsbG9jYXRvcjsKKworCXUzMiAqaW5pdGlhbF9tbWlvX3N0YXRlOworCXUzMiAq cmVnX2luZm87CisKKwlndnRfYXV4X2VudHJ5X3QgYXV4X3RhYmxlW0dWVF9BVVhfVEFCTEVfTlVN XTsKKwl1MzIgYXV4X3RhYmxlX2luZGV4OworCisJREVDTEFSRV9IQVNIVEFCTEUobW1pb190YWJs ZSwgR1ZUX0hBU0hfQklUUyk7CiB9OwogCiAvKiBkZWZpbml0aW9ucyBmb3IgcGh5c2ljYWwgYXBl cnR1cmUvR00gc3BhY2UgKi8KQEAgLTIwMCw2ICsyMTIsMTA4IEBAIGV4dGVybiBpbnQgZ3Z0X2Fs bG9jX2dtX2FuZF9mZW5jZV9yZXNvdXJjZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LAogCQlzdHJ1 Y3QgZ3Z0X2luc3RhbmNlX2luZm8gKmluZm8pOwogZXh0ZXJuIHZvaWQgZ3Z0X2ZyZWVfZ21fYW5k X2ZlbmNlX3Jlc291cmNlKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpOwogCisjZGVmaW5lIFJFR19J TkRFWChyZWcpICgocmVnKSA+PiAyKQorCisjZGVmaW5lIERfU05CICAgKDEgPDwgMCkKKyNkZWZp bmUgRF9JVkIgICAoMSA8PCAxKQorI2RlZmluZSBEX0hTVyAgICgxIDw8IDIpCisjZGVmaW5lIERf QkRXICAgKDEgPDwgMykKKworI2RlZmluZSBEX0dFTjhQTFVTICAgICAgKERfQkRXKQorI2RlZmlu ZSBEX0dFTjc1UExVUyAgICAgKERfSFNXIHwgRF9CRFcpCisjZGVmaW5lIERfR0VON1BMVVMgICAg ICAoRF9JVkIgfCBEX0hTVyB8IERfQkRXKQorCisjZGVmaW5lIERfQkRXX1BMVVMgICAgICAoRF9C RFcpCisjZGVmaW5lIERfSFNXX1BMVVMgICAgICAoRF9IU1cgfCBEX0JEVykKKyNkZWZpbmUgRF9J VkJfUExVUyAgICAgIChEX0lWQiB8IERfSFNXIHwgRF9CRFcpCisKKyNkZWZpbmUgRF9QUkVfQkRX ICAgICAgIChEX1NOQiB8IERfSVZCIHwgRF9IU1cpCisKKyNkZWZpbmUgRF9BTEwgICAgICAgICAg IChEX1NOQiB8IERfSVZCIHwgRF9IU1cgfCBEX0JEVykKKworI2RlZmluZSByZWdfYWRkcl9maXgo cGRldiwgcmVnKQkJKHBkZXYtPnJlZ19pbmZvW1JFR19JTkRFWChyZWcpXSAmIEdWVF9SRUdfQURE Ul9GSVgpCisjZGVmaW5lIHJlZ19od19zdGF0dXMocGRldiwgcmVnKQkocGRldi0+cmVnX2luZm9b UkVHX0lOREVYKHJlZyldICYgR1ZUX1JFR19IV19TVEFUVVMpCisjZGVmaW5lIHJlZ192aXJ0KHBk ZXYsIHJlZykJCShwZGV2LT5yZWdfaW5mb1tSRUdfSU5ERVgocmVnKV0gJiBHVlRfUkVHX1ZJUlQp CisjZGVmaW5lIHJlZ19tb2RlX2N0bChwZGV2LCByZWcpCQkocGRldi0+cmVnX2luZm9bUkVHX0lO REVYKHJlZyldICYgR1ZUX1JFR19NT0RFX0NUTCkKKyNkZWZpbmUgcmVnX2lzX3RyYWNrZWQocGRl diwgcmVnKQkocGRldi0+cmVnX2luZm9bUkVHX0lOREVYKHJlZyldICYgR1ZUX1JFR19UUkFDS0VE KQorI2RlZmluZSByZWdfaXNfYWNjZXNzZWQocGRldiwgcmVnKQkocGRldi0+cmVnX2luZm9bUkVH X0lOREVYKHJlZyldICYgR1ZUX1JFR19BQ0NFU1NFRCkKKyNkZWZpbmUgcmVnX2lzX3NhdmVkKHBk ZXYsIHJlZykJCShwZGV2LT5yZWdfaW5mb1tSRUdfSU5ERVgocmVnKV0gJiBHVlRfUkVHX1NBVkVE KQorCisjZGVmaW5lIHJlZ19hdXhfaW5kZXgocGRldiwgcmVnKQlcCisJKChwZGV2LT5yZWdfaW5m b1tSRUdfSU5ERVgocmVnKV0gJiBHVlRfUkVHX0lOREVYX01BU0spID4+IEdWVF9SRUdfSU5ERVhf U0hJRlQpCisjZGVmaW5lIHJlZ19oYXNfYXV4X2luZm8ocGRldiwgcmVnKQkocmVnX21vZGVfY3Rs KHBkZXYsIHJlZykgfCByZWdfYWRkcl9maXgocGRldiwgcmVnKSkKKyNkZWZpbmUgcmVnX2F1eF9t b2RlX21hc2socGRldiwgcmVnKQlcCisJKHBkZXYtPmF1eF90YWJsZVtyZWdfYXV4X2luZGV4KHBk ZXYsIHJlZyldLm1vZGVfY3RsLm1hc2spCisjZGVmaW5lIHJlZ19hdXhfYWRkcl9tYXNrKHBkZXYs IHJlZykJXAorCShwZGV2LT5hdXhfdGFibGVbcmVnX2F1eF9pbmRleChwZGV2LCByZWcpXS5hZGRy X2ZpeC5tYXNrKQorI2RlZmluZSByZWdfYXV4X2FkZHJfc2l6ZShwZGV2LCByZWcpCVwKKwkocGRl di0+YXV4X3RhYmxlW3JlZ19hdXhfaW5kZXgocGRldiwgcmVnKV0uYWRkcl9maXguc2l6ZSkKKwor c3RhdGljIGlubGluZSB2b2lkIHJlZ19zZXRfaHdfc3RhdHVzKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2LCB1MzIgcmVnKQoreworCUFTU0VSVF9OVU0oIXJlZ19pc190cmFja2VkKHBkZXYsIHJlZyks IHJlZyk7CisJcGRldi0+cmVnX2luZm9bUkVHX0lOREVYKHJlZyldIHw9IEdWVF9SRUdfSFdfU1RB VFVTOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcmVnX3NldF92aXJ0KHN0cnVjdCBwZ3RfZGV2 aWNlICpwZGV2LCB1MzIgcmVnKQoreworCUFTU0VSVF9OVU0oIXJlZ19pc190cmFja2VkKHBkZXYs IHJlZyksIHJlZyk7CisJcGRldi0+cmVnX2luZm9bUkVHX0lOREVYKHJlZyldIHw9IEdWVF9SRUdf VklSVDsKK30KKworLyogbWFzayBiaXRzIGZvciBhZGRyIGZpeCAqLworc3RhdGljIGlubGluZSB2 b2lkIHJlZ19zZXRfYWRkcl9maXgoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCisJCXUzMiByZWcs IHUzMiBtYXNrKQoreworCUFTU0VSVCghcmVnX2hhc19hdXhfaW5mbyhwZGV2LCByZWcpKTsKKwlB U1NFUlQocGRldi0+YXV4X3RhYmxlX2luZGV4IDw9IEdWVF9BVVhfVEFCTEVfTlVNIC0gMSk7CisJ QVNTRVJUX05VTSghcmVnX2lzX3RyYWNrZWQocGRldiwgcmVnKSwgcmVnKTsKKworCXBkZXYtPmF1 eF90YWJsZVtwZGV2LT5hdXhfdGFibGVfaW5kZXhdLmFkZHJfZml4Lm1hc2sgPSBtYXNrOworCXBk ZXYtPnJlZ19pbmZvW1JFR19JTkRFWChyZWcpXSB8PSBHVlRfUkVHX0FERFJfRklYIHwKKwkJKHBk ZXYtPmF1eF90YWJsZV9pbmRleCA8PCBHVlRfUkVHX0lOREVYX1NISUZUKTsKKwlwZGV2LT5hdXhf dGFibGVfaW5kZXgrKzsKK30KKworLyogbWFzayBiaXRzIGZvciBtb2RlIG1hc2sgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZCByZWdfc2V0X21vZGVfY3RsKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAor CQl1MzIgcmVnKQoreworCUFTU0VSVCghcmVnX2hhc19hdXhfaW5mbyhwZGV2LCByZWcpKTsKKwlB U1NFUlQocGRldi0+YXV4X3RhYmxlX2luZGV4IDw9IEdWVF9BVVhfVEFCTEVfTlVNIC0gMSk7CisJ QVNTRVJUX05VTSghcmVnX2lzX3RyYWNrZWQocGRldiwgcmVnKSwgcmVnKTsKKworCXBkZXYtPnJl Z19pbmZvW1JFR19JTkRFWChyZWcpXSB8PSBHVlRfUkVHX01PREVfQ1RMIHwKKwkJKHBkZXYtPmF1 eF90YWJsZV9pbmRleCA8PCBHVlRfUkVHX0lOREVYX1NISUZUKTsKKwlwZGV2LT5hdXhfdGFibGVf aW5kZXgrKzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJlZ19zZXRfdHJhY2tlZChzdHJ1Y3Qg cGd0X2RldmljZSAqcGRldiwKKwkJdTMyIHJlZykKK3sKKwlBU1NFUlRfTlVNKCFyZWdfaXNfdHJh Y2tlZChwZGV2LCByZWcpLCByZWcpOworCXBkZXYtPnJlZ19pbmZvW1JFR19JTkRFWChyZWcpXSB8 PSBHVlRfUkVHX1RSQUNLRUQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWdfc2V0X2FjY2Vz c2VkKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAorCQl1MzIgcmVnKQoreworCXBkZXYtPnJlZ19p bmZvW1JFR19JTkRFWChyZWcpXSB8PSBHVlRfUkVHX0FDQ0VTU0VEOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgcmVnX3NldF9zYXZlZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKKwkJdTMyIHJl ZykKK3sKKwlwZGV2LT5yZWdfaW5mb1tSRUdfSU5ERVgocmVnKV0gfD0gR1ZUX1JFR19TQVZFRDsK K30KKworc3RhdGljIGlubGluZSB2b2lkIHJlZ19zZXRfY21kX2FjY2VzcyhzdHJ1Y3QgcGd0X2Rl dmljZSAqcGRldiwKKwkJdTMyIHJlZykKK3sKKwlwZGV2LT5yZWdfaW5mb1tSRUdfSU5ERVgocmVn KV0gfD0gR1ZUX1JFR19DTURfQUNDRVNTOworCXJlZ19zZXRfYWNjZXNzZWQocGRldiwgcmVnKTsK K30KKwogc3RhdGljIGlubGluZSB1MzIgZ3Z0X21taW9fcmVhZChzdHJ1Y3QgcGd0X2RldmljZSAq cGRldiwKIAkJdTMyIHJlZykKIHsKQEAgLTIzMiw0ICszNDYsMTcgQEAgc3RhdGljIGlubGluZSB2 b2lkIGd2dF9tbWlvX3dyaXRlNjQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCiAJSTkxNV9XUklU RTY0KHRtcCwgdmFsKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGd2dF9tbWlvX3Bvc3Rpbmdf cmVhZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwgdTMyIHJlZykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwZGV2LT5kZXZfcHJpdjsKKwlpOTE1X3JlZ190IHRtcCA9 IHsucmVnID0gcmVnfTsKKwlQT1NUSU5HX1JFQUQodG1wKTsKK30KKworZXh0ZXJuIHZvaWQgZ3Z0 X2NsZWFuX2luaXRpYWxfbW1pb19zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldik7CitleHRl cm4gYm9vbCBndnRfc2V0dXBfaW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KTsKKworZXh0ZXJuIHZvaWQgZ3Z0X2NsZWFuX21taW9fZW11bGF0aW9uX3N0YXRlKHN0cnVj dCBwZ3RfZGV2aWNlICpwZGV2KTsKK2V4dGVybiBib29sIGd2dF9zZXR1cF9tbWlvX2VtdWxhdGlv bl9zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldik7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvaGFuZGxlcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmVj NGYzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJz LmMKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H UyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJndnQuaCIKKworLyogVE9E TzogTWVyZ2UgcmVnaXN0ZXIgZGVmaW5pdGlvbiBmcm9tIGk5MTUuICovCitzdHJ1Y3QgZ3Z0X3Jl Z19pbmZvIGd2dF9nZW5lcmFsX3JlZ19pbmZvW10gPSB7Cit7MCwgMCwgMCwgMCwgMCwgTlVMTCwg TlVMTH0sCit9OworCitzdHJ1Y3QgZ3Z0X3JlZ19pbmZvIGd2dF9icm9hZHdlbGxfcmVnX2luZm9b XSA9IHsKK3swLCAwLCAwLCAwLCAwLCBOVUxMLCBOVUxMfSwKK307CisKK2ludCBndnRfZ2V0X3Jl Z19udW0oaW50IHR5cGUpCit7CisgICAgICAgIHN3aXRjaCh0eXBlKXsKKyAgICAgICAgICAgICAg ICBjYXNlIERfQUxMOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFSUkFZX1NJWkUo Z3Z0X2dlbmVyYWxfcmVnX2luZm8pOworICAgICAgICAgICAgICAgIGNhc2UgRF9CRFc6CisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVJSQVlfU0laRShndnRfYnJvYWR3ZWxsX3JlZ19p bmZvKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorCQkJcmV0dXJuIDA7CisgICAgICAgIH0K KworICAgICAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9tbWlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pby5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYmFiZDIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pby5jCkBAIC0wLDAgKzEsMjkwIEBACisvKgorICogQ29w eXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKwor I2luY2x1ZGUgImd2dC5oIgorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfZGV2aWNl X3R5cGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7CisJaWYgKElTX0JST0FEV0VMTChwZGV2 LT5kZXZfcHJpdikpCisJCXJldHVybiBEX0JEVzsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu bGluZSBib29sIG1hdGNoX2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwgc3RydWN0IGd2 dF9yZWdfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5mby0+ZGV2aWNlICYgZ2V0X2RldmljZV90 eXBlKHBkZXYpOworfQorCitzdGF0aWMgdm9pZCBzYXZlX2luaXRpYWxfbW1pb19zdGF0ZShzdHJ1 Y3QgcGd0X2RldmljZSAqcGRldiwKKwkJc3RydWN0IGd2dF9yZWdfaW5mbyAqaW5mbywgaW50IG51 bSkKK3sKKwl1MzIgKm1taW8gPSBwZGV2LT5pbml0aWFsX21taW9fc3RhdGU7CisJaW50IGksIGo7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyssIGluZm8rKykgeworCQlpZiAoIW1hdGNoX2Rl dmljZShwZGV2LCBpbmZvKSkKKwkJCWNvbnRpbnVlOworCisJCWZvciAoaiA9IDA7IGogPCBpbmZv LT5zaXplOyBqICs9IDQpCisJCQltbWlvW1JFR19JTkRFWChpbmZvLT5yZWcgKyBqKV0gPQorCQkJ CWd2dF9tbWlvX3JlYWQocGRldiwgaW5mby0+cmVnICsgaik7CisJfQorCisJZ3Z0X2RiZ19jb3Jl KCJzYXZlICVkIHJlZ2lzdGVycyBhcyBpbml0aWFsIG1taW8gdmFsdWVzIiwgbnVtKTsKK30KKwor c3RhdGljIHZvaWQgcGF0Y2hfZGlzcGxheV9tbWlvX3N0YXRlKHUzMiAqbW1pb19hcnJheSkKK3sK KwlndnRfZGJnX2NvcmUoInBhdGNoIGRpc3BsYXkgaW5pdGlhbCBtbWlvIHN0YXRlIik7CisKKwkv KiBUT0RPOiB2Z3RfZHB5X2luaXRfbW9kZXMuICovCisJbW1pb19hcnJheVtSRUdfSU5ERVgoX1dS UExMX0NUTDEpXSAmPSB+KDEgPDwgMzEpOworCW1taW9fYXJyYXlbUkVHX0lOREVYKF9XUlBMTF9D VEwyKV0gJj0gfigxIDw8IDMxKTsKK30KKworc3RhdGljIHZvaWQgcGF0Y2hfaW5pdGlhbF9tbWlv X3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCXUzMiAqbW1pb19hcnJheSA9IHBk ZXYtPmluaXRpYWxfbW1pb19zdGF0ZTsKKworCWd2dF9kYmdfY29yZSgicGF0Y2ggaW5pdGlhbCBt bWlvIHN0YXRlIik7CisKKwkvKiBjdXN0b21pemUgdGhlIGluaXRpYWwgTU1JTworCSAqIDEsIEdN QlVTIHN0YXR1cworCSAqIDIsIEluaXRpYWwgcG9ydCBzdGF0dXMuCisJICovCisKKwkvKiBHTUJV UzIgaGFzIGFuIGluLXVzZSBiaXQgYXMgdGhlIGh3IHNlbWFwaG9yZSwgYW5kIHdlIHNob3VsZCBy ZWNvdmVyCisJICogaXQgYWZ0ZXIgdGhlIHNuYXBzaG90LgorCSAqLworCW1taW9fYXJyYXlbUkVH X0lOREVYKF9QQ0hfR01CVVMyKV0gJj0gfjB4ODAwMDsKKworCWd2dF9tbWlvX3dyaXRlKHBkZXYs IF9QQ0hfR01CVVMyLAorCQkJZ3Z0X21taW9fcmVhZChwZGV2LCBfUENIX0dNQlVTMikgfCAweDgw MDApOworCisJcGF0Y2hfZGlzcGxheV9tbWlvX3N0YXRlKG1taW9fYXJyYXkpOworfQorCit2b2lk IGd2dF9jbGVhbl9pbml0aWFsX21taW9fc3RhdGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7 CisJaWYgKHBkZXYtPmluaXRpYWxfbW1pb19zdGF0ZSkgeworCQl2ZnJlZShwZGV2LT5pbml0aWFs X21taW9fc3RhdGUpOworCQlwZGV2LT5pbml0aWFsX21taW9fc3RhdGUgPSBOVUxMOworCX0KK30K KworYm9vbCBndnRfc2V0dXBfaW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KQoreworCWd2dF9kYmdfY29yZSgic2V0dXAgaW5pdGlhbCBtbWlvIHN0YXRlIik7CisKKwlw ZGV2LT5pbml0aWFsX21taW9fc3RhdGUgPSB2emFsbG9jKHBkZXYtPm1taW9fc2l6ZSk7CisJaWYg KCFwZGV2LT5pbml0aWFsX21taW9fc3RhdGUpIHsKKwkJZ3Z0X2luZm8oImZhaWwgdG8gYWxsb2Nh dGUgaW5pdGlhbCBtbWlvIHN0YXRlIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlndnRfZGJn X2NvcmUoInNhdmUgZ2VuZXJpYyBpbml0aWFsIG1taW8gc3RhdGUiKTsKKworCXNhdmVfaW5pdGlh bF9tbWlvX3N0YXRlKHBkZXYsIGd2dF9nZW5lcmFsX3JlZ19pbmZvLCBndnRfZ2V0X3JlZ19udW0o RF9BTEwpKTsKKworCWlmKElTX0JST0FEV0VMTChwZGV2LT5kZXZfcHJpdikpIHsKKwkJZ3Z0X2Ri Z19jb3JlKCJzYXZlIGJyb2Fkd2VsbCBpbml0aWFsIG1taW8gc3RhdGUiKTsKKwkJc2F2ZV9pbml0 aWFsX21taW9fc3RhdGUocGRldiwgZ3Z0X2Jyb2Fkd2VsbF9yZWdfaW5mbywgZ3Z0X2dldF9yZWdf bnVtKERfQkRXKSk7CisJfQorCisJcGF0Y2hfaW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpOworCisJ cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9tbWlvX2VudHJ5KHN0cnVjdCBwZ3Rf ZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZ3Z0X21taW9fZW50cnkgKmUpCit7CisgICAgICAgIGhhc2hf YWRkKHBkZXYtPm1taW9fdGFibGUsICZlLT5obGlzdCwgZS0+YmFzZSk7Cit9CisKK3N0YXRpYyBz dHJ1Y3QgZ3Z0X21taW9fZW50cnkgKmZpbmRfbW1pb19lbnRyeShzdHJ1Y3QgcGd0X2RldmljZSAq cGRldiwgdW5zaWduZWQgaW50IGJhc2UpCit7CisgICAgICAgIHN0cnVjdCBndnRfbW1pb19lbnRy eSAqZTsKKworICAgICAgICBoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKHBkZXYtPm1taW9fdGFibGUs IGUsIGhsaXN0LCBiYXNlKSB7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gZS0+YmFzZSkK KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOworICAgICAgICB9CisgICAgICAgIHJl dHVybiBOVUxMOworfQorCit2b2lkIHJlbW92ZV9tbWlvX2VudHJ5KHN0cnVjdCBwZ3RfZGV2aWNl ICpwZGV2LCB1bnNpZ25lZCBpbnQgYmFzZSkKK3sKKyAgICAgICAgc3RydWN0IGd2dF9tbWlvX2Vu dHJ5ICplOworCisgICAgICAgIGlmICgoZSA9IGZpbmRfbW1pb19lbnRyeShwZGV2LCBiYXNlKSkp IHsKKyAgICAgICAgICAgICAgICBoYXNoX2RlbCgmZS0+aGxpc3QpOworICAgICAgICAgICAgICAg IGtmcmVlKGUpOworICAgICAgICB9Cit9CisKK3ZvaWQgZnJlZV9tbWlvX3RhYmxlKHN0cnVjdCBw Z3RfZGV2aWNlICpwZGV2KQoreworICAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wOworICAg ICAgICBzdHJ1Y3QgZ3Z0X21taW9fZW50cnkgKmU7CisgICAgICAgIGludCBpOworCisgICAgICAg IGhhc2hfZm9yX2VhY2hfc2FmZShwZGV2LT5tbWlvX3RhYmxlLCBpLCB0bXAsIGUsIGhsaXN0KQor ICAgICAgICAgICAgICAgIGtmcmVlKGUpOworCisgICAgICAgIGhhc2hfaW5pdChwZGV2LT5tbWlv X3RhYmxlKTsKK30KKworYm9vbCByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoc3RydWN0IHBndF9kZXZp Y2UgKnBkZXYsIHVuc2lnbmVkIGludCBzdGFydCwgaW50IGJ5dGVzLAorCWd2dF9tbWlvX2hhbmRs ZXJfdCByZWFkLCBndnRfbW1pb19oYW5kbGVyX3Qgd3JpdGUpCit7CisJdW5zaWduZWQgaW50IGks IGVuZDsKKwlzdHJ1Y3QgZ3Z0X21taW9fZW50cnkgKmU7CisKKwllbmQgPSBzdGFydCArIGJ5dGVz IC0xOworCisJQVNTRVJUKChzdGFydCAmIDMpID09IDApOworCUFTU0VSVCgoKGVuZCsxKSAmIDMp ID09IDApOworCisJZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gNCkgeworCQllID0gZmlu ZF9tbWlvX2VudHJ5KHBkZXYsIGkpOworCQlpZiAoZSkgeworCQkJZS0+cmVhZCA9IHJlYWQ7CisJ CQllLT53cml0ZSA9IHdyaXRlOworCQkJY29udGludWU7CisJCX0KKworCQllID0ga3phbGxvYyhz aXplb2YoKmUpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKGUgPT0gTlVMTCkgeworCQkJZ3Z0X2Vycigi ZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1taW8gZW50cnkiKTsKKwkJCXJldHVybiBmYWxz ZTsKKwkJfQorCisJCWUtPmJhc2UgPSBpOworCisJCS8qCisJCSAqIFdpbjcgR0ZYIGRyaXZlciB1 c2VzIG1lbWNweSB0byBhY2Nlc3MgdGhlIEdWVCBQVklORk8gcmVncywKKwkJICogaGVuY2UgYWxp Z25fYnl0ZXMgY2FuIGJlIDEuCisJCSAqLworCQlpZiAoc3RhcnQgPj0gVkdUX1BWSU5GT19QQUdF ICYmCisJCQlzdGFydCA8IFZHVF9QVklORk9fUEFHRSArIFZHVF9QVklORk9fU0laRSkKKwkJCWUt PmFsaWduX2J5dGVzID0gMTsKKwkJZWxzZQorCQkJZS0+YWxpZ25fYnl0ZXMgPSA0OworCisJCWUt PnJlYWQgPSByZWFkOworCQllLT53cml0ZSA9IHdyaXRlOworCQlJTklUX0hMSVNUX05PREUoJmUt PmhsaXN0KTsKKwkJYWRkX21taW9fZW50cnkocGRldiwgZSk7CisJfQorCXJldHVybiB0cnVlOwor fQorCitzdGF0aWMgdm9pZCBzZXRfcmVnX2F0dHJpYnV0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRl diwKKwkJdTMyIHJlZywgc3RydWN0IGd2dF9yZWdfaW5mbyAqaW5mbykKK3sKKwkvKiBlbnN1cmUg b25lIGVudHJ5IHBlciByZWcgKi8KKwlBU1NFUlRfTlVNKCFyZWdfaXNfdHJhY2tlZChwZGV2LCBy ZWcpLCByZWcpOworCisJaWYgKHJlZ19pc190cmFja2VkKHBkZXYsIHJlZykpCisJCXJldHVybjsK KworCWlmIChpbmZvLT5mbGFncyAmIEdWVF9SRUdfQUREUl9GSVgpIHsKKwkJaWYgKCFpbmZvLT5h ZGRyX21hc2spCisJCQlndnRfaW5mbygiWkVSTyBhZGRyIGZpeCBtYXNrIGZvciAleCIsIHJlZyk7 CisKKwkJcmVnX3NldF9hZGRyX2ZpeChwZGV2LCByZWcsIGluZm8tPmFkZHJfbWFzayk7CisJCS8q IHNldCB0aGUgZGVmYXVsdCByYW5nZSBzaXplIHRvIDQsIG1pZ2h0IGJlIHVwZGF0ZWQgbGF0ZXIg Ki8KKwkJcmVnX2F1eF9hZGRyX3NpemUocGRldiwgcmVnKSA9IDQ7CisJfQorCisJaWYgKGluZm8t PmZsYWdzICYgR1ZUX1JFR19NT0RFX0NUTCkKKwkJcmVnX3NldF9tb2RlX2N0bChwZGV2LCByZWcp OworCWlmIChpbmZvLT5mbGFncyAmIEdWVF9SRUdfVklSVCkKKwkJcmVnX3NldF92aXJ0KHBkZXYs IHJlZyk7CisJaWYgKGluZm8tPmZsYWdzICYgR1ZUX1JFR19IV19TVEFUVVMpCisJCXJlZ19zZXRf aHdfc3RhdHVzKHBkZXYsIHJlZyk7CisKKwlyZWdfc2V0X3RyYWNrZWQocGRldiwgcmVnKTsKK30K Kworc3RhdGljIGJvb2wgc2V0dXBfcmVnX2luZm8oc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsIHN0 cnVjdCBndnRfcmVnX2luZm8gKmluZm8sIGludCBudW0pCit7CisJaW50IGksIGNvdW50ID0gMCwg dG90YWwgPSAwOworCXUzMiByZWc7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyssIGluZm8r KykgeworCQlpZiAoIW1hdGNoX2RldmljZShwZGV2LCBpbmZvKSkKKwkJCWNvbnRpbnVlOworCisJ CWNvdW50Kys7CisKKwkJZm9yIChyZWcgPSBpbmZvLT5yZWc7CisJCQkJcmVnIDwgaW5mby0+cmVn ICsgaW5mby0+c2l6ZTsKKwkJCQlyZWcgKz0gNCkgeworCQkJc2V0X3JlZ19hdHRyaWJ1dGUocGRl diwgcmVnLCBpbmZvKTsKKwkJCXRvdGFsKys7CisJCX0KKworCQlpZiAoaW5mby0+cmVhZCB8fCBp bmZvLT53cml0ZSkKKwkJCWlmICghcmVnaXN0ZXJfbW1pb19oYW5kbGVyKHBkZXYsIGluZm8tPnJl ZywgaW5mby0+c2l6ZSwKKwkJCQkJaW5mby0+cmVhZCwgaW5mby0+d3JpdGUpKQorCQkJCXJldHVy biBmYWxzZTsKKwl9CisKKwlndnRfaW5mbygidG90YWwgcmVnaXN0ZXIgdHJhY2tlZCAlZCwgdG90 YWwgbW1pbyBlbnRyeSAlZCIsCisJCWNvdW50LCB0b3RhbCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30K Kwordm9pZCBndnRfY2xlYW5fbW1pb19lbXVsYXRpb25fc3RhdGUoc3RydWN0IHBndF9kZXZpY2Ug KnBkZXYpCit7CisJZnJlZV9tbWlvX3RhYmxlKHBkZXYpOworfQorCitib29sIGd2dF9zZXR1cF9t bWlvX2VtdWxhdGlvbl9zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKK3sKKyAgICAgICAg c3RydWN0IGd2dF9tbWlvX2VudHJ5ICplOworCisJZ3Z0X2RiZ19jb3JlKCJzZXR1cCBnZW5lcmlj IHJlZ2lzdGVyIGluZm8iKTsKKworCWlmICghc2V0dXBfcmVnX2luZm8ocGRldiwgZ3Z0X2dlbmVy YWxfcmVnX2luZm8sIGd2dF9nZXRfcmVnX251bShEX0FMTCkpKQorCQlnb3RvIGVycjsKKworCWlm KElTX0JST0FEV0VMTChwZGV2LT5kZXZfcHJpdikpIHsKKwkJZ3Z0X2RiZ19jb3JlKCJzZXR1cCBi cm9hZHdlbGwgcmVnaXN0ZXIgaW5mbyIpOworCisJCWlmICghc2V0dXBfcmVnX2luZm8ocGRldiwg Z3Z0X2Jyb2Fkd2VsbF9yZWdfaW5mbywgZ3Z0X2dldF9yZWdfbnVtKERfQkRXKSkpCisJCQlnb3Rv IGVycjsKKwl9CisKKwkvKiBHRFJTVCBjYW4gYmUgYWNjZXNzZWQgYnkgYnl0ZSAqLworCWUgPSBm aW5kX21taW9fZW50cnkocGRldiwgX0dFTjZfR0RSU1QpOworCWlmIChlKQorCQllLT5hbGlnbl9i eXRlcyA9IDE7CisKKwlyZXR1cm4gdHJ1ZTsKK2VycjoKKwlndnRfY2xlYW5fbW1pb19lbXVsYXRp b25fc3RhdGUocGRldik7CisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L21taW8uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FjYTYwZgotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmgKQEAgLTAsMCArMSw4NyBAQAor LyoKKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJF LgorICovCisKKyNpZm5kZWYgX0dWVF9NTUlPX0hfCisjZGVmaW5lIF9HVlRfTU1JT19IXworCisj aW5jbHVkZSAiaTkxNV9kcnYuaCIKKworLyogcmVnIGNvbnRhaW5zIGFkZHJlc3MsIHJlcXVpcmlu ZyBmaXggKi8KKyNkZWZpbmUgR1ZUX1JFR19BRERSX0ZJWAkoMSA8PCA1KQorLyogU3RhdHVzIGJp dCB1cGRhdGVkIGZyb20gSFcgKi8KKyNkZWZpbmUgR1ZUX1JFR19IV19TVEFUVVMJKDEgPDwgNikK Ky8qIFZpcnR1YWxpemVkICovCisjZGVmaW5lIEdWVF9SRUdfVklSVAkJKDEgPDwgNykKKy8qIE1v ZGUgY3RsIHJlZ2lzdGVycyB3aXRoIGhpZ2ggMTYgYml0cyBhcyB0aGUgbWFzayBiaXRzICovCisj ZGVmaW5lIEdWVF9SRUdfTU9ERV9DVEwJKDEgPDwgOCkKKy8qIFRoaXMgcmVnIGhhcyBiZWVuIHRy YWNrZWQgaW4gdmd0X2Jhc2VfcmVnX2luZm8gKi8KKyNkZWZpbmUgR1ZUX1JFR19UUkFDS0VECQko MSA8PCAxMCkKKy8qIFRoaXMgcmVnIGhhcyBiZWVuIGFjY2Vzc2VkIGJ5IGEgVk0gKi8KKyNkZWZp bmUgR1ZUX1JFR19BQ0NFU1NFRAkoMSA8PCAxMSkKKy8qIFRoaXMgcmVnIGlzIHNhdmVkL3Jlc3Rv cmVkIGF0IGNvbnRleHQgc3dpdGNoIHRpbWUgKi8KKyNkZWZpbmUgR1ZUX1JFR19TQVZFRAkJKDEg PDwgMTIpCisvKiBBY2Nlc3NlZCB0aHJvdWdoIEdQVSBjb21tYW5kcyAqLworI2RlZmluZSBHVlRf UkVHX0NNRF9BQ0NFU1MJKDEgPDwgMTQpCisvKiBpbmRleCBpbnRvIGFub3RoZXIgYXV4aWxsYXJ5 IHRhYmxlLiBNYXhpbXVtIDI1NiBlbnRyaWVzIG5vdyAqLworI2RlZmluZSBHVlRfUkVHX0lOREVY X1NISUZUCTE2CisjZGVmaW5lIEdWVF9SRUdfSU5ERVhfTUFTSwkoMHhGRkZGIDw8IEdWVF9SRUdf SU5ERVhfU0hJRlQpCisKKyNkZWZpbmUgR1ZUX0FVWF9UQUJMRV9OVU0JMjU2CisKKy8qIHN1cHBv c2UgYSByZWcgd29uJ3Qgc2V0IGJvdGggYml0cyAqLwordHlwZWRlZiB1bmlvbiB7CisJc3RydWN0 IHsKKwkJdTMyIG1hc2s7CisJfSBtb2RlX2N0bDsKKwlzdHJ1Y3QgeworCQl1MzIgbWFzazsKKwkJ dWludDMyX3QgIHNpemU7CisJfSBhZGRyX2ZpeDsKK30gZ3Z0X2F1eF9lbnRyeV90OworCitzdHJ1 Y3Qgdmd0X2RldmljZTsKKwordHlwZWRlZiBib29sICgqZ3Z0X21taW9faGFuZGxlcl90KShzdHJ1 Y3Qgdmd0X2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKiwgdW5zaWduZWQgaW50KTsKKwor c3RydWN0IGd2dF9tbWlvX2VudHJ5IHsKKwlzdHJ1Y3QgaGxpc3Rfbm9kZSBobGlzdDsKKwl1bnNp Z25lZCBpbnQgYmFzZTsKKwl1bnNpZ25lZCBpbnQgYWxpZ25fYnl0ZXM7CisJZ3Z0X21taW9faGFu ZGxlcl90IHJlYWQ7CisJZ3Z0X21taW9faGFuZGxlcl90IHdyaXRlOworfTsKKworc3RydWN0IGd2 dF9yZWdfaW5mbyB7CisJdTMyIHJlZzsKKwl1MzIgc2l6ZTsKKwl1MzIgZmxhZ3M7CisJdTMyIGFk ZHJfbWFzazsKKwl1MzIgZGV2aWNlOworCWd2dF9tbWlvX2hhbmRsZXJfdCByZWFkOworCWd2dF9t bWlvX2hhbmRsZXJfdCB3cml0ZTsKK307CisKK2V4dGVybiBzdHJ1Y3QgZ3Z0X3JlZ19pbmZvIGd2 dF9nZW5lcmFsX3JlZ19pbmZvW107CitleHRlcm4gc3RydWN0IGd2dF9yZWdfaW5mbyBndnRfYnJv YWR3ZWxsX3JlZ19pbmZvW107CitleHRlcm4gaW50IGd2dF9nZXRfcmVnX251bShpbnQgdHlwZSk7 CisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaAppbmRleCBkMzYzYjc0Li41NjgyZTFjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVnLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3JlZy5oCkBAIC0zMSw0ICszMSw4IEBACiAjZGVmaW5lIEdWVF9SRUdfQ0ZH X1NQQUNFX0JBUjEJMHgxOAogI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9CQVIyCTB4MjAKIAor I2RlZmluZSBfUENIX0dNQlVTMgkJCTB4YzUxMDgKKworI2RlZmluZSBfR0VONl9HRFJTVAkJCTB4 OTQxYworCiAjZW5kaWYKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=