From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH 02/10] drm/i915: Make the physical object coherent with GTT Date: Tue, 4 Nov 2014 04:51:40 -0800 Message-ID: <1415105508-1590-3-git-send-email-rodrigo.vivi@intel.com> References: <1415105508-1590-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 791476E38E for ; Tue, 4 Nov 2014 11:51:36 -0800 (PST) In-Reply-To: <1415105508-1590-1-git-send-email-rodrigo.vivi@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: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpDdXJyZW50bHkg b2JqZWN0cyBmb3Igd2hpY2ggdGhlIGhhcmR3YXJlIG5lZWRzIGEgY29udGlndW91cyBwaHlzaWNh bAphZGRyZXNzIGFyZSBhbGxvY2F0ZWQgYSBzaGFkb3cgYmFja2luZyBzdG9yYWdlIHRvIHNhdGlz ZnkgdGhlIGNvbnRyYWludC4KVGhpcyBzaGFkb3cgYnVmZmVyIGlzIG5vdCB3aXJlZCBpbnRvIHRo ZSBub3JtYWwgb2JqLT5wYWdlcyBhbmQgc28gdGhlCnBoeXNpY2FsIG9iamVjdCBpcyBpbmNvaGVy ZW50IHdpdGggYWNjZXNzZXMgdmlhIHRoZSBHUFUsIEdUVCBhbmQgQ1BVLiBCeQpzZXR0aW5nIHVw IHRoZSBhcHByb3ByaWF0ZSBzY2F0dGVyLWdhdGhlciB0YWJsZSwgd2UgY2FuIGFsbG93IHVzZXJz cGFjZQp0byBhY2Nlc3MgdGhlIHBoeXNpY2FsIG9iamVjdCB2aWEgZWl0aGVyIGEgR1RUIG1tYXBp bmcgb2Ygb3IgYnkgcmVuZGVyaW5nCmludG8gdGhlIEdFTSBiby4gSG93ZXZlciwga2VlcGluZyB0 aGUgQ1BVIG1tYXAgb2YgdGhlIHNobWVtZnMgYmFja2luZwpzdG9yYWdlIGNvaGVyZW50IHdpdGgg dGhlIGNvbnRpZ3VvdXMgc2hhZG93IGlzIG5vdCB5ZXQgcG9zc2libGUuCkZvcnR1aXR1b3VzbHks IENQVSBtbWFwcyBvZiBvYmplY3RzIHJlcXVpcmluZyBwaHlzaWNhbCBhZGRyZXNzZXMgYXJlIG5v dApleHBlY3RlZCB0byBiZSBjb2hlcmVudCBhbnl3YXkuCgpUaGlzIGFsbG93cyB0aGUgcGh5c2lj YWwgY29uc3RyYWludCBvZiB0aGUgR0VNIG9iamVjdCB0byBiZSB0cmFuc3BhcmVudAp0byB1c2Vy c3BhY2UgYW5kIGFsbG93IGl0IHRvIGVmZmljaWVudGx5IHJlbmRlciBpbnRvIG9yIHVwZGF0ZSB0 aGVtIHZpYQp0aGUgR1RUIGFuZCBHUFUuCgp2MjogRml4IGxlYWsgb2YgcGNpIGhhbmRsZSBzcG90 dGVkIGJ5IFZpbGxlCnYzOiBSZW1vdmUgdGhlIG5vdyBkdXBsaWNhdGUgY2FsbCB0byBkZXRhY2hf cGh5c19vYmplY3QgZHVyaW5nIGZyZWUuCnY0OiBXYWl0IGZvciByZW5kZXJpbmcgYmVmb3JlIHB3 cml0ZS4gQXMgdGhpcyBwYXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0bwpyZW5kZXIgaW50byB0aGUg cGh5cyBvYmplY3QsIHdlIHNob3VsZCBtYWtlIGl0IGNvcnJlY3QgYXMgd2VsbCEKClNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgfCAyMDcgKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCsp LCA2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCA5YTczNTMzLi41 ZGMzN2YwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTEwMjcsNiArMTAyNyw5IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCWNhc2UgSTkxNV9QQVJBTV9DTURfUEFSU0VSX1ZFUlNJT046CiAJCXZhbHVlID0gaTkxNV9j bWRfcGFyc2VyX2dldF92ZXJzaW9uKCk7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9QQVJBTV9IQVNf Q09IRVJFTlRfUEhZU19HVFQ6CisJCXZhbHVlID0gMTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJ RFJNX0RFQlVHKCJVbmtub3duIHBhcmFtZXRlciAlZFxuIiwgcGFyYW0tPnBhcmFtKTsKIAkJcmV0 dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAwNTkzMzBjLi45MjlkNzhk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE4OTAsMTAgKzE4OTAsMTAgQEAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXVuc2lnbmVkIGxvbmcgdXNlcl9waW5fY291bnQ7CiAJ c3RydWN0IGRybV9maWxlICpwaW5fZmlscDsKIAotCS8qKiBmb3IgcGh5IGFsbG9jYXRlZCBvYmpl Y3RzICovCi0Jc3RydWN0IGRybV9kbWFfaGFuZGxlICpwaHlzX2hhbmRsZTsKLQogCXVuaW9uIHsK KwkJLyoqIGZvciBwaHkgYWxsb2NhdGVkIG9iamVjdHMgKi8KKwkJc3RydWN0IGRybV9kbWFfaGFu ZGxlICpwaHlzX2hhbmRsZTsKKwogCQlzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0ciB7CiAJCQl1aW50 cHRyX3QgcHRyOwogCQkJdW5zaWduZWQgcmVhZF9vbmx5IDoxOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKaW5kZXggODI3ZWRiNS4uNTIyM2U5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0y MDgsNDAgKzIwOCwxMzcgQEAgaTkxNV9nZW1fZ2V0X2FwZXJ0dXJlX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGk5 MTVfZ2VtX29iamVjdF9kZXRhY2hfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQorc3RhdGljIGludAoraTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19waHlzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0JZHJtX2RtYV9oYW5kbGVfdCAqcGh5cyA9IG9iai0+ cGh5c19oYW5kbGU7CisJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlX2lub2Rl KG9iai0+YmFzZS5maWxwKS0+aV9tYXBwaW5nOworCWNoYXIgKnZhZGRyID0gb2JqLT5waHlzX2hh bmRsZS0+dmFkZHI7CisJc3RydWN0IHNnX3RhYmxlICpzdDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnOworCWludCBpOwogCi0JaWYgKCFwaHlzKQotCQlyZXR1cm47CisJaWYgKFdBUk5fT04oaTkx NV9nZW1fb2JqZWN0X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkpCisJCXJldHVybiAtRUlOVkFM OworCisJZm9yIChpID0gMDsgaSA8IG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFOyBpKyspIHsK KwkJc3RydWN0IHBhZ2UgKnBhZ2U7CisJCWNoYXIgKnNyYzsKKworCQlwYWdlID0gc2htZW1fcmVh ZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgaSk7CisJCWlmIChJU19FUlIocGFnZSkpCisJCQlyZXR1 cm4gUFRSX0VSUihwYWdlKTsKKworCQlzcmMgPSBrbWFwX2F0b21pYyhwYWdlKTsKKwkJbWVtY3B5 KHZhZGRyLCBzcmMsIFBBR0VfU0laRSk7CisJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIs IFBBR0VfU0laRSk7CisJCWt1bm1hcF9hdG9taWMoc3JjKTsKKworCQlwYWdlX2NhY2hlX3JlbGVh c2UocGFnZSk7CisJCXZhZGRyICs9IFBBR0VfU0laRTsKKwl9CisKKwlpOTE1X2dlbV9jaGlwc2V0 X2ZsdXNoKG9iai0+YmFzZS5kZXYpOworCisJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBf S0VSTkVMKTsKKwlpZiAoc3QgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoc2df YWxsb2NfdGFibGUoc3QsIDEsIEdGUF9LRVJORUwpKSB7CisJCWtmcmVlKHN0KTsKKwkJcmV0dXJu IC1FTk9NRU07CisJfQorCisJc2cgPSBzdC0+c2dsOworCXNnLT5vZmZzZXQgPSAwOworCXNnLT5s ZW5ndGggPSBvYmotPmJhc2Uuc2l6ZTsKIAotCWlmIChvYmotPm1hZHYgPT0gSTkxNV9NQURWX1dJ TExORUVEKSB7CisJc2dfZG1hX2FkZHJlc3Moc2cpID0gb2JqLT5waHlzX2hhbmRsZS0+YnVzYWRk cjsKKwlzZ19kbWFfbGVuKHNnKSA9IG9iai0+YmFzZS5zaXplOworCisJb2JqLT5wYWdlcyA9IHN0 OworCW9iai0+aGFzX2RtYV9tYXBwaW5nID0gdHJ1ZTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQKK2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQoreworCWludCByZXQ7CisKKwlCVUdfT04ob2JqLT5tYWR2ID09IF9fSTkx NV9NQURWX1BVUkdFRCk7CisKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21h aW4ob2JqLCB0cnVlKTsKKwlpZiAocmV0KSB7CisJCS8qIEluIHRoZSBldmVudCBvZiBhIGRpc2Fz dGVyLCBhYmFuZG9uIGFsbCBjYWNoZXMgYW5kCisJCSAqIGhvcGUgZm9yIHRoZSBiZXN0LgorCQkg Ki8KKwkJV0FSTl9PTihyZXQgIT0gLUVJTyk7CisJCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBv YmotPmJhc2Uud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsKKwl9CisKKwlpZiAo b2JqLT5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCkKKwkJb2JqLT5kaXJ0eSA9IDA7CisKKwlp ZiAob2JqLT5kaXJ0eSkgewogCQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZpbGVf aW5vZGUob2JqLT5iYXNlLmZpbHApLT5pX21hcHBpbmc7Ci0JCWNoYXIgKnZhZGRyID0gcGh5cy0+ dmFkZHI7CisJCWNoYXIgKnZhZGRyID0gb2JqLT5waHlzX2hhbmRsZS0+dmFkZHI7CiAJCWludCBp OwogCiAJCWZvciAoaSA9IDA7IGkgPCBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsgaSsrKSB7 Ci0JCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHNobWVtX3JlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcs IGkpOwotCQkJaWYgKCFJU19FUlIocGFnZSkpIHsKLQkJCQljaGFyICpkc3QgPSBrbWFwX2F0b21p YyhwYWdlKTsKLQkJCQltZW1jcHkoZHN0LCB2YWRkciwgUEFHRV9TSVpFKTsKLQkJCQlkcm1fY2xm bHVzaF92aXJ0X3JhbmdlKGRzdCwgUEFHRV9TSVpFKTsKLQkJCQlrdW5tYXBfYXRvbWljKGRzdCk7 Ci0KLQkJCQlzZXRfcGFnZV9kaXJ0eShwYWdlKTsKKwkJCXN0cnVjdCBwYWdlICpwYWdlOworCQkJ Y2hhciAqZHN0OworCisJCQlwYWdlID0gc2htZW1fcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywg aSk7CisJCQlpZiAoSVNfRVJSKHBhZ2UpKQorCQkJCWNvbnRpbnVlOworCisJCQlkc3QgPSBrbWFw X2F0b21pYyhwYWdlKTsKKwkJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIsIFBBR0VfU0la RSk7CisJCQltZW1jcHkoZHN0LCB2YWRkciwgUEFHRV9TSVpFKTsKKwkJCWt1bm1hcF9hdG9taWMo ZHN0KTsKKworCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CisJCQlpZiAob2JqLT5tYWR2ID09IEk5 MTVfTUFEVl9XSUxMTkVFRCkKIAkJCQltYXJrX3BhZ2VfYWNjZXNzZWQocGFnZSk7Ci0JCQkJcGFn ZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwotCQkJfQorCQkJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2Up OwogCQkJdmFkZHIgKz0gUEFHRV9TSVpFOwogCQl9Ci0JCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2go b2JqLT5iYXNlLmRldik7CisJCW9iai0+ZGlydHkgPSAwOwogCX0KIAotI2lmZGVmIENPTkZJR19Y ODYKLQlzZXRfbWVtb3J5X3diKCh1bnNpZ25lZCBsb25nKXBoeXMtPnZhZGRyLCBwaHlzLT5zaXpl IC8gUEFHRV9TSVpFKTsKLSNlbmRpZgotCWRybV9wY2lfZnJlZShvYmotPmJhc2UuZGV2LCBwaHlz KTsKLQlvYmotPnBoeXNfaGFuZGxlID0gTlVMTDsKKwlzZ19mcmVlX3RhYmxlKG9iai0+cGFnZXMp OworCWtmcmVlKG9iai0+cGFnZXMpOworCisJb2JqLT5oYXNfZG1hX21hcHBpbmcgPSBmYWxzZTsK K30KKworc3RhdGljIHZvaWQKK2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3BoeXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlkcm1fcGNpX2ZyZWUob2JqLT5iYXNlLmRldiwg b2JqLT5waHlzX2hhbmRsZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdF9vcHMgaTkxNV9nZW1fcGh5c19vcHMgPSB7CisJLmdldF9wYWdlcyA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfcGFnZXNfcGh5cywKKwkucHV0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X3B1 dF9wYWdlc19waHlzLAorCS5yZWxlYXNlID0gaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfcGh5cywK K307CisKK3N0YXRpYyBpbnQKK2Ryb3BfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKK3sKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7CisJaW50IHJldDsKKworCWRy bV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUodm1hLCBuZXh0LCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspCisJCWlmIChpOTE1X3Zt YV91bmJpbmQodm1hKSkKKwkJCWJyZWFrOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9w YWdlcyhvYmopOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOworCisJ cmV0dXJuIHJldDsKIH0KIAogaW50CkBAIC0yNDksOSArMzQ2LDcgQEAgaTkxNV9nZW1fb2JqZWN0 X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICAgaW50 IGFsaWduKQogewogCWRybV9kbWFfaGFuZGxlX3QgKnBoeXM7Ci0Jc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmc7Ci0JY2hhciAqdmFkZHI7Ci0JaW50IGk7CisJaW50IHJldDsKIAogCWlmIChv YmotPnBoeXNfaGFuZGxlKSB7CiAJCWlmICgodW5zaWduZWQgbG9uZylvYmotPnBoeXNfaGFuZGxl LT52YWRkciAmIChhbGlnbiAtMSkpCkBAIC0yNjYsNDEgKzM2MSwxOSBAQCBpOTE1X2dlbV9vYmpl Y3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlpZiAob2Jq LT5iYXNlLmZpbHAgPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwlyZXQgPSBkcm9wX3Bh Z2VzKG9iaik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCS8qIGNyZWF0ZSBhIG5ldyBv YmplY3QgKi8KIAlwaHlzID0gZHJtX3BjaV9hbGxvYyhvYmotPmJhc2UuZGV2LCBvYmotPmJhc2Uu c2l6ZSwgYWxpZ24pOwogCWlmICghcGh5cykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQl2YWRkciA9 IHBoeXMtPnZhZGRyOwotI2lmZGVmIENPTkZJR19YODYKLQlzZXRfbWVtb3J5X3djKCh1bnNpZ25l ZCBsb25nKXZhZGRyLCBwaHlzLT5zaXplIC8gUEFHRV9TSVpFKTsKLSNlbmRpZgotCW1hcHBpbmcg PSBmaWxlX2lub2RlKG9iai0+YmFzZS5maWxwKS0+aV9tYXBwaW5nOwotCWZvciAoaSA9IDA7IGkg PCBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsgaSsrKSB7Ci0JCXN0cnVjdCBwYWdlICpwYWdl OwotCQljaGFyICpzcmM7Ci0KLQkJcGFnZSA9IHNobWVtX3JlYWRfbWFwcGluZ19wYWdlKG1hcHBp bmcsIGkpOwotCQlpZiAoSVNfRVJSKHBhZ2UpKSB7Ci0jaWZkZWYgQ09ORklHX1g4NgotCQkJc2V0 X21lbW9yeV93YigodW5zaWduZWQgbG9uZylwaHlzLT52YWRkciwgcGh5cy0+c2l6ZSAvIFBBR0Vf U0laRSk7Ci0jZW5kaWYKLQkJCWRybV9wY2lfZnJlZShvYmotPmJhc2UuZGV2LCBwaHlzKTsKLQkJ CXJldHVybiBQVFJfRVJSKHBhZ2UpOwotCQl9Ci0KLQkJc3JjID0ga21hcF9hdG9taWMocGFnZSk7 Ci0JCW1lbWNweSh2YWRkciwgc3JjLCBQQUdFX1NJWkUpOwotCQlrdW5tYXBfYXRvbWljKHNyYyk7 Ci0KLQkJbWFya19wYWdlX2FjY2Vzc2VkKHBhZ2UpOwotCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFn ZSk7Ci0KLQkJdmFkZHIgKz0gUEFHRV9TSVpFOwotCX0KLQogCW9iai0+cGh5c19oYW5kbGUgPSBw aHlzOwotCXJldHVybiAwOworCW9iai0+b3BzID0gJmk5MTVfZ2VtX3BoeXNfb3BzOworCisJcmV0 dXJuIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKIH0KIAogc3RhdGljIGludApAQCAt MzExLDYgKzM4NCwxNCBAQCBpOTE1X2dlbV9waHlzX3B3cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owog CXZvaWQgKnZhZGRyID0gb2JqLT5waHlzX2hhbmRsZS0+dmFkZHIgKyBhcmdzLT5vZmZzZXQ7CiAJ Y2hhciBfX3VzZXIgKnVzZXJfZGF0YSA9IHRvX3VzZXJfcHRyKGFyZ3MtPmRhdGFfcHRyKTsKKwlp bnQgcmV0OworCisJLyogV2UgbWFudWFsbHkgY29udHJvbCB0aGUgZG9tYWluIGhlcmUgYW5kIHBy ZXRlbmQgdGhhdCBpdAorCSAqIHJlbWFpbnMgY29oZXJlbnQgaS5lLiBpbiB0aGUgR1RUIGRvbWFp biwgbGlrZSBzaG1lbV9wd3JpdGUuCisJICovCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRf cmVuZGVyaW5nKG9iaiwgZmFsc2UpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKIAlpZiAo X19jb3B5X2Zyb21fdXNlcl9pbmF0b21pY19ub2NhY2hlKHZhZGRyLCB1c2VyX2RhdGEsIGFyZ3Mt PnNpemUpKSB7CiAJCXVuc2lnbmVkIGxvbmcgdW53cml0dGVuOwpAQCAtMzI2LDYgKzQwNyw3IEBA IGk5MTVfZ2VtX3BoeXNfcHdyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJ CQlyZXR1cm4gLUVGQVVMVDsKIAl9CiAKKwlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHZhZGRyLCBh cmdzLT5zaXplKTsKIAlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKGRldik7CiAJcmV0dXJuIDA7CiB9 CkBAIC0xMDQ2LDExICsxMTI4LDYgQEAgaTkxNV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJICogcHJlYWQvcHdyaXRlIGN1cnJlbnRseSBhcmUg cmVhZGluZyBhbmQgd3JpdGluZyBmcm9tIHRoZSBDUFUKIAkgKiBwZXJzcGVjdGl2ZSwgcmVxdWly aW5nIG1hbnVhbCBkZXRpbGluZyBieSB0aGUgY2xpZW50LgogCSAqLwotCWlmIChvYmotPnBoeXNf aGFuZGxlKSB7Ci0JCXJldCA9IGk5MTVfZ2VtX3BoeXNfcHdyaXRlKG9iaiwgYXJncywgZmlsZSk7 Ci0JCWdvdG8gb3V0OwotCX0KLQogCWlmIChvYmotPnRpbGluZ19tb2RlID09IEk5MTVfVElMSU5H X05PTkUgJiYKIAkgICAgb2JqLT5iYXNlLndyaXRlX2RvbWFpbiAhPSBJOTE1X0dFTV9ET01BSU5f Q1BVICYmCiAJICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKQEAgLTEwNjAsOCAr MTEzNywxMiBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkJICogdGV4dHVyZXMpLiBGYWxsYmFjayB0byB0aGUgc2htZW0gcGF0aCBp biB0aGF0IGNhc2UuICovCiAJfQogCi0JaWYgKHJldCA9PSAtRUZBVUxUIHx8IHJldCA9PSAtRU5P U1BDKQotCQlyZXQgPSBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoZGV2LCBvYmosIGFyZ3MsIGZpbGUp OworCWlmIChyZXQgPT0gLUVGQVVMVCB8fCByZXQgPT0gLUVOT1NQQykgeworCQlpZiAob2JqLT5w aHlzX2hhbmRsZSkKKwkJCXJldCA9IGk5MTVfZ2VtX3BoeXNfcHdyaXRlKG9iaiwgYXJncywgZmls ZSk7CisJCWVsc2UKKwkJCXJldCA9IGk5MTVfZ2VtX3NobWVtX3B3cml0ZShkZXYsIG9iaiwgYXJn cywgZmlsZSk7CisJfQogCiBvdXQ6CiAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+ YmFzZSk7CkBAIC0zNTIyLDcgKzM2MDMsNyBAQCBpOTE1X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCSAqIFN0b2xlbiBtZW1vcnkgaXMgYWx3YXlz IGNvaGVyZW50IHdpdGggdGhlIEdQVSBhcyBpdCBpcyBleHBsaWNpdGx5CiAJICogbWFya2VkIGFz IHdjIGJ5IHRoZSBzeXN0ZW0sIG9yIHRoZSBzeXN0ZW0gaXMgY2FjaGUtY29oZXJlbnQuCiAJICov Ci0JaWYgKG9iai0+c3RvbGVuKQorCWlmIChvYmotPnN0b2xlbiB8fCBvYmotPnBoeXNfaGFuZGxl KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBJZiB0aGUgR1BVIGlzIHNub29waW5nIHRoZSBjb250 ZW50cyBvZiB0aGUgQ1BVIGNhY2hlLApAQCAtNDQ1Niw4ICs0NTM3LDYgQEAgdm9pZCBpOTE1X2dl bV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCiAJCX0KIAl9CiAK LQlpOTE1X2dlbV9vYmplY3RfZGV0YWNoX3BoeXMob2JqKTsKLQogCS8qIFN0b2xlbiBvYmplY3Rz IGRvbid0IGhvbGQgYSByZWYsIGJ1dCBkbyBob2xkIHBpbiBjb3VudC4gRml4IHRoYXQgdXAKIAkg KiBiZWZvcmUgcHJvZ3Jlc3NpbmcuICovCiAJaWYgKG9iai0+c3RvbGVuKQpkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CmluZGV4IGZmNTdmMDcuLmM2YjIyOWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTM0MCw2ICszNDAs NyBAQCB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9pcnFfd2FpdCB7CiAjZGVmaW5lIEk5MTVfUEFS QU1fSEFTX0VYRUNfSEFORExFX0xVVCAgIDI2CiAjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1dUICAg ICAJIAkgMjcKICNkZWZpbmUgSTkxNV9QQVJBTV9DTURfUEFSU0VSX1ZFUlNJT04JIDI4CisjZGVm aW5lIEk5MTVfUEFSQU1fSEFTX0NPSEVSRU5UX1BIWVNfR1RUIDI5CiAKIHR5cGVkZWYgc3RydWN0 IGRybV9pOTE1X2dldHBhcmFtIHsKIAlpbnQgcGFyYW07Ci0tIAoxLjkuMwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK