From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [RFC 02/29] drm/i915: Introduce host graphics memory balloon for gvt Date: Mon, 08 Feb 2016 13:52:06 +0200 Message-ID: <1454932326.7479.2.camel@linux.intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> <1453976511-27322-3-git-send-email-zhi.a.wang@intel.com> <1454585228.9041.24.camel@linux.intel.com> <20160205100307.GA25298@zlv-hp-dev> <1454679649.8365.7.camel@linux.intel.com> <20160205141629.GA30188@zlv-hp-dev> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 B43F06E39C for ; Mon, 8 Feb 2016 03:52:04 -0800 (PST) In-Reply-To: <20160205141629.GA30188@zlv-hp-dev> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhiyuan Lv Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, david.j.cowperthwaite@intel.com, igvt-g@lists.01.org List-Id: intel-gfx@lists.freedesktop.org T24gcGUsIDIwMTYtMDItMDUgYXQgMjI6MTYgKzA4MDAsIFpoaXl1YW4gTHYgd3JvdGU6Cj4gSGkg Sm9vbmFzLAo+IAo+IE9uIEZyaSwgRmViIDA1LCAyMDE2IGF0IDAzOjQwOjQ5UE0gKzAyMDAsIEpv b25hcyBMYWh0aW5lbiB3cm90ZToKPiA+IEhpLAo+ID4gCj4gPiBPbiBwZSwgMjAxNi0wMi0wNSBh dCAxODowMyArMDgwMCwgWmhpeXVhbiBMdiB3cm90ZToKPiA+ID4gSGkgSm9vbmFzLAo+ID4gPiAK PiA+ID4gVGhhbmtzIG11Y2ggZm9yIHRoZSByZXZpZXchIFdlIHdpbGwgaW5jb3Jwb3JhdGUgdGhv c2UgcmV2aWV3IGNvbW1lbnRzIQo+ID4gPiAKPiA+ID4gTWVhbndoaWxlLCBpcyBpdCBnb29kIGVu b3VnaCB0byBkbyB0aGUgaG9zdCBiYWxsb29uaW5nIGxpa2UgYmVsb3c/IFRoZQo+ID4gPiBwcm9z IGlzIHRoYXQgaXQgaXMgdmVyeSBzaW1wbGUsIGVzcGVjaWFsbHkgY29uc2lkZXIgdGhhdCBndWVz dAo+ID4gPiBiYWxsb29uaW5nIGxvZ2ljIGhhcyBiZWVuIHRoZXJlLiBUaGFua3MhCj4gPiA+IAo+ ID4gCj4gPiBJIHRoaW5rIHNsaWNpbmcgaXQgZG93biBsaWtlIHRoYXQgaXMgZmluZS4gSXMgdGhl cmUgZ29pbmcgdG8gYmUgcmVhbAo+ID4gYmFsbG9vbmluZyBoYXBwZW5pbmcsIGFzIGluLCBpcyB0 aGUgYXZhaWxhYmxlIG1lbW9yeSBkeW5hbWljYWxseSBnb2luZwo+ID4gdG8gY2hhbmdlIGR1cmlu ZyBydW50aW1lLCBvciBqdXN0IGJlIGZpeGVkIHNpemUgc2luY2UgdGhlIGJlZ2lubmluZz8KPiAK PiBJbiBvdXIgY3VycmVudCBkZXNpZ24sIG9uY2UgdGhlIGd2dCBpcyBlbmFibGVkLCBpdCBpcyBm aXhlZCBzaXplIG9mIGdyYXBoaWNzCj4gbWVtb3J5IGZvciBob3N0IHNpbmNlIGJlZ2lubmluZy4g VGhlIHJlc2VydmVkIG1lbW9yeSBpcyBhbGwgZm9yIHZpcnR1YWwKPiBtYWNoaW5lcy4KPiAKPiBX ZSBldmVyIGNvbnNpZGVyZWQgdG8gc3VwcG9ydCBkeW5hbWljYWxseSBlbmFibGluZy9kaXNhYmxp bmcgZ3Z0LCB0aGF0IGhvc3QKPiBpOTE1IGNvdWxkIGJvb3Qgd2l0aG91dCBndnQgZW5hYmxlZCwg YW5kIGNhbiB1c2UgYWxsIHRoZSBoYXJkd2FyZSByZXNvdXJjZXMuCj4gV2hlbiB0aGVyZSBpcyBu ZWVkIHRvIGNyZWF0IFZNLCB3ZSBjYW4gcmVsb2FkIGk5MTUgZHJpdmVyIHRvIHJlc2VydmUgdGhl Cj4gcmVzb3VyY2VzLiBEb2VzIHRoYXQgc291bmQgZ29vZD8gVGhhbmtzIQo+IAoKQnV0IGlzIHRo ZSBWTSBncmFwaGljcyBtZW1vcnkgYW1vdW50IGEgZml4ZWQgc2xpY2UsIG9yIGlzIHRoZXJlIHJl YWwKYmFsbG9vbmluZyBoYXBwZW5pbmcgaW4gdGhlcmUgKGluY3JlYXNpbmcgdGhlIG1lbW9yeSBh bW91bnQgb2YgdGhlIFZNCm9uIGRlbWFuZCB3aGVuIHJ1bm5pbmcpPyBNZW1vcnkgYmFsbG9vbiBp bmcgbWlnaHQgYmUgdGhlIHdyb25nIHRlcm0gdG8KdXNlIGlmIGEgZml4ZWQgc2xpY2Ugb2YgdGhl IGdyYXBoaWNzIG1lbW9yeSBpcyBhbGxvY2F0ZWQgdG8gVk0gd2hlbiBpdApib290cy4KClJlZ2Fy ZHMsIEpvb25hcwoKPiBSZWdhcmRzLAo+IC1aaGl5dWFuCj4gCj4gPiAKPiA+IFJlZ2FyZHMsIEpv b25hcwo+ID4gCj4gPiA+IFJlZ2FyZHMsCj4gPiA+IC1aaGl5dWFuCj4gPiA+IAo+ID4gPiBPbiBU aHUsIEZlYiAwNCwgMjAxNiBhdCAwMToyNzowOFBNICswMjAwLCBKb29uYXMgTGFodGluZW4gd3Jv dGU6Cj4gPiA+ID4gSGksCj4gPiA+ID4gCj4gPiA+ID4gT24gdG8sIDIwMTYtMDEtMjggYXQgMTg6 MjEgKzA4MDAsIFpoaSBXYW5nIHdyb3RlOgo+ID4gPiA+ID4gRnJvbTogQmluZyBOaXUgPGJpbmcu bml1QGludGVsLmNvbT4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz IGhvc3QgZ3JhcGhpY3MgbWVtb3J5IGJhbGxvbiB3aGVuIEdWVC1nIGlzIGVuYWJsZWQuCj4gPiA+ ID4gPiAKPiA+ID4gPiA+IEFzIHVuZGVyIEdWVC1nLCBpOTE1IG9ubHkgb3duZWQgbGltaXRlZCBn cmFwaGljcyByZXNvdXJjZXMsIG90aGVycyBhcmUKPiA+ID4gPiA+IG1hbmFnZWQgYnkgR1ZULWcg cmVzb3VyY2UgYWxsb2NhdG9yIGFuZCBrZXB0IGZvciBvdGhlciB2R1BVcy4KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gRm9yIGdyYXBoaWNzIG1lbW9yeSBzcGFjZSBwYXJ0aXRpb24sIGEgdHlwaWNhbCBs YXlvdXQgbG9va3MgbGlrZToKPiA+ID4gPiA+IAo+ID4gPiA+ID4gKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiA+ID4g PiAqIEhvc3QgfMKgwqDCoCpHVlQtZyBSZXNvdXJjZcKgwqDCoMKgwqB8KiBIb3N0fMKgwqDCoCpH VlQtZyBSZXNvdXJjZcKgwqDCoMKgwqB8Cj4gPiA+ID4gPiA+IE93bmVkIHzCoMKgwqBBbGxvY2F0 b3IgTWFuYWdlZMKgwqDCoHwgT3duZWR8wqDCoMKgQWxsb2NhdG9yIE1hbmFnZWTCoMKgwqB8Cj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfAo+ID4gPiA+ID4gKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKwo+ID4gPiA+ID4gPiDCoMKgwqDCoMKg wqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDC oMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfAo+ID4gPiA+ ID4gPiBpOTE1wqDCoHwgdm0gMcKgwqB8IHZtIDLCoMKgfCB2bSAzwqDCoHwgaTkxNSB8IHZtIDHC oMKgfCB2bSAywqDCoHwgdm0gM8KgwqB8Cj4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoHzCoMKgwqDC oMKgwqDCoHzCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqB8wqDCoMKg wqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8Cj4gPiA+ID4gPiArLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0r Cj4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgQXBlcnR1cmXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSGlkZGVuwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfAo+ID4gPiA+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdHVFQgbWVtb3J5IHNwYWNlwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8Cj4gPiA+ID4gPiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gPiA+ID4g PiAKPiA+ID4gPiA+IFNpbWlsYXIgd2l0aCBmZW5jZSByZWdpc3RlcnMgcGFydGl0aW9uOgo+ID4g PiA+ID4gCj4gPiA+ID4gPiDCoCstLS0tLS0gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4g PiA+ID4gwqB8ICogSG9zdHzCoMKgwqDCoEdWVC1nIFJlc291cmNlwqDCoMKgwqDCoHwKPiA+ID4g PiA+IMKgfCBPd25lZCB8wqDCoMKgQWxsb2NhdG9yIE1hbmFnZWTCoMKgwqArCj4gPiA+ID4gPiDC oDDCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgMzEKPiA+ID4gPiA+IMKgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rCj4g PiA+ID4gPiDCoHzCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoHzC oMKgwqDCoMKgwqDCoHwKPiA+ID4gPiA+IMKgfCBpOTE1wqDCoHwgdm0gMcKgwqB8IHZtIDLCoMKg fCB2bSAzwqDCoHwKPiA+ID4gPiA+IMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfMKg wqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfAo+ID4gPiA+ID4gwqArLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLSsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gaTkxNSBob3N0IHdpbGwgcmVh ZCB0aGUgYW1vdW50IG9mIGFsbG9jYXRlZCByZXNvdXJjZXMgdmlhIEdWVC1nIGtlcm5lbCBwYXJh bWV0ZXJzLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBCaW5nIE5pdSA8Ymlu Zy5uaXVAaW50ZWwuY29tPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWmhpIFdhbmcgPHpoaS5h LndhbmdAaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9wYXJhbXMuaMKgwqDCoHzCoMKgMyArKysKPiA+ID4gPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uY8KgwqDCoMKgwqB8wqDCoDMgKysrCj4gPiA+ID4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHzCoMKgNCArKy0tCj4gPiA+ID4gPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jwqDCoMKgwqB8IDE2ICsrKysrKysrKysr Ky0tLS0KPiA+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmjCoMKgwqDC oHzCoMKgMSArCj4gPiA+ID4gPiDCoDUgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKPiA+ID4gPiA+IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJh bXMuaAo+ID4gPiA+ID4gaW5kZXggZDI5NTViOS4uMDY1NmE5OCAxMDA2NDQKPiA+ID4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaAo+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oCj4gPiA+ID4gPiBAQCAtMjcsNiArMjcsOSBA QAo+ID4gPiA+ID4gwqBzdHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgewo+ID4gPiA+ID4gwqAJYm9v bCBlbmFibGU7Cj4gPiA+ID4gPiDCoAlpbnQgZGVidWc7Cj4gPiA+ID4gPiArCWludCBkb20wX2xv d19nbV9zejsKPiA+ID4gPiA+ICsJaW50IGRvbTBfaGlnaF9nbV9zejsKPiA+ID4gPiA+ICsJaW50 IGRvbTBfZmVuY2Vfc3o7Cj4gPiAKPiA+IFNvbWUgY29tbWVudCBvbiB0aGUgdW5pdCB3b3VsZCBi ZSBuaWNlIGhlcmUsIGFzIHRoZXJlIGlzIGEgc2hpZnQgd2l0aAo+ID4gPDwgMjAgbGF0ZXIgb24u Cj4gPiAKPiA+IElzICJ1bnNpZ25lZCBsb25nIiB0eXBlIGFuZCBjb3VudCBpbiBwYWdlcyBub3Qg YWNjZXB0YWJsZT8gSSB0aGluawo+ID4gdGhhdCdzIHRoZSBhc3N1bXB0aW9uIG9uZSBpcyBnb2lu ZyB0byBtYWtlLgo+ID4gCj4gPiA+ID4gPiDCoH07Cj4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gwqBl eHRlcm4gc3RydWN0IGd2dF9rZXJuZWxfcGFyYW1zIGd2dDsKPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+ID4gPiA+ID4gaW5kZXggNzk5YTUzYS4uZTkxNmU0MyAxMDA2NDQKPiA+ID4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gPiA+IEBAIC01MDgwLDYgKzUw ODAsOSBAQCBpOTE1X2dlbV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ID4gPiDC oAllbHNlCj4gPiA+ID4gPiDCoAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gODsKPiA+ID4g PiA+IMKgCj4gPiA+ID4gPiArCWlmKGludGVsX2d2dF9ob3N0X2FjdGl2ZShkZXYpKQo+ID4gPiA+ IAo+ID4gPiA+IFNwYWNlIGJldHdlZW4gImlmIiBhbmQgIigiCj4gPiA+IAo+ID4gPiBUaGFua3Mh IFdpbGwgY29ycmVjdCBpdC4KPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gPiArCQlkZXZfcHJpdi0+ bnVtX2ZlbmNlX3JlZ3MgPSBndnQuZG9tMF9mZW5jZV9zejsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ IMKgCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXYpKQo+ID4gPiA+ID4gwqAJCWRldl9wcml2LT5u dW1fZmVuY2VfcmVncyA9Cj4gPiA+ID4gPiDCoAkJCQlJOTE1X1JFQUQodmd0aWZfcmVnKGF2YWls X3JzLmZlbmNlX251bSkpOwo+ID4gPiA+IAo+ID4gPiA+IEknZCBsaWtlIHRvIHNlZSB0aGUgYWJv dmUgYXMgImVsc2UgaWYiIGNvbnN0cnVjdCBqdXN0IGxpa2UgeW91IGhhdmUKPiA+ID4gPiBiZWxv dyB3aXRoIHRoZSBpbnRlbF92Z3RfYmFsbG9vbigpLiBDb3VsZCBldmVuIGRvCj4gPiA+ID4gCj4g PiA+ID4gCWlmIChndnRfaG9zdCnCoMKgewo+ID4gPiA+IAkJLi4uCj4gPiA+ID4gCX0gZWxzZSBp ZiAodmdwdV9hY3RpdmUpIHsKPiA+ID4gPiAJCS4uLgo+ID4gPiA+IAl9IGVsc2Ugewo+ID4gPiA+ IAkJcGVyIG1hY2hpbmUgZGV0ZWN0aW9uCj4gPiA+ID4gCX0KPiA+ID4gPiAKPiA+ID4gPiBSaWdo dD8KPiA+ID4gCj4gPiA+IFRoYXQgbG9va3MgYmV0dGVyIQo+ID4gPiAKPiA+ID4gPiAKPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gPiA+ID4gPiBpbmRleCA3Mzc3YjY3 Li4wNTQwZGUyIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCj4gPiA+ID4gPiBAQCAtMjcxMyw3ICsyNzEzLDcgQEAgc3RhdGljIGludCBpOTE1X2dl bV9zZXR1cF9nbG9iYWxfZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ID4gPiDCoAlp OTE1X2FkZHJlc3Nfc3BhY2VfaW5pdChnZ3R0X3ZtLCBkZXZfcHJpdik7Cj4gPiA+ID4gPiDCoAln Z3R0X3ZtLT50b3RhbCArPSBQQUdFX1NJWkU7Cj4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gLQlpZiAo aW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkgewo+ID4gPiA+ID4gKwlpZiAoaW50ZWxfdmdwdV9hY3Rp dmUoZGV2KSB8fCBpbnRlbF9ndnRfaG9zdF9hY3RpdmUoZGV2KSkgewo+ID4gPiA+ID4gwqAJCXJl dCA9IGludGVsX3ZndF9iYWxsb29uKGRldik7Cj4gPiA+ID4gPiDCoAkJaWYgKHJldCkKPiA+ID4g PiA+IMKgCQkJcmV0dXJuIHJldDsKPiA+ID4gPiA+IEBAIC0yODEwLDcgKzI4MTAsNyBAQCB2b2lk IGk5MTVfZ2xvYmFsX2d0dF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ID4g PiDCoAl9Cj4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gwqAJaWYgKGRybV9tbV9pbml0aWFsaXplZCgm dm0tPm1tKSkgewo+ID4gPiA+ID4gLQkJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCj4gPiA+ ID4gPiArCQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSB8fCBpbnRlbF9ndnRfaG9zdF9hY3Rp dmUoZGV2KSkKPiA+ID4gPiA+IMKgCQkJaW50ZWxfdmd0X2RlYmFsbG9vbigpOwo+ID4gPiA+ID4g wqAKPiA+ID4gPiA+IMKgCQlkcm1fbW1fdGFrZWRvd24oJnZtLT5tbSk7Cj4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZncHUuYwo+ID4gPiA+ID4gaW5kZXggZGVhNzQyOS4uZmJlNjExNCAxMDA2 NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+ID4gPiA+ID4gQEAg LTE4OCwxMCArMTg4LDE4IEBAIGludCBpbnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ID4gPiA+ID4gwqAJdW5zaWduZWQgbG9uZyB1bm1hcHBhYmxlX2Jhc2UsIHVubWFw cGFibGVfc2l6ZSwgdW5tYXBwYWJsZV9lbmQ7Cj4gPiA+ID4gPiDCoAlpbnQgcmV0Owo+ID4gPiA+ ID4gwqAKPiA+ID4gPiA+IC0JbWFwcGFibGVfYmFzZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZh aWxfcnMubWFwcGFibGVfZ21hZHIuYmFzZSkpOwo+ID4gPiA+ID4gLQltYXBwYWJsZV9zaXplID0g STkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5tYXBwYWJsZV9nbWFkci5zaXplKSk7Cj4gPiA+ ID4gPiAtCXVubWFwcGFibGVfYmFzZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMubm9u bWFwcGFibGVfZ21hZHIuYmFzZSkpOwo+ID4gPiA+ID4gLQl1bm1hcHBhYmxlX3NpemUgPSBJOTE1 X1JFQUQodmd0aWZfcmVnKGF2YWlsX3JzLm5vbm1hcHBhYmxlX2dtYWRyLnNpemUpKTsKPiA+ID4g PiA+ICsJaWYoaW50ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikpIHsKPiA+ID4gPiA+ICsJCW1hcHBh YmxlX2Jhc2UgPSAwOwo+ID4gPiA+ID4gKwkJbWFwcGFibGVfc2l6ZSA9IGd2dC5kb20wX2xvd19n bV9zeiA8PCAyMDsKPiA+ID4gPiA+ICsJCXVubWFwcGFibGVfYmFzZSA9IGRldl9wcml2LT5ndHQu bWFwcGFibGVfZW5kOwo+ID4gPiA+ID4gKwkJdW5tYXBwYWJsZV9zaXplID0gZ3Z0LmRvbTBfaGln aF9nbV9zeiA8PCAyMDsKPiA+ID4gPiA+ICsJfSBlbHNlIGlmIChpbnRlbF92Z3B1X2FjdGl2ZShk ZXYpKSB7Cj4gPiA+ID4gPiArCQltYXBwYWJsZV9iYXNlID0gSTkxNV9SRUFEKHZndGlmX3JlZyhh dmFpbF9ycy5tYXBwYWJsZV9nbWFkci5iYXNlKSk7Cj4gPiA+ID4gPiArCQltYXBwYWJsZV9zaXpl ID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5tYXBwYWJsZV9nbWFkci5zaXplKSk7Cj4g PiA+ID4gPiArCQl1bm1hcHBhYmxlX2Jhc2UgPSBJOTE1X1JFQUQodmd0aWZfcmVnKGF2YWlsX3Jz Lm5vbm1hcHBhYmxlX2dtYWRyLmJhc2UpKTsKPiA+ID4gPiA+ICsJCXVubWFwcGFibGVfc2l6ZSA9 IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMubm9ubWFwcGFibGVfZ21hZHIuc2l6ZSkpOwo+ ID4gPiA+ID4gKwl9IGVsc2UKPiA+ID4gPiA+ICsJCXJldHVybiAtRU5PREVWOwo+ID4gPiA+ID4g wqAKPiA+ID4gPiAJfSBlbHNlIHsKPiA+ID4gPiAJCXJldHVybiAtRU5PREVWOwo+ID4gPiA+IAl9 Cj4gPiA+ID4gCj4gPiA+ID4gVGhpcyBtdXN0IHVzZSBicmFjZXMgdG9vLCBhY2NvcmRpbmcgdG8g dGhlIEtlcm5lbCBDb2RpbmcgU3R5bGUuCj4gPiA+IAo+ID4gPiBUaGF0J3MgcmlnaHQuIFRoYW5r cyBmb3IgcG9pbnRpbmcgaXQgb3V0IQo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiA+IMKgCW1hcHBh YmxlX2VuZCA9IG1hcHBhYmxlX2Jhc2UgKyBtYXBwYWJsZV9zaXplOwo+ID4gPiA+ID4gwqAJdW5t YXBwYWJsZV9lbmQgPSB1bm1hcHBhYmxlX2Jhc2UgKyB1bm1hcHBhYmxlX3NpemU7Cj4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+ID4gPiA+ID4gaW5kZXggOTQyNDkwYS4uYjhhNDll NiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5o Cj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+ID4gPiA+ ID4gQEAgLTI0LDYgKzI0LDcgQEAKPiA+ID4gPiA+IMKgI2lmbmRlZiBfSTkxNV9WR1BVX0hfCj4g PiA+ID4gPiDCoCNkZWZpbmUgX0k5MTVfVkdQVV9IXwo+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ICsj aW5jbHVkZSAiZ3Z0L3BhcmFtcy5oIgo+ID4gPiA+IAo+ID4gPiA+IFRoaXMgaXMgbm90IGEgZ29v ZCB3YXkgb2YgaW5jbHVkaW5nIGhlYWRlcnMsIGFzIHRoaXMgaGVhZGVyIGl0c2VsZgo+ID4gPiA+ IGRvZXNuJ3QgbmVlZCBpdC4gSW5jbHVkaW5nIHVubmVjZXNzYXJ5IHN0dWZmIGluIG9mdGVuIGlu Y2x1ZGVkIGhlYWRlcnMKPiA+ID4gPiBjb250cmlidXRlcyB0byBpbmNyZWFzaW5nIHByb2plY3Qg Y29tcGlsZSB0aW1lcyBhbmQgbWFrZXMgaXQgaGFyZGVyIHRvCj4gPiA+ID4gc29sdmUgY3Jvc3Mg ZGVwZW5kZW5jaWVzIGxhdGVyLiBTbyBwdXQgaXQgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZmls ZQo+ID4gPiA+IHRoYXQgbmVlZHMgaXQuCj4gPiA+ID4gCj4gPiA+IAo+ID4gPiBXaWxsIGRlbGV0 ZS4gVGhhbmtzIQo+ID4gPiAKPiA+ID4gPiBSZWdhcmRzLCBKb29uYXMKPiA+ID4gPiAKPiA+ID4g PiA+IMKgLyogVGhlIE1NSU8gb2Zmc2V0IG9mIHRoZSBzaGFyZWQgaW5mbyBiZXR3ZWVuIGd1ZXN0 IGFuZCBob3N0IGVtdWxhdG9yICovCj4gPiA+ID4gPiDCoCNkZWZpbmUgVkdUX1BWSU5GT19QQUdF CTB4NzgwMDAKPiA+ID4gPiA+IMKgI2RlZmluZSBWR1RfUFZJTkZPX1NJWkUJMHgxMDAwCi0tIApK b29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKSW50ZWwgQ29ycG9y YXRpb24KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==