From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 6/6] drm/msm: a5xx: Support per-instance pagetables Date: Tue, 7 Mar 2017 10:14:20 -0700 Message-ID: <1488906860-11073-7-git-send-email-jcrouse@codeaurora.org> References: <1488906860-11073-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488906860-11073-1-git-send-email-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org U3VwcG9ydCBwZXItaW5zdGFuY2UgcGFnZXRhYmxlcyBmb3IgNVhYIHRhcmdldHMuIFBlci1pbnN0 YW5jZQpwYWdldGFibGVzIGFsbG93IGVhY2ggb3BlbiBEUk0gaW5zdGFuY2UgdG8gaGF2ZSBpdHMg b3duIFZNIG1lbW9yeQpzcGFjZSB0byBwcmV2ZW50IGFjY2lkZW50bHkgb3IgbWFsaWNpb3VzbHkg Y29weWluZyBvciBvdmVyd3JpdGluZwpidWZmZXJzIGZyb20gb3RoZXIgaW5zdGFuY2VzLiBJdCBh bHNvIG9wZW5zIHRoZSBkb29yIGZvciBTVk0gc2luY2UKYW55IGdpdmVuIENQVSBzaWRlIGFkZHJl c3MgY2FuIGJlIG1vcmUgcmVsaWFibHkgbWFwcGVkIGludG8gdGhlCmluc3RhbmNlJ3MgR1BVIFZN IHNwYWNlIHdpdGhvdXQgY29uZmxpY3QuCgpUbyBzdXBwb3J0IHRoaXMgY3JlYXRlIGEgbmV3IGR5 bmFtaWMgZG9tYWluIChwYWdldGFibGUpIGZvciBlYWNoIG9wZW4KRFJNIGZpbGUgYW5kIG1hcCBi dWZmZXIgb2JqZWN0cyBmb3IgZWFjaCBpbnN0YW5jZSBpbnRvIHRoYXQgcGFnZXRhYmxlLgpVc2Ug dGhlIEdQVSB0byBzd2l0Y2ggdG8gdGhlIHBhZ2V0YWJsZSBmb3IgdGhlIGluc3RhbmNlIHdoaWxl IGRvaW5nIGEKc3VibWl0LgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBj b2RlYXVyb3JhLm9yZz4KLS0tCiBhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbXNtODk5Ni5kdHNp ICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMgICAgIHwg NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9ncHUuaCAgICAgfCAxNyArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9wcmVlbXB0LmMgfCA2MSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oICAgfCAgMiArCiBkcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9kcnYuYyAgICAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysr KysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgICAgICB8 ICAzICsrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fdm1hLmMgICAgICAgICB8IDM4ICsr KysrKysrKysrKysrKy0tLQogOCBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgMzEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL21zbTg5 OTYuZHRzaSBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9tc204OTk2LmR0c2kKaW5kZXggMjkw MzAyMC4uNjM3MmYzYSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL21zbTg5 OTYuZHRzaQorKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vbXNtODk5Ni5kdHNpCkBAIC04 NjcsNyArODY3LDkgQEAKIAogCQkJcWNvbSxza2lwLWluaXQ7CiAJCQlxY29tLHJlZ2lzdGVyLXNh dmU7CisKIAkJCWFybSxzbW11LWVuYWJsZS1zdGFsbDsKKwkJCXFjb20sZHluYW1pYzsKIAogCQkJ c3RhdHVzID0gIm9rYXkiOwogCQl9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMK aW5kZXggMDYyMzhiNy4uNjVjZDNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9ncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dw dS5jCkBAIC0xOCw3ICsxOCw3IEBACiAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KICNp bmNsdWRlIDxsaW51eC9vZl9yZXNlcnZlZF9tZW0uaD4KICNpbmNsdWRlICJtc21fZ2VtLmgiCi0j aW5jbHVkZSAibXNtX21tdS5oIgorI2luY2x1ZGUgIm1zbV9pb21tdS5oIgogI2luY2x1ZGUgImE1 eHhfZ3B1LmgiCiAKIGV4dGVybiBib29sIGhhbmdfZGVidWc7CkBAIC0yMDksNiArMjA5LDY2IEBA IHN0YXRpYyB2b2lkIGE1eHhfZmx1c2goc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9y aW5nYnVmZmVyICpyaW5nKQogCQlncHVfd3JpdGUoZ3B1LCBSRUdfQTVYWF9DUF9SQl9XUFRSLCB3 cHRyKTsKIH0KIAorc3RhdGljIHZvaWQgYTV4eF9zZXRfcGFnZXRhYmxlKHN0cnVjdCBtc21fZ3B1 ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZywKKwlzdHJ1Y3QgbXNtX2ZpbGVfcHJp dmF0ZSAqY3R4KQoreworCXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5v X2dwdShncHUpOworCXN0cnVjdCBtc21fbW11ICptbXUgPSBjdHgtPmFzcGFjZS0+bW11OworCXN0 cnVjdCBtc21faW9tbXUgKmlvbW11ID0gdG9fbXNtX2lvbW11KG1tdSk7CisKKwlpZiAoIWlvbW11 LT50dGJyMCkKKwkJcmV0dXJuOworCisJLyogVHVybiBvZmYgcHJvdGVjdGVkIG1vZGUgKi8KKwlP VVRfUEtUNyhyaW5nLCBDUF9TRVRfUFJPVEVDVEVEX01PREUsIDEpOworCU9VVF9SSU5HKHJpbmcs IDApOworCisJLyogVHVybiBvbiBBUElWIG1vZGUgdG8gYWNjZXNzIGNyaXRpY2FsIHJlZ2lvbnMg Ki8KKwlPVVRfUEtUNChyaW5nLCBSRUdfQTVYWF9DUF9DTlRMLCAxKTsKKwlPVVRfUklORyhyaW5n LCAxKTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgTUUgaXMgc3luY3Jvbml6ZWQgYmVmb3JlIHN0YXJp bmcgdGhlIHVwZGF0ZSAqLworCU9VVF9QS1Q3KHJpbmcsIENQX1dBSVRfRk9SX01FLCAwKTsKKwor CS8qIEV4ZWN1dGUgdGhlIHRhYmxlIHVwZGF0ZSAqLworCU9VVF9QS1Q3KHJpbmcsIENQX1NNTVVf VEFCTEVfVVBEQVRFLCAzKTsKKwlPVVRfUklORyhyaW5nLCBsb3dlcl8zMl9iaXRzKGlvbW11LT50 dGJyMCkpOworCU9VVF9SSU5HKHJpbmcsIHVwcGVyXzMyX2JpdHMoaW9tbXUtPnR0YnIwKSk7CisJ T1VUX1JJTkcocmluZywgaW9tbXUtPmNvbnRleHRpZHIpOworCisJLyoKKwkgKiBXcml0ZSB0aGUg bmV3IFRUQlIwIHRvIHRoZSBwcmVlbXB0aW9uIHJlY29yZHMgLSB0aGlzIHdpbGwgYmUgdXNlZCB0 bworCSAqIHJlbG9hZCB0aGUgcGFnZXRhYmxlIGlmIHRoZSBjdXJyZW50IHJpbmcgZ2V0cyBwcmVl bXB0ZWQgb3V0LgorCSAqLworCU9VVF9QS1Q3KHJpbmcsIENQX01FTV9XUklURSwgNCk7CisJT1VU X1JJTkcocmluZywgbG93ZXJfMzJfYml0cyhyYm1lbXB0cihhZHJlbm9fZ3B1LCByaW5nLT5pZCwg dHRicjApKSk7CisJT1VUX1JJTkcocmluZywgdXBwZXJfMzJfYml0cyhyYm1lbXB0cihhZHJlbm9f Z3B1LCByaW5nLT5pZCwgdHRicjApKSk7CisJT1VUX1JJTkcocmluZywgbG93ZXJfMzJfYml0cyhp b21tdS0+dHRicjApKTsKKwlPVVRfUklORyhyaW5nLCB1cHBlcl8zMl9iaXRzKGlvbW11LT50dGJy MCkpOworCisJLyogQWxzbyB3cml0ZSB0aGUgY3VycmVudCBjb250ZXh0aWRyIChBU0lEKSAqLwor CU9VVF9QS1Q3KHJpbmcsIENQX01FTV9XUklURSwgMyk7CisJT1VUX1JJTkcocmluZywgbG93ZXJf MzJfYml0cyhyYm1lbXB0cihhZHJlbm9fZ3B1LCByaW5nLT5pZCwKKwkJY29udGV4dGlkcikpKTsK KwlPVVRfUklORyhyaW5nLCB1cHBlcl8zMl9iaXRzKHJibWVtcHRyKGFkcmVub19ncHUsIHJpbmct PmlkLAorCQljb250ZXh0aWRyKSkpOworCU9VVF9SSU5HKHJpbmcsIGlvbW11LT5jb250ZXh0aWRy KTsKKworCS8qIEludmFsaWRhdGUgdGhlIGRyYXcgc3RhdGUgc28gd2Ugc3RhcnQgb2ZmIGZyZXNo ICovCisJT1VUX1BLVDcocmluZywgQ1BfU0VUX0RSQVdfU1RBVEUsIDMpOworCU9VVF9SSU5HKHJp bmcsIDB4NDAwMDApOworCU9VVF9SSU5HKHJpbmcsIDEpOworCU9VVF9SSU5HKHJpbmcsIDApOwor CisJLyogVHVybiBvZmYgQVBSSVYgKi8KKwlPVVRfUEtUNChyaW5nLCBSRUdfQTVYWF9DUF9DTlRM LCAxKTsKKwlPVVRfUklORyhyaW5nLCAwKTsKKworCS8qIFR1cm4gb2ZmIHByb3RlY3RlZCBtb2Rl ICovCisJT1VUX1BLVDcocmluZywgQ1BfU0VUX1BST1RFQ1RFRF9NT0RFLCAxKTsKKwlPVVRfUklO RyhyaW5nLCAxKTsKK30KKwogc3RhdGljIHZvaWQgYTV4eF9zdWJtaXQoc3RydWN0IG1zbV9ncHUg KmdwdSwgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQsCiAJc3RydWN0IG1zbV9maWxlX3By aXZhdGUgKmN0eCkKIHsKQEAgLTIxOSw2ICsyNzksOCBAQCBzdGF0aWMgdm9pZCBhNXh4X3N1Ym1p dChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCwKIAlz dHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcgPSBzdWJtaXQtPnJpbmc7CiAJdW5zaWduZWQgaW50 IGksIGlicyA9IDA7CiAKKwlhNXh4X3NldF9wYWdldGFibGUoZ3B1LCByaW5nLCBjdHgpOworCiAJ T1VUX1BLVDcocmluZywgQ1BfUFJFRU1QVF9FTkFCTEVfR0xPQkFMLCAxKTsKIAlPVVRfUklORyhy aW5nLCAweDAyKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4 eF9ncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmgKaW5kZXggZjA0 MmE3OC4uMTlkZWVhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4 eF9ncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5oCkBAIC00 Nyw2ICs0Nyw5IEBAIHN0cnVjdCBhNXh4X2dwdSB7CiAJYXRvbWljX3QgcHJlZW1wdF9zdGF0ZTsK IAlzdHJ1Y3QgdGltZXJfbGlzdCBwcmVlbXB0X3RpbWVyOwogCisJc3RydWN0IGE1eHhfc21tdV9p bmZvICpzbW11X2luZm87CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpzbW11X2luZm9fYm87CisJ dWludDY0X3Qgc21tdV9pbmZvX2lvdmE7CiB9OwogCiAjZGVmaW5lIHRvX2E1eHhfZ3B1KHgpIGNv bnRhaW5lcl9vZih4LCBzdHJ1Y3QgYTV4eF9ncHUsIGJhc2UpCkBAIC0xMjcsNiArMTMwLDIwIEBA IHN0cnVjdCBhNXh4X3ByZWVtcHRfcmVjb3JkIHsKICAqLwogI2RlZmluZSBBNVhYX1BSRUVNUFRf Q09VTlRFUl9TSVpFICgxNiAqIDQpCiAKKy8qCisgKiBUaGlzIGlzIGEgZ2xvYmFsIHN0cnVjdHVy ZSB0aGF0IHRoZSBwcmVlbXB0aW9uIGNvZGUgdXNlcyB0byBzd2l0Y2ggaW4gdGhlCisgKiBwYWdl dGFibGUgZm9yIHRoZSBwcmVlbXB0ZWQgcHJvY2VzcyAtIHRoZSBjb2RlIHN3aXRjaGVzIGluIHdo YXRldmVyIHdlCisgKiBhZnRlciBwcmVlbXB0aW5nIGluIGEgbmV3IHJpbmcuCisgKi8KK3N0cnVj dCBhNXh4X3NtbXVfaW5mbyB7CisJdWludDMyX3QgIG1hZ2ljOworCXVpbnQzMl90ICBfcGFkNDsK Kwl1aW50NjRfdCAgdHRicjA7CisJdWludDMyX3QgIGFzaWQ7CisJdWludDMyX3QgIGNvbnRleHRp ZHI7Cit9OworCisjZGVmaW5lIEE1WFhfU01NVV9JTkZPX01BR0lDIDB4MzYxOENEQTNVTAogCiBp bnQgYTV4eF9wb3dlcl9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpOwogdm9pZCBhNXh4X2dwbXVf dWNvZGVfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vYWRyZW5vL2E1eHhfcHJlZW1wdC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJl bm8vYTV4eF9wcmVlbXB0LmMKaW5kZXggNTgyYmE5Yi4uMWIyOTA0OSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9wcmVlbXB0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYTV4eF9wcmVlbXB0LmMKQEAgLTEyLDYgKzEyLDcgQEAKICAqLwogCiAj aW5jbHVkZSAibXNtX2dlbS5oIgorI2luY2x1ZGUgIm1zbV9pb21tdS5oIgogI2luY2x1ZGUgImE1 eHhfZ3B1LmgiCiAKIHN0YXRpYyB2b2lkICphbGxvY19rZXJuZWxfYm8oc3RydWN0IGRybV9kZXZp Y2UgKmRybSwgc3RydWN0IG1zbV9ncHUgKmdwdSwKQEAgLTE3Miw2ICsxNzMsMTcgQEAgdm9pZCBh NXh4X3ByZWVtcHRfdHJpZ2dlcihzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCWE1eHhfZ3B1LT5wcmVl bXB0W3JpbmctPmlkXS0+d3B0ciA9IGdldF93cHRyKHJpbmcpOwogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnJpbmctPmxvY2ssIGZsYWdzKTsKIAorCS8qIERvIHJlYWQgYmFycmllciB0byBtYWtl IHN1cmUgd2UgaGF2ZSB1cGRhdGVkIHBhZ2V0YWJsZSBpbmZvICovCisJcm1iKCk7CisKKwkvKiBT ZXQgdGhlIFNNTVUgaW5mbyBmb3IgdGhlIHByZWVtcHRpb24gKi8KKwlpZiAoYTV4eF9ncHUtPnNt bXVfaW5mbykgeworCQlhNXh4X2dwdS0+c21tdV9pbmZvLT50dGJyMCA9CisJCQlhZHJlbm9fZ3B1 LT5tZW1wdHJzLT50dGJyMFtyaW5nLT5pZF07CisJCWE1eHhfZ3B1LT5zbW11X2luZm8tPmNvbnRl eHRpZHIgPQorCQkJYWRyZW5vX2dwdS0+bWVtcHRycy0+Y29udGV4dGlkcltyaW5nLT5pZF07CisJ fQorCiAJLyogU2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBpbmNvbWluZyBwcmVlbXB0aW9uIHJlY29y ZCAqLwogCWdwdV93cml0ZTY0KGdwdSwgUkVHX0E1WFhfQ1BfQ09OVEVYVF9TV0lUQ0hfUkVTVE9S RV9BRERSX0xPLAogCQlSRUdfQTVYWF9DUF9DT05URVhUX1NXSVRDSF9SRVNUT1JFX0FERFJfSEks CkBAIC0yNDcsOSArMjU5LDEwIEBAIHZvaWQgYTV4eF9wcmVlbXB0X2h3X2luaXQoc3RydWN0IG1z bV9ncHUgKmdwdSkKIAkJfQogCX0KIAotCS8qIFdyaXRlIGEgMCB0byBzaWduYWwgdGhhdCB3ZSBh cmVuJ3Qgc3dpdGNoaW5nIHBhZ2V0YWJsZXMgKi8KKwkvKiBUZWxsIHRoZSBDUCB3aGVyZSB0byBm aW5kIHRoZSBzbW11X2luZm8gYnVmZmVyICovCiAJZ3B1X3dyaXRlNjQoZ3B1LCBSRUdfQTVYWF9D UF9DT05URVhUX1NXSVRDSF9TTU1VX0lORk9fTE8sCi0JCVJFR19BNVhYX0NQX0NPTlRFWFRfU1dJ VENIX1NNTVVfSU5GT19ISSwgMCk7CisJCVJFR19BNVhYX0NQX0NPTlRFWFRfU1dJVENIX1NNTVVf SU5GT19ISSwKKwkJYTV4eF9ncHUtPnNtbXVfaW5mb19pb3ZhKTsKIAogCS8qIFJlc2V0IHRoZSBw cmVlbXB0aW9uIHN0YXRlICovCiAJc2V0X3ByZWVtcHRfc3RhdGUoYTV4eF9ncHUsIFBSRUVNUFRf Tk9ORSk7CkBAIC0zMTEsNiArMzI0LDEzIEBAIHZvaWQgYTV4eF9wcmVlbXB0X2Zpbmkoc3RydWN0 IG1zbV9ncHUgKmdwdSkKIAogCQlhNXh4X2dwdS0+cHJlZW1wdF9ib1tpXSA9IE5VTEw7CiAJfQor CisJaWYgKGE1eHhfZ3B1LT5zbW11X2luZm9fYm8pIHsKKwkJaWYgKGE1eHhfZ3B1LT5zbW11X2lu Zm9faW92YSkKKwkJCW1zbV9nZW1fcHV0X2lvdmEoYTV4eF9ncHUtPnNtbXVfaW5mb19ibywgZ3B1 LT5hc3BhY2UpOworCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChhNXh4X2dw dS0+c21tdV9pbmZvX2JvKTsKKwkJYTV4eF9ncHUtPnNtbXVfaW5mb19ibyA9IE5VTEw7CisJfQog fQogCiB2b2lkIGE1eHhfcHJlZW1wdF9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCkBAIC0zMTgs NiArMzM4LDkgQEAgdm9pZCBhNXh4X3ByZWVtcHRfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQog CXN0cnVjdCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwogCXN0 cnVjdCBhNXh4X2dwdSAqYTV4eF9ncHUgPSB0b19hNXh4X2dwdShhZHJlbm9fZ3B1KTsKIAlzdHJ1 Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmc7CisJc3RydWN0IGE1eHhfc21tdV9pbmZvICpwdHI7CisJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpibzsKKwl1aW50NjRfdCBpb3ZhOwogCWludCBpOwogCiAJ LyogTm8gcHJlZW1wdGlvbiBpZiB3ZSBvbmx5IGhhdmUgb25lIHJpbmcgKi8KQEAgLTMyOCwxOCAr MzUxLDM0IEBAIHZvaWQgYTV4eF9wcmVlbXB0X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAkJ aWYgKCFyaW5nKQogCQkJY29udGludWU7CiAKLQkJaWYgKHByZWVtcHRfaW5pdF9yaW5nKGE1eHhf Z3B1LCByaW5nKSkgewotCQkJLyoKLQkJCSAqIE9uIGFueSBmYWlsdXJlIG91ciBhZHZlbnR1cmUg aXMgb3Zlci4gQ2xlYW4gdXAgYW5kCi0JCQkgKiBzZXQgbnJfcmluZ3MgdG8gMSB0byBmb3JjZSBw cmVlbXB0aW9uIG9mZgotCQkJICovCi0JCQlhNXh4X3ByZWVtcHRfZmluaShncHUpOwotCQkJZ3B1 LT5ucl9yaW5ncyA9IDE7CisJCWlmIChwcmVlbXB0X2luaXRfcmluZyhhNXh4X2dwdSwgcmluZykp CisJCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKG1zbV9pb21tdV9hbGxvd19keW5hbWljKGdwdS0+ YXNwYWNlLT5tbXUpKSB7CisJCXB0ciA9IGFsbG9jX2tlcm5lbF9ibyhncHUtPmRldiwgZ3B1LAor CQkJc2l6ZW9mKHN0cnVjdCBhNXh4X3NtbXVfaW5mbyksCisJCQlNU01fQk9fVU5DQUNIRUQsICZi bywgJmlvdmEpOwogCi0JCQlyZXR1cm47Ci0JCX0KKwkJaWYgKElTX0VSUihwdHIpKQorCQkJZ290 byBmYWlsOworCisJCXB0ci0+bWFnaWMgPSBBNVhYX1NNTVVfSU5GT19NQUdJQzsKKworCQlhNXh4 X2dwdS0+c21tdV9pbmZvX2JvID0gYm87CisJCWE1eHhfZ3B1LT5zbW11X2luZm9faW92YSA9IGlv dmE7CisJCWE1eHhfZ3B1LT5zbW11X2luZm8gPSBwdHI7CiAJfQogCiAJc2V0dXBfdGltZXIoJmE1 eHhfZ3B1LT5wcmVlbXB0X3RpbWVyLCBhNXh4X3ByZWVtcHRfdGltZXIsCiAJCSh1bnNpZ25lZCBs b25nKSBhNXh4X2dwdSk7CisKKwlyZXR1cm47CitmYWlsOgorCS8qCisJICogT24gYW55IGZhaWx1 cmUgb3VyIGFkdmVudHVyZSBpcyBvdmVyLiBDbGVhbiB1cCBhbmQKKwkgKiBzZXQgbnJfcmluZ3Mg dG8gMSB0byBmb3JjZSBwcmVlbXB0aW9uIG9mZgorCSAqLworCWE1eHhfcHJlZW1wdF9maW5pKGdw dSk7CisJZ3B1LT5ucl9yaW5ncyA9IDE7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2FkcmVuby9hZHJlbm9fZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJl bm9fZ3B1LmgKaW5kZXggODQxZWMzMC4uYjMzY2JmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRy ZW5vL2FkcmVub19ncHUuaApAQCAtOTMsNiArOTMsOCBAQCBzdHJ1Y3QgYWRyZW5vX2luZm8gewog c3RydWN0IGFkcmVub19yYm1lbXB0cnMgewogCXZvbGF0aWxlIHVpbnQzMl90IHJwdHJbTVNNX0dQ VV9NQVhfUklOR1NdOwogCXZvbGF0aWxlIHVpbnQzMl90IGZlbmNlW01TTV9HUFVfTUFYX1JJTkdT XTsKKwl2b2xhdGlsZSB1aW50NjRfdCB0dGJyMFtNU01fR1BVX01BWF9SSU5HU107CisJdm9sYXRp bGUgdW5zaWduZWQgaW50IGNvbnRleHRpZHJbTVNNX0dQVV9NQVhfUklOR1NdOwogfTsKIAogc3Ry dWN0IGFkcmVub19ncHUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwppbmRleCA3YjdhMmU3Li4xYWU0ODIz IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9kcnYuYwpAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgIm1zbV9m ZW5jZS5oIgogI2luY2x1ZGUgIm1zbV9ncHUuaCIKICNpbmNsdWRlICJtc21fa21zLmgiCisjaW5j bHVkZSAibXNtX2dlbS5oIgorI2luY2x1ZGUgIm1zbV9tbXUuaCIKIAogCiAvKgpAQCAtNTE1LDEx ICs1MTcsMzcgQEAgc3RhdGljIGludCBtc21fb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJICovCiAJbG9hZF9ncHUoZGV2KTsKIAorCWlmICghcHJp di0+Z3B1KQorCQlyZXR1cm4gMDsKKwogCWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBf S0VSTkVMKTsKIAlpZiAoIWN0eCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQljdHgtPmFzcGFjZSA9 IHByaXYtPmdwdS0+YXNwYWNlOworCS8qCisJICogRklYTUU6IHdlIHdpbGwgd2FudCB0byB1c2Ug YSBkeW5hbWljIG5hbWUgb2Ygc29tZSBzb3J0CisJICogRklYTUU6IFdFIHdpbGwgbmVlZCBhIHNt YXJ0ZXIgd2F5IHRvIHNldCB0aGUgcmFuZ2UgYmFzZWQgb24gdGFyZ2V0CisJICovCisJY3R4LT5h c3BhY2UgPSBtc21fZ2VtX2FkZHJlc3Nfc3BhY2VfY3JlYXRlX2luc3RhbmNlKAorCQlwcml2LT5n cHUtPmFzcGFjZS0+bW11LCAiZ3B1IiwgMHgxMDAwMDAwMDAsIDB4MWZmZmZmZmZmKTsKKworCWlm IChJU19FUlIoY3R4LT5hc3BhY2UpKSB7CisJCWludCByZXQgPSBQVFJfRVJSKGN0eC0+YXNwYWNl KTsKKworCQkvKgorCQkgKiBJZiBkeW5hbWljIGRvbWFpbnMgYXJlIG5vdCBzdXBwb3J0ZWQsIGV2 ZXJ5Ym9keSB1c2VzIHRoZSBzYW1lCisJCSAqIHBhZ2V0YWJsZQorCQkgKi8KKwkJaWYgKHJldCA9 PSAtRU9QTk9UU1VQUCkKKwkJCWN0eC0+YXNwYWNlID0gcHJpdi0+Z3B1LT5hc3BhY2U7CisJCWVs c2UgeworCQkJa2ZyZWUoY3R4KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9IGVsc2UgeworCQlj dHgtPmFzcGFjZS0+bW11LT5mdW5jcy0+YXR0YWNoKGN0eC0+YXNwYWNlLT5tbXUsIE5VTEwsIDAp OworCX0KKwogCWZpbGUtPmRyaXZlcl9wcml2ID0gY3R4OwogCiAJcmV0dXJuIDA7CkBAIC01MzQs MTAgKzU2MiwyNSBAQCBzdGF0aWMgdm9pZCBtc21fcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCWlmIChjdHggPT0gcHJpdi0+bGFzdGN0eCkK IAkJcHJpdi0+bGFzdGN0eCA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cit9CisKK3N0YXRpYyB2b2lkIG1zbV9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnBy aXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHggPSBm aWxlLT5kcml2ZXJfcHJpdjsKKworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwor CWlmIChjdHggJiYgY3R4LT5hc3BhY2UgJiYgY3R4LT5hc3BhY2UgIT0gcHJpdi0+Z3B1LT5hc3Bh Y2UpIHsKKwkJY3R4LT5hc3BhY2UtPm1tdS0+ZnVuY3MtPmRldGFjaChjdHgtPmFzcGFjZS0+bW11 LCBOVUxMLCAwKTsKKwkJbXNtX2dlbV9hZGRyZXNzX3NwYWNlX3B1dChjdHgtPmFzcGFjZSk7CisJ fQorCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJa2ZyZWUoY3R4KTsKIH0K IAorCiBzdGF0aWMgdm9pZCBtc21fbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7 CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC02 ODQsMTcgKzcyNyw2IEBAIHN0YXRpYyBpbnQgbXNtX2lvY3RsX2dlbV9jcHVfZmluaShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBp bnQgbXNtX2lvY3RsX2dlbV9pbmZvX2lvdmEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHVpbnQ2NF90ICppb3ZhKQotewotCXN0cnVjdCBtc21f ZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCi0JaWYgKCFwcml2LT5ncHUp Ci0JCXJldHVybiAtRUlOVkFMOwotCi0JcmV0dXJuIG1zbV9nZW1fZ2V0X2lvdmEob2JqLCBwcml2 LT5ncHUtPmFzcGFjZSwgaW92YSk7Ci19Ci0KIHN0YXRpYyBpbnQgbXNtX2lvY3RsX2dlbV9pbmZv KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCXN0cnVjdCBkcm1fZmlsZSAq ZmlsZSkKIHsKQEAgLTcxMCw5ICs3NDIsMTAgQEAgc3RhdGljIGludCBtc21faW9jdGxfZ2VtX2lu Zm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJuIC1FTk9FTlQ7 CiAKIAlpZiAoYXJncy0+ZmxhZ3MgJiBNU01fSU5GT19JT1ZBKSB7CisJCXN0cnVjdCBtc21fZmls ZV9wcml2YXRlICpjdHggPSBmaWxlLT5kcml2ZXJfcHJpdjsKIAkJdWludDY0X3QgaW92YTsKIAot CQlyZXQgPSBtc21faW9jdGxfZ2VtX2luZm9faW92YShkZXYsIG9iaiwgJmlvdmEpOworCQlyZXQg PSBtc21fZ2VtX2dldF9pb3ZhKG9iaiwgY3R4LT5hc3BhY2UsICZpb3ZhKTsKIAkJaWYgKCFyZXQp CiAJCQlhcmdzLT5vZmZzZXQgPSBpb3ZhOwogCX0gZWxzZSB7CkBAIC04MTgsNiArODUxLDcgQEAg c3RhdGljIGludCBtc21faW9jdGxfZ2VtX21hZHZpc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkJCQlEUklWRVJfTU9ERVNFVCwKIAkub3BlbiAgICAgICAgICAgICAgID0g bXNtX29wZW4sCiAJLnByZWNsb3NlICAgICAgICAgICA9IG1zbV9wcmVjbG9zZSwKKwkucG9zdGNs b3NlCSAgICA9IG1zbV9wb3N0Y2xvc2UsCiAJLmxhc3RjbG9zZSAgICAgICAgICA9IG1zbV9sYXN0 Y2xvc2UsCiAJLmlycV9oYW5kbGVyICAgICAgICA9IG1zbV9pcnEsCiAJLmlycV9wcmVpbnN0YWxs ICAgICA9IG1zbV9pcnFfcHJlaW5zdGFsbCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKaW5kZXggYmJhZDZj Ny4uM2VmYjNmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKQEAgLTE5MSw2ICsxOTEsOSBAQCBpbnQg bXNtX2dlbV9tYXBfdm1hKHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKIHN0 cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKgogbXNtX2dlbV9hZGRyZXNzX3NwYWNlX2NyZWF0 ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAkJY29u c3QgY2hhciAqbmFtZSk7CitzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICoKK21zbV9nZW1f YWRkcmVzc19zcGFjZV9jcmVhdGVfaW5zdGFuY2Uoc3RydWN0IG1zbV9tbXUgKnBhcmVudCwgY29u c3QgY2hhciAqbmFtZSwKKwkJdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCk7CiAKIHZvaWQg bXNtX2dlbV9zdWJtaXRfZnJlZShzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCk7CiBpbnQg bXNtX2lvY3RsX2dlbV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbV92bWEuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dlbV92bWEuYwppbmRleCAyYjFkMmNiLi4wZjY1YjE5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fdm1hLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ2VtX3ZtYS5jCkBAIC04NSw5ICs4NSw5IEBAIHZvaWQgbXNtX2dlbV9hZGRy ZXNzX3NwYWNlX3B1dChzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICphc3BhY2UpCiAJcmV0 dXJuIHJldDsKIH0KIAotc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqCi1tc21fZ2VtX2Fk ZHJlc3Nfc3BhY2VfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGlvbW11X2RvbWFp biAqZG9tYWluLAotCQljb25zdCBjaGFyICpuYW1lKQorc3RhdGljIHN0cnVjdCBtc21fZ2VtX2Fk ZHJlc3Nfc3BhY2UgKgorbXNtX2dlbV9hZGRyZXNzX3NwYWNlX25ldyhzdHJ1Y3QgbXNtX21tdSAq bW11LCBjb25zdCBjaGFyICpuYW1lLAorCQl1aW50NjRfdCBzdGFydCwgdWludDY0X3QgZW5kKQog ewogCXN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZTsKIApAQCAtOTYsMTIgKzk2 LDM4IEBAIHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKgogCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKIAogCWFzcGFjZS0+bmFtZSA9IG5hbWU7Ci0JYXNwYWNlLT5tbXUgPSBtc21faW9t bXVfbmV3KGRldiwgZG9tYWluKTsKKwlhc3BhY2UtPm1tdSA9IG1tdTsKIAotCWRybV9tbV9pbml0 KCZhc3BhY2UtPm1tLCAoZG9tYWluLT5nZW9tZXRyeS5hcGVydHVyZV9zdGFydCA+PiBQQUdFX1NI SUZUKSwKLQkJCShkb21haW4tPmdlb21ldHJ5LmFwZXJ0dXJlX2VuZCA+PiBQQUdFX1NISUZUKSAt IDEpOworCWRybV9tbV9pbml0KCZhc3BhY2UtPm1tLCAoc3RhcnQgPj4gUEFHRV9TSElGVCksCisJ CShlbmQgPj4gUEFHRV9TSElGVCkgLSAxKTsKIAogCWtyZWZfaW5pdCgmYXNwYWNlLT5rcmVmKTsK IAogCXJldHVybiBhc3BhY2U7CiB9CisKK3N0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKgor bXNtX2dlbV9hZGRyZXNzX3NwYWNlX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBp b21tdV9kb21haW4gKmRvbWFpbiwKKwkJY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgbXNt X21tdSAqbW11ID0gbXNtX2lvbW11X25ldyhkZXYsIGRvbWFpbik7CisKKwlpZiAoSVNfRVJSKG1t dSkpCisJCXJldHVybiAoc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqKSBtbXU7CisKKwly ZXR1cm4gbXNtX2dlbV9hZGRyZXNzX3NwYWNlX25ldyhtbXUsIG5hbWUsCisJCWRvbWFpbi0+Z2Vv bWV0cnkuYXBlcnR1cmVfc3RhcnQsCisJCWRvbWFpbi0+Z2VvbWV0cnkuYXBlcnR1cmVfZW5kKTsK K30KKworc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqCittc21fZ2VtX2FkZHJlc3Nfc3Bh Y2VfY3JlYXRlX2luc3RhbmNlKHN0cnVjdCBtc21fbW11ICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5h bWUsCisJCXVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBlbmQpCit7CisJc3RydWN0IG1zbV9tbXUg KmNoaWxkID0gbXNtX2lvbW11X25ld19keW5hbWljKHBhcmVudCk7CisKKwlpZiAoSVNfRVJSKGNo aWxkKSkKKwkJcmV0dXJuIChzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3NwYWNlICopIGNoaWxkOwor CisJcmV0dXJuIG1zbV9nZW1fYWRkcmVzc19zcGFjZV9uZXcoY2hpbGQsIG5hbWUsIHN0YXJ0LCBl bmQpOworfQotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zy ZWVkcmVubwo=