From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 25/29] drm/i915: gvt: vGPU execlist workload submission Date: Thu, 28 Jan 2016 18:21:47 +0800 Message-ID: <1453976511-27322-26-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 310D06E7F8 for ; Thu, 28 Jan 2016 02:25:02 -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 VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSB2R1BVIGV4ZWNsaXN0IHdvcmtsb2FkIHN1Ym1pc3Np b24gbG9naWNzLgoKVW5kZXIgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQsIGd1ZXN0IHdpbGwg c3VibWl0IHdvcmtsb2FkIHRocm91Z2ggdmlydHVhbApleGVjbGlzdCBzdWJtaXQgcG9ydC4gVGhl IHN1Ym1pdHRlZCB3b3JrbG9hZCBsb2FkIHdpbGwgYmUgd3JhcHBlZCBpbnRvCmFuIGd2dCB3b3Jr bG9hZCB3aGljaCB3aWxsIGJlIHBpY2tlZCBieSBHVlQgd29ya2xvYWQgc2NoZWR1bGVyIGFuZCBl eGVjdXRlZApvbiBob3N0IGk5MTUgbGF0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBaaGkgV2FuZyA8emhp LmEud2FuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0 LmMgIHwgMjY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvZXhlY2xpc3QuaCAgfCAgNTMgKysrKysrKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2d2dC5oICAgICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9o YW5kbGVycy5jICB8ICAzMCArKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVy LmggfCAgNTkgKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNDA1IGluc2VydGlvbnMoKyksIDUg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3NjaGVkdWxlci5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNs aXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3QuYwppbmRleCA0ZDQ5ZDAw Li44ZDlkZDFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3Qu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3QuYwpAQCAtMzEyLDYgKzMx MiwyNjYgQEAgc3RhdGljIGJvb2wgZW11bGF0ZV9leGVjbGlzdF9zY2hlZHVsZV9pbihzdHJ1Y3Qg Z3Z0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyAqaW5mbywKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3Rh dGljIGJvb2wgZXhlY2xpc3Rfd29ya2xvYWRfY29tcGxldGUoc3RydWN0IGd2dF93b3JrbG9hZCAq d29ya2xvYWQpCit7CisJc3RydWN0IHZndF9kZXZpY2UgKnZndCA9IHdvcmtsb2FkLT52Z3Q7CisJ c3RydWN0IGd2dF92aXJ0dWFsX2V4ZWNsaXN0X2luZm8gKmluZm8gPQorCQkmdmd0LT52aXJ0dWFs X2V4ZWNsaXN0X2luZm9bd29ya2xvYWQtPnJpbmdfaWRdOworCXN0cnVjdCBndnRfd29ya2xvYWQg Km5leHRfd29ya2xvYWQ7CisJc3RydWN0IGxpc3RfaGVhZCAqbmV4dCA9IHdvcmtsb2FkX3FfaGVh ZCh2Z3QsIHdvcmtsb2FkLT5yaW5nX2lkKTsKKwlib29sIGxpdGVfcmVzdG9yZSA9IGZhbHNlOwor CisJZ3Z0X2RiZ19lbCgiY29tcGxldGUgd29ya2xvYWQgJXAgc3RhdHVzICVkIiwgd29ya2xvYWQs IHdvcmtsb2FkLT5zdGF0dXMpOworCisJaWYgKHdvcmtsb2FkLT5zdGF0dXMpCisJCWdvdG8gb3V0 OworCisJaWYgKCFsaXN0X2VtcHR5KHdvcmtsb2FkX3FfaGVhZCh2Z3QsIHdvcmtsb2FkLT5yaW5n X2lkKSkpIHsKKwkJc3RydWN0IGV4ZWNsaXN0X2N0eF9kZXNjcmlwdG9yX2Zvcm1hdCAqdGhpc19k ZXNjLCAqbmV4dF9kZXNjOworCisJCW5leHRfd29ya2xvYWQgPSBjb250YWluZXJfb2YobmV4dCwg c3RydWN0IGd2dF93b3JrbG9hZCwgbGlzdCk7CisJCXRoaXNfZGVzYyA9ICZ3b3JrbG9hZC0+Y3R4 X2Rlc2M7CisJCW5leHRfZGVzYyA9ICZuZXh0X3dvcmtsb2FkLT5jdHhfZGVzYzsKKworCQlsaXRl X3Jlc3RvcmUgPSBzYW1lX2NvbnRleHQodGhpc19kZXNjLCBuZXh0X2Rlc2MpOworCX0KKworCWlm IChsaXRlX3Jlc3RvcmUpIHsKKwkJZ3Z0X2RiZ19lbCgibmV4dCB3b3JrbG9hZCBjb250ZXh0IGlz IHNhbWUgYXMgY3VycmVudCAtIG5vIHNjaGVkdWxlLW91dCIpOworCQlnb3RvIG91dDsKKwl9CisK KwlpZiAoIWVtdWxhdGVfZXhlY2xpc3RfY3R4X3NjaGVkdWxlX291dChpbmZvLCAmd29ya2xvYWQt PmN0eF9kZXNjKSkgeworCQlrZnJlZSh3b3JrbG9hZCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisK K291dDoKKwlndnRfZGVzdHJveV9tbSh3b3JrbG9hZC0+c2hhZG93X21tKTsKKwlrZnJlZSh3b3Jr bG9hZCk7CisJcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgZ3Z0X2dldF9jb250ZXh0X3BkcF9yb290 X3BvaW50ZXIoc3RydWN0IHZndF9kZXZpY2UgKnZndCwKKwkJc3RydWN0IGV4ZWNsaXN0X3Jpbmdf Y29udGV4dCAqcmluZ19jb250ZXh0LAorCQl1MzIgcGRwWzhdKQoreworCXN0cnVjdCBndnRfZXhl Y2xpc3RfbW1pb19wYWlyICpwZHBfcGFpciA9ICZyaW5nX2NvbnRleHQtPnBkcDNfVURXOworCXUz MiB2OworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQloeXBlcnZpc29y X3JlYWRfdmEodmd0LCAmcGRwX3BhaXJbaV0udmFsLCAmdiwgNCwgMSk7CisJCXBkcFs3IC0gaV0g PSB2OworCX0KK30KKwordm9pZCBndnRfc2V0X2NvbnRleHRfcGRwX3Jvb3RfcG9pbnRlcihzdHJ1 Y3Qgdmd0X2RldmljZSAqdmd0LAorCQlzdHJ1Y3QgZXhlY2xpc3RfcmluZ19jb250ZXh0ICpyaW5n X2NvbnRleHQsCisJCXUzMiBwZHBbOF0pCit7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3Bh aXIgKnBkcF9wYWlyID0gJnJpbmdfY29udGV4dC0+cGRwM19VRFc7CisJaW50IGk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKQorCQlwZHBfcGFpcltpXS52YWwgPSBwZHBbNyAtIGldOworfQor CitzdGF0aWMgc3RydWN0IGV4ZWNsaXN0X3JpbmdfY29udGV4dCAqZ2V0X3JpbmdfY29udGV4dChz dHJ1Y3Qgdmd0X2RldmljZSAqdmd0LAorCQl1MzIgbHJjYSkKK3sKKwlzdHJ1Y3QgZXhlY2xpc3Rf cmluZ19jb250ZXh0ICpjb250ZXh0OworCXUzMiBnbWEgPSAobHJjYSArIDEpIDw8IEdUVF9QQUdF X1NISUZUOworCisJY29udGV4dCA9IChzdHJ1Y3QgZXhlY2xpc3RfcmluZ19jb250ZXh0ICopCisJ CWd2dF9nbWFfdG9fdmEodmd0LT5ndHQuZ2d0dF9tbSwgZ21hKTsKKworCXJldHVybiBjb250ZXh0 OworfQorCitzdGF0aWMgYm9vbCBwcmVwYXJlX3dvcmtsb2FkKHN0cnVjdCBndnRfd29ya2xvYWQg Kndvcmtsb2FkKQoreworCXN0cnVjdCBleGVjbGlzdF9jdHhfZGVzY3JpcHRvcl9mb3JtYXQgKmRl c2MgPSAmd29ya2xvYWQtPmN0eF9kZXNjOworCXN0cnVjdCBndnRfbW0gKm1tOworCWd0dF90eXBl X3Qgcm9vdF9lbnRyeV90eXBlOworCWludCBwYWdlX3RhYmxlX2xldmVsOworCXUzMiBwZHBbOF07 CisKKwlpZiAoZGVzYy0+YWRkcmVzc2luZ19tb2RlID09IDEpIHsgLyogbGVnYWN5IDMyLWJpdCAq LworCQlwYWdlX3RhYmxlX2xldmVsID0gMzsKKwkJcm9vdF9lbnRyeV90eXBlID0gR1RUX1RZUEVf UFBHVFRfUk9PVF9MM19FTlRSWTsKKwl9IGVsc2UgaWYgKGRlc2MtPmFkZHJlc3NpbmdfbW9kZSA9 PSAzKSB7IC8qIGxlZ2FjeSA2NCBiaXQgKi8KKwkJcGFnZV90YWJsZV9sZXZlbCA9IDQ7CisJCXJv b3RfZW50cnlfdHlwZSA9IEdUVF9UWVBFX1BQR1RUX1JPT1RfTDRfRU5UUlk7CisJfSBlbHNlIHsK KwkJZ3Z0X2VycigiQWR2YW5jZWQgQ29udGV4dCBtb2RlKFNWTSkgaXMgbm90IHN1cHBvcnRlZCFc biIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJZ3Z0X2dldF9jb250ZXh0X3BkcF9yb290X3Bv aW50ZXIod29ya2xvYWQtPnZndCwgd29ya2xvYWQtPnJpbmdfY29udGV4dCwgcGRwKTsKKworCW1t ID0gZ3Z0X2NyZWF0ZV9tbSh3b3JrbG9hZC0+dmd0LCBHVlRfTU1fUFBHVFQsIHJvb3RfZW50cnlf dHlwZSwKKwkJCXBkcCwgcGFnZV90YWJsZV9sZXZlbCwgMCk7CisJaWYgKCFtbSkgeworCQlndnRf ZXJyKCJmYWlsIHRvIGNyZWF0ZSBtbSBvYmplY3QuXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworCXdvcmtsb2FkLT5zaGFkb3dfbW0gPSBtbTsKKworCXJldHVybiB0cnVlOworfQorCitib29s IHN1Ym1pdF9jb250ZXh0KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIGludCByaW5nX2lkLAorCQlz dHJ1Y3QgZXhlY2xpc3RfY3R4X2Rlc2NyaXB0b3JfZm9ybWF0ICpkZXNjKQoreworCXN0cnVjdCBs aXN0X2hlYWQgKnEgPSB3b3JrbG9hZF9xX2hlYWQodmd0LCByaW5nX2lkKTsKKwlzdHJ1Y3QgZ3Z0 X3dvcmtsb2FkICpsYXN0X3dvcmtsb2FkID0gbGlzdF9lbXB0eShxKSA/IE5VTEwgOgorCQkJY29u dGFpbmVyX29mKHEtPnByZXYsIHN0cnVjdCBndnRfd29ya2xvYWQsIGxpc3QpOworCXN0cnVjdCBn dnRfd29ya2xvYWQgKndvcmtsb2FkID0gTlVMTDsKKworCXN0cnVjdCBleGVjbGlzdF9yaW5nX2Nv bnRleHQgKnJpbmdfY29udGV4dCA9IGdldF9yaW5nX2NvbnRleHQoCisJCQl2Z3QsIGRlc2MtPmxy Y2EpOworCisJdTMyIGhlYWQsIHRhaWwsIHN0YXJ0LCBjdGw7CisKKwlpZiAoIXJpbmdfY29udGV4 dCkgeworCQlndnRfZXJyKCJpbnZhbGlkIGd1ZXN0IGNvbnRleHQgTFJDQTogJXgiLCBkZXNjLT5s cmNhKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWh5cGVydmlzb3JfcmVhZF92YSh2Z3QsICZy aW5nX2NvbnRleHQtPnJpbmdfaGVhZGVyLnZhbCwKKwkJCSZoZWFkLCA0LCAxKTsKKworCWh5cGVy dmlzb3JfcmVhZF92YSh2Z3QsICZyaW5nX2NvbnRleHQtPnJpbmdfdGFpbC52YWwsCisJCQkmdGFp bCwgNCwgMSk7CisKKwloZWFkICY9IFJCX0hFQURfT0ZGX01BU0s7CisJdGFpbCAmPSBSQl9UQUlM X09GRl9NQVNLOworCisJaWYgKGxhc3Rfd29ya2xvYWQgJiYgc2FtZV9jb250ZXh0KCZsYXN0X3dv cmtsb2FkLT5jdHhfZGVzYywgZGVzYykpIHsKKwkJZ3Z0X2RiZ19lbCgicmluZyBpZCAlZCBzYW1l IHdvcmtsb2FkIGFzIGxhc3Qgd29ya2xvYWQiLCByaW5nX2lkKTsKKwkJaWYgKGxhc3Rfd29ya2xv YWQtPmRpc3BhdGNoZWQpIHsKKwkJCWd2dF9kYmdfZWwoInJpbmcgaWQgJWQgbGFzdCB3b3JrbG9h ZCBoYXMgYmVlbiBkaXNwYXRjaGVkIiwKKwkJCQkJcmluZ19pZCk7CisJCQlndnRfZGJnX2VsKCJj dHggaGVhZCAleCByZWFsIGhlYWQgJWx4IiwKKwkJCQkJaGVhZCwgbGFzdF93b3JrbG9hZC0+cmJf dGFpbCk7CisJCQkvKgorCQkJICogY2Fubm90IHVzZSBndWVzdCBjb250ZXh0IGhlYWQgcG9pbnRl ciBoZXJlLAorCQkJICogYXMgaXQgbWlnaHQgbm90IGJlIHVwZGF0ZWQgYXQgdGhpcyB0aW1lCisJ CQkgKi8KKwkJCWhlYWQgPSBsYXN0X3dvcmtsb2FkLT5yYl90YWlsOworCQl9IGVsc2UgeworCQkJ Z3Z0X2RiZ19lbCgicmluZyBpZCAlZCBtZXJnZWQgaW50byBsYXN0IHdvcmtsb2FkIiwgcmluZ19p ZCk7CisJCQkvKgorCQkJICogaWYgbGFzdCB3b3JrbG9hZCBoYXNuJ3QgYmVlbiBkaXNwYXRjaGVk IChzY2FubmVkICsgc2hhZG93ZWQpLAorCQkJICogYW5kIHRoZSBjb250ZXh0IGZvciBjdXJyZW50 IHN1Ym1pc3Npb24gaXMganVzdCB0aGUgc2FtZSBhcyBsYXN0CisJCQkgKiB3b3JrbG9hZCBjb250 ZXh0LCB0aGVuIHdlIGNhbiBtZXJnZSB0aGlzIHN1Ym1pc3Npb24gaW50bworCQkJICogbGFzdCB3 b3JrbG9hZC4KKwkJCSAqLworCQkJbGFzdF93b3JrbG9hZC0+cmJfdGFpbCA9IHRhaWw7CisJCQly ZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCWd2dF9kYmdfZWwoInJpbmcgaWQgJWQgYmVnaW4gYSBu ZXcgd29ya2xvYWQiLCByaW5nX2lkKTsKKworCXdvcmtsb2FkID0ga3phbGxvYyhzaXplb2YoKndv cmtsb2FkKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF3b3JrbG9hZCkgeworCQlndnRfZXJyKCJmYWls IHRvIGFsbG9jYXRlIG1lbW9yeSBmb3Igd29ya2xvYWQiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworCS8qIHJlY29yZCBzb21lIHJpbmcgYnVmZmVyIHJlZ2lzdGVyIHZhbHVlcyBmb3Igc2NhbiBh bmQgc2hhZG93ICovCisJaHlwZXJ2aXNvcl9yZWFkX3ZhKHZndCwgJnJpbmdfY29udGV4dC0+cmJf c3RhcnQudmFsLAorCQkJJnN0YXJ0LCA0LCAxKTsKKwloeXBlcnZpc29yX3JlYWRfdmEodmd0LCAm cmluZ19jb250ZXh0LT5yYl9jdHJsLnZhbCwKKwkJCSZjdGwsIDQsIDEpOworCisJSU5JVF9MSVNU X0hFQUQoJndvcmtsb2FkLT5saXN0KTsKKworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJndvcmtsb2Fk LT5zaGFkb3dfY3R4X3N0YXR1c193cSk7CisJYXRvbWljX3NldCgmd29ya2xvYWQtPnNoYWRvd19j dHhfYWN0aXZlLCAwKTsKKworCXdvcmtsb2FkLT52Z3QgPSB2Z3Q7CisJd29ya2xvYWQtPnJpbmdf aWQgPSByaW5nX2lkOworCXdvcmtsb2FkLT5jdHhfZGVzYyA9ICpkZXNjOworCXdvcmtsb2FkLT5y aW5nX2NvbnRleHQgPSByaW5nX2NvbnRleHQ7CisJd29ya2xvYWQtPnJiX2hlYWQgPSBoZWFkOwor CXdvcmtsb2FkLT5yYl90YWlsID0gdGFpbDsKKwl3b3JrbG9hZC0+cmJfc3RhcnQgPSBzdGFydDsK Kwl3b3JrbG9hZC0+cmJfY3RsID0gY3RsOworCXdvcmtsb2FkLT5jb21wbGV0ZSA9IGV4ZWNsaXN0 X3dvcmtsb2FkX2NvbXBsZXRlOworCXdvcmtsb2FkLT5zdGF0dXMgPSAtRUlOUFJPR1JFU1M7CisK KwlndnRfZGJnX2VsKCJ3b3JrbG9hZCAlcCByaW5nIGlkICVkIGhlYWQgJXggdGFpbCAleCBzdGFy dCAleCBjdGwgJXgiLAorCQkJd29ya2xvYWQsIHJpbmdfaWQsIGhlYWQsIHRhaWwsIHN0YXJ0LCBj dGwpOworCisJaWYgKCFwcmVwYXJlX3dvcmtsb2FkKHdvcmtsb2FkKSkgeworCQlrZnJlZSh3b3Jr bG9hZCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlxdWV1ZV93b3JrbG9hZCh3b3JrbG9hZCk7 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBndnRfZXhlY2xpc3RfZWxzcF9zdWJtaXQoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwgaW50IHJpbmdfaWQpCit7CisJc3RydWN0IGd2dF92aXJ0dWFs X2V4ZWNsaXN0X2luZm8gKmluZm8gPQorCQkmdmd0LT52aXJ0dWFsX2V4ZWNsaXN0X2luZm9bcmlu Z19pZF07CisJc3RydWN0IGV4ZWNsaXN0X2N0eF9kZXNjcmlwdG9yX2Zvcm1hdCAqZGVzY1syXSwg dmFsaWRfZGVzY1syXTsKKwl1bnNpZ25lZCBsb25nIHZhbGlkX2Rlc2NfYml0bWFwID0gMDsKKwlp bnQgaTsKKworCW1lbXNldCh2YWxpZF9kZXNjLCAwLCBzaXplb2YodmFsaWRfZGVzYykpOworCisJ ZGVzY1swXSA9IChzdHJ1Y3QgZXhlY2xpc3RfY3R4X2Rlc2NyaXB0b3JfZm9ybWF0ICopJmluZm8t PmJ1bmRsZS5kYXRhWzJdOworCWRlc2NbMV0gPSAoc3RydWN0IGV4ZWNsaXN0X2N0eF9kZXNjcmlw dG9yX2Zvcm1hdCAqKSZpbmZvLT5idW5kbGUuZGF0YVswXTsKKworCWZvciAoaSA9IDA7IGkgPCAy OyBpKyspIHsKKwkJaWYgKCFkZXNjW2ldLT52YWxpZCkKKwkJCWNvbnRpbnVlOworCisJCWlmICgh ZGVzY1tpXS0+cHJpdmlsZWdlX2FjY2VzcykgeworCQkJZ3Z0X2VycigiW3ZndCAlZF0gdW5leHBl Y3RlZCBHR1RUIGVsc3Agc3VibWlzc2lvbiIsIHZndC0+aWQpOworCQkJcmV0dXJuIGZhbHNlOwor CQl9CisKKwkJLyogVE9ETzogYWRkIGFub3RoZXIgZ3Vlc3QgY29udGV4dCBjaGVja3MgaGVyZS4g Ki8KKwkJc2V0X2JpdChpLCAmdmFsaWRfZGVzY19iaXRtYXApOworCQl2YWxpZF9kZXNjW2ldID0g KmRlc2NbaV07CisJfQorCisJaWYgKCF2YWxpZF9kZXNjX2JpdG1hcCkgeworCQlndnRfZXJyKCJb dmd0ICVkXSBubyB2YWxpZCBkZXNjIGluIGEgZWxzcCBzdWJtaXNzaW9uIiwKKwkJCQl2Z3QtPmlk KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmICghdGVzdF9iaXQoMCwgKHZvaWQgKikmdmFs aWRfZGVzY19iaXRtYXApICYmCisJCQl0ZXN0X2JpdCgxLCAodm9pZCAqKSZ2YWxpZF9kZXNjX2Jp dG1hcCkpIHsKKwkJZ3Z0X2VycigiW3ZndCAlZF0gd2VpcmQgZWxzcCBzdWJtaXNzaW9uLCBkZXNj IDAgaXMgbm90IHZhbGlkIiwKKwkJCQl2Z3QtPmlkKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWlmICghZW11bGF0ZV9leGVjbGlzdF9zY2hlZHVsZV9pbihpbmZvLCB2YWxpZF9kZXNjKSkgewor CQlndnRfZXJyKCJbdmd0ICVkXSBmYWlsIHRvIGVtdWxhdGUgZXhlY2xpc3Qgc2NoZWR1bGUtaW4i LCB2Z3QtPmlkKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIHN1Ym1pdCB3b3JrbG9hZCAq LworCWZvcl9lYWNoX3NldF9iaXQoaSwgKHZvaWQgKikmdmFsaWRfZGVzY19iaXRtYXAsIDIpIHsK KwkJaWYgKCFzdWJtaXRfY29udGV4dCh2Z3QsIHJpbmdfaWQsICZ2YWxpZF9kZXNjW2ldKSkgewor CQkJZ3Z0X2VycigiW3ZndCAlZF0gZmFpbCB0byBzY2hlZHVsZSB3b3JrbG9hZCIsIHZndC0+aWQp OworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMg Ym9vbCBpbml0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyhzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LAog CQlpbnQgcmluZ19pZCwgc3RydWN0IGd2dF92aXJ0dWFsX2V4ZWNsaXN0X2luZm8gKmluZm8pCiB7 CkBAIC0zMjUsNiArNTg1LDggQEAgc3RhdGljIGJvb2wgaW5pdF92aXJ0dWFsX2V4ZWNsaXN0X2lu Zm8oc3RydWN0IHZndF9kZXZpY2UgKnZndCwKIAlpbmZvLT5leGVjbGlzdFswXS5pbmRleCA9IDA7 CiAJaW5mby0+ZXhlY2xpc3RbMV0uaW5kZXggPSAxOwogCisJSU5JVF9MSVNUX0hFQUQoJmluZm8t Pndvcmtsb2FkX3FfaGVhZCk7CisKIAljdHhfc3RhdHVzX3B0cl9yZWcgPSBleGVjbGlzdF9yaW5n X21taW8oaW5mby0+cmluZ19pZCwKIAkJCV9FTF9PRkZTRVRfU1RBVFVTX1BUUik7CiAKQEAgLTMz OSw2ICs2MDEsOCBAQCBib29sIGd2dF9pbml0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyhzdHJ1Y3Qg dmd0X2RldmljZSAqdmd0KQogewogCWludCBpOwogCisJYXRvbWljX3NldCgmdmd0LT5ydW5uaW5n X3dvcmtsb2FkX251bSwgMCk7CisKIAkvKiBlYWNoIHJpbmcgaGFzIGEgdmlydHVhbCBleGVjbGlz dCBlbmdpbmUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykKIAkJaW5p dF92aXJ0dWFsX2V4ZWNsaXN0X2luZm8odmd0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2V4ZWNsaXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3Qu aAppbmRleCBiY2Q1YTllLi4xYjdiNGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZXhlY2xpc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3Qu aApAQCAtMTA3LDIwICsxMDcsNzMgQEAgc3RydWN0IGV4ZWNsaXN0X2NvbnRleHRfc3RhdHVzX2Zv cm1hdCB7CiAJfTsKIH07CiAKK3N0cnVjdCBndnRfZXhlY2xpc3RfbW1pb19wYWlyIHsKKwl1MzIg YWRkcjsKKwl1MzIgdmFsOworfTsKKworLyogVGhlIGZpcnN0IDUyIGR3b3JkcyBpbiByZWdpc3Rl ciBzdGF0ZSBjb250ZXh0ICovCitzdHJ1Y3QgZXhlY2xpc3RfcmluZ19jb250ZXh0IHsKKwl1MzIg bm9wMTsKKwl1MzIgbHJpX2NtZF8xOworCXN0cnVjdCBndnRfZXhlY2xpc3RfbW1pb19wYWlyIGN0 eF9jdHJsOworCXN0cnVjdCBndnRfZXhlY2xpc3RfbW1pb19wYWlyIHJpbmdfaGVhZGVyOworCXN0 cnVjdCBndnRfZXhlY2xpc3RfbW1pb19wYWlyIHJpbmdfdGFpbDsKKwlzdHJ1Y3QgZ3Z0X2V4ZWNs aXN0X21taW9fcGFpciByYl9zdGFydDsKKwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X21taW9fcGFpciBy Yl9jdHJsOworCXN0cnVjdCBndnRfZXhlY2xpc3RfbW1pb19wYWlyIGJiX2N1cl9oZWFkX1VEVzsK KwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X21taW9fcGFpciBiYl9jdXJfaGVhZF9MRFc7CisJc3RydWN0 IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgYmJfc3RhdGU7CisJc3RydWN0IGd2dF9leGVjbGlzdF9t bWlvX3BhaXIgc2Vjb25kX2JiX2FkZHJfVURXOworCXN0cnVjdCBndnRfZXhlY2xpc3RfbW1pb19w YWlyIHNlY29uZF9iYl9hZGRyX0xEVzsKKwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X21taW9fcGFpciBz ZWNvbmRfYmJfc3RhdGU7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgYmJfcGVyX2N0 eF9wdHI7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgcmNzX2luZGlyZWN0X2N0eDsK KwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X21taW9fcGFpciByY3NfaW5kaXJlY3RfY3R4X29mZnNldDsK Kwl1MzIgbm9wMjsKKwl1MzIgbm9wMzsKKwl1MzIgbm9wNDsKKwl1MzIgbHJpX2NtZF8yOworCXN0 cnVjdCBndnRfZXhlY2xpc3RfbW1pb19wYWlyIGN0eF90aW1lc3RhbXA7CisJc3RydWN0IGd2dF9l eGVjbGlzdF9tbWlvX3BhaXIgcGRwM19VRFc7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3Bh aXIgcGRwM19MRFc7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgcGRwMl9VRFc7CisJ c3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgcGRwMl9MRFc7CisJc3RydWN0IGd2dF9leGVj bGlzdF9tbWlvX3BhaXIgcGRwMV9VRFc7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIg cGRwMV9MRFc7CisJc3RydWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgcGRwMF9VRFc7CisJc3Ry dWN0IGd2dF9leGVjbGlzdF9tbWlvX3BhaXIgcGRwMF9MRFc7Cit9OworCiBzdHJ1Y3QgZ3Z0X2V4 ZWNsaXN0X3N0YXRlIHsKIAlzdHJ1Y3QgZXhlY2xpc3RfY3R4X2Rlc2NyaXB0b3JfZm9ybWF0IGN0 eFsyXTsKIAl1MzIgaW5kZXg7CiB9OwogCitzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X3dyaXRlX2J1bmRs ZSB7CisJdTMyIGRhdGFbNF07CisJdTMyIGluZGV4OworfTsKKwogc3RydWN0IGd2dF92aXJ0dWFs X2V4ZWNsaXN0X2luZm8gewogCXN0cnVjdCBndnRfZXhlY2xpc3Rfc3RhdGUgZXhlY2xpc3RbMl07 CiAJc3RydWN0IGd2dF9leGVjbGlzdF9zdGF0ZSAqcnVubmluZ19leGVjbGlzdDsKIAlzdHJ1Y3Qg Z3Z0X2V4ZWNsaXN0X3N0YXRlICpwZW5kaW5nX2V4ZWNsaXN0OwogCXN0cnVjdCBleGVjbGlzdF9j dHhfZGVzY3JpcHRvcl9mb3JtYXQgKnJ1bm5pbmdfY29udGV4dDsKKwlzdHJ1Y3QgZ3Z0X2V4ZWNs aXN0X3dyaXRlX2J1bmRsZSBidW5kbGU7CiAJaW50IHJpbmdfaWQ7CiAJc3RydWN0IHZndF9kZXZp Y2UgKnZndDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHdvcmtsb2FkX3FfaGVhZDsKIH07CiAKIGJvb2wg Z3Z0X2luaXRfdmlydHVhbF9leGVjbGlzdF9pbmZvKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpOwog Cit2b2lkIGd2dF9nZXRfY29udGV4dF9wZHBfcm9vdF9wb2ludGVyKHN0cnVjdCB2Z3RfZGV2aWNl ICp2Z3QsCisJCXN0cnVjdCBleGVjbGlzdF9yaW5nX2NvbnRleHQgKnJpbmdfY29udGV4dCwKKwkJ dTMyIHBkcFs4XSk7CisKK3ZvaWQgZ3Z0X3NldF9jb250ZXh0X3BkcF9yb290X3BvaW50ZXIoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwKKwkJc3RydWN0IGV4ZWNsaXN0X3JpbmdfY29udGV4dCAqcmlu Z19jb250ZXh0LAorCQl1MzIgcGRwWzhdKTsKKwogI2VuZGlmIC8qX0dWVF9FWEVDTElTVF9IXyov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvZ3Z0LmgKaW5kZXggZjQwNzg4Yi4uMDJlNWE2ZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9ndnQuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImVkaWQuaCIKICNpbmNsdWRl ICJkaXNwbGF5LmgiCiAjaW5jbHVkZSAiZXhlY2xpc3QuaCIKKyNpbmNsdWRlICJzY2hlZHVsZXIu aCIKIAogI2RlZmluZSBHVlRfTUFYX1ZHUFUgOAogCkBAIC0xNTEsNiArMTUyLDcgQEAgc3RydWN0 IHZndF9kZXZpY2UgewogCWF0b21pY190IGFjdGl2ZTsKIAlzdHJ1Y3QgZ3Z0X3ZpcnR1YWxfZGV2 aWNlX3N0YXRlIHN0YXRlOwogCXN0cnVjdCBndnRfdmlydHVhbF9leGVjbGlzdF9pbmZvIHZpcnR1 YWxfZXhlY2xpc3RfaW5mb1tJOTE1X05VTV9SSU5HU107CisJYXRvbWljX3QgcnVubmluZ193b3Jr bG9hZF9udW07CiAJc3RydWN0IGd2dF9zdGF0aXN0aWNzIHN0YXQ7CiAJc3RydWN0IGd2dF92Z3R0 X2luZm8gZ3R0OwogCXZvaWQgKmh5cGVydmlzb3JfZGF0YTsKQEAgLTY5OCw2ICs3MDAsOCBAQCB2 b2lkIGd2dF9lbXVsYXRlX2Rpc3BsYXlfZXZlbnRzKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KTsK IGJvb2wgZ3Z0X3NldHVwX2NvbnRyb2xfaW50ZXJmYWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2 KTsKIHZvaWQgZ3Z0X2NsZWFuX2NvbnRyb2xfaW50ZXJmYWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KTsKIAorYm9vbCBndnRfZXhlY2xpc3RfZWxzcF9zdWJtaXQoc3RydWN0IHZndF9kZXZpY2Ug KnZndCwgaW50IHJpbmdfaWQpOworCiAjaW5jbHVkZSAibXB0LmgiCiAKICNlbmRpZgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvaGFuZGxlcnMuYwppbmRleCA2MzhhMjk1Li4zNTZjZmM0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvaGFuZGxlcnMuYwpAQCAtMTEwMCw2ICsxMTAwLDI2IEBAIGJvb2wgZnBnYV9k Ymdfd3JpdGUoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgdW5zaWduZWQgaW50IHJlZywKICAgICAg ICAgcmV0dXJuIGd2dF9kZWZhdWx0X21taW9fd3JpdGUodmd0LCByZWcsICZ2LCBieXRlcyk7CiB9 CiAKK3N0YXRpYyBib29sIGVsc3Bfd3JpdGUoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgdW5zaWdu ZWQgaW50IG9mZnNldCwKKwkJdm9pZCAqcF9kYXRhLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCit7CisJ aW50IHJpbmdfaWQgPSBndnRfcmVuZGVyX21taW9fdG9fcmluZ19pZChvZmZzZXQpOworCXN0cnVj dCBndnRfdmlydHVhbF9leGVjbGlzdF9pbmZvICppbmZvID0KKwkJCSZ2Z3QtPnZpcnR1YWxfZXhl Y2xpc3RfaW5mb1tyaW5nX2lkXTsKKwl1MzIgZGF0YSA9ICoodTMyICopcF9kYXRhOworCWJvb2wg cmMgPSB0cnVlOworCisJaW5mby0+YnVuZGxlLmRhdGFbaW5mby0+YnVuZGxlLmluZGV4XSA9IGRh dGE7CisKKwlpZiAoaW5mby0+YnVuZGxlLmluZGV4ID09IDMpCisJCXJjID0gZ3Z0X2V4ZWNsaXN0 X2Vsc3Bfc3VibWl0KHZndCwgcmluZ19pZCk7CisKKwkrK2luZm8tPmJ1bmRsZS5pbmRleDsKKwlp bmZvLT5idW5kbGUuaW5kZXggJj0gMHgzOworCisJcmV0dXJuIHJjOworfQorCiBzdHJ1Y3QgZ3Z0 X3JlZ19pbmZvIGd2dF9nZW5lcmFsX3JlZ19pbmZvW10gPSB7CiAJLyogSW50ZXJydXB0IHJlZ2lz dGVycyAtIEdUICovCiAJe19SSU5HX0lNUihSRU5ERVJfUklOR19CQVNFKSwgNCwgRl9SRFIsIDAs IERfQUxMLCBOVUxMLCBndnRfcmVnX2ltcl9oYW5kbGVyfSwKQEAgLTE5MTIsMTUgKzE5MzIsMTUg QEAgc3RydWN0IGd2dF9yZWdfaW5mbyBndnRfYnJvYWR3ZWxsX3JlZ19pbmZvW10gPSB7CiAJe19S RUdfVkNTMl9USU1FU1RBTVAsIDgsIEZfUFQsIDAsIERfQkRXX1BMVVMsIE5VTEwsIE5VTEx9LAog CiAJe19SRUdfUkNTX0VYRUNMSVNUX1NVQk1JVFBPUlQsIDQsIEZfVklSVCwgMCwgRF9CRFdfUExV UywKLQkJbW1pb19ub3RfYWxsb3dfcmVhZCwgTlVMTH0sCisJCW1taW9fbm90X2FsbG93X3JlYWQs IGVsc3Bfd3JpdGV9LAogCXtfUkVHX1ZDU19FWEVDTElTVF9TVUJNSVRQT1JULCA0LCBGX1ZJUlQs IDAsIERfQkRXX1BMVVMsCi0JCW1taW9fbm90X2FsbG93X3JlYWQsIE5VTEx9LAorCQltbWlvX25v dF9hbGxvd19yZWFkLCBlbHNwX3dyaXRlfSwKIAl7X1JFR19WRUNTX0VYRUNMSVNUX1NVQk1JVFBP UlQsIDQsIEZfVklSVCwgMCwgRF9CRFdfUExVUywKLQkJbW1pb19ub3RfYWxsb3dfcmVhZCwgTlVM TH0sCisJCW1taW9fbm90X2FsbG93X3JlYWQsIGVsc3Bfd3JpdGV9LAogCXtfUkVHX1ZDUzJfRVhF Q0xJU1RfU1VCTUlUUE9SVCwgNCwgRl9WSVJULCAwLCBEX0JEV19QTFVTLAotCQltbWlvX25vdF9h bGxvd19yZWFkLCBOVUxMfSwKKwkJbW1pb19ub3RfYWxsb3dfcmVhZCwgZWxzcF93cml0ZX0sCiAJ e19SRUdfQkNTX0VYRUNMSVNUX1NVQk1JVFBPUlQsIDQsIEZfVklSVCwgMCwgRF9CRFdfUExVUywK LQkJbW1pb19ub3RfYWxsb3dfcmVhZCwgTlVMTH0sCisJCW1taW9fbm90X2FsbG93X3JlYWQsIGVs c3Bfd3JpdGV9LAogCiAJe19SRUdfUkNTX0VYRUNMSVNUX1NUQVRVUywgOCwgRl9SRFIsIDAsIERf QkRXX1BMVVMsIE5VTEwsCiAJCW1taW9fbm90X2FsbG93X3dyaXRlfSwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9zY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDI0 ZmRhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxl ci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9HVlRfU0NIRURVTEVSX0hf CisjZGVmaW5lIF9HVlRfU0NIRURVTEVSX0hfCisKK3N0cnVjdCBndnRfd29ya2xvYWQgeworCXN0 cnVjdCB2Z3RfZGV2aWNlICp2Z3Q7CisJaW50IHJpbmdfaWQ7CisKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcTsKKworCS8qIGlmIHRoaXMgd29ya2xvYWQgaGFzIGJlZW4gZGlzcGF0 Y2hlZCB0byBpOTE1PyAqLworCWJvb2wgZGlzcGF0Y2hlZDsKKwlpbnQgc3RhdHVzOworCWF0b21p Y190IHNoYWRvd19jdHhfYWN0aXZlOworCXdhaXRfcXVldWVfaGVhZF90IHNoYWRvd19jdHhfc3Rh dHVzX3dxOworCisJLyogZXhlY2xpc3QgY29udGV4dCBpbmZvcm1hdGlvbiAqLworCXN0cnVjdCBl eGVjbGlzdF9jdHhfZGVzY3JpcHRvcl9mb3JtYXQgY3R4X2Rlc2M7CisJc3RydWN0IGV4ZWNsaXN0 X3JpbmdfY29udGV4dCAqcmluZ19jb250ZXh0OworCXVuc2lnbmVkIGxvbmcgcmJfaGVhZCwgcmJf dGFpbCwgcmJfY3RsLCByYl9zdGFydDsKKworCXN0cnVjdCBndnRfbW0gKnNoYWRvd19tbTsKKwor CS8qIGRpZmZlcmVudCBzdWJtaXNzaW9uIG1vZGVsIG1heSBuZWVkIGRpZmZlcmVudCBjb21wbGV0 ZSBoYW5kbGVyICovCisJYm9vbCAoKmNvbXBsZXRlKShzdHJ1Y3QgZ3Z0X3dvcmtsb2FkICopOwor CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworfTsKKworI2RlZmluZSB3b3JrbG9hZF9xX2hlYWQo dmd0LCByaW5nX2lkKSBcCisJKCYodmd0LT52aXJ0dWFsX2V4ZWNsaXN0X2luZm9bcmluZ19pZF0u d29ya2xvYWRfcV9oZWFkKSkKKworI2RlZmluZSBxdWV1ZV93b3JrbG9hZCh3b3JrbG9hZCkgXAor CWxpc3RfYWRkX3RhaWwoJndvcmtsb2FkLT5saXN0LCBcCisJd29ya2xvYWRfcV9oZWFkKHdvcmts b2FkLT52Z3QsIHdvcmtsb2FkLT5yaW5nX2lkKSkKKworI2VuZGlmCi0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK