From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhiyuan Lv Subject: Re: [RFC 02/29] drm/i915: Introduce host graphics memory balloon for gvt Date: Fri, 5 Feb 2016 22:16:29 +0800 Message-ID: <20160205141629.GA30188@zlv-hp-dev> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 45DE26E9FE for ; Fri, 5 Feb 2016 06:27:36 -0800 (PST) Content-Disposition: inline In-Reply-To: <1454679649.8365.7.camel@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen 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 SGkgSm9vbmFzLAoKT24gRnJpLCBGZWIgMDUsIDIwMTYgYXQgMDM6NDA6NDlQTSArMDIwMCwgSm9v bmFzIExhaHRpbmVuIHdyb3RlOgo+IEhpLAo+IAo+IE9uIHBlLCAyMDE2LTAyLTA1IGF0IDE4OjAz ICswODAwLCBaaGl5dWFuIEx2IHdyb3RlOgo+ID4gSGkgSm9vbmFzLAo+ID4gCj4gPiBUaGFua3Mg bXVjaCBmb3IgdGhlIHJldmlldyEgV2Ugd2lsbCBpbmNvcnBvcmF0ZSB0aG9zZSByZXZpZXcgY29t bWVudHMhCj4gPiAKPiA+IE1lYW53aGlsZSwgaXMgaXQgZ29vZCBlbm91Z2ggdG8gZG8gdGhlIGhv c3QgYmFsbG9vbmluZyBsaWtlIGJlbG93PyBUaGUKPiA+IHByb3MgaXMgdGhhdCBpdCBpcyB2ZXJ5 IHNpbXBsZSwgZXNwZWNpYWxseSBjb25zaWRlciB0aGF0IGd1ZXN0Cj4gPiBiYWxsb29uaW5nIGxv Z2ljIGhhcyBiZWVuIHRoZXJlLiBUaGFua3MhCj4gPiAKPiAKPiBJIHRoaW5rIHNsaWNpbmcgaXQg ZG93biBsaWtlIHRoYXQgaXMgZmluZS4gSXMgdGhlcmUgZ29pbmcgdG8gYmUgcmVhbAo+IGJhbGxv b25pbmcgaGFwcGVuaW5nLCBhcyBpbiwgaXMgdGhlIGF2YWlsYWJsZSBtZW1vcnkgZHluYW1pY2Fs bHkgZ29pbmcKPiB0byBjaGFuZ2UgZHVyaW5nIHJ1bnRpbWUsIG9yIGp1c3QgYmUgZml4ZWQgc2l6 ZSBzaW5jZSB0aGUgYmVnaW5uaW5nPwoKSW4gb3VyIGN1cnJlbnQgZGVzaWduLCBvbmNlIHRoZSBn dnQgaXMgZW5hYmxlZCwgaXQgaXMgZml4ZWQgc2l6ZSBvZiBncmFwaGljcwptZW1vcnkgZm9yIGhv c3Qgc2luY2UgYmVnaW5uaW5nLiBUaGUgcmVzZXJ2ZWQgbWVtb3J5IGlzIGFsbCBmb3IgdmlydHVh bAptYWNoaW5lcy4KCldlIGV2ZXIgY29uc2lkZXJlZCB0byBzdXBwb3J0IGR5bmFtaWNhbGx5IGVu YWJsaW5nL2Rpc2FibGluZyBndnQsIHRoYXQgaG9zdAppOTE1IGNvdWxkIGJvb3Qgd2l0aG91dCBn dnQgZW5hYmxlZCwgYW5kIGNhbiB1c2UgYWxsIHRoZSBoYXJkd2FyZSByZXNvdXJjZXMuCldoZW4g dGhlcmUgaXMgbmVlZCB0byBjcmVhdCBWTSwgd2UgY2FuIHJlbG9hZCBpOTE1IGRyaXZlciB0byBy ZXNlcnZlIHRoZQpyZXNvdXJjZXMuIERvZXMgdGhhdCBzb3VuZCBnb29kPyBUaGFua3MhCgpSZWdh cmRzLAotWmhpeXVhbgoKPiAKPiBSZWdhcmRzLCBKb29uYXMKPiAKPiA+IFJlZ2FyZHMsCj4gPiAt WmhpeXVhbgo+ID4gCj4gPiBPbiBUaHUsIEZlYiAwNCwgMjAxNiBhdCAwMToyNzowOFBNICswMjAw LCBKb29uYXMgTGFodGluZW4gd3JvdGU6Cj4gPiA+IEhpLAo+ID4gPiAKPiA+ID4gT24gdG8sIDIw MTYtMDEtMjggYXQgMTg6MjEgKzA4MDAsIFpoaSBXYW5nIHdyb3RlOgo+ID4gPiA+IEZyb206IEJp bmcgTml1IDxiaW5nLm5pdUBpbnRlbC5jb20+Cj4gPiA+ID4gCj4gPiA+ID4gVGhpcyBwYXRjaCBp bnRyb2R1Y2VzIGhvc3QgZ3JhcGhpY3MgbWVtb3J5IGJhbGxvbiB3aGVuIEdWVC1nIGlzIGVuYWJs ZWQuCj4gPiA+ID4gCj4gPiA+ID4gQXMgdW5kZXIgR1ZULWcsIGk5MTUgb25seSBvd25lZCBsaW1p dGVkIGdyYXBoaWNzIHJlc291cmNlcywgb3RoZXJzIGFyZQo+ID4gPiA+IG1hbmFnZWQgYnkgR1ZU LWcgcmVzb3VyY2UgYWxsb2NhdG9yIGFuZCBrZXB0IGZvciBvdGhlciB2R1BVcy4KPiA+ID4gPiAK PiA+ID4gPiBGb3IgZ3JhcGhpY3MgbWVtb3J5IHNwYWNlIHBhcnRpdGlvbiwgYSB0eXBpY2FsIGxh eW91dCBsb29rcyBsaWtlOgo+ID4gPiA+IAo+ID4gPiA+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiA+ID4gPiA+ICogSG9z dCB8wqDCoMKgKkdWVC1nIFJlc291cmNlwqDCoMKgwqDCoHwqIEhvc3R8wqDCoMKgKkdWVC1nIFJl c291cmNlwqDCoMKgwqDCoHwKPiA+ID4gPiA+IE93bmVkIHzCoMKgwqBBbGxvY2F0b3IgTWFuYWdl ZMKgwqDCoHwgT3duZWR8wqDCoMKgQWxsb2NhdG9yIE1hbmFnZWTCoMKgwqB8Cj4gPiA+ID4gPiDC oMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHzCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHwKPiA+ID4gPiArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0rCj4gPiA+ID4gPiDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKg wqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDC oMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfAo+ID4gPiA+ID4gaTkxNcKgwqB8IHZt IDHCoMKgfCB2bSAywqDCoHwgdm0gM8KgwqB8IGk5MTUgfCB2bSAxwqDCoHwgdm0gMsKgwqB8IHZt IDPCoMKgfAo+ID4gPiA+ID4gwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDC oMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKg wqDCoHzCoMKgwqDCoMKgwqDCoHwKPiA+ID4gPiArLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rCj4gPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoEFwZXJ0dXJlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEhpZGRlbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwKPiA+ID4gPiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4gPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdH VFQgbWVtb3J5IHNwYWNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8Cj4gPiA+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4gPiA+IAo+ID4gPiA+IFNpbWlsYXIgd2l0aCBmZW5jZSBy ZWdpc3RlcnMgcGFydGl0aW9uOgo+ID4gPiA+IAo+ID4gPiA+IMKgKy0tLS0tLSArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCj4gPiA+ID4gwqB8ICogSG9zdHzCoMKgwqDCoEdWVC1nIFJlc291cmNl wqDCoMKgwqDCoHwKPiA+ID4gPiDCoHwgT3duZWQgfMKgwqDCoEFsbG9jYXRvciBNYW5hZ2VkwqDC oMKgKwo+ID4gPiA+IMKgMMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAzMQo+ID4gPiA+IMKgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0rCj4gPiA+ID4gwqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8wqDCoMKg wqDCoMKgwqB8wqDCoMKgwqDCoMKgwqB8Cj4gPiA+ID4gwqB8IGk5MTXCoMKgfCB2bSAxwqDCoHwg dm0gMsKgwqB8IHZtIDPCoMKgfAo+ID4gPiA+IMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDC oMKgfMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgfAo+ID4gPiA+IMKgKy0tLS0tLS0rLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0rCj4gPiA+ID4gCj4gPiA+ID4gaTkxNSBob3N0IHdpbGwgcmVh ZCB0aGUgYW1vdW50IG9mIGFsbG9jYXRlZCByZXNvdXJjZXMgdmlhIEdWVC1nIGtlcm5lbCBwYXJh bWV0ZXJzLgo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEJpbmcgTml1IDxiaW5nLm5p dUBpbnRlbC5jb20+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWmhpIFdhbmcgPHpoaS5hLndhbmdA aW50ZWwuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3BhcmFtcy5owqDCoMKgfMKgwqAzICsrKwo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uY8KgwqDCoMKgwqB8wqDCoDMgKysrCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyB8wqDCoDQgKystLQo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV92Z3B1LmPCoMKgwqDCoHwgMTYgKysrKysrKysrKysrLS0tLQo+ID4gPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmjCoMKgwqDCoHzCoMKgMSArCj4gPiA+ID4g wqA1IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4gPiA+ ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaAo+ID4gPiA+IGluZGV4IGQyOTU1 YjkuLjA2NTZhOTggMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3BhcmFtcy5oCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5o Cj4gPiA+ID4gQEAgLTI3LDYgKzI3LDkgQEAKPiA+ID4gPiDCoHN0cnVjdCBndnRfa2VybmVsX3Bh cmFtcyB7Cj4gPiA+ID4gwqAJYm9vbCBlbmFibGU7Cj4gPiA+ID4gwqAJaW50IGRlYnVnOwo+ID4g PiA+ICsJaW50IGRvbTBfbG93X2dtX3N6Owo+ID4gPiA+ICsJaW50IGRvbTBfaGlnaF9nbV9zejsK PiA+ID4gPiArCWludCBkb20wX2ZlbmNlX3N6Owo+IAo+IFNvbWUgY29tbWVudCBvbiB0aGUgdW5p dCB3b3VsZCBiZSBuaWNlIGhlcmUsIGFzIHRoZXJlIGlzIGEgc2hpZnQgd2l0aAo+IDw8IDIwIGxh dGVyIG9uLgo+IAo+IElzICJ1bnNpZ25lZCBsb25nIiB0eXBlIGFuZCBjb3VudCBpbiBwYWdlcyBu b3QgYWNjZXB0YWJsZT8gSSB0aGluawo+IHRoYXQncyB0aGUgYXNzdW1wdGlvbiBvbmUgaXMgZ29p bmcgdG8gbWFrZS4KPiAKPiA+ID4gPiDCoH07Cj4gPiA+ID4gwqAKPiA+ID4gPiDCoGV4dGVybiBz dHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgZ3Z0Owo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+ID4gPiA+IGluZGV4IDc5OWE1M2EuLmU5MTZlNDMgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gPiBAQCAtNTA4MCw2ICs1MDgwLDkgQEAgaTkxNV9nZW1f bG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiA+IMKgCWVsc2UKPiA+ID4gPiDCoAkJ ZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gODsKPiA+ID4gPiDCoAo+ID4gPiA+ICsJaWYoaW50 ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikpCj4gPiA+IAo+ID4gPiBTcGFjZSBiZXR3ZWVuICJpZiIg YW5kICIoIgo+ID4gCj4gPiBUaGFua3MhIFdpbGwgY29ycmVjdCBpdC4KPiA+IAo+ID4gPiAKPiA+ ID4gPiArCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPSBndnQuZG9tMF9mZW5jZV9zejsKPiA+ ID4gPiArCj4gPiA+ID4gwqAJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCj4gPiA+ID4gwqAJ CWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9Cj4gPiA+ID4gwqAJCQkJSTkxNV9SRUFEKHZndGlm X3JlZyhhdmFpbF9ycy5mZW5jZV9udW0pKTsKPiA+ID4gCj4gPiA+IEknZCBsaWtlIHRvIHNlZSB0 aGUgYWJvdmUgYXMgImVsc2UgaWYiIGNvbnN0cnVjdCBqdXN0IGxpa2UgeW91IGhhdmUKPiA+ID4g YmVsb3cgd2l0aCB0aGUgaW50ZWxfdmd0X2JhbGxvb24oKS4gQ291bGQgZXZlbiBkbwo+ID4gPiAK PiA+ID4gCWlmIChndnRfaG9zdCnCoMKgewo+ID4gPiAJCS4uLgo+ID4gPiAJfSBlbHNlIGlmICh2 Z3B1X2FjdGl2ZSkgewo+ID4gPiAJCS4uLgo+ID4gPiAJfSBlbHNlIHsKPiA+ID4gCQlwZXIgbWFj aGluZSBkZXRlY3Rpb24KPiA+ID4gCX0KPiA+ID4gCj4gPiA+IFJpZ2h0Pwo+ID4gCj4gPiBUaGF0 IGxvb2tzIGJldHRlciEKPiA+IAo+ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwo+ID4gPiA+IGluZGV4IDczNzdiNjcuLjA1NDBkZTIgMTAwNjQ0Cj4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4gPiA+IEBAIC0yNzEzLDcgKzI3MTMs NyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3NldHVwX2dsb2JhbF9ndHQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+ID4gPiDCoAlpOTE1X2FkZHJlc3Nfc3BhY2VfaW5pdChnZ3R0X3ZtLCBkZXZf cHJpdik7Cj4gPiA+ID4gwqAJZ2d0dF92bS0+dG90YWwgKz0gUEFHRV9TSVpFOwo+ID4gPiA+IMKg Cj4gPiA+ID4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkgewo+ID4gPiA+ICsJaWYgKGlu dGVsX3ZncHVfYWN0aXZlKGRldikgfHwgaW50ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikpIHsKPiA+ ID4gPiDCoAkJcmV0ID0gaW50ZWxfdmd0X2JhbGxvb24oZGV2KTsKPiA+ID4gPiDCoAkJaWYgKHJl dCkKPiA+ID4gPiDCoAkJCXJldHVybiByZXQ7Cj4gPiA+ID4gQEAgLTI4MTAsNyArMjgxMCw3IEBA IHZvaWQgaTkxNV9nbG9iYWxfZ3R0X2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ID4gPiDCoAl9Cj4gPiA+ID4gwqAKPiA+ID4gPiDCoAlpZiAoZHJtX21tX2luaXRpYWxpemVkKCZ2 bS0+bW0pKSB7Cj4gPiA+ID4gLQkJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCj4gPiA+ID4g KwkJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikgfHwgaW50ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRl dikpCj4gPiA+ID4gwqAJCQlpbnRlbF92Z3RfZGViYWxsb29uKCk7Cj4gPiA+ID4gwqAKPiA+ID4g PiDCoAkJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dmdwdS5jCj4gPiA+ID4gaW5kZXggZGVhNzQyOS4uZmJlNjExNCAxMDA2NDQKPiA+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4gPiA+ID4gQEAgLTE4OCwxMCArMTg4LDE4IEBAIGlu dCBpbnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiA+IMKgCXVu c2lnbmVkIGxvbmcgdW5tYXBwYWJsZV9iYXNlLCB1bm1hcHBhYmxlX3NpemUsIHVubWFwcGFibGVf ZW5kOwo+ID4gPiA+IMKgCWludCByZXQ7Cj4gPiA+ID4gwqAKPiA+ID4gPiAtCW1hcHBhYmxlX2Jh c2UgPSBJOTE1X1JFQUQodmd0aWZfcmVnKGF2YWlsX3JzLm1hcHBhYmxlX2dtYWRyLmJhc2UpKTsK PiA+ID4gPiAtCW1hcHBhYmxlX3NpemUgPSBJOTE1X1JFQUQodmd0aWZfcmVnKGF2YWlsX3JzLm1h cHBhYmxlX2dtYWRyLnNpemUpKTsKPiA+ID4gPiAtCXVubWFwcGFibGVfYmFzZSA9IEk5MTVfUkVB RCh2Z3RpZl9yZWcoYXZhaWxfcnMubm9ubWFwcGFibGVfZ21hZHIuYmFzZSkpOwo+ID4gPiA+IC0J dW5tYXBwYWJsZV9zaXplID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5ub25tYXBwYWJs ZV9nbWFkci5zaXplKSk7Cj4gPiA+ID4gKwlpZihpbnRlbF9ndnRfaG9zdF9hY3RpdmUoZGV2KSkg ewo+ID4gPiA+ICsJCW1hcHBhYmxlX2Jhc2UgPSAwOwo+ID4gPiA+ICsJCW1hcHBhYmxlX3NpemUg PSBndnQuZG9tMF9sb3dfZ21fc3ogPDwgMjA7Cj4gPiA+ID4gKwkJdW5tYXBwYWJsZV9iYXNlID0g ZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9lbmQ7Cj4gPiA+ID4gKwkJdW5tYXBwYWJsZV9zaXplID0g Z3Z0LmRvbTBfaGlnaF9nbV9zeiA8PCAyMDsKPiA+ID4gPiArCX0gZWxzZSBpZiAoaW50ZWxfdmdw dV9hY3RpdmUoZGV2KSkgewo+ID4gPiA+ICsJCW1hcHBhYmxlX2Jhc2UgPSBJOTE1X1JFQUQodmd0 aWZfcmVnKGF2YWlsX3JzLm1hcHBhYmxlX2dtYWRyLmJhc2UpKTsKPiA+ID4gPiArCQltYXBwYWJs ZV9zaXplID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5tYXBwYWJsZV9nbWFkci5zaXpl KSk7Cj4gPiA+ID4gKwkJdW5tYXBwYWJsZV9iYXNlID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFp bF9ycy5ub25tYXBwYWJsZV9nbWFkci5iYXNlKSk7Cj4gPiA+ID4gKwkJdW5tYXBwYWJsZV9zaXpl ID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5ub25tYXBwYWJsZV9nbWFkci5zaXplKSk7 Cj4gPiA+ID4gKwl9IGVsc2UKPiA+ID4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiDCoAo+ ID4gPiAJfSBlbHNlIHsKPiA+ID4gCQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gCX0KPiA+ID4gCj4g PiA+IFRoaXMgbXVzdCB1c2UgYnJhY2VzIHRvbywgYWNjb3JkaW5nIHRvIHRoZSBLZXJuZWwgQ29k aW5nIFN0eWxlLgo+ID4gCj4gPiBUaGF0J3MgcmlnaHQuIFRoYW5rcyBmb3IgcG9pbnRpbmcgaXQg b3V0IQo+ID4gCj4gPiA+IAo+ID4gPiA+IMKgCW1hcHBhYmxlX2VuZCA9IG1hcHBhYmxlX2Jhc2Ug KyBtYXBwYWJsZV9zaXplOwo+ID4gPiA+IMKgCXVubWFwcGFibGVfZW5kID0gdW5tYXBwYWJsZV9i YXNlICsgdW5tYXBwYWJsZV9zaXplOwo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4g PiA+ID4gaW5kZXggOTQyNDkwYS4uYjhhNDllNiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdmdwdS5oCj4gPiA+ID4gQEAgLTI0LDYgKzI0LDcgQEAKPiA+ID4gPiDCoCNpZm5k ZWYgX0k5MTVfVkdQVV9IXwo+ID4gPiA+IMKgI2RlZmluZSBfSTkxNV9WR1BVX0hfCj4gPiA+ID4g wqAKPiA+ID4gPiArI2luY2x1ZGUgImd2dC9wYXJhbXMuaCIKPiA+ID4gCj4gPiA+IFRoaXMgaXMg bm90IGEgZ29vZCB3YXkgb2YgaW5jbHVkaW5nIGhlYWRlcnMsIGFzIHRoaXMgaGVhZGVyIGl0c2Vs Zgo+ID4gPiBkb2Vzbid0IG5lZWQgaXQuIEluY2x1ZGluZyB1bm5lY2Vzc2FyeSBzdHVmZiBpbiBv ZnRlbiBpbmNsdWRlZCBoZWFkZXJzCj4gPiA+IGNvbnRyaWJ1dGVzIHRvIGluY3JlYXNpbmcgcHJv amVjdCBjb21waWxlIHRpbWVzIGFuZCBtYWtlcyBpdCBoYXJkZXIgdG8KPiA+ID4gc29sdmUgY3Jv c3MgZGVwZW5kZW5jaWVzIGxhdGVyLiBTbyBwdXQgaXQgaW50byB0aGUgaW1wbGVtZW50YXRpb24g ZmlsZQo+ID4gPiB0aGF0IG5lZWRzIGl0Lgo+ID4gPiAKPiA+IAo+ID4gV2lsbCBkZWxldGUuIFRo YW5rcyEKPiA+IAo+ID4gPiBSZWdhcmRzLCBKb29uYXMKPiA+ID4gCj4gPiA+ID4gwqAvKiBUaGUg TU1JTyBvZmZzZXQgb2YgdGhlIHNoYXJlZCBpbmZvIGJldHdlZW4gZ3Vlc3QgYW5kIGhvc3QgZW11 bGF0b3IgKi8KPiA+ID4gPiDCoCNkZWZpbmUgVkdUX1BWSU5GT19QQUdFCTB4NzgwMDAKPiA+ID4g PiDCoCNkZWZpbmUgVkdUX1BWSU5GT19TSVpFCTB4MTAwMAo+IC0tIAo+IEpvb25hcyBMYWh0aW5l bgo+IE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCj4gSW50ZWwgQ29ycG9yYXRpb24KPiAK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK