From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 12/24] drm/i915: Split plane updates of crtc->atomic into a helper. Date: Mon, 1 Jun 2015 15:27:15 +0200 Message-ID: <1433165247-15928-13-git-send-email-maarten.lankhorst@linux.intel.com> References: <1433165247-15928-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTP id E1BAA6E606 for ; Mon, 1 Jun 2015 06:27:44 -0700 (PDT) In-Reply-To: <1433165247-15928-1-git-send-email-maarten.lankhorst@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 VGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdmVyaWZ5IHRoYXQgbm8gY2hhbmdlcyBhcmUgZG9uZSB3 aGVuCmNhbGxpbmcgdGhpcyBmcm9tIGNydGMgaW5zdGVhZC4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0 ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgMjEgKy0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8IDIzMyArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAg IHwgICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICB8ICAz MiArLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspLCAxMzQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwppbmRleCA4NmJh NGIyYzNhNjUuLmFhMjEyODM2OWEwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljX3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRv bWljX3BsYW5lLmMKQEAgLTExNCw2ICsxMTQsNyBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfc3Rh dGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7CisJaW50IHJldDsKIAogCWNydGMgPSBj cnRjID8gY3J0YyA6IHBsYW5lLT5jcnRjOwogCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwpAQCAtMTYwLDIwICsxNjEsNiBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0b21pY19j aGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpbnRlbF9zdGF0ZS0+Y2xpcC55MiA9CiAJ CWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID8gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCA6IDA7CiAK LQkvKgotCSAqIERpc2FibGluZyBhIHBsYW5lIGlzIGFsd2F5cyBva2F5OyB3ZSBqdXN0IG5lZWQg dG8gdXBkYXRlCi0JICogZmIgdHJhY2tpbmcgaW4gYSBzcGVjaWFsIHdheSBzaW5jZSBjbGVhbnVw X2ZiKCkgd29uJ3QKLQkgKiBnZXQgY2FsbGVkIGJ5IHRoZSBwbGFuZSBoZWxwZXJzLgotCSAqLwot CWlmIChzdGF0ZS0+ZmIgPT0gTlVMTCAmJiBwbGFuZS0+c3RhdGUtPmZiICE9IE5VTEwpIHsKLQkJ LyoKLQkJICogJ3ByZXBhcmUnIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHBsYW5lIGlzIGJlaW5nIGRp c2FibGVkLCBzbwotCQkgKiB3ZSBuZWVkIHRvIGhhbmRsZSBmcm9udGJ1ZmZlciB0cmFja2luZyBh cyBhIHNwZWNpYWwgY2FzZQotCQkgKi8KLQkJaW50ZWxfY3J0Yy0+YXRvbWljLmRpc2FibGVkX3Bs YW5lcyB8PQotCQkJKDEgPDwgZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7Ci0JfQotCiAJaWYgKHN0 YXRlLT5mYiAmJiBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewog CQlpZiAoIShzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE IHx8CiAJCQlzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCkpIHsKQEAgLTE5OCw3ICsxODUsMTEgQEAgc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9CiAKLQlyZXR1cm4gaW50ZWxf cGxhbmUtPmNoZWNrX3BsYW5lKHBsYW5lLCBpbnRlbF9zdGF0ZSk7CisJcmV0ID0gaW50ZWxfcGxh bmUtPmNoZWNrX3BsYW5lKHBsYW5lLCBpbnRlbF9zdGF0ZSk7CisJaWYgKHJldCB8fCAhc3RhdGUt PnN0YXRlKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIGludGVsX3BsYW5lX2F0b21pY19jYWxj X2NoYW5nZXMoJmNydGNfc3RhdGUtPmJhc2UsIHN0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQgaW50 ZWxfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA4MmVkN2U5NDI3YTAuLjc3MmU3MGE0MTAzYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNDM5MSwxMSArNDM5MSwxMiBA QCBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3Rh dGUsIGludCBmb3JjZV9kZXRhY2gpCiAJCWFkanVzdGVkX21vZGUtPmhkaXNwbGF5LCBhZGp1c3Rl ZF9tb2RlLT5oZGlzcGxheSk7CiB9CiAKLWludCBza2xfdXBkYXRlX3NjYWxlcl9wbGFuZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBzdHJ1Y3QgaW50ZWxfcGxh bmUgKmludGVsX3BsYW5lLAotCQkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCitzdGF0aWMgaW50IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0KKwkJ dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwogCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7CiAJaW50IHJldDsKIApAQCAtMTEz OTksNiArMTE0MDAsMTM5IEBAIG91dF9oYW5nOgogCXJldHVybiByZXQ7CiB9CiAKK2ludCBpbnRl bF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKKwkJCQkgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCit7CisJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0ZS0+Y3J0YzsKKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUgPSBwbGFuZV9zdGF0ZS0+cGxhbmU7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0K KwkJdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKKwlpbnQgaWR4ID0gaW50ZWxf Y3J0Yy0+YmFzZS5iYXNlLmlkLCByZXQ7CisJaW50IGkgPSBkcm1fcGxhbmVfaW5kZXgocGxhbmUp OworCWJvb2wgbW9kZV9jaGFuZ2VkID0gbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKTsKKwlib29s IHdhc19jcnRjX2VuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+YWN0aXZlOworCWJvb2wgaXNfY3J0Y19l bmFibGVkID0gY3J0Y19zdGF0ZS0+YWN0aXZlOworCisJYm9vbCB0dXJuX29mZiwgdHVybl9vbiwg dmlzaWJsZSwgd2FzX3Zpc2libGU7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+ZmI7CisKKwlpZiAoY3J0Y19zdGF0ZSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA5ICYmCisJICAgIHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUikgeworCQly ZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9wbGFuZSgKKwkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Y19zdGF0ZSksCisJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSkpOworCQlpZiAo cmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwkvKgorCSAqIERpc2FibGluZyBhIHBsYW5lIGlz IGFsd2F5cyBva2F5OyB3ZSBqdXN0IG5lZWQgdG8gdXBkYXRlCisJICogZmIgdHJhY2tpbmcgaW4g YSBzcGVjaWFsIHdheSBzaW5jZSBjbGVhbnVwX2ZiKCkgd29uJ3QKKwkgKiBnZXQgY2FsbGVkIGJ5 IHRoZSBwbGFuZSBoZWxwZXJzLgorCSAqLworCWlmIChvbGRfcGxhbmVfc3RhdGUtPmJhc2UuZmIg JiYgIWZiKQorCQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZWRfcGxhbmVzIHw9IDEgPDwgaTsK KworCS8qIGRvbid0IHJ1biByZXN0IGR1cmluZyBtb2Rlc2V0IHlldCAqLworCWlmICghaW50ZWxf Y3J0Yy0+YWN0aXZlIHx8IG1vZGVfY2hhbmdlZCkKKwkJcmV0dXJuIDA7CisKKwlEUk1fREVCVUdf QVRPTUlDKCJbQ1JUQzolaV0gd2FzIGVuYWJsZWQgJWkgbm93IGVuYWJsZWQ6ICVpXG4iLAorCQkJ IGlkeCwgd2FzX2NydGNfZW5hYmxlZCwgaXNfY3J0Y19lbmFibGVkKTsKKworCXdhc192aXNpYmxl ID0gb2xkX3BsYW5lX3N0YXRlLT52aXNpYmxlOworCXZpc2libGUgPSB0b19pbnRlbF9wbGFuZV9z dGF0ZShwbGFuZV9zdGF0ZSktPnZpc2libGU7CisKKwlpZiAoIXdhc19jcnRjX2VuYWJsZWQgJiYg V0FSTl9PTih3YXNfdmlzaWJsZSkpCisJCXdhc192aXNpYmxlID0gZmFsc2U7CisKKwlpZiAoIWlz X2NydGNfZW5hYmxlZCAmJiBXQVJOX09OKHZpc2libGUpKQorCQl2aXNpYmxlID0gZmFsc2U7CisK KwlpZiAoIXdhc192aXNpYmxlICYmICF2aXNpYmxlKQorCQlyZXR1cm4gMDsKKworCXR1cm5fb2Zm ID0gd2FzX3Zpc2libGUgJiYgKCF2aXNpYmxlIHx8IG1vZGVfY2hhbmdlZCk7CisJdHVybl9vbiA9 IHZpc2libGUgJiYgKCF3YXNfdmlzaWJsZSB8fCBtb2RlX2NoYW5nZWQpOworCisJRFJNX0RFQlVH X0FUT01JQygiW0NSVEM6JWldIGhhcyBbUExBTkU6JWldIHdpdGggZmIgJWlcbiIsIGlkeCwKKwkJ CSBwbGFuZS0+YmFzZS5pZCwgZmIgPyBmYi0+YmFzZS5pZCA6IC0xKTsKKworCURSTV9ERUJVR19B VE9NSUMoIltQTEFORTolaV0gdmlzaWJsZSAlaSAtPiAlaSwgb2ZmICVpLCBvbiAlaSwgbXMgJWlc biIsCisJCQkgcGxhbmUtPmJhc2UuaWQsIHdhc192aXNpYmxlLCB2aXNpYmxlLAorCQkJIHR1cm5f b2ZmLCB0dXJuX29uLCBtb2RlX2NoYW5nZWQpOworCisJLyogcGxhbmUgYmVpbmcgdHVybmVkIG9m ZiBhcyBwYXJ0IG9mIG1vZGVzZXQgb3IgY2hhbmdlcz8gKi8KKwlpZiAoIXR1cm5fb24gJiYgaW50 ZWxfd21fbmVlZF91cGRhdGUocGxhbmUsIHBsYW5lX3N0YXRlKSkKKwkJaW50ZWxfY3J0Yy0+YXRv bWljLnVwZGF0ZV93bSA9IHRydWU7CisKKwlzd2l0Y2ggKHBsYW5lLT50eXBlKSB7CisJY2FzZSBE Uk1fUExBTkVfVFlQRV9QUklNQVJZOgorCQlpZiAodmlzaWJsZSkKKwkJCWludGVsX2NydGMtPmF0 b21pYy5mYl9iaXRzIHw9CisJCQkgICAgSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShpbnRlbF9j cnRjLT5waXBlKTsKKworCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF9mb3JfZmxpcHMgPSB0cnVl OworCQlpbnRlbF9jcnRjLT5hdG9taWMucHJlX2Rpc2FibGVfcHJpbWFyeSA9IHR1cm5fb2ZmOwor CQlpbnRlbF9jcnRjLT5hdG9taWMucG9zdF9lbmFibGVfcHJpbWFyeSA9IHR1cm5fb247CisKKwkJ aWYgKHR1cm5fb2ZmKQorCQkJaW50ZWxfY3J0Yy0+YXRvbWljLmRpc2FibGVfZmJjID0gdHJ1ZTsK KworCQkvKgorCQkgKiBGQkMgZG9lcyBub3Qgd29yayBvbiBzb21lIHBsYXRmb3JtcyBmb3Igcm90 YXRlZAorCQkgKiBwbGFuZXMsIHNvIGRpc2FibGUgaXQgd2hlbiByb3RhdGlvbiBpcyBub3QgMCBh bmQKKwkJICogdXBkYXRlIGl0IHdoZW4gcm90YXRpb24gaXMgc2V0IGJhY2sgdG8gMC4KKwkJICoK KwkJICogRklYTUU6IFRoaXMgaXMgcmVkdW5kYW50IHdpdGggdGhlIGZiYyB1cGRhdGUgZG9uZSBp bgorCQkgKiB0aGUgcHJpbWFyeSBwbGFuZSBlbmFibGUgZnVuY3Rpb24gZXhjZXB0IHRoYXQgdGhh dAorCQkgKiBvbmUgaXMgZG9uZSB0b28gbGF0ZS4gV2UgZXZlbnR1YWxseSBuZWVkIHRvIHVuaWZ5 CisJCSAqIHRoaXMuCisJCSAqLworCisJCWlmICh2aXNpYmxlICYmCisJCSAgICBJTlRFTF9JTkZP KGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgorCQkgICAgZGV2X3ByaXYtPmZiYy5j cnRjID09IGludGVsX2NydGMgJiYKKwkJICAgIHBsYW5lX3N0YXRlLT5yb3RhdGlvbiAhPSBCSVQo RFJNX1JPVEFURV8wKSkKKwkJCWludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYyA9IHRydWU7 CisKKwkJLyoKKwkJICogQkRXIHNpZ25hbHMgZmxpcCBkb25lIGltbWVkaWF0ZWx5IGlmIHRoZSBw bGFuZQorCQkgKiBpcyBkaXNhYmxlZCwgZXZlbiBpZiB0aGUgcGxhbmUgZW5hYmxlIGlzIGFscmVh ZHkKKwkJICogYXJtZWQgdG8gb2NjdXIgYXQgdGhlIG5leHQgdmJsYW5rIDooCisJCSAqLworCQlp ZiAodHVybl9vbiAmJiBJU19CUk9BRFdFTEwoZGV2KSkKKwkJCWludGVsX2NydGMtPmF0b21pYy53 YWl0X3ZibGFuayA9IHRydWU7CisKKwkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV9mYmMgfD0g dmlzaWJsZSB8fCBtb2RlX2NoYW5nZWQ7CisJCWJyZWFrOworCWNhc2UgRFJNX1BMQU5FX1RZUEVf Q1VSU09SOgorCQlpZiAodmlzaWJsZSkKKwkJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9 CisJCQkgICAgSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKGludGVsX2NydGMtPnBpcGUpOworCQli cmVhazsKKwljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6CisJCS8qCisJCSAqICdwcmVwYXJl JyBpcyBuZXZlciBjYWxsZWQgd2hlbiBwbGFuZSBpcyBiZWluZyBkaXNhYmxlZCwgc28KKwkJICog d2UgbmVlZCB0byBoYW5kbGUgZnJvbnRidWZmZXIgdHJhY2tpbmcgYXMgYSBzcGVjaWFsIGNhc2UK KwkJICovCisJCWlmICh2aXNpYmxlKQorCQkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0K KwkJCSAgICBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50ZWxfY3J0Yy0+cGlwZSk7CisKKwkJ aWYgKHR1cm5fb2ZmICYmIGlzX2NydGNfZW5hYmxlZCkgeworCQkJaW50ZWxfY3J0Yy0+YXRvbWlj LndhaXRfdmJsYW5rID0gdHJ1ZTsKKwkJCWludGVsX2NydGMtPmF0b21pYy51cGRhdGVfc3ByaXRl X3dhdGVybWFya3MgfD0KKwkJCQkxIDw8IGk7CisJCX0KKwkJYnJlYWs7CisJfQorCXJldHVybiAw OworfQorCiBzdGF0aWMgYm9vbCBlbmNvZGVyc19jbG9uZWFibGUoY29uc3Qgc3RydWN0IGludGVs X2VuY29kZXIgKmEsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2VuY29kZXIgKmIpCiB7 CkBAIC0xMzExNSw2ICsxMzI0OSw5IEBAIGJvb2wgaW50ZWxfd21fbmVlZF91cGRhdGUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJICAgIHBsYW5lLT5zdGF0ZS0+cm90YXRpb24gIT0gc3RhdGUt PnJvdGF0aW9uKQogCQlyZXR1cm4gdHJ1ZTsKIAorCWlmIChwbGFuZS0+c3RhdGUtPmNydGNfdyAh PSBzdGF0ZS0+Y3J0Y193KQorCQlyZXR1cm4gdHJ1ZTsKKwogCXJldHVybiBmYWxzZTsKIH0KIApA QCAtMTMyMzksNyArMTMzNzYsNiBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAogCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2OwotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKQEAgLTEzMjUwLDcgKzEz Mzg2LDYgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAlib29sIGNhbl9wb3NpdGlvbiA9IGZhbHNlOwogCWludCBtYXhfc2NhbGUgPSBEUk1fUExB TkVfSEVMUEVSX05PX1NDQUxJTkc7CiAJaW50IG1pbl9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJf Tk9fU0NBTElORzsKLQlpbnQgcmV0OwogCiAJY3J0YyA9IGNydGMgPyBjcnRjIDogcGxhbmUtPmNy dGM7CiAJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CkBAIC0xMzI2Niw3MyArMTM0 MDEsMTEgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAkJY2FuX3Bvc2l0aW9uID0gdHJ1ZTsKIAl9CiAKLQlyZXQgPSBkcm1fcGxhbmVfaGVscGVy X2NoZWNrX3VwZGF0ZShwbGFuZSwgY3J0YywgZmIsCi0JCQkJCSAgICBzcmMsIGRlc3QsIGNsaXAs Ci0JCQkJCSAgICBtaW5fc2NhbGUsCi0JCQkJCSAgICBtYXhfc2NhbGUsCi0JCQkJCSAgICBjYW5f cG9zaXRpb24sIHRydWUsCi0JCQkJCSAgICAmc3RhdGUtPnZpc2libGUpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7Ci0KLQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Ci0JCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlID0KLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5l LT5zdGF0ZSk7Ci0KLQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfZm9yX2ZsaXBzID0gdHJ1ZTsK LQotCQkvKgotCQkgKiBGQkMgZG9lcyBub3Qgd29yayBvbiBzb21lIHBsYXRmb3JtcyBmb3Igcm90 YXRlZAotCQkgKiBwbGFuZXMsIHNvIGRpc2FibGUgaXQgd2hlbiByb3RhdGlvbiBpcyBub3QgMCBh bmQKLQkJICogdXBkYXRlIGl0IHdoZW4gcm90YXRpb24gaXMgc2V0IGJhY2sgdG8gMC4KLQkJICoK LQkJICogRklYTUU6IFRoaXMgaXMgcmVkdW5kYW50IHdpdGggdGhlIGZiYyB1cGRhdGUgZG9uZSBp bgotCQkgKiB0aGUgcHJpbWFyeSBwbGFuZSBlbmFibGUgZnVuY3Rpb24gZXhjZXB0IHRoYXQgdGhh dAotCQkgKiBvbmUgaXMgZG9uZSB0b28gbGF0ZS4gV2UgZXZlbnR1YWxseSBuZWVkIHRvIHVuaWZ5 Ci0JCSAqIHRoaXMuCi0JCSAqLwotCQlpZiAoc3RhdGUtPnZpc2libGUgJiYKLQkJICAgIElOVEVM X0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChkZXYpICYmCi0JCSAgICBkZXZfcHJpdi0+ ZmJjLmNydGMgPT0gaW50ZWxfY3J0YyAmJgotCQkgICAgc3RhdGUtPmJhc2Uucm90YXRpb24gIT0g QklUKERSTV9ST1RBVEVfMCkpIHsKLQkJCWludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYyA9 IHRydWU7Ci0JCX0KLQotCQlpZiAoc3RhdGUtPnZpc2libGUgJiYgIW9sZF9zdGF0ZS0+dmlzaWJs ZSkgewotCQkJLyoKLQkJCSAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBpbW1lZGlhdGVseSBpZiB0 aGUgcGxhbmUKLQkJCSAqIGlzIGRpc2FibGVkLCBldmVuIGlmIHRoZSBwbGFuZSBlbmFibGUgaXMg YWxyZWFkeQotCQkJICogYXJtZWQgdG8gb2NjdXIgYXQgdGhlIG5leHQgdmJsYW5rIDooCi0JCQkg Ki8KLQkJCWlmIChJU19CUk9BRFdFTEwoZGV2KSkKLQkJCQlpbnRlbF9jcnRjLT5hdG9taWMud2Fp dF92YmxhbmsgPSB0cnVlOwotCi0JCQlpZiAoY3J0Y19zdGF0ZSAmJiAhbmVlZHNfbW9kZXNldCgm Y3J0Y19zdGF0ZS0+YmFzZSkpCi0JCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnBvc3RfZW5hYmxlX3By aW1hcnkgPSB0cnVlOwotCQl9Ci0KLQkJaWYgKCFzdGF0ZS0+dmlzaWJsZSAmJiBvbGRfc3RhdGUt PnZpc2libGUgJiYKLQkJICAgIGNydGNfc3RhdGUgJiYgIW5lZWRzX21vZGVzZXQoJmNydGNfc3Rh dGUtPmJhc2UpKQotCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnByZV9kaXNhYmxlX3ByaW1hcnkgPSB0 cnVlOwotCi0JCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Ci0JCQlJTlRFTF9GUk9OVEJV RkZFUl9QUklNQVJZKGludGVsX2NydGMtPnBpcGUpOwotCi0JCWludGVsX2NydGMtPmF0b21pYy51 cGRhdGVfZmJjID0gdHJ1ZTsKLQotCQlpZiAoaW50ZWxfd21fbmVlZF91cGRhdGUocGxhbmUsICZz dGF0ZS0+YmFzZSkpCi0JCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtID0gdHJ1ZTsKLQl9 Ci0KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewotCQlyZXQgPSBza2xfdXBkYXRl X3NjYWxlcl9wbGFuZShjcnRjX3N0YXRlLAotCQkJCQkgICAgICB0b19pbnRlbF9wbGFuZShwbGFu ZSksCi0JCQkJCSAgICAgIHN0YXRlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0JfQot Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGRybV9wbGFuZV9oZWxwZXJfY2hlY2tfdXBkYXRlKHBsYW5l LCBjcnRjLCBmYiwKKwkJCQkJICAgICBzcmMsIGRlc3QsIGNsaXAsCisJCQkJCSAgICAgbWluX3Nj YWxlLCBtYXhfc2NhbGUsCisJCQkJCSAgICAgY2FuX3Bvc2l0aW9uLCB0cnVlLAorCQkJCQkgICAg ICZzdGF0ZS0+dmlzaWJsZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzYwNCwxMCArMTM2Nzcs OSBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCiAJLyogaWYgd2Ugd2FudCB0byB0dXJuIG9mZiB0 aGUgY3Vyc29yIGlnbm9yZSB3aWR0aCBhbmQgaGVpZ2h0ICovCiAJaWYgKCFvYmopCi0JCWdvdG8g ZmluaXNoOworCQlyZXR1cm4gMDsKIAogCS8qIENoZWNrIGZvciB3aGljaCBjdXJzb3IgdHlwZXMg d2Ugc3VwcG9ydCAqLwogCWlmICghY3Vyc29yX3NpemVfb2soZGV2LCBzdGF0ZS0+YmFzZS5jcnRj X3csIHN0YXRlLT5iYXNlLmNydGNfaCkpIHsKQEAgLTEzNjI0LDE5ICsxMzY5NiwxMCBAQCBpbnRl bF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAlpZiAoZmIt Pm1vZGlmaWVyWzBdICE9IERSTV9GT1JNQVRfTU9EX05PTkUpIHsKIAkJRFJNX0RFQlVHX0tNUygi Y3Vyc29yIGNhbm5vdCBiZSB0aWxlZFxuIik7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JfQotCi1maW5p c2g6Ci0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewotCQlpZiAocGxhbmUtPnN0YXRlLT5jcnRj X3cgIT0gc3RhdGUtPmJhc2UuY3J0Y193KQotCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93 bSA9IHRydWU7Ci0KLQkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KLQkJCUlOVEVMX0ZS T05UQlVGRkVSX0NVUlNPUihpbnRlbF9jcnRjLT5waXBlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKaW5kZXggNzMwMWJiM2E0ZGIzLi40NDE4ZThhYmY2ZGYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMDU3LDYgKzEwNTcsOCBAQCBpbnQgaW50ZWxfcGxhbmVf YXRvbWljX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgICAgc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsCiAJCQkJICAgIHN0cnVjdCBkcm1fcHJvcGVydHkg KnByb3BlcnR5LAogCQkJCSAgICB1aW50NjRfdCB2YWwpOworaW50IGludGVsX3BsYW5lX2F0b21p Y19jYWxjX2NoYW5nZXMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CiAKIHVuc2lnbmVkIGludAog aW50ZWxfdGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgcGl4ZWxf Zm9ybWF0LApAQCAtMTEzOCw5ICsxMTQwLDYgQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9j b25maWcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiB2b2lkIGludGVsX2NydGNfd2Fp dF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogdm9pZCBpbnRlbF9t b2Rlc2V0X3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSk7CiB2b2lkIHNrbF9kZXRhY2hfc2NhbGVycyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0Yyk7Ci1pbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCi0JCQkgICAgc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSwK LQkJCSAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKIAogaW50IHNr bF91cGRhdGVfc2NhbGVyX2NydGMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs IGludCBmb3JjZV9kZXRhY2gpOwogaW50IHNrbF9tYXhfc2NhbGUoc3RydWN0IGludGVsX2NydGMg KmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggZmU5NWYyNWYwMTlhLi5mNTkyMWI2NTJiOTAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC03NTYsNyArNzU2LDYgQEAgaW50ZWxfY2hl Y2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWludCBtYXhfc2NhbGUs IG1pbl9zY2FsZTsKIAlib29sIGNhbl9zY2FsZTsKIAlpbnQgcGl4ZWxfc2l6ZTsKLQlpbnQgcmV0 OwogCiAJaW50ZWxfY3J0YyA9IGludGVsX2NydGMgPyBpbnRlbF9jcnRjIDogdG9faW50ZWxfY3J0 YyhwbGFuZS0+Y3J0Yyk7CiAJY3J0Y19zdGF0ZSA9IHN0YXRlLT5iYXNlLnN0YXRlID8KQEAgLTc2 NCw3ICs3NjMsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCiAKIAlpZiAoIWZiKSB7CiAJCXN0YXRlLT52aXNpYmxlID0gZmFsc2U7Ci0JCWdvdG8g ZmluaXNoOworCQlyZXR1cm4gMDsKIAl9CiAKIAkvKiBEb24ndCBtb2RpZnkgYW5vdGhlciBwaXBl J3MgcGxhbmUgKi8KQEAgLTkxNywzNSArOTE2LDYgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWRzdC0+eTEgPSBjcnRjX3k7CiAJZHN0LT55MiA9 IGNydGNfeSArIGNydGNfaDsKIAotZmluaXNoOgotCS8qCi0JICogSWYgdGhlIHNwcml0ZSBpcyBj b21wbGV0ZWx5IGNvdmVyaW5nIHRoZSBwcmltYXJ5IHBsYW5lLAotCSAqIHdlIGNhbiBkaXNhYmxl IHRoZSBwcmltYXJ5IGFuZCBzYXZlIHBvd2VyLgotCSAqLwotCWlmIChpbnRlbF9jcnRjLT5hY3Rp dmUpIHsKLQkJaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMgfD0KLQkJCUlOVEVMX0ZST05UQlVG RkVSX1NQUklURShpbnRlbF9jcnRjLT5waXBlKTsKLQotCQlpZiAoaW50ZWxfd21fbmVlZF91cGRh dGUocGxhbmUsICZzdGF0ZS0+YmFzZSkpCi0JCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dt ID0gdHJ1ZTsKLQotCQlpZiAoIXN0YXRlLT52aXNpYmxlKSB7Ci0JCQkvKgotCQkJICogQXZvaWQg dW5kZXJydW5zIHdoZW4gZGlzYWJsaW5nIHRoZSBzcHJpdGUuCi0JCQkgKiBGSVhNRSByZW1vdmUg b25jZSB3YXRlcm1hcmsgdXBkYXRlcyBhcmUgZG9uZSBwcm9wZXJseS4KLQkJCSAqLwotCQkJaW50 ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0gdHJ1ZTsKLQkJCWludGVsX2NydGMtPmF0b21p Yy51cGRhdGVfc3ByaXRlX3dhdGVybWFya3MgfD0KLQkJCQkoMSA8PCBkcm1fcGxhbmVfaW5kZXgo cGxhbmUpKTsKLQkJfQotCX0KLQotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Ci0J CXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKGNydGNfc3RhdGUsIGludGVsX3BsYW5lLCBz dGF0ZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCX0KLQogCXJldHVybiAwOwogfQog Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK