From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t 17/24] i915: Add gem_ctx_clone Date: Fri, 22 Mar 2019 09:21:48 +0000 Message-ID: <20190322092155.1656-17-chris@chris-wilson.co.uk> References: <20190322092155.1656-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190322092155.1656-1-chris@chris-wilson.co.uk> 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 Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RXhlcmNpc2UgY2xvbmluZyBjb250ZXh0cywgYW4gZXh0ZW5zaW9uIG9mIG1lcmVseSBjcmVhdGlu ZyBvbmUuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KLS0tCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICB8ICAgMSArCiB0ZXN0cy9pOTE1 L2dlbV9jdHhfY2xvbmUuYyB8IDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQs IDQyMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvaTkxNS9nZW1fY3R4 X2Nsb25lLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFr ZWZpbGUuc291cmNlcwppbmRleCA4MDliMjU2MTIuLjEyZjRiYmQ3NSAxMDA2NDQKLS0tIGEvdGVz dHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yMSw2 ICsyMSw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWRybV9pbXBvcnRfZXhwb3J0IFwKIAlkcm1fbW0g XAogCWRybV9yZWFkIFwKKwlpOTE1L2dlbV9jdHhfY2xvbmUgXAogCWk5MTUvZ2VtX3ZtX2NyZWF0 ZSBcCiAJa21zXzNkIFwKIAlrbXNfYWRkZmJfYmFzaWMgXApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkx NS9nZW1fY3R4X2Nsb25lLmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY2xvbmUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdkODNjNjM1MAotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3RzL2k5MTUvZ2VtX2N0eF9jbG9uZS5jCkBAIC0wLDAgKzEsNDIxIEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUg Imk5MTUvZ2VtX3ZtLmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKworc3RhdGljIGludCBfX2Ny ZWF0ZV9leHQoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0 ICphcmcpCit7CisJaW50IGVycjsKKworCWVyciA9IDA7CisJaWYgKGlndF9pb2N0bChpOTE1LCBE Uk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEVfRVhULCBhcmcpKQorCQllcnIgPSAtZXJy bm87CisKKwllcnJubyA9IDA7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGJvb2wgaGFzX2N0 eF9jbG9uZShpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRl X2V4dF9jbG9uZSBleHQgPSB7CisJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9D TE9ORSB9LAorCQkuY2xvbmVfaWQgPSAtMSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFU RV9GTEFHU19VU0VfRVhURU5TSU9OUywKKwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIo JmV4dCksCisJfTsKKwlyZXR1cm4gX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpID09IC1FTk9F TlQ7Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRfY2xvbmUoaW50IGk5MTUpCit7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgZXh0ID0geworCQl7IC5uYW1l ID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfQ0xPTkUgfSwKKwl9OworCXN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKKwkJLmZsYWdzID0gSTkxNV9DT05U RVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUywKKwkJLmV4dGVuc2lvbnMgPSB0b191c2Vy X3BvaW50ZXIoJmV4dCksCisJfTsKKworCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUs ICZjcmVhdGUpLCAwKTsKKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQp OworCisJZXh0LmZsYWdzID0gLTE7IC8qIEhvcGVmdWxseSB3ZSB3b24ndCBydW4gb3V0IG9mIGZs YWdzICovCisJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIC1FSU5W QUwpOworCWV4dC5mbGFncyA9IDA7CisKKwlleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xOwor CWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAtRUZBVUxUKTsKKwll eHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KTsKKwlpZ3RfYXNz ZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgLUUyQklHKTsKKwlleHQuYmFzZS5u ZXh0X2V4dGVuc2lvbiA9IDA7CisKKwlleHQuY2xvbmVfaWQgPSAtMTsKKwlpZ3RfYXNzZXJ0X2Vx KF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgLUVOT0VOVCk7CisJZXh0LmNsb25lX2lkID0g MDsKK30KKworc3RhdGljIHZvaWQgY2xvbmVfZmxhZ3MoaW50IGk5MTUpCit7CisJc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gc2V0ID0geworCQl7IC5uYW1l ID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gfSwKKwkJeyAucGFyYW0gPSBJOTE1 X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEUgfSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfZXh0X2Nsb25lIGV4dCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVY VF9DUkVBVEVfRVhUX0NMT05FIH0sCisJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9GTEFH UywKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9 IHsKKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUywK KwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4dCksCisJfTsKKwlpbnQgZXhwZWN0 ZWQ7CisKKwlzZXQucGFyYW0udmFsdWUgPSAxOyAvKiBkZWZhdWx0IGlzIHJlY292ZXJhYmxlICov CisJaWd0X3JlcXVpcmUoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSkg PT0gMCk7CisKKwlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgeyAvKiBjbG9u aW5nIGRlZmF1bHQsIHRoZW4gY2hpbGQgKi8KKwkJaWd0X2RlYnVnKCJDbG9uaW5nICVkXG4iLCBl eHQuY2xvbmVfaWQpOworCQlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRl KSwgMCk7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJZ2VtX2NvbnRl eHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlleHBlY3RlZCA9IHNldC5wYXJhbS52 YWx1ZTsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKKwkJZ2VtX2NvbnRl eHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNl dC5wYXJhbS5wYXJhbSwKKwkJCQkgIEk5MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRSk7CisJ CWlndF9hc3NlcnRfZXEoKGludClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1f Y29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCWV4cGVjdGVkID0gc2V0 LnBhcmFtLnZhbHVlID0gMDsKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJ Z2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9hc3NlcnRf ZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAwKTsKKworCQlzZXQucGFyYW0uY3R4X2lk ID0gY3JlYXRlLmN0eF9pZDsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFy YW0pOworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwKKwkJCQkgIEk5MTVf Q09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRSk7CisJCWlndF9hc3NlcnRfZXEoKGludClzZXQucGFy YW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0 ZS5jdHhfaWQpOworCisJCS8qIGNsb25lIGJ1dCB0aGVuIHJlc2V0IHByaW9yaXR5IHRvIGRlZmF1 bHQgKi8KKwkJc2V0LnBhcmFtLmN0eF9pZCA9IDA7CisJCXNldC5wYXJhbS52YWx1ZSA9IDE7CisJ CWV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZzZXQpOworCQlpZ3Rf YXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisJCWV4dC5iYXNlLm5l eHRfZXh0ZW5zaW9uID0gMDsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsK KwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlpZ3RfYXNzZXJ0 X2VxX3U2NChzZXQucGFyYW0udmFsdWUsIDEpOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQu Y2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJ aWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnZhbHVlLCAwKTsKKworCQlnZW1fY29udGV4dF9k ZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCQlleHQuY2xvbmVfaWQgPSBnZW1fY29udGV4 dF9jcmVhdGUoaTkxNSk7CisJfQorCisJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBleHQuY2xv bmVfaWQpOworfQorCitzdGF0aWMgdm9pZCBjbG9uZV9lbmdpbmVzKGludCBpOTE1KQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHNldCA9IHsKKwkJ eyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCisJCXsgLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMgfSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfZXh0X2Nsb25lIGV4dCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09O VEVYVF9DUkVBVEVfRVhUX0NMT05FIH0sCisJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9F TkdJTkVTLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgY3Jl YXRlID0geworCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJ T05TLAorCQkuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KSwKKwl9OworCUk5MTVf REVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhleHBlY3RlZCwgNjQpOworCUk5MTVfREVGSU5F X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVzLCA2NCk7CisJdWludDY0X3QgZXhfc2l6ZTsK KworCW1lbXNldCgmZXhwZWN0ZWQsIDAsIHNpemVvZihleHBlY3RlZCkpOworCW1lbXNldCgmZW5n aW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMpKTsKKworCWlndF9yZXF1aXJlKF9fZ2VtX2NvbnRleHRf c2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pID09IDApOworCisJZm9yIChpbnQgcGFzcyA9IDA7 IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmluZyBkZWZhdWx0LCB0aGVuIGNoaWxkICovCisJ CWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0LmNsb25lX2lkKTsKKwkJaWd0X2Fzc2VydF9l cShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDApOworCisJCXNldC5wYXJhbS5jdHhfaWQg PSBleHQuY2xvbmVfaWQ7CisJCXNldC5wYXJhbS5zaXplID0gc2l6ZW9mKGV4cGVjdGVkKTsKKwkJ c2V0LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZleHBlY3RlZCk7CisJCWdlbV9jb250 ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJZXhfc2l6ZSA9IHNldC5wYXJhbS5z aXplOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOworCQlzZXQucGFyYW0u c2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKKwkJc2V0LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2lu dGVyKCZlbmdpbmVzKTsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0p OworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwgSTkxNV9DT05URVhUX1BB UkFNX0VOR0lORVMpOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6ZSwgZXhfc2l6 ZSk7CisJCWlndF9hc3NlcnQoIW1lbWNtcCgmZW5naW5lcywgJmV4cGVjdGVkLCBleF9zaXplKSk7 CisKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKKworCQlleHBl Y3RlZC5jbGFzc19pbnN0YW5jZVswXS5lbmdpbmVfY2xhc3MgPQorCQkJSTkxNV9FTkdJTkVfQ0xB U1NfSU5WQUxJRDsKKwkJZXhwZWN0ZWQuY2xhc3NfaW5zdGFuY2VbMF0uZW5naW5lX2luc3RhbmNl ID0KKwkJCUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfTk9ORTsKKwkJZXhfc2l6ZSA9IChzaXpl b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSArCisJCQkgICBzaXplb2YoZXhw ZWN0ZWQuY2xhc3NfaW5zdGFuY2VbMF0pKTsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNs b25lX2lkOworCQlzZXQucGFyYW0uc2l6ZSA9IGV4X3NpemU7CisJCXNldC5wYXJhbS52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcigmZXhwZWN0ZWQpOworCQlnZW1fY29udGV4dF9zZXRfcGFyYW0oaTkx NSwgJnNldC5wYXJhbSk7CisKKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNy ZWF0ZSksIDApOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOworCQlzZXQu cGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKKwkJc2V0LnBhcmFtLnZhbHVlID0gdG9fdXNl cl9wb2ludGVyKCZlbmdpbmVzKTsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQu cGFyYW0pOworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5zaXplLCBleF9zaXplKTsK KwkJaWd0X2Fzc2VydCghbWVtY21wKCZlbmdpbmVzLCAmZXhwZWN0ZWQsIGV4X3NpemUpKTsKKwor CQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCS8qIGNsb25l IGJ1dCB0aGVuIHJlc2V0IGVuZ2luZXMgdG8gZGVmYXVsdCAqLworCQlzZXQucGFyYW0uY3R4X2lk ID0gMDsKKwkJc2V0LnBhcmFtLnNpemUgPSAwOworCQlzZXQucGFyYW0udmFsdWUgPSAwOworCQll eHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmc2V0KTsKKworCQlpZ3Rf YXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisJCWV4dC5iYXNlLm5l eHRfZXh0ZW5zaW9uID0gMDsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsK KwkJc2V0LnBhcmFtLnNpemUgPSBzaXplb2YoZW5naW5lcyk7CisJCXNldC5wYXJhbS52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyk7CisJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1 LCAmc2V0LnBhcmFtKTsKKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnNpemUsIDApOwor CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7CisKKwkJLyogQW5k IGNoZWNrIHdlIGlnbm9yZSB0aGUgZmxhZyAqLworCQlleHQuZmxhZ3MgPSAwOworCQlpZ3RfYXNz ZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisJCWV4dC5mbGFncyA9IEk5 MTVfQ09OVEVYVF9DTE9ORV9FTkdJTkVTOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUu Y3R4X2lkOworCQlzZXQucGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKKwkJc2V0LnBhcmFt LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKTsKKwkJZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6 ZSwgMCk7CisKKwkJZXh0LmNsb25lX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOworCX0K KworCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgZXh0LmNsb25lX2lkKTsKK30KKworc3RhdGlj IHZvaWQgY2xvbmVfc2NoZWR1bGVyKGludCBpOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHNldCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09O VEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCisJCXsgLnBhcmFtID0gSTkxNV9DT05URVhUX1BB UkFNX1BSSU9SSVRZIH0sCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRl X2V4dF9jbG9uZSBleHQgPSB7CisJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9D TE9ORSB9LAorCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ0xPTkVfU0NIRURBVFRSLAorCX07CisJ c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgY3JlYXRlID0geworCQkuZmxh Z3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TLAorCQkuZXh0ZW5z aW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KSwKKwl9OworCWludCBleHBlY3RlZDsKKworCWln dF9yZXF1aXJlKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pID09IDAp OworCisJZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmluZyBk ZWZhdWx0LCB0aGVuIGNoaWxkICovCisJCWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0LmNs b25lX2lkKTsKKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDAp OworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0X2dl dF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFsdWU7 CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7CisJCWdlbV9jb250ZXh0X2dl dF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFy YW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSk7CisJCWlndF9hc3NlcnRfZXEo KGludClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1fY29udGV4dF9kZXN0cm95 KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCWV4cGVjdGVkID0gc2V0LnBhcmFtLnZhbHVlID0g MTsKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0 KGk5MTUsICZjcmVhdGUpLCAwKTsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9p ZDsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9h c3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwgSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZ KTsKKwkJaWd0X2Fzc2VydF9lcSgoaW50KXNldC5wYXJhbS52YWx1ZSwgZXhwZWN0ZWQpOworCisJ CWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7CisKKwkJLyogY2xvbmUg YnV0IHRoZW4gcmVzZXQgcHJpb3JpdHkgdG8gZGVmYXVsdCAqLworCQlzZXQucGFyYW0uY3R4X2lk ID0gMDsKKwkJc2V0LnBhcmFtLnZhbHVlID0gMDsKKwkJZXh0LmJhc2UubmV4dF9leHRlbnNpb24g PSB0b191c2VyX3BvaW50ZXIoJnNldCk7CisJCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5 MTUsICZjcmVhdGUpLCAwKTsKKwkJZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSAwOworCisJCXNl dC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOworCQlnZW1fY29udGV4dF9nZXRfcGFyYW0o aTkxNSwgJnNldC5wYXJhbSk7CisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS52YWx1ZSwg MCk7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJZ2VtX2NvbnRleHRf Z2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFy YW0udmFsdWUsIDEpOworCisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9p ZCk7CisJCWV4dC5jbG9uZV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKKwl9CisKKwln ZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGV4dC5jbG9uZV9pZCk7Cit9CisKK3N0YXRpYyB2b2lk IGNsb25lX3ZtKGludCBpOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVh dGVfZXh0X3NldHBhcmFtIHNldCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVf RVhUX1NFVFBBUkFNIH0sCisJCXsgLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1ZNIH0sCisJ fTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9jbG9uZSBleHQgPSB7 CisJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9DTE9ORSB9LAorCQkuZmxhZ3Mg PSBJOTE1X0NPTlRFWFRfQ0xPTkVfVk0sCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7CisJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DUkVBVEVf RkxBR1NfVVNFX0VYVEVOU0lPTlMsCisJCS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZl eHQpLAorCX07CisJdWludDMyX3Qgdm1faWRbMl07CisJaW50IGV4cGVjdGVkOworCisJaWd0X3Jl cXVpcmUoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSkgPT0gLUVOT0VO VCk7CisKKwlzZXQucGFyYW0uY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOworCWdl bV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwl2bV9pZFswXSA9IHNldC5w YXJhbS52YWx1ZTsKKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIHNldC5wYXJhbS5jdHhfaWQp OworCXNldC5wYXJhbS5jdHhfaWQgPSAwOworCisJdm1faWRbMV0gPSBnZW1fdm1fY3JlYXRlKGk5 MTUpOworCisJZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmlu ZyBkZWZhdWx0LCB0aGVuIGNoaWxkICovCisJCWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0 LmNsb25lX2lkKTsKKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSks IDApOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0 X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFs dWU7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7CisJCWdlbV9jb250ZXh0 X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQu cGFyYW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9WTSk7CisJCWlndF9hc3NlcnRfZXEoKGlu dClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1fY29udGV4dF9kZXN0cm95KGk5 MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCWV4cGVjdGVkID0gc2V0LnBhcmFtLnZhbHVlID0gdm1f aWRbMF07CisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRl X2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5j dHhfaWQ7CisJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlp Z3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9WTSk7 CisJCWlndF9hc3NlcnRfZXEoKGludClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQln ZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCQlleHQuY2xvbmVfaWQg PSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSk7CisJfQorCisJZ2VtX2NvbnRleHRfZGVzdHJveShp OTE1LCBleHQuY2xvbmVfaWQpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZt X2lkKTsgaSsrKQorCQlnZW1fdm1fZGVzdHJveShpOTE1LCB2bV9pZFtpXSk7Cit9CisKK2lndF9t YWluCit7CisJaW50IGk5MTUgPSAtMTsKKworCWlndF9maXh0dXJlIHsKKwkJaTkxNSA9IGRybV9v cGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlpZ3RfcmVxdWlyZV9nZW0oaTkxNSk7CisJCWdl bV9yZXF1aXJlX2NvbnRleHRzKGk5MTUpOworCisJCWlndF9yZXF1aXJlKGhhc19jdHhfY2xvbmUo aTkxNSkpOworCX0KKworCWlndF9zdWJ0ZXN0KCJpbnZhbGlkIikKKwkJaW52YWxpZF9jbG9uZShp OTE1KTsKKworCWlndF9zdWJ0ZXN0KCJlbmdpbmVzIikKKwkJY2xvbmVfZW5naW5lcyhpOTE1KTsK KworCWlndF9zdWJ0ZXN0KCJmbGFncyIpCisJCWNsb25lX2ZsYWdzKGk5MTUpOworCisJaWd0X3N1 YnRlc3QoInNjaGVkdWxlciIpCisJCWNsb25lX3NjaGVkdWxlcihpOTE1KTsKKworCWlndF9zdWJ0 ZXN0KCJ2bSIpCisJCWNsb25lX3ZtKGk5MTUpOworCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShp OTE1KTsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29u LmJ1aWxkCmluZGV4IDk0OWVlZmQ2Zi4uN2MxOTRjM2UzIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNv bi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTA4LDYgKzEwOCw3IEBAIGk5MTVf cHJvZ3MgPSBbCiAJJ2dlbV9jc19wcmVmZXRjaCcsCiAJJ2dlbV9jc190bGInLAogCSdnZW1fY3R4 X2JhZF9kZXN0cm95JywKKwknZ2VtX2N0eF9jbG9uZScsCiAJJ2dlbV9jdHhfY3JlYXRlJywKIAkn Z2VtX2N0eF9leGVjJywKIAknZ2VtX2N0eF9pc29sYXRpb24nLAotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Fri, 22 Mar 2019 09:21:48 +0000 Message-Id: <20190322092155.1656-17-chris@chris-wilson.co.uk> In-Reply-To: <20190322092155.1656-1-chris@chris-wilson.co.uk> References: <20190322092155.1656-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 17/24] i915: Add gem_ctx_clone List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: RXhlcmNpc2UgY2xvbmluZyBjb250ZXh0cywgYW4gZXh0ZW5zaW9uIG9mIG1lcmVseSBjcmVhdGlu ZyBvbmUuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KLS0tCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICB8ICAgMSArCiB0ZXN0cy9pOTE1 L2dlbV9jdHhfY2xvbmUuYyB8IDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQs IDQyMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvaTkxNS9nZW1fY3R4 X2Nsb25lLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFr ZWZpbGUuc291cmNlcwppbmRleCA4MDliMjU2MTIuLjEyZjRiYmQ3NSAxMDA2NDQKLS0tIGEvdGVz dHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yMSw2 ICsyMSw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWRybV9pbXBvcnRfZXhwb3J0IFwKIAlkcm1fbW0g XAogCWRybV9yZWFkIFwKKwlpOTE1L2dlbV9jdHhfY2xvbmUgXAogCWk5MTUvZ2VtX3ZtX2NyZWF0 ZSBcCiAJa21zXzNkIFwKIAlrbXNfYWRkZmJfYmFzaWMgXApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkx NS9nZW1fY3R4X2Nsb25lLmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY2xvbmUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdkODNjNjM1MAotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3RzL2k5MTUvZ2VtX2N0eF9jbG9uZS5jCkBAIC0wLDAgKzEsNDIxIEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUg Imk5MTUvZ2VtX3ZtLmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKworc3RhdGljIGludCBfX2Ny ZWF0ZV9leHQoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0 ICphcmcpCit7CisJaW50IGVycjsKKworCWVyciA9IDA7CisJaWYgKGlndF9pb2N0bChpOTE1LCBE Uk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEVfRVhULCBhcmcpKQorCQllcnIgPSAtZXJy bm87CisKKwllcnJubyA9IDA7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGJvb2wgaGFzX2N0 eF9jbG9uZShpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRl X2V4dF9jbG9uZSBleHQgPSB7CisJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9D TE9ORSB9LAorCQkuY2xvbmVfaWQgPSAtMSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFU RV9GTEFHU19VU0VfRVhURU5TSU9OUywKKwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIo JmV4dCksCisJfTsKKwlyZXR1cm4gX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpID09IC1FTk9F TlQ7Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRfY2xvbmUoaW50IGk5MTUpCit7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgZXh0ID0geworCQl7IC5uYW1l ID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfQ0xPTkUgfSwKKwl9OworCXN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKKwkJLmZsYWdzID0gSTkxNV9DT05U RVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUywKKwkJLmV4dGVuc2lvbnMgPSB0b191c2Vy X3BvaW50ZXIoJmV4dCksCisJfTsKKworCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUs ICZjcmVhdGUpLCAwKTsKKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQp OworCisJZXh0LmZsYWdzID0gLTE7IC8qIEhvcGVmdWxseSB3ZSB3b24ndCBydW4gb3V0IG9mIGZs YWdzICovCisJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIC1FSU5W QUwpOworCWV4dC5mbGFncyA9IDA7CisKKwlleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xOwor CWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAtRUZBVUxUKTsKKwll eHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KTsKKwlpZ3RfYXNz ZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgLUUyQklHKTsKKwlleHQuYmFzZS5u ZXh0X2V4dGVuc2lvbiA9IDA7CisKKwlleHQuY2xvbmVfaWQgPSAtMTsKKwlpZ3RfYXNzZXJ0X2Vx KF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgLUVOT0VOVCk7CisJZXh0LmNsb25lX2lkID0g MDsKK30KKworc3RhdGljIHZvaWQgY2xvbmVfZmxhZ3MoaW50IGk5MTUpCit7CisJc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gc2V0ID0geworCQl7IC5uYW1l ID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gfSwKKwkJeyAucGFyYW0gPSBJOTE1 X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEUgfSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfZXh0X2Nsb25lIGV4dCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVY VF9DUkVBVEVfRVhUX0NMT05FIH0sCisJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9GTEFH UywKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9 IHsKKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUywK KwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4dCksCisJfTsKKwlpbnQgZXhwZWN0 ZWQ7CisKKwlzZXQucGFyYW0udmFsdWUgPSAxOyAvKiBkZWZhdWx0IGlzIHJlY292ZXJhYmxlICov CisJaWd0X3JlcXVpcmUoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSkg PT0gMCk7CisKKwlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgeyAvKiBjbG9u aW5nIGRlZmF1bHQsIHRoZW4gY2hpbGQgKi8KKwkJaWd0X2RlYnVnKCJDbG9uaW5nICVkXG4iLCBl eHQuY2xvbmVfaWQpOworCQlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRl KSwgMCk7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJZ2VtX2NvbnRl eHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlleHBlY3RlZCA9IHNldC5wYXJhbS52 YWx1ZTsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKKwkJZ2VtX2NvbnRl eHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNl dC5wYXJhbS5wYXJhbSwKKwkJCQkgIEk5MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRSk7CisJ CWlndF9hc3NlcnRfZXEoKGludClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1f Y29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCWV4cGVjdGVkID0gc2V0 LnBhcmFtLnZhbHVlID0gMDsKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJ Z2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9hc3NlcnRf ZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAwKTsKKworCQlzZXQucGFyYW0uY3R4X2lk ID0gY3JlYXRlLmN0eF9pZDsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFy YW0pOworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwKKwkJCQkgIEk5MTVf Q09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRSk7CisJCWlndF9hc3NlcnRfZXEoKGludClzZXQucGFy YW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0 ZS5jdHhfaWQpOworCisJCS8qIGNsb25lIGJ1dCB0aGVuIHJlc2V0IHByaW9yaXR5IHRvIGRlZmF1 bHQgKi8KKwkJc2V0LnBhcmFtLmN0eF9pZCA9IDA7CisJCXNldC5wYXJhbS52YWx1ZSA9IDE7CisJ CWV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZzZXQpOworCQlpZ3Rf YXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisJCWV4dC5iYXNlLm5l eHRfZXh0ZW5zaW9uID0gMDsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsK KwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlpZ3RfYXNzZXJ0 X2VxX3U2NChzZXQucGFyYW0udmFsdWUsIDEpOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQu Y2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJ aWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnZhbHVlLCAwKTsKKworCQlnZW1fY29udGV4dF9k ZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCQlleHQuY2xvbmVfaWQgPSBnZW1fY29udGV4 dF9jcmVhdGUoaTkxNSk7CisJfQorCisJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBleHQuY2xv bmVfaWQpOworfQorCitzdGF0aWMgdm9pZCBjbG9uZV9lbmdpbmVzKGludCBpOTE1KQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHNldCA9IHsKKwkJ eyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCisJCXsgLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMgfSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfZXh0X2Nsb25lIGV4dCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09O VEVYVF9DUkVBVEVfRVhUX0NMT05FIH0sCisJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9F TkdJTkVTLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgY3Jl YXRlID0geworCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJ T05TLAorCQkuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KSwKKwl9OworCUk5MTVf REVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhleHBlY3RlZCwgNjQpOworCUk5MTVfREVGSU5F X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVzLCA2NCk7CisJdWludDY0X3QgZXhfc2l6ZTsK KworCW1lbXNldCgmZXhwZWN0ZWQsIDAsIHNpemVvZihleHBlY3RlZCkpOworCW1lbXNldCgmZW5n aW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMpKTsKKworCWlndF9yZXF1aXJlKF9fZ2VtX2NvbnRleHRf c2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pID09IDApOworCisJZm9yIChpbnQgcGFzcyA9IDA7 IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmluZyBkZWZhdWx0LCB0aGVuIGNoaWxkICovCisJ CWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0LmNsb25lX2lkKTsKKwkJaWd0X2Fzc2VydF9l cShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDApOworCisJCXNldC5wYXJhbS5jdHhfaWQg PSBleHQuY2xvbmVfaWQ7CisJCXNldC5wYXJhbS5zaXplID0gc2l6ZW9mKGV4cGVjdGVkKTsKKwkJ c2V0LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZleHBlY3RlZCk7CisJCWdlbV9jb250 ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJZXhfc2l6ZSA9IHNldC5wYXJhbS5z aXplOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOworCQlzZXQucGFyYW0u c2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKKwkJc2V0LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2lu dGVyKCZlbmdpbmVzKTsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0p OworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwgSTkxNV9DT05URVhUX1BB UkFNX0VOR0lORVMpOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6ZSwgZXhfc2l6 ZSk7CisJCWlndF9hc3NlcnQoIW1lbWNtcCgmZW5naW5lcywgJmV4cGVjdGVkLCBleF9zaXplKSk7 CisKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKKworCQlleHBl Y3RlZC5jbGFzc19pbnN0YW5jZVswXS5lbmdpbmVfY2xhc3MgPQorCQkJSTkxNV9FTkdJTkVfQ0xB U1NfSU5WQUxJRDsKKwkJZXhwZWN0ZWQuY2xhc3NfaW5zdGFuY2VbMF0uZW5naW5lX2luc3RhbmNl ID0KKwkJCUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfTk9ORTsKKwkJZXhfc2l6ZSA9IChzaXpl b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSArCisJCQkgICBzaXplb2YoZXhw ZWN0ZWQuY2xhc3NfaW5zdGFuY2VbMF0pKTsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNs b25lX2lkOworCQlzZXQucGFyYW0uc2l6ZSA9IGV4X3NpemU7CisJCXNldC5wYXJhbS52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcigmZXhwZWN0ZWQpOworCQlnZW1fY29udGV4dF9zZXRfcGFyYW0oaTkx NSwgJnNldC5wYXJhbSk7CisKKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNy ZWF0ZSksIDApOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOworCQlzZXQu cGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKKwkJc2V0LnBhcmFtLnZhbHVlID0gdG9fdXNl cl9wb2ludGVyKCZlbmdpbmVzKTsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQu cGFyYW0pOworCisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5zaXplLCBleF9zaXplKTsK KwkJaWd0X2Fzc2VydCghbWVtY21wKCZlbmdpbmVzLCAmZXhwZWN0ZWQsIGV4X3NpemUpKTsKKwor CQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCS8qIGNsb25l IGJ1dCB0aGVuIHJlc2V0IGVuZ2luZXMgdG8gZGVmYXVsdCAqLworCQlzZXQucGFyYW0uY3R4X2lk ID0gMDsKKwkJc2V0LnBhcmFtLnNpemUgPSAwOworCQlzZXQucGFyYW0udmFsdWUgPSAwOworCQll eHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmc2V0KTsKKworCQlpZ3Rf YXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisJCWV4dC5iYXNlLm5l eHRfZXh0ZW5zaW9uID0gMDsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsK KwkJc2V0LnBhcmFtLnNpemUgPSBzaXplb2YoZW5naW5lcyk7CisJCXNldC5wYXJhbS52YWx1ZSA9 IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyk7CisJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1 LCAmc2V0LnBhcmFtKTsKKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnNpemUsIDApOwor CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7CisKKwkJLyogQW5k IGNoZWNrIHdlIGlnbm9yZSB0aGUgZmxhZyAqLworCQlleHQuZmxhZ3MgPSAwOworCQlpZ3RfYXNz ZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisJCWV4dC5mbGFncyA9IEk5 MTVfQ09OVEVYVF9DTE9ORV9FTkdJTkVTOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUu Y3R4X2lkOworCQlzZXQucGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKKwkJc2V0LnBhcmFt LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKTsKKwkJZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6 ZSwgMCk7CisKKwkJZXh0LmNsb25lX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOworCX0K KworCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgZXh0LmNsb25lX2lkKTsKK30KKworc3RhdGlj IHZvaWQgY2xvbmVfc2NoZWR1bGVyKGludCBpOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHNldCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09O VEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCisJCXsgLnBhcmFtID0gSTkxNV9DT05URVhUX1BB UkFNX1BSSU9SSVRZIH0sCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRl X2V4dF9jbG9uZSBleHQgPSB7CisJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9D TE9ORSB9LAorCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ0xPTkVfU0NIRURBVFRSLAorCX07CisJ c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgY3JlYXRlID0geworCQkuZmxh Z3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TLAorCQkuZXh0ZW5z aW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KSwKKwl9OworCWludCBleHBlY3RlZDsKKworCWln dF9yZXF1aXJlKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pID09IDAp OworCisJZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmluZyBk ZWZhdWx0LCB0aGVuIGNoaWxkICovCisJCWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0LmNs b25lX2lkKTsKKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDAp OworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0X2dl dF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFsdWU7 CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7CisJCWdlbV9jb250ZXh0X2dl dF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFy YW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSk7CisJCWlndF9hc3NlcnRfZXEo KGludClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1fY29udGV4dF9kZXN0cm95 KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCWV4cGVjdGVkID0gc2V0LnBhcmFtLnZhbHVlID0g MTsKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0 KGk5MTUsICZjcmVhdGUpLCAwKTsKKworCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9p ZDsKKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCisJCWlndF9h c3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwgSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZ KTsKKwkJaWd0X2Fzc2VydF9lcSgoaW50KXNldC5wYXJhbS52YWx1ZSwgZXhwZWN0ZWQpOworCisJ CWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7CisKKwkJLyogY2xvbmUg YnV0IHRoZW4gcmVzZXQgcHJpb3JpdHkgdG8gZGVmYXVsdCAqLworCQlzZXQucGFyYW0uY3R4X2lk ID0gMDsKKwkJc2V0LnBhcmFtLnZhbHVlID0gMDsKKwkJZXh0LmJhc2UubmV4dF9leHRlbnNpb24g PSB0b191c2VyX3BvaW50ZXIoJnNldCk7CisJCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5 MTUsICZjcmVhdGUpLCAwKTsKKwkJZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSAwOworCisJCXNl dC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOworCQlnZW1fY29udGV4dF9nZXRfcGFyYW0o aTkxNSwgJnNldC5wYXJhbSk7CisJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS52YWx1ZSwg MCk7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKKwkJZ2VtX2NvbnRleHRf Z2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFy YW0udmFsdWUsIDEpOworCisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9p ZCk7CisJCWV4dC5jbG9uZV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKKwl9CisKKwln ZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGV4dC5jbG9uZV9pZCk7Cit9CisKK3N0YXRpYyB2b2lk IGNsb25lX3ZtKGludCBpOTE1KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVh dGVfZXh0X3NldHBhcmFtIHNldCA9IHsKKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVf RVhUX1NFVFBBUkFNIH0sCisJCXsgLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1ZNIH0sCisJ fTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9jbG9uZSBleHQgPSB7 CisJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9DTE9ORSB9LAorCQkuZmxhZ3Mg PSBJOTE1X0NPTlRFWFRfQ0xPTkVfVk0sCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7CisJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DUkVBVEVf RkxBR1NfVVNFX0VYVEVOU0lPTlMsCisJCS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZl eHQpLAorCX07CisJdWludDMyX3Qgdm1faWRbMl07CisJaW50IGV4cGVjdGVkOworCisJaWd0X3Jl cXVpcmUoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSkgPT0gLUVOT0VO VCk7CisKKwlzZXQucGFyYW0uY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOworCWdl bV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwl2bV9pZFswXSA9IHNldC5w YXJhbS52YWx1ZTsKKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIHNldC5wYXJhbS5jdHhfaWQp OworCXNldC5wYXJhbS5jdHhfaWQgPSAwOworCisJdm1faWRbMV0gPSBnZW1fdm1fY3JlYXRlKGk5 MTUpOworCisJZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmlu ZyBkZWZhdWx0LCB0aGVuIGNoaWxkICovCisJCWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0 LmNsb25lX2lkKTsKKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSks IDApOworCisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0 X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFs dWU7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7CisJCWdlbV9jb250ZXh0 X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQu cGFyYW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9WTSk7CisJCWlndF9hc3NlcnRfZXEoKGlu dClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQlnZW1fY29udGV4dF9kZXN0cm95KGk5 MTUsIGNyZWF0ZS5jdHhfaWQpOworCisJCWV4cGVjdGVkID0gc2V0LnBhcmFtLnZhbHVlID0gdm1f aWRbMF07CisJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7CisJCWdlbV9jb250ZXh0 X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRl X2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7CisKKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5j dHhfaWQ7CisJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKKworCQlp Z3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9WTSk7 CisJCWlndF9hc3NlcnRfZXEoKGludClzZXQucGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKKworCQln ZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOworCQlleHQuY2xvbmVfaWQg PSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSk7CisJfQorCisJZ2VtX2NvbnRleHRfZGVzdHJveShp OTE1LCBleHQuY2xvbmVfaWQpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZt X2lkKTsgaSsrKQorCQlnZW1fdm1fZGVzdHJveShpOTE1LCB2bV9pZFtpXSk7Cit9CisKK2lndF9t YWluCit7CisJaW50IGk5MTUgPSAtMTsKKworCWlndF9maXh0dXJlIHsKKwkJaTkxNSA9IGRybV9v cGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlpZ3RfcmVxdWlyZV9nZW0oaTkxNSk7CisJCWdl bV9yZXF1aXJlX2NvbnRleHRzKGk5MTUpOworCisJCWlndF9yZXF1aXJlKGhhc19jdHhfY2xvbmUo aTkxNSkpOworCX0KKworCWlndF9zdWJ0ZXN0KCJpbnZhbGlkIikKKwkJaW52YWxpZF9jbG9uZShp OTE1KTsKKworCWlndF9zdWJ0ZXN0KCJlbmdpbmVzIikKKwkJY2xvbmVfZW5naW5lcyhpOTE1KTsK KworCWlndF9zdWJ0ZXN0KCJmbGFncyIpCisJCWNsb25lX2ZsYWdzKGk5MTUpOworCisJaWd0X3N1 YnRlc3QoInNjaGVkdWxlciIpCisJCWNsb25lX3NjaGVkdWxlcihpOTE1KTsKKworCWlndF9zdWJ0 ZXN0KCJ2bSIpCisJCWNsb25lX3ZtKGk5MTUpOworCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShp OTE1KTsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29u LmJ1aWxkCmluZGV4IDk0OWVlZmQ2Zi4uN2MxOTRjM2UzIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNv bi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTA4LDYgKzEwOCw3IEBAIGk5MTVf cHJvZ3MgPSBbCiAJJ2dlbV9jc19wcmVmZXRjaCcsCiAJJ2dlbV9jc190bGInLAogCSdnZW1fY3R4 X2JhZF9kZXN0cm95JywKKwknZ2VtX2N0eF9jbG9uZScsCiAJJ2dlbV9jdHhfY3JlYXRlJywKIAkn Z2VtX2N0eF9leGVjJywKIAknZ2VtX2N0eF9pc29sYXRpb24nLAotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcg bGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=