From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Evict CS TLBs between batches Date: Mon, 08 Sep 2014 16:53:00 +0300 Message-ID: <87oauqxlqb.fsf@intel.com> References: <20140908080351.GT15520@phenom.ffwll.local> <1410182741-3957-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 990986E2B6 for ; Mon, 8 Sep 2014 06:52:59 -0700 (PDT) In-Reply-To: <1410182741-3957-1-git-send-email-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: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter , stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAwOCBTZXAgMjAxNCwgQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+IHdyb3RlOgo+IFJ1bm5pbmcgaWd0LCBJIHdhcyBlbmNvdW50ZXJpbmcgdGhlIGludmFsaWQg VExCIGJ1ZyBvbiBteSA4NDVnLCBkZXNwaXRlCj4gdGhhdCBpdCB3YXMgdXNpbmcgdGhlIENTIHdv cmthcm91bmQuIEV4YW1pbmluZyB0aGUgdy9hIGJ1ZmZlciBpbiB0aGUKPiBlcnJvciBzdGF0ZSwg c2hvd2VkIHRoYXQgdGhlIGNvcHkgZnJvbSB0aGUgdXNlciBiYXRjaCBpbnRvIHRoZQo+IHdvcmth cm91bmQgaXRzZWxmIHdhcyBzdWZmZXJpbmcgZnJvbSB0aGUgaW52YWxpZCBUTEIgYnVnICh0aGUg Zmlyc3QKPiBjYWNoZWxpbmUgd2FzIGJyb2tlbiB3aXRoIHRoZSBmaXJzdCB0d28gd29yZHMgcmV2 ZXJzZWQpLiBUaW1lIHRvIHRyeSBhCj4gZnJlc2ggYXBwcm9hY2guIFRoaXMgZXh0ZW5kcyB0aGUg d29ya2Fyb3VuZCB0byB3cml0ZSBpbnRvIGVhY2ggcGFnZSBvZgo+IG91ciBzY3JhdGNoIGJ1ZmZl ciBpbiBvcmRlciB0byBvdmVyZmxvdyB0aGUgVExCIGFuZCBldmljdCB0aGUgaW52YWxpZAo+IGVu dHJpZXMuIFRoaXMgY291bGQgYmUgcmVmaW5lZCB0byBvbmx5IGRvIHNvIGFmdGVyIHdlIHVwZGF0 ZSB0aGUgR1RULAo+IGJ1dCBmb3Igc2ltcGxpY2l0eSwgd2UgZG8gaXQgYmVmb3JlIGVhY2ggYmF0 Y2guCj4KPiBJIHN1c3BlY3QgdGhpcyBzdXBlcnNlZGVzIG91ciBjdXJyZW50IHdvcmthcm91bmQs IGJ1dCBmb3Igc2FmZXR5IGtlZXAKPiBkb2luZyBib3RoLgo+Cj4gdjI6IFRoZSBtYWdpYyBudW1i ZXIgc2hhbGwgYmUgMi4KPgo+IFRoaXMgZG9lc24ndCBjb25jbHVzaXZlbHkgcHJvdmUgdGhhdCBp dCBpcyB0aGUgbXl0aGljYWwgVExCIGJ1ZyB3ZSd2ZQo+IGJlZW4gdHJ5aW5nIHRvIHdvcmthcm91 bmQgZm9yIHNvIGxvbmcsIHRoYXQgaXQgcmVxdWlyZXMgdG91Y2hpbmcgYSBudW1iZXIKPiBvZiBw YWdlcyB0byBwcmV2ZW50IHRoZSBjb3JydXB0aW9uIGluZGljYXRlcyB0byBtZSB0aGF0IGl0IGlz IFRMQgo+IHJlbGF0ZWQsIGJ1dCB0aGUgY29ycnVwdGlvbiAodGhlIHJldmVyc2VkIGNhY2hlbGlu ZSkgaXMgbW9yZSBzdWJ0bGUgdGhhbgo+IGEgVExCIGJ1Zywgd2hlcmUgd2Ugd291bGQgZXhwZWN0 IGl0IHRvIHJlYWQgdGhlIHdyb25nIHBhZ2UgZW50aXJlbHkuCj4KPiBPaCB3ZWxsLCBpdCBwcmV2 ZW50cyBhIHJlbGlhYmxlIGhhbmcgZm9yIG1lIGFuZCBzbyBwcm9iYWJseSBmb3Igb3RoZXJzCj4g YXMgd2VsbC4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENj OiBzdGFibGVAdmdlci5rZXJuZWwub3JnCj4gUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+CgpQdXNoZWQgdG8gZHJtLWludGVsLWZpeGVzLCB0aGFua3Mg Zm9yIHRoZSBwYXRjaCBhbmQgcmV2aWV3LgoKQlIsCkphbmkuCgoKPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgMTIgKysrKy0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDY2ICsrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDMxIGRlbGV0 aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggZTRkNzYwN2RhMmM0Li5m MjliNDRjODZhMmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtMzM0LDE2ICsz MzQsMjAgQEAKPiAgI2RlZmluZSBHRlhfT1BfREVTVEJVRkZFUl9JTkZPCSAoKDB4Mzw8MjkpfCgw eDFkPDwyNCl8KDB4OGU8PDE2KXwxKQo+ICAjZGVmaW5lIEdGWF9PUF9EUkFXUkVDVF9JTkZPICAg ICAoKDB4Mzw8MjkpfCgweDFkPDwyNCl8KDB4ODA8PDE2KXwoMHgzKSkKPiAgI2RlZmluZSBHRlhf T1BfRFJBV1JFQ1RfSU5GT19JOTY1ICAoKDB4NzkwMDw8MTYpfDB4MikKPiAtI2RlZmluZSBTUkNf Q09QWV9CTFRfQ01EICAgICAgICAgICAgICAgICgoMjw8MjkpfCgweDQzPDwyMil8NCkKPiArCj4g KyNkZWZpbmUgQ09MT1JfQkxUX0NNRAkJCSgyPDwyOSB8IDB4NDA8PDIyIHwgKDUtMikpCj4gKyNk ZWZpbmUgU1JDX0NPUFlfQkxUX0NNRAkJKCgyPDwyOSl8KDB4NDM8PDIyKXw0KQo+ICAjZGVmaW5l IFhZX1NSQ19DT1BZX0JMVF9DTUQJCSgoMjw8MjkpfCgweDUzPDwyMil8NikKPiAgI2RlZmluZSBY WV9NT05PX1NSQ19DT1BZX0lNTV9CTFQJKCgyPDwyOSl8KDB4NzE8PDIyKXw1KQo+IC0jZGVmaW5l IFhZX1NSQ19DT1BZX0JMVF9XUklURV9BTFBIQQkoMTw8MjEpCj4gLSNkZWZpbmUgWFlfU1JDX0NP UFlfQkxUX1dSSVRFX1JHQgkoMTw8MjApCj4gKyNkZWZpbmUgICBCTFRfV1JJVEVfQQkJCSgyPDwy MCkKPiArI2RlZmluZSAgIEJMVF9XUklURV9SR0IJCQkoMTw8MjApCj4gKyNkZWZpbmUgICBCTFRf V1JJVEVfUkdCQQkJKEJMVF9XUklURV9SR0IgfCBCTFRfV1JJVEVfQSkKPiAgI2RlZmluZSAgIEJM VF9ERVBUSF84CQkJKDA8PDI0KQo+ICAjZGVmaW5lICAgQkxUX0RFUFRIXzE2XzU2NQkJKDE8PDI0 KQo+ICAjZGVmaW5lICAgQkxUX0RFUFRIXzE2XzE1NTUJCSgyPDwyNCkKPiAgI2RlZmluZSAgIEJM VF9ERVBUSF8zMgkJCSgzPDwyNCkKPiAtI2RlZmluZSAgIEJMVF9ST1BfR1hDT1BZCQkoMHhjYzw8 MTYpCj4gKyNkZWZpbmUgICBCTFRfUk9QX1NSQ19DT1BZCQkoMHhjYzw8MTYpCj4gKyNkZWZpbmUg ICBCTFRfUk9QX0NPTE9SX0NPUFkJCSgweGYwPDwxNikKPiAgI2RlZmluZSBYWV9TUkNfQ09QWV9C TFRfU1JDX1RJTEVECSgxPDwxNSkgLyogOTY1KyBvbmx5ICovCj4gICNkZWZpbmUgWFlfU1JDX0NP UFlfQkxUX0RTVF9USUxFRAkoMTw8MTEpIC8qIDk2NSsgb25seSAqLwo+ICAjZGVmaW5lIENNRF9P UF9ESVNQTEFZQlVGRkVSX0lORk8gKCgweDA8PDI5KXwoMHgxNDw8MjMpfDIpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDE2MzcxYTQ0NDQyNi4uMmQwNjhl ZGQxYWRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBA IC0xMzYzLDU0ICsxMzYzLDY2IEBAIGk5NjVfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAKPiAgLyogSnVzdCB1c2Vyc3BhY2UgQUJJIGNvbnZlbnRp b24gdG8gbGltaXQgdGhlIHdhIGJhdGNoIGJvIHRvIGEgcmVzb25hYmxlIHNpemUgKi8KPiAgI2Rl ZmluZSBJODMwX0JBVENIX0xJTUlUICgyNTYqMTAyNCkKPiArI2RlZmluZSBJODMwX1RMQl9FTlRS SUVTICgyKQo+ICsjZGVmaW5lIEk4MzBfV0FfU0laRSBtYXgoSTgzMF9UTEJfRU5UUklFUyo0MDk2 LCBJODMwX0JBVENIX0xJTUlUKQo+ICBzdGF0aWMgaW50Cj4gIGk4MzBfZGlzcGF0Y2hfZXhlY2J1 ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAJCQkJdTY0IG9mZnNldCwgdTMy IGxlbiwKPiAgCQkJCXVuc2lnbmVkIGZsYWdzKQo+ICB7Cj4gKwl1MzIgY3Nfb2Zmc2V0ID0gcmlu Zy0+c2NyYXRjaC5ndHRfb2Zmc2V0Owo+ICAJaW50IHJldDsKPiAgCj4gLQlpZiAoZmxhZ3MgJiBJ OTE1X0RJU1BBVENIX1BJTk5FRCkgewo+IC0JCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywg NCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiArCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmluZywgNik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gIAo+IC0JCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVIpOwo+IC0JCWludGVsX3JpbmdfZW1p dChyaW5nLCBvZmZzZXQgfCAoZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/IDAgOiBNSV9C QVRDSF9OT05fU0VDVVJFKSk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCArIGxl biAtIDgpOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKPiAtCQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7Cj4gLQl9IGVsc2Ugewo+IC0JCXUzMiBjc19vZmZzZXQgPSByaW5n LT5zY3JhdGNoLmd0dF9vZmZzZXQ7Cj4gKwkvKiBFdmljdCB0aGUgaW52YWxpZCBQVEUgVExCcyAq Lwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIENPTE9SX0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdC QSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9DT0xP Ul9DT1BZIHwgNDA5Nik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgSTgzMF9UTEJfRU5UUklF UyA8PCAxNiB8IDQpOyAvKiBsb2FkIGVhY2ggcGFnZSAqLwo+ICsJaW50ZWxfcmluZ19lbWl0KHJp bmcsIGNzX29mZnNldCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMHhkZWFkYmVlZik7Cj4g KwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7Cj4gIAo+ICsJaWYgKChmbGFncyAmIEk5MTVfRElTUEFUQ0hfUElOTkVEKSA9PSAwKSB7 Cj4gIAkJaWYgKGxlbiA+IEk4MzBfQkFUQ0hfTElNSVQpCj4gIAkJCXJldHVybiAtRU5PU1BDOwo+ ICAKPiAtCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJpbmcsIDkrMyk7Cj4gKwkJcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyaW5nLCA2ICsgMik7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJl dDsKPiAtCQkvKiBCbGl0IHRoZSBiYXRjaCAod2hpY2ggaGFzIG5vdyBhbGwgcmVsb2NzIGFwcGxp ZWQpIHRvIHRoZSBzdGFibGUgYmF0Y2gKPiAtCQkgKiBzY3JhdGNoIGJvIGFyZWEgKHNvIHRoYXQg dGhlIENTIG5ldmVyIHN0dW1ibGVzIG92ZXIgaXRzIHRsYgo+IC0JCSAqIGludmFsaWRhdGlvbiBi dWcpIC4uLiAqLwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBYWV9TUkNfQ09QWV9CTFRfQ01E IHwKPiAtCQkJCVhZX1NSQ19DT1BZX0JMVF9XUklURV9BTFBIQSB8Cj4gLQkJCQlYWV9TUkNfQ09Q WV9CTFRfV1JJVEVfUkdCKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgQkxUX0RFUFRIXzMy IHwgQkxUX1JPUF9HWENPUFkgfCA0MDk2KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIChESVZfUk9VTkRfVVAobGVuLCA0MDk2KSA8PCAx NikgfCAxMDI0KTsKPiArCj4gKwkJLyogQmxpdCB0aGUgYmF0Y2ggKHdoaWNoIGhhcyBub3cgYWxs IHJlbG9jcyBhcHBsaWVkKSB0byB0aGUKPiArCQkgKiBzdGFibGUgYmF0Y2ggc2NyYXRjaCBibyBh cmVhIChzbyB0aGF0IHRoZSBDUyBuZXZlcgo+ICsJCSAqIHN0dW1ibGVzIG92ZXIgaXRzIHRsYiBp bnZhbGlkYXRpb24gYnVnKSAuLi4KPiArCQkgKi8KPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywg U1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IDQwOTYpOwo+ICsJCWludGVs X3JpbmdfZW1pdChyaW5nLCBESVZfUk9VTkRfVVAobGVuLCA0MDk2KSA8PCAxNiB8IDEwMjQpOwo+ ICAJCWludGVsX3JpbmdfZW1pdChyaW5nLCBjc19vZmZzZXQpOwo+IC0JCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQocmluZywgNDA5Nik7Cj4gIAkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIG9mZnNldCk7Cj4gKwo+ICAJCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9GTFVTSCk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICsJCWludGVs X3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gIAkJLyogLi4uIGFuZCBleGVjdXRlIGl0LiAqLwo+ IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVIpOwo+IC0JCWludGVsX3Jp bmdfZW1pdChyaW5nLCBjc19vZmZzZXQgfCAoZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/ IDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNz X29mZnNldCArIGxlbiAtIDgpOwo+IC0JCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiArCQlv ZmZzZXQgPSBjc19vZmZzZXQ7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy aW5nLCA0KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVSKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBv ZmZzZXQgfCAoZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/IDAgOiBNSV9CQVRDSF9OT05f U0VDVVJFKSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0ICsgbGVuIC0gOCk7Cj4g KwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTIyMDAsNyArMjIxMiw3IEBA IGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAKPiAgCS8qIFdvcmthcm91bmQgYmF0Y2hidWZmZXIgdG8gY29tYmF0IENTIHRsYiBidWcu ICovCj4gIAlpZiAoSEFTX0JST0tFTl9DU19UTEIoZGV2KSkgewo+IC0JCW9iaiA9IGk5MTVfZ2Vt X2FsbG9jX29iamVjdChkZXYsIEk4MzBfQkFUQ0hfTElNSVQpOwo+ICsJCW9iaiA9IGk5MTVfZ2Vt X2FsbG9jX29iamVjdChkZXYsIEk4MzBfV0FfU0laRSk7Cj4gIAkJaWYgKG9iaiA9PSBOVUxMKSB7 Cj4gIAkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIGJhdGNoIGJvXG4iKTsKPiAgCQkJ cmV0dXJuIC1FTk9NRU07Cj4gLS0gCj4gMi4xLjAKPgo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4g U291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==