From: Tvrtko Ursulin Subject: [RFC v2] drm/i915: Android native sync support Date: Fri, 23 Jan 2015 11:13:14 +0000 Message-ID: <1422011594-22095-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 801AB6E418 for ; Fri, 23 Jan 2015 03:13:41 -0800 (PST) In-Reply-To: <1421925340-2755-1-git-send-email-tvrtko.ursulin@linux.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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+CgpBZGQgQW5kcm9p ZCBuYXRpdmUgc3luYyBzdXBwb3J0IHdpdGggZmVuY2VzIGV4cG9ydGVkIGFzIGZpbGUgZGVzY3Jp cHRvcnMgdmlhCnRoZSBleGVjYnVmIGlvY3RsIChyc3ZkMiBmaWVsZCBpcyB1c2VkKS4KClRoaXMg aXMgYSBjb250aW51YXRpb24gb2YgSmVzc2UgQmFybmVzJ3MgcHJldmlvdXMgd29yaywgc3F1YXNo ZWQgdG8gYXJyaXZlIGF0CnRoZSBmaW5hbCBkZXN0aW5hdGlvbiwgY2xlYW5lZCB1cCwgd2l0aCBz b21lIGZpeGVzIGFuZCBwcmVsaW1pbmFyeSBsaWdodAp0ZXN0aW5nLgoKR0VNIHJlcXVlc3RzIGFy ZSBleHRlbmRlZCB3aXRoIGZlbmNlIHN0cnVjdHVyZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQgd2l0 aApBbmRyb2lkIHN5bmMgZmVuY2VzIGV4cG9ydGVkIHRvIHVzZXIgc3BhY2UgdmlhIGZpbGUgZGVz Y3JpcHRvcnMuIEZlbmNlcyB3aGljaAphcmUgd2FpdGVkIHVwb24sIGFuZCB3aGlsZSBleHBvcnRl ZCB0byB1c2Vyc3BhY2UsIGFyZSByZWZlcmVuY2VkIGFuZCBhZGRlZCB0bwp0aGUgaXJxX3F1ZXVl IHNvIHRoZXkgYXJlIHNpZ25hbGxlZCB3aGVuIHJlcXVlc3RzIGFyZSBjb21wbGV0ZWQuIFRoZXJl IGlzIG5vCm92ZXJoZWFkIGFwYXJ0IGZyb20gdGhlIHdoZXJlIGZlbmNlcyBhcmUgbm90IHJlcXVl c3RlZC4KCkJhc2VkIG9uIHBhdGNoZXMgYnkgSmVzc2UgQmFybmVzOgogICBkcm0vaTkxNTogQW5k cm9pZCBzeW5jIHBvaW50cyBmb3IgaTkxNSB2MwogICBkcm0vaTkxNTogYWRkIGZlbmNlcyB0byB0 aGUgcmVxdWVzdCBzdHJ1Y3QKICAgZHJtL2k5MTU6IHN5bmMgZmVuY2UgZml4ZXMvdXBkYXRlcwoK VG8gZG86CiAgICogRXh0ZW5kIGRyaXZlciBkYXRhIHdpdGggY29udGV4dCBpZCAvIHJpbmcgaWQg KFRCRCkuCgp2MjoKICAgKiBDb2RlIHJldmlldyBjb21tZW50cy4gKENocmlzIFdpbHNvbikKICAg KiByaW5nLT5hZGRfcmVxdWVzdCgpIHdhcyBhIHdyb25nIHRoaW5nIHRvIGNhbGwgLSByZWJhc2Ug b24gdG9wIG9mIEpvaG4KICAgICBIYXJyaXNvbidzIChkcm0vaTkxNTogRWFybHkgYWxsb2MgcmVx dWVzdCkgdG8gZW5zdXJlIGNvcnJlY3QgcmVxdWVzdCBpcwogICAgIHByZXNlbnQgYmVmb3JlIGNy ZWF0aW5nIGEgZmVuY2UuCiAgICogVGFrZSBhIHJlcXVlc3QgcmVmZXJlbmNlIGZyb20gc2lnbmFs bGluZyBwYXRoIGFzIHdlbGwgdG8gZW5zdXJlIHJlcXVlc3QKICAgICBzdGlja3MgYXJvdW5kIHdo aWxlIGZlbmNlIGlzIG9uIHRoZSByZXF1ZXN0IGNvbXBsZXRpb24gd2FpdCBxdWV1ZS4KClNpZ25l ZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBK ZXNzZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KQ2M6IEpvaG4gSGFycmlzb24g PEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvS2Nv bmZpZyAgICAgICAgICAgICAgIHwgIDE0ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZSAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgICAgIHwgIDI1ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jIHwgIDI0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMgICAgICAg ICAgIHwgMjQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmggICAgICAgICAgICAgICAgfCAgIDggKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzEw IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwppbmRleCA0ZTM5YWIz Li5hYmFmZTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKQEAgLTQzLDYgKzQzLDIwIEBAIGNvbmZpZyBE Uk1fSTkxNV9LTVMKIAogCSAgSWYgaW4gZG91YnQsIHNheSAiWSIuCiAKK2NvbmZpZyBEUk1fSTkx NV9TWU5DCisJYm9vbCAiRW5hYmxlIGV4cGxpY2l0IHN5bmMgc3VwcG9ydCIKKwlkZXBlbmRzIG9u IERSTV9JOTE1CisJZGVmYXVsdCB5IGlmIFNUQUdJTkcKKwlzZWxlY3QgU1RBR0lORworCXNlbGVj dCBBTkRST0lECisJc2VsZWN0IFNZTkMKKwloZWxwCisJICBDaG9vc2UgdGhpcyBvcHRpb24gdG8g ZW5hYmxlIEFuZHJvaWQgbmF0aXZlIHN5bmMgc3VwcG9ydCBhbmQgdGhlCisJICBjb3JyZXNwb25k aW5nIGk5MTUgZHJpdmVyIGNvZGUgdG8gZXhwb3NlIGl0LiAgU2xpZ2h0bHkgaW5jcmVhc2VzCisJ ICBkcml2ZXIgc2l6ZSBhbmQgcHVsbHMgaW4gc3luYyBzdXBwb3J0IGZyb20gc3RhZ2luZy4KKwor CSAgSWYgaW4gZG91YnQsIHNheSAiWSIuCisKIGNvbmZpZyBEUk1fSTkxNV9GQkRFVgogCWJvb2wg IkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgdGhlIG1vZGVzZXR0aW5nIGludGVsIGRy aXZlciIKIAlkZXBlbmRzIG9uIERSTV9JOTE1CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDE2ZTNk YzMuLmJjZmY0ODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC01OCw2ICs1OCw3IEBAIGk5MTUt eSArPSBpbnRlbF9hdWRpby5vIFwKIAkgIGludGVsX3Nwcml0ZS5vCiBpOTE1LSQoQ09ORklHX0FD UEkpCQkrPSBpbnRlbF9hY3BpLm8gaW50ZWxfb3ByZWdpb24ubwogaTkxNS0kKENPTkZJR19EUk1f STkxNV9GQkRFVikJKz0gaW50ZWxfZmJkZXYubworaTkxNS0kKENPTkZJR19EUk1fSTkxNV9TWU5D KQkrPSBpOTE1X3N5bmMubwogCiAjIG1vZGVzZXR0aW5nIG91dHB1dC9lbmNvZGVyIGNvZGUKIGk5 MTUteSArPSBkdm9fY2g3MDE3Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMDIzZjQy Mi4uNzU3MjlhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00OSw2ICs0OSw3IEBACiAj aW5jbHVkZSA8bGludXgvaW50ZWwtaW9tbXUuaD4KICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAj aW5jbHVkZSA8bGludXgvcG1fcW9zLmg+CisjaW5jbHVkZSA8bGludXgvZmVuY2UuaD4KIAogLyog R2VuZXJhbCBjdXN0b21pemF0aW9uOgogICovCkBAIC0yMDkyLDYgKzIwOTMsMTMgQEAgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGNsaWVudF9saXN0Owog CiAJdWludDMyX3QgdW5pcTsKKworI2lmZGVmIENPTkZJR19EUk1fSTkxNV9TWU5DCisJLyogY29y ZSBmZW5jZSBvYmogZm9yIHRoaXMgcmVxdWVzdCwgbWF5IGJlIGV4cG9ydGVkICovCisJc3RydWN0 IGZlbmNlIGZlbmNlOworCisJd2FpdF9xdWV1ZV90IHdhaXQ7CisjZW5kaWYKIH07CiAKIHZvaWQg aTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBrcmVmICpyZXFfcmVmKTsKQEAgLTI1ODMsNiAr MjU5MSwyMyBAQCB2b2lkIGk5MTVfaW5pdF92bShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiB2b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKTsKIHZvaWQgaTkxNV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1hICp2bWEpOwog CisvKiBpOTE1X3N5bmMuYyAqLworc3RydWN0IHN5bmNfZmVuY2U7CisKKyNpZmRlZiBDT05GSUdf RFJNX0k5MTVfU1lOQworaW50IGk5MTVfY3JlYXRlX3N5bmNfZmVuY2VfcmluZyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAorCQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCisJCQkJ c3RydWN0IHN5bmNfZmVuY2UgKipzeW5jX2ZlbmNlLCBpbnQgKmZlbmNlX2ZkKTsKKyNlbHNlCitz dGF0aWMgaW5saW5lCitpbnQgaTkxNV9jcmVhdGVfc3luY19mZW5jZV9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKKwkJCQlz dHJ1Y3Qgc3luY19mZW5jZSAqKnN5bmNfZmVuY2UsIGludCAqZmVuY2VfZmQpCit7CisJcmV0dXJu IC1FTk9ERVY7Cit9CisjZW5kaWYKKwogI2RlZmluZSBQSU5fTUFQUEFCTEUgMHgxCiAjZGVmaW5l IFBJTl9OT05CTE9DSyAweDIKICNkZWZpbmUgUElOX0dMT0JBTCAweDQKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCAyYTNkMWE5Li5iMDQxNTdhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0zMiw2ICszMiw3 IEBACiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2lu Y2x1ZGUgPGxpbnV4L2RtYV9yZW1hcHBpbmcuaD4KKyNpbmNsdWRlICIuLi8uLi8uLi9zdGFnaW5n L2FuZHJvaWQvc3luYy5oIgogCiAjZGVmaW5lICBfX0VYRUNfT0JKRUNUX0hBU19QSU4gKDE8PDMx KQogI2RlZmluZSAgX19FWEVDX09CSkVDVF9IQVNfRkVOQ0UgKDE8PDMwKQpAQCAtMTM1Niw2ICsx MzU3LDggQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCXUzMiBmbGFnczsKIAlpbnQgcmV0OwogCWJvb2wgbmVlZF9yZWxvY3M7CisJ c3RydWN0IHN5bmNfZmVuY2UgKnN5bmNfZmVuY2UgPSBOVUxMOworCWludCBmZW5jZV9mZCA9IC0x OwogCiAJaWYgKCFpOTE1X2dlbV9jaGVja19leGVjYnVmZmVyKGFyZ3MpKQogCQlyZXR1cm4gLUVJ TlZBTDsKQEAgLTE1MDksOCArMTUxMiwyOSBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJZ290byByZXFfZXJy OwogCisJaWYgKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0ZFTkNFX09VVCkgeworCQlyZXQgPSBp OTE1X2NyZWF0ZV9zeW5jX2ZlbmNlX3JpbmcocmluZywgY3R4LAorCQkJCQkJICAmc3luY19mZW5j ZSwgJmZlbmNlX2ZkKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gcmVxX2VycjsKKwl9CisKIAlyZXQg PSBkZXZfcHJpdi0+Z3QuZG9fZXhlY2J1ZihkZXYsIGZpbGUsIHJpbmcsIGN0eCwgYXJncywKIAkJ CQkgICAgICAmZWItPnZtYXMsIGJhdGNoX29iaiwgZXhlY19zdGFydCwgZmxhZ3MpOworCWlmIChy ZXQpCisJCWdvdG8gZXhlY19lcnI7CisKKwlpZiAoc3luY19mZW5jZSkgeworCQlzeW5jX2ZlbmNl X2luc3RhbGwoc3luY19mZW5jZSwgZmVuY2VfZmQpOworCQlhcmdzLT5yc3ZkMiA9IGZlbmNlX2Zk OworCQlzeW5jX2ZlbmNlID0gTlVMTDsKKwl9CisKK2V4ZWNfZXJyOgorCWlmIChzeW5jX2ZlbmNl KSB7CisJCWZwdXQoc3luY19mZW5jZS0+ZmlsZSk7CisJCXB1dF91bnVzZWRfZmQoZmVuY2VfZmQp OworCX0KIAogcmVxX2VycjoKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeW5jLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5bmMuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2MwYzE1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisgKiBD b3B5cmlnaHQgwqkgMjAxMy0yMDE0IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBKZXNz ZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KKyAqICAgIFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgorI2luY2x1ZGUgPGRybS9kcm1fdm1hX21hbmFnZXIuaD4KKyNpbmNsdWRlIDxkcm0vaTkx NV9kcm0uaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIK KyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKyNpbmNsdWRlIDxsaW51eC9vb20uaD4KKyNpbmNsdWRl IDxsaW51eC9zaG1lbV9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxs aW51eC9zd2FwLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvZG1h LWJ1Zi5oPgorI2luY2x1ZGUgIi4uLy4uLy4uL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmgiCisKK3N0 YXRpYyBERUZJTkVfU1BJTkxPQ0soZmVuY2VfbG9jayk7CisKKy8qCisgKiBpOTE1IEFuZHJvaWQg bmF0aXZlIHN5bmMgZmVuY2VzLgorICoKKyAqIFdlIGltcGxlbWVudCBzeW5jIHBvaW50cyBpbiB0 ZXJtcyBvZiBpOTE1IHNlcW5vcy4gVGhleSdyZSBleHBvc2VkIHRocm91Z2gKKyAqIHRoZSBEUk1f SU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIgaW9jdGwsIGFuZCBjYW4gYmUgbWl4ZWQgYW5kIG1h dGNoZWQKKyAqIHdpdGggb3RoZXIgQW5kcm9pZCB0aW1lbGluZXMgYW5kIGFnZ3JlZ2F0ZWQgaW50 byBzeW5jX2ZlbmNlcywgZXRjLgorICoKKyAqIFRPRE86CisgKiAgICogRGlzcGxheSBlbmdpbmUg ZmVuY2VzLgorICogICAqIEV4dGVuZCBkcml2ZXIgZGF0YSB3aXRoIGNvbnRleHQgaWQgLyByaW5n IGlkLgorICovCisKKyNkZWZpbmUgdG9faTkxNV9yZXF1ZXN0KHgpIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsIGZlbmNlKQorCitzdGF0aWMgY29uc3QgY2hhciAq aTkxNV9mZW5jZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sKKwlyZXR1 cm4gImk5MTUiOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9mZW5jZV9yaW5nX2dldF90 aW1lbGluZV9uYW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOworCisJcmV0dXJuIHJlcS0+ cmluZy0+bmFtZTsKK30KKworc3RhdGljIGludAoraTkxNV9mZW5jZV9yaW5nX2NoZWNrKHdhaXRf cXVldWVfdCAqd2FpdCwgdW5zaWduZWQgbW9kZSwgaW50IGZsYWdzLCB2b2lkICprZXkpCit7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB3YWl0LT5wcml2YXRlOworCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7CisKKwlpZiAoIWk5MTVfZ2VtX3Jl cXVlc3RfY29tcGxldGVkKHJlcSwgZmFsc2UpKQorCQlyZXR1cm4gMDsKKworCWZlbmNlX3NpZ25h bCgmcmVxLT5mZW5jZSk7CisKKwlfX3JlbW92ZV93YWl0X3F1ZXVlKCZyaW5nLT5pcnFfcXVldWUs IHdhaXQpOworCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxKTsKKwlyaW5nLT5pcnFf cHV0KHJpbmcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sIGk5MTVfZmVuY2Vfcmlu Z19lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOworCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwl3YWl0X3F1ZXVlX3QgKndh aXQgPSAmcmVxLT53YWl0OworCisJLyogcXVldWUgZmVuY2Ugd2FpdCBxdWV1ZSBvbiBpcnEgcXVl dWUgYW5kIGdldCBmZW5jZSAqLworCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEs IGZhbHNlKSB8fAorCSAgICBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFyaW5nLT5pcnFfZ2V0KHJpbmcpKQorCQly ZXR1cm4gZmFsc2U7CisKKwlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxz ZSkpIHsKKwkJcmluZy0+aXJxX3B1dChyaW5nKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJd2Fp dC0+ZmxhZ3MgPSAwOworCXdhaXQtPnByaXZhdGUgPSByZXE7CisJd2FpdC0+ZnVuYyA9IGk5MTVf ZmVuY2VfcmluZ19jaGVjazsKKworCWk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJlbmNlKHJlcSk7CisK KwlfX2FkZF93YWl0X3F1ZXVlKCZyaW5nLT5pcnFfcXVldWUsIHdhaXQpOworCisJcmV0dXJuIHRy dWU7Cit9CisKK3N0YXRpYyBib29sIGk5MTVfZmVuY2VfcmluZ19zaWduYWxlZChzdHJ1Y3QgZmVu Y2UgKmZlbmNlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gdG9faTkx NV9yZXF1ZXN0KGZlbmNlKTsKKworCXJldHVybiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChy ZXEsIGZhbHNlKTsKK30KKworc3RhdGljIHNpZ25lZCBsb25nCitpOTE1X2ZlbmNlX3Jpbmdfd2Fp dChzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBib29sIGludHIsIHNpZ25lZCBsb25nIHRpbWVvdXRfanMp Cit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3Qo ZmVuY2UpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+cmluZy0+ ZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0OworCXM2NCB0aW1lb3V0OworCisJdGltZW91dCA9 IGppZmZpZXNfdG9fbnNlY3ModGltZW91dF9qcyk7CisKKwlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1 ZXN0KHJlcSwKKwkJCQkgIGF0b21pY19yZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2Nv dW50ZXIpLAorCQkJCSAgaW50ciwgJnRpbWVvdXQsIE5VTEwpOworCWlmIChyZXQgPT0gLUVUSU1F KQorCQlyZXR1cm4gMDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZmVu Y2VfcmluZ19maWxsX2RyaXZlcl9kYXRhKHN0cnVjdCBmZW5jZSAqZmVuY2UsIHZvaWQgKmRhdGEs IGludCBzaXplKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gdG9faTkx NV9yZXF1ZXN0KGZlbmNlKTsKKworCWlmIChzaXplIDwgc2l6ZW9mKHJlcS0+c2Vxbm8pKQorCQly ZXR1cm4gLUVOT01FTTsKKworCW1lbWNweShkYXRhLCAmcmVxLT5zZXFubywKKwkgICAgICAgc2l6 ZW9mKHJlcS0+c2Vxbm8pKTsKKworCXJldHVybiBzaXplb2YocmVxLT5zZXFubyk7Cit9CisKK3N0 YXRpYyB2b2lkIGk5MTVfZmVuY2VfcmluZ192YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwg Y2hhciAqc3RyLCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSA9IHRvX2k5MTVfcmVxdWVzdChmZW5jZSk7CisKKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIs IHJlcS0+c2Vxbm8pOworfQorCitzdGF0aWMgdm9pZAoraTkxNV9mZW5jZV9yaW5nX3RpbWVsaW5l X3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBjaGFyICpzdHIsIGludCBzaXplKQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gdG9faTkxNV9yZXF1ZXN0KGZlbmNl KTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOworCisJc25wcmlu dGYoc3RyLCBzaXplLCAiJXUiLCByaW5nLT5nZXRfc2Vxbm8ocmluZywgZmFsc2UpKTsKK30KKwor c3RhdGljIHZvaWQgaTkxNV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2Up OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByZXEtPnJpbmctPmRldjsKKworCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJl cSk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgZmVuY2Vfb3BzIGk5MTVfZmVuY2VfcmluZ19vcHMgPSB7CisJLmdldF9kcml2ZXJfbmFtZSA9 CWk5MTVfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAorCS5nZXRfdGltZWxpbmVfbmFtZSA9CWk5MTVf ZmVuY2VfcmluZ19nZXRfdGltZWxpbmVfbmFtZSwKKwkuZW5hYmxlX3NpZ25hbGluZyA9CWk5MTVf ZmVuY2VfcmluZ19lbmFibGVfc2lnbmFsaW5nLAorCS5zaWduYWxlZCA9CQlpOTE1X2ZlbmNlX3Jp bmdfc2lnbmFsZWQsCisJLndhaXQgPQkJCWk5MTVfZmVuY2VfcmluZ193YWl0LAorCS5maWxsX2Ry aXZlcl9kYXRhID0JaTkxNV9mZW5jZV9yaW5nX2ZpbGxfZHJpdmVyX2RhdGEsCisJLmZlbmNlX3Zh bHVlX3N0ciA9CWk5MTVfZmVuY2VfcmluZ192YWx1ZV9zdHIsCisJLnRpbWVsaW5lX3ZhbHVlX3N0 ciA9CWk5MTVfZmVuY2VfcmluZ190aW1lbGluZV92YWx1ZV9zdHIsCisJLnJlbGVhc2UgPQkJaTkx NV9mZW5jZV9yZWxlYXNlCit9OworCitpbnQgaTkxNV9jcmVhdGVfc3luY19mZW5jZV9yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCwKKwkJCQlzdHJ1Y3Qgc3luY19mZW5jZSAqKnN5bmNfZmVuY2UsIGludCAqZmVuY2VfZmQpCit7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CisJc3RydWN0IHN5bmNfZmVuY2Ug KnNmZW5jZTsKKwljaGFyIHJpbmdfbmFtZVs2XSA9ICJyaW5nMCI7CisJaW50IGZkOworCisJaWYg KCFpbnRlbF9yaW5nX2luaXRpYWxpemVkKHJpbmcpKSB7CisJCURSTV9ERUJVRygiUmluZyBub3Qg aW5pdGlhbGl6ZWQhXG4iKTsKKwkJcmV0dXJuIC1FQUdBSU47CisJfQorCisJcmVxID0gcmluZy0+ b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0OworCWlmIChXQVJOX09OX09OQ0UoIXJlcSkpCisJCXJl dHVybiAtRUNBTkNFTEVEOworCisJZmQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7 CisJaWYgKGZkIDwgMCkgeworCQlEUk1fREVCVUcoIk5vIGF2YWlsYWJsZSBmaWxlIGRlc2NyaXB0 b3IhXG4iKTsKKwkJcmV0dXJuIGZkOworCX0KKworCWk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJlbmNl KHJlcSk7CisKKwlmZW5jZV9pbml0KCZyZXEtPmZlbmNlLCAmaTkxNV9mZW5jZV9yaW5nX29wcywg JmZlbmNlX2xvY2ssCisJCSAgIGN0eC0+dXNlcl9oYW5kbGUsIHJlcS0+c2Vxbm8pOworCisJcmlu Z19uYW1lWzRdICs9IHJpbmctPmlkOworCXNmZW5jZSA9IHN5bmNfZmVuY2VfY3JlYXRlX2RtYShy aW5nX25hbWUsICZyZXEtPmZlbmNlKTsKKwlpZiAoIXNmZW5jZSkKKwkJZ290byBlcnI7CisKKwkq c3luY19mZW5jZSA9IHNmZW5jZTsKKwkqZmVuY2VfZmQgPSBmZDsKKworCXJldHVybiAwOworCitl cnI6CisJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOworCXB1dF91bnVzZWRfZmQo ZmQpOworCXJldHVybiAtRU5PTUVNOworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDJlNTU5ZjZlLi5j MTk3NzcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5j bHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0yNDYsNyArMjQ2LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfSFdTX0FERFIJCURS TV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0hXU19BRERSLCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2luaXQpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9JTklUCQlEUk1fSU9XKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fSU5JVCwgc3RydWN0IGRybV9pOTE1X2dlbV9p bml0KQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUglEUk1fSU9XKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUiwgc3RydWN0IGRybV9pOTE1X2dl bV9leGVjYnVmZmVyKQotI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIJRFJN X0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyLCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhF Q0JVRkZFUjIJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9FWEVDQlVG RkVSMiwgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMikKICNkZWZpbmUgRFJNX0lPQ1RM X0k5MTVfR0VNX1BJTgkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9Q SU4sIHN0cnVjdCBkcm1faTkxNV9nZW1fcGluKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1f VU5QSU4JRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1VOUElOLCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3VucGluKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQlVTWQkJ RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9CVVNZLCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2J1c3kpCkBAIC03MTgsNyArNzE4LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjYnVmZmVyMiB7CiAjZGVmaW5lIEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZBQ0UgKDI8 PDYpIC8qIGdlbjQvNSBvbmx5ICovCiAJX191NjQgZmxhZ3M7CiAJX191NjQgcnN2ZDE7IC8qIG5v dyB1c2VkIGZvciBjb250ZXh0IGluZm8gKi8KLQlfX3U2NCByc3ZkMjsKKwlfX3U2NCByc3ZkMjsg Lyogbm93IHVzZWQgZm9yIGZlbmNlIGZkICovCiB9OwogCiAvKiogUmVzZXRzIHRoZSBTTyB3cml0 ZSBvZmZzZXQgcmVnaXN0ZXJzIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgb24gZ2VuNy4gKi8KQEAg LTc1MCw3ICs3NTAsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIHsKICAqLwog I2RlZmluZSBJOTE1X0VYRUNfSEFORExFX0xVVAkJKDE8PDEyKQogCi0jZGVmaW5lIF9fSTkxNV9F WEVDX1VOS05PV05fRkxBR1MgLShJOTE1X0VYRUNfSEFORExFX0xVVDw8MSkKKyNkZWZpbmUgSTkx NV9FWEVDX0ZFTkNFX09VVAkJKDE8PDEzKQorCisjZGVmaW5lIF9fSTkxNV9FWEVDX1VOS05PV05f RkxBR1MgLShJOTE1X0VYRUNfRkVOQ0VfT1VUPDwxKQogCiAjZGVmaW5lIEk5MTVfRVhFQ19DT05U RVhUX0lEX01BU0sJKDB4ZmZmZmZmZmYpCiAjZGVmaW5lIGk5MTVfZXhlY2J1ZmZlcjJfc2V0X2Nv bnRleHRfaWQoZWIyLCBjb250ZXh0KSBcCi0tIAoyLjIuMAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK