From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 6/8] drm/amdgpu: allocate VM PDs/PTs on demand Date: Tue, 5 Feb 2019 16:39:40 +0100 Message-ID: <2feffc18-277e-b3b9-8991-2afae9558bdf@gmail.com> References: <20190204124256.1765-1-christian.koenig@amd.com> <20190204124256.1765-6-christian.koenig@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Kuehling, Felix" , "Koenig, Christian" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" QW0gMDUuMDIuMTkgdW0gMTY6MjAgc2NocmllYiBLdWVobGluZywgRmVsaXg6Cj4+PiBUaGlzIG1h eSBjYXVzZSByZWdyZXNzaW9ucyBpbiBLRkQgaWYgUFQgQk8gYWxsb2NhdGlvbiBjYW4gdHJpZ2dl cgo+Pj4gZXZpY3Rpb24gZmVuY2VzLgo+PiBJIGRvbid0IHRoaW5rIHRoYXQgY2FuIGhhcHBlbiwg YnV0IG5lZWQgdG8gZG91YmxlIGNoZWNrIGFzIHdlbGwuCj4+Cj4+IE90aGVyd2lzZSBhbGxvY2F0 aW5nIHBhZ2UgdGFibGVzIGNvdWxkIHRyeSB0byBldmljdCBvdGhlciBwYWdlIHRhYmxlcyBmcm9t IHRoZSBzYW1lIHByb2Nlc3MgYW5kIHRoYXQgc2VyaW91c2x5IGRvZXNuJ3QgbWFrZSBtdWNoIHNl bnNlLgo+IEV2aWN0aW9uIGZlbmNlcyBkb24ndCBjYXVzZSBhY3R1YWwgbWVtb3J5IGV2aWN0aW9u cy4gVGhleSBhcmUgdGhlIHJlc3VsdCBvZiBtZW1vcnkgZXZpY3Rpb25zLiBUaGV5IGNhdXNlIEtG RCBwcm9jZXNzZXMgdG8gYmUgcHJlZW1wdGVkIGluIG9yZGVyIHRvIGFsbG93IHRoZSBmZW5jZSB0 byBzaWduYWwgc28gbWVtb3J5IGNhbiBiZSBldmljdGVkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGEg cGFnZSB0YWJsZSBhbGxvY2F0aW9uIHdhaXRzIGZvciB0aGUgZmVuY2VzIG9uIHRoZSBQRCByZXNl cnZhdGlvbiwgd2hpY2ggbG9va3MgbGlrZSBhbiBldmljdGlvbiB0byBLRkQgYW5kIHRyaWdnZXJz IGFuIHVubmVjZXNzYXJ5IHByZWVtcHRpb24uIFRoZXJlIGlzIG5vIGFjdHVhbCBtZW1vcnkgZXZp Y3Rpb24gaGFwcGVuaW5nIGhlcmUuCgpZZWFoLCBidXQgd2hlcmUgaXMgdGhhdCBhY3R1YWxseSBj b21pbmcgZnJvbT8KCkl0IHNvdW5kcyBsaWtlIHdlIHN0aWxsIHVubmVjZXNzYXJ5IHN5bmNocm9u aXplIHBhZ2UgdGFibGUgdXBkYXRlcyAKc29tZXdoZXJlLgoKRG8geW91IGhhdmUgYSBjYWxsIGNo YWluPwoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKPgo+IFJlZ2FyZHMsCj4gICAgRmVsaXgKPgo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5p Zy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+Cj4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgMDUs IDIwMTkgNjozNyBBTQo+IFRvOiBLdWVobGluZywgRmVsaXggPEZlbGl4Lkt1ZWhsaW5nQGFtZC5j b20+OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg Ni84XSBkcm0vYW1kZ3B1OiBhbGxvY2F0ZSBWTSBQRHMvUFRzIG9uIGRlbWFuZAo+Cj4+IFRoaXMg bWF5IGNhdXNlIHJlZ3Jlc3Npb25zIGluIEtGRCBpZiBQVCBCTyBhbGxvY2F0aW9uIGNhbiB0cmln Z2VyCj4+IGV2aWN0aW9uIGZlbmNlcy4KPiBJIGRvbid0IHRoaW5rIHRoYXQgY2FuIGhhcHBlbiwg YnV0IG5lZWQgdG8gZG91YmxlIGNoZWNrIGFzIHdlbGwuCj4KPiBPdGhlcndpc2UgYWxsb2NhdGlu ZyBwYWdlIHRhYmxlcyBjb3VsZCB0cnkgdG8gZXZpY3Qgb3RoZXIgcGFnZSB0YWJsZXMgZnJvbSB0 aGUgc2FtZSBwcm9jZXNzIGFuZCB0aGF0IHNlcmlvdXNseSBkb2Vzbid0IG1ha2UgbXVjaCBzZW5z ZS4KPgo+PiBEbyB5b3Uga25vdyB3aGV0aGVyIFBUIEJPIGFsbG9jYXRpb24gd291bGQgd2FpdCBv biB0aGUgcGFnZS1kaXJlY3RvcnkKPj4gcmVzZXJ2YXRpb24gb2JqZWN0IHdpdGhvdXQgdGhlIHN5 bmMtb2JqZWN0IEFQSSBhbnl3aGVyZT8KPiBGb3IgaW5zaWRlIHRoZSBrZXJuZWwgSSBjYW4ndCB0 aGluayBvZiBhbnkgcmVsZXZhbnQgdXNlIGNhc2UsIGV4Y2VwdCBmb3IgdGhlIGV2aWN0aW9uIGNh bGwgcGF0aCBhbmQgdGhlcmUgaXQgaXMgaW50ZW50aW9uYWwuCj4KPiBPbmUgdGhpbmcgd2hpY2gg d2lsbCBhbHdheXMgd2FpdCBmb3IgYWxsIGZlbmNlcyBpcyB0aGUgZGlzcGxheSBjb2RlIHBhdGgs IGJ1dCB0aGF0IGlzIG5vdCByZWxldmFudCBoZXJlLiAoSXNuJ3QgaXQ/KS4KPgo+IFdoYXQgbWln aHQgYmUgcXVlc3Rpb25hYmxlIGlzIGFtZGdwdV9nZW1fd2FpdF9pZGxlX2lvY3RsKCksIGJ1dCBJ IHRoaW5rIHRoaXMgaXMgYWxzbyBjb21wbGV0ZWx5IGludGVudGlvbmFsIHRoYXQgd2Ugd2FpdCBv biBldmVyeXRoaW5nIGhlcmUuCj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+IEFtIDA0LjAy LjE5IHVtIDIxOjE3IHNjaHJpZWIgS3VlaGxpbmcsIEZlbGl4Ogo+PiBUaGlzIG1heSBjYXVzZSBy ZWdyZXNzaW9ucyBpbiBLRkQgaWYgUFQgQk8gYWxsb2NhdGlvbiBjYW4gdHJpZ2dlcgo+PiBldmlj dGlvbiBmZW5jZXMuIFRoZSBwcmV2aW91cyBjYWxsIHRvIGFtZGdwdV92bV9hbGxvY19wdHMgd2Fz IGluIGEKPj4gY29udGV4dCB3aGVyZSB3ZSBoYWQgdGVtcG9yYXJpbHkgcmVtb3ZlZCB0aGUgZXZp Y3Rpb24gZmVuY2UuIFBUIEJPCj4+IGFsbG9jYXRpb24gaW4gYW1kZ3B1X3ZtX2JvX3VwZGF0ZSBp cyBub3QgcHJvdGVjdGVkIGxpa2UgdGhhdC4KPj4KPj4gSSB2YWd1ZWx5IHJlbWVtYmVyIGxvb2tp bmcgaW50byB0aGlzIGxhc3QgdGltZSB5b3Ugd2VyZSB3b3JraW5nIG9uIG91cgo+PiBldmljdGlv biBmZW5jZSBjb2RlIGFuZCB0aGlua2luZyB0aGF0IG1vc3Qgb2YgdGhlIGNhc2VzIHdoZXJlIHdl Cj4+IHJlbW92ZSB0aGUgZXZpY3Rpb24gZmVuY2Ugd2VyZSBubyBsb25nZXIgbmVlZGVkIGlmIGZl bmNlCj4+IHN5bmNocm9uaXphdGlvbiBoYXBwZW5zIHRocm91Z2ggdGhlIGFtZGdwdV9zeW5jLW9i amVjdCBBUEkgKHJhdGhlcgo+PiB0aGFuIHdhaXRpbmcgb24gYSByZXNlcnZhdGlvbiBvYmplY3Qg ZGlyZWN0bHkpLiBJIHRoaW5rIGl0J3MgdGltZSBJIGdvCj4+IGFuZCBmaW5hbGx5IGNsZWFuIHRo YXQgdXAuCj4+Cj4+IERvIHlvdSBrbm93IHdoZXRoZXIgUFQgQk8gYWxsb2NhdGlvbiB3b3VsZCB3 YWl0IG9uIHRoZSBwYWdlLWRpcmVjdG9yeQo+PiByZXNlcnZhdGlvbiBvYmplY3Qgd2l0aG91dCB0 aGUgc3luYy1vYmplY3QgQVBJIGFueXdoZXJlPwo+Pgo+PiBSZWdhcmRzLAo+PiAgICDCoCBGZWxp eAo+Pgo+PiBPbiAyMDE5LTAyLTA0IDc6NDIgYS5tLiwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToK Pj4+IExldCdzIHN0YXJ0IHRvIGFsbG9jYXRlIFZNIFBEcy9QVHMgb24gZGVtYW5kIGluc3RlYWQg b2YKPj4+IHByZS1hbGxvY2F0aW5nIHRoZW0gZHVyaW5nIG1hcHBpbmcuCj4+Pgo+Pj4gU2lnbmVk LW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+Pj4g LS0tCj4+PiAgICAgLi4uL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMg IHwgICA2IC0KPj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMg ICAgICAgfCAgIDkgLS0KPj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2VtLmMgICAgICAgfCAgMTAgLS0KPj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdm0uYyAgICAgICAgfCAxMzYgKysrKystLS0tLS0tLS0tLS0tCj4+PiAgICAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggICAgICAgIHwgICAzIC0KPj4+ICAgICA1 IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDEyNiBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n cHV2bS5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1 dm0uYwo+Pj4gaW5kZXggZDdiMTBkNzlmMWRlLi4yMTc2YzkyZjkzNzcgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYwo+Pj4g QEAgLTQ5MiwxMiArNDkyLDYgQEAgc3RhdGljIGludCBhZGRfYm9fdG9fdm0oc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBrZ2RfbWVtICptZW0sCj4+PiAgICAgCQkJCQl2bS0+cHJv Y2Vzc19pbmZvLT5ldmljdGlvbl9mZW5jZSwKPj4+ICAgICAJCQkJCU5VTEwsIE5VTEwpOwo+Pj4g ICAgIAo+Pj4gLQlyZXQgPSBhbWRncHVfdm1fYWxsb2NfcHRzKGFkZXYsIHZtLCB2YSwgYW1kZ3B1 X2JvX3NpemUoYm8pKTsKPj4+IC0JaWYgKHJldCkgewo+Pj4gLQkJcHJfZXJyKCJGYWlsZWQgdG8g YWxsb2NhdGUgcHRzLCBlcnI9JWRcbiIsIHJldCk7Cj4+PiAtCQlnb3RvIGVycl9hbGxvY19wdHM7 Cj4+PiAtCX0KPj4+IC0KPj4+ICAgICAJcmV0ID0gdm1fdmFsaWRhdGVfcHRfcGRfYm9zKHZtKTsK Pj4+ICAgICAJaWYgKHJldCkgewo+Pj4gICAgIAkJcHJfZXJyKCJ2YWxpZGF0ZV9wdF9wZF9ib3Mo KSBmYWlsZWRcbiIpOyBkaWZmIC0tZ2l0Cj4+PiBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jc2EuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3Nh LmMKPj4+IGluZGV4IDdlMjJiZTdjYTY4YS4uNTRkZDAyYTg5OGI5IDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzYS5jCj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMKPj4+IEBAIC05MiwxNSArOTIsNiBAQCBp bnQgYW1kZ3B1X21hcF9zdGF0aWNfY3NhKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1 Y3QgYW1kZ3B1X3ZtICp2bSwKPj4+ICAgICAJCXJldHVybiAtRU5PTUVNOwo+Pj4gICAgIAl9Cj4+ PiAgICAgCj4+PiAtCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKGFkZXYsICgqYm9fdmEpLT5iYXNl LnZtLCBjc2FfYWRkciwKPj4+IC0JCQkJc2l6ZSk7Cj4+PiAtCWlmIChyKSB7Cj4+PiAtCQlEUk1f RVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBwdHMgZm9yIHN0YXRpYyBDU0EsIGVycj0lZFxuIiwg cik7Cj4+PiAtCQlhbWRncHVfdm1fYm9fcm12KGFkZXYsICpib192YSk7Cj4+PiAtCQl0dG1fZXVf YmFja29mZl9yZXNlcnZhdGlvbigmdGlja2V0LCAmbGlzdCk7Cj4+PiAtCQlyZXR1cm4gcjsKPj4+ IC0JfQo+Pj4gLQo+Pj4gICAgIAlyID0gYW1kZ3B1X3ZtX2JvX21hcChhZGV2LCAqYm9fdmEsIGNz YV9hZGRyLCAwLCBzaXplLAo+Pj4gICAgIAkJCSAgICAgQU1ER1BVX1BURV9SRUFEQUJMRSB8IEFN REdQVV9QVEVfV1JJVEVBQkxFIHwKPj4+ICAgICAJCQkgICAgIEFNREdQVV9QVEVfRVhFQ1VUQUJM RSk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dl bS5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+Pj4gaW5k ZXggZDIxZGQyZjM2OWRhLi5lMTQxZTNiMTMxMTIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+Pj4gQEAgLTYyNywxMSArNjI3LDYgQEAgaW50IGFtZGdw dV9nZW1fdmFfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+IHZvaWQgKmRhdGEsCj4+ PiAgICAgCj4+PiAgICAgCXN3aXRjaCAoYXJncy0+b3BlcmF0aW9uKSB7Cj4+PiAgICAgCWNhc2Ug QU1ER1BVX1ZBX09QX01BUDoKPj4+IC0JCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKGFkZXYsIGJv X3ZhLT5iYXNlLnZtLCBhcmdzLT52YV9hZGRyZXNzLAo+Pj4gLQkJCQkJYXJncy0+bWFwX3NpemUp Owo+Pj4gLQkJaWYgKHIpCj4+PiAtCQkJZ290byBlcnJvcl9iYWNrb2ZmOwo+Pj4gLQo+Pj4gICAg IAkJdmFfZmxhZ3MgPSBhbWRncHVfZ21jX2dldF9wdGVfZmxhZ3MoYWRldiwgYXJncy0+ZmxhZ3Mp Owo+Pj4gICAgIAkJciA9IGFtZGdwdV92bV9ib19tYXAoYWRldiwgYm9fdmEsIGFyZ3MtPnZhX2Fk ZHJlc3MsCj4+PiAgICAgCQkJCSAgICAgYXJncy0+b2Zmc2V0X2luX2JvLCBhcmdzLT5tYXBfc2l6 ZSwgQEAgLTY0NywxMSArNjQyLDYgQEAKPj4+IGludCBhbWRncHVfZ2VtX3ZhX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+PiAgICAgCQkJCQkJYXJncy0+bWFwX3Np emUpOwo+Pj4gICAgIAkJYnJlYWs7Cj4+PiAgICAgCWNhc2UgQU1ER1BVX1ZBX09QX1JFUExBQ0U6 Cj4+PiAtCQlyID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhhZGV2LCBib192YS0+YmFzZS52bSwgYXJn cy0+dmFfYWRkcmVzcywKPj4+IC0JCQkJCWFyZ3MtPm1hcF9zaXplKTsKPj4+IC0JCWlmIChyKQo+ Pj4gLQkJCWdvdG8gZXJyb3JfYmFja29mZjsKPj4+IC0KPj4+ICAgICAJCXZhX2ZsYWdzID0gYW1k Z3B1X2dtY19nZXRfcHRlX2ZsYWdzKGFkZXYsIGFyZ3MtPmZsYWdzKTsKPj4+ICAgICAJCXIgPSBh bWRncHVfdm1fYm9fcmVwbGFjZV9tYXAoYWRldiwgYm9fdmEsIGFyZ3MtPnZhX2FkZHJlc3MsCj4+ PiAgICAgCQkJCQkgICAgIGFyZ3MtPm9mZnNldF9pbl9ibywgYXJncy0+bWFwX3NpemUsIGRpZmYg LS1naXQKPj4+IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+IGluZGV4IGY3ZDQxMGE1 ZDg0OC4uMGI4YTFhYTU2YzRhIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5jCj4+PiBAQCAtNTA0LDQ3ICs1MDQsNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1f cHRfbmV4dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICAgICAJfQo+Pj4gICAgIH0K Pj4+ICAgICAKPj4+IC0vKioKPj4+IC0gKiBhbWRncHVfdm1fcHRfZmlyc3RfbGVhZiAtIGdldCBm aXJzdCBsZWFmIFBEL1BUCj4+PiAtICoKPj4+IC0gKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2lu dGVyCj4+PiAtICogQHZtOiBhbWRncHVfdm0gc3RydWN0dXJlCj4+PiAtICogQHN0YXJ0OiBzdGFy dCBhZGRyIG9mIHRoZSB3YWxrCj4+PiAtICogQGN1cnNvcjogc3RhdGUgdG8gaW5pdGlhbGl6ZQo+ Pj4gLSAqCj4+PiAtICogU3RhcnQgYSB3YWxrIGFuZCBnbyBkaXJlY3RseSB0byB0aGUgbGVhZiBu b2RlLgo+Pj4gLSAqLwo+Pj4gLXN0YXRpYyB2b2lkIGFtZGdwdV92bV9wdF9maXJzdF9sZWFmKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gLQkJCQkgICAgc3RydWN0IGFtZGdwdV92bSAq dm0sIHVpbnQ2NF90IHN0YXJ0LAo+Pj4gLQkJCQkgICAgc3RydWN0IGFtZGdwdV92bV9wdF9jdXJz b3IgKmN1cnNvcikKPj4+IC17Cj4+PiAtCWFtZGdwdV92bV9wdF9zdGFydChhZGV2LCB2bSwgc3Rh cnQsIGN1cnNvcik7Cj4+PiAtCXdoaWxlIChhbWRncHVfdm1fcHRfZGVzY2VuZGFudChhZGV2LCBj dXJzb3IpKTsKPj4+IC19Cj4+PiAtCj4+PiAtLyoqCj4+PiAtICogYW1kZ3B1X3ZtX3B0X25leHRf bGVhZiAtIGdldCBuZXh0IGxlYWYgUEQvUFQKPj4+IC0gKgo+Pj4gLSAqIEBhZGV2OiBhbWRncHVf ZGV2aWNlIHBvaW50ZXIKPj4+IC0gKiBAY3Vyc29yOiBjdXJyZW50IHN0YXRlCj4+PiAtICoKPj4+ IC0gKiBXYWxrIHRoZSBQRC9QVCB0cmVlIHRvIHRoZSBuZXh0IGxlYWYgbm9kZS4KPj4+IC0gKi8K Pj4+IC1zdGF0aWMgdm9pZCBhbWRncHVfdm1fcHRfbmV4dF9sZWFmKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAo+Pj4gLQkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNvciAqY3Vyc29y KQo+Pj4gLXsKPj4+IC0JYW1kZ3B1X3ZtX3B0X25leHQoYWRldiwgY3Vyc29yKTsKPj4+IC0JaWYg KGN1cnNvci0+cGZuICE9IH4wbGwpCj4+PiAtCQl3aGlsZSAoYW1kZ3B1X3ZtX3B0X2Rlc2NlbmRh bnQoYWRldiwgY3Vyc29yKSk7Cj4+PiAtfQo+Pj4gLQo+Pj4gLS8qKgo+Pj4gLSAqIGZvcl9lYWNo X2FtZGdwdV92bV9wdF9sZWFmIC0gd2FsayBvdmVyIGFsbCBsZWFmIFBEcy9QVHMgaW4gdGhlCj4+ PiBoaWVyYXJjaHkKPj4+IC0gKi8KPj4+IC0jZGVmaW5lIGZvcl9lYWNoX2FtZGdwdV92bV9wdF9s ZWFmKGFkZXYsIHZtLCBzdGFydCwgZW5kLCBjdXJzb3IpCQlcCj4+PiAtCWZvciAoYW1kZ3B1X3Zt X3B0X2ZpcnN0X2xlYWYoKGFkZXYpLCAodm0pLCAoc3RhcnQpLCAmKGN1cnNvcikpOwkJXAo+Pj4g LQkgICAgIChjdXJzb3IpLnBmbiA8PSBlbmQ7IGFtZGdwdV92bV9wdF9uZXh0X2xlYWYoKGFkZXYp LCAmKGN1cnNvcikpKQo+Pj4gLQo+Pj4gICAgIC8qKgo+Pj4gICAgICAqIGFtZGdwdV92bV9wdF9m aXJzdF9kZnMgLSBzdGFydCBhIGRlZXAgZmlyc3Qgc2VhcmNoCj4+PiAgICAgICoKPj4+IEBAIC05 MTksNzQgKzg3OCw1MSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1fYm9fcGFyYW0oc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+Pj4gICAgICAqIFJldHVy bnM6Cj4+PiAgICAgICogMCBvbiBzdWNjZXNzLCBlcnJubyBvdGhlcndpc2UuCj4+PiAgICAgICov Cj4+PiAtaW50IGFtZGdwdV92bV9hbGxvY19wdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4+PiAtCQkJc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+PiAtCQkJdWludDY0X3Qgc2FkZHIsIHVp bnQ2NF90IHNpemUpCj4+PiArc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfcHRzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAo+Pj4gKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwK Pj4+ICsJCQkgICAgICAgc3RydWN0IGFtZGdwdV92bV9wdF9jdXJzb3IgKmN1cnNvcikKPj4+ICAg ICB7Cj4+PiAtCXN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29yIGN1cnNvcjsKPj4+ICsJc3RydWN0 IGFtZGdwdV92bV9wdCAqZW50cnkgPSBjdXJzb3ItPmVudHJ5Owo+Pj4gKwlzdHJ1Y3QgYW1kZ3B1 X2JvX3BhcmFtIGJwOwo+Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1X2JvICpwdDsKPj4+IC0JdWludDY0 X3QgZWFkZHI7Cj4+PiAgICAgCWludCByOwo+Pj4gICAgIAo+Pj4gLQkvKiB2YWxpZGF0ZSB0aGUg cGFyYW1ldGVycyAqLwo+Pj4gLQlpZiAoc2FkZHIgJiBBTURHUFVfR1BVX1BBR0VfTUFTSyB8fCBz aXplICYgQU1ER1BVX0dQVV9QQUdFX01BU0spCj4+PiAtCQlyZXR1cm4gLUVJTlZBTDsKPj4+ICsJ aWYgKGN1cnNvci0+bGV2ZWwgPCBBTURHUFVfVk1fUFRCICYmICFlbnRyeS0+ZW50cmllcykgewo+ Pj4gKwkJdW5zaWduZWQgbnVtX2VudHJpZXM7Cj4+PiAgICAgCj4+PiAtCWVhZGRyID0gc2FkZHIg KyBzaXplIC0gMTsKPj4+IC0KPj4+IC0Jc2FkZHIgLz0gQU1ER1BVX0dQVV9QQUdFX1NJWkU7Cj4+ PiAtCWVhZGRyIC89IEFNREdQVV9HUFVfUEFHRV9TSVpFOwo+Pj4gLQo+Pj4gLQlpZiAoZWFkZHIg Pj0gYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuKSB7Cj4+PiAtCQlkZXZfZXJyKGFkZXYtPmRldiwg InZhIGFib3ZlIGxpbWl0ICgweCUwOGxsWCA+PSAweCUwOGxsWClcbiIsCj4+PiAtCQkJZWFkZHIs IGFkZXYtPnZtX21hbmFnZXIubWF4X3Bmbik7Cj4+PiAtCQlyZXR1cm4gLUVJTlZBTDsKPj4+ICsJ CW51bV9lbnRyaWVzID0gYW1kZ3B1X3ZtX251bV9lbnRyaWVzKGFkZXYsIGN1cnNvci0+bGV2ZWwp Owo+Pj4gKwkJZW50cnktPmVudHJpZXMgPSBrdm1hbGxvY19hcnJheShudW1fZW50cmllcywKPj4+ ICsJCQkJCQlzaXplb2YoKmVudHJ5LT5lbnRyaWVzKSwKPj4+ICsJCQkJCQlHRlBfS0VSTkVMIHwg X19HRlBfWkVSTyk7Cj4+PiArCQlpZiAoIWVudHJ5LT5lbnRyaWVzKQo+Pj4gKwkJCXJldHVybiAt RU5PTUVNOwo+Pj4gICAgIAl9Cj4+PiAgICAgCj4+PiAtCWZvcl9lYWNoX2FtZGdwdV92bV9wdF9s ZWFmKGFkZXYsIHZtLCBzYWRkciwgZWFkZHIsIGN1cnNvcikgewo+Pj4gLQkJc3RydWN0IGFtZGdw dV92bV9wdCAqZW50cnkgPSBjdXJzb3IuZW50cnk7Cj4+PiAtCQlzdHJ1Y3QgYW1kZ3B1X2JvX3Bh cmFtIGJwOwo+Pj4gLQo+Pj4gLQkJaWYgKGN1cnNvci5sZXZlbCA8IEFNREdQVV9WTV9QVEIpIHsK Pj4+IC0JCQl1bnNpZ25lZCBudW1fZW50cmllczsKPj4+IC0KPj4+IC0JCQludW1fZW50cmllcyA9 IGFtZGdwdV92bV9udW1fZW50cmllcyhhZGV2LCBjdXJzb3IubGV2ZWwpOwo+Pj4gLQkJCWVudHJ5 LT5lbnRyaWVzID0ga3ZtYWxsb2NfYXJyYXkobnVtX2VudHJpZXMsCj4+PiAtCQkJCQkJCXNpemVv ZigqZW50cnktPmVudHJpZXMpLAo+Pj4gLQkJCQkJCQlHRlBfS0VSTkVMIHwKPj4+IC0JCQkJCQkJ X19HRlBfWkVSTyk7Cj4+PiAtCQkJaWYgKCFlbnRyeS0+ZW50cmllcykKPj4+IC0JCQkJcmV0dXJu IC1FTk9NRU07Cj4+PiAtCQl9Cj4+PiAtCj4+PiAtCj4+PiAtCQlpZiAoZW50cnktPmJhc2UuYm8p Cj4+PiAtCQkJY29udGludWU7Cj4+PiAtCj4+PiAtCQlhbWRncHVfdm1fYm9fcGFyYW0oYWRldiwg dm0sIGN1cnNvci5sZXZlbCwgJmJwKTsKPj4+IC0KPj4+IC0JCXIgPSBhbWRncHVfYm9fY3JlYXRl KGFkZXYsICZicCwgJnB0KTsKPj4+IC0JCWlmIChyKQo+Pj4gLQkJCXJldHVybiByOwo+Pj4gLQo+ Pj4gLQkJaWYgKHZtLT51c2VfY3B1X2Zvcl91cGRhdGUpIHsKPj4+IC0JCQlyID0gYW1kZ3B1X2Jv X2ttYXAocHQsIE5VTEwpOwo+Pj4gLQkJCWlmIChyKQo+Pj4gLQkJCQlnb3RvIGVycm9yX2ZyZWVf cHQ7Cj4+PiAtCQl9Cj4+PiArCWlmIChlbnRyeS0+YmFzZS5ibykKPj4+ICsJCXJldHVybiAwOwo+ Pj4gICAgIAo+Pj4gLQkJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkg dG8gYXZvaWQKPj4+IC0JCSogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBvcmRlci4KPj4+ IC0JCSovCj4+PiAtCQlwdC0+cGFyZW50ID0gYW1kZ3B1X2JvX3JlZihjdXJzb3IucGFyZW50LT5i YXNlLmJvKTsKPj4+ICsJYW1kZ3B1X3ZtX2JvX3BhcmFtKGFkZXYsIHZtLCBjdXJzb3ItPmxldmVs LCAmYnApOwo+Pj4gICAgIAo+Pj4gLQkJYW1kZ3B1X3ZtX2JvX2Jhc2VfaW5pdCgmZW50cnktPmJh c2UsIHZtLCBwdCk7Cj4+PiArCXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsICZicCwgJnB0KTsK Pj4+ICsJaWYgKHIpCj4+PiArCQlyZXR1cm4gcjsKPj4+ICAgICAKPj4+IC0JCXIgPSBhbWRncHVf dm1fY2xlYXJfYm8oYWRldiwgdm0sIHB0KTsKPj4+ICsJaWYgKHZtLT51c2VfY3B1X2Zvcl91cGRh dGUpIHsKPj4+ICsJCXIgPSBhbWRncHVfYm9fa21hcChwdCwgTlVMTCk7Cj4+PiAgICAgCQlpZiAo cikKPj4+ICAgICAJCQlnb3RvIGVycm9yX2ZyZWVfcHQ7Cj4+PiAgICAgCX0KPj4+ICAgICAKPj4+ ICsJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gYXZvaWQKPj4+ ICsJICogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBvcmRlci4KPj4+ICsJICovCj4+PiAr CXB0LT5wYXJlbnQgPSBhbWRncHVfYm9fcmVmKGN1cnNvci0+cGFyZW50LT5iYXNlLmJvKTsKPj4+ ICsJYW1kZ3B1X3ZtX2JvX2Jhc2VfaW5pdCgmZW50cnktPmJhc2UsIHZtLCBwdCk7Cj4+PiArCj4+ PiArCXIgPSBhbWRncHVfdm1fY2xlYXJfYm8oYWRldiwgdm0sIHB0KTsKPj4+ICsJaWYgKHIpCj4+ PiArCQlnb3RvIGVycm9yX2ZyZWVfcHQ7Cj4+PiArCj4+PiAgICAgCXJldHVybiAwOwo+Pj4gICAg IAo+Pj4gICAgIGVycm9yX2ZyZWVfcHQ6Cj4+PiBAQCAtMTY1NSw2ICsxNTkxLDcgQEAgc3RhdGlj IGludCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFt cyAqcGFyYW1zLAo+Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNvciBjdXJzb3I7Cj4+ PiAgICAgCXVpbnQ2NF90IGZyYWdfc3RhcnQgPSBzdGFydCwgZnJhZ19lbmQ7Cj4+PiAgICAgCXVu c2lnbmVkIGludCBmcmFnOwo+Pj4gKwlpbnQgcjsKPj4+ICAgICAKPj4+ICAgICAJLyogZmlndXJl IG91dCB0aGUgaW5pdGlhbCBmcmFnbWVudCAqLwo+Pj4gICAgIAlhbWRncHVfdm1fZnJhZ21lbnQo cGFyYW1zLCBmcmFnX3N0YXJ0LCBlbmQsIGZsYWdzLCAmZnJhZywKPj4+ICZmcmFnX2VuZCk7IEBA IC0xNjYyLDEyICsxNTk5LDE1IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9wdGVzKHN0 cnVjdCBhbWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywKPj4+ICAgICAJLyogd2FsayBv dmVyIHRoZSBhZGRyZXNzIHNwYWNlIGFuZCB1cGRhdGUgdGhlIFBUcyAqLwo+Pj4gICAgIAlhbWRn cHVfdm1fcHRfc3RhcnQoYWRldiwgcGFyYW1zLT52bSwgc3RhcnQsICZjdXJzb3IpOwo+Pj4gICAg IAl3aGlsZSAoY3Vyc29yLnBmbiA8IGVuZCkgewo+Pj4gLQkJc3RydWN0IGFtZGdwdV9ibyAqcHQg PSBjdXJzb3IuZW50cnktPmJhc2UuYm87Cj4+PiAgICAgCQl1bnNpZ25lZCBzaGlmdCwgcGFyZW50 X3NoaWZ0LCBtYXNrOwo+Pj4gICAgIAkJdWludDY0X3QgaW5jciwgZW50cnlfZW5kLCBwZV9zdGFy dDsKPj4+ICsJCXN0cnVjdCBhbWRncHVfYm8gKnB0Owo+Pj4gICAgIAo+Pj4gLQkJaWYgKCFwdCkK Pj4+IC0JCQlyZXR1cm4gLUVOT0VOVDsKPj4+ICsJCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKHBh cmFtcy0+YWRldiwgcGFyYW1zLT52bSwgJmN1cnNvcik7Cj4+PiArCQlpZiAocikKPj4+ICsJCQly ZXR1cm4gcjsKPj4+ICsKPj4+ICsJCXB0ID0gY3Vyc29yLmVudHJ5LT5iYXNlLmJvOwo+Pj4gICAg IAo+Pj4gICAgIAkJLyogVGhlIHJvb3QgbGV2ZWwgY2FuJ3QgYmUgYSBodWdlIHBhZ2UgKi8KPj4+ ICAgICAJCWlmIChjdXJzb3IubGV2ZWwgPT0gYWRldi0+dm1fbWFuYWdlci5yb290X2xldmVsKSB7 IGRpZmYgLS1naXQKPj4+IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgK Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4+IGluZGV4IDgx ZmY4MTc3ZjA5Mi4uMTE2NjA1YzAzOGQyIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5oCj4+PiBAQCAtMzAzLDkgKzMwMyw2IEBAIGJvb2wgYW1kZ3B1X3ZtX3Jl YWR5KHN0cnVjdCBhbWRncHVfdm0gKnZtKTsKPj4+ICAgICBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRl X3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0s Cj4+PiAgICAgCQkJICAgICAgaW50ICgqY2FsbGJhY2spKHZvaWQgKnAsIHN0cnVjdCBhbWRncHVf Ym8gKmJvKSwKPj4+ICAgICAJCQkgICAgICB2b2lkICpwYXJhbSk7Cj4+PiAtaW50IGFtZGdwdV92 bV9hbGxvY19wdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+PiAtCQkJc3RydWN0IGFt ZGdwdV92bSAqdm0sCj4+PiAtCQkJdWludDY0X3Qgc2FkZHIsIHVpbnQ2NF90IHNpemUpOwo+Pj4g ICAgIGludCBhbWRncHVfdm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3Qg YW1kZ3B1X2pvYiAqam9iLCBib29sIG5lZWRfcGlwZV9zeW5jKTsKPj4+ICAgICBpbnQgYW1kZ3B1 X3ZtX3VwZGF0ZV9kaXJlY3RvcmllcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICAg ICAJCQkJIHN0cnVjdCBhbWRncHVfdm0gKnZtKTsKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=