From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 27/29] drm/i915: gvt: vGPU schedule policy framework Date: Thu, 28 Jan 2016 18:21:49 +0800 Message-ID: <1453976511-27322-28-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 587AE6E7FD for ; Thu, 28 Jan 2016 02:25: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 VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgdkdQVSBzY2hlZHVsZSBwb2xpY3kgZnJhbWV3b3JrLCB3 aXRoIGEgdGltZXIgYmFzZWQKc2NoZWR1bGUgcG9saWN5IG1vZHVsZSBmb3Igbm93CgpTaWduZWQt b2ZmLWJ5OiBaaGkgV2FuZyA8emhpLmEud2FuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L01ha2VmaWxlICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmggICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hh bmRsZXJzLmMgICAgIHwgIDE2ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaW5zdGFuY2Uu YyAgICAgfCAgMTYgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuYyB8 IDI5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L3NjaGVkX3BvbGljeS5oIHwgIDQ4ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3NjaGVkdWxlci5jICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hl ZHVsZXIuaCAgICB8ICAgMyArCiA4IGZpbGVzIGNoYW5nZWQsIDM4NyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3NjaGVkX3BvbGljeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3NjaGVkX3BvbGljeS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCmluZGV4IDQ2Zjcx ZGIuLmRjYWY3MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmls ZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKQEAgLTEsNiArMSw3IEBA CiBHVlRfU09VUkNFIDo9IGd2dC5vIHBhcmFtcy5vIGFwZXJ0dXJlX2dtLm8gbW1pby5vIGhhbmRs ZXJzLm8gaW5zdGFuY2UubyBcCiAJCXRyYWNlX3BvaW50cy5vIGludGVycnVwdC5vIGd0dC5vIGNm Z19zcGFjZS5vIG9wcmVnaW9uLm8gdXRpbGl0eS5vIFwKLQkJZmJfZGVjb2Rlci5vIGRpc3BsYXku byBlZGlkLm8gY29udHJvbC5vIGV4ZWNsaXN0Lm8gc2NoZWR1bGVyLm8KKwkJZmJfZGVjb2Rlci5v IGRpc3BsYXkubyBlZGlkLm8gY29udHJvbC5vIGV4ZWNsaXN0Lm8gc2NoZWR1bGVyLm8gXAorCQlz Y2hlZF9wb2xpY3kubwogCiBjY2ZsYWdzLXkJCQkrPSAtSSQoc3JjKSAtSSQoc3JjKS8uLiAtV2Fs bCAtV2Vycm9yIC1Xbm8tdW51c2VkLWZ1bmN0aW9uCiBpOTE1X2d2dC15CQkJOj0gJChHVlRfU09V UkNFKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCmluZGV4IDgzZjEwMTcuLjU3ODhiYjcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJkaXNwbGF5LmgiCiAj aW5jbHVkZSAiZXhlY2xpc3QuaCIKICNpbmNsdWRlICJzY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJz Y2hlZF9wb2xpY3kuaCIKIAogI2RlZmluZSBHVlRfTUFYX1ZHUFUgOAogCkBAIC0xNjAsNiArMTYx LDcgQEAgc3RydWN0IHZndF9kZXZpY2UgewogCXVuc2lnbmVkIGxvbmcgbGFzdF9yZXNldF90aW1l OwogCWF0b21pY190IGNyYXNoaW5nOwogCWJvb2wgd2Fybl91bnRyYWNrOworCXZvaWQgKnNjaGVk X2RhdGE7CiB9OwogCiBzdHJ1Y3QgZ3Z0X2dtX2FsbG9jYXRvciB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9oYW5kbGVycy5jCmluZGV4IDM1NmNmYzQuLmEwNGQwY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9oYW5kbGVycy5jCkBAIC0yNTksNiArMjU5LDIyIEBAIHN0YXRpYyBib29sIGRweV9yZWdfbW1p b19yZWFkXzMoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgdW5zaWduZWQgaW50IG9mZnNldCwKIHN0 YXRpYyBib29sIHJpbmdfbW9kZV93cml0ZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LCB1bnNpZ25l ZCBpbnQgb2ZmLAogCQl2b2lkICpwX2RhdGEsIHVuc2lnbmVkIGludCBieXRlcykKIHsKKwl1MzIg ZGF0YSA9ICoodTMyICopcF9kYXRhOworCWludCByaW5nX2lkID0gZ3Z0X3JlbmRlcl9tbWlvX3Rv X3JpbmdfaWQob2ZmKTsKKwlib29sIGVuYWJsZV9leGVjbGlzdDsKKworCWlmIChfTUFTS0VEX0JJ VF9FTkFCTEUoR0ZYX1JVTl9MSVNUX0VOQUJMRSkKKwkJCXx8IF9NQVNLRURfQklUX0RJU0FCTEUo R0ZYX1JVTl9MSVNUX0VOQUJMRSkpIHsKKwkJZW5hYmxlX2V4ZWNsaXN0ID0gISEoZGF0YSAmIEdG WF9SVU5fTElTVF9FTkFCTEUpOworCisJCWd2dF9pbmZvKCJFWEVDTElTVCAlcyBvbiByaW5nICVk LiIsCisJCQkJKGVuYWJsZV9leGVjbGlzdCA/ICJlbmFibGluZyIgOiAiZGlzYWJsaW5nIiksCisJ CQkJcmluZ19pZCk7CisKKwkJaWYgKGVuYWJsZV9leGVjbGlzdCkKKwkJCWd2dF9zdGFydF9zY2hl ZHVsZSh2Z3QpOworCX0KKwogCXJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvaW5zdGFuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9p bnN0YW5jZS5jCmluZGV4IDk1OWM4ZWUuLjBiN2ViOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9pbnN0YW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9p bnN0YW5jZS5jCkBAIC0xOTMsOSArMTkzLDIyIEBAIHZvaWQgZ3Z0X2Rlc3Ryb3lfaW5zdGFuY2Uo c3RydWN0IHZndF9kZXZpY2UgKnZndCkKIAlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IHZndC0+ cGRldjsKIAogCW11dGV4X2xvY2soJnBkZXYtPmxvY2spOworCisJZ3Z0X3N0b3Bfc2NoZWR1bGUo dmd0KTsKKworCW11dGV4X3VubG9jaygmcGRldi0+bG9jayk7CisKKwlpZiAoYXRvbWljX3JlYWQo JnZndC0+cnVubmluZ193b3JrbG9hZF9udW0pKQorCQlndnRfd2FpdF9pbnN0YW5jZV9pZGxlKHZn dCk7CisKKwltdXRleF9sb2NrKCZwZGV2LT5sb2NrKTsKKworCWd2dF9jbGVhbl9pbnN0YW5jZV9z Y2hlZF9wb2xpY3kodmd0KTsKKwogCWd2dF9zZXRfaW5zdGFuY2Vfb2ZmbGluZSh2Z3QpOwogCWlm ICh2Z3QtPmlkICE9IC0xKQogCQlpZHJfcmVtb3ZlKCZwZGV2LT5pbnN0YW5jZV9pZHIsIHZndC0+ aWQpOworCiAJbXV0ZXhfdW5sb2NrKCZwZGV2LT5sb2NrKTsKIAogCWh5cGVydmlzb3JfaHZtX2V4 aXQodmd0KTsKQEAgLTIzNCw2ICsyNDcsOSBAQCBzdHJ1Y3Qgdmd0X2RldmljZSAqZ3Z0X2NyZWF0 ZV9pbnN0YW5jZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKIAl2Z3QtPmlkID0gaWQ7CiAJdmd0 LT5wZGV2ID0gcGRldjsKIAorCWlmICghZ3Z0X2luaXRfaW5zdGFuY2Vfc2NoZWRfcG9saWN5KHZn dCkpCisJCWdvdG8gZXJyOworCiAJdmd0LT53YXJuX3VudHJhY2sgPSB0cnVlOwogCiAJaWYgKCFj cmVhdGVfdmlydHVhbF9kZXZpY2Vfc3RhdGUodmd0LCBpbmZvKSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9zY2hlZF9wb2xpY3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x NGY0MzAxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVk X3BvbGljeS5jCkBAIC0wLDAgKzEsMjk1IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAx NiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImd2dC5oIgor CitzdGF0aWMgYm9vbCBpbnN0YW5jZV9oYXNfcGVuZGluZ193b3JrbG9hZChzdHJ1Y3Qgdmd0X2Rl dmljZSAqdmd0KQoreworCXN0cnVjdCBndnRfdmlydHVhbF9leGVjbGlzdF9pbmZvICppbmZvOwor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKKwkJaW5m byA9ICZ2Z3QtPnZpcnR1YWxfZXhlY2xpc3RfaW5mb1tpXTsKKwkJaWYgKCFsaXN0X2VtcHR5KHdv cmtsb2FkX3FfaGVhZCh2Z3QsIGkpKSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKworc3RhdGljIHZvaWQgdHJ5X3RvX3NjaGVkdWxlX25leHRfaW5zdGFuY2Uoc3Ry dWN0IHBndF9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGd2dF93b3JrbG9hZF9zY2hlZHVsZXIg KnNjaGVkdWxlciA9CisJCQkmcGRldi0+d29ya2xvYWRfc2NoZWR1bGVyOworCWludCBpOworCisJ Lyogbm8gdGFyZ2V0IHRvIHNjaGVkdWxlICovCisJaWYgKCFzY2hlZHVsZXItPm5leHRfaW5zdGFu Y2UpCisJCXJldHVybjsKKworCWd2dF9kYmdfc2NoZWQoInRyeSB0byBzY2hlZHVsZSBuZXh0IGlu c3RhbmNlICVkIiwKKwkJCXNjaGVkdWxlci0+bmV4dF9pbnN0YW5jZS0+aWQpOworCisJLyoKKwkg KiBhZnRlciB0aGUgZmxhZyBpcyBzZXQsIHdvcmtsb2FkIGRpc3BhdGNoIHRocmVhZCB3aWxsCisJ ICogc3RvcCBkaXNwYXRjaGluZyB3b3JrbG9hZCBmb3IgY3VycmVudCBpbnN0YW5jZQorCSAqLwor CXNjaGVkdWxlci0+bmVlZF9yZXNjaGVkdWxlID0gdHJ1ZTsKKworCS8qIHN0aWxsIGhhdmUgdW5j b21wbGV0ZWQgd29ya2xvYWQ/ICovCisJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBp KyspIHsKKwkJaWYgKHNjaGVkdWxlci0+Y3VycmVudF93b3JrbG9hZFtpXSkgeworCQkJZ3Z0X2Ri Z19zY2hlZCgic3RpbGwgaGF2ZSBydW5uaW5nIHdvcmtsb2FkIik7CisJCQlyZXR1cm47CisJCX0K Kwl9CisKKwlndnRfZGJnX3NjaGVkKCJzd2l0Y2ggdG8gbmV4dCBpbnN0YW5jZSAlZCIsCisJCQlz Y2hlZHVsZXItPm5leHRfaW5zdGFuY2UtPmlkKTsKKworCS8qIHN3aXRjaCBjdXJyZW50IGluc3Rh bmNlICovCisJc2NoZWR1bGVyLT5jdXJyZW50X2luc3RhbmNlID0gc2NoZWR1bGVyLT5uZXh0X2lu c3RhbmNlOworCXNjaGVkdWxlci0+bmV4dF9pbnN0YW5jZSA9IE5VTEw7CisKKwkvKiB3YWtlIHVw IHdvcmtsb2FkIGRpc3BhdGNoIHRocmVhZCAqLworCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9S SU5HUzsgaSsrKQorCQl3YWtlX3VwKCZzY2hlZHVsZXItPndhaXRxW2ldKTsKKworCXNjaGVkdWxl ci0+bmVlZF9yZXNjaGVkdWxlID0gZmFsc2U7Cit9CisKK3N0cnVjdCB0YnNfaW5zdGFuY2VfZGF0 YSB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCB2Z3RfZGV2aWNlICp2Z3Q7CisJ LyogcHV0IHNvbWUgcGVyLWluc3RhbmNlIHNjaGVkIHN0YXRzIGhlcmUqLworfTsKKworc3RydWN0 IHRic19zY2hlZF9kYXRhIHsKKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldjsKKwlzdHJ1Y3QgZGVs YXllZF93b3JrIHdvcms7CisJdW5zaWduZWQgbG9uZyBwZXJpb2Q7CisJYXRvbWljX3QgcnVucV9p bnN0YW5jZV9udW07CisJc3RydWN0IGxpc3RfaGVhZCBydW5xX2hlYWQ7Cit9OworCisjZGVmaW5l IEdWVF9ERUZBVUxUX1RJTUVfU0xJQ0UgKDE2ICogSFogLyAxMDAwKQorCitzdGF0aWMgdm9pZCB0 YnNfc2NoZWRfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IHRic19z Y2hlZF9kYXRhICpzY2hlZF9kYXRhID0gY29udGFpbmVyX29mKHdvcmssCisJCQlzdHJ1Y3QgdGJz X3NjaGVkX2RhdGEsIHdvcmsud29yayk7CisJc3RydWN0IHRic19pbnN0YW5jZV9kYXRhICppbnN0 YW5jZV9kYXRhOworCisJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSBzY2hlZF9kYXRhLT5wZGV2 OworCXN0cnVjdCBndnRfd29ya2xvYWRfc2NoZWR1bGVyICpzY2hlZHVsZXIgPQorCQkJJnBkZXYt Pndvcmtsb2FkX3NjaGVkdWxlcjsKKworCXN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QgPSBOVUxMOwor CXN0cnVjdCBsaXN0X2hlYWQgKnBvcywgKmhlYWQ7CisKKwltdXRleF9sb2NrKCZwZGV2LT5sb2Nr KTsKKworCS8qIG5vIGluc3RhbmNlIG9yIGhhcyBhbHJlYWR5IGhhZCBhIHRhcmdldCAqLworCWlm IChsaXN0X2VtcHR5KCZzY2hlZF9kYXRhLT5ydW5xX2hlYWQpfHwgc2NoZWR1bGVyLT5uZXh0X2lu c3RhbmNlKQorCQlnb3RvIG91dDsKKworCWlmIChzY2hlZHVsZXItPmN1cnJlbnRfaW5zdGFuY2Up IHsKKwkJaW5zdGFuY2VfZGF0YSA9IHNjaGVkdWxlci0+Y3VycmVudF9pbnN0YW5jZS0+c2NoZWRf ZGF0YTsKKwkJaGVhZCA9ICZpbnN0YW5jZV9kYXRhLT5saXN0OworCX0gZWxzZSB7CisJCWd2dF9k Ymdfc2NoZWQoIm5vIGN1cnJlbnQgaW5zdGFuY2Ugc2VhcmNoIGZyb20gcSBoZWFkIik7CisJCWhl YWQgPSAmc2NoZWRfZGF0YS0+cnVucV9oZWFkOworCX0KKworCS8qIHNlYXJjaCBhIGluc3RhbmNl IHdpdGggcGVuZGluZyB3b3JrbG9hZCAqLworCWxpc3RfZm9yX2VhY2gocG9zLCBoZWFkKSB7CisJ CWlmIChwb3MgPT0gJnNjaGVkX2RhdGEtPnJ1bnFfaGVhZCkKKwkJCWNvbnRpbnVlOworCisJCWlu c3RhbmNlX2RhdGEgPSBjb250YWluZXJfb2YocG9zLCBzdHJ1Y3QgdGJzX2luc3RhbmNlX2RhdGEs IGxpc3QpOworCQlpZiAoIWluc3RhbmNlX2hhc19wZW5kaW5nX3dvcmtsb2FkKGluc3RhbmNlX2Rh dGEtPnZndCkpCisJCQljb250aW51ZTsKKworCQl2Z3QgPSBpbnN0YW5jZV9kYXRhLT52Z3Q7CisJ CWJyZWFrOworCX0KKworCWlmICh2Z3QpIHsKKwkJc2NoZWR1bGVyLT5uZXh0X2luc3RhbmNlID0g dmd0OworCQlndnRfZGJnX3NjaGVkKCJwaWNrIG5leHQgaW5zdGFuY2UgJWQiLCB2Z3QtPmlkKTsK Kwl9CitvdXQ6CisJaWYgKHNjaGVkdWxlci0+bmV4dF9pbnN0YW5jZSkgeworCQlndnRfZGJnX3Nj aGVkKCJ0cnkgdG8gc2NoZWR1bGUgbmV4dCBpbnN0YW5jZSAlZCIsCisJCQkJc2NoZWR1bGVyLT5u ZXh0X2luc3RhbmNlLT5pZCk7CisJCXRyeV90b19zY2hlZHVsZV9uZXh0X2luc3RhbmNlKHBkZXYp OworCX0KKworCS8qCisJICogc3RpbGwgaGF2ZSBpbnN0YW5jZSBvbiBydW5xCisJICogb3IgbGFz dCBzY2hlZHVsZSBoYXZlbid0IGZpbmlzaGVkIGR1ZSB0byBydW5uaW5nIHdvcmtsb2FkCisJICov CisJaWYgKGF0b21pY19yZWFkKCZzY2hlZF9kYXRhLT5ydW5xX2luc3RhbmNlX251bSkgfHwgc2No ZWR1bGVyLT5uZXh0X2luc3RhbmNlKQorCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnNjaGVkX2Rh dGEtPndvcmssIHNjaGVkX2RhdGEtPnBlcmlvZCk7CisKKwltdXRleF91bmxvY2soJnBkZXYtPmxv Y2spOworfQorCitzdGF0aWMgYm9vbCB0YnNfc2NoZWRfaW5pdChzdHJ1Y3QgcGd0X2RldmljZSAq cGRldikKK3sKKwlzdHJ1Y3QgZ3Z0X3dvcmtsb2FkX3NjaGVkdWxlciAqc2NoZWR1bGVyID0KKwkJ JnBkZXYtPndvcmtsb2FkX3NjaGVkdWxlcjsKKworCXN0cnVjdCB0YnNfc2NoZWRfZGF0YSAqZGF0 YTsKKworCWRhdGEgPSBremFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOworCWlmICgh ZGF0YSkgeworCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9jYXRlIHNjaGVkIGRhdGEiKTsKKwkJcmV0 dXJuIGZhbHNlOworCX0KKworCUlOSVRfTElTVF9IRUFEKCZkYXRhLT5ydW5xX2hlYWQpOworCUlO SVRfREVMQVlFRF9XT1JLKCZkYXRhLT53b3JrLCB0YnNfc2NoZWRfZnVuYyk7CisJZGF0YS0+cGVy aW9kID0gR1ZUX0RFRkFVTFRfVElNRV9TTElDRTsKKwlkYXRhLT5wZGV2ID0gcGRldjsKKworCWF0 b21pY19zZXQoJmRhdGEtPnJ1bnFfaW5zdGFuY2VfbnVtLCAwKTsKKwlzY2hlZHVsZXItPnNjaGVk X2RhdGEgPSBkYXRhOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHRic19zY2hl ZF9jbGVhbihzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZ3Z0X3dvcmtsb2Fk X3NjaGVkdWxlciAqc2NoZWR1bGVyID0KKwkJJnBkZXYtPndvcmtsb2FkX3NjaGVkdWxlcjsKKwlz dHJ1Y3QgdGJzX3NjaGVkX2RhdGEgKmRhdGEgPSBzY2hlZHVsZXItPnNjaGVkX2RhdGE7CisKKwlj YW5jZWxfZGVsYXllZF93b3JrKCZkYXRhLT53b3JrKTsKKwlrZnJlZShkYXRhKTsKKwlzY2hlZHVs ZXItPnNjaGVkX2RhdGEgPSBOVUxMOworfQorCitzdGF0aWMgYm9vbCB0YnNfc2NoZWRfaW5zdGFu Y2VfaW5pdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCXN0cnVjdCB0YnNfaW5zdGFuY2Vf ZGF0YSAqZGF0YTsKKworCWRhdGEgPSBremFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwp OworCWlmICghZGF0YSkgeworCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9jYXRlIG1lbW9yeSIpOwor CQlyZXR1cm4gZmFsc2U7CisJfQorCisJZGF0YS0+dmd0ID0gdmd0OworCUlOSVRfTElTVF9IRUFE KCZkYXRhLT5saXN0KTsKKworCXZndC0+c2NoZWRfZGF0YSA9IGRhdGE7CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKworc3RhdGljIHZvaWQgdGJzX3NjaGVkX2luc3RhbmNlX2NsZWFuKHN0cnVjdCB2Z3Rf ZGV2aWNlICp2Z3QpCit7CisJa2ZyZWUodmd0LT5zY2hlZF9kYXRhKTsKKwl2Z3QtPnNjaGVkX2Rh dGEgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCB0YnNfc2NoZWRfc3RhcnRfc2NoZWR1bGUoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCkKK3sKKwlzdHJ1Y3QgdGJzX3NjaGVkX2RhdGEgKnNjaGVkX2Rh dGEgPSB2Z3QtPnBkZXYtPndvcmtsb2FkX3NjaGVkdWxlci5zY2hlZF9kYXRhOworCXN0cnVjdCB0 YnNfaW5zdGFuY2VfZGF0YSAqaW5zdGFuY2VfZGF0YSA9IHZndC0+c2NoZWRfZGF0YTsKKworCWlm ICghbGlzdF9lbXB0eSgmaW5zdGFuY2VfZGF0YS0+bGlzdCkpCisJCXJldHVybjsKKworCWxpc3Rf YWRkX3RhaWwoJmluc3RhbmNlX2RhdGEtPmxpc3QsICZzY2hlZF9kYXRhLT5ydW5xX2hlYWQpOwor CWF0b21pY19pbmMoJnNjaGVkX2RhdGEtPnJ1bnFfaW5zdGFuY2VfbnVtKTsKKworCXNjaGVkdWxl X2RlbGF5ZWRfd29yaygmc2NoZWRfZGF0YS0+d29yaywgc2NoZWRfZGF0YS0+cGVyaW9kKTsKK30K Kworc3RhdGljIHZvaWQgdGJzX3NjaGVkX3N0b3Bfc2NoZWR1bGUoc3RydWN0IHZndF9kZXZpY2Ug KnZndCkKK3sKKwlzdHJ1Y3QgdGJzX3NjaGVkX2RhdGEgKnNjaGVkX2RhdGEgPSB2Z3QtPnBkZXYt Pndvcmtsb2FkX3NjaGVkdWxlci5zY2hlZF9kYXRhOworCXN0cnVjdCB0YnNfaW5zdGFuY2VfZGF0 YSAqaW5zdGFuY2VfZGF0YSA9IHZndC0+c2NoZWRfZGF0YTsKKworCWF0b21pY19kZWMoJnNjaGVk X2RhdGEtPnJ1bnFfaW5zdGFuY2VfbnVtKTsKKwlsaXN0X2RlbF9pbml0KCZpbnN0YW5jZV9kYXRh LT5saXN0KTsKK30KKworc3RydWN0IGd2dF9zY2hlZHVsZV9wb2xpY3lfb3BzIHRic19zY2hlZHVs ZV9vcHMgPSB7CisJLmluaXQgPSB0YnNfc2NoZWRfaW5pdCwKKwkuY2xlYW4gPSB0YnNfc2NoZWRf Y2xlYW4sCisJLmluc3RhbmNlX2luaXQgPSB0YnNfc2NoZWRfaW5zdGFuY2VfaW5pdCwKKwkuaW5z dGFuY2VfY2xlYW4gPSB0YnNfc2NoZWRfaW5zdGFuY2VfY2xlYW4sCisJLnN0YXJ0X3NjaGVkdWxl ID0gdGJzX3NjaGVkX3N0YXJ0X3NjaGVkdWxlLAorCS5zdG9wX3NjaGVkdWxlID0gdGJzX3NjaGVk X3N0b3Bfc2NoZWR1bGUsCit9OworCitib29sIGd2dF9pbml0X3NjaGVkX3BvbGljeShzdHJ1Y3Qg cGd0X2RldmljZSAqcGRldikKK3sKKwlwZGV2LT53b3JrbG9hZF9zY2hlZHVsZXIuc2NoZWRfb3Bz ID0gJnRic19zY2hlZHVsZV9vcHM7CisKKwlyZXR1cm4gcGRldi0+d29ya2xvYWRfc2NoZWR1bGVy LnNjaGVkX29wcy0+aW5pdChwZGV2KTsKK30KKwordm9pZCBndnRfY2xlYW5fc2NoZWRfcG9saWN5 KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCXBkZXYtPndvcmtsb2FkX3NjaGVkdWxlci5z Y2hlZF9vcHMtPmNsZWFuKHBkZXYpOworfQorCitib29sIGd2dF9pbml0X2luc3RhbmNlX3NjaGVk X3BvbGljeShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCXJldHVybiB2Z3QtPnBkZXYtPndv cmtsb2FkX3NjaGVkdWxlci5zY2hlZF9vcHMtPmluc3RhbmNlX2luaXQodmd0KTsKK30KKwordm9p ZCBndnRfY2xlYW5faW5zdGFuY2Vfc2NoZWRfcG9saWN5KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3Qp Cit7CisJdmd0LT5wZGV2LT53b3JrbG9hZF9zY2hlZHVsZXIuc2NoZWRfb3BzLT5pbnN0YW5jZV9j bGVhbih2Z3QpOworfQorCit2b2lkIGd2dF9zdGFydF9zY2hlZHVsZShzdHJ1Y3Qgdmd0X2Rldmlj ZSAqdmd0KQoreworCWd2dF9pbmZvKCJbdmd0ICVkXSBzdGFydCBzY2hlZHVsZSIsIHZndC0+aWQp OworCisJdmd0LT5wZGV2LT53b3JrbG9hZF9zY2hlZHVsZXIuc2NoZWRfb3BzLT5zdGFydF9zY2hl ZHVsZSh2Z3QpOworfQorCit2b2lkIGd2dF9zdG9wX3NjaGVkdWxlKHN0cnVjdCB2Z3RfZGV2aWNl ICp2Z3QpCit7CisJc3RydWN0IGd2dF93b3JrbG9hZF9zY2hlZHVsZXIgKnNjaGVkdWxlciA9CisJ CSZ2Z3QtPnBkZXYtPndvcmtsb2FkX3NjaGVkdWxlcjsKKworCWd2dF9pbmZvKCJbdmd0ICVkXSBz dG9wIHNjaGVkdWxlIiwgdmd0LT5pZCk7CisKKwlzY2hlZHVsZXItPnNjaGVkX29wcy0+c3RvcF9z Y2hlZHVsZSh2Z3QpOworCisJaWYgKHNjaGVkdWxlci0+bmV4dF9pbnN0YW5jZSA9PSB2Z3QpCisJ CXNjaGVkdWxlci0+bmV4dF9pbnN0YW5jZSA9IE5VTEw7CisKKwlpZiAoc2NoZWR1bGVyLT5jdXJy ZW50X2luc3RhbmNlID09IHZndCkgeworCQkvKiBzdG9wIHdvcmtsb2FkIGRpc3BhdGNoaW5nICov CisJCXNjaGVkdWxlci0+bmVlZF9yZXNjaGVkdWxlID0gdHJ1ZTsKKwkJc2NoZWR1bGVyLT5jdXJy ZW50X2luc3RhbmNlID0gTlVMTDsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvc2NoZWRfcG9saWN5LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWRf cG9saWN5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjMTg5OQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuaApA QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO IFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX0dWVF9TQ0hFRF9QT0xJQ1lfXwor I2RlZmluZSBfX0dWVF9TQ0hFRF9QT0xJQ1lfXworCitzdHJ1Y3QgZ3Z0X3NjaGVkdWxlX3BvbGlj eV9vcHMgeworCWJvb2wgKCppbml0KShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldik7CisJdm9pZCAo KmNsZWFuKShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldik7CisJYm9vbCAoKmluc3RhbmNlX2luaXQp KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpOworCXZvaWQgKCppbnN0YW5jZV9jbGVhbikoc3RydWN0 IHZndF9kZXZpY2UgKnZndCk7CisJdm9pZCAoKnN0YXJ0X3NjaGVkdWxlKShzdHJ1Y3Qgdmd0X2Rl dmljZSAqdmd0KTsKKwl2b2lkICgqc3RvcF9zY2hlZHVsZSkoc3RydWN0IHZndF9kZXZpY2UgKnZn dCk7Cit9OworCitib29sIGd2dF9pbml0X3NjaGVkX3BvbGljeShzdHJ1Y3QgcGd0X2RldmljZSAq cGRldik7CisKK3ZvaWQgZ3Z0X2NsZWFuX3NjaGVkX3BvbGljeShzdHJ1Y3QgcGd0X2RldmljZSAq cGRldik7CisKK2Jvb2wgZ3Z0X2luaXRfaW5zdGFuY2Vfc2NoZWRfcG9saWN5KHN0cnVjdCB2Z3Rf ZGV2aWNlICp2Z3QpOworCit2b2lkIGd2dF9jbGVhbl9pbnN0YW5jZV9zY2hlZF9wb2xpY3koc3Ry dWN0IHZndF9kZXZpY2UgKnZndCk7CisKK3ZvaWQgZ3Z0X3N0YXJ0X3NjaGVkdWxlKHN0cnVjdCB2 Z3RfZGV2aWNlICp2Z3QpOworCit2b2lkIGd2dF9zdG9wX3NjaGVkdWxlKHN0cnVjdCB2Z3RfZGV2 aWNlICp2Z3QpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9zY2hlZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYwppbmRl eCBjZGYxNzlmLi5kOGQyZTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv c2NoZWR1bGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCkBA IC00MzQsNiArNDM0LDggQEAgdm9pZCBndnRfY2xlYW5fd29ya2xvYWRfc2NoZWR1bGVyKHN0cnVj dCBwZ3RfZGV2aWNlICpwZGV2KQogCiAJaTkxNV9nZW1fY29udGV4dF91bnJlZmVyZW5jZShzY2hl ZHVsZXItPnNoYWRvd19jdHgpOwogCXNjaGVkdWxlci0+c2hhZG93X2N0eCA9IE5VTEw7CisKKwln dnRfY2xlYW5fc2NoZWRfcG9saWN5KHBkZXYpOwogfQogCiBib29sIGd2dF9pbml0X3dvcmtsb2Fk X3NjaGVkdWxlcihzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKQEAgLTQ3NCw2ICs0NzYsOSBAQCBi b29sIGd2dF9pbml0X3dvcmtsb2FkX3NjaGVkdWxlcihzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikK IAkJfQogCX0KIAorCWlmICghZ3Z0X2luaXRfc2NoZWRfcG9saWN5KHBkZXYpKQorCQlnb3RvIGVy cjsKKwogCXJldHVybiB0cnVlOwogZXJyOgogCWlmIChwYXJhbSkgewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3NjaGVkdWxlci5oCmluZGV4IGM0ZTdmYTIuLjdhOGYxZWIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmgKQEAgLTM1LDYgKzM1LDkgQEAgc3RydWN0IGd2dF93b3JrbG9hZF9z Y2hlZHVsZXIgewogCXdhaXRfcXVldWVfaGVhZF90IHdvcmtsb2FkX2NvbXBsZXRlX3dxOwogCXN0 cnVjdCB0YXNrX3N0cnVjdCAqdGhyZWFkW0k5MTVfTlVNX1JJTkdTXTsKIAl3YWl0X3F1ZXVlX2hl YWRfdCB3YWl0cVtJOTE1X05VTV9SSU5HU107CisKKwl2b2lkICpzY2hlZF9kYXRhOworCXN0cnVj dCBndnRfc2NoZWR1bGVfcG9saWN5X29wcyAqc2NoZWRfb3BzOwogfTsKIAogc3RydWN0IGd2dF93 b3JrbG9hZCB7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK