From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH RFC 055/111] staging: etnaviv: add userptr mapping support Date: Thu, 2 Apr 2015 17:29:57 +0200 Message-ID: <1427988653-754-56-git-send-email-l.stach@pengutronix.de> References: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id 3A7336EA42 for ; Thu, 2 Apr 2015 08:30:59 -0700 (PDT) In-Reply-To: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> 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: Russell King , kernel@pengutronix.de List-Id: dri-devel@lists.freedesktop.org RnJvbTogUnVzc2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51eC5vcmcudWs+CgpBZGQgc3Vw cG9ydCBmb3IgbWFwcGluZyB1c2Vyc3BhY2UgbWVtb3J5IHRvIHRoZSBHUFUuICBUaGlzIGlzIHVz ZWZ1bCBmb3IKY2FzZXMgd2hlcmUgd2UgaGF2ZSBzb21lIG1hbGxvYygpJ2QgbWVtb3J5IHdoaWNo IHdlIHdpc2ggdG8gcGFzcyB0byB0aGUKR1BVIG9yIHNobWVtIG1lbW9yeSB2aWEgWHYsIGFuZCB3 aXNoIHRvIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBhbgphZGRpdGlvbmFsIG1lbWNweSgpLCBlc3Bl Y2lhbGx5IGFzIGlzIGlzIGV4cGVuc2l2ZSB0byBtZW1jcHkoKWluZyBhIDEwODBwCmZyYW1lLgoK VGhpcyBpcyBtb3N0bHkgdGFrZW4gZnJvbSB0aGUgMy4xNyBpOTE1IHVzZXJwdHIgaW1wbGVtZW50 YXRpb24sIGV4Y2VwdAp3ZSBzb2x2ZSB0aGUgaGVsZC1tbSBwcm9ibGVtIGluIChpbWhvKSBhIG5p Y2VyIHdheSwgYW5kIHdlIGFsc28gYXZvaWQKZXhjZXNzaXZlIHNwaW5uaW5nIHdpdGggLUVBR0FJ TiB3YWl0aW5nIGZvciB0aGUgcXVldWVkIHdvcmsgdG8gcnVuLgoKU2lnbmVkLW9mZi1ieTogUnVz c2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51eC5vcmcudWs+Ci0tLQogZHJpdmVycy9zdGFn aW5nL2V0bmF2aXYvZXRuYXZpdl9kcnYuYyAgICAgICAgfCAgMzAgKysrKysKIGRyaXZlcnMvc3Rh Z2luZy9ldG5hdml2L2V0bmF2aXZfZHJ2LmggICAgICAgIHwgICAyICsKIGRyaXZlcnMvc3RhZ2lu Zy9ldG5hdml2L2V0bmF2aXZfZ2VtLmMgICAgICAgIHwgMTk1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKwogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW0uaCAgICAgICAgfCAg IDkgKysKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5jIHwgICA5 ICsrCiBpbmNsdWRlL3VhcGkvZHJtL2V0bmF2aXZfZHJtLmggICAgICAgICAgICAgICB8ICAxMyAr LQogNiBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZHJ2LmMgYi9kcml2ZXJz L3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5jCmluZGV4IDJiNjgwMGE3ODJiYi4uNWYzODZh NzA0NWFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5j CisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZHJ2LmMKQEAgLTQ1NCw2ICs0 NTQsMzUgQEAgc3RhdGljIGludCBldG5hdml2X2lvY3RsX3dhaXRfZmVuY2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkJCSZUUyhhcmdzLT50aW1lb3V0KSk7CiB9CiAK K3N0YXRpYyBpbnQgZXRuYXZpdl9pb2N0bF9nZW1fdXNlcnB0cihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAorCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJt X2V0bmF2aXZfZ2VtX3VzZXJwdHIgKmFyZ3MgPSBkYXRhOworCWludCBhY2Nlc3M7CisKKwlpZiAo YXJncy0+ZmxhZ3MgJiB+KEVUTkFfVVNFUlBUUl9SRUFEfEVUTkFfVVNFUlBUUl9XUklURSkgfHwK KwkgICAgYXJncy0+ZmxhZ3MgPT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAob2Zmc2V0 X2luX3BhZ2UoYXJncy0+dXNlcl9wdHIgfCBhcmdzLT51c2VyX3NpemUpIHx8CisJICAgICh1aW50 cHRyX3QpYXJncy0+dXNlcl9wdHIgIT0gYXJncy0+dXNlcl9wdHIgfHwKKwkgICAgKHVpbnQzMl90 KWFyZ3MtPnVzZXJfc2l6ZSAhPSBhcmdzLT51c2VyX3NpemUpCisJCXJldHVybiAtRUlOVkFMOwor CisJaWYgKGFyZ3MtPmZsYWdzICYgRVROQV9VU0VSUFRSX1dSSVRFKQorCQlhY2Nlc3MgPSBWRVJJ RllfV1JJVEU7CisJZWxzZQorCQlhY2Nlc3MgPSBWRVJJRllfUkVBRDsKKworCWlmICghYWNjZXNz X29rKGFjY2VzcywgKHZvaWQgX191c2VyICopKHVuc2lnbmVkIGxvbmcpYXJncy0+dXNlcl9wdHIs CisJCSAgICAgICBhcmdzLT51c2VyX3NpemUpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVy biBldG5hdml2X2dlbV9uZXdfdXNlcnB0cihkZXYsIGZpbGUsIGFyZ3MtPnVzZXJfcHRyLAorCQkJ CSAgICAgICBhcmdzLT51c2VyX3NpemUsIGFyZ3MtPmZsYWdzLAorCQkJCSAgICAgICAmYXJncy0+ aGFuZGxlKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBldG5hdml2 X2lvY3Rsc1tdID0gewogI2RlZmluZSBFVE5BX0lPQ1RMKG4sIGZ1bmMsIGZsYWdzKSBcCiAJRFJN X0lPQ1RMX0RFRl9EUlYoRVROQVZJVl8jI24sIGV0bmF2aXZfaW9jdGxfIyNmdW5jLCBmbGFncykK QEAgLTQ2NCw2ICs0OTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGV0 bmF2aXZfaW9jdGxzW10gPSB7CiAJRVROQV9JT0NUTChHRU1fQ1BVX0ZJTkksIGdlbV9jcHVfZmlu aSwgRFJNX1VOTE9DS0VEfERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAogCUVUTkFfSU9DVEwo R0VNX1NVQk1JVCwgICBnZW1fc3VibWl0LCAgIERSTV9VTkxPQ0tFRHxEUk1fQVVUSHxEUk1fUkVO REVSX0FMTE9XKSwKIAlFVE5BX0lPQ1RMKFdBSVRfRkVOQ0UsICAgd2FpdF9mZW5jZSwgICBEUk1f VU5MT0NLRUR8RFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCisJRVROQV9JT0NUTChHRU1fVVNF UlBUUiwgIGdlbV91c2VycHRyLCAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAogfTsK IAogc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2bV9vcHMgPSB7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5oIGIvZHJpdmVy cy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9kcnYuaAppbmRleCA3OWYyMmQxNWZjNjMuLjU5YWE0 NjY2ZDJjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9kcnYu aAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5oCkBAIC0xMDcsNiAr MTA3LDggQEAgaW50IGV0bmF2aXZfZ2VtX25ld19oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlLAogCQl1aW50MzJfdCBzaXplLCB1aW50MzJfdCBmbGFn cywgdWludDMyX3QgKmhhbmRsZSk7CiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmV0bmF2aXZfZ2Vt X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl1aW50MzJfdCBzaXplLCB1aW50MzJfdCBm bGFncyk7CitpbnQgZXRuYXZpdl9nZW1fbmV3X3VzZXJwdHIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlLAorCXVpbnRwdHJfdCBwdHIsIHVpbnQzMl90IHNpemUs IHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKIHUzMiBldG5hdml2X2J1ZmZlcl9p bml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KTsKIHZvaWQgZXRuYXZpdl9idWZmZXJfcXVldWUo c3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHVuc2lnbmVkIGludCBldmVudCwKIAlzdHJ1Y3QgZXRu YXZpdl9nZW1fc3VibWl0ICpzdWJtaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0 bmF2aXYvZXRuYXZpdl9nZW0uYyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2Vt LmMKaW5kZXggYWQ4ZmE3MWVhOTIwLi40ZTI4YzU3YjI0MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2 aXYvZXRuYXZpdl9nZW0uYwpAQCAtNjk0LDMgKzY5NCwxOTggQEAgaW50IGV0bmF2aXZfZ2VtX25l d19wcml2YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCB1aW50MzJfdCBm bGFncywKIAogCXJldHVybiAwOwogfQorCitzdHJ1Y3QgZ2V0X3BhZ2VzX3dvcmsgeworCXN0cnVj dCB3b3JrX3N0cnVjdCB3b3JrOworCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOworCXN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzazsKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iajsK K307CisKK3N0YXRpYyBzdHJ1Y3QgcGFnZSAqKmV0bmF2aXZfZ2VtX3VzZXJwdHJfZG9fZ2V0X3Bh Z2VzKAorCXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqLCBzdHJ1Y3QgbW1f c3RydWN0ICptbSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQoreworCWludCByZXQsIHBpbm5l ZCwgbnBhZ2VzID0gZXRuYXZpdl9vYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOworCXN0cnVj dCBwYWdlICoqcHZlYzsKKwl1aW50cHRyX3QgcHRyOworCisJcHZlYyA9IGRybV9tYWxsb2NfYWIo bnBhZ2VzLCBzaXplb2Yoc3RydWN0IHBhZ2UgKikpOworCWlmICghcHZlYykKKwkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7CisKKwlwaW5uZWQgPSAwOworCXB0ciA9IGV0bmF2aXZfb2JqLT51c2Vy cHRyLnB0cjsKKworCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwl3aGlsZSAocGlubmVkIDwg bnBhZ2VzKSB7CisJCXJldCA9IGdldF91c2VyX3BhZ2VzKHRhc2ssIG1tLCBwdHIsIG5wYWdlcyAt IHBpbm5lZCwKKwkJCQkgICAgICFldG5hdml2X29iai0+dXNlcnB0ci5ybywgMCwKKwkJCQkgICAg IHB2ZWMgKyBwaW5uZWQsIE5VTEwpOworCQlpZiAocmV0IDwgMCkKKwkJCWJyZWFrOworCisJCXB0 ciArPSByZXQgKiBQQUdFX1NJWkU7CisJCXBpbm5lZCArPSByZXQ7CisJfQorCXVwX3JlYWQoJm1t LT5tbWFwX3NlbSk7CisKKwlpZiAocmV0IDwgMCkgeworCQlyZWxlYXNlX3BhZ2VzKHB2ZWMsIHBp bm5lZCwgMCk7CisJCWRybV9mcmVlX2xhcmdlKHB2ZWMpOworCQlyZXR1cm4gRVJSX1BUUihyZXQp OworCX0KKwkKKwlyZXR1cm4gcHZlYzsKK30KKworc3RhdGljIHZvaWQgX19ldG5hdml2X2dlbV91 c2VycHRyX2dldF9wYWdlcyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQoreworCXN0cnVjdCBn ZXRfcGFnZXNfd29yayAqd29yayA9IGNvbnRhaW5lcl9vZihfd29yaywgdHlwZW9mKCp3b3JrKSwg d29yayk7CisJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmogPSB3b3JrLT5l dG5hdml2X29iajsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZXRuYXZpdl9vYmotPmJhc2Uu ZGV2OworCXN0cnVjdCBwYWdlICoqcHZlYzsKKworCXB2ZWMgPSBldG5hdml2X2dlbV91c2VycHRy X2RvX2dldF9wYWdlcyhldG5hdml2X29iaiwgd29yay0+bW0sIHdvcmstPnRhc2spOworCisJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWlmIChJU19FUlIocHZlYykpIHsKKwkJZXRu YXZpdl9vYmotPnVzZXJwdHIud29yayA9IEVSUl9DQVNUKHB2ZWMpOworCX0gZWxzZSB7CisJCWV0 bmF2aXZfb2JqLT51c2VycHRyLndvcmsgPSBOVUxMOworCQlldG5hdml2X29iai0+cGFnZXMgPSBw dmVjOworCX0KKworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZldG5hdml2X29iai0+YmFz ZSk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwltbXB1dCh3b3JrLT5t bSk7CisJcHV0X3Rhc2tfc3RydWN0KHdvcmstPnRhc2spOworCWtmcmVlKHdvcmspOworfQorCitz dGF0aWMgaW50IGV0bmF2aXZfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzKHN0cnVjdCBldG5hdml2X2dl bV9vYmplY3QgKmV0bmF2aXZfb2JqKQoreworCXN0cnVjdCBldG5hdml2X2RybV9wcml2YXRlICpw cml2OworCXN0cnVjdCBwYWdlICoqcHZlYyA9IE5VTEw7CisJc3RydWN0IGdldF9wYWdlc193b3Jr ICp3b3JrOworCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOworCWludCByZXQsIHBpbm5lZCwgbnBhZ2Vz ID0gZXRuYXZpdl9vYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOworCisJaWYgKGV0bmF2aXZf b2JqLT51c2VycHRyLndvcmspIHsKKwkJaWYgKElTX0VSUihldG5hdml2X29iai0+dXNlcnB0ci53 b3JrKSkgeworCQkJcmV0ID0gUFRSX0VSUihldG5hdml2X29iai0+dXNlcnB0ci53b3JrKTsKKwkJ CWV0bmF2aXZfb2JqLT51c2VycHRyLndvcmsgPSBOVUxMOworCQl9IGVsc2UgeworCQkJcmV0ID0g LUVBR0FJTjsKKwkJfQorCQlyZXR1cm4gcmV0OworCX0KKworCW1tID0gZ2V0X3Rhc2tfbW0oZXRu YXZpdl9vYmotPnVzZXJwdHIudGFzayk7CisJcGlubmVkID0gMDsKKwlpZiAobW0gPT0gY3VycmVu dC0+bW0pIHsKKwkJcHZlYyA9IGRybV9tYWxsb2NfYWIobnBhZ2VzLCBzaXplb2Yoc3RydWN0IHBh Z2UgKikpOworCQlpZiAoIXB2ZWMpIHsKKwkJCW1tcHV0KG1tKTsKKwkJCXJldHVybiAtRU5PTUVN OworCQl9CisKKwkJcGlubmVkID0gX19nZXRfdXNlcl9wYWdlc19mYXN0KGV0bmF2aXZfb2JqLT51 c2VycHRyLnB0ciwgbnBhZ2VzLAorCQkJCQkgICAgICAgIWV0bmF2aXZfb2JqLT51c2VycHRyLnJv LCBwdmVjKTsKKwkJaWYgKHBpbm5lZCA8IDApIHsKKwkJCWRybV9mcmVlX2xhcmdlKHB2ZWMpOwor CQkJbW1wdXQobW0pOworCQkJcmV0dXJuIHBpbm5lZDsKKwkJfQorCisJCWlmIChwaW5uZWQgPT0g bnBhZ2VzKSB7CisJCQlldG5hdml2X29iai0+cGFnZXMgPSBwdmVjOworCQkJbW1wdXQobW0pOwor CQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZWxlYXNlX3BhZ2VzKHB2ZWMsIHBpbm5lZCwgMCk7 CisJZHJtX2ZyZWVfbGFyZ2UocHZlYyk7CisKKwl3b3JrID0ga21hbGxvYyhzaXplb2YoKndvcmsp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIXdvcmspIHsKKwkJbW1wdXQobW0pOworCQlyZXR1cm4gLUVO T01FTTsKKwl9CisKKwlnZXRfdGFza19zdHJ1Y3QoY3VycmVudCk7CisJZHJtX2dlbV9vYmplY3Rf cmVmZXJlbmNlKCZldG5hdml2X29iai0+YmFzZSk7CisKKwl3b3JrLT5tbSA9IG1tOworCXdvcmst PnRhc2sgPSBjdXJyZW50OworCXdvcmstPmV0bmF2aXZfb2JqID0gZXRuYXZpdl9vYmo7CisKKwll dG5hdml2X29iai0+dXNlcnB0ci53b3JrID0gJndvcmstPndvcms7CisJSU5JVF9XT1JLKCZ3b3Jr LT53b3JrLCBfX2V0bmF2aXZfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzKTsKKworCXByaXYgPSBldG5h dml2X29iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOworCXF1ZXVlX3dvcmsocHJpdi0+d3EsICZ3 b3JrLT53b3JrKTsKKworCXJldHVybiAtRUFHQUlOOworfQorCitzdGF0aWMgdm9pZCBldG5hdml2 X2dlbV91c2VycHRyX3JlbGVhc2Uoc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9v YmopCit7CisJaWYgKGV0bmF2aXZfb2JqLT5zZ3QpIHsKKwkJLyoKKwkJICogRm9yIG5vbi1jYWNo ZWQgYnVmZmVycywgZW5zdXJlIHRoZSBuZXcgcGFnZXMgYXJlIGNsZWFuCisJCSAqIGJlY2F1c2Ug ZGlzcGxheSBjb250cm9sbGVyLCBHUFUsIGV0Yy4gYXJlIG5vdCBjb2hlcmVudDoKKwkJICovCisJ CWlmIChldG5hdml2X29iai0+ZmxhZ3MgJiAoRVROQV9CT19XQ3xFVE5BX0JPX0NBQ0hFRCkpCisJ CQlkbWFfdW5tYXBfc2coZXRuYXZpdl9vYmotPmJhc2UuZGV2LT5kZXYsCisJCQkJICAgICBldG5h dml2X29iai0+c2d0LT5zZ2wsCisJCQkJICAgICBldG5hdml2X29iai0+c2d0LT5uZW50cywKKwkJ CQkgICAgIERNQV9CSURJUkVDVElPTkFMKTsKKwkJc2dfZnJlZV90YWJsZShldG5hdml2X29iai0+ c2d0KTsKKwkJa2ZyZWUoZXRuYXZpdl9vYmotPnNndCk7CisJfQorCWlmIChldG5hdml2X29iai0+ cGFnZXMpIHsKKwkJaW50IG5wYWdlcyA9IGV0bmF2aXZfb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9T SElGVDsKKworCQlyZWxlYXNlX3BhZ2VzKGV0bmF2aXZfb2JqLT5wYWdlcywgbnBhZ2VzLCAwKTsK KwkJZHJtX2ZyZWVfbGFyZ2UoZXRuYXZpdl9vYmotPnBhZ2VzKTsKKwl9CisJcHV0X3Rhc2tfc3Ry dWN0KGV0bmF2aXZfb2JqLT51c2VycHRyLnRhc2spOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGV0bmF2aXZfZ2VtX29wcyBldG5hdml2X2dlbV91c2VycHRyX29wcyA9IHsKKwkuZ2V0X3BhZ2Vz ID0gZXRuYXZpdl9nZW1fdXNlcnB0cl9nZXRfcGFnZXMsCisJLnJlbGVhc2UgPSBldG5hdml2X2dl bV91c2VycHRyX3JlbGVhc2UsCit9OworCitpbnQgZXRuYXZpdl9nZW1fbmV3X3VzZXJwdHIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAorCXVpbnRwdHJfdCBw dHIsIHVpbnQzMl90IHNpemUsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKQorewor CXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqOworCWludCByZXQ7CisKKwly ZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gZXRuYXZpdl9nZW1fbmV3X3ByaXZhdGUoZGV2 LCBzaXplLCBFVE5BX0JPX0NBQ0hFRCwgJmV0bmF2aXZfb2JqKTsKKwlpZiAocmV0ID09IDApIHsK KwkJZXRuYXZpdl9vYmotPm9wcyA9ICZldG5hdml2X2dlbV91c2VycHRyX29wczsKKwkJZXRuYXZp dl9vYmotPnVzZXJwdHIucHRyID0gcHRyOworCQlldG5hdml2X29iai0+dXNlcnB0ci50YXNrID0g Y3VycmVudDsKKwkJZXRuYXZpdl9vYmotPnVzZXJwdHIucm8gPSAhKGZsYWdzICYgRVROQV9VU0VS UFRSX1dSSVRFKTsKKwkJZ2V0X3Rhc2tfc3RydWN0KGN1cnJlbnQpOworCX0KKwltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwly ZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJmV0bmF2aXZfb2JqLT5iYXNlLCBoYW5k bGUpOworCisJLyogZHJvcCByZWZlcmVuY2UgZnJvbSBhbGxvY2F0ZSAtIGhhbmRsZSBob2xkcyBp dCBub3cgKi8KKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZCgmZXRuYXZpdl9v YmotPmJhc2UpOworCisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2lu Zy9ldG5hdml2L2V0bmF2aXZfZ2VtLmggYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2 X2dlbS5oCmluZGV4IGJiZmNiZDc1NTdmZS4uYWRkNjE2MzM4YTlmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dlbS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9l dG5hdml2L2V0bmF2aXZfZ2VtLmgKQEAgLTIzLDYgKzIzLDEzIEBACiAKIHN0cnVjdCBldG5hdml2 X2dlbV9vcHM7CiAKK3N0cnVjdCBldG5hdml2X2dlbV91c2VycHRyIHsKKwl1aW50cHRyX3QgcHRy OworCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcms7 CisJYm9vbCBybzsKK307CisKIHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgewogCXN0cnVjdCBk cm1fZ2VtX29iamVjdCBiYXNlOwogCWNvbnN0IHN0cnVjdCBldG5hdml2X2dlbV9vcHMgKm9wczsK QEAgLTY0LDYgKzcxLDggQEAgc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCB7CiAKIAkvKiBmb3Ig YnVmZmVyIG1hbmlwdWxhdGlvbiBkdXJpbmcgc3VibWl0ICovCiAJdTMyIG9mZnNldDsKKworCXN0 cnVjdCBldG5hdml2X2dlbV91c2VycHRyIHVzZXJwdHI7CiB9OwogI2RlZmluZSB0b19ldG5hdml2 X2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0LCBiYXNlKQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dlbV9zdWJtaXQu YyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5jCmluZGV4IGFm MzcxODQ2NWVhMS4uYmJlMjE3MWI4ZWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXRu YXZpdi9ldG5hdml2X2dlbV9zdWJtaXQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9l dG5hdml2X2dlbV9zdWJtaXQuYwpAQCAtNDM1LDUgKzQzNSwxNCBAQCBvdXQ6CiAJaWYgKHN1Ym1p dCkKIAkJc3VibWl0X2NsZWFudXAoc3VibWl0LCAhIXJldCk7CiAJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CisKKwkvKgorCSAqIElmIHdlJ3JlIHJldHVybmluZyAtRUFHQUlOLCBp dCBjb3VsZCBiZSBkdWUgdG8gdGhlIHVzZXJwdHIgY29kZQorCSAqIHdhbnRpbmcgdG8gcnVuIGl0 cyB3b3JrcXVldWUgb3V0c2lkZSBvZiB0aGUgc3RydWN0X211dGV4LgorCSAqIEZsdXNoIG91ciB3 b3JrcXVldWUgdG8gZW5zdXJlIHRoYXQgaXQgaXMgcnVuIGluIGEgdGltZWx5IG1hbm5lci4KKwkg Ki8KKwlpZiAocmV0ID09IC1FQUdBSU4pCisJCWZsdXNoX3dvcmtxdWV1ZShwcml2LT53cSk7CisK IAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9ldG5hdml2X2Ry bS5oIGIvaW5jbHVkZS91YXBpL2RybS9ldG5hdml2X2RybS5oCmluZGV4IDk2NTQwMjEwMTdmZC4u YTRjMTA5ZmZiZWE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2V0bmF2aXZfZHJtLmgK KysrIGIvaW5jbHVkZS91YXBpL2RybS9ldG5hdml2X2RybS5oCkBAIC0yMDIsNiArMjAyLDE1IEBA IHN0cnVjdCBkcm1fZXRuYXZpdl93YWl0X2ZlbmNlIHsKIAlzdHJ1Y3QgZHJtX2V0bmF2aXZfdGlt ZXNwZWMgdGltZW91dDsgICAvKiBpbiAqLwogfTsKIAorI2RlZmluZSBFVE5BX1VTRVJQVFJfUkVB RAkweDAxCisjZGVmaW5lIEVUTkFfVVNFUlBUUl9XUklURQkweDAyCitzdHJ1Y3QgZHJtX2V0bmF2 aXZfZ2VtX3VzZXJwdHIgeworCXVpbnQ2NF90IHVzZXJfcHRyOwkvKiBpbiwgcGFnZSBhbGlnbmVk IHVzZXIgcG9pbnRlciAqLworCXVpbnQ2NF90IHVzZXJfc2l6ZTsJLyogaW4sIHBhZ2UgYWxpZ25l ZCB1c2VyIHNpemUgKi8KKwl1aW50MzJfdCBmbGFnczsJCS8qIGluLCBmbGFncyAqLworCXVpbnQz Ml90IGhhbmRsZTsJLyogb3V0LCBub24temVybyBoYW5kbGUgKi8KK307CisKICNkZWZpbmUgRFJN X0VUTkFWSVZfR0VUX1BBUkFNICAgICAgICAgIDB4MDAKIC8qIHBsYWNlaG9sZGVyOgogI2RlZmlu ZSBEUk1fTVNNX1NFVF9QQVJBTSAgICAgICAgICAgICAgMHgwMQpAQCAtMjEyLDcgKzIyMSw4IEBA IHN0cnVjdCBkcm1fZXRuYXZpdl93YWl0X2ZlbmNlIHsKICNkZWZpbmUgRFJNX0VUTkFWSVZfR0VN X0NQVV9GSU5JICAgICAgIDB4MDUKICNkZWZpbmUgRFJNX0VUTkFWSVZfR0VNX1NVQk1JVCAgICAg ICAgIDB4MDYKICNkZWZpbmUgRFJNX0VUTkFWSVZfV0FJVF9GRU5DRSAgICAgICAgIDB4MDcKLSNk ZWZpbmUgRFJNX0VUTkFWSVZfTlVNX0lPQ1RMUyAgICAgICAgIDB4MDgKKyNkZWZpbmUgRFJNX0VU TkFWSVZfR0VNX1VTRVJQVFIgICAgICAgIDB4MDgKKyNkZWZpbmUgRFJNX0VUTkFWSVZfTlVNX0lP Q1RMUyAgICAgICAgIDB4MDkKIAogI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9HRVRfUEFSQU0g ICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFVF9QQVJBTSwgc3Ry dWN0IGRybV9ldG5hdml2X3BhcmFtKQogI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9HRU1fTkVX ICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9ORVcsIHN0 cnVjdCBkcm1fZXRuYXZpdl9nZW1fbmV3KQpAQCAtMjIxLDUgKzIzMSw2IEBAIHN0cnVjdCBkcm1f ZXRuYXZpdl93YWl0X2ZlbmNlIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0VUTkFWSVZfR0VNX0NQVV9G SU5JIERSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9DUFVfRklOSSwg c3RydWN0IGRybV9ldG5hdml2X2dlbV9jcHVfZmluaSkKICNkZWZpbmUgRFJNX0lPQ1RMX0VUTkFW SVZfR0VNX1NVQk1JVCAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fRVROQVZJVl9H RU1fU1VCTUlULCBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX3N1Ym1pdCkKICNkZWZpbmUgRFJNX0lP Q1RMX0VUTkFWSVZfV0FJVF9GRU5DRSAgIERSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9F VE5BVklWX1dBSVRfRkVOQ0UsIHN0cnVjdCBkcm1fZXRuYXZpdl93YWl0X2ZlbmNlKQorI2RlZmlu ZSBEUk1fSU9DVExfRVROQVZJVl9HRU1fVVNFUlBUUiAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9FVE5BVklWX0dFTV9VU0VSUFRSLCBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX3VzZXJw dHIpCiAKICNlbmRpZiAvKiBfX0VUTkFWSVZfRFJNX0hfXyAqLwotLSAKMi4xLjQKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==