From mboxrd@z Thu Jan 1 00:00:00 1970 From: bradley.d.volkin@intel.com Subject: [PATCH v3 1/5] drm/i915: Implement a framework for batch buffer pools Date: Mon, 3 Nov 2014 11:19:41 -0800 Message-ID: <1415042385-26445-2-git-send-email-bradley.d.volkin@intel.com> References: <1415042385-26445-1-git-send-email-bradley.d.volkin@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 48D2A6E356 for ; Mon, 3 Nov 2014 11:19:06 -0800 (PST) In-Reply-To: <1415042385-26445-1-git-send-email-bradley.d.volkin@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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgoKVGhpcyBhZGRz IGEgc21hbGwgbW9kdWxlIGZvciBtYW5hZ2luZyBhIHBvb2wgb2YgYmF0Y2ggYnVmZmVycy4KVGhl IG9ubHkgY3VycmVudCB1c2UgY2FzZSBpcyBmb3IgdGhlIGNvbW1hbmQgcGFyc2VyLCBhcyBkZXNj cmliZWQKaW4gdGhlIGtlcm5lbGRvYyBpbiB0aGUgcGF0Y2guIFRoZSBjb2RlIGlzIHNpbXBsZSwg YnV0IHNlcGFyYXRpbmcKaXQgb3V0IG1ha2VzIGl0IGVhc2llciB0byBjaGFuZ2UgdGhlIHVuZGVy bHlpbmcgYWxnb3JpdGhtcyBhbmQgdG8KZXh0ZW5kIHRvIGZ1dHVyZSB1c2UgY2FzZXMgc2hvdWxk IHRoZXkgYXJpc2UuCgpUaGUgaW50ZXJmYWNlIGlzIHNpbXBsZTogaW5pdCB0byBjcmVhdGUgYW4g ZW1wdHkgcG9vbCwgZmluaSB0bwpjbGVhbiBpdCB1cDsgZ2V0IHRvIG9idGFpbiBhIG5ldyBidWZm ZXIsIHB1dCB0byByZXR1cm4gaXQgdG8gdGhlCnBvb2wuIE5vdGUgdGhhdCBhbGwgYnVmZmVycyBt dXN0IGJlIHJldHVybmVkIHRvIHRoZSBwb29sIGJlZm9yZQpjbGVhbmluZyB1cCB0aGUgcG9vbC4K CkJ1ZmZlcnMgYXJlIHB1cmdlYWJsZSB3aGlsZSBpbiB0aGUgcG9vbCwgYnV0IG5vdCBleHBsaWNp dGx5CnRydW5jYXRlZCBpbiBvcmRlciB0byBhdm9pZCBvdmVyaGVhZCBkdXJpbmcgZXhlY2J1Zi4K CkxvY2tpbmcgaXMgY3VycmVudGx5IGJhc2VkIG9uIHRoZSBjYWxsZXIgaG9sZGluZyB0aGUgc3Ry dWN0X211dGV4LgpXZSBhbHJlYWR5IGRvIHRoYXQgaW4gdGhlIHBsYWNlcyB3aGVyZSB3ZSB3aWxs IHVzZSB0aGUgYmF0Y2ggcG9vbApmb3IgdGhlIGNvbW1hbmQgcGFyc2VyLgoKdjI6Ci0gcy9CVUdf T04vV0FSTl9PTi8gZm9yIGxvY2tpbmcgYXNzZXJ0aW9ucwotIFJlbW92ZSB0aGUgY2FwIG9uIHBv b2wgc2l6ZQotIFN3aXRjaCBmcm9tIGFsbG9jL2ZyZWUgdG8gaW5pdC9maW5pCgp2MzoKLSBJZGlv bWF0aWMgbG9vcGluZyBzdHJ1Y3R1cmUgaW4gX2ZpbmkKLSBDb3JyZWN0IGhhbmRsaW5nIG9mIHB1 cmdlZCBvYmplY3RzCi0gRG9uJ3QgcmV0dXJuIGEgYnVmZmVyIHRoYXQncyB0b28gbXVjaCBsYXJn ZXIgdGhhbiBuZWVkZWQKCnY0OgotIFJlYmFzZWQgdG8gbGF0ZXN0IC1uaWdodGx5CgpTaWduZWQt b2ZmLWJ5OiBCcmFkIFZvbGtpbiA8YnJhZGxleS5kLnZvbGtpbkBpbnRlbC5jb20+Ci0tLQogRG9j dW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsICAgICAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgMTcgKysrKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogNSBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwoKZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9k cm0udG1wbAppbmRleCBmNmE5ZDdiLi4xMzNmNGU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9u L0RvY0Jvb2svZHJtLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCkBA IC0zOTU4LDYgKzM5NTgsMTEgQEAgaW50IG51bV9pb2N0bHM7PC9zeW5vcHNpcz4KICFJZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKICAgICAgIDwvc2VjdDI+CiAgICAgICA8 c2VjdDI+CisgICAgICAgIDx0aXRsZT5CYXRjaGJ1ZmZlciBQb29sczwvdGl0bGU+CishUGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBiYXRjaCBwb29sCishSWRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYworICAgICAgPC9zZWN0Mj4KKyAg ICAgIDxzZWN0Mj4KICAgICAgICAgPHRpdGxlPkxvZ2ljYWwgUmluZ3MsIExvZ2ljYWwgUmluZyBD b250ZXh0cyBhbmQgRXhlY2xpc3RzPC90aXRsZT4KICFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgTG9naWNhbCBSaW5ncywgTG9naWNhbCBSaW5nIENvbnRleHRzIGFuZCBFeGVjbGlz dHMKICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK aW5kZXggODkxZTU4NC4uNzNjZDJkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTE5LDYgKzE5 LDcgQEAgaTkxNS0kKENPTkZJR19ERUJVR19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8KIAogIyBHRU0g Y29kZQogaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKKwkgIGk5MTVfZ2VtX2JhdGNoX3Bv b2wubyBcCiAJICBpOTE1X2dlbV9jb250ZXh0Lm8gXAogCSAgaTkxNV9nZW1fcmVuZGVyX3N0YXRl Lm8gXAogCSAgaTkxNV9nZW1fZGVidWcubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA2 YTczODAzLi5mYmYxMGNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTExMjYsNiArMTEy NiwxMiBAQCBzdHJ1Y3QgaW50ZWxfbDNfcGFyaXR5IHsKIAlpbnQgd2hpY2hfc2xpY2U7CiB9Owog CitzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCB7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldjsK KwlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OworCXN0cnVjdCBsaXN0X2hlYWQgaW5hY3Rp dmVfbGlzdDsKK307CisKIHN0cnVjdCBpOTE1X2dlbV9tbSB7CiAJLyoqIE1lbW9yeSBhbGxvY2F0 b3IgZm9yIEdUVCBzdG9sZW4gbWVtb3J5ICovCiAJc3RydWN0IGRybV9tbSBzdG9sZW47CkBAIC0x Nzk3LDYgKzE4MDMsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJLyoqIFVzZWQg aW4gZXhlY2J1ZiB0byB0ZW1wb3JhcmlseSBob2xkIGEgcmVmICovCiAJc3RydWN0IGxpc3RfaGVh ZCBvYmpfZXhlY19saW5rOwogCisJc3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpc3Q7CisK IAkvKioKIAkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0IGlzIG9uIHRoZSBhY3RpdmUgbGlz dHMgKGhhcyBwZW5kaW5nCiAJICogcmVuZGVyaW5nIGFuZCBzbyBhIG5vbi16ZXJvIHNlcW5vKSwg YW5kIGlzIG5vdCBzZXQgaWYgaXQgaSBzIG9uCkBAIC0yNzU4LDYgKzI3NjYsMTUgQEAgdm9pZCBp OTE1X2Rlc3Ryb3lfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGk5 MTVfZ2V0X2V4dHJhX2luc3Rkb25lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90ICpp bnN0ZG9uZSk7CiBjb25zdCBjaGFyICppOTE1X2NhY2hlX2xldmVsX3N0cihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHR5cGUpOwogCisvKiBpOTE1X2dlbV9iYXRjaF9wb29sLmMg Ki8KK3ZvaWQgaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisJCQkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9vbCk7Cit2b2lkIGk5MTVf Z2VtX2JhdGNoX3Bvb2xfZmluaShzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9vbCk7Citz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCoKK2k5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVj dCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLCBzaXplX3Qgc2l6ZSk7Cit2b2lkIGk5MTVfZ2Vt X2JhdGNoX3Bvb2xfcHV0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAorCQkJICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKKwogLyogaTkxNV9jbWRfcGFyc2Vy LmMgKi8KIGludCBpOTE1X2NtZF9wYXJzZXJfZ2V0X3ZlcnNpb24odm9pZCk7CiBpbnQgaTkxNV9j bWRfcGFyc2VyX2luaXRfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCmluZGV4IDdlOTE5NzguLjRkYmQ3YjkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwpAQCAtNDMzNyw2ICs0MzM3LDcgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCUlOSVRfTElTVF9IRUFEKCZvYmotPnJp bmdfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+b2JqX2V4ZWNfbGluayk7CiAJSU5JVF9M SVNUX0hFQUQoJm9iai0+dm1hX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZvYmotPmJhdGNoX3Bv b2xfbGlzdCk7CiAKIAlvYmotPm9wcyA9IG9wczsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fYmF0Y2hfcG9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZk NTI2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9i YXRjaF9wb29sLmMKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNCBJ bnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZU V0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKKy8qKgorICogRE9DOiBi YXRjaCBwb29sCisgKgorICogSW4gb3JkZXIgdG8gc3VibWl0IGJhdGNoIGJ1ZmZlcnMgYXMgJ3Nl Y3VyZScsIHRoZSBzb2Z0d2FyZSBjb21tYW5kIHBhcnNlcgorICogbXVzdCBlbnN1cmUgdGhhdCBh IGJhdGNoIGJ1ZmZlciBjYW5ub3QgYmUgbW9kaWZpZWQgYWZ0ZXIgcGFyc2luZy4gSXQgZG9lcwor ICogdGhpcyBieSBjb3B5aW5nIHRoZSB1c2VyIHByb3ZpZGVkIGJhdGNoIGJ1ZmZlciBjb250ZW50 cyB0byBhIGtlcm5lbCBvd25lZAorICogYnVmZmVyIGZyb20gd2hpY2ggdGhlIGhhcmR3YXJlIHdp bGwgYWN0dWFsbHkgZXhlY3V0ZSwgYW5kIGJ5IGNhcmVmdWxseQorICogbWFuYWdpbmcgdGhlIGFk ZHJlc3Mgc3BhY2UgYmluZGluZ3MgZm9yIHN1Y2ggYnVmZmVycy4KKyAqCisgKiBUaGUgYmF0Y2gg cG9vbCBmcmFtZXdvcmsgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHRoZSBkcml2ZXIgdG8gbWFu YWdlIGEKKyAqIHNldCBvZiBzY3JhdGNoIGJ1ZmZlcnMgdG8gdXNlIGZvciB0aGlzIHB1cnBvc2Uu IFRoZSBmcmFtZXdvcmsgY2FuIGJlCisgKiBleHRlbmRlZCB0byBzdXBwb3J0IG90aGVyIHVzZXMg Y2FzZXMgc2hvdWxkIHRoZXkgYXJpc2UuCisgKi8KKworLyoqCisgKiBpOTE1X2dlbV9iYXRjaF9w b29sX2luaXQoKSAtIGluaXRpYWxpemUgYSBiYXRjaCBidWZmZXIgcG9vbAorICogQGRldjogdGhl IGRybSBkZXZpY2UKKyAqIEBwb29sOiB0aGUgYmF0Y2ggYnVmZmVyIHBvb2wKKyAqLwordm9pZCBp OTE1X2dlbV9iYXRjaF9wb29sX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAg IHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sKQoreworCXBvb2wtPmRldiA9IGRldjsK KwlJTklUX0xJU1RfSEVBRCgmcG9vbC0+YWN0aXZlX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZw b29sLT5pbmFjdGl2ZV9saXN0KTsKK30KKworLyoqCisgKiBpOTE1X2dlbV9iYXRjaF9wb29sX2Zp bmkoKSAtIGNsZWFuIHVwIGEgYmF0Y2ggYnVmZmVyIHBvb2wKKyAqIEBwb29sOiB0aGUgcG9vbCB0 byBjbGVhbiB1cAorICoKKyAqIE5vdGU6IENhbGxlcnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0 ZXguIENhbGxlcnMgbXVzdCBhbHNvIGVuc3VyZQorICogICAgICAgdGhhdCBhbGwgYnVmZmVycyBo YXZlIGJlZW4gcmV0dXJuZWQgdG8gdGhlIHBvb2wuCisgKi8KK3ZvaWQgaTkxNV9nZW1fYmF0Y2hf cG9vbF9maW5pKHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sKQoreworCVdBUk5fT04o IW11dGV4X2lzX2xvY2tlZCgmcG9vbC0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKwlXQVJOX09OKCFs aXN0X2VtcHR5KCZwb29sLT5hY3RpdmVfbGlzdCkpOworCisJd2hpbGUgKCFsaXN0X2VtcHR5KCZw b29sLT5pbmFjdGl2ZV9saXN0KSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0KKwkJCWxpc3RfZmlyc3RfZW50cnkoJnBvb2wtPmluYWN0aXZlX2xpc3QsCisJCQkJCSBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwKKwkJCQkJIGJhdGNoX3Bvb2xfbGlzdCk7CisKKwkJbGlz dF9kZWxfaW5pdCgmb2JqLT5iYXRjaF9wb29sX2xpc3QpOworCQlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZSgmb2JqLT5iYXNlKTsKKwl9Cit9CisKKy8qKgorICogaTkxNV9nZW1fYmF0Y2hfcG9v bF9nZXQoKSAtIHNlbGVjdCBhIGJ1ZmZlciBmcm9tIHRoZSBwb29sCisgKiBAcG9vbDogdGhlIGJh dGNoIGJ1ZmZlciBwb29sCisgKiBAc2l6ZTogdGhlIG1pbmltdW0gZGVzaXJlZCBzaXplIG9mIHRo ZSByZXR1cm5lZCBidWZmZXIKKyAqCisgKiBGaW5kcyBvciBhbGxvY2F0ZXMgYSBiYXRjaCBidWZm ZXIgaW4gdGhlIHBvb2wgd2l0aCBhdCBsZWFzdCB0aGUgcmVxdWVzdGVkCisgKiBzaXplLiBUaGUg YnVmZmVyIHdpbGwgbm90IGJlIHVzZWQgdG8gc2F0aXNmeSBmdXJ0aGVyCisgKiBpOTE1X2dlbV9i YXRjaF9wb29sX2dldCgpIHJlcXVlc3RzIHVudGlsIHRoZSBjb3JyZXNwb25kaW5nCisgKiBpOTE1 X2dlbV9iYXRjaF9wb29sX3B1dCgpIGNhbGwuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9y IGFueSBkb21haW4gb3IKKyAqIGFjdGl2ZS9pbmFjdGl2ZSBtYW5hZ2VtZW50IGZvciB0aGUgcmV0 dXJuZWQgYnVmZmVyLgorICoKKyAqIE5vdGU6IENhbGxlcnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3Rf bXV0ZXgKKyAqCisgKiBSZXR1cm46IHRoZSBzZWxlY3RlZCBiYXRjaCBidWZmZXIgb2JqZWN0Cisg Ki8KK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK2k5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0 KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAorCQkJc2l6ZV90IHNpemUpCit7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnRtcDsKKwlib29sIHdhc19wdXJnZWQ7CisKKwlXQVJOX09OKCFtdXRleF9p c19sb2NrZWQoJnBvb2wtPmRldi0+c3RydWN0X211dGV4KSk7CisKKwlkbyB7CisJCXdhc19wdXJn ZWQgPSBmYWxzZTsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJnBvb2wtPmluYWN0aXZl X2xpc3QsIGJhdGNoX3Bvb2xfbGlzdCkgeworCQkJLyoKKwkJCSAqIFNlbGVjdCBhIGJ1ZmZlciB0 aGF0IGlzIGF0IGxlYXN0IGFzIGJpZyBhcyBuZWVkZWQKKwkJCSAqIGJ1dCBub3QgJ3RvbyBtdWNo JyBiaWdnZXIuIEEgYmV0dGVyIHdheSB0byBkbyB0aGlzCisJCQkgKiBtaWdodCBiZSB0byBidWNr ZXQgdGhlIHBvb2wgb2JqZWN0cyBiYXNlZCBvbiBzaXplLgorCQkJICovCisJCQlpZiAodG1wLT5i YXNlLnNpemUgPj0gc2l6ZSAmJgorCQkJICAgIHRtcC0+YmFzZS5zaXplIDw9ICgyICogc2l6ZSkp IHsKKwkJCQlvYmogPSB0bXA7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAob2JqICYm IG9iai0+bWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQpIHsKKwkJCXdhc19wdXJnZWQgPSB0cnVl OworCQkJbGlzdF9kZWwoJm9iai0+YmF0Y2hfcG9vbF9saXN0KTsKKwkJCWRybV9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOworCQkJb2JqID0gTlVMTDsKKwkJfQorCX0gd2hpbGUg KHdhc19wdXJnZWQpOworCisJaWYgKCFvYmopIHsKKwkJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2Jq ZWN0KHBvb2wtPmRldiwgc2l6ZSk7CisJCWlmICghb2JqKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7CisKKwkJbGlzdF9hZGRfdGFpbCgmb2JqLT5iYXRjaF9wb29sX2xpc3QsICZwb29sLT5p bmFjdGl2ZV9saXN0KTsKKwl9CisKKwlvYmotPm1hZHYgPSBJOTE1X01BRFZfV0lMTE5FRUQ7CisJ bGlzdF9tb3ZlX3RhaWwoJm9iai0+YmF0Y2hfcG9vbF9saXN0LCAmcG9vbC0+YWN0aXZlX2xpc3Qp OworCisJcmV0dXJuIG9iajsKK30KKworLyoqCisgKiBpOTE1X2dlbV9iYXRjaF9wb29sX3B1dCgp IC0gcmV0dXJuIGEgYnVmZmVyIHRvIHRoZSBwb29sCisgKiBAcG9vbDogdGhlIGJhdGNoIGJ1ZmZl ciBwb29sCisgKiBAb2JqOiB0aGUgYmF0Y2ggYnVmZmVyIG9iamVjdAorICoKKyAqIE5vdGU6IENh bGxlcnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXgKKyAqLwordm9pZCBpOTE1X2dlbV9iYXRj aF9wb29sX3B1dChzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9vbCwKKwkJCSAgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlXQVJOX09OKCFtdXRleF9pc19sb2Nr ZWQoJnBvb2wtPmRldi0+c3RydWN0X211dGV4KSk7CisJb2JqLT5tYWR2ID0gSTkxNV9NQURWX0RP TlRORUVEOworCWxpc3RfbW92ZV90YWlsKCZvYmotPmJhdGNoX3Bvb2xfbGlzdCwgJnBvb2wtPmlu YWN0aXZlX2xpc3QpOworfQotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==