From mboxrd@z Thu Jan 1 00:00:00 1970 From: ankitprasad.r.sharma@intel.com Subject: [PATCH 05/10] drm/i915: Support for creating Stolen memory backed objects Date: Tue, 26 Jan 2016 01:13:31 +0530 Message-ID: <1453751016-8713-6-git-send-email-ankitprasad.r.sharma@intel.com> References: <1453751016-8713-1-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id A56576E543 for ; Mon, 25 Jan 2016 12:05:18 -0800 (PST) In-Reply-To: <1453751016-8713-1-git-send-email-ankitprasad.r.sharma@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: akash.goel@intel.com, shashidhar.hiremath@intel.com, Ankitprasad Sharma List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+ CgpFeHRlbmQgdGhlIGRybV9pOTE1X2dlbV9jcmVhdGUgc3RydWN0dXJlIHRvIGFkZCBzdXBwb3J0 IGZvcgpjcmVhdGluZyBTdG9sZW4gbWVtb3J5IGJhY2tlZCBvYmplY3RzLiBBZGRlZCBhIG5ldyBm bGFnIHRocm91Z2gKd2hpY2ggdXNlciBjYW4gc3BlY2lmeSB0aGUgcHJlZmVyZW5jZSB0byBhbGxv Y2F0ZSB0aGUgb2JqZWN0IGZyb20Kc3RvbGVuIG1lbW9yeSwgd2hpY2ggaWYgc2V0LCBhbiBhdHRl bXB0IHdpbGwgYmUgbWFkZSB0byBhbGxvY2F0ZQp0aGUgb2JqZWN0IGZyb20gc3RvbGVuIG1lbW9y eSBzdWJqZWN0IHRvIHRoZSBhdmFpbGFiaWxpdHkgb2YKZnJlZSBzcGFjZSBpbiB0aGUgc3RvbGVu IHJlZ2lvbi4KCnYyOiBSZWJhc2VkIHRvIHRoZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkgKEFu a2l0KQoKdjM6IENoYW5nZWQgdmVyc2lvbmluZyBvZiBHRU1fQ1JFQVRFIHBhcmFtLCBhZGRlZCBu ZXcgY29tbWVudHMgKFR2cnRrbykKCnY0OiBDaGFuZ2VkIHNpemUgZnJvbSAzMmIgdG8gNjRiIHRv IHByZXZlbnQgdXNlcnNwYWNlIG92ZXJmbG93IChUdnJ0a28pCkNvcnJlY3RlZCBmdW5jdGlvbiBh cmd1bWVudHMgb3JkZXJpbmcgKENocmlzKQoKdjU6IENvcnJlY3RlZCBmdW5jdGlvbiBuYW1lIChD aHJpcykKCnY2OiBVcGRhdGVkIGRhdGF0eXBlIGZvciBmbGFncyB0byBrZWVwIHNpemVvZihkcm1f aTkxNV9nZW1fY3JlYXRlKSB1NjQKYWxpZ25lZCAoQ2hyaXMpCgp2NzogVXNlIGZpcnN0IDggYml0 cyBvZiBnZW1fY3JlYXRlIGZsYWdzIGZvciBwbGFjZW1lbnQgKENocmlzKSwgQWRkIGhlbHBlcgpm dW5jdGlvbiBmb3Igb2JqZWN0IGFsbG9jYXRpb24gZnJvbSBzdG9sZW4gcmVnaW9uIChBbmtpdCkK CnY4OiBBZGRlZCBjb21tZW50IGV4cGxhaW5pbmcgU1RPTEVOIHBsYWNlbWVudCBmbGFnIChDaHJp cykKClRlc3RjYXNlOiBpZ3QvZ2VtX3N0b2xlbgoKU2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQg U2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jICAgICAgICB8ICAzICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAg ICAgICAgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyB8ICA0ICstLQogaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDUgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kbWEuYwppbmRleCBkNzBkOTZmLi5lNjMwYWZjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmMKQEAgLTE3Miw2ICsxNzIsOSBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW0oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAljYXNlIEk5MTVfUEFSQU1fSEFTX0VY RUNfU09GVFBJTjoKIAkJdmFsdWUgPSAxOwogCQlicmVhazsKKwljYXNlIEk5MTVfUEFSQU1fQ1JF QVRFX1ZFUlNJT046CisJCXZhbHVlID0gMjsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJRFJNX0RF QlVHKCJVbmtub3duIHBhcmFtZXRlciAlZFxuIiwgcGFyYW0tPnBhcmFtKTsKIAkJcmV0dXJuIC1F SU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBmY2FlYTc3Li4wMDgxMjQ4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTMyNTUsNyArMzI1NSw3IEBAIHZvaWQgaTkxNV9nZW1f c3RvbGVuX3JlbW92ZV9ub2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIGlu dCBpOTE1X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkx NV9nZW1fY2xlYW51cF9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqCi1pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1MzIgc2l6ZSk7CitpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSk7CiBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqCiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICAgICB1MzIgc3RvbGVuX29mZnNldCwK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGFkNzBiZDMuLjUzNWQ4NzEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwpAQCAtMzg5LDIyICszODksNjIgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3Rf ZnJlZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWttZW1fY2FjaGVfZnJlZShk ZXZfcHJpdi0+b2JqZWN0cywgb2JqKTsKIH0KIAorc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICoKK2k5MTVfZ2VtX2FsbG9jX29iamVjdF9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK KwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc2l6ZSk7CisJaWYgKCFvYmopIHsKKwkJ bXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCXJldHVybiBOVUxMOworCX0KKwor CS8qIEFsd2F5cyBjbGVhciBmcmVzaCBidWZmZXJzIGJlZm9yZSBoYW5kaW5nIHRvIHVzZXJzcGFj ZSAqLworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9jbGVhcihvYmopOworCWlmIChyZXQpIHsKKwkJ ZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7CisJCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gb2JqOworfQorCiBzdGF0aWMgaW50CiBpOTE1 X2dlbV9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAogCQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQl1aW50NjRfdCBzaXplLAorCQl1aW50NjRfdCBmbGFncywKIAkJdWludDMyX3QgKmhh bmRsZV9wKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJaW50IHJldDsK IAl1MzIgaGFuZGxlOworCXUzMiBwbGFjZW1lbnQgPSBmbGFncyAmIEk5MTVfQ1JFQVRFX1BMQUNF TUVOVF9NQVNLOwogCiAJc2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKIAlpZiAoc2l6 ZSA9PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCWlmIChmbGFncyAmIF9fSTkxNV9DUkVBVEVf VU5LTk9XTl9GTEFHUykKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAkvKiBBbGxvY2F0ZSB0aGUgbmV3 IG9iamVjdCAqLwotCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIHNpemUpOworCXN3 aXRjaCAocGxhY2VtZW50KSB7CisJY2FzZSBJOTE1X0NSRUFURV9QTEFDRU1FTlRfTk9STUFMOgor CQlvYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBzaXplKTsKKwkJYnJlYWs7CisJY2Fz ZSBJOTE1X0NSRUFURV9QTEFDRU1FTlRfU1RPTEVOOgorCQlvYmogPSBpOTE1X2dlbV9hbGxvY19v YmplY3Rfc3RvbGVuKGRldiwgc2l6ZSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAt RUlOVkFMOworCX0KKwogCWlmIChvYmogPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAg LTQyNyw3ICs0NjcsNyBAQCBpOTE1X2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUsCiAJYXJncy0+cGl0Y2ggPSBBTElHTihhcmdzLT53aWR0aCAqIERJVl9ST1VORF9VUChhcmdz LT5icHAsIDgpLCA2NCk7CiAJYXJncy0+c2l6ZSA9IGFyZ3MtPnBpdGNoICogYXJncy0+aGVpZ2h0 OwogCXJldHVybiBpOTE1X2dlbV9jcmVhdGUoZmlsZSwgZGV2LAotCQkJICAgICAgIGFyZ3MtPnNp emUsICZhcmdzLT5oYW5kbGUpOworCQkJICAgICAgIGFyZ3MtPnNpemUsIDAsICZhcmdzLT5oYW5k bGUpOwogfQogCiAvKioKQEAgLTQ0MCw3ICs0ODAsNyBAQCBpOTE1X2dlbV9jcmVhdGVfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NyZWF0ZSAqYXJncyA9IGRhdGE7CiAKIAlyZXR1cm4gaTkxNV9nZW1fY3JlYXRlKGZpbGUsIGRl diwKLQkJCSAgICAgICBhcmdzLT5zaXplLCAmYXJncy0+aGFuZGxlKTsKKwkJCSAgICAgICBhcmdz LT5zaXplLCBhcmdzLT5mbGFncywgJmFyZ3MtPmhhbmRsZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg aW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCmluZGV4IGMzODRkYzkuLjgy MDMxNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCkBAIC01ODYsNyAr NTg2LDcgQEAgY2xlYW51cDoKIH0KIAogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgotaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNp emUpCitpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1NjQgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC01OTYs NyArNTk2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTMyIHNpemUpCiAJaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5t bS5zdG9sZW4pKQogCQlyZXR1cm4gTlVMTDsKIAotCURSTV9ERUJVR19LTVMoImNyZWF0aW5nIHN0 b2xlbiBvYmplY3Q6IHNpemU9JXhcbiIsIHNpemUpOworCURSTV9ERUJVR19LTVMoImNyZWF0aW5n IHN0b2xlbiBvYmplY3Q6IHNpemU9JWxseFxuIiwgc2l6ZSk7CiAJaWYgKHNpemUgPT0gMCkKIAkJ cmV0dXJuIE5VTEw7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBi L2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA2YTE5MzcxLi4wOTI5OTQ4IDEwMDY0 NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oCkBAIC0zNTcsNiArMzU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVf aXJxX3dhaXQgewogI2RlZmluZSBJOTE1X1BBUkFNX0hBU19HUFVfUkVTRVQJIDM1CiAjZGVmaW5l IEk5MTVfUEFSQU1fSEFTX1JFU09VUkNFX1NUUkVBTUVSIDM2CiAjZGVmaW5lIEk5MTVfUEFSQU1f SEFTX0VYRUNfU09GVFBJTgkgMzcKKyNkZWZpbmUgSTkxNV9QQVJBTV9DUkVBVEVfVkVSU0lPTgkg MzgKIAogdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gewogCV9fczMyIHBhcmFtOwpA QCAtNDU2LDYgKzQ1Nyw0NiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSB7CiAJICovCiAJ X191MzIgaGFuZGxlOwogCV9fdTMyIHBhZDsKKwkvKioKKwkgKiBSZXF1ZXN0ZWQgZmxhZ3MgKGN1 cnJlbnRseSB1c2VkIGZvciBwbGFjZW1lbnQKKwkgKiAod2hpY2ggbWVtb3J5IGRvbWFpbikpCisJ ICoKKwkgKiBZb3UgY2FuIHJlcXVlc3QgdGhhdCB0aGUgb2JqZWN0IGJlIGNyZWF0ZWQgZnJvbSBz cGVjaWFsIG1lbW9yeQorCSAqIHJhdGhlciB0aGFuIHJlZ3VsYXIgc3lzdGVtIHBhZ2VzIHVzaW5n IHRoaXMgcGFyYW1ldGVyLiBTdWNoCisJICogaXJyZWd1bGFyIG9iamVjdHMgbWF5IGhhdmUgY2Vy dGFpbiByZXN0cmljdGlvbnMgKHN1Y2ggYXMgQ1BVCisJICogYWNjZXNzIHRvIGEgc3RvbGVuIG9i amVjdCBpcyB2ZXJib3RlbikuCisJICoKKwkgKiBUaGlzIGNhbiBiZSB1c2VkIGluIHRoZSBmdXR1 cmUgZm9yIG90aGVyIHB1cnBvc2VzIHRvbworCSAqIGUuZy4gc3BlY2lmeWluZyB0aWxpbmcvY2Fj aGluZy9tYWR2aXNlCisJICovCisJX191NjQgZmxhZ3M7CisjZGVmaW5lIEk5MTVfQ1JFQVRFX1BM QUNFTUVOVF9OT1JNQUwgCTAgLyogc3RhbmRhcmQgc3dhcHBhYmxlIGJvICAqLworLyogQWxsb2Nh dGUgdGhlIG9iamVjdCBmcm9tIG1lbW9yeSByZXNlcnZlZCBmb3IgdGhlIGlnZnggKHN0b2xlbiku CisgKgorICogT2JqZWN0cyBhbGxvY2F0ZWQgZnJvbSBzdG9sZW4gYXJlIHJlc3RyaWN0ZWQgaW4g dGhlIEFQSSB0aGV5IGNhbiB1c2UsCisgKiBhcyBkaXJlY3QgQ1BVIGFjY2VzcyB0byBzdG9sZW4g bWVtb3J5IGlzIHByb2hpYml0ZWQgYnkgdGhlIHN5c3RlbS4KKyAqIFRoaXMgbWVhbnMgdGhhdCB5 b3UgY2Fubm90IHVzZSBhIHJlZ3VsYXIgQ1BVIG1tYXAgKGVpdGhlciB1c2luZyBXQgorICogb3Ig d2l0aCB0aGUgV0MgZXh0ZW5zaW9uKS4gWW91IGNhbiBzdGlsbCB1c2UgYSBHVFQgbW1hcCwgcHdy aXRlLAorICogcHJlYWQgYW5kIHBhc3MgaXQgYXJvdW5kIGZvciB1c2UgYnkgZXhlY2J1ZmZlciBh bmQgYmV0d2VlbiBwcm9jZXNzZXMKKyAqIGxpa2Ugbm9ybWFsLgorICoKKyAqIFN0b2xlbiBtZW1v cnkgaXMgYSB2ZXJ5IGxpbWl0ZWQgcmVzb3VyY2UgYW5kIGNlcnRhaW4gZnVuY3Rpb25zIG9mIHRo ZQorICogaGFyZHdhcmUgY2FuIG9ubHkgd29yayBmcm9tIHdpdGhpbiBzdG9sZW4gbWVtb3J5LiBV c2Vyc3BhY2UncworICogYWxsb2NhdGlvbnMgbWF5IGJlIGV2aWN0ZWQgZnJvbSBzdG9sZW4gYW5k IG1vdmVkIHRvIG5vcm1hbCBtZW1vcnkgYXMKKyAqIHJlcXVpcmVkLiBJZiB0aGUgYWxsb2NhdGlv biBpcyBtYXJrZWQgYXMgcHVyZ2VhYmxlICh1c2luZyBtYWR2aXNlKSwKKyAqIHRoZSBhbGxvY2F0 aW9uIHdpbGwgYmUgZHJvcHBlZCBhbmQgZnVydGhlciBhY2Nlc3MgdG8gdGhlIG9iamVjdCdzCisg KiBiYWNraW5nIHN0b3JhZ2Ugd2lsbCByZXN1bHQgaW4gLUVGQVVMVC4gU3RvbGVuIG9iamVjdHMg d2lsbCBhbHNvIGJlCisgKiBtaWdyYXRlZCB0byBub3JtYWwgbWVtb3J5IGFjcm9zcyBzdXNwZW5k IGFuZCByZXN1bWUsIGFzIHRoZSBzdG9sZW4KKyAqIG1lbW9yeSBpcyBub3QgcHJlc2VydmVkLgor ICoKKyAqIFN0b2xlbiBtZW1vcnkgaXMgcmVnYXJkZWQgYXMgYSByZXNvdXJjZSBwbGFjZW1lbnQg aGludCwgbW9zdCBzdWl0YWJsZQorICogZm9yIG1lZGl1bS1zaXplZCBidWZmZXJzIHRoYXQgYXJl IG9ubHkgYWNjZXNzZWQgYnkgdGhlIEdQVSBhbmQgY2FuIGJlCisgKiBkaXNjYXJkZWQuCisgKi8K KyNkZWZpbmUgSTkxNV9DUkVBVEVfUExBQ0VNRU5UX1NUT0xFTiAJMSAvKiBDYW5ub3QgdXNlIENQ VSBtbWFwcyAqLworCisjZGVmaW5lIEk5MTVfQ1JFQVRFX1BMQUNFTUVOVF9NQVNLCTB4ZmYKKyNk ZWZpbmUgX19JOTE1X0NSRUFURV9VTktOT1dOX0ZMQUdTCX5JOTE1X0NSRUFURV9QTEFDRU1FTlRf TUFTSwogfTsKIAogc3RydWN0IGRybV9pOTE1X2dlbV9wcmVhZCB7Ci0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK