From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 30/35] drm/i915: Use atomic helpers for computing changed flags Date: Tue, 21 Apr 2015 17:13:19 +0300 Message-ID: <1429625604-22252-31-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1429625604-22252-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E4F06E5EE for ; Tue, 21 Apr 2015 07:14:18 -0700 (PDT) In-Reply-To: <1429625604-22252-1-git-send-email-ander.conselvan.de.oliveira@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 Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org UmVwbGFjZSB0aGUgZHJpdmVycyBvd24gbG9naWMgZm9yIGNvbXB1dGluZyBtb2RlX2NoYW5nZWQs IGFjdGl2ZV9jaGFuZ2VkCmFuZCBwbGFuZXNfY2hhbmdlZCBmbGFncyB3aXRoIHRoZSBjaGVja19t b2Rlc2V0KCkgYXRvbWljIGhlbHBlci4gU2luY2UKdGhhdCBmdW5jdGlvbiBuZWVkcyB0byBjb21w YXJlIHRoZSBjcnRjJ3MgbmV3IG1vZGUgd2l0aCB0aGUgY3VycmVudCwKdGhpcyBwYXRjaCBhbHNv IG1vdmVzIHRoZSBzZXQgdXAgb2YgY3J0Y19zdGF0ZS0+bW9kZSBlYXJsaWVyIGluIHRoZSBjYWxs CmNoYWluLgoKTm90ZSB0aGF0IGZvciB0aGUgY2FsbCB0byBjaGVja19wbGFuZSgpIHRvIHdvcmsg cHJvcGVybHksIHdlIG5lZWQgdG8KY2hlY2sgbmV3IHBsYW5lIHN0YXRlIGFnYWluc3QgbmV3IGNy dGMgc3RhdGUuIEJ1dCBzaW5jZSB3ZSBzdGlsbCB1c2UgdGhlCnBsYW5lIHVwZGF0ZSBoZWxwZXIs IHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIGZ1bGwgYXRvbWljIHN0YXRlLCB3ZSBuZWVkIHRvCmhhY2sg YXJvdW5kIHRoYXQgaW4gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKCkuCgpTaWduZWQtb2ZmLWJ5 OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWly YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMgfCAgMTYgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8 IDE5NyArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNTIg aW5zZXJ0aW9ucygrKSwgMTYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljX3BsYW5lLmMKaW5kZXggNzc0NjJlMS4uODZiYTRiMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKQEAgLTExMSw2ICsxMTEsNyBAQCBzdGF0aWMg aW50IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwog CXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9z dGF0ZShzdGF0ZSk7CiAKQEAgLTEyNiw2ICsxMjcsMTcgQEAgc3RhdGljIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJaWYgKCFjcnRjKQogCQly ZXR1cm4gMDsKIAorCS8qIEZJWE1FOiB0ZW1wb3JhcnkgaGFjayBuZWNlc3Nhcnkgd2hpbGUgd2Ug c3RpbGwgdXNlIHRoZSBwbGFuZSB1cGRhdGUKKwkgKiBoZWxwZXIuICovCisJaWYgKHN0YXRlLT5z dGF0ZSkgeworCQljcnRjX3N0YXRlID0KKwkJCWludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShz dGF0ZS0+c3RhdGUsIGludGVsX2NydGMpOworCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQorCQkJ cmV0dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7CisJfSBlbHNlIHsKKwkJY3J0Y19zdGF0ZSA9IGlu dGVsX2NydGMtPmNvbmZpZzsKKwl9CisKIAkvKgogCSAqIFRoZSBvcmlnaW5hbCBzcmMvZGVzdCBj b29yZGluYXRlcyBhcmUgc3RvcmVkIGluIHN0YXRlLT5iYXNlLCBidXQKIAkgKiB3ZSB3YW50IHRv IGtlZXAgYW5vdGhlciBjb3B5IGludGVybmFsIHRvIG91ciBkcml2ZXIgdGhhdCB3ZSBjYW4KQEAg LTE0NCw5ICsxNTYsOSBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpbnRlbF9zdGF0ZS0+Y2xpcC54MSA9IDA7CiAJaW50ZWxf c3RhdGUtPmNsaXAueTEgPSAwOwogCWludGVsX3N0YXRlLT5jbGlwLngyID0KLQkJaW50ZWxfY3J0 Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IDogMDsKKwkJY3J0Y19z dGF0ZS0+YmFzZS5hY3RpdmUgPyBjcnRjX3N0YXRlLT5waXBlX3NyY193IDogMDsKIAlpbnRlbF9z dGF0ZS0+Y2xpcC55MiA9Ci0JCWludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZp Zy0+cGlwZV9zcmNfaCA6IDA7CisJCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID8gY3J0Y19zdGF0 ZS0+cGlwZV9zcmNfaCA6IDA7CiAKIAkvKgogCSAqIERpc2FibGluZyBhIHBsYW5lIGlzIGFsd2F5 cyBva2F5OyB3ZSBqdXN0IG5lZWQgdG8gdXBkYXRlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKaW5kZXggNTUwNDFiZC4uNzY2NzAxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfY2xvY2tfZ2V0 KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2Nsb2Nr X2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpOwogCi1zdGF0aWMgaW50IGludGVsX3NldF9tb2RlKHN0cnVjdCBk cm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCitzdGF0aWMgaW50 IGludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCSAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICpp ZmIsCkBAIC05ODA0LDcgKzk4MDQsOSBAQCByZXRyeToKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7 CiAKLQlpZiAoaW50ZWxfc2V0X21vZGUoY3J0YywgbW9kZSwgc3RhdGUpKSB7CisJZHJtX21vZGVf Y29weSgmY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLCBtb2RlKTsKKworCWlmIChpbnRlbF9zZXRfbW9k ZShjcnRjLCBzdGF0ZSkpIHsKIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHNldCBtb2RlIG9u IGxvYWQtZGV0ZWN0IHBpcGVcbiIpOwogCQlpZiAob2xkLT5yZWxlYXNlX2ZiKQogCQkJb2xkLT5y ZWxlYXNlX2ZiLT5mdW5jcy0+ZGVzdHJveShvbGQtPnJlbGVhc2VfZmIpOwpAQCAtOTg3OCw3ICs5 ODgwLDcgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKIAkJaWYgKHJldCkKIAkJCWdvdG8gZmFpbDsKIAotCQlpbnRl bF9zZXRfbW9kZShjcnRjLCBOVUxMLCBzdGF0ZSk7CisJCWludGVsX3NldF9tb2RlKGNydGMsIHN0 YXRlKTsKIAogCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwogCkBAIC0xMTM4OCw3ICsx MTM5MCw2IEBAIGNsZWFyX2ludGVsX2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiAKIHN0YXRpYyBpbnQKIGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAotCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwK IAkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CkBAIC0xMTQxMSwxMCArMTE0MTIsNiBAQCBpbnRl bF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWNsZWFyX2lu dGVsX2NydGNfc3RhdGUocGlwZV9jb25maWcpOwogCi0JcGlwZV9jb25maWctPmJhc2UuY3J0YyA9 IGNydGM7Ci0JZHJtX21vZGVfY29weSgmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwg bW9kZSk7Ci0JZHJtX21vZGVfY29weSgmcGlwZV9jb25maWctPmJhc2UubW9kZSwgbW9kZSk7Ci0K IAlwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPQogCQkoZW51bSB0cmFuc2NvZGVyKSB0b19p bnRlbF9jcnRjKGNydGMpLT5waXBlOwogCXBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCA9IERQTExf SURfUFJJVkFURTsKQEAgLTEyMTExLDI3ICsxMjEwOCw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9z Y2FubGluZV9vZmZzZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJCWNydGMtPnNjYW5saW5l X29mZnNldCA9IDE7CiB9CiAKLXN0YXRpYyB2b2lkCi1pbnRlbF9hdG9taWNfbW9kZXNldF9jb21w dXRlX2NoYW5nZWRfZmxhZ3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCQkg ICBzdHJ1Y3QgZHJtX2NydGMgKm1vZGVzZXRfY3J0YykKLXsKLQlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCWludCBpOwotCi0JZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewotCQlpZiAo Y3J0Y19zdGF0ZS0+ZW5hYmxlICE9IGNydGMtPnN0YXRlLT5lbmFibGUpCi0JCQljcnRjX3N0YXRl LT5tb2RlX2NoYW5nZWQgPSB0cnVlOwotCi0JCS8qIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGFsd2F5 cyBzZXQgbW9kZV9jaGFuZ2VkIGZvcgotCQkgKiBtb2Rlc2V0X2NydGMgaWYgaXQgaXMgZW5hYmxl ZD8gbW9kZXNldF9hZmZlY3RfcGlwZXMoKQotCQkgKiBkaWQgdGhhdC4gKi8KLQl9Ci19Ci0KIHN0 YXRpYyBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqCiBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCiAJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CkBAIC0xMjE0MSw3ICsxMjExOSw5 IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CWlmIChyZXQpCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAKLQlpbnRlbF9hdG9taWNfbW9kZXNl dF9jb21wdXRlX2NoYW5nZWRfZmxhZ3Moc3RhdGUsIGNydGMpOworCXJldCA9IGRybV9hdG9taWNf aGVscGVyX2NoZWNrX21vZGVzZXQoc3RhdGUtPmRldiwgc3RhdGUpOworCWlmIChyZXQpCisJCXJl dHVybiBFUlJfUFRSKHJldCk7CiAKIAkvKgogCSAqIE5vdGUgdGhpcyBuZWVkcyBjaGFuZ2VzIHdo ZW4gd2Ugc3RhcnQgdHJhY2tpbmcgbXVsdGlwbGUgbW9kZXMKQEAgLTEyMTU2LDcgKzEyMTM2LDcg QEAgaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ aWYgKCFwaXBlX2NvbmZpZy0+YmFzZS5lbmFibGUpCiAJCXJldHVybiBwaXBlX2NvbmZpZzsKIAot CXJldCA9IGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoY3J0YywgbW9kZSwgc3RhdGUsIHBpcGVf Y29uZmlnKTsKKwlyZXQgPSBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKGNydGMsIHN0YXRlLCBw aXBlX2NvbmZpZyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIApAQCAtMTIx NzQsNiArMTIxNTQsMTAgQEAgaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAKIAlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHRvX2ludGVsX2NydGMoY3J0 YyksIHBpcGVfY29uZmlnLCJbbW9kZXNldF0iKTsKIAorCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2NoZWNrX3BsYW5lcyhzdGF0ZS0+ZGV2LCBzdGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKKwogCXJldHVybiBwaXBlX2NvbmZpZzsKIH0KIApAQCAtMTIyNDksNyArMTIy MzMsNiBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGVfY2hlY2tzKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIH0KIAogc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVj dCBkcm1fY3J0YyAqbW9kZXNldF9jcnRjLAotCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlLAogCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKIHsK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbW9kZXNldF9jcnRjLT5kZXY7CkBAIC0xMjI5Miw3 ICsxMjI3NSw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMg Km1vZGVzZXRfY3J0YywKIAkgKiBzaW5nbGUgY3J0YyBhbmQgbW9kZS4KIAkgKi8KIAlpZiAocGlw ZV9jb25maWctPmJhc2UuZW5hYmxlICYmIG5lZWRzX21vZGVzZXQoJnBpcGVfY29uZmlnLT5iYXNl KSkgewotCQltb2Rlc2V0X2NydGMtPm1vZGUgPSAqbW9kZTsKKwkJbW9kZXNldF9jcnRjLT5tb2Rl ID0gcGlwZV9jb25maWctPmJhc2UubW9kZTsKIAkJLyogbW9kZV9zZXQvZW5hYmxlL2Rpc2FibGUg ZnVuY3Rpb25zIHJlbHkgb24gYSBjb3JyZWN0IHBpcGUKIAkJICogY29uZmlnLiAqLwogCQlpbnRl bF9jcnRjX3NldF9zdGF0ZSh0b19pbnRlbF9jcnRjKG1vZGVzZXRfY3J0YyksIHBpcGVfY29uZmln KTsKQEAgLTEyMzU4LDEyICsxMjM0MSwxMSBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUo c3RydWN0IGRybV9jcnRjICptb2Rlc2V0X2NydGMsCiB9CiAKIHN0YXRpYyBpbnQgaW50ZWxfc2V0 X21vZGVfd2l0aF9jb25maWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkJCSAgICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZykKIHsKIAlpbnQgcmV0OwogCi0JcmV0ID0gX19pbnRlbF9zZXRfbW9k ZShjcnRjLCBtb2RlLCBwaXBlX2NvbmZpZyk7CisJcmV0ID0gX19pbnRlbF9zZXRfbW9kZShjcnRj LCBwaXBlX2NvbmZpZyk7CiAKIAlpZiAocmV0ID09IDApCiAJCWludGVsX21vZGVzZXRfY2hlY2tf c3RhdGUoY3J0Yy0+ZGV2KTsKQEAgLTEyMzcyLDE5ICsxMjM1NCwxOCBAQCBzdGF0aWMgaW50IGlu dGVsX3NldF9tb2RlX3dpdGhfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIH0KIAogc3Rh dGljIGludCBpbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnOwogCWludCBy ZXQgPSAwOwogCi0JcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKGNy dGMsIG1vZGUsIHN0YXRlKTsKKwlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfY29tcHV0ZV9j b25maWcoY3J0Yywgc3RhdGUpOwogCWlmIChJU19FUlIocGlwZV9jb25maWcpKSB7CiAJCXJldCA9 IFBUUl9FUlIocGlwZV9jb25maWcpOwogCQlnb3RvIG91dDsKIAl9CiAKLQlyZXQgPSBpbnRlbF9z ZXRfbW9kZV93aXRoX2NvbmZpZyhjcnRjLCBtb2RlLCBwaXBlX2NvbmZpZyk7CisJcmV0ID0gaW50 ZWxfc2V0X21vZGVfd2l0aF9jb25maWcoY3J0YywgcGlwZV9jb25maWcpOwogCWlmIChyZXQpCiAJ CWdvdG8gb3V0OwogCkBAIC0xMjQ1MSwxMjUgKzEyNDMyLDIxIEBAIHZvaWQgaW50ZWxfY3J0Y19y ZXN0b3JlX21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQl9CiAKIAkJY3J0Y19zdGF0ZS0+ YmFzZS5lbmFibGUgPSBpbnRlbF9jcnRjLT5uZXdfZW5hYmxlZDsKKworCQlpZiAoJmludGVsX2Ny dGMtPmJhc2UgPT0gY3J0YykKKwkJCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmJhc2UubW9k ZSwgJmNydGMtPm1vZGUpOwogCX0KIAogCWludGVsX21vZGVzZXRfc2V0dXBfcGxhbmVfc3RhdGUo c3RhdGUsIGNydGMsICZjcnRjLT5tb2RlLAogCQkJCQljcnRjLT5wcmltYXJ5LT5mYiwgY3J0Yy0+ eCwgY3J0Yy0+eSk7CiAKLQlpbnRlbF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+bW9kZSwgc3RhdGUp OworCWludGVsX3NldF9tb2RlKGNydGMsIHN0YXRlKTsKIAogCWRybV9hdG9taWNfc3RhdGVfZnJl ZShzdGF0ZSk7CiB9CiAKICN1bmRlZiBmb3JfZWFjaF9pbnRlbF9jcnRjX21hc2tlZAogCi1zdGF0 aWMgYm9vbAotaXNfY3J0Y19jb25uZWN0b3Jfb2ZmKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkK LXsKLQlpbnQgaTsKLQotCWlmIChzZXQtPm51bV9jb25uZWN0b3JzID09IDApCi0JCXJldHVybiBm YWxzZTsKLQotCWlmIChXQVJOX09OKHNldC0+Y29ubmVjdG9ycyA9PSBOVUxMKSkKLQkJcmV0dXJu IGZhbHNlOwotCi0JZm9yIChpID0gMDsgaSA8IHNldC0+bnVtX2Nvbm5lY3RvcnM7IGkrKykKLQkJ aWYgKHNldC0+Y29ubmVjdG9yc1tpXS0+ZW5jb2RlciAmJgotCQkgICAgc2V0LT5jb25uZWN0b3Jz W2ldLT5lbmNvZGVyLT5jcnRjID09IHNldC0+Y3J0YyAmJgotCQkgICAgc2V0LT5jb25uZWN0b3Jz W2ldLT5kcG1zICE9IERSTV9NT0RFX0RQTVNfT04pCi0JCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVy biBmYWxzZTsKLX0KLQotc3RhdGljIHZvaWQKLWludGVsX3NldF9jb25maWdfY29tcHV0ZV9tb2Rl X2NoYW5nZXMoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAotCQkJCSAgICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKLXsKLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGU7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0JaW50IGk7Ci0KLQkvKiBXZSBz aG91bGQgYmUgYWJsZSB0byBjaGVjayBoZXJlIGlmIHRoZSBmYiBoYXMgdGhlIHNhbWUgcHJvcGVy dGllcwotCSAqIGFuZCB0aGVuIGp1c3QgZmxpcF9vcl9tb3ZlIGl0ICovCi0JaWYgKGlzX2NydGNf Y29ubmVjdG9yX29mZihzZXQpKSB7Ci0JCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9 IHRydWU7Ci0JfSBlbHNlIGlmIChzZXQtPmNydGMtPnByaW1hcnktPmZiICE9IHNldC0+ZmIpIHsK LQkJLyoKLQkJICogSWYgd2UgaGF2ZSBubyBmYiwgd2UgY2FuIG9ubHkgZmxpcCBhcyBsb25nIGFz IHRoZSBjcnRjIGlzCi0JCSAqIGFjdGl2ZSwgb3RoZXJ3aXNlIHdlIG5lZWQgYSBmdWxsIG1vZGUg c2V0LiAgVGhlIGNydGMgbWF5Ci0JCSAqIGJlIGFjdGl2ZSBpZiB3ZSd2ZSBvbmx5IGRpc2FibGVk IHRoZSBwcmltYXJ5IHBsYW5lLCBvcgotCQkgKiBpbiBmYXN0Ym9vdCBzaXR1YXRpb25zLgotCQkg Ki8KLQkJaWYgKHNldC0+Y3J0Yy0+cHJpbWFyeS0+ZmIgPT0gTlVMTCkgewotCQkJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPQotCQkJCXRvX2ludGVsX2NydGMoc2V0LT5jcnRjKTsKLQot CQkJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewotCQkJCURSTV9ERUJVR19LTVMoImNydGMgaGFz IG5vIGZiLCB3aWxsIGZsaXBcbiIpOwotCQkJCXBpcGVfY29uZmlnLT5iYXNlLnBsYW5lc19jaGFu Z2VkID0gdHJ1ZTsKLQkJCX0gZWxzZSB7Ci0JCQkJRFJNX0RFQlVHX0tNUygiaW5hY3RpdmUgY3J0 YywgZnVsbCBtb2RlIHNldFxuIik7Ci0JCQkJcGlwZV9jb25maWctPmJhc2UubW9kZV9jaGFuZ2Vk ID0gdHJ1ZTsKLQkJCX0KLQkJfSBlbHNlIGlmIChzZXQtPmZiID09IE5VTEwpIHsKLQkJCXBpcGVf Y29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0JCX0gZWxzZSBpZiAoc2V0LT5mYi0+ cGl4ZWxfZm9ybWF0ICE9Ci0JCQkgICBzZXQtPmNydGMtPnByaW1hcnktPmZiLT5waXhlbF9mb3Jt YXQpIHsKLQkJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0JCX0gZWxz ZSB7Ci0JCQlwaXBlX2NvbmZpZy0+YmFzZS5wbGFuZXNfY2hhbmdlZCA9IHRydWU7Ci0JCX0KLQl9 Ci0KLQlpZiAoc2V0LT5mYiAmJiAoc2V0LT54ICE9IHNldC0+Y3J0Yy0+eCB8fCBzZXQtPnkgIT0g c2V0LT5jcnRjLT55KSkKLQkJcGlwZV9jb25maWctPmJhc2UucGxhbmVzX2NoYW5nZWQgPSB0cnVl OwotCi0JaWYgKHNldC0+bW9kZSAmJiAhZHJtX21vZGVfZXF1YWwoc2V0LT5tb2RlLCAmc2V0LT5j cnRjLT5tb2RlKSkgewotCQlEUk1fREVCVUdfS01TKCJtb2RlcyBhcmUgZGlmZmVyZW50LCBmdWxs IG1vZGUgc2V0XG4iKTsKLQkJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmc2V0LT5jcnRj LT5tb2RlKTsKLQkJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZShzZXQtPm1vZGUpOwotCQlw aXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVlOwotCX0KLQotCXN0YXRlID0gcGlw ZV9jb25maWctPmJhc2Uuc3RhdGU7Ci0KLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3Rh dGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7Ci0JCWlmIChjb25uZWN0b3Jfc3Rh dGUtPmJlc3RfZW5jb2RlciAhPQotCQkgICAgY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVy KSB7Ci0JCQlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSBlbmNvZGVyIGNoYW5nZWQs IGZ1bGwgbW9kZSBzd2l0Y2hcbiIsCi0JCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLAotCQkJ CSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Ci0JCQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5n ZWQgPSB0cnVlOwotCQl9Ci0KLQkJaWYgKGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyAhPSBjb25uZWN0 b3ItPnN0YXRlLT5jcnRjKSB7Ci0JCQlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSBj cnRjIGNoYW5nZWQsIGZ1bGwgbW9kZSBzd2l0Y2hcbiIsCi0JCQkJICAgICAgY29ubmVjdG9yLT5i YXNlLmlkLAotCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Ci0JCQlwaXBlX2NvbmZpZy0+YmFz ZS5tb2RlX2NoYW5nZWQgPSB0cnVlOwotCQl9Ci0JfQotCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0 ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewotCQlpZiAoY3J0Y19zdGF0ZS0+ZW5hYmxl ID09IGNydGMtPnN0YXRlLT5lbmFibGUpCi0JCQljb250aW51ZTsKLQotCQlEUk1fREVCVUdfS01T KCJbQ1JUQzolZF0gJXNhYmxlZCwgZnVsbCBtb2RlIHN3aXRjaFxuIiwKLQkJCSAgICAgIGNydGMt PmJhc2UuaWQsCi0JCQkgICAgICBjcnRjX3N0YXRlLT5lbmFibGUgPyAiZW4iIDogImRpcyIpOwot CQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVlOwotCX0KLQotCURSTV9ERUJV R19LTVMoImNvbXB1dGVkIGNoYW5nZXMgZm9yIFtDUlRDOiVkXSwgbW9kZV9jaGFuZ2VkPSVkLCBm Yl9jaGFuZ2VkPSVkXG4iLAotCQkJc2V0LT5jcnRjLT5iYXNlLmlkLCBwaXBlX2NvbmZpZy0+YmFz ZS5tb2RlX2NoYW5nZWQsCi0JCQlwaXBlX2NvbmZpZy0+YmFzZS5wbGFuZXNfY2hhbmdlZCk7Ci19 Ci0KIHN0YXRpYyBib29sIGludGVsX2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJCXN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKIHsK QEAgLTEyNjg2LDYgKzEyNTYzLDIxIEBAIGludGVsX21vZGVzZXRfc3RhZ2Vfb3V0cHV0X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWNydGNfc3RhdGUtPmVuYWJsZSA9IGRybV9hdG9t aWNfY29ubmVjdG9yc19mb3JfY3J0YyhzdGF0ZSwgY3J0Yyk7CiAJfQogCisJcmV0ID0gaW50ZWxf bW9kZXNldF9zZXR1cF9wbGFuZV9zdGF0ZShzdGF0ZSwgc2V0LT5jcnRjLCBzZXQtPm1vZGUsCisJ CQkJCSAgICAgIHNldC0+ZmIsIHNldC0+eCwgc2V0LT55KTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIHNl dC0+Y3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3J0 Y19zdGF0ZSk7CisKKwlpZiAoc2V0LT5tb2RlKQorCQlkcm1fbW9kZV9jb3B5KCZjcnRjX3N0YXRl LT5tb2RlLCBzZXQtPm1vZGUpOworCisJaWYgKHNldC0+bnVtX2Nvbm5lY3RvcnMpCisJCWNydGNf c3RhdGUtPmFjdGl2ZSA9IHRydWU7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTI3MzMsMzAgKzEy NjI1LDE3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9k ZV9zZXQgKnNldCkKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIAotCXJldCA9IGludGVsX21vZGVz ZXRfc2V0dXBfcGxhbmVfc3RhdGUoc3RhdGUsIHNldC0+Y3J0Yywgc2V0LT5tb2RlLAotCQkJCQkg ICAgICBzZXQtPmZiLCBzZXQtPngsIHNldC0+eSk7Ci0JaWYgKHJldCkKLQkJZ290byBvdXQ7Ci0K LQlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc2V0LT5jcnRjLCBz ZXQtPm1vZGUsCi0JCQkJCQkgICBzdGF0ZSk7CisJcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0 X2NvbXB1dGVfY29uZmlnKHNldC0+Y3J0Yywgc3RhdGUpOwogCWlmIChJU19FUlIocGlwZV9jb25m aWcpKSB7CiAJCXJldCA9IFBUUl9FUlIocGlwZV9jb25maWcpOwogCQlnb3RvIG91dDsKIAl9CiAK LQkvKiBDb21wdXRlIHdoZXRoZXIgd2UgbmVlZCBhIGZ1bGwgbW9kZXNldCwgb25seSBhbiBmYiBi YXNlIHVwZGF0ZSBvciBubwotCSAqIGNoYW5nZSBhdCBhbGwuIEluIHRoZSBmdXR1cmUgd2UgbWln aHQgYWxzbyBjaGVjayB3aGV0aGVyIG9ubHkgdGhlCi0JICogbW9kZSBjaGFuZ2VkLCBlLmcuIGZv ciBMVkRTIHdoZXJlIHdlIG9ubHkgY2hhbmdlIHRoZSBwYW5lbCBmaXR0ZXIgaW4KLQkgKiBzdWNo IGNhc2VzLiAqLwotCWludGVsX3NldF9jb25maWdfY29tcHV0ZV9tb2RlX2NoYW5nZXMoc2V0LCBw aXBlX2NvbmZpZyk7Ci0KIAlpbnRlbF91cGRhdGVfcGlwZV9zaXplKHRvX2ludGVsX2NydGMoc2V0 LT5jcnRjKSk7CiAKIAlwcmltYXJ5X3BsYW5lX3dhc192aXNpYmxlID0gcHJpbWFyeV9wbGFuZV92 aXNpYmxlKHNldC0+Y3J0Yyk7CiAKLQlyZXQgPSBpbnRlbF9zZXRfbW9kZV93aXRoX2NvbmZpZyhz ZXQtPmNydGMsIHNldC0+bW9kZSwKLQkJCQkJIHBpcGVfY29uZmlnKTsKKwlyZXQgPSBpbnRlbF9z ZXRfbW9kZV93aXRoX2NvbmZpZyhzZXQtPmNydGMsIHBpcGVfY29uZmlnKTsKIAogCWlmIChyZXQg PT0gMCAmJgogCSAgICBwaXBlX2NvbmZpZy0+YmFzZS5lbmFibGUgJiYKLS0gCjIuMS4wCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=