From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC] drm/i915: Android native sync support Date: Thu, 22 Jan 2015 11:15:40 +0000 Message-ID: <1421925340-2755-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id AEDF46E7F9 for ; Thu, 22 Jan 2015 03:16:54 -0800 (PST) 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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+CgpBZGQgQW5kcm9p ZCBuYXRpdmUgc3luYyBzdXBwb3J0IHdpdGggZmVuY2VzIGV4cG9ydGVkIGFzIGZpbGUgZGVzY3Jp cHRvcnMgdmlhCnRoZSBleGVjYnVmIGlvY3RsIChyc3ZkMiBmaWVsZCBpcyB1c2VkKS4KClRoaXMg aXMgYSBjb250aW51YXRpb24gb2YgSmVzc2UgQmFybmVzJ3MgcHJldmlvdXMgd29yaywgc3F1YXNo ZWQgdG8gYXJyaXZlIGF0CnRoZSBmaW5hbCBkZXN0aW5hdGlvbiwgY2xlYW5lZCB1cCwgd2l0aCBz b21lIGZpeGVzIGFuZCBwcmVsaW1pbmFyeSBsaWdodAp0ZXN0aW5nLgoKR0VNIHJlcXVlc3RzIGFy ZSBleHRlbmRlZCB3aXRoIGZlbmNlIHN0cnVjdHVyZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQgd2l0 aApBbmRyb2lkIHN5bmMgZmVuY2VzIGV4cG9ydGVkIHRvIHVzZXIgc3BhY2UgdmlhIGZpbGUgZGVz Y3JpcHRvcnMuIEZlbmNlcyB3aGljaAphcmUgd2FpdGVkIHVwb24sIGFuZCB3aGlsZSBleHBvcnRl ZCB0byB1c2Vyc3BhY2UsIGFyZSByZWZlcmVuY2VkIGFuZCBhZGRlZCB0bwp0aGUgaXJxX3F1ZXVl IHNvIHRoZXkgYXJlIHNpZ25hbGxlZCB3aGVuIHJlcXVlc3RzIGFyZSBjb21wbGV0ZWQuIFRoZXJl IGlzIG5vCm92ZXJoZWFkIGFwYXJ0IGZyb20gdGhlIHdoZXJlIGZlbmNlcyBhcmUgbm90IHJlcXVl c3RlZC4KCkJhc2VkIG9uIHBhdGNoZXMgYnkgSmVzc2UgQmFybmVzOgogICBkcm0vaTkxNTogQW5k cm9pZCBzeW5jIHBvaW50cyBmb3IgaTkxNSB2MwogICBkcm0vaTkxNTogYWRkIGZlbmNlcyB0byB0 aGUgcmVxdWVzdCBzdHJ1Y3QKICAgZHJtL2k5MTU6IHN5bmMgZmVuY2UgZml4ZXMvdXBkYXRlcwoK VG8gZG86CiAgICogRXh0ZW5kIGRyaXZlciBkYXRhIHdpdGggY29udGV4dCBpZCAvIHJpbmcgaWQu CiAgICogTW9yZSB0ZXN0aW5nLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGludGVsLmNvbT4KQ2M6IEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91c2dl ZWsub3JnPgpDYzogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnICAgICAgICAgICAgICAgfCAgMTQgKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgMjUgKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgMTkgKysrCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3N5bmMuYyAgICAgICAgICAgfCAyNDggKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICB8ICAg OCArLQogNiBmaWxlcyBjaGFuZ2VkLCAzMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5bmMuYwoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9LY29uZmlnCmluZGV4IDRlMzlhYjMuLjZiMjNkMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwpA QCAtNDMsNiArNDMsMjAgQEAgY29uZmlnIERSTV9JOTE1X0tNUwogCiAJICBJZiBpbiBkb3VidCwg c2F5ICJZIi4KIAorY29uZmlnIERSTV9JOTE1X1NZTkMKKwlib29sICJFbmFibGUgZXhwbGljaXQg c3luYyBzdXBwb3J0IgorCWRlcGVuZHMgb24gRFJNX0k5MTUKKwlkZWZhdWx0IHkKKwlzZWxlY3Qg U1RBR0lORworCXNlbGVjdCBBTkRST0lECisJc2VsZWN0IFNZTkMKKwloZWxwCisJICBDaG9vc2Ug dGhpcyBvcHRpb24gdG8gZW5hYmxlIEFuZHJvaWQgbmF0aXZlIHN5bmMgc3VwcG9ydCBhbmQgdGhl CisJICBjb3JyZXNwb25kaW5nIGk5MTUgZHJpdmVyIGNvZGUgdG8gZXhwb3NlIGl0LiAgU2xpZ2h0 bHkgaW5jcmVhc2VzCisJICBkcml2ZXIgc2l6ZSBhbmQgcHVsbHMgaW4gc3luYyBzdXBwb3J0IGZy b20gc3RhZ2luZy4KKworCSAgSWYgaW4gZG91YnQsIHNheSAiWSIuCisKIGNvbmZpZyBEUk1fSTkx NV9GQkRFVgogCWJvb2wgIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgdGhlIG1vZGVz ZXR0aW5nIGludGVsIGRyaXZlciIKIAlkZXBlbmRzIG9uIERSTV9JOTE1CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCmluZGV4IDE2ZTNkYzMuLmJjZmY0ODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC01OCw2 ICs1OCw3IEBAIGk5MTUteSArPSBpbnRlbF9hdWRpby5vIFwKIAkgIGludGVsX3Nwcml0ZS5vCiBp OTE1LSQoQ09ORklHX0FDUEkpCQkrPSBpbnRlbF9hY3BpLm8gaW50ZWxfb3ByZWdpb24ubwogaTkx NS0kKENPTkZJR19EUk1fSTkxNV9GQkRFVikJKz0gaW50ZWxfZmJkZXYubworaTkxNS0kKENPTkZJ R19EUk1fSTkxNV9TWU5DKQkrPSBpOTE1X3N5bmMubwogCiAjIG1vZGVzZXR0aW5nIG91dHB1dC9l bmNvZGVyIGNvZGUKIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggNjZmMGM2MC4uZjU3YjNhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00 OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8bGludXgvaW50ZWwtaW9tbXUuaD4KICNpbmNsdWRlIDxs aW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fcW9zLmg+CisjaW5jbHVkZSA8bGludXgv ZmVuY2UuaD4KIAogLyogR2VuZXJhbCBjdXN0b21pemF0aW9uOgogICovCkBAIC0yMDkwLDYgKzIw OTEsMTMgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFk IGNsaWVudF9saXN0OwogCiAJdWludDMyX3QgdW5pcTsKKworI2lmZGVmIENPTkZJR19EUk1fSTkx NV9TWU5DCisJLyogY29yZSBmZW5jZSBvYmogZm9yIHRoaXMgcmVxdWVzdCwgbWF5IGJlIGV4cG9y dGVkICovCisJc3RydWN0IGZlbmNlIGZlbmNlOworCisJd2FpdF9xdWV1ZV90IHdhaXQ7CisjZW5k aWYKIH07CiAKIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBrcmVmICpyZXFfcmVm KTsKQEAgLTI1ODEsNiArMjU4OSwyMyBAQCB2b2lkIGk5MTVfaW5pdF92bShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiB2b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgaTkxNV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5 MTVfdm1hICp2bWEpOwogCisvKiBpOTE1X3N5bmMuYyAqLworc3RydWN0IHN5bmNfZmVuY2U7CisK KyNpZmRlZiBDT05GSUdfRFJNX0k5MTVfU1lOQworaW50IGk5MTVfY3JlYXRlX3N5bmNfZmVuY2Vf cmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorCQkJCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCisJCQkJc3RydWN0IHN5bmNfZmVuY2UgKipzeW5jX2ZlbmNlLCBpbnQgKmZlbmNl X2ZkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lCitpbnQgaTkxNV9jcmVhdGVfc3luY19mZW5jZV9y aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCwKKwkJCQlzdHJ1Y3Qgc3luY19mZW5jZSAqKnN5bmNfZmVuY2UsIGludCAqZmVuY2Vf ZmQpCit7CisJcmV0dXJuIC1FTk9ERVY7Cit9CisjZW5kaWYKKwogI2RlZmluZSBQSU5fTUFQUEFC TEUgMHgxCiAjZGVmaW5lIFBJTl9OT05CTE9DSyAweDIKICNkZWZpbmUgUElOX0dMT0JBTCAweDQK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBlM2VmMTc3 Li4xOTFlY2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgImlu dGVsX2Rydi5oIgogI2luY2x1ZGUgPGxpbnV4L2RtYV9yZW1hcHBpbmcuaD4KKyNpbmNsdWRlICIu Li8uLi8uLi9zdGFnaW5nL2FuZHJvaWQvc3luYy5oIgogCiAjZGVmaW5lICBfX0VYRUNfT0JKRUNU X0hBU19QSU4gKDE8PDMxKQogI2RlZmluZSAgX19FWEVDX09CSkVDVF9IQVNfRkVOQ0UgKDE8PDMw KQpAQCAtMTM1Niw2ICsxMzU3LDggQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXUzMiBmbGFnczsKIAlpbnQgcmV0OwogCWJvb2wg bmVlZF9yZWxvY3M7CisJc3RydWN0IHN5bmNfZmVuY2UgKnN5bmNfZmVuY2UgPSBOVUxMOworCWlu dCBmZW5jZV9mZCA9IC0xOwogCiAJaWYgKCFpOTE1X2dlbV9jaGVja19leGVjYnVmZmVyKGFyZ3Mp KQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE1MDQsOSArMTUwNywyNSBAQCBpOTE1X2dlbV9kb19l eGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJfSBlbHNlCiAJ CWV4ZWNfc3RhcnQgKz0gaTkxNV9nZW1fb2JqX29mZnNldChiYXRjaF9vYmosIHZtKTsKIAorCWlm IChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19GRU5DRV9PVVQpIHsKKwkJcmV0ID0gaTkxNV9jcmVh dGVfc3luY19mZW5jZV9yaW5nKHJpbmcsIGN0eCwKKwkJCQkJCSAgJnN5bmNfZmVuY2UsICZmZW5j ZV9mZCk7CisJCWlmIChyZXQpCisJCQlnb3RvIHN5bmNfZXJyOworCX0KKwogCXJldCA9IGRldl9w cml2LT5ndC5kb19leGVjYnVmKGRldiwgZmlsZSwgcmluZywgY3R4LCBhcmdzLAogCQkJCSAgICAg ICZlYi0+dm1hcywgYmF0Y2hfb2JqLCBleGVjX3N0YXJ0LCBmbGFncyk7CiAKKwlpZiAoIXJldCAm JiBzeW5jX2ZlbmNlKSB7CisJCXN5bmNfZmVuY2VfaW5zdGFsbChzeW5jX2ZlbmNlLCBmZW5jZV9m ZCk7CisJCWFyZ3MtPnJzdmQyID0gZmVuY2VfZmQ7CisJfSBlbHNlIGlmIChzeW5jX2ZlbmNlKSB7 CisJCWZwdXQoc3luY19mZW5jZS0+ZmlsZSk7CisJCXB1dF91bnVzZWRfZmQoZmVuY2VfZmQpOwor CX0KKworc3luY19lcnI6CiAJLyoKIAkgKiBGSVhNRTogV2UgY3J1Y2lhbGx5IHJlbHkgdXBvbiB0 aGUgYWN0aXZlIHRyYWNraW5nIGZvciB0aGUgKHBwZ3R0KQogCSAqIGJhdGNoIHZtYSBmb3IgY29y cmVjdG5lc3MuIEZvciBsZXNzIHVnbHkgYW5kIGxlc3MgZnJhZ2lsaXR5IHRoaXMKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3luYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA5MzM4 YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3luYy5jCkBA IC0wLDAgKzEsMjQ4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTMtMjAxNCBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKiBBdXRob3JzOgorICogICAgSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5v cmc+CisgKiAgICBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgorICoK KyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3ZtYV9tYW5h Z2VyLmg+CisjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CisjaW5jbHVkZSAiaTkxNV9kcnYuaCIK KyNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisjaW5jbHVk ZSA8bGludXgvb29tLmg+CisjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4KKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc3dhcC5oPgorI2luY2x1ZGUgPGxpbnV4L3Bj aS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKyNpbmNsdWRlICIuLi8uLi8uLi9zdGFn aW5nL2FuZHJvaWQvc3luYy5oIgorCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGZlbmNlX2xvY2sp OyAvKiBOQjogTG9jayBpcyByZXF1aXJlZCBmb3IgdGhlIGZlbmNlIEFQSQorCQkJCSAgICAgICBi dXQgaXMgY3VycmVudGx5IHVudXNlZCBoZXJlLiAqLworCisvKgorICogaTkxNSBBbmRyb2lkIG5h dGl2ZSBzeW5jIGZlbmNlcy4KKyAqCisgKiBXZSBpbXBsZW1lbnQgc3luYyBwb2ludHMgaW4gdGVy bXMgb2YgaTkxNSBzZXFub3MuIFRoZXkncmUgZXhwb3NlZCB0aHJvdWdoCisgKiB0aGUgRFJNX0lP Q1RMX0k5MTVfR0VNX0VYRUNCVUZGRVIyIGlvY3RsLCBhbmQgY2FuIGJlIG1peGVkIGFuZCBtYXRj aGVkCisgKiB3aXRoIG90aGVyIEFuZHJvaWQgdGltZWxpbmVzIGFuZCBhZ2dyZWdhdGVkIGludG8g c3luY19mZW5jZXMsIGV0Yy4KKyAqCisgKiBUT0RPOgorICogICAqIERpc3BsYXkgZW5naW5lIGZl bmNlcy4KKyAqICAgKiBFeHRlbmQgZHJpdmVyIGRhdGEgd2l0aCBjb250ZXh0IGlkIC8gcmluZyBp ZC4KKyAqLworCisjZGVmaW5lIHRvX2k5MTVfcmVxdWVzdCh4KSBjb250YWluZXJfb2YoeCwgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBmZW5jZSkKKworc3RhdGljIGNvbnN0IGNoYXIgKmk5 MTVfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJcmV0dXJu ICJpOTE1IjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2VfcmluZ19nZXRfdGlt ZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxID0gdG9faTkxNV9yZXF1ZXN0KGZlbmNlKTsKKworCXJldHVybiByZXEtPnJp bmctPm5hbWU7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZmVuY2VfcmluZ19jaGVjayh3YWl0X3F1 ZXVlX3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBmbGFncywgdm9pZCAqa2V5KQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gd2FpdC0+cHJpdmF0ZTsKKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOworCisJaWYgKCFpOTE1X2dlbV9yZXF1 ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKSkKKwkJcmV0dXJuIDA7CisKKwlmZW5jZV9zaWduYWxf bG9ja2VkKCZyZXEtPmZlbmNlKTsKKworCV9fcmVtb3ZlX3dhaXRfcXVldWUoJnJpbmctPmlycV9x dWV1ZSwgd2FpdCk7CisJcmluZy0+aXJxX3B1dChyaW5nKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgYm9vbCBpOTE1X2ZlbmNlX3JpbmdfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2Ug KmZlbmNlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gdG9faTkxNV9y ZXF1ZXN0KGZlbmNlKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5n OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3By aXZhdGU7CisJd2FpdF9xdWV1ZV90ICp3YWl0ID0gJnJlcS0+d2FpdDsKKworCS8qIHF1ZXVlIGZl bmNlIHdhaXQgcXVldWUgb24gaXJxIHF1ZXVlIGFuZCBnZXQgZmVuY2UgKi8KKwlpZiAoaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxzZSkgfHwKKwkgICAgaTkxNV90ZXJtaW5hbGx5 X3dlZGdlZCgmZGV2X3ByaXYtPmdwdV9lcnJvcikpCisJCXJldHVybiBmYWxzZTsKKworCWlmICgh cmluZy0+aXJxX2dldChyaW5nKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGk5MTVfZ2VtX3Jl cXVlc3RfY29tcGxldGVkKHJlcSwgZmFsc2UpKSB7CisJCXJpbmctPmlycV9wdXQocmluZyk7CisJ CXJldHVybiB0cnVlOworCX0KKworCXdhaXQtPmZsYWdzID0gMDsKKwl3YWl0LT5wcml2YXRlID0g cmVxOworCXdhaXQtPmZ1bmMgPSBpOTE1X2ZlbmNlX3JpbmdfY2hlY2s7CisKKwlfX2FkZF93YWl0 X3F1ZXVlKCZyaW5nLT5pcnFfcXVldWUsIHdhaXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0 YXRpYyBib29sIGk5MTVfZmVuY2VfcmluZ19zaWduYWxlZChzdHJ1Y3QgZmVuY2UgKmZlbmNlKQor eworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gdG9faTkxNV9yZXF1ZXN0KGZl bmNlKTsKKworCXJldHVybiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKTsK K30KKworc3RhdGljIHNpZ25lZCBsb25nCitpOTE1X2ZlbmNlX3Jpbmdfd2FpdChzdHJ1Y3QgZmVu Y2UgKmZlbmNlLCBib29sIGludHIsIHNpZ25lZCBsb25nIHRpbWVvdXRfanMpCit7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+cmluZy0+ZGV2LT5kZXZfcHJp dmF0ZTsKKwlpbnQgcmV0OworCXM2NCB0aW1lb3V0OworCisJdGltZW91dCA9IGppZmZpZXNfdG9f bnNlY3ModGltZW91dF9qcyk7CisKKwlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJlcSwKKwkJ CQkgIGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpLAorCQkJ CSAgaW50ciwgJnRpbWVvdXQsIE5VTEwpOworCWlmIChyZXQgPT0gLUVUSU1FKQorCQlyZXR1cm4g bnNlY3NfdG9famlmZmllcyh0aW1lb3V0KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQKK2k5MTVfZmVuY2VfcmluZ19maWxsX2RyaXZlcl9kYXRhKHN0cnVjdCBmZW5jZSAqZmVuY2Us IHZvaWQgKmRhdGEsIGludCBzaXplKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxID0gdG9faTkxNV9yZXF1ZXN0KGZlbmNlKTsKKworCWlmIChzaXplIDwgc2l6ZW9mKHJlcS0+ c2Vxbm8pKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1lbWNweShkYXRhLCAmcmVxLT5zZXFubywK KwkgICAgICAgc2l6ZW9mKHJlcS0+c2Vxbm8pKTsKKworCXJldHVybiBzaXplb2YocmVxLT5zZXFu byk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfZmVuY2VfcmluZ192YWx1ZV9zdHIoc3RydWN0IGZl bmNlICpmZW5jZSwgY2hhciAqc3RyLCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSA9IHRvX2k5MTVfcmVxdWVzdChmZW5jZSk7CisKKwlzbnByaW50ZihzdHIs IHNpemUsICIldSIsIHJlcS0+c2Vxbm8pOworfQorCitzdGF0aWMgdm9pZAoraTkxNV9mZW5jZV9y aW5nX3RpbWVsaW5lX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBjaGFyICpzdHIsIGlu dCBzaXplKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gdG9faTkxNV9y ZXF1ZXN0KGZlbmNlKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5n OworCisJc25wcmludGYoc3RyLCBzaXplLCAiJXUiLCByaW5nLT5nZXRfc2Vxbm8ocmluZywgZmFs c2UpKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBmZW5jZSAq ZmVuY2UpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3Jl cXVlc3QoZmVuY2UpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByZXEtPnJpbmctPmRldjsK KworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9yZXF1ZXN0X3Vu cmVmZXJlbmNlKHJlcSk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgZmVuY2Vfb3BzIGk5MTVfZmVuY2VfcmluZ19vcHMgPSB7CisJLmdldF9k cml2ZXJfbmFtZSA9CWk5MTVfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAorCS5nZXRfdGltZWxpbmVf bmFtZSA9CWk5MTVfZmVuY2VfcmluZ19nZXRfdGltZWxpbmVfbmFtZSwKKwkuZW5hYmxlX3NpZ25h bGluZyA9CWk5MTVfZmVuY2VfcmluZ19lbmFibGVfc2lnbmFsaW5nLAorCS5zaWduYWxlZCA9CQlp OTE1X2ZlbmNlX3Jpbmdfc2lnbmFsZWQsCisJLndhaXQgPQkJCWk5MTVfZmVuY2VfcmluZ193YWl0 LAorCS5maWxsX2RyaXZlcl9kYXRhID0JaTkxNV9mZW5jZV9yaW5nX2ZpbGxfZHJpdmVyX2RhdGEs CisJLmZlbmNlX3ZhbHVlX3N0ciA9CWk5MTVfZmVuY2VfcmluZ192YWx1ZV9zdHIsCisJLnRpbWVs aW5lX3ZhbHVlX3N0ciA9CWk5MTVfZmVuY2VfcmluZ190aW1lbGluZV92YWx1ZV9zdHIsCisJLnJl bGVhc2UgPQkJaTkxNV9mZW5jZV9yZWxlYXNlCit9OworCitpbnQgaTkxNV9jcmVhdGVfc3luY19m ZW5jZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJc3RydWN0IGludGVs X2NvbnRleHQgKmN0eCwKKwkJCQlzdHJ1Y3Qgc3luY19mZW5jZSAqKnN5bmNfZmVuY2UsIGludCAq ZmVuY2VfZmQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CisJc3RydWN0 IGZlbmNlICpmZW5jZSA9IE5VTEw7CisJc3RydWN0IHN5bmNfZmVuY2UgKnNmZW5jZTsKKwljaGFy IHJpbmdfbmFtZVs2XSA9ICJyaW5nMCI7CisJaW50IGZkOworCWludCByZXQ7CisKKwlpZiAoIWlu dGVsX3JpbmdfaW5pdGlhbGl6ZWQocmluZykpIHsKKwkJRFJNX0RFQlVHKCJSaW5nIG5vdCBpbml0 aWFsaXplZCFcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlmZCA9IGdldF91bnVzZWRf ZmRfZmxhZ3MoT19DTE9FWEVDKTsKKwlpZiAoZmQgPCAwKSB7CisJCURSTV9ERUJVRygiTm8gYXZh aWxhYmxlIGZpbGUgZGVzY3JpcHRvciFcbiIpOworCQlyZXR1cm4gZmQ7CisJfQorCisJcmV0ID0g cmluZy0+YWRkX3JlcXVlc3QocmluZyk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoImFkZF9y ZXF1ZXN0IGZhaWxlZFxuIik7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJyOworCX0KKwor CXJlcSA9IHJpbmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVzdDsKKworCWk5MTVfZ2VtX3JlcXVl c3RfcmVmZXJlbmNlKHJlcSk7CisJZmVuY2UgPSAmcmVxLT5mZW5jZTsKKwlmZW5jZV9pbml0KGZl bmNlLCAmaTkxNV9mZW5jZV9yaW5nX29wcywgJmZlbmNlX2xvY2ssIGN0eC0+dXNlcl9oYW5kbGUs CisJCSAgIHJlcS0+c2Vxbm8pOworCisJcmluZ19uYW1lWzRdICs9IHJpbmctPmlkOworCXNmZW5j ZSA9IHN5bmNfZmVuY2VfY3JlYXRlX2RtYShyaW5nX25hbWUsIGZlbmNlKTsKKwlpZiAoIXNmZW5j ZSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKKwkqc3luY19mZW5jZSA9 IHNmZW5jZTsKKwkqZmVuY2VfZmQgPSBmZDsKKworCXJldHVybiAwOworZXJyOgorCWlmIChmZW5j ZSkKKwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOworCXB1dF91bnVzZWRfZmQo ZmQpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVf ZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggMmU1NTlmNmUuLmMxOTc3 NzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRl L3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTI0Niw3ICsyNDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBf ZHJtX2k5MTVfc2FyZWEgewogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9IV1NfQUREUgkJRFJNX0lP VyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfSFdTX0FERFIsIHN0cnVjdCBkcm1faTkxNV9n ZW1faW5pdCkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0lOSVQJCURSTV9JT1coRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9JTklULCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2luaXQp CiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9FWEVDQlVGRkVSCURSTV9JT1coRFJNX0NPTU1B TkRfQkFTRSArIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIpCi0jZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9FWEVDQlVGRkVSMglEUk1fSU9X KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIsIHN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY2J1ZmZlcjIpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9FWEVDQlVG RkVSMglEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIy LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyKQogI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRU1fUElOCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1BJTiwg c3RydWN0IGRybV9pOTE1X2dlbV9waW4pCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9VTlBJ TglEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVU5QSU4sIHN0cnVjdCBk cm1faTkxNV9nZW1fdW5waW4pCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZCQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0JVU1ksIHN0cnVjdCBkcm1faTkx NV9nZW1fYnVzeSkKQEAgLTcxOCw3ICs3MTgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNi dWZmZXIyIHsKICNkZWZpbmUgSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRSAoMjw8Nikg LyogZ2VuNC81IG9ubHkgKi8KIAlfX3U2NCBmbGFnczsKIAlfX3U2NCByc3ZkMTsgLyogbm93IHVz ZWQgZm9yIGNvbnRleHQgaW5mbyAqLwotCV9fdTY0IHJzdmQyOworCV9fdTY0IHJzdmQyOyAvKiBu b3cgdXNlZCBmb3IgZmVuY2UgZmQgKi8KIH07CiAKIC8qKiBSZXNldHMgdGhlIFNPIHdyaXRlIG9m ZnNldCByZWdpc3RlcnMgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBvbiBnZW43LiAqLwpAQCAtNzUw LDcgKzc1MCw5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgewogICovCiAjZGVm aW5lIEk5MTVfRVhFQ19IQU5ETEVfTFVUCQkoMTw8MTIpCiAKLSNkZWZpbmUgX19JOTE1X0VYRUNf VU5LTk9XTl9GTEFHUyAtKEk5MTVfRVhFQ19IQU5ETEVfTFVUPDwxKQorI2RlZmluZSBJOTE1X0VY RUNfRkVOQ0VfT1VUCQkoMTw8MTMpCisKKyNkZWZpbmUgX19JOTE1X0VYRUNfVU5LTk9XTl9GTEFH UyAtKEk5MTVfRVhFQ19GRU5DRV9PVVQ8PDEpCiAKICNkZWZpbmUgSTkxNV9FWEVDX0NPTlRFWFRf SURfTUFTSwkoMHhmZmZmZmZmZikKICNkZWZpbmUgaTkxNV9leGVjYnVmZmVyMl9zZXRfY29udGV4 dF9pZChlYjIsIGNvbnRleHQpIFwKLS0gCjIuMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=