From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 02/25] drm/i915: Add vblank notify mechanism Date: Wed, 18 Jun 2014 20:58:35 +0300 Message-ID: <1403114338-30513-3-git-send-email-ville.syrjala@linux.intel.com> References: <1403114338-30513-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id EEF626E6F4 for ; Wed, 18 Jun 2014 10:59:07 -0700 (PDT) In-Reply-To: <1403114338-30513-1-git-send-email-ville.syrjala@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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBhIHZibGFuayBub3RpZnkgbWVjaGFuaXNtIHdoZXJlIHlvdSBjYW4gYXNrIGZvciBhIGNhbGxi YWNrIHdoZW4gYQpzcGVjaWZpYyBmcmFtZSBjb3VudGVyIHZhbHVlIGhhcyBiZWVuIHBhc3NlZC4K ClRoaXMgY291bGQgYmUgdXNlZCBmb3IgdmFyaW91cyB0aGluZ3MgbGlrZSBGQkMsIElQUywgd2F0 ZXJtYXJrcywKYW5kIHVwZGF0aW5nIHNpbmdsZSBidWZmZXJlZCBkaXNwbGF5IHJlZ2lzdGVycyBm cm9tIHRoZSBpbnRlcnJ1cHQKaGFuZGxlciAoZWcuIGdhbW1hKS4KCkFzIGdlbjIgZG9lc24ndCBo YXZlIGEgaGFyZHdhcmUgZnJhbWUgY291bnRlciB3ZSB1c2UgdGhlIHNvZnR3YXJlIHZibGFuawpj b3VudGVyIGRybSBjb3JlIHByb2N2aWRlcy4gVGhpcyBpcyByYXRoZXIgcmFjeSwgYnV0IGZvciBz b21ldGhpbmcgbGlrZQpGQkMgaXQgZG9lc24ndCBtYXR0ZXIgdG9vIG11Y2guIEZvciBnZW4yIHdl IGNvdWxkIGp1c3Qgc2NoZXVkbGUgdGhlIEZCQwplbmFibGUgaGFwcGVuIGEgZnJhbWUgbGF0ZXIg dGhhbiBvbiBvdGhlciBnZW5zLiBUaGF0IHNob3VsZCBwYXBlciBvdmVyCnRoZSByYWNlcyBzdWZm aWNpZW50bHkuCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAg ICB8ICAgOCArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEzMiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggICAgIHwgIDE2ICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggMjE4ZjAxMS4uYTkwOGE1NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0xNzM2LDcgKzE3MzYsMTUgQEAgc3RhdGljIGJvb2wg aW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlw ZSBwaXBlKQogCWlmICghZHJtX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKSkKIAkJcmV0dXJuIGZh bHNlOwogCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQp KQorCQlyZXR1cm4gdHJ1ZTsKKwogCWNydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2dldF9jcnRj X2Zvcl9waXBlKGRldiwgcGlwZSkpOworCisJc3Bpbl9sb2NrKCZjcnRjLT5sb2NrKTsKKwlpbnRl bF92Ymxhbmtfbm90aWZ5X2NoZWNrKGNydGMpOworCXNwaW5fdW5sb2NrKCZjcnRjLT5sb2NrKTsK KwogCXdha2VfdXAoJmNydGMtPnZibF93YWl0KTsKIAogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDVlOGU3MTEuLmJlM2VlNjkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTExNDk5LDYgKzExNDk5LDkgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQogCiAJ aW5pdF93YWl0cXVldWVfaGVhZCgmaW50ZWxfY3J0Yy0+dmJsX3dhaXQpOwogCisJc3Bpbl9sb2Nr X2luaXQoJmludGVsX2NydGMtPmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZpbnRlbF9jcnRjLT52 Ymxhbmtfbm90aWZ5X2xpc3QpOworCiAJQlVHX09OKHBpcGUgPj0gQVJSQVlfU0laRShkZXZfcHJp di0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nKSB8fAogCSAgICAgICBkZXZfcHJpdi0+cGxhbmVfdG9f Y3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSAhPSBOVUxMKTsKIAlkZXZfcHJpdi0+cGxh bmVfdG9fY3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSA9ICZpbnRlbF9jcnRjLT5iYXNl OwpAQCAtMTMwNTEsMyArMTMwNTQsMTMyIEBAIGludGVsX2Rpc3BsYXlfcHJpbnRfZXJyb3Jfc3Rh dGUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAkJZXJyX3ByaW50ZihtLCAi ICBWU1lOQzogJTA4eFxuIiwgZXJyb3ItPnRyYW5zY29kZXJbaV0udnN5bmMpOwogCX0KIH0KKwor LyogaXMgYSBhZnRlciBiPyAqLworc3RhdGljIGJvb2wgdmJsX2NvdW50X2FmdGVyX2VxKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHUzMiBhLCB1MzIgYikKK3sKKwl1MzIgbWFzayA9IGRldi0+bWF4 X3ZibGFua19jb3VudDsKKworCS8qIG5vdyBoYXJkd2FyZSBjb3VudGVyIG9uIGdlbjIgKi8KKwlp ZiAobWFzayA9PSAwKQorCQltYXNrID0gLTE7CisKKwltYXNrICY9IChtYXNrID4+IDEpOworCisJ cmV0dXJuICEoKGEgLSBiKSAmIG1hc2spOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF92Ymxhbmtf bm90aWZ5X2NvbXBsZXRlKHN0cnVjdCBpbnRlbF92Ymxhbmtfbm90aWZ5ICpub3RpZnkpCit7CisJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSBub3RpZnktPmNydGM7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OworCisJYXNzZXJ0X3NwaW5fbG9ja2VkKCZjcnRjLT5s b2NrKTsKKworCWRybV92YmxhbmtfcHV0KGRldiwgY3J0Yy0+cGlwZSk7CisJbGlzdF9kZWwoJm5v dGlmeS0+bGlzdCk7CisJbm90aWZ5LT5jcnRjID0gTlVMTDsKK30KKwordm9pZCBpbnRlbF92Ymxh bmtfbm90aWZ5X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2 YmxhbmsgPQorCQkmZGV2LT52YmxhbmtbZHJtX2NydGNfaW5kZXgoJmNydGMtPmJhc2UpXTsKKwlz dHJ1Y3QgaW50ZWxfdmJsYW5rX25vdGlmeSAqbm90aWZ5LCAqbmV4dDsKKwl1MzIgdmJsX2NvdW50 OworCisJYXNzZXJ0X3NwaW5fbG9ja2VkKCZjcnRjLT5sb2NrKTsKKworCWlmIChsaXN0X2VtcHR5 KCZjcnRjLT52Ymxhbmtfbm90aWZ5X2xpc3QpKQorCQlyZXR1cm47CisKKwkvKiBubyBoYXJkd2Fy ZSBmcmFtZSBjb3VudGVyIG9uIGdlbjIgKi8KKwlpZiAoZGV2LT5tYXhfdmJsYW5rX2NvdW50ID09 IDApCisJCXZibF9jb3VudCA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KTsKKwllbHNlCisJ CXZibF9jb3VudCA9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjLT5w aXBlKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShub3RpZnksIG5leHQsICZjcnRjLT52 Ymxhbmtfbm90aWZ5X2xpc3QsIGxpc3QpIHsKKwkJaWYgKCF2YmxfY291bnRfYWZ0ZXJfZXEoZGV2 LCB2YmxfY291bnQsIG5vdGlmeS0+dmJsX2NvdW50KSkKKwkJCWNvbnRpbnVlOworCisJCWludGVs X3ZibGFua19ub3RpZnlfY29tcGxldGUobm90aWZ5KTsKKwkJbm90aWZ5LT5ub3RpZnkobm90aWZ5 KTsKKwl9Cit9CisKK2ludCBpbnRlbF92Ymxhbmtfbm90aWZ5X2FkZChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKKwkJCSAgICBzdHJ1Y3QgaW50ZWxfdmJsYW5rX25vdGlmeSAqbm90aWZ5KQorewor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwl1bnNpZ25lZCBsb25n IGlycWZsYWdzOworCXUzMiB2YmxfY291bnQ7CisJaW50IHJldDsKKworCWlmIChXQVJOX09OKG5v dGlmeS0+Y3J0YykpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gZHJtX3ZibGFua19nZXQo ZGV2LCBjcnRjLT5waXBlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJc3Bpbl9sb2Nr X2lycXNhdmUoJmNydGMtPmxvY2ssIGlycWZsYWdzKTsKKworCW5vdGlmeS0+Y3J0YyA9IGNydGM7 CisJbGlzdF9hZGQoJm5vdGlmeS0+bGlzdCwgJmNydGMtPnZibGFua19ub3RpZnlfbGlzdCk7CisK KwkvKiBubyBoYXJkd2FyZSBmcmFtZSBjb3VudGVyIG9uIGdlbjIgKi8KKwlpZiAoZGV2LT5tYXhf dmJsYW5rX2NvdW50ID09IDApIHsKKwkJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0K KwkJCSZkZXYtPnZibGFua1tkcm1fY3J0Y19pbmRleCgmY3J0Yy0+YmFzZSldOworCisJCXZibF9j b3VudCA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KTsKKwl9IGVsc2UgeworCQl2YmxfY291 bnQgPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0Yy0+cGlwZSk7CisJ fQorCisJaWYgKHZibF9jb3VudF9hZnRlcl9lcShkZXYsIHZibF9jb3VudCwgbm90aWZ5LT52Ymxf Y291bnQpKSB7CisJCWludGVsX3ZibGFua19ub3RpZnlfY29tcGxldGUobm90aWZ5KTsKKwkJbm90 aWZ5LT5ub3RpZnkobm90aWZ5KTsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjcnRj LT5sb2NrLCBpcnFmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworYm9vbCBpbnRlbF92Ymxhbmtf bm90aWZ5X3BlbmRpbmcoc3RydWN0IGludGVsX3ZibGFua19ub3RpZnkgKm5vdGlmeSkKK3sKKwly ZXR1cm4gbm90aWZ5LT5jcnRjICE9IE5VTEw7Cit9CisKK3ZvaWQgaW50ZWxfdmJsYW5rX25vdGlm eV9jYW5jZWwoc3RydWN0IGludGVsX3ZibGFua19ub3RpZnkgKm5vdGlmeSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IEFDQ0VTU19PTkNFKG5vdGlmeS0+Y3J0Yyk7CisJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKKworCWlmICghY3J0YykKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2ly cXNhdmUoJmNydGMtPmxvY2ssIGlycWZsYWdzKTsKKwlpZiAobm90aWZ5LT5jcnRjKQorCQlpbnRl bF92Ymxhbmtfbm90aWZ5X2NvbXBsZXRlKG5vdGlmeSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmY3J0Yy0+bG9jaywgaXJxZmxhZ3MpOworfQorCit1MzIgaW50ZWxfY3J0Y192YmxfY291bnRf cmVsX3RvX2FicyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgdTMyIHJlbCkKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CisKKwkvKiBub3cgaGFyZHdhcmUgY291 bnRlciBvbiBnZW4yICovCisJaWYgKGRldi0+bWF4X3ZibGFua19jb3VudCA9PSAwKSB7CisJCXN0 cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9CisJCQkmZGV2LT52YmxhbmtbZHJtX2NydGNf aW5kZXgoJmNydGMtPmJhc2UpXTsKKworCQlyZXR1cm4gYXRvbWljX3JlYWQoJnZibGFuay0+Y291 bnQpICsgcmVsOworCX0KKworCXJldHVybiAoZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRl cihkZXYsIGNydGMtPnBpcGUpICsgcmVsKSAmCisJCWRldi0+bWF4X3ZibGFua19jb3VudDsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYWI1OTYyYi4uYzkzNjI2YiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTM1OCw2ICszNTgsMTMgQEAgc3RydWN0IGludGVsX3BpcGVf d20gewogCWJvb2wgc3ByaXRlc19zY2FsZWQ7CiB9OwogCitzdHJ1Y3QgaW50ZWxfdmJsYW5rX25v dGlmeSB7CisJdm9pZCAoKm5vdGlmeSkoc3RydWN0IGludGVsX3ZibGFua19ub3RpZnkgKm5vdGlm eSk7CisJc3RydWN0IGludGVsX2NydGMgKmNydGM7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owor CXUzMiB2YmxfY291bnQ7Cit9OworCiBzdHJ1Y3QgaW50ZWxfbW1pb19mbGlwIHsKIAl1MzIgc2Vx bm87CiAJdTMyIHJpbmdfaWQ7CkBAIC00MTcsNiArNDI0LDkgQEAgc3RydWN0IGludGVsX2NydGMg ewogCiAJaW50IHNjYW5saW5lX29mZnNldDsKIAlzdHJ1Y3QgaW50ZWxfbW1pb19mbGlwIG1taW9f ZmxpcDsKKworCXN0cnVjdCBsaXN0X2hlYWQgdmJsYW5rX25vdGlmeV9saXN0OworCXNwaW5sb2Nr X3QgbG9jazsKIH07CiAKIHN0cnVjdCBpbnRlbF9wbGFuZV93bV9wYXJhbWV0ZXJzIHsKQEAgLTgx MSw2ICs4MjEsMTIgQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUsCiAJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX2NvbmZpZyAqcGlw ZV9jb25maWcpOwogaW50IGludGVsX2Zvcm1hdF90b19mb3VyY2MoaW50IGZvcm1hdCk7CiB2b2lk IGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp OworaW50IGludGVsX3ZibGFua19ub3RpZnlfYWRkKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAor CQkJICAgIHN0cnVjdCBpbnRlbF92Ymxhbmtfbm90aWZ5ICpub3RpZnkpOwordm9pZCBpbnRlbF92 Ymxhbmtfbm90aWZ5X2NhbmNlbChzdHJ1Y3QgaW50ZWxfdmJsYW5rX25vdGlmeSAqbm90aWZ5KTsK K2Jvb2wgaW50ZWxfdmJsYW5rX25vdGlmeV9wZW5kaW5nKHN0cnVjdCBpbnRlbF92Ymxhbmtfbm90 aWZ5ICpub3RpZnkpOwordm9pZCBpbnRlbF92Ymxhbmtfbm90aWZ5X2NoZWNrKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKTsKK3UzMiBpbnRlbF9jcnRjX3ZibF9jb3VudF9yZWxfdG9fYWJzKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLCB1MzIgcmVsKTsKIAogCiAvKiBpbnRlbF9kcC5jICovCi0tIAox LjguNS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=