From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaoguang Chen Subject: [PATCH v9 7/7] drm/i915/gvt: Adding user interface for dma-buf Date: Thu, 15 Jun 2017 16:00:11 +0800 Message-ID: <1497513611-2814-8-git-send-email-xiaoguang.chen@intel.com> References: <1497513611-2814-1-git-send-email-xiaoguang.chen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1497513611-2814-1-git-send-email-xiaoguang.chen@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: alex.williamson@redhat.com, kraxel@redhat.com, chris@chris-wilson.co.uk, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, zhenyuw@linux.intel.com, zhiyuan.lv@intel.com, intel-gvt-dev@lists.freedesktop.org, zhi.a.wang@intel.com, kevin.tian@intel.com Cc: Xiaoguang Chen List-Id: intel-gfx@lists.freedesktop.org VXNlciBzcGFjZSBzaG91bGQgY3JlYXRlIHRoZSBtYW5hZ2VtZW50IGZkIGZvciB0aGUgZG1hLWJ1 ZiBvcGVyYXRpb24gZmlyc3QuClRoZW4gdXNlciBjYW4gcXVlcnkgdGhlIHBsYW5lIGluZm9ybWF0 aW9uIGFuZCBjcmVhdGUgZG1hLWJ1ZiBpZiBuZWNlc3NhcnkKdXNpbmcgdGhlIG1hbmFnZW1lbnQg ZmQuCgpTaWduZWQtb2ZmLWJ5OiBYaWFvZ3VhbmcgQ2hlbiA8eGlhb2d1YW5nLmNoZW5AaW50ZWwu Y29tPgpUZXN0ZWQtYnk6IEtlY2hlbiBMdSA8a2VjaGVuLmx1QGludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmMgICAgfCAgNDUgKysrKysrKysrKystCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmggICAgfCAgIDUgKysKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuYyAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Z3Z0LmggICAgICAgfCAgIDYgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwu aCB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYyAgICAgfCAxMzYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9tcHQuaCAgICAgICB8ICAzMCArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3Zn cHUuYyAgICAgIHwgICAyICsKIDggZmlsZXMgY2hhbmdlZCwgMjI5IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVm LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmMKaW5kZXggNmVmNGY2MC4uYTZh NmY2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kbWFidWYuYwpAQCAtODEsNiArODEsMzEgQEAgc3Rh dGljIHZvaWQgaW50ZWxfdmdwdV9nZW1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAKIHN0YXRpYyB2b2lkIGludGVsX3ZncHVfZ2VtX3JlbGVhc2Uoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKKwlzdHJ1Y3QgaW50ZWxfdmdwdV9kbWFidWZfb2Jq ICpkbWFidWZfb2JqOworCXN0cnVjdCBpbnRlbF92Z3B1X2ZiX2luZm8gKmZiX2luZm87CisJc3Ry dWN0IGludGVsX3ZncHUgKnZncHU7CisJc3RydWN0IGxpc3RfaGVhZCAqcG9zOworCisJZmJfaW5m byA9IChzdHJ1Y3QgaW50ZWxfdmdwdV9mYl9pbmZvICopb2JqLT5ndnRfaW5mbzsKKwlpZiAoV0FS Tl9PTighZmJfaW5mbyB8fCAhZmJfaW5mby0+dmdwdSkpIHsKKwkJZ3Z0X3ZncHVfZXJyKCJndnQg aW5mbyBpcyBpbnZhbGlkXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJdmdwdSA9IGZiX2luZm8t PnZncHU7CisJbXV0ZXhfbG9jaygmdmdwdS0+ZG1hYnVmX2xpc3RfbG9jayk7CisJbGlzdF9mb3Jf ZWFjaChwb3MsICZ2Z3B1LT5kbWFidWZfb2JqX2xpc3RfaGVhZCkgeworCQlkbWFidWZfb2JqID0g Y29udGFpbmVyX29mKHBvcywgc3RydWN0IGludGVsX3ZncHVfZG1hYnVmX29iaiwKKwkJCQkJCWxp c3QpOworCQlpZiAoKGRtYWJ1Zl9vYmogIT0gTlVMTCkgJiYgKGRtYWJ1Zl9vYmotPm9iaiA9PSBv YmopKSB7CisJCQlrZnJlZShkbWFidWZfb2JqKTsKKwkJCWxpc3RfZGVsKHBvcyk7CisJCQlicmVh azsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJnZncHUtPmRtYWJ1Zl9saXN0X2xvY2spOworCWlu dGVsX2d2dF9oeXBlcnZpc29yX3B1dF92ZmlvX2RldmljZSh2Z3B1KTsKK291dDoKIAlrZnJlZShv YmotPmd2dF9pbmZvKTsKIH0KIApAQCAtMjE2LDYgKzI0MSw3IEBAIGludCBpbnRlbF92Z3B1X2Ny ZWF0ZV9kbWFidWYoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHZvaWQgKmFyZ3MpCiAJc3RydWN0 IHZmaW9fZG1hYnVmX21ncl9jcmVhdGVfZG1hYnVmICpndnRfZG1hYnVmID0gYXJnczsKIAlzdHJ1 Y3QgaW50ZWxfdmdwdV9mYl9pbmZvICpmYl9pbmZvOwogCWludCByZXQ7CisJc3RydWN0IGludGVs X3ZncHVfZG1hYnVmX29iaiAqZG1hYnVmX29iajsKIAogCXJldCA9IGludGVsX3ZncHVfZ2V0X3Bs YW5lX2luZm8oZGV2LCB2Z3B1LCAmZ3Z0X2RtYWJ1Zi0+cGxhbmVfaW5mbywKIAkJCQkJZ3Z0X2Rt YWJ1Zi0+cGxhbmVfaWQpOwpAQCAtMjM4LDYgKzI2NCwxOCBAQCBpbnQgaW50ZWxfdmdwdV9jcmVh dGVfZG1hYnVmKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB2b2lkICphcmdzKQogCWZiX2luZm8t PnZncHUgPSB2Z3B1OwogCW9iai0+Z3Z0X2luZm8gPSBmYl9pbmZvOwogCisJZG1hYnVmX29iaiA9 IGttYWxsb2Moc2l6ZW9mKCpkbWFidWZfb2JqKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkbWFidWZf b2JqKSB7CisJCWd2dF92Z3B1X2VycigiYWxsb2MgZG1hYnVmX29iaiBmYWlsZWRcbiIpOworCQly ZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dF9mcmVlX2luZm87CisJfQorCWRtYWJ1Zl9vYmotPm9i aiA9IG9iajsKKwlJTklUX0xJU1RfSEVBRCgmZG1hYnVmX29iai0+bGlzdCk7CisJbXV0ZXhfbG9j aygmdmdwdS0+ZG1hYnVmX2xpc3RfbG9jayk7CisJbGlzdF9hZGRfdGFpbCgmZG1hYnVmX29iai0+ bGlzdCwgJnZncHUtPmRtYWJ1Zl9vYmpfbGlzdF9oZWFkKTsKKwltdXRleF91bmxvY2soJnZncHUt PmRtYWJ1Zl9saXN0X2xvY2spOworCiAJZG1hYnVmID0gaTkxNV9nZW1fcHJpbWVfZXhwb3J0KGRl diwgJm9iai0+YmFzZSwgRFJNX0NMT0VYRUMgfCBEUk1fUkRXUik7CiAKIAlpZiAoSVNfRVJSKGRt YWJ1ZikpIHsKQEAgLTI1MSwxMSArMjg5LDE2IEBAIGludCBpbnRlbF92Z3B1X2NyZWF0ZV9kbWFi dWYoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHZvaWQgKmFyZ3MpCiAJCWd2dF92Z3B1X2Vycigi Y3JlYXRlIGRtYS1idWYgZmQgZmFpbGVkIHJldDolZFxuIiwgcmV0KTsKIAkJZ290byBvdXRfZnJl ZTsKIAl9Ci0KKwlpZiAoaW50ZWxfZ3Z0X2h5cGVydmlzb3JfZ2V0X3ZmaW9fZGV2aWNlKHZncHUp KSB7CisJCWd2dF92Z3B1X2VycigiZ2V0IHZmaW8gZGV2aWNlIGZhaWxlZFxuIik7CisJCWdvdG8g b3V0X2ZyZWU7CisJfQogCWd2dF9kbWFidWYtPmZkID0gcmV0OwogCiAJcmV0dXJuIDA7CiBvdXRf ZnJlZToKKwlrZnJlZShkbWFidWZfb2JqKTsKK291dF9mcmVlX2luZm86CiAJa2ZyZWUoZmJfaW5m byk7CiBvdXQ6CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2Rt YWJ1Zi5oCmluZGV4IDhiZTk5NzkuLmNhZmE3ODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9kbWFidWYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVm LmgKQEAgLTMxLDYgKzMxLDExIEBAIHN0cnVjdCBpbnRlbF92Z3B1X2ZiX2luZm8gewogCXVpbnQz Ml90IGZiX3NpemU7CiB9OwogCitzdHJ1Y3QgaW50ZWxfdmdwdV9kbWFidWZfb2JqIHsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307 CisKIGludCBpbnRlbF92Z3B1X3F1ZXJ5X3BsYW5lKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB2 b2lkICphcmdzKTsKIGludCBpbnRlbF92Z3B1X2NyZWF0ZV9kbWFidWYoc3RydWN0IGludGVsX3Zn cHUgKnZncHUsIHZvaWQgKmFyZ3MpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKaW5kZXggMjAzMjkx Ny4uZDU4OTgzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYwpAQCAtNTQsNiArNTQsOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGludGVsX2d2dF9vcHMgaW50ZWxfZ3Z0X29wcyA9IHsKIAkudmdwdV9y ZXNldCA9IGludGVsX2d2dF9yZXNldF92Z3B1LAogCS52Z3B1X2FjdGl2YXRlID0gaW50ZWxfZ3Z0 X2FjdGl2YXRlX3ZncHUsCiAJLnZncHVfZGVhY3RpdmF0ZSA9IGludGVsX2d2dF9kZWFjdGl2YXRl X3ZncHUsCisJLnZncHVfcXVlcnlfcGxhbmUgPSBpbnRlbF92Z3B1X3F1ZXJ5X3BsYW5lLAorCS52 Z3B1X2NyZWF0ZV9kbWFidWYgPSBpbnRlbF92Z3B1X2NyZWF0ZV9kbWFidWYsCisKIH07CiAKIC8q KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCmluZGV4IDc2M2E4YzUuLmRmN2UyMTYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmgKQEAgLTE4NSw4ICsxODUsMTIgQEAgc3RydWN0IGludGVsX3ZncHUgewogCQlz dHJ1Y3Qga3ZtICprdm07CiAJCXN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNlX3dvcms7CiAJCWF0 b21pY190IHJlbGVhc2VkOworCQlzdHJ1Y3QgdmZpb19kZXZpY2UgKnZmaW9fZGV2aWNlOwogCX0g dmRldjsKICNlbmRpZgorCWF0b21pY190IG1ncl9mZF9vcGVuZWQ7CisJc3RydWN0IGxpc3RfaGVh ZCBkbWFidWZfb2JqX2xpc3RfaGVhZDsKKwlzdHJ1Y3QgbXV0ZXggZG1hYnVmX2xpc3RfbG9jazsK IH07CiAKIHN0cnVjdCBpbnRlbF9ndnRfZ20gewpAQCAtNDY3LDYgKzQ3MSw4IEBAIHN0cnVjdCBp bnRlbF9ndnRfb3BzIHsKIAl2b2lkICgqdmdwdV9yZXNldCkoc3RydWN0IGludGVsX3ZncHUgKik7 CiAJdm9pZCAoKnZncHVfYWN0aXZhdGUpKHN0cnVjdCBpbnRlbF92Z3B1ICopOwogCXZvaWQgKCp2 Z3B1X2RlYWN0aXZhdGUpKHN0cnVjdCBpbnRlbF92Z3B1ICopOworCWludCAoKnZncHVfcXVlcnlf cGxhbmUpKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB2b2lkICopOworCWludCAoKnZncHVfY3Jl YXRlX2RtYWJ1Zikoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHZvaWQgKik7CiB9OwogCiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAppbmRleCAzMmMzNDVjLi40ZjIxNjFjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCkBAIC01Niw2ICs1Niw5IEBAIHN0cnVjdCBp bnRlbF9ndnRfbXB0IHsKIAlpbnQgKCpzZXRfdHJhcF9hcmVhKSh1bnNpZ25lZCBsb25nIGhhbmRs ZSwgdTY0IHN0YXJ0LCB1NjQgZW5kLAogCQkJICAgICBib29sIG1hcCk7CiAJaW50ICgqc2V0X29w cmVnaW9uKSh2b2lkICp2Z3B1KTsKKwlpbnQgKCpnZXRfdmZpb19kZXZpY2UpKHZvaWQgKnZncHUp OworCXZvaWQgKCpwdXRfdmZpb19kZXZpY2UpKHZvaWQgKnZncHUpOworCiB9OwogCiBleHRlcm4g c3RydWN0IGludGVsX2d2dF9tcHQgeGVuZ3RfbXB0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2t2bWd0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYwpp bmRleCA2YjQ2NTJhLi45ZjcxMzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQva3ZtZ3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYwpAQCAtNDEs NiArNDEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2t2bV9ob3N0Lmg+CiAjaW5jbHVkZSA8bGludXgv dmZpby5oPgogI2luY2x1ZGUgPGxpbnV4L21kZXYuaD4KKyNpbmNsdWRlIDxsaW51eC9hbm9uX2lu b2Rlcy5oPgogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJndnQuaCIKQEAgLTUy Myw2ICs1MjQsOTggQEAgc3RhdGljIGludCBrdm1ndF9zZXRfb3ByZWdpb24odm9pZCAqcF92Z3B1 KQogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQga3ZtZ3RfZ2V0X3ZmaW9fZGV2aWNlKHZv aWQgKnZncHUpCit7CisJaWYgKCF2ZmlvX2RldmljZV9nZXRfZnJvbV9kZXYoCisJCQltZGV2X2Rl digoKHN0cnVjdCBpbnRlbF92Z3B1ICopdmdwdSktPnZkZXYubWRldikpKQorCQlyZXR1cm4gLUVO T0RFVjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBrdm1ndF9wdXRfdmZpb19kZXZp Y2Uodm9pZCAqdmdwdSkKK3sKKwlpZiAoV0FSTl9PTighKChzdHJ1Y3QgaW50ZWxfdmdwdSAqKXZn cHUpLT52ZGV2LnZmaW9fZGV2aWNlKSkKKwkJcmV0dXJuOworCisJdmZpb19kZXZpY2VfcHV0KCgo c3RydWN0IGludGVsX3ZncHUgKil2Z3B1KS0+dmRldi52ZmlvX2RldmljZSk7Cit9CisKK3N0YXRp YyBpbnQgaW50ZWxfdmdwdV9kbWFidWZfbWdyX2ZkX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsCisJ CXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXJldHVybiAtRVBFUk07Cit9CisKK3N0 YXRpYyBpbnQgaW50ZWxfdmdwdV9kbWFidWZfbWdyX2ZkX3JlbGVhc2Uoc3RydWN0IGlub2RlICpp bm9kZSwKKwkJc3RydWN0IGZpbGUgKmZpbHApCit7CisJc3RydWN0IGludGVsX3ZncHUgKnZncHUg PSBmaWxwLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGludGVsX3ZncHVfZG1hYnVmX29iaiAqb2Jq OworCXN0cnVjdCBsaXN0X2hlYWQgKnBvczsKKworCWxpc3RfZm9yX2VhY2gocG9zLCAmdmdwdS0+ ZG1hYnVmX29ial9saXN0X2hlYWQpIHsKKwkJb2JqID0gY29udGFpbmVyX29mKHBvcywgc3RydWN0 IGludGVsX3ZncHVfZG1hYnVmX29iaiwgbGlzdCk7CisJCWlmIChXQVJOX09OKCFvYmopKQorCQkJ cmV0dXJuIC1FTk9ERVY7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqLT5vYmopOworCX0KKwlr dm1ndF9wdXRfdmZpb19kZXZpY2UodmdwdSk7CisJYXRvbWljX3NldCgmdmdwdS0+bWdyX2ZkX29w ZW5lZCwgMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGxvbmcgaW50ZWxfdmdwdV9kbWFi dWZfbWdyX2ZkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAorCQl1bnNpZ25lZCBpbnQgaW9jdGws IHVuc2lnbmVkIGxvbmcgYXJnKQoreworCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gZmlscC0+ cHJpdmF0ZV9kYXRhOworCWludCBtaW5zejsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChpb2N0bCA9 PSBWRklPX0RNQUJVRl9NR1JfUVVFUllfUExBTkUpIHsKKwkJc3RydWN0IHZmaW9fZG1hYnVmX21n cl9xdWVyeV9wbGFuZSBwbGFuZV9pbmZvOworCisJCW1pbnN6ID0gb2Zmc2V0b2ZlbmQoc3RydWN0 IHZmaW9fZG1hYnVmX21ncl9xdWVyeV9wbGFuZSwKKwkJCQkJcGxhbmVfaWQpOworCQlpZiAoY29w eV9mcm9tX3VzZXIoJnBsYW5lX2luZm8sICh2b2lkIF9fdXNlciAqKWFyZywgbWluc3opKQorCQkJ cmV0dXJuIC1FRkFVTFQ7CisJCWlmIChwbGFuZV9pbmZvLmFyZ3N6IDwgbWluc3ogfHwgcGxhbmVf aW5mby5mbGFncyAhPSAwKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldCA9IGludGVsX2d2dF9v cHMtPnZncHVfcXVlcnlfcGxhbmUodmdwdSwgJnBsYW5lX2luZm8pOworCQlpZiAocmV0ICE9IDAp IHsKKwkJCWd2dF92Z3B1X2VycigicXVlcnkgcGxhbmUgZmFpbGVkOiVkXG4iLCByZXQpOworCQkJ cmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJcmV0dXJuIGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIg KilhcmcsICZwbGFuZV9pbmZvLCBtaW5zeikgPworCQkJCQkJCQktRUZBVUxUIDogMDsKKwl9IGVs c2UgaWYgKGlvY3RsID09IFZGSU9fRE1BQlVGX01HUl9DUkVBVEVfRE1BQlVGKSB7CisJCXN0cnVj dCB2ZmlvX2RtYWJ1Zl9tZ3JfY3JlYXRlX2RtYWJ1ZiBkbWFidWY7CisKKwkJbWluc3ogPSBvZmZz ZXRvZmVuZChzdHJ1Y3QgdmZpb19kbWFidWZfbWdyX2NyZWF0ZV9kbWFidWYsIGZkKTsKKwkJaWYg KGNvcHlfZnJvbV91c2VyKCZkbWFidWYsICh2b2lkIF9fdXNlciAqKWFyZywgbWluc3opKQorCQkJ cmV0dXJuIC1FRkFVTFQ7CisJCWlmIChkbWFidWYuYXJnc3ogPCBtaW5zeiB8fCBkbWFidWYuZmxh Z3MgIT0gMCkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCXJldCA9IGludGVsX2d2dF9vcHMtPnZn cHVfY3JlYXRlX2RtYWJ1Zih2Z3B1LCAmZG1hYnVmKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJcmV0 dXJuIHJldDsKKworCQlyZXR1cm4gY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKWFyZywgJmRt YWJ1ZiwgbWluc3opID8KKwkJCQkJCQkJLUVGQVVMVCA6IDA7CisJfSBlbHNlCisJCWd2dF92Z3B1 X2VycigidW5zdXBwb3J0ZWQgZG1hYnVmIG1nciBmZCBvcGVyYXRpb25cbiIpOworCisJcmV0dXJu IC1FSU5WQUw7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGludGVs X3ZncHVfZG1hYnVmX21ncl9mZF9vcHMgPSB7CisJLnJlbGVhc2UgICAgICAgID0gaW50ZWxfdmdw dV9kbWFidWZfbWdyX2ZkX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsID0gaW50ZWxfdmdwdV9k bWFidWZfbWdyX2ZkX2lvY3RsLAorCS5tbWFwICAgICAgICAgICA9IGludGVsX3ZncHVfZG1hYnVm X21ncl9mZF9tbWFwLAorCS5sbHNlZWsgICAgICAgICA9IG5vb3BfbGxzZWVrLAorfTsKIHN0YXRp YyBpbnQgaW50ZWxfdmdwdV9jcmVhdGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBtZGV2 X2RldmljZSAqbWRldikKIHsKIAlzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSA9IE5VTEw7CkBAIC01 MzAsNiArNjIzLDcgQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X2NyZWF0ZShzdHJ1Y3Qga29iamVj dCAqa29iaiwgc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KQogCXN0cnVjdCBkZXZpY2UgKnBkZXY7 CiAJdm9pZCAqZ3Z0OwogCWludCByZXQ7CisJc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2U7CiAK IAlwZGV2ID0gbWRldl9wYXJlbnRfZGV2KG1kZXYpOwogCWd2dCA9IGtkZXZfdG9faTkxNShwZGV2 KS0+Z3Z0OwpAQCAtNTU0LDYgKzY0OCwxNCBAQCBzdGF0aWMgaW50IGludGVsX3ZncHVfY3JlYXRl KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpCiAJdmdwdS0+ dmRldi5tZGV2ID0gbWRldjsKIAltZGV2X3NldF9kcnZkYXRhKG1kZXYsIHZncHUpOwogCisJZGV2 aWNlID0gdmZpb19kZXZpY2VfZ2V0X2Zyb21fZGV2KG1kZXZfZGV2KG1kZXYpKTsKKwlpZiAoZGV2 aWNlID09IE5VTEwpIHsKKwkJZ3Z0X3ZncHVfZXJyKCJnZXQgdmZpbyBkZXZpY2UgZmFpbGVkXG4i KTsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJZ290byBvdXQ7CisJfQorCXZncHUtPnZkZXYudmZpb19k ZXZpY2UgPSBkZXZpY2U7CisKIAlndnRfZGJnX2NvcmUoImludGVsX3ZncHVfY3JlYXRlIHN1Y2Nl ZWRlZCBmb3IgbWRldjogJXNcbiIsCiAJCSAgICAgZGV2X25hbWUobWRldl9kZXYobWRldikpKTsK IAlyZXQgPSAwOwpAQCAtMTI0OSw2ICsxMzUxLDM2IEBAIHN0YXRpYyBsb25nIGludGVsX3ZncHVf aW9jdGwoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1bnNpZ25lZCBpbnQgY21kLAogCX0gZWxz ZSBpZiAoY21kID09IFZGSU9fREVWSUNFX1JFU0VUKSB7CiAJCWludGVsX2d2dF9vcHMtPnZncHVf cmVzZXQodmdwdSk7CiAJCXJldHVybiAwOworCX0gZWxzZSBpZiAoY21kID09IFZGSU9fREVWSUNF X0dFVF9GRCkgeworCQlpbnQgZmQ7CisJCXUzMiB0eXBlOworCQlpbnQgcmV0OworCisJCWlmIChj b3B5X2Zyb21fdXNlcigmdHlwZSwgKHZvaWQgX191c2VyICopYXJnLCBzaXplb2YodHlwZSkpKQor CQkJcmV0dXJuIC1FSU5WQUw7CisJCWlmICh0eXBlICE9IFZGSU9fREVWSUNFX0RNQUJVRl9NR1Jf RkQpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlpZiAoYXRvbWljX3JlYWQoJnZncHUtPm1ncl9m ZF9vcGVuZWQpKSB7CisJCQlndnRfdmdwdV9lcnIoIm1nciBmZCBhbHJlYWR5IG9wZW5lZFxuIik7 CisJCQlyZXR1cm4gLUVQRVJNOworCQl9CisKKwkJcmV0ID0ga3ZtZ3RfZ2V0X3ZmaW9fZGV2aWNl KHZncHUpOworCQlpZiAocmV0ICE9IDApCisJCQlyZXR1cm4gcmV0OworCisJCWZkID0gYW5vbl9p bm9kZV9nZXRmZCgiaW50ZWwtdmdwdS1kbWFidWYtbWdyLWZkIiwKKwkJCSZpbnRlbF92Z3B1X2Rt YWJ1Zl9tZ3JfZmRfb3BzLAorCQkJdmdwdSwgT19SRFdSIHwgT19DTE9FWEVDKTsKKwkJaWYgKGZk IDwgMCkgeworCQkJa3ZtZ3RfcHV0X3ZmaW9fZGV2aWNlKHZncHUpOworCQkJZ3Z0X3ZncHVfZXJy KCJjcmVhdGUgZG1hYnVmIG1nciBmZCBmYWlsZWRcbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJ CX0KKwkJYXRvbWljX2NtcHhjaGcoJnZncHUtPm1ncl9mZF9vcGVuZWQsIDAsIDEpOworCisJCXJl dHVybiBmZDsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTE0NzAsNiArMTYwMiw3IEBAIHN0YXRpYyBp bnQga3ZtZ3RfZ3Vlc3RfaW5pdChzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpCiAKIAlrdm1ndF9w cm90ZWN0X3RhYmxlX2luaXQoaW5mbyk7CiAJZ3Z0X2NhY2hlX2luaXQodmdwdSk7CisJbXV0ZXhf aW5pdCgmdmdwdS0+ZG1hYnVmX2xpc3RfbG9jayk7CiAKIAlpbmZvLT50cmFja19ub2RlLnRyYWNr X3dyaXRlID0ga3ZtZ3RfcGFnZV90cmFja193cml0ZTsKIAlpbmZvLT50cmFja19ub2RlLnRyYWNr X2ZsdXNoX3Nsb3QgPSBrdm1ndF9wYWdlX3RyYWNrX2ZsdXNoX3Nsb3Q7CkBAIC0xNjEyLDYgKzE3 NDUsOSBAQCBzdHJ1Y3QgaW50ZWxfZ3Z0X21wdCBrdm1ndF9tcHQgPSB7CiAJLndyaXRlX2dwYSA9 IGt2bWd0X3dyaXRlX2dwYSwKIAkuZ2ZuX3RvX21mbiA9IGt2bWd0X2dmbl90b19wZm4sCiAJLnNl dF9vcHJlZ2lvbiA9IGt2bWd0X3NldF9vcHJlZ2lvbiwKKwkuZ2V0X3ZmaW9fZGV2aWNlID0ga3Zt Z3RfZ2V0X3ZmaW9fZGV2aWNlLAorCS5wdXRfdmZpb19kZXZpY2UgPSBrdm1ndF9wdXRfdmZpb19k ZXZpY2UsCisKIH07CiBFWFBPUlRfU1lNQk9MX0dQTChrdm1ndF9tcHQpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbXB0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvbXB0LmgKaW5kZXggYWI3MTMwMC4uMTJkYWJmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L21wdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaApA QCAtMzA4LDQgKzMwOCwzNCBAQCBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9ndnRfaHlwZXJ2aXNv cl9zZXRfb3ByZWdpb24oc3RydWN0IGludGVsX3ZncHUgKnZncHUpCiAJcmV0dXJuIGludGVsX2d2 dF9ob3N0Lm1wdC0+c2V0X29wcmVnaW9uKHZncHUpOwogfQogCisvKioKKyAqIGludGVsX2d2dF9o eXBlcnZpc29yX2dldF92ZmlvX2RldmljZSAtIGluY3JlYXNlIHZmaW8gZGV2aWNlIHJlZiBjb3Vu dAorICogQHZncHU6IGEgdkdQVQorICoKKyAqIFJldHVybnM6CisgKiBaZXJvIG9uIHN1Y2Nlc3Ms IG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgZmFpbGVkLgorICovCitzdGF0aWMgaW5saW5lIGludCBp bnRlbF9ndnRfaHlwZXJ2aXNvcl9nZXRfdmZpb19kZXZpY2Uoc3RydWN0IGludGVsX3ZncHUgKnZn cHUpCit7CisJaWYgKCFpbnRlbF9ndnRfaG9zdC5tcHQtPmdldF92ZmlvX2RldmljZSkKKwkJcmV0 dXJuIDA7CisKKwlyZXR1cm4gaW50ZWxfZ3Z0X2hvc3QubXB0LT5nZXRfdmZpb19kZXZpY2Uodmdw dSk7Cit9CisKKy8qKgorICogaW50ZWxfZ3Z0X2h5cGVydmlzb3JfcHV0X3ZmaW9fZGV2aWNlIC0g ZGVjcmVhc2UgdmZpbyBkZXZpY2UgcmVmIGNvdW50CisgKiBAdmdwdTogYSB2R1BVCisgKgorICog UmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBmYWls ZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndnRfaHlwZXJ2aXNvcl9wdXRfdmZp b19kZXZpY2Uoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCit7CisJaWYgKCFpbnRlbF9ndnRfaG9z dC5tcHQtPnB1dF92ZmlvX2RldmljZSkKKwkJcmV0dXJuOworCisJaW50ZWxfZ3Z0X2hvc3QubXB0 LT5wdXRfdmZpb19kZXZpY2UodmdwdSk7Cit9CisKICNlbmRpZiAvKiBfR1ZUX01QVF9IXyAqLwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC92Z3B1LmMKaW5kZXggOGUxZDUwNC4uODc0NzYxMyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvdmdwdS5jCkBAIC0zNDYsNiArMzQ2LDggQEAgc3RhdGljIHN0cnVjdCBpbnRlbF92Z3B1 ICpfX2ludGVsX2d2dF9jcmVhdGVfdmdwdShzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQsCiAJdmdwdS0+ Z3Z0ID0gZ3Z0OwogCXZncHUtPnNjaGVkX2N0bC53ZWlnaHQgPSBwYXJhbS0+d2VpZ2h0OwogCWJp dG1hcF96ZXJvKHZncHUtPnRsYl9oYW5kbGVfcGVuZGluZywgSTkxNV9OVU1fRU5HSU5FUyk7CisJ SU5JVF9MSVNUX0hFQUQoJnZncHUtPmRtYWJ1Zl9vYmpfbGlzdF9oZWFkKTsKKwlhdG9taWNfc2V0 KCZ2Z3B1LT5tZ3JfZmRfb3BlbmVkLCAwKTsKIAogCWludGVsX3ZncHVfaW5pdF9jZmdfc3BhY2Uo dmdwdSwgcGFyYW0tPnByaW1hcnkpOwogCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==