From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 08/29] drm/i915: Support vGPU guest framebuffer GEM object Date: Thu, 28 Jan 2016 18:21:30 +0800 Message-ID: <1453976511-27322-9-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D267F6E7F1 for ; Thu, 28 Jan 2016 02:24:03 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@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, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogWmhpeXVhbiBMdiA8emhpeXVhbi5sdkBpbnRlbC5jb20+CgpJbiB0aGUgY29tcG9zaXRv ciBtb2RlIG9mIGRpc3BsYXksIGRvbTAvaG9zdCBuZWVkcyB0byBnZXQgdGhlIGd1ZXN0CmZyYW1l YnVmZmVyIHRvIGRvIG1vcmUgcmVuZGVyaW5nLCBzbyB0aGF0IHRoZSBndWVzdCBWTSdzIHNjcmVl biBjYW4Kc2hvdyB1cCBpbiBtb3JlIGZhbmN5IHdheSwgZS5nLiwgaW4gYW4gWCB3aW5kb3cgb2Yg ZG9tMC9ob3N0LgoKSW4gb3JkZXIgdG8gZG8gdGhhdCwgYSBuZXcgZ2VtIG9iamVjdCB0eXBlICJn dnRidWZmZXIiIGlzIGludHJvZHVjZWQKdG8gaTkxNS4gRGlmZmVyZW50IGZyb20gbm9ybWFsIGdl bSBvYmplY3QgaW4gaTkxNSwgZ3Z0YnVmZmVyIGRvZXMgbm90CmhhdmUgaXRzIG93biBiYWNraW5n IHN0b3JhZ2UuIEluc3RlYWQsIGl0IGJvcnJvd3MgdGhlIHBhZ2UgZnJhbWVzCm9mIGd1ZXN0IFZN J3MgZnJhbWVidWZmZXIgYXMgaXRzIG93biBiYWNraW5nIHN0b3JhZ2UuCgpGcm9tIGhpZ2ggbGV2 ZWwsIGl0IHdvcmtzIHRoaXMgd2F5OgoJYSkgZ3Z0IG5vdGlmaWVzIGtlcm5lbC91c2Vyc3BhY2Ug dGhlIGd1ZXN0IE9TIHBhZ2UgZmxpcCBieQoJICAgbW9uaXRvcmluZyB0aGUgcmVsYXRlZCBndWVz dCBNTUlPIGNoYW5nZXMgYW5kIGNvbW1hbmRzLgoJYikgdXNlciBzcGFjZSBpc3N1ZSBJT0NUTCB0 byBjcmVhdGUgZ3Z0YnVmZmVyIGdlbSBvYmplY3QuCgljKSBrZXJuZWwgY3JlYXRlcyB0aGUgZ2Vt IG9iamVjdCwgYW5kIHJlY29yZCB0aGUgZ3Vlc3QgRkIgYmFzZQogICAgICAgICAgIGFkZHJlc3Mg KGdmeCBhZGRyZXNzKSBmcm9tIE1NSU8uCglkKSBXaGVuIG5lZWRlZCwgdGhlIGd2dGJ1ZmZlciB3 aWxsIGJlIGJvdW5kIHRvIGdyYXBoaWNzCgkgICBtZW1vcnksIGFuZCBiZSB1c2VkIGFzIG5vcm1h bCBnZW0gb2JqZWN0IGZvciByZW5kZXJpbmcuCgpHdWVzdCBmcmFtZWJ1ZmZlciBtdXN0IGJlIGlu c2lkZSBHR1RULCB3aGVyZWFzIHRoZSBndnRidWZmZXIgY2FuIGJlCmluIGVpdGhlciBHR1RUIG9y IFBQR1RULCBkZXBlbmRpbmcgb24gdGhlIHJlcXVpcmVtZW50IG9mIHRoZQpyZW5kZXJpbmcuCgpT aW5jZSB0aGUgZ3Z0YnVmZmVyIGNvcnJlc3BvbmRzIHRvIHRoZSBndWVzdCBmcmFtZWJ1ZmZlciwg d2hpY2ggaXMKZnJvbSBndWVzdCBwaHlzaWNhbCBtZW1vcnksIHdlIG1heSBub3QgYmUgYWJsZSB0 byBnZXQgInBhZ2Ugc3RydWN0Igpmb3IgdGhlbS4gQnV0IGk5MTUgZ2VtIGZyYW1ld29yayBoYXMg aGFkIHNpbWlsYXIgY2FzZXMuIEEgZ2VtCm9iamVjdCBjYW4gaGF2ZSBzdG9sZW4gbWVtb3J5IGFz IGl0cyBiYWNraW5nIHN0b3JhZ2UuIEluIHN1Y2ggY2FzZSwKdGhlIGJhY2tpbmcgc3RvcmFnZSBk b2VzIG5vdCBoYXZlICJwYWdlIHN0cnVjdCIgYXMgd2VsbCwgYW5kIGk5MTUgaGFzCmhhbmRsZWQg dGhlIGNhc2UgaW4gdGhlIGZyYW1ld29yayB3ZWxsLgoKVGhpcyBwYXRjaCB3YXMgb3JpZ2luYWxs eSBmcm9tIGRhaXZpZC5qLmNvd3BlcnRod2FpdGVAaW50ZWwuY29tLCBhbmQKcHJldHR5IHNvbWUg Y2hhbmdlcyB3ZXJlIG1hZGUgc2luY2UgdGhlbi4KClNpZ25lZC1vZmYtYnk6IFpoaXl1YW4gTHYg PHpoaXl1YW4ubHZAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl ICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAg ICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAg IHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d2dGJ1ZmZlci5jIHwgMjQ3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oICAgICAgICAgICAgICAgfCAgMzggKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMjkwIGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndnRidWZmZXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggZDRkZjQxMC4uYzRhNjYxNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTMzLDYgKzMzLDcgQEAgaTkxNS15ICs9IGk5MTVfY21k X3BhcnNlci5vIFwKIAkgIGk5MTVfZ2VtX3N0b2xlbi5vIFwKIAkgIGk5MTVfZ2VtX3RpbGluZy5v IFwKIAkgIGk5MTVfZ2VtX3VzZXJwdHIubyBcCisJICBpOTE1X2dlbV9ndnRidWZmZXIubyBcCiAJ ICBpOTE1X2dwdV9lcnJvci5vIFwKIAkgIGk5MTVfdHJhY2VfcG9pbnRzLm8gXAogCSAgaW50ZWxf bHJjLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggZWNhOGU1MC4uZjE1MDYwMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0xMzUxLDYgKzEzNTEsNyBAQCBjb25zdCBzdHJ1Y3Qg ZHJtX2lvY3RsX2Rlc2MgaTkxNV9pb2N0bHNbXSA9IHsKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1 X0dFTV9VU0VSUFRSLCBpOTE1X2dlbV91c2VycHRyX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwK IAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBpOTE1X2dlbV9j b250ZXh0X2dldHBhcmFtX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVG X0RSVihJOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNLCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFt X2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9H VlRCVUZGRVIsIGk5MTVfZ2VtX2d2dGJ1ZmZlcl9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCiB9 OwogCiBpbnQgaTkxNV9tYXhfaW9jdGwgPSBBUlJBWV9TSVpFKGk5MTVfaW9jdGxzKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCmluZGV4IGZjNWRkZWUuLmQzODc3NTQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaApAQCAtMzIzOCw2ICszMjM4LDkgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFy YW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIGludCBpOTE1X2dl bV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIAoraW50IGk5MTVfZ2Vt X2d2dGJ1ZmZlcl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOworCiAvKiBpOTE1X2dlbV9ldmljdC5jICovCiBp bnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3Z0YnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndnRidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zYWEyZWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3Z0YnVmZmVyLmMKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAxMiAtIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5o IgorI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKyNpbmNs dWRlIDxsaW51eC9zd2FwLmg+CisKKyNpbmNsdWRlICJndnQvZmJfZGVjb2Rlci5oIgorCitzdGF0 aWMgaW50IGk5MTVfZ2VtX2d2dGJ1ZmZlcl9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKK3sKKwlCVUcoKTsKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIHZv aWQgaTkxNV9nZW1fZ3Z0YnVmZmVyX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQoreworCS8qIGxpa2Ugc3RvbGVuIG1lbW9yeSwgdGhpcyBzaG91bGQgb25seSBiZSBj YWxsZWQgZHVyaW5nIGZyZWUKKwkgKiBhZnRlciBjbGVhcmluZyBwaW4gY291bnQuCisJICovCisJ c2dfZnJlZV90YWJsZShvYmotPnBhZ2VzKTsKKwlrZnJlZShvYmotPnBhZ2VzKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9ndnRidWZm ZXJfb3BzID0geworCS5nZXRfcGFnZXMgPSBpOTE1X2dlbV9ndnRidWZmZXJfZ2V0X3BhZ2VzLAor CS5wdXRfcGFnZXMgPSBpOTE1X2dlbV9ndnRidWZmZXJfcHV0X3BhZ2VzLAorfTsKKworI2RlZmlu ZSBHRU44X0RFQ09ERV9QVEUocHRlKSBcCisJKChkbWFfYWRkcl90KSgoKCgodTY0KXB0ZSkgPj4g MTIpICYgMHg3ZmZmZmZmVUxMKSA8PCAxMikpCisKKyNkZWZpbmUgR0VON19ERUNPREVfUFRFKHB0 ZSkgXAorCSgoZG1hX2FkZHJfdCkoKCgoKHU2NClwdGUpICYgMHg3ZjApIDw8IDI4KSB8ICh1NjQp KHB0ZSAmIDB4ZmZmZmYwMDApKSkKKworc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCitpOTE1X2Ny ZWF0ZV9zZ19wYWdlc19mb3JfZ3Z0YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkg ICAgIHUzMiBzdGFydCwgdTMyIG51bV9wYWdlcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBzZ190YWJsZSAqc3Q7CisJ c3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwlpbnQgaTsKKworCXN0ID0ga21hbGxvYyhzaXplb2Yo KnN0KSwgR0ZQX0tFUk5FTCk7CisJaWYgKHN0ID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJ aWYgKHNnX2FsbG9jX3RhYmxlKHN0LCBudW1fcGFnZXMsIEdGUF9LRVJORUwpKSB7CisJCWtmcmVl KHN0KTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDgpIHsKKwkJZ2VuOF9wdGVfdCBfX2lvbWVtICpndHRfZW50cmllcyA9CisJCQkoZ2VuOF9wdGVf dCBfX2lvbWVtICopZGV2X3ByaXYtPmd0dC5nc20gKworCQkJKHN0YXJ0ID4+IFBBR0VfU0hJRlQp OworCQlmb3JfZWFjaF9zZyhzdC0+c2dsLCBzZywgbnVtX3BhZ2VzLCBpKSB7CisJCQlzZy0+b2Zm c2V0ID0gMDsKKwkJCXNnLT5sZW5ndGggPSBQQUdFX1NJWkU7CisJCQlzZ19kbWFfYWRkcmVzcyhz ZykgPQorCQkJCUdFTjhfREVDT0RFX1BURShyZWFkcSgmZ3R0X2VudHJpZXNbaV0pKTsKKwkJCXNn X2RtYV9sZW4oc2cpID0gUEFHRV9TSVpFOworCQl9CisJfSBlbHNlIHsKKwkJZ2VuNl9wdGVfdCBf X2lvbWVtICpndHRfZW50cmllcyA9CisJCQkoZ2VuNl9wdGVfdCBfX2lvbWVtICopZGV2X3ByaXYt Pmd0dC5nc20gKworCQkJKHN0YXJ0ID4+IFBBR0VfU0hJRlQpOworCQlmb3JfZWFjaF9zZyhzdC0+ c2dsLCBzZywgbnVtX3BhZ2VzLCBpKSB7CisJCQlzZy0+b2Zmc2V0ID0gMDsKKwkJCXNnLT5sZW5n dGggPSBQQUdFX1NJWkU7CisJCQlzZ19kbWFfYWRkcmVzcyhzZykgPQorCQkJCUdFTjdfREVDT0RF X1BURShyZWFkcSgmZ3R0X2VudHJpZXNbaV0pKTsKKwkJCXNnX2RtYV9sZW4oc2cpID0gUEFHRV9T SVpFOworCQl9CisJfQorCisJcmV0dXJuIHN0OworfQorCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqCitpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2d2dGJ1ZmZlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorCQkJCSB1MzIgc3RhcnQsIHUzMiBudW1fcGFnZXMpCit7CisJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoZGV2KTsK KwlpZiAob2JqID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJZHJtX2dlbV9wcml2YXRlX29i amVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgbnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQpOworCWk5 MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2VtX2d2dGJ1ZmZlcl9vcHMpOworCisJb2Jq LT5wYWdlcyA9IGk5MTVfY3JlYXRlX3NnX3BhZ2VzX2Zvcl9ndnRidWZmZXIoZGV2LCBzdGFydCwg bnVtX3BhZ2VzKTsKKwlpZiAob2JqLT5wYWdlcyA9PSBOVUxMKSB7CisJCWk5MTVfZ2VtX29iamVj dF9mcmVlKG9iaik7CisJCXJldHVybiBOVUxMOworCX0KKworCWk5MTVfZ2VtX29iamVjdF9waW5f cGFnZXMob2JqKTsKKwlvYmotPmNhY2hlX2xldmVsID0gSTkxNV9DQUNIRV9MM19MTEM7CisKKwlE Uk1fREVCVUdfRFJJVkVSKCJHVlRfR0VNOiBiYWNraW5nIHN0b3JlIGJhc2UgPSAweCV4IHBhZ2Vz ID0gMHgleFxuIiwKKwkJCSBzdGFydCwgbnVtX3BhZ2VzKTsKKwlyZXR1cm4gb2JqOworfQorCitz dGF0aWMgaW50IGd2dF9kZWNvZGVfaW5mb3JtYXRpb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwK KwkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fZ3Z0YnVmZmVyICphcmdzKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdTMyIHZtaWQg PSBhcmdzLT52bWlkOworCXN0cnVjdCBndnRfZmJfZm9ybWF0IGZiOworCXN0cnVjdCBndnRfcHJp bWFyeV9wbGFuZV9mb3JtYXQgKnA7CisJc3RydWN0IGd2dF9jdXJzb3JfcGxhbmVfZm9ybWF0ICpj OworCXN0cnVjdCBndnRfcGlwZV9mb3JtYXQgKnBpcGU7CisKKwlpZiAoZ3Z0X2RlY29kZV9mYl9m b3JtYXQoZGV2X3ByaXYtPnZncHUuaG9zdF9wcml2YXRlX2RhdGEsIHZtaWQsICZmYikpCisJCXJl dHVybiAtRUlOVkFMOworCisJcGlwZSA9ICgoYXJncy0+cGlwZV9pZCA+PSBJOTE1X01BWF9QSVBF UykgPworCQlOVUxMIDogJmZiLnBpcGVzW2FyZ3MtPnBpcGVfaWRdKTsKKworCWlmICghcGlwZSB8 fCAhcGlwZS0+cHJpbWFyeS5lbmFibGVkKSB7CisJCURSTV9ERUJVR19EUklWRVIoIkdWVF9HRU06 IEludmFsaWQgcGlwZV9pZDogJWRcbiIsCisJCQkJIGFyZ3MtPnBpcGVfaWQpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlpZiAoKGFyZ3MtPnBsYW5lX2lkKSA9PSBJOTE1X0dWVF9QTEFORV9Q UklNQVJZKSB7CisJCXAgPSAmcGlwZS0+cHJpbWFyeTsKKwkJYXJncy0+ZW5hYmxlZCA9IHAtPmVu YWJsZWQ7CisJCWFyZ3MtPnhfb2Zmc2V0ID0gcC0+eF9vZmZzZXQ7CisJCWFyZ3MtPnlfb2Zmc2V0 ID0gcC0+eV9vZmZzZXQ7CisJCWFyZ3MtPnN0YXJ0ID0gcC0+YmFzZTsKKwkJYXJncy0+d2lkdGgg PSBwLT53aWR0aDsKKwkJYXJncy0+aGVpZ2h0ID0gcC0+aGVpZ2h0OworCQlhcmdzLT5zdHJpZGUg PSBwLT5zdHJpZGU7CisJCWFyZ3MtPmJwcCA9IHAtPmJwcDsKKwkJYXJncy0+aHdfZm9ybWF0ID0g cC0+aHdfZm9ybWF0OworCQlhcmdzLT5kcm1fZm9ybWF0ID0gcC0+ZHJtX2Zvcm1hdDsKKwkJYXJn cy0+dGlsZWQgPSBwLT50aWxlZDsKKwl9IGVsc2UgaWYgKChhcmdzLT5wbGFuZV9pZCkgPT0gSTkx NV9HVlRfUExBTkVfQ1VSU09SKSB7CisJCWMgPSAmcGlwZS0+Y3Vyc29yOworCQlhcmdzLT5lbmFi bGVkID0gYy0+ZW5hYmxlZDsKKwkJYXJncy0+eF9vZmZzZXQgPSBjLT54X2hvdDsKKwkJYXJncy0+ eV9vZmZzZXQgPSBjLT55X2hvdDsKKwkJYXJncy0+eF9wb3MgPSBjLT54X3BvczsKKwkJYXJncy0+ eV9wb3MgPSBjLT55X3BvczsKKwkJYXJncy0+c3RhcnQgPSBjLT5iYXNlOworCQlhcmdzLT53aWR0 aCA9IGMtPndpZHRoOworCQlhcmdzLT5oZWlnaHQgPSBjLT5oZWlnaHQ7CisJCWFyZ3MtPnN0cmlk ZSA9IGMtPndpZHRoICogKGMtPmJwcCAvIDgpOworCQlhcmdzLT5icHAgPSBjLT5icHA7CisJCWFy Z3MtPnRpbGVkID0gMDsKKwl9IGVsc2UgeworCQlEUk1fREVCVUdfRFJJVkVSKCJHVlRfR0VNOiBJ bnZhbGlkIHBsYWluZV9pZDogJWRcbiIsCisJCQkJIGFyZ3MtPnBsYW5lX2lkKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJYXJncy0+c2l6ZSA9ICgoKGFyZ3MtPndpZHRoICogYXJncy0+aGVp Z2h0ICogYXJncy0+YnBwKSAvIDgpICsKKwkJICAgICAgKFBBR0VfU0laRSAtIDEpKSA+PiBQQUdF X1NISUZUOworCisJaWYgKGFyZ3MtPnN0YXJ0ICYgKFBBR0VfU0laRSAtIDEpKSB7CisJCURSTV9E RUJVR19EUklWRVIoIkdWVF9HRU06IE5vdCBhbGlnbmVkIGZiIHN0YXJ0IGFkZHJlc3M6ICIKKwkJ CQkgIjB4JXhcbiIsIGFyZ3MtPnN0YXJ0KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYg KCgoYXJncy0+c3RhcnQgPj4gUEFHRV9TSElGVCkgKyBhcmdzLT5zaXplKSA+CisJICAgIGd0dF90 b3RhbF9lbnRyaWVzKGRldl9wcml2LT5ndHQpKSB7CisJCURSTV9ERUJVR19EUklWRVIoIkdWVDog SW52YWxpZCBHVFQgb2Zmc2V0IG9yIHNpemVcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJ cmV0dXJuIDA7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBtbSBvYmplY3QgdGhhdCB3cmFw cyBzb21lIHVzZXIgbWVtb3J5LgorICovCitpbnQKK2k5MTVfZ2VtX2d2dGJ1ZmZlcl9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2d2dGJ1ZmZlciAqYXJncyA9IGRhdGE7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwl1MzIgaGFuZGxlOworCWludCByZXQ7 CisKKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA3KQorCQlyZXR1cm4gLUVQRVJNOworI2lm IDAKKwlpZiAoIWd2dF9jaGVja19ob3N0KCkpCisJCXJldHVybiAtRVBFUk07CisjZW5kaWYKKwly ZXQgPSBndnRfZGVjb2RlX2luZm9ybWF0aW9uKGRldiwgYXJncyk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCWlmIChhcmdzLT5mbGFncyAmIEk5MTVfR1ZUQlVGRkVSX1FVRVJZX09OTFkp CisJCXJldHVybiAwOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9ndnRidWZmZXIo ZGV2LCBhcmdzLT5zdGFydCwgYXJncy0+c2l6ZSk7CisJaWYgKCFvYmopIHsKKwkJRFJNX0RFQlVH X0RSSVZFUigiR1ZUX0dFTTogRmFpbGVkIHRvIGNyZWF0ZSBnZW0gb2JqZWN0IgorCQkJCQkiIGZv ciBWTSBGQiFcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlvYmotPnRpbGluZ19tb2Rl ID0gYXJncy0+dGlsZWQgPyBJOTE1X1RJTElOR19YIDogSTkxNV9USUxJTkdfTk9ORTsKKwlvYmot PnN0cmlkZSA9IGFyZ3MtPnRpbGVkID8gYXJncy0+c3RyaWRlIDogMDsKKworCXJldCA9IGRybV9n ZW1faGFuZGxlX2NyZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCAmaGFuZGxlKTsKKwlpZiAocmV0KSB7 CisJCS8qIFRPRE86IERvdWJsZSBjb25maXJtIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoICovCisJ CWk5MTVfZ2VtX29iamVjdF9mcmVlKG9iaik7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogZHJv cCByZWZlcmVuY2UgZnJvbSBhbGxvY2F0ZSAtIGhhbmRsZSBob2xkcyBpdCBub3cgKi8KKwlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKKworCWFyZ3MtPmhhbmRsZSA9IGhh bmRsZTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA2YTE5MzcxLi41YmExMTVh IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oCkBAIC0yMzAsNiArMjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2Ry bV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0k5MTVfR0VNX1VTRVJQVFIJCTB4MzMKICNkZWZp bmUgRFJNX0k5MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0JMHgzNAogI2RlZmluZSBEUk1fSTkxNV9H RU1fQ09OVEVYVF9TRVRQQVJBTQkweDM1CisjZGVmaW5lIERSTV9JOTE1X0dFTV9HVlRCVUZGRVIg ICAgICAgICAgMHgzNgogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERS TV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3QpCiAjZGVmaW5l IERSTV9JT0NUTF9JOTE1X0ZMVVNICQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfRkxVU0gpCkBAIC0yODMsNiArMjg0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3Nh cmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1VTRVJQVFIJCQlEUk1fSU9XUiAoRFJN X0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9VU0VSUFRSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3VzZXJwdHIpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNCURS TV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0s IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5 MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0JRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRU1fQ09OVEVYVF9TRVRQQVJBTSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fR1ZUQlVGRkVSCQlEUk1fSU9XUihEUk1f Q09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0dWVEJVRkZFUiwgc3RydWN0IGRybV9pOTE1X2dl bV9ndnRidWZmZXIpCiAKIC8qIEFsbG93IGRyaXZlcnMgdG8gc3VibWl0IGJhdGNoYnVmZmVycyBk aXJlY3RseSB0byBoYXJkd2FyZSwgcmVseWluZwogICogb24gdGhlIHNlY3VyaXR5IG1lY2hhbmlz bXMgcHJvdmlkZWQgYnkgaGFyZHdhcmUuCkBAIC0xMTY4LDQgKzExNzAsNDAgQEAgc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKIAlfX3U2NCB2YWx1ZTsKIH07CiAKK3N0cnVjdCBk cm1faTkxNV9nZW1fZ3Z0YnVmZmVyIHsKKyAgICAgICAgX191MzIgdm1pZDsKKwlfX3UzMiBwbGFu ZV9pZDsKKyNkZWZpbmUgSTkxNV9HVlRfUExBTkVfUFJJTUFSWSAxCisjZGVmaW5lIEk5MTVfR1ZU X1BMQU5FX1NQUklURSAyCisjZGVmaW5lIEk5MTVfR1ZUX1BMQU5FX0NVUlNPUiAzCisJX191MzIg cGlwZV9pZDsKKwlfX3UzMiBwaHlzX3BpcGVfaWQ7CisJX191OCAgZW5hYmxlZDsKKwlfX3U4ICB0 aWxlZDsKKwlfX3UzMiBicHA7CisJX191MzIgaHdfZm9ybWF0OworCV9fdTMyIGRybV9mb3JtYXQ7 CisJX191MzIgc3RhcnQ7CisJX191MzIgeF9wb3M7CisJX191MzIgeV9wb3M7CisJX191MzIgeF9v ZmZzZXQ7CisJX191MzIgeV9vZmZzZXQ7CisJX191MzIgc2l6ZTsKKwlfX3UzMiB3aWR0aDsKKwlf X3UzMiBoZWlnaHQ7CisJX191MzIgc3RyaWRlOworCV9fdTY0IHVzZXJfcHRyOworCV9fdTMyIHVz ZXJfc2l6ZTsKKwlfX3UzMiBmbGFnczsKKyNkZWZpbmUgSTkxNV9HVlRCVUZGRVJfUkVBRF9PTkxZ ICgxPDwwKQorI2RlZmluZSBJOTE1X0dWVEJVRkZFUl9RVUVSWV9PTkxZICgxPDwxKQorI2RlZmlu ZSBJOTE1X0dWVEJVRkZFUl9VTlNZTkNIUk9OSVpFRCAweDgwMDAwMDAwCisJLyoqCisJICogUmV0 dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogT2JqZWN0IGhhbmRsZXMgYXJl IG5vbnplcm8uCisJICovCisJX191MzIgaGFuZGxlOworfTsKKwogI2VuZGlmIC8qIF9VQVBJX0k5 MTVfRFJNX0hfICovCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK