From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v4 3/5] drm/i915: Make sprite updates atomic Date: Thu, 13 Feb 2014 17:42:52 +0200 Message-ID: <1392306174-9148-4-git-send-email-ville.syrjala@linux.intel.com> References: <1392306174-9148-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 48CCCFB274 for ; Thu, 13 Feb 2014 07:43:10 -0800 (PST) In-Reply-To: <1392306174-9148-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBhIG1lY2hhbmlzbSBieSB3aGljaCB3ZSBjYW4gZXZhZGUgdGhlIGxlYWRpbmcgZWRnZSBvZiB2 YmxhbmsuIFRoaXMKZ3VhcmFudGVlcyB0aGF0IG5vIHR3byBzcHJpdGUgcmVnaXN0ZXIgd3JpdGVz IHdpbGwgc3RyYWRkbGUgb24gZWl0aGVyCnNpZGUgb2YgdGhlIHZibGFuayBzdGFydCwgYW5kIHRo YXQgbWVhbnMgYWxsIHRoZSB3cml0ZXMgd2lsbCBiZSBsYXRjaGVkCnRvZ2V0aGVyIGluIG9uZSBh dG9taWMgb3BlcmF0aW9uLgoKV2UgZG8gdGhlIHZibGFuayBldmFkZSBieSBjaGVja2luZyB0aGUg c2NhbmxpbmUgY291bnRlciwgYW5kIGlmIGl0J3MgdG9vCmNsb3NlIHRvIHRoZSBzdGFydCBvZiB2 YmxhbmsgKHRvbyBjbG9zZSBoYXMgYmVlbiBoYXJkY29kZWQgdG8gMTAwdXNlYwpmb3Igbm93KSwg d2Ugd2lsbCB3YWl0IGZvciB0aGUgdmJsYW5rIHN0YXJ0IHRvIHBhc3MuIEluIG9yZGVyIHRvCmVs aW1pbmF0ZSByYW5kb20gZGVsYXllcyBmcm9tIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIHdlIG9w ZXJhdGUgd2l0aAppbnRlcnJ1cHRzIGRpc2FibGVkLCBleGNlcHQgd2hlbiB3YWl0aW5nIGZvciB0 aGUgdmJsYW5rIG9idmlvdXNseS4KCk5vdGUgdGhhdCB3ZSBub3cgZ28gZGlnZ2luZyB0aHJvdWdo IHBpcGVfdG9fY3J0Y19tYXBwaW5nW10gaW4gdGhlCnZibGFuayBpbnRlcnJ1cHQgaGFuZGxlciwg d2hpY2ggaXMgYSBiaXQgZGFuZ2Vyb3VzIHNpbmNlIHdlIHNldCB1cAppbnRlcnJ1cHRzIGJlZm9y ZSB0aGUgY3J0Y3MuIEhvd2V2ZXIgaW4gdGhpcyBjYXNlIHNpbmNlIGl0J3MgdGhlIHZibGFuawpp bnRlcnJ1cHQsIHdlIGRvbid0IGFjdHVhbGx5IHVubWFzayBpdCB1bnRpbCBzb21lIHBpZWNlIG9m IGNvZGUKcmVxdWVzdHMgaXQuCgp2MjogcHJlZW1wdF9jaGVja19yZXNjaGVkKCkgY2FsbHMgYWZ0 ZXIgbG9jYWxfaXJxX2VuYWJsZSgpIChKZXNzZSkKICAgIEhvb2sgdXAgdGhlIHZibGFuayBpcnEg c3R1ZmYgb24gQkRXIGFzIHdlbGwKdjM6IFBhc3MgaW50ZWxfY3J0YyBpbnN0ZWFkIG9mIGRybV9j cnRjIChEYW5pZWwpCiAgICBXYXJuIGlmIGNydGMubXV0ZXggaXNuJ3QgbG9ja2VkIChEYW5pZWwp CiAgICBBZGQgYW4gZXhwbGljaXQgY29tcGlsZXIgYmFycmllciBhbmQgZG9jdW1lbnQgdGhlIGJh cnJpZXJzIChEYW5pZWwpCiAgICBOb3RlIHRoZSBpcnEgdnMuIG1vZGVzZXQgc2V0dXAgbWFkbmVz cyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgKERhbmllbCkKdjQ6IFVzZSBwcmVwYXJlX3RvX3dhaXQo KSAmIGNvLiBkaXJlY3RseSBhbmQgZWxpbWluYXRlIHZibF9yZWNlaXZlZAoKU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgfCAyNyArKysrKysrKy0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYyAgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKaW5kZXggZmZlZGEyNy4uNTc4NzQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCkBAIC0xNTMwLDYgKzE1MzAsMTMgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1faWlyKQogCX0KIH0K IAorc3RhdGljIHZvaWQgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGVudW0gcGlwZSBwaXBlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXYsIHBpcGUpKTsKKworCXdha2Vf dXAoJmNydGMtPnZibF93YWl0KTsKK30KKwogc3RhdGljIHZvaWQgdmFsbGV5dmlld19waXBlc3Rh dF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaWlyKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC0xNTgw LDggKzE1ODcsMTAgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFuZGxl cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaWlyKQogCXNwaW5fdW5sb2NrKCZkZXZfcHJp di0+aXJxX2xvY2spOwogCiAJZm9yX2VhY2hfcGlwZShwaXBlKSB7Ci0JCWlmIChwaXBlX3N0YXRz W3BpcGVdICYgUElQRV9TVEFSVF9WQkxBTktfSU5URVJSVVBUX1NUQVRVUykKKwkJaWYgKHBpcGVf c3RhdHNbcGlwZV0gJiBQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTKSB7CiAJCQlk cm1faGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpOworCQkJaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5r KGRldiwgcGlwZSk7CisJCX0KIAogCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBMQU5FX0ZMSVBf RE9ORV9JTlRfU1RBVFVTX1ZMVikgewogCQkJaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoZGV2LCBw aXBlKTsKQEAgLTE4MDcsOCArMTgxNiwxMCBAQCBzdGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZGVfaWlyKQogCQlEUk1fRVJST1Io IlBvaXNvbiBpbnRlcnJ1cHRcbiIpOwogCiAJZm9yX2VhY2hfcGlwZShwaXBlKSB7Ci0JCWlmIChk ZV9paXIgJiBERV9QSVBFX1ZCTEFOSyhwaXBlKSkKKwkJaWYgKGRlX2lpciAmIERFX1BJUEVfVkJM QU5LKHBpcGUpKSB7CiAJCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpOworCQkJaW50ZWxf cGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSk7CisJCX0KIAogCQlpZiAoZGVfaWlyICYgREVf UElQRV9GSUZPX1VOREVSUlVOKHBpcGUpKQogCQkJaWYgKGludGVsX3NldF9jcHVfZmlmb191bmRl cnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBmYWxzZSkpCkBAIC0xODU3LDggKzE4NjgsMTAgQEAg c3RhdGljIHZvaWQgaXZiX2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdTMyIGRlX2lpcikKIAkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRldik7CiAKIAlmb3Jf ZWFjaF9waXBlKGkpIHsKLQkJaWYgKGRlX2lpciAmIChERV9QSVBFX1ZCTEFOS19JVkIoaSkpKQor CQlpZiAoZGVfaWlyICYgKERFX1BJUEVfVkJMQU5LX0lWQihpKSkpIHsKIAkJCWRybV9oYW5kbGVf dmJsYW5rKGRldiwgaSk7CisJCQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBpKTsKKwkJ fQogCiAJCS8qIHBsYW5lL3BpcGVzIG1hcCAxOjEgb24gaWxrKyAqLwogCQlpZiAoZGVfaWlyICYg REVfUExBTkVfRkxJUF9ET05FX0lWQihpKSkgewpAQCAtMjAwMCw4ICsyMDEzLDEwIEBAIHN0YXRp YyBpcnFyZXR1cm5fdCBnZW44X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkJCWNv bnRpbnVlOwogCiAJCXBpcGVfaWlyID0gSTkxNV9SRUFEKEdFTjhfREVfUElQRV9JSVIocGlwZSkp OwotCQlpZiAocGlwZV9paXIgJiBHRU44X1BJUEVfVkJMQU5LKQorCQlpZiAocGlwZV9paXIgJiBH RU44X1BJUEVfVkJMQU5LKSB7CiAJCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpOworCQkJ aW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSk7CisJCX0KIAogCQlpZiAocGlwZV9p aXIgJiBHRU44X1BJUEVfRkxJUF9ET05FKSB7CiAJCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChk ZXYsIHBpcGUpOwpAQCAtMzI3NCw2ICszMjg5LDggQEAgc3RhdGljIGJvb2wgaTh4eF9oYW5kbGVf dmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKCFkcm1faGFuZGxlX3ZibGFuayhk ZXYsIHBpcGUpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwlpbnRlbF9waXBlX2hhbmRsZV92Ymxhbmso ZGV2LCBwaXBlKTsKKwogCWlmICgoaWlyICYgZmxpcF9wZW5kaW5nKSA9PSAwKQogCQlyZXR1cm4g ZmFsc2U7CiAKQEAgLTM0NTcsNiArMzQ3NCw4IEBAIHN0YXRpYyBib29sIGk5MTVfaGFuZGxlX3Zi bGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmICghZHJtX2hhbmRsZV92YmxhbmsoZGV2 LCBwaXBlKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRl diwgcGlwZSk7CisKIAlpZiAoKGlpciAmIGZsaXBfcGVuZGluZykgPT0gMCkKIAkJcmV0dXJuIGZh bHNlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYWMwNWRhNC4uZDM1 OTUyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTAyOTgsNiArMTAy OTgsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IHBpcGUpCiAJCWludGVsX2NydGMtPnBsYW5lID0gIXBpcGU7CiAJfQogCisJaW5pdF93 YWl0cXVldWVfaGVhZCgmaW50ZWxfY3J0Yy0+dmJsX3dhaXQpOworCiAJQlVHX09OKHBpcGUgPj0g QVJSQVlfU0laRShkZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nKSB8fAogCSAgICAgICBk ZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSAhPSBOVUxM KTsKIAlkZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSA9 ICZpbnRlbF9jcnRjLT5iYXNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBhNDcxZDUz Li4xZTZkYWU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMzc2LDYgKzM3Niw4IEBA IHN0cnVjdCBpbnRlbF9jcnRjIHsKIAkJLyogd2F0ZXJtYXJrcyBjdXJyZW50bHkgYmVpbmcgdXNl ZCAgKi8KIAkJc3RydWN0IGludGVsX3BpcGVfd20gYWN0aXZlOwogCX0gd207CisKKwl3YWl0X3F1 ZXVlX2hlYWRfdCB2Ymxfd2FpdDsKIH07CiAKIHN0cnVjdCBpbnRlbF9wbGFuZV93bV9wYXJhbWV0 ZXJzIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggMzM2YWU2Yy4uZjQ1NWEy ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTM3LDYgKzM3LDcxIEBACiAj aW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKIAorc3RhdGlj IHVuc2lnbmVkIGludCB1c2Vjc190b19zY2FubGluZXMoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsIHVuc2lnbmVkIGludCB1c2VjcykKK3sKKwkvKiBwYXJhbm9pYSAqLworCWlm ICghbW9kZS0+Y3J0Y19odG90YWwpCisJCXJldHVybiAxOworCisJcmV0dXJuIERJVl9ST1VORF9V UCh1c2VjcyAqIG1vZGUtPmNydGNfY2xvY2ssIDEwMDAgKiBtb2RlLT5jcnRjX2h0b3RhbCk7Cit9 CisKK3N0YXRpYyB2b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5jb25maWcuYWRqdXN0 ZWRfbW9kZTsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisJLyogRklYTUUgbmVlZHMg dG8gYmUgY2FsaWJyYXRlZCBzZW5zaWJseSAqLworCXVuc2lnbmVkIGludCBtaW4gPSBtb2RlLT5j cnRjX3ZibGFua19zdGFydCAtIHVzZWNzX3RvX3NjYW5saW5lcyhtb2RlLCAxMDApOworCXVuc2ln bmVkIGludCBtYXggPSBtb2RlLT5jcnRjX3ZibGFua19zdGFydCAtIDE7CisJbG9uZyB0aW1lb3V0 ID0gbXNlY3NfdG9famlmZmllc190aW1lb3V0KDEpOworCXVuc2lnbmVkIGludCBzY2FubGluZTsK KwlERUZJTkVfV0FJVCh3YWl0KTsKKworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmY3J0Yy0+ YmFzZS5tdXRleCkpOworCisJaWYgKFdBUk5fT04oZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKSkp CisJCXJldHVybjsKKworCWxvY2FsX2lycV9kaXNhYmxlKCk7CisKKwlmb3IgKDs7KSB7CisJCS8q CisJCSAqIHByZXBhcmVfdG9fd2FpdCgpIGhhcyBhIG1lbW9yeSBiYXJyaWVyLCB3aGljaCBndWFy YW50ZWVzCisJCSAqIG90aGVyIENQVXMgY2FuIHNlZSB0aGUgdGFzayBzdGF0ZSB1cGRhdGUgYnkg dGhlIHRpbWUgd2UKKwkJICogcmVhZCB0aGUgc2NhbmxpbmUuCisJCSAqLworCQlwcmVwYXJlX3Rv X3dhaXQoJmNydGMtPnZibF93YWl0LCAmd2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpOworCisJ CXNjYW5saW5lID0gaW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoY3J0Yyk7CisJCWlmIChzY2FubGlu ZSA8IG1pbiB8fCBzY2FubGluZSA+IG1heCkKKwkJCWJyZWFrOworCisJCWlmICh0aW1lb3V0IDw9 IDApIHsKKwkJCURSTV9FUlJPUigiUG90ZW50aWFsIGF0b21pYyB1cGRhdGUgZmFpbHVyZSBvbiBw aXBlICVjXG4iLAorCQkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsKKwkJCWJyZWFrOworCQl9 CisKKwkJbG9jYWxfaXJxX2VuYWJsZSgpOworCQlwcmVlbXB0X2NoZWNrX3Jlc2NoZWQoKTsKKwor CQl0aW1lb3V0ID0gc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KTsKKworCQlsb2NhbF9pcnFfZGlz YWJsZSgpOworCX0KKworCWZpbmlzaF93YWl0KCZjcnRjLT52Ymxfd2FpdCwgJndhaXQpOworCisJ ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfcGlwZV91 cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQoreworCWxvY2FsX2lycV9lbmFibGUo KTsKKwlwcmVlbXB0X2NoZWNrX3Jlc2NoZWQoKTsKK30KKwogc3RhdGljIHZvaWQKIHZsdl91cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKQEAgLTQ4LDYgKzExMyw3IEBAIHZsdl91 cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRwbGFuZS0+ZGV2OwogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKGRwbGFuZSk7CisJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWludCBwaXBlID0g aW50ZWxfcGxhbmUtPnBpcGU7CiAJaW50IHBsYW5lID0gaW50ZWxfcGxhbmUtPnBsYW5lOwogCXUz MiBzcHJjdGw7CkBAIC0xMzEsNiArMTk3LDggQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkJCQlmYi0+cGl0Y2hl c1swXSk7CiAJbGluZWFyX29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKIAorCWludGVsX3BpcGVf dXBkYXRlX3N0YXJ0KGludGVsX2NydGMpOworCiAJSTkxNV9XUklURShTUFNUUklERShwaXBlLCBw bGFuZSksIGZiLT5waXRjaGVzWzBdKTsKIAlJOTE1X1dSSVRFKFNQUE9TKHBpcGUsIHBsYW5lKSwg KGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwogCkBAIC0xNDQsNiArMjEyLDggQEAgdmx2X3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAlJOTE1X1dSSVRFKFNQU1VSRihwaXBlLCBwbGFuZSksIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNl dChvYmopICsKIAkJICAgc3Byc3VyZl9vZmZzZXQpOwogCVBPU1RJTkdfUkVBRChTUFNVUkYocGlw ZSwgcGxhbmUpKTsKKworCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRlbF9jcnRjKTsKIH0KIAog c3RhdGljIHZvaWQKQEAgLTE1MiwxNSArMjIyLDIwIEBAIHZsdl9kaXNhYmxlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBkcGxhbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShkcGxhbmUpOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBl OwogCWludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZTsKIAorCWludGVsX3BpcGVfdXBkYXRl X3N0YXJ0KGludGVsX2NydGMpOworCiAJSTkxNV9XUklURShTUENOVFIocGlwZSwgcGxhbmUpLCBJ OTE1X1JFQUQoU1BDTlRSKHBpcGUsIHBsYW5lKSkgJgogCQkgICB+U1BfRU5BQkxFKTsKIAkvKiBB Y3RpdmF0ZSBkb3VibGUgYnVmZmVyZWQgcmVnaXN0ZXIgdXBkYXRlICovCiAJSTkxNV9XUklURShT UFNVUkYocGlwZSwgcGxhbmUpLCAwKTsKIAlQT1NUSU5HX1JFQUQoU1BTVVJGKHBpcGUsIHBsYW5l KSk7CiAKKwlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0Yyk7CisKIAlpbnRlbF91cGRh dGVfc3ByaXRlX3dhdGVybWFya3MoZHBsYW5lLCBjcnRjLCAwLCAwLCBmYWxzZSwgZmFsc2UpOwog fQogCkBAIC0yMjYsNiArMzAxLDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBwbGFuZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7CiAJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKIAl1MzIgc3ByY3Rs LCBzcHJzY2FsZSA9IDA7CiAJdW5zaWduZWQgbG9uZyBzcHJzdXJmX29mZnNldCwgbGluZWFyX29m ZnNldDsKQEAgLTI5OSw2ICszNzUsOCBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCSAgICAgICBwaXhlbF9zaXpl LCBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFyX29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKIAor CWludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMpOworCiAJSTkxNV9XUklURShTUFJT VFJJREUocGlwZSksIGZiLT5waXRjaGVzWzBdKTsKIAlJOTE1X1dSSVRFKFNQUlBPUyhwaXBlKSwg KGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwogCkBAIC0zMTgsNiArMzk2LDggQEAgaXZiX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAog CUk5MTVfV1JJVEUoU1BSU1VSRihwaXBlKSwKIAkJICAgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0 KG9iaikgKyBzcHJzdXJmX29mZnNldCk7CiAJUE9TVElOR19SRUFEKFNQUlNVUkYocGlwZSkpOwor CisJaW50ZWxfcGlwZV91cGRhdGVfZW5kKGludGVsX2NydGMpOwogfQogCiBzdGF0aWMgdm9pZApA QCAtMzI2LDggKzQwNiwxMSBAQCBpdmJfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBw bGFuZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7CiAJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKIAorCWludGVsX3BpcGVf dXBkYXRlX3N0YXJ0KGludGVsX2NydGMpOworCiAJSTkxNV9XUklURShTUFJDVEwocGlwZSksIEk5 MTVfUkVBRChTUFJDVEwocGlwZSkpICYgflNQUklURV9FTkFCTEUpOwogCS8qIENhbid0IGxlYXZl IHRoZSBzY2FsZXIgZW5hYmxlZC4uLiAqLwogCWlmIChpbnRlbF9wbGFuZS0+Y2FuX3NjYWxlKQpA QCAtMzM2LDYgKzQxOSw4IEBAIGl2Yl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJSTkxNV9XUklURShTUFJTVVJGKHBpcGUpLCAw KTsKIAlQT1NUSU5HX1JFQUQoU1BSU1VSRihwaXBlKSk7CiAKKwlpbnRlbF9waXBlX3VwZGF0ZV9l bmQoaW50ZWxfY3J0Yyk7CisKIAkvKgogCSAqIEF2b2lkIHVuZGVycnVucyB3aGVuIGRpc2FibGlu ZyB0aGUgc3ByaXRlLgogCSAqIEZJWE1FIHJlbW92ZSBvbmNlIHdhdGVybWFyayB1cGRhdGVzIGFy ZSBkb25lIHByb3Blcmx5LgpAQCAtNDEwLDYgKzQ5NSw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7 CiAJdW5zaWduZWQgbG9uZyBkdnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKIAl1MzIgZHZz Y250ciwgZHZzc2NhbGU7CkBAIC00NzgsNiArNTY0LDggQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCQkgICAgICAg cGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwogCWxpbmVhcl9vZmZzZXQgLT0gZHZzc3VyZl9v ZmZzZXQ7CiAKKwlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjKTsKKwogCUk5MTVf V1JJVEUoRFZTU1RSSURFKHBpcGUpLCBmYi0+cGl0Y2hlc1swXSk7CiAJSTkxNV9XUklURShEVlNQ T1MocGlwZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKIApAQCAtNDkyLDYgKzU4MCw4IEBA IGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAlJOTE1X1dSSVRFKERWU1NVUkYocGlwZSksCiAJCSAgIGk5MTVfZ2VtX29ial9n Z3R0X29mZnNldChvYmopICsgZHZzc3VyZl9vZmZzZXQpOwogCVBPU1RJTkdfUkVBRChEVlNTVVJG KHBpcGUpKTsKKworCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRlbF9jcnRjKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTUwMCw4ICs1OTAsMTEgQEAgaWxrX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gcGxhbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZSk7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwogCWludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CiAKKwlp bnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjKTsKKwogCUk5MTVfV1JJVEUoRFZTQ05U UihwaXBlKSwgSTkxNV9SRUFEKERWU0NOVFIocGlwZSkpICYgfkRWU19FTkFCTEUpOwogCS8qIERp c2FibGUgdGhlIHNjYWxlciAqLwogCUk5MTVfV1JJVEUoRFZTU0NBTEUocGlwZSksIDApOwpAQCAt NTA5LDYgKzYwMiw4IEBAIGlsa19kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJSTkxNV9XUklURShEVlNTVVJGKHBpcGUpLCAwKTsK IAlQT1NUSU5HX1JFQUQoRFZTU1VSRihwaXBlKSk7CiAKKwlpbnRlbF9waXBlX3VwZGF0ZV9lbmQo aW50ZWxfY3J0Yyk7CisKIAkvKgogCSAqIEF2b2lkIHVuZGVycnVucyB3aGVuIGRpc2FibGluZyB0 aGUgc3ByaXRlLgogCSAqIEZJWE1FIHJlbW92ZSBvbmNlIHdhdGVybWFyayB1cGRhdGVzIGFyZSBk b25lIHByb3Blcmx5LgotLSAKMS44LjMuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK