From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 09/29] drm/i915: gvt: Resource allocator Date: Thu, 28 Jan 2016 18:21:31 +0800 Message-ID: <1453976511-27322-10-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 BA0B86E7F2 for ; Thu, 28 Jan 2016 02:24:06 -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 RnJvbTogWXVsZWkgWmhhbmcgPHl1bGVpLnpoYW5nQGludGVsLmNvbT4KClRoaXMgcGF0Y2ggaW50 cm9kdWNlcyB0aGUgR1ZULWcgcmVzb3VyY2UgYWxsb2NhdG9yLiBVbmRlciB2aXJ0dWFsaXphdGlv bgplbnZpcm9ubWVudCwgR0dUVCBhbmQgZmVuY2VzIGFyZSBwYXJ0aXRpb25lZC4gR0dUVCBtZW1v cnkgc3BhY2UgYW5kIGZlbmNlcwpmb3IgaTkxNSBhcmUgbGltaXRlZC4gT25seSBhIHBhcnQgb2Yg R0dUVCBtZW1vcnkgc3BhY2UgYW5kIGZlbmNlcyBpcyBvd25lZApieSBob3N0LiBUaGUgbGVmdCBy ZXNvdXJjZXMgYXJlIG1hbmFuZ2VkIGJ5IEdWVC1nIHJlc291cmNlIGFsbG9jYXRvcnMuCgpTaWdu ZWQtb2ZmLWJ5OiBZdWxlaSBaaGFuZyA8eXVsZWkuemhhbmdAaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBaaGkgV2FuZyA8emhpLmEud2FuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9hcGVydHVyZV9nbS5jIHwgMjI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgICAgfCAxMDUgKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMgICAgICB8ICAxMiArKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oICAgICAgfCAgIDggKysKIDYgZmlsZXMgY2hhbmdlZCwgMzU0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmls ZQppbmRleCA2OTM1Yjc4Li42NjU1OTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCkBA IC0xLDQgKzEsNCBAQAotR1ZUX1NPVVJDRSA6PSBndnQubyBwYXJhbXMubyBmYl9kZWNvZGVyLm8K K0dWVF9TT1VSQ0UgOj0gZ3Z0Lm8gcGFyYW1zLm8gYXBlcnR1cmVfZ20ubyBmYl9kZWNvZGVyLm8K IAogY2NmbGFncy15CQkJKz0gLUkkKHNyYykgLUkkKHNyYykvLi4gLVdhbGwgLVdlcnJvciAtV25v LXVudXNlZC1mdW5jdGlvbgogaTkxNV9ndnQteQkJCTo9ICQoR1ZUX1NPVVJDRSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2FwZXJ0dXJlX2dtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uN2NiMTVjMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9hcGVydHVyZV9nbS5jCkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIw MTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisg KiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImd2 dC5oIgorCit2b2lkIGluaXRfZ21fYWxsb2NhdG9yKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAor CQl1NjQgc3RhcnQsIHU2NCBzaXplLCBib29sIG1hcHBhYmxlKQoreworCXN0cnVjdCBkcm1fbW0g Km1tID0gbWFwcGFibGUgPworCQkmcGRldi0+Z21fYWxsb2NhdG9yLmxvd19nbSA6ICZwZGV2LT5n bV9hbGxvY2F0b3IuaGlnaF9nbTsKKworCWRybV9tbV9pbml0KG1tLCBzdGFydCwgc2l6ZSk7Cit9 CisKK3ZvaWQgY2xlYW5fZ21fYWxsb2NhdG9yKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQorewor CWlmICghZHJtX21tX2luaXRpYWxpemVkKCZwZGV2LT5nbV9hbGxvY2F0b3IubG93X2dtKQorCQkJ fHwgIWRybV9tbV9pbml0aWFsaXplZCgmcGRldi0+Z21fYWxsb2NhdG9yLmhpZ2hfZ20pKQorCQly ZXR1cm47CisKKwlkcm1fbW1fdGFrZWRvd24oJnBkZXYtPmdtX2FsbG9jYXRvci5sb3dfZ20pOwor CWRybV9tbV90YWtlZG93bigmcGRldi0+Z21fYWxsb2NhdG9yLmhpZ2hfZ20pOworfQorCitzdHJ1 Y3QgZHJtX21tX25vZGUgKmFsbG9jX2dtX25vZGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsIHUz MiBzaXplLCBib29sIG1hcHBhYmxlKQoreworCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZTsKKwlz dHJ1Y3QgZHJtX21tICptbSA9IG1hcHBhYmxlID8KKwkJJnBkZXYtPmdtX2FsbG9jYXRvci5sb3df Z20gOiAmcGRldi0+Z21fYWxsb2NhdG9yLmhpZ2hfZ207CisJaW50IHJldDsKKworCWlmICghZHJt X21tX2luaXRpYWxpemVkKG1tKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlEUk1fREVCVUdfS01TKCJj cmVhdGluZyB2Z3QgJXMgb2JqZWN0OiBzaXplPSV4XG4iLAorCQkJbWFwcGFibGUgPyAibWFwcGFi bGUiIDogInVubWFwcGFibGUiLCBzaXplKTsKKwlpZiAoc2l6ZSA9PSAwKQorCQlyZXR1cm4gTlVM TDsKKworCW5vZGUgPSBremFsbG9jKHNpemVvZigqbm9kZSksIEdGUF9LRVJORUwpOworCWlmICgh bm9kZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXQgPSBkcm1fbW1faW5zZXJ0X25vZGUobW0sIG5v ZGUsIHNpemUsCisJCQlQQUdFX1NJWkUsIERSTV9NTV9TRUFSQ0hfREVGQVVMVCk7CisJaWYgKHJl dCkgeworCQlrZnJlZShub2RlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIG5vZGU7 Cit9CisKK3ZvaWQgZnJlZV9nbV9ub2RlKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSkKK3sKKwlk cm1fbW1fcmVtb3ZlX25vZGUobm9kZSk7CisJa2ZyZWUobm9kZSk7Cit9CisKK3N0YXRpYyBib29s IGNoZWNrX2luc3RhbmNlX2luZm8oc3RydWN0IHZndF9kZXZpY2UgKnZndCwKKwkJc3RydWN0IGd2 dF9pbnN0YW5jZV9pbmZvICppbmZvKQoreworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gdmd0 LT5wZGV2OworCisJaWYgKGd2dF9hcGVydHVyZV9iYXNlKHZndCkpIHsKKwkJZ3Z0X2VycigicmVz b3VyY2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCIpOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJaWYgKCFpbmZvLT5sb3dfZ21fc3ogfHwgIWluZm8tPmhpZ2hfZ21fc3ogfHwgIWluZm8t PmZlbmNlX3N6IHx8CisJCWluZm8tPmxvd19nbV9zeiA+IHBoeXNfYXBlcnR1cmVfc3oocGRldikg fHwKKwkJaW5mby0+aGlnaF9nbV9zeiA+IGdtX3N6KHBkZXYpIC0gcGh5c19hcGVydHVyZV9zeihw ZGV2KSkgeworCQlndnRfZXJyKCJpbnZhbGlkIHJlc291cmNlIGNvbmZpZ3VyYXRpb24iKTsKKwkJ Z3Z0X2VycigiZGVtYW5kIGxvdyBHTSBzaXplICV1IG1heCBsb3cgR00gc2l6ZSAlbGx1IiwKKwkJ CWluZm8tPmxvd19nbV9zeiwgcGh5c19hcGVydHVyZV9zeihwZGV2KSk7CisJCWd2dF9lcnIoImRl bWFuZCBoaWdoIEdNIHNpemUgJXUgbWF4IGhpZ2ggR00gc2l6ZSAlbGx1IiwKKwkJCWluZm8tPmhp Z2hfZ21fc3osIGdtX3N6KHBkZXYpIC0gcGh5c19hcGVydHVyZV9zeihwZGV2KSk7CisJCWd2dF9l cnIoImZlbmNlIHNpemUgJXUiLCBpbmZvLT5mZW5jZV9zeik7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgY2xlYXJfZmVuY2Uoc3RydWN0IHZn dF9kZXZpY2UgKnZndCkKK3sKKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IHZndC0+cGRldjsK KwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBndnRfZmVuY2Vfc3oodmd0KTsgaSsrKQorCQln dnRfbW1pb193cml0ZTY0KHBkZXYsCisJCQlpOTE1X21taW9fcmVnX29mZnNldChGRU5DRV9SRUdf R0VONl9MTyhpICsgZ3Z0X2ZlbmNlX2Jhc2Uodmd0KSkpLCAwKTsKK30KKwordm9pZCBndnRfZnJl ZV9nbV9hbmRfZmVuY2VfcmVzb3VyY2Uoc3RydWN0IHZndF9kZXZpY2UgKnZndCkKK3sKKwlzdHJ1 Y3QgcGd0X2RldmljZSAqcGRldiA9IHZndC0+cGRldjsKKwl1bnNpZ25lZCBsb25nICpmZW5jZV9i aXRtYXAgPSBwZGV2LT5mZW5jZV9iaXRtYXA7CisKKwlpZiAodmd0LT5zdGF0ZS5nbS5ub2RlLmxv d19nbV9ub2RlKSB7CisJCWZyZWVfZ21fbm9kZSh2Z3QtPnN0YXRlLmdtLm5vZGUubG93X2dtX25v ZGUpOworCQl2Z3QtPnN0YXRlLmdtLm5vZGUubG93X2dtX25vZGUgPSBOVUxMOworCX0KKworCWlm ICh2Z3QtPnN0YXRlLmdtLm5vZGUuaGlnaF9nbV9ub2RlKSB7CisJCWZyZWVfZ21fbm9kZSh2Z3Qt PnN0YXRlLmdtLm5vZGUuaGlnaF9nbV9ub2RlKTsKKwkJdmd0LT5zdGF0ZS5nbS5ub2RlLmhpZ2hf Z21fbm9kZSA9IE5VTEw7CisJfQorCisJaWYgKGd2dF9mZW5jZV9zeih2Z3QpICYmIGd2dF9mZW5j ZV9iYXNlKHZndCkpIHsKKwkJYml0bWFwX2NsZWFyKGZlbmNlX2JpdG1hcCwgZ3Z0X2ZlbmNlX2Jh c2Uodmd0KSwgZ3Z0X2ZlbmNlX3N6KHZndCkpOworCQljbGVhcl9mZW5jZSh2Z3QpOworCQlndnRf ZmVuY2Vfc3oodmd0KSA9IGd2dF9mZW5jZV9iYXNlKHZndCkgPSAwOworCX0KK30KKworaW50IGd2 dF9hbGxvY19nbV9hbmRfZmVuY2VfcmVzb3VyY2Uoc3RydWN0IHZndF9kZXZpY2UgKnZndCwKKwlz dHJ1Y3QgZ3Z0X2luc3RhbmNlX2luZm8gKmluZm8pCit7CisJc3RydWN0IHBndF9kZXZpY2UgKnBk ZXYgPSB2Z3QtPnBkZXY7CisJc3RydWN0IGRybV9tbV9ub2RlICpub2RlOworCXVuc2lnbmVkIGxv bmcgKmZlbmNlX2JpdG1hcCA9IHBkZXYtPmZlbmNlX2JpdG1hcDsKKwl1bnNpZ25lZCBsb25nIGZl bmNlX2Jhc2U7CisKKwlpZiAoIWNoZWNrX2luc3RhbmNlX2luZm8odmd0LCBpbmZvKSkgeworCQln dnRfZXJyKCJpbnZhbGlkIHJlc291cmUgY29uZmlndXJhdGlvbiIpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlub2RlID0gYWxsb2NfZ21fbm9kZShwZGV2LCBpbmZvLT5sb3dfZ21fc3ogPDwg MjAsIHRydWUpOworCWlmICghbm9kZSkgeworCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9jYXRlIGxv dyBHTSBzcGFjZSIpOworCQlnb3RvIGVycjsKKwl9CisKKwl2Z3QtPnN0YXRlLmdtLm5vZGUubG93 X2dtX25vZGUgPSBub2RlOworCisJZ3Z0X2FwZXJ0dXJlX2Jhc2Uodmd0KSA9IHBoeXNfYXBlcnR1 cmVfYmFzZSh2Z3QtPnBkZXYpICsgbm9kZS0+c3RhcnQ7CisJZ3Z0X2FwZXJ0dXJlX3N6KHZndCkg PSBpbmZvLT5sb3dfZ21fc3ogPDwgMjA7CisKKwlub2RlID0gYWxsb2NfZ21fbm9kZShwZGV2LCBp bmZvLT5oaWdoX2dtX3N6IDw8IDIwLCBmYWxzZSk7CisJaWYgKCFub2RlKSB7CisJCWd2dF9lcnIo ImZhaWwgdG8gYWxsb2NhdGUgaGlnaCBHTSBzcGFjZSIpOworCQlnb3RvIGVycjsKKwl9CisKKwl2 Z3QtPnN0YXRlLmdtLm5vZGUuaGlnaF9nbV9ub2RlID0gbm9kZTsKKworCWd2dF9oaWRkZW5fZ21f b2Zmc2V0KHZndCkgPSBub2RlLT5zdGFydDsKKwlndnRfZ21fc3oodmd0KSA9IChpbmZvLT5sb3df Z21fc3ogKyBpbmZvLT5oaWdoX2dtX3N6KSA8PCAyMDsKKworCWZlbmNlX2Jhc2UgPSBiaXRtYXBf ZmluZF9uZXh0X3plcm9fYXJlYShmZW5jZV9iaXRtYXAsCisJCQkJR1ZUX0ZFTkNFX0JJVE1BUF9C SVRTLCAwLCBpbmZvLT5mZW5jZV9zeiwgMCk7CisJaWYgKGZlbmNlX2Jhc2UgPj0gR1ZUX01BWF9O VU1fRkVOQ0VTKSB7CisJCWd2dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgZmVuY2UiKTsKKwkJZ290 byBlcnI7CisJfQorCisJZ3Z0X2ZlbmNlX2Jhc2Uodmd0KSA9IGZlbmNlX2Jhc2U7CisJZ3Z0X2Zl bmNlX3N6KHZndCkgPSBpbmZvLT5mZW5jZV9zejsKKworCWJpdG1hcF9zZXQoZmVuY2VfYml0bWFw LCBmZW5jZV9iYXNlLCBpbmZvLT5mZW5jZV9zeik7CisKKwljbGVhcl9mZW5jZSh2Z3QpOworCisJ cmV0dXJuIDA7CitlcnI6CisJZ3Z0X2ZyZWVfZ21fYW5kX2ZlbmNlX3Jlc291cmNlKHZndCk7CisJ cmV0dXJuIC1FTk9NRU07Cit9CisKK3ZvaWQgZ3Z0X2luaXRfcmVzb3VyY2VfYWxsb2NhdG9yKHN0 cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBndnRfZGV2aWNlX2luZm8gKmluZm8g PSAmcGRldi0+ZGV2aWNlX2luZm87CisJaW50IGk7CisJdW5zaWduZWQgbG9uZyAqZmVuY2VfYml0 bWFwID0gcGRldi0+ZmVuY2VfYml0bWFwOworCisJZ3Z0X2luZm8oInRvdGFsIGFwZXJ0dXJlOiAw eCVsbHggYnl0ZXMsIHRvdGFsIEdNIHNwYWNlOiAweCVsbHggYnl0ZXNcbiIsCisJCXBoeXNfYXBl cnR1cmVfc3oocGRldiksIGdtX3N6KHBkZXYpKTsKKworCUFTU0VSVChwaHlzX2FwZXJ0dXJlX3N6 KHBkZXYpICUgKDEgPDwgMjApID09IDApOworCUFTU0VSVChnbV9zeihwZGV2KSAlICgxIDw8IDIw KSA9PSAwKTsKKwlBU1NFUlQocGh5c19hcGVydHVyZV9zeihwZGV2KSA8PSBnbV9zeihwZGV2KSAm JiBnbV9zeihwZGV2KSA8PSBpbmZvLT5tYXhfZ3R0X2dtX3N6KTsKKwlBU1NFUlQoaW5mby0+bWF4 X2d0dF9nbV9zeiA8PSBHVlRfTUFYX0dNX1NJWkUpOworCisJLyogQmFzaWMgbWVtcmFuZ2UgYWxs b2NhdG9yIGZvciB2Z3QgbG93IG1lbW9yeSAqLworCWluaXRfZ21fYWxsb2NhdG9yKHBkZXYsIGd2 dC5kb20wX2xvd19nbV9zeiA8PCAyMCwKKwkJCShwaHlzX2FwZXJ0dXJlX3N6KHBkZXYpIC0gKGd2 dC5kb20wX2xvd19nbV9zeiA8PCAyMCkpLCB0cnVlKTsKKworCS8qIEJhc2ljIG1lbXJhbmdlIGFs bG9jYXRlIGZvciB2Z3QgaGlnaCBtZW1vcnkgKi8KKwlpbml0X2dtX2FsbG9jYXRvcihwZGV2LAor CQkJKHBoeXNfYXBlcnR1cmVfc3oocGRldikgKyAoZ3Z0LmRvbTBfaGlnaF9nbV9zeiA8PCAyMCkp LAorCQkJKGdtX3N6KHBkZXYpIC0gKGd2dC5kb20wX2hpZ2hfZ21fc3ogPDwgMjApKSwgZmFsc2Up OworCisJLyogUmVzZXJ2ZSBmZW5jZSByZWdpb24gZm9yIGRvbTAgKi8KKwliaXRtYXBfc2V0KGZl bmNlX2JpdG1hcCwgMCwgZ3Z0LmRvbTBfZmVuY2Vfc3opOworCisJZm9yIChpID0gMDsgaSA8IGd2 dC5kb20wX2ZlbmNlX3N6OyBpKyspCisJCWd2dF9tbWlvX3dyaXRlNjQocGRldiwgaTkxNV9tbWlv X3JlZ19vZmZzZXQoRkVOQ0VfUkVHX0dFTjZfTE8oaSkpLCAwKTsKK30KKwordm9pZCBndnRfY2xl YW5fcmVzb3VyY2VfYWxsb2NhdG9yKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCWNsZWFu X2dtX2FsbG9jYXRvcihwZGV2KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9ndnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYwppbmRleCAwNDFkMTBm Li5mMzFlOWY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCkBAIC0yMzQsNiArMjM0LDcgQEAgc3Rh dGljIHZvaWQgY2xlYW5fcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKIHsKIAlj bGVhbl9zZXJ2aWNlX3RocmVhZChwZGV2KTsKIAljbGVhbl9pbml0aWFsX21taW9fc3RhdGUocGRl dik7CisJZ3Z0X2NsZWFuX3Jlc291cmNlX2FsbG9jYXRvcihwZGV2KTsKIH0KIAogc3RhdGljIGJv b2wgaW5pdF9wZ3RfZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCkBAIC0yNDYsNiArMjQ3LDggQEAgc3RhdGljIGJvb2wgaW5p dF9wZ3RfZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGUKIAlpZiAoIWluaXRfaW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpKQogCQlnb3RvIGVy cjsKIAorCWd2dF9pbml0X3Jlc291cmNlX2FsbG9jYXRvcihwZGV2KTsKKwogCWlmICghaW5pdF9z ZXJ2aWNlX3RocmVhZChwZGV2KSkKIAkJZ290byBlcnI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaApp bmRleCA2Yzg1YmJhLi5hYTQ4NTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvZ3Z0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC0zNiw2ICsz NiwxMSBAQAogCiAjZGVmaW5lIEdWVF9NQVhfVkdQVSA4CiAKKyNkZWZpbmUgR1ZUX01BWF9HTV9T SVpFCQkoMVVMIDw8IDMyKQorI2RlZmluZSBHVlRfR01fQklUTUFQX0JJVFMJKEdWVF9NQVhfR01f U0laRSA+PiAyMCkKKyNkZWZpbmUgR1ZUX01BWF9OVU1fRkVOQ0VTCTMyCisjZGVmaW5lIEdWVF9G RU5DRV9CSVRNQVBfQklUUwlHVlRfTUFYX05VTV9GRU5DRVMKKwogZW51bSB7CiAJR1ZUX0hZUEVS VklTT1JfVFlQRV9YRU4gPSAwLAogCUdWVF9IWVBFUlZJU09SX1RZUEVfS1ZNLApAQCAtNjIsMTEg KzY3LDM4IEBAIHN0cnVjdCBndnRfZGV2aWNlX2luZm8gewogCXUzMiBnbWFkcl9ieXRlc19pbl9j bWQ7CiB9OwogCitzdHJ1Y3QgZ3Z0X2dtX25vZGUgeworCXN0cnVjdCBkcm1fbW1fbm9kZSAqbG93 X2dtX25vZGU7CisJc3RydWN0IGRybV9tbV9ub2RlICpoaWdoX2dtX25vZGU7Cit9OworCitzdHJ1 Y3QgZ3Z0X3ZpcnR1YWxfZ21fc3RhdGUgeworCXU2NCBhcGVydHVyZV9iYXNlOworCXZvaWQgKmFw ZXJ0dXJlX2Jhc2VfdmE7CisJdTY0IGFwZXJ0dXJlX3N6OworCXU2NCBnbV9zejsKKwl1NjQgYXBl cnR1cmVfb2Zmc2V0OyAgICAgICAgLyogYWRkcmVzcyBmaXggZm9yIHZpc2libGUgR00gKi8KKwl1 NjQgaGlkZGVuX2dtX29mZnNldDsgICAgICAgLyogYWRkcmVzcyBmaXggZm9yIGludmlzaWJsZSBH TSAqLworCWludCBmZW5jZV9iYXNlOworCWludCBmZW5jZV9zejsKKwlzdHJ1Y3QgZ3Z0X2dtX25v ZGUgbm9kZTsKK307CisKK3N0cnVjdCBndnRfdmlydHVhbF9kZXZpY2Vfc3RhdGUgeworCXN0cnVj dCBndnRfdmlydHVhbF9nbV9zdGF0ZSBnbTsKK307CisKIHN0cnVjdCB2Z3RfZGV2aWNlIHsKIAlp bnQgaWQ7CiAJaW50IHZtX2lkOwogCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2OwogCWJvb2wgd2Fy bl91bnRyYWNrOworCXN0cnVjdCBndnRfdmlydHVhbF9kZXZpY2Vfc3RhdGUgc3RhdGU7Cit9Owor CitzdHJ1Y3QgZ3Z0X2dtX2FsbG9jYXRvciB7CisJc3RydWN0IGRybV9tbSBsb3dfZ207CisJc3Ry dWN0IGRybV9tbSBoaWdoX2dtOwogfTsKIAogc3RydWN0IHBndF9kZXZpY2UgewpAQCAtOTMsOCAr MTI1LDgxIEBAIHN0cnVjdCBwZ3RfZGV2aWNlIHsKIAl3YWl0X3F1ZXVlX2hlYWRfdCBzZXJ2aWNl X3RocmVhZF93cTsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnNlcnZpY2VfdGhyZWFkOwogCXVuc2ln bmVkIGxvbmcgc2VydmljZV9yZXF1ZXN0OworCisJLyogMSBiaXQgY29ycmVzcG9uZHMgdG8gMU1C IGluIHRoZSBHTSBzcGFjZSAqLworCURFQ0xBUkVfQklUTUFQKGdtX2JpdG1hcCwgR1ZUX0dNX0JJ VE1BUF9CSVRTKTsKKworCS8qIDEgYml0IGNvcnJlc3BvbmRzIHRvIDEgZmVuY2UgcmVnaXN0ZXIg Ki8KKwlERUNMQVJFX0JJVE1BUChmZW5jZV9iaXRtYXAsIEdWVF9GRU5DRV9CSVRNQVBfQklUUyk7 CisKKwl1NjQgdG90YWxfZ21fc3o7CisJc3RydWN0IGd2dF9nbV9hbGxvY2F0b3IgZ21fYWxsb2Nh dG9yOwogfTsKIAorLyogZGVmaW5pdGlvbnMgZm9yIHBoeXNpY2FsIGFwZXJ0dXJlL0dNIHNwYWNl ICovCisjZGVmaW5lIHBoeXNfYXBlcnR1cmVfc3oocGRldikgICAgICAgICAgKHBkZXYtPmJhcl9z aXplWzFdKQorI2RlZmluZSBwaHlzX2FwZXJ0dXJlX3BhZ2VzKHBkZXYpICAgICAgIChwaHlzX2Fw ZXJ0dXJlX3N6KHBkZXYpID4+IEdUVF9QQUdFX1NISUZUKQorI2RlZmluZSBwaHlzX2FwZXJ0dXJl X2Jhc2UocGRldikgICAgICAgIChwZGV2LT5nbWFkcl9iYXNlKQorI2RlZmluZSBwaHlzX2FwZXJ0 dXJlX3ZiYXNlKHBkZXYpICAgICAgIChwZGV2LT5nbWFkcl92YSkKKworI2RlZmluZSBnbV9zeihw ZGV2KSAgICAgICAgICAgICAgICAgICAgIChwZGV2LT50b3RhbF9nbV9zeikKKyNkZWZpbmUgZ21f YmFzZShwZGV2KSAgICAgICAgICAgICAgICAgICAoMFVMTCkKKyNkZWZpbmUgZ21fcGFnZXMocGRl dikgICAgICAgICAgICAgICAgICAoZ21fc3oocGRldikgPj4gR1RUX1BBR0VfU0hJRlQpCisjZGVm aW5lIGhpZGRlbl9nbV9iYXNlKHBkZXYpICAgICAgICAgICAgKHBoeXNfYXBlcnR1cmVfc3oocGRl dikpCisKKyNkZWZpbmUgYXBlcnR1cmVfMl9nbShwZGV2LCBhZGRyKSAgICAgICAoYWRkciAtIHBo eXNfYXBlcnR1cmVfYmFzZShwZGV2KSkKKyNkZWZpbmUgdl9hcGVydHVyZShwZGV2LCBhZGRyKSAg ICAgICAgICAocGh5c19hcGVydHVyZV92YmFzZShwZGV2KSArIChhZGRyKSkKKworLyogZGVmaW5p dGlvbnMgZm9yIHZndCdzIGFwZXJ0dXJlL2dtIHNwYWNlICovCisjZGVmaW5lIGd2dF9hcGVydHVy ZV9iYXNlKHZndCkJCSh2Z3QtPnN0YXRlLmdtLmFwZXJ0dXJlX2Jhc2UpCisjZGVmaW5lIGd2dF9h cGVydHVyZV92YmFzZSh2Z3QpCQkodmd0LT5zdGF0ZS5nbS5hcGVydHVyZV9iYXNlX3ZhKQorI2Rl ZmluZSBndnRfYXBlcnR1cmVfb2Zmc2V0KHZndCkJKHZndC0+c3RhdGUuZ20uYXBlcnR1cmVfb2Zm c2V0KQorI2RlZmluZSBndnRfaGlkZGVuX2dtX29mZnNldCh2Z3QpCSh2Z3QtPnN0YXRlLmdtLmhp ZGRlbl9nbV9vZmZzZXQpCisjZGVmaW5lIGd2dF9hcGVydHVyZV9zeih2Z3QpCQkodmd0LT5zdGF0 ZS5nbS5hcGVydHVyZV9zeikKKyNkZWZpbmUgZ3Z0X2dtX3N6KHZndCkJCQkodmd0LT5zdGF0ZS5n bS5nbV9zeikKKyNkZWZpbmUgZ3Z0X2hpZGRlbl9nbV9zeih2Z3QpCQkoZ3Z0X2dtX3N6KHZndCkg LSBndnRfYXBlcnR1cmVfc3oodmd0KSkKKyNkZWZpbmUgZ3Z0X2ZlbmNlX2Jhc2Uodmd0KQkJKHZn dC0+c3RhdGUuZ20uZmVuY2VfYmFzZSkKKyNkZWZpbmUgZ3Z0X2ZlbmNlX3N6KHZndCkJCSh2Z3Qt PnN0YXRlLmdtLmZlbmNlX3N6KQorCisjZGVmaW5lIGd2dF9hcGVydHVyZV9lbmQodmd0KSAgICAg ICAgICAgXAorCShndnRfYXBlcnR1cmVfYmFzZSh2Z3QpICsgZ3Z0X2FwZXJ0dXJlX3N6KHZndCkg LSAxKQorI2RlZmluZSBndnRfdmlzaWJsZV9nbV9iYXNlKHZndCkgICAgICAgIFwKKwkoZ21fYmFz ZSh2Z3QtPnBkZXYpICsgZ3Z0X2FwZXJ0dXJlX29mZnNldCh2Z3QpKQorI2RlZmluZSBndnRfdmlz aWJsZV9nbV9lbmQodmd0KSAgICAgICAgIFwKKwkoZ3Z0X3Zpc2libGVfZ21fYmFzZSh2Z3QpICsg Z3Z0X2FwZXJ0dXJlX3N6KHZndCkgLSAxKQorI2RlZmluZSBndnRfaGlkZGVuX2dtX2Jhc2Uodmd0 KSBcCisJKGdtX2Jhc2Uodmd0LT5wZGV2KSArIGd2dF9oaWRkZW5fZ21fb2Zmc2V0KHZndCkpCisj ZGVmaW5lIGd2dF9oaWRkZW5fZ21fZW5kKHZndCkgICAgICAgICAgXAorCShndnRfaGlkZGVuX2dt X2Jhc2Uodmd0KSArIGd2dF9oaWRkZW5fZ21fc3oodmd0KSAtIDEpCisKKy8qCisgKiB0aGUgdmll dyBvZiB0aGUgYXBlcnR1cmUvZ20gc3BhY2UgZnJvbSB0aGUgVk0ncyBwLm8udgorICoKKyAqIHdo ZW4gdGhlIFZNIHN1cHBvcnRzIGJhbGxvb25pbmcsIHRoaXMgdmlldyBpcyB0aGUgc2FtZSBhcyB0 aGUKKyAqIHZpZXcgb2YgdkdUIGRyaXZlci4KKyAqCisgKiB3aGVuIHRoZSBWTSBkb2VzIG5vdCBz dXBwb3J0IGJhbGxvb25pbmcsIHRoaXMgdmlldyBzdGFydHMgZnJvbQorICogR00gc3BhY2UgWkVS TworICovCisjZGVmaW5lIGd2dF9ndWVzdF9hcGVydHVyZV9iYXNlKHZndCkgICAgXAorCSgoKigo dTMyKikmdmd0LT5zdGF0ZS5jZmcuc3BhY2VbR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMV0pICYgfjB4 ZikgKyBndnRfYXBlcnR1cmVfb2Zmc2V0KHZndCkpCisjZGVmaW5lIGd2dF9ndWVzdF9hcGVydHVy ZV9lbmQodmd0KSAgICAgXAorICAgICAgICAoZ3Z0X2d1ZXN0X2FwZXJ0dXJlX2Jhc2Uodmd0KSAr IGd2dF9hcGVydHVyZV9zeih2Z3QpIC0gMSkKKyNkZWZpbmUgZ3Z0X2d1ZXN0X3Zpc2libGVfZ21f YmFzZSh2Z3QpICBcCisgICAgICAgIChndnRfdmlzaWJsZV9nbV9iYXNlKHZndCkpCisjZGVmaW5l IGd2dF9ndWVzdF92aXNpYmxlX2dtX2VuZCh2Z3QpICAgXAorICAgICAgICAoZ3Z0X2d1ZXN0X3Zp c2libGVfZ21fYmFzZSh2Z3QpICsgZ3Z0X2FwZXJ0dXJlX3N6KHZndCkgLSAxKQorI2RlZmluZSBn dnRfZ3Vlc3RfaGlkZGVuX2dtX2Jhc2Uodmd0KSAgIFwKKwlndnRfaGlkZGVuX2dtX2Jhc2Uodmd0 KQorI2RlZmluZSBndnRfZ3Vlc3RfaGlkZGVuX2dtX2VuZCh2Z3QpICAgIFwKKyAgICAgICAgKGd2 dF9ndWVzdF9oaWRkZW5fZ21fYmFzZSh2Z3QpICsgZ3Z0X2hpZGRlbl9nbV9zeih2Z3QpIC0gMSkK KworZXh0ZXJuIHZvaWQgZ3Z0X2luaXRfcmVzb3VyY2VfYWxsb2NhdG9yKHN0cnVjdCBwZ3RfZGV2 aWNlICpwZGV2KTsKK2V4dGVybiB2b2lkIGd2dF9jbGVhbl9yZXNvdXJjZV9hbGxvY2F0b3Ioc3Ry dWN0IHBndF9kZXZpY2UgKnBkZXYpOworZXh0ZXJuIGludCBndnRfYWxsb2NfZ21fYW5kX2ZlbmNl X3Jlc291cmNlKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsCisJCXN0cnVjdCBndnRfaW5zdGFuY2Vf aW5mbyAqaW5mbyk7CitleHRlcm4gdm9pZCBndnRfZnJlZV9nbV9hbmRfZmVuY2VfcmVzb3VyY2Uo c3RydWN0IHZndF9kZXZpY2UgKnZndCk7CisKIHN0YXRpYyBpbmxpbmUgdTMyIGd2dF9tbWlvX3Jl YWQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCiAJCXUzMiByZWcpCiB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvcGFyYW1zLmMKaW5kZXggZGZjMzNjMy4uNmNkMzI0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9w YXJhbXMuYwpAQCAtMjYsNCArMjYsMTYgQEAKIHN0cnVjdCBndnRfa2VybmVsX3BhcmFtcyBndnQg PSB7CiAJLmVuYWJsZSA9IHRydWUsCiAJLmRlYnVnID0gMCwKKwkuZG9tMF9sb3dfZ21fc3ogPSA5 NiwKKwkuZG9tMF9oaWdoX2dtX3N6ID0gMzg0LAorCS5kb20wX2ZlbmNlX3N6ID0gNCwKIH07CisK K21vZHVsZV9wYXJhbV9uYW1lZChkb20wX2xvd19nbV9zeiwgZ3Z0LmRvbTBfbG93X2dtX3N6LCBp bnQsIDA2MDApOworTU9EVUxFX1BBUk1fREVTQyhkb20wX2xvd19nbV9zeiwgIkFtb3VudCBvZiBh cGVydHVyZSBzaXplIG9mIERPTTAiKTsKKworbW9kdWxlX3BhcmFtX25hbWVkKGRvbTBfaGlnaF9n bV9zeiwgZ3Z0LmRvbTBfaGlnaF9nbV9zeiwgaW50LCAwNjAwKTsKK01PRFVMRV9QQVJNX0RFU0Mo ZG9tMF9oaWdoX2dtX3N6LCAiQW1vdW50IG9mIGhpZ2ggbWVtb3J5IHNpemUgb2YgRE9NMCIpOwor Cittb2R1bGVfcGFyYW1fbmFtZWQoZG9tMF9mZW5jZV9zeiwgZ3Z0LmRvbTBfZmVuY2Vfc3osIGlu dCwgMDYwMCk7CitNT0RVTEVfUEFSTV9ERVNDKGRvbTBfZmVuY2Vfc3osICJBbW91bnQgb2YgZmVu Y2Ugc2l6ZSBvZiBET00wIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv cGFyYW1zLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmgKaW5kZXggMDY1NmE5 OC4uMDUwNzg3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaApAQCAtMzQsNCArMzQsMTIg QEAgc3RydWN0IGd2dF9rZXJuZWxfcGFyYW1zIHsKIAogZXh0ZXJuIHN0cnVjdCBndnRfa2VybmVs X3BhcmFtcyBndnQ7CiAKK3N0cnVjdCBndnRfaW5zdGFuY2VfaW5mbyB7CisJdTMyIGRvbWlkOwor CXUzMiBsb3dfZ21fc3o7CisJdTMyIGhpZ2hfZ21fc3o7CisJdTMyIGZlbmNlX3N6OworCXMzMiBw cmltYXJ5OworfTsKKwogI2VuZGlmCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK