From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 28/29] drm/i915: gvt: vGPU context switch Date: Thu, 28 Jan 2016 18:21:50 +0800 Message-ID: <1453976511-27322-29-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 E882B6E802 for ; Thu, 28 Jan 2016 02:25:04 -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 QXMgZGlmZmVyZW50IFZNIG1heSBjb25maWd1cmUgZGlmZmVyZW50IHJlbmRlciBNTUlPcyB3aGVu IGV4ZWN1dGluZyB3b3JrbG9hZCwKdG8gc2NoZWR1bGUgd29ya2xvYWRzIGJldHdlZW4gZGlmZmVy ZW50IFZNLCB0aGUgcmVuZGVyIE1NSU9zIGhhdmUgdG8gYmUKc3dpdGNoZWQuCgpTaWduZWQtb2Zm LWJ5OiBaaGkgV2FuZyA8emhpLmEud2FuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv ZGVidWcuaCAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZW5kZXIuYyAgICB8IDEwNCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3JlbmRlci5oICAgIHwgIDMxICsrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv c2NoZWR1bGVyLmMgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9yZW5kZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9y ZW5kZXIuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZQppbmRleCBkY2FmNzE1Li5jY2IwZDMy IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCkBAIC0xLDcgKzEsNyBAQAogR1ZUX1NPVVJD RSA6PSBndnQubyBwYXJhbXMubyBhcGVydHVyZV9nbS5vIG1taW8ubyBoYW5kbGVycy5vIGluc3Rh bmNlLm8gXAogCQl0cmFjZV9wb2ludHMubyBpbnRlcnJ1cHQubyBndHQubyBjZmdfc3BhY2UubyBv cHJlZ2lvbi5vIHV0aWxpdHkubyBcCiAJCWZiX2RlY29kZXIubyBkaXNwbGF5Lm8gZWRpZC5vIGNv bnRyb2wubyBleGVjbGlzdC5vIHNjaGVkdWxlci5vIFwKLQkJc2NoZWRfcG9saWN5Lm8KKwkJc2No ZWRfcG9saWN5Lm8gcmVuZGVyLm8KIAogY2NmbGFncy15CQkJKz0gLUkkKHNyYykgLUkkKHNyYykv Li4gLVdhbGwgLVdlcnJvciAtV25vLXVudXNlZC1mdW5jdGlvbgogaTkxNV9ndnQteQkJCTo9ICQo R1ZUX1NPVVJDRSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKaW5kZXggYzRjMDNhYy4uOTUzYmEw OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKQEAgLTg3LDYgKzg3LDkgQEAgZW51bSB7CiAj ZGVmaW5lIGd2dF9kYmdfaXJxKGZtdCwgYXJncy4uLikgXAogCWd2dF9kYmcoR1ZUX0RCR19JUlEs IGZtdCwgIyNhcmdzKQogCisjZGVmaW5lIGd2dF9kYmdfcmVuZGVyKGZtdCwgYXJncy4uLikgXAor CWd2dF9kYmcoR1ZUX0RCR19SRU5ERVIsIGZtdCwgIyNhcmdzKQorCiAjZGVmaW5lIGd2dF9kYmdf ZWwoZm10LCBhcmdzLi4uKSBcCiAJZ3Z0X2RiZyhHVlRfREJHX0VMLCBmbXQsICMjYXJncykKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2d2dC5oCmluZGV4IDU3ODhiYjcuLmQ3ZmY2MWUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvZ3Z0LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJleGVjbGlzdC5oIgogI2luY2x1 ZGUgInNjaGVkdWxlci5oIgogI2luY2x1ZGUgInNjaGVkX3BvbGljeS5oIgorI2luY2x1ZGUgInJl bmRlci5oIgogCiAjZGVmaW5lIEdWVF9NQVhfVkdQVSA4CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9yZW5kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZW5k ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTUyYzc3Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlbmRlci5jCkBAIC0wLDAgKzEs MTA0IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICog U09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImd2dC5oIgorCitzdHJ1Y3QgcmVuZGVyX21taW8g eworCWludCByaW5nX2lkOworCXUzMiByZWc7CisJdTMyIHZhbHVlOworCXUzMiBtYXNrOworfTsK Kworc3RhdGljIHN0cnVjdCByZW5kZXJfbW1pbyBnZW44X3JlbmRlcl9tbWlvX2xpc3RbXSA9IHsK Kwl7UkNTLCAweDIyOWMsIDB4ZmZmZn0sCisJe1JDUywgMHgyMjQ4LCAweDB9LAorCXtSQ1MsIDB4 MjA5OCwgMHgwfSwKKwl7UkNTLCAweDIwYzAsIDB4ZmZmZn0sCisJe1JDUywgMHgyNGQwLCAwfSwK Kwl7UkNTLCAweDI0ZDQsIDB9LAorCXtSQ1MsIDB4MjRkOCwgMH0sCisJe1JDUywgMHgyNGRjLCAw fSwKKwl7UkNTLCAweDcwMDQsIDB4ZmZmZn0sCisJe1JDUywgMHg3MDA4LCAweGZmZmZ9LAorCXtS Q1MsIDB4NzAwMCwgMHhmZmZmfSwKKwl7UkNTLCAweDcwMTAsIDB4ZmZmZn0sCisJe1JDUywgMHg3 MzAwLCAweGZmZmZ9LAorCXtSQ1MsIDB4ODNhNCwgMHhmZmZmfSwKKworCXtCQ1MsIEdWVF9SSU5H X01PREUoQkxUX1JJTkdfQkFTRSksIDB4ZmZmZn0sCisJe0JDUywgX1JJTkdfTUlfTU9ERShCTFRf UklOR19CQVNFKSwgMHhmZmZmfSwKKwl7QkNTLCBfUklOR19JTlNUUE0oQkxUX1JJTkdfQkFTRSks IDB4ZmZmZn0sCisJe0JDUywgX1JJTkdfSFdTVEFNKEJMVF9SSU5HX0JBU0UpLCAweGZmZmZ9LAor CXtCQ1MsIDB4MjIwMjgsIDB4MH0sCit9OworCit2b2lkIGd2dF9sb2FkX3JlbmRlcl9tbWlvKHN0 cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIGludCByaW5nX2lkKQoreworCXUzMiB2OworCWludCBpOwor CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZ2VuOF9yZW5kZXJfbW1pb19saXN0KTsgaSsr KSB7CisJCXN0cnVjdCByZW5kZXJfbW1pbyAqbW1pbyA9IGdlbjhfcmVuZGVyX21taW9fbGlzdCAr IGk7CisJCWlmIChtbWlvLT5yaW5nX2lkICE9IHJpbmdfaWQpCisJCQljb250aW51ZTsKKworCQlt bWlvLT52YWx1ZSA9IGd2dF9tbWlvX3JlYWQodmd0LT5wZGV2LCBtbWlvLT5yZWcpOworCQlpZiAo bW1pby0+bWFzaykKKwkJCXYgPSBfX3ZyZWcodmd0LCBtbWlvLT5yZWcpIHwgKG1taW8tPm1hc2sg PDwgMTYpOworCQllbHNlCisJCQl2ID0gX192cmVnKHZndCwgbW1pby0+cmVnKTsKKworCQlndnRf bW1pb193cml0ZSh2Z3QtPnBkZXYsIG1taW8tPnJlZywgdik7CisJCWd2dF9tbWlvX3Bvc3Rpbmdf cmVhZCh2Z3QtPnBkZXYsIG1taW8tPnJlZyk7CisKKwkJZ3Z0X2RiZ19yZW5kZXIoInJlZyAleCB2 YWx1ZSBvbGQgJXggbmV3ICV4IiwKKwkJCQltbWlvLT5yZWcsIG1taW8tPnZhbHVlLCB2KTsKKwl9 Cit9CisKK3ZvaWQgZ3Z0X3Jlc3RvcmVfcmVuZGVyX21taW8oc3RydWN0IHZndF9kZXZpY2UgKnZn dCwgaW50IHJpbmdfaWQpCit7CisJdTMyIHY7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShnZW44X3JlbmRlcl9tbWlvX2xpc3QpOyBpKyspIHsKKwkJc3RydWN0IHJlbmRl cl9tbWlvICptbWlvID0gZ2VuOF9yZW5kZXJfbW1pb19saXN0ICsgaTsKKwkJaWYgKG1taW8tPnJp bmdfaWQgIT0gcmluZ19pZCkKKwkJCWNvbnRpbnVlOworCisJCV9fdnJlZyh2Z3QsIG1taW8tPnJl ZykgPSBndnRfbW1pb19yZWFkKHZndC0+cGRldiwgbW1pby0+cmVnKTsKKworCQlpZiAobW1pby0+ bWFzaykgeworCQkJX192cmVnKHZndCwgbW1pby0+cmVnKSAmPSB+KG1taW8tPm1hc2sgPDwgMTYp OworCQkJdiA9IG1taW8tPnZhbHVlIHwgKG1taW8tPm1hc2sgPDwgMTYpOworCQl9IGVsc2UKKwkJ CXYgPSBtbWlvLT52YWx1ZTsKKworCQlndnRfbW1pb193cml0ZSh2Z3QtPnBkZXYsIG1taW8tPnJl Zywgdik7CisJCWd2dF9tbWlvX3Bvc3RpbmdfcmVhZCh2Z3QtPnBkZXYsIG1taW8tPnJlZyk7CisK KwkJZ3Z0X2RiZ19yZW5kZXIoInJlZyAleCB2YWx1ZSBvbGQgJXggbmV3ICV4IiwKKwkJCQltbWlv LT5yZWcsIG1taW8tPnZhbHVlLCB2KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvcmVuZGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVuZGVyLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA1ODExMwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZW5kZXIuaApAQCAtMCwwICsxLDMxIEBA CisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdB UkUuCisgKi8KKworI2lmbmRlZiBfX0dWVF9SRU5ERVJfSF9fCisjZGVmaW5lIF9fR1ZUX1JFTkRF Ul9IX18KKwordm9pZCBndnRfbG9hZF9yZW5kZXJfbW1pbyhzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0 LCBpbnQgcmluZ19pZCk7CisKK3ZvaWQgZ3Z0X3Jlc3RvcmVfcmVuZGVyX21taW8oc3RydWN0IHZn dF9kZXZpY2UgKnZndCwgaW50IHJpbmdfaWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9zY2hlZHVsZXIuYwppbmRleCBkOGQyZTIzLi5kMzhhZWIxIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3NjaGVkdWxlci5jCkBAIC0xMDYsNiArMTA2LDcgQEAgc3RhdGljIHZvaWQgc2hhZG93X2Nv bnRleHRfc2NoZWR1bGVfaW4odm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZ3Z0X3dvcmtsb2FkICp3 b3JrbG9hZCA9IChzdHJ1Y3QgZ3Z0X3dvcmtsb2FkICopZGF0YTsKIAorCWd2dF9sb2FkX3JlbmRl cl9tbWlvKHdvcmtsb2FkLT52Z3QsIHdvcmtsb2FkLT5yaW5nX2lkKTsKIAlhdG9taWNfc2V0KCZ3 b3JrbG9hZC0+c2hhZG93X2N0eF9hY3RpdmUsIDEpOwogCXdha2VfdXAoJndvcmtsb2FkLT5zaGFk b3dfY3R4X3N0YXR1c193cSk7CiB9CkBAIC0xMTQsNiArMTE1LDcgQEAgc3RhdGljIHZvaWQgc2hh ZG93X2NvbnRleHRfc2NoZWR1bGVfb3V0KHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGd2dF93b3Jr bG9hZCAqd29ya2xvYWQgPSAoc3RydWN0IGd2dF93b3JrbG9hZCAqKWRhdGE7CiAKKwlndnRfcmVz dG9yZV9yZW5kZXJfbW1pbyh3b3JrbG9hZC0+dmd0LCB3b3JrbG9hZC0+cmluZ19pZCk7CiAJYXRv bWljX3NldCgmd29ya2xvYWQtPnNoYWRvd19jdHhfYWN0aXZlLCAwKTsKIAl3YWtlX3VwKCZ3b3Jr bG9hZC0+c2hhZG93X2N0eF9zdGF0dXNfd3EpOwogfQotLSAKMS45LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==