From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Dai Subject: Re: [PATCH v10] drm/i915: Extend LRC pinning to cover GPU context writeback Date: Wed, 13 Jan 2016 11:28:06 -0800 Message-ID: <5696A546.3090606@intel.com> References: <1452701985-19706-1-git-send-email-nicholas.hoath@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id E45B27A08A for ; Wed, 13 Jan 2016 11:31:46 -0800 (PST) In-Reply-To: <1452701985-19706-1-git-send-email-nicholas.hoath@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Nick Hoath , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org VGhpcyB2ZXJzaW9uIHJlc29sdmVkIHRoZSBpc3N1ZSAoa2VybmVsIGJ1ZyBjaGVjayBpbiAKaW50 ZWxfbHJfY29udGV4dF9jbGVhbl9yaW5nKSBJIHJlcG9ydGVkIG9uIHByZXZpb3VzIHZlcnNpb25z LiBWZXJpZmllZCAKYnkgaWd0IGRydl9tb2R1bGVfcmVsb2FkX2Jhc2ljLCBnZW1fY2xvc2VfcmFj ZSBhbmQgLXQgYmFzaWMgdGVzdHMuCgpSZXZpZXdlZC1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRl bC5jb20+CgpPbiAwMS8xMy8yMDE2IDA4OjE5IEFNLCBOaWNrIEhvYXRoIHdyb3RlOgo+IFVzZSB0 aGUgZmlyc3QgcmV0aXJlZCByZXF1ZXN0IG9uIGEgbmV3IGNvbnRleHQgdG8gdW5waW4KPiB0aGUg b2xkIGNvbnRleHQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBodyBjb250ZXh0IHJlbWFpbnMKPiBi b3VuZCB1bnRpbCBpdCBoYXMgYmVlbiB3cml0dGVuIGJhY2sgdG8gYnkgdGhlIEdQVS4KPiBOb3cg dGhhdCB0aGUgY29udGV4dCBpcyBwaW5uZWQgdW50aWwgbGF0ZXIgaW4gdGhlIHJlcXVlc3QvY29u dGV4dAo+IGxpZmVjeWNsZSwgaXQgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHBpbm5lZCBmcm9tIGNv bnRleHRfcXVldWUgdG8KPiByZXRpcmVfcmVxdWVzdHMuCj4gVGhpcyBmaXhlcyBhbiBpc3N1ZSB3 aXRoIEd1QyBzdWJtaXNzaW9uIHdoZXJlIHRoZSBHUFUgbWlnaHQgbm90Cj4gaGF2ZSBmaW5pc2hl ZCB3cml0aW5nIGJhY2sgdGhlIGNvbnRleHQgYmVmb3JlIGl0IGlzIHVucGlubmVkLiBUaGlzCj4g cmVzdWx0cyBpbiBhIEdQVSBoYW5nLgo+Cj4gdjI6IE1vdmVkIHRoZSBuZXcgcGluIHRvIGNvdmVy IEd1QyBzdWJtaXNzaW9uIChBbGV4IERhaSkKPiAgICAgIE1vdmVkIHRoZSBuZXcgdW5waW4gdG8g cmVxdWVzdF9yZXRpcmUgdG8gZml4IGNvdmVyYWdlIGxlYWsKPiB2MzogQWRkZWQgc3dpdGNoIHRv IGRlZmF1bHQgY29udGV4dCBpZiBmcmVlaW5nIGEgc3RpbGwgcGlubmVkCj4gICAgICBjb250ZXh0 IGp1c3QgaW4gY2FzZSB0aGUgaHcgd2FzIGFjdHVhbGx5IHN0aWxsIHVzaW5nIGl0Cj4gdjQ6IFVu d3JhcHBlZCBjb250ZXh0IHVucGluIHRvIGFsbG93IGNhbGxpbmcgd2l0aG91dCBhIHJlcXVlc3QK PiB2NTogT25seSBjcmVhdGUgYSBzd2l0Y2ggdG8gaWRsZSBjb250ZXh0IGlmIHRoZSByaW5nIGRv ZXNuJ3QKPiAgICAgIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgcGVuZGluZyBvbiBpdCAoQWxleCBE YWkpCj4gICAgICBSZW5hbWUgdW5zYXZlZCB0byBkaXJ0eSB0byBhdm9pZCBkb3VibGUgbmVnYXRp dmVzIChEYXZlIEdvcmRvbikKPiAgICAgIENoYW5nZWQgX25vX3JlcSBwb3N0Zml4IHRvIF9fIHBy ZWZpeCBmb3IgY29uc2lzdGVuY3kgKERhdmUgR29yZG9uKQo+ICAgICAgU3BsaXQgb3V0IHBlciBl bmdpbmUgY2xlYW51cCBmcm9tIGNvbnRleHRfZnJlZSBhcyBpdAo+ICAgICAgd2FzIGdldHRpbmcg dW53aWVsZHkKPiAgICAgIENvcnJlY3RlZCBsb2NraW5nIChEYXZlIEdvcmRvbikKPiB2NjogUmVt b3ZlZCBzb21lIGJpa2VzaGVkZGluZyAoTWlrYSBLdW9wcGFsYSkKPiAgICAgIEFkZGVkIGV4cGxh bmF0aW9uIG9mIHRoZSBHdUMgaGFuZyB0aGF0IHRoaXMgZml4ZXMgKERhbmllbCBWZXR0ZXIpCj4g djc6IFJlbW92ZWQgZXh0cmEgcGVyIHJlcXVlc3QgcGlubmluZyBmcm9tIHJpbmcgcmVzZXQgY29k ZSAoQWxleCBEYWkpCj4gICAgICBBZGRlZCBmb3JjZWQgcmluZyB1bnBpbi9jbGVhbiBpbiBlcnJv ciBjYXNlIGluIGNvbnRleHQgZnJlZSAoQWxleCBEYWkpCj4gdjg6IFJlbmFtZWQgbHJjIHNwZWNp ZmljIGxhc3RfY29udGV4dCB0byBscmNfbGFzdF9jb250ZXh0IGFzIHRoZXJlCj4gICAgICB3ZXJl IHNvbWUgcmVzZXQgY2FzZXMgd2hlcmUgdGhlIGNvZGVwYXRocyBsZWFrZWQgKE1pa2EgS3VvcHBh bGEpCj4gICAgICBOVUxMJ2QgbGFzdF9jb250ZXh0IGluIHJlc2V0IGNhc2UgLSB0aGVyZSB3YXMg YSBwb2ludGVyIGxlYWsKPiAgICAgIGlmIHNvbWVvbmUgZGlkIHJlc2V0LT5jbG9zZSBjb250ZXh0 Lgo+IHY5OiBSZWJhc2Ugb3ZlciAiRml4IGNvbnRleHQvZW5naW5lIGNsZWFudXAgb3JkZXIiCj4g djEwOiBSZWJhc2Ugb3ZlciBuaWdodGx5LCByZW1vdmUgV0FSTl9PTiB3aGljaCBjYXVzZWQgdGhl Cj4gICAgICBkZXBlbmRlbmN5IG9uIGRldi4KPgo+IFNpZ25lZC1vZmYtYnk6IE5pY2sgSG9hdGgg PG5pY2hvbGFzLmhvYXRoQGludGVsLmNvbT4KPiBJc3N1ZTogVklaLTQyNzcKPiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBDYzogRGF2aWQgR29yZG9uIDxkYXZp ZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgo+IENjOiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiBDYzogTWlrYSBL dW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jICAgICAgICB8IDEzOCArKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggICAgICAgIHwgICAxICsK PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMSArCj4gICA1 IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDEwNGJkMTguLmQyOGUxMGEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtODgyLDYgKzg4Miw3IEBAIHN0cnVjdCBpbnRlbF9jb250 ZXh0IHsKPiAgIAlzdHJ1Y3Qgewo+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3Rh dGU7Cj4gICAJCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmOwo+ICsJCWJvb2wgZGly dHk7Cj4gICAJCWludCBwaW5fY291bnQ7Cj4gICAJfSBlbmdpbmVbSTkxNV9OVU1fUklOR1NdOwo+ ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZGRjMjFkNC4uN2I3OTQwNSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xNDEzLDYgKzE0MTMsOSBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCj4gICB7Cj4gICAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUocmVxdWVz dCk7Cj4gICAKPiArCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gKwkJaW50ZWxfbHJfY29u dGV4dF9jb21wbGV0ZV9jaGVjayhyZXF1ZXN0KTsKPiArCj4gICAJLyogV2Uga25vdyB0aGUgR1BV IG11c3QgaGF2ZSByZWFkIHRoZSByZXF1ZXN0IHRvIGhhdmUKPiAgIAkgKiBzZW50IHVzIHRoZSBz ZXFubyArIGludGVycnVwdCwgc28gdXNlIHRoZSBwb3NpdGlvbgo+ICAgCSAqIG9mIHRhaWwgb2Yg dGhlIHJlcXVlc3QgdG8gdXBkYXRlIHRoZSBsYXN0IGtub3duIHBvc2l0aW9uCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA1MDI3Njk5Li5iNjYxMDU4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiBAQCAtNTg1LDkgKzU4NSw2IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3Rz X2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yOwo+ICAgCWludCBudW1fZWxlbWVu dHMgPSAwOwo+ICAgCj4gLQlpZiAocmVxdWVzdC0+Y3R4ICE9IHJpbmctPmRlZmF1bHRfY29udGV4 dCkKPiAtCQlpbnRlbF9scl9jb250ZXh0X3BpbihyZXF1ZXN0KTsKPiAtCj4gICAJaTkxNV9nZW1f cmVxdWVzdF9yZWZlcmVuY2UocmVxdWVzdCk7Cj4gICAKPiAgIAlzcGluX2xvY2tfaXJxKCZyaW5n LT5leGVjbGlzdF9sb2NrKTsKPiBAQCAtNzYzLDYgKzc2MCwxMyBAQCBpbnRlbF9sb2dpY2FsX3Jp bmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCkKPiAgIAlpZiAoaW50ZWxfcmluZ19zdG9wcGVkKHJpbmcpKQo+ICAgCQlyZXR1cm47Cj4gICAK PiArCWlmIChyZXF1ZXN0LT5jdHggIT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KSB7Cj4gKwkJaWYg KCFyZXF1ZXN0LT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0uZGlydHkpIHsKPiArCQkJaW50ZWxfbHJf Y29udGV4dF9waW4ocmVxdWVzdCk7Cj4gKwkJCXJlcXVlc3QtPmN0eC0+ZW5naW5lW3JpbmctPmlk XS5kaXJ0eSA9IHRydWU7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgIAlpZiAoZGV2X3ByaXYtPmd1Yy5l eGVjYnVmX2NsaWVudCkKPiAgIAkJaTkxNV9ndWNfc3VibWl0KGRldl9wcml2LT5ndWMuZXhlY2J1 Zl9jbGllbnQsIHJlcXVlc3QpOwo+ICAgCWVsc2UKPiBAQCAtOTg5LDEyICs5OTMsNiBAQCB2b2lk IGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKPiAgIAlzcGluX3VubG9ja19pcnEoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwo+ICAgCj4g ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgdG1wLCAmcmV0aXJlZF9saXN0LCBleGVj bGlzdF9saW5rKSB7Cj4gLQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4Owo+ IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0KPiAtCQkJCWN0eC0+ZW5n aW5lW3JpbmctPmlkXS5zdGF0ZTsKPiAtCj4gLQkJaWYgKGN0eF9vYmogJiYgKGN0eCAhPSByaW5n LT5kZWZhdWx0X2NvbnRleHQpKQo+IC0JCQlpbnRlbF9scl9jb250ZXh0X3VucGluKHJlcSk7Cj4g ICAJCWxpc3RfZGVsKCZyZXEtPmV4ZWNsaXN0X2xpbmspOwo+ICAgCQlpOTE1X2dlbV9yZXF1ZXN0 X3VucmVmZXJlbmNlKHJlcSk7Cj4gICAJfQo+IEBAIC0xMDg5LDIxICsxMDg3LDM5IEBAIHJlc2V0 X3Bpbl9jb3VudDoKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLXZvaWQgaW50ZWxfbHJf Y29udGV4dF91bnBpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICtzdGF0aWMg dm9pZCBfX2ludGVsX2xyX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+ICAgewo+IC0Jc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZyA9IHJxLT5yaW5nOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmN0eF9vYmogPSBycS0+Y3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwo+IC0Jc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBycS0+cmluZ2J1ZjsKPiAtCj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0 ZTsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gY3R4LT5lbmdpbmVbcmlu Zy0+aWRdLnJpbmdidWY7Cj4gICAJaWYgKGN0eF9vYmopIHsKPiAgIAkJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+IC0JCWlmICgtLXJxLT5jdHgt PmVuZ2luZVtyaW5nLT5pZF0ucGluX2NvdW50ID09IDApIHsKPiArCQlpZiAoLS1jdHgtPmVuZ2lu ZVtyaW5nLT5pZF0ucGluX2NvdW50ID09IDApIHsKPiAgIAkJCWludGVsX3VucGluX3JpbmdidWZm ZXJfb2JqKHJpbmdidWYpOwo+ICAgCQkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oY3R4X29i aik7Cj4gICAJCX0KPiAgIAl9Cj4gICB9Cj4gICAKPiArdm9pZCBpbnRlbF9scl9jb250ZXh0X3Vu cGluKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gK3sKPiArCV9faW50ZWxfbHJf Y29udGV4dF91bnBpbihycS0+cmluZywgcnEtPmN0eCk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxf bHJfY29udGV4dF9jb21wbGV0ZV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAr Cj4gKwlpZiAocmluZy0+bHJjX2xhc3RfY29udGV4dCAmJiByaW5nLT5scmNfbGFzdF9jb250ZXh0 ICE9IHJlcS0+Y3R4ICYmCj4gKwkJCXJpbmctPmxyY19sYXN0X2NvbnRleHQtPmVuZ2luZVtyaW5n LT5pZF0uZGlydHkpIHsKPiArCQlfX2ludGVsX2xyX2NvbnRleHRfdW5waW4oCj4gKwkJCQlyaW5n LAo+ICsJCQkJcmluZy0+bHJjX2xhc3RfY29udGV4dCk7Cj4gKwkJcmluZy0+bHJjX2xhc3RfY29u dGV4dC0+ZW5naW5lW3JpbmctPmlkXS5kaXJ0eSA9IGZhbHNlOwo+ICsJfQo+ICsJcmluZy0+bHJj X2xhc3RfY29udGV4dCA9IHJlcS0+Y3R4Owo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBpbnRlbF9s b2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAgIHsKPiAgIAlpbnQgcmV0LCBpOwo+IEBAIC0yMzQ3LDYgKzIzNjMsNzQgQEAgcG9w dWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqY3R4X28KPiAgIH0KPiAgIAo+ICAgLyoqCj4gKyAqIGludGVsX2xyX2Nv bnRleHRfY2xlYW5fcmluZygpIC0gY2xlYW4gdGhlIHJpbmcgc3BlY2lmaWMgcGFydHMgb2YgYW4g TFJDCj4gKyAqIEBjdHg6IHRoZSBMUiBjb250ZXh0IGJlaW5nIGZyZWVkLgo+ICsgKiBAcmluZzog dGhlIGVuZ2luZSBiZWluZyBjbGVhbmVkCj4gKyAqIEBjdHhfb2JqOiB0aGUgaHcgY29udGV4dCBi ZWluZyB1bnJlZmVyZW5jZWQKPiArICogQHJpbmdidWY6IHRoZSByaW5nYnVmIGJlaW5nIGZyZWVk Cj4gKyAqCj4gKyAqIFRha2UgY2FyZSBvZiBjbGVhbmluZyB1cCB0aGUgcGVyLWVuZ2luZSBiYWNr aW5nCj4gKyAqIG9iamVjdHMgYW5kIHRoZSBsb2dpY2FsIHJpbmdidWZmZXIuCj4gKyAqLwo+ICtz dGF0aWMgdm9pZAo+ICtpbnRlbF9scl9jb250ZXh0X2NsZWFuX3Jpbmcoc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCwKPiArCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJ CSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiwKPiArCQkJICAgIHN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlm IChjdHggPT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KSB7Cj4gKwkJaW50ZWxfdW5waW5fcmluZ2J1 ZmZlcl9vYmoocmluZ2J1Zik7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oY3R4X29i aik7Cj4gKwl9Cj4gKwo+ICsJaWYgKGN0eC0+ZW5naW5lW3JpbmctPmlkXS5kaXJ0eSkgewo+ICsJ CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gTlVMTDsKPiArCj4gKwkJLyoqCj4g KwkJICogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHJlcXVlc3QgcGVuZGluZyBvbgo+ICsJCSAqIHRo aXMgcmluZywgd2FpdCBmb3IgdGhhdCB0byBjb21wbGV0ZSwKPiArCQkgKiBvdGhlcndpc2UgY3Jl YXRlIGEgc3dpdGNoIHRvIGlkbGUgcmVxdWVzdAo+ICsJCSAqLwo+ICsJCWlmIChsaXN0X2VtcHR5 KCZyaW5nLT5yZXF1ZXN0X2xpc3QpKSB7Cj4gKwkJCWludCByZXQ7Cj4gKwo+ICsJCQlyZXQgPSBp OTE1X2dlbV9yZXF1ZXN0X2FsbG9jKAo+ICsJCQkJCXJpbmcsCj4gKwkJCQkJcmluZy0+ZGVmYXVs dF9jb250ZXh0LAo+ICsJCQkJCSZyZXEpOwo+ICsJCQlpZiAoIXJldCkKPiArCQkJCWk5MTVfYWRk X3JlcXVlc3QocmVxKTsKPiArCQkJZWxzZQo+ICsJCQkJRFJNX0RFQlVHKCJGYWlsZWQgdG8gZW5z dXJlIGNvbnRleHQgc2F2ZWQiKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlyZXEgPSBsaXN0X2ZpcnN0 X2VudHJ5KAo+ICsJCQkJCSZyaW5nLT5yZXF1ZXN0X2xpc3QsCj4gKwkJCQkJdHlwZW9mKCpyZXEp LCBsaXN0KTsKPiArCQl9Cj4gKwkJaWYgKHJlcSkgewo+ICsJCQlyZXQgPSBpOTE1X3dhaXRfcmVx dWVzdChyZXEpOwo+ICsJCQlpZiAocmV0ICE9IDApIHsKPiArCQkJCS8qKgo+ICsJCQkJICogSWYg d2UgZ2V0IGhlcmUsIHRoZXJlJ3MgcHJvYmFibHkgYmVlbiBhIHJpbmcKPiArCQkJCSAqIHJlc2V0 LCBzbyB3ZSBqdXN0IGNsZWFuIHVwIHRoZSBkaXJ0eSBmbGFnLiYKPiArCQkJCSAqIHBpbiBjb3Vu dC4KPiArCQkJCSAqLwo+ICsJCQkJY3R4LT5lbmdpbmVbcmluZy0+aWRdLmRpcnR5ID0gZmFsc2U7 Cj4gKwkJCQlfX2ludGVsX2xyX2NvbnRleHRfdW5waW4oCj4gKwkJCQkJcmluZywKPiArCQkJCQlj dHgpOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICsKPiArCVdBUk5fT04oY3R4LT5lbmdpbmVbcmlu Zy0+aWRdLnBpbl9jb3VudCk7Cj4gKwlpbnRlbF9yaW5nYnVmZmVyX2ZyZWUocmluZ2J1Zik7Cj4g Kwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmY3R4X29iai0+YmFzZSk7Cj4gK30KPiArCj4g Ky8qKgo+ICAgICogaW50ZWxfbHJfY29udGV4dF9mcmVlKCkgLSBmcmVlIHRoZSBMUkMgc3BlY2lm aWMgYml0cyBvZiBhIGNvbnRleHQKPiAgICAqIEBjdHg6IHRoZSBMUiBjb250ZXh0IHRvIGZyZWUu Cj4gICAgKgo+IEBAIC0yMzU4LDcgKzI0NDQsNyBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJl ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+ICAgewo+ICAgCWludCBpOwo+ICAgCj4gLQlm b3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgewo+ICsJZm9yIChpID0gMDsgaSA8 IEk5MTVfTlVNX1JJTkdTOyArK2kpIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmN0eF9vYmogPSBjdHgtPmVuZ2luZVtpXS5zdGF0ZTsKPiAgIAo+ICAgCQlpZiAoY3R4X29iaikg ewo+IEBAIC0yMzY2LDEzICsyNDUyLDEwIEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9mcmVlKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4gICAJCQkJCWN0eC0+ZW5naW5lW2ldLnJpbmdidWY7 Cj4gICAJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiAg IAo+IC0JCQlpZiAoY3R4ID09IHJpbmctPmRlZmF1bHRfY29udGV4dCkgewo+IC0JCQkJaW50ZWxf dW5waW5fcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4gLQkJCQlpOTE1X2dlbV9vYmplY3RfZ2d0 dF91bnBpbihjdHhfb2JqKTsKPiAtCQkJfQo+IC0JCQlXQVJOX09OKGN0eC0+ZW5naW5lW3Jpbmct PmlkXS5waW5fY291bnQpOwo+IC0JCQlpbnRlbF9yaW5nYnVmZmVyX2ZyZWUocmluZ2J1Zik7Cj4g LQkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZjdHhfb2JqLT5iYXNlKTsKPiArCQkJaW50 ZWxfbHJfY29udGV4dF9jbGVhbl9yaW5nKGN0eCwKPiArCQkJCQkJICAgIHJpbmcsCj4gKwkJCQkJ CSAgICBjdHhfb2JqLAo+ICsJCQkJCQkgICAgcmluZ2J1Zik7Cj4gICAJCX0KPiAgIAl9Cj4gICB9 Cj4gQEAgLTI1NDgsNSArMjYzMSwxNCBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzZXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAo+ICAgCQlyaW5nYnVmLT5oZWFkID0gMDsKPiAgIAkJ cmluZ2J1Zi0+dGFpbCA9IDA7Cj4gKwo+ICsJCWlmIChjdHgtPmVuZ2luZVtyaW5nLT5pZF0uZGly dHkpIHsKPiArCQkJX19pbnRlbF9scl9jb250ZXh0X3VucGluKAo+ICsJCQkJCXJpbmcsCj4gKwkJ CQkJY3R4KTsKPiArCQkJY3R4LT5lbmdpbmVbcmluZy0+aWRdLmRpcnR5ID0gZmFsc2U7Cj4gKwkJ CWlmIChyaW5nLT5scmNfbGFzdF9jb250ZXh0ID09IGN0eCkKPiArCQkJCXJpbmctPmxyY19sYXN0 X2NvbnRleHQgPSBOVUxMOwo+ICsJCX0KPiAgIAl9Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKPiBpbmRleCBkZTQxYWQ2Li40ODY5MGY3OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5oCj4gQEAgLTEwNiw2ICsxMDYsNyBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgp Owo+ICAgdWludDY0X3QgaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjdHgsCj4gICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsK PiArdm9pZCBpbnRlbF9scl9jb250ZXh0X2NvbXBsZXRlX2NoZWNrKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKPiAgIAo+ICAgLyogRXhlY2xpc3RzICovCj4gICBpbnQgaW50ZWxf c2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgZW5h YmxlX2V4ZWNsaXN0cyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ IGluZGV4IDczNDlkOTIuLmZiMWRmODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCj4gQEAgLTI3Niw2ICsyNzYsNyBAQCBzdHJ1Y3QgIGludGVsX2VuZ2luZV9j cyB7Cj4gICAJCQkJICAgICAgdTMyIGZsdXNoX2RvbWFpbnMpOwo+ICAgCWludAkJKCplbWl0X2Ji X3N0YXJ0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkJIHU2NCBv ZmZzZXQsIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKTsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpscmNfbGFzdF9jb250ZXh0Owo+ICAgCj4gICAJLyoqCj4gICAJICogTGlzdCBvZiBvYmplY3Rz IGN1cnJlbnRseSBpbnZvbHZlZCBpbiByZW5kZXJpbmcgZnJvbSB0aGUKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==