From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/3] drm/radeon: add userfence IOCTL Date: Mon, 13 Apr 2015 19:23:34 +0200 Message-ID: <20150413172334.GA6092@phenom.ffwll.local> References: <1428936737-19103-1-git-send-email-deathsimple@vodafone.de> <1428936737-19103-4-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTP id 2F0976E5C4 for ; Mon, 13 Apr 2015 10:21:36 -0700 (PDT) Received: by wiax7 with SMTP id x7so69954847wia.0 for ; Mon, 13 Apr 2015 10:21:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1428936737-19103-4-git-send-email-deathsimple@vodafone.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: Serguei.Sagalovitch@amd.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBcHIgMTMsIDIwMTUgYXQgMDQ6NTI6MTdQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBGcm9tOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5j b20+Cj4gCj4gV0lQIHBhdGNoIHdoaWNoIGFkZHMgYW4gdXNlciBmZW5jZSBJT0NUTC4KPgo+IFNp Z25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K CkkndmUgZGlzY3Vzc2VkIHVzZXJzcGFjZSBmZW5jZXMgYSBsb3Qgd2l0aCBKZXJvbWUgbGFzdCBY REMsIHNvIGhlcmUncyBteQpjb21tZW50czoKCk15IHByaW1hcnkgY29uY2VybiB3aXRoIG1pZC1i YXRjaCBmZW5jZXMgaXMgdGhhdCBpZiB3ZSBjcmVhdGUgcmVhbCBrZXJuZWwKZmVuY2VzICh3aGlj aCBtaWdodCBldmVuIGVzY2FwZSB0byBvdGhlciBwbGFjZXMgdXNpbmcgYW5kcm9pZCBzeW5jcHRz IG9yCmRtYS1idWYpIHRoZW4gd2UgZW5kIHVwIHJlbHlpbmcgdXBvbiBjb3JyZWN0IHVzZXJzcGFj ZSB0byBub3QgaGFuZyB0aGUKa2VybmVsLCB3aGljaCBpc24ndCBnb29kLgoKU28gaW1vIGFueSBr aW5kIG9mIG1pZC1iYXRjaCBmZW5jZSBtdXN0IGJlIGRvbmUgY29tcGxldGVseSBpbiB1c2Vyc3Bh Y2UKYW5kIG5ldmVyIHNob3cgdXAgYXMgYSBmZW5jZSBvYmplY3Qgb24gdGhlIGtlcm5lbCBzaWRl LiBJIHRob3VnaHQgdGhhdApqdXN0IGJ1c3ktc3Bpbm5pbmcgaW4gdXNlcnNwYWNlIHdvdWxkIGJl IGFsbCB0aGF0J3MgbmVlZGVkLCBidXQgYWRkaW5nIGFuCmlvY3RsIHRvIHdhaXQgb24gc3VjaCB1 c2VyIGZlbmNlcyBzZWVtcyBsaWtlIGEgbmljZSBpZGVhIHRvby4gT24gaTkxNSB3ZQpldmVuIGhh dmUgMiBpbnRlcnJ1cHQgc291cmNlcyBwZXIgcmluZywgc28gd2UgY291bGQgc3BsaXQgdGhlIGly cQpwcm9jZXNzaW5nIGJldHdlZW4ga2VybmVsIGZlbmNlcyBhbmQgdXNlcnNwYWNlIGZlbmNlcy4K Ck9uZSB0aGluZyB0byBrZWVwIGluIG1pbmQgKEkgZHVubm8gcmFkZW9uL3R0bSBpbnRlcm5hbHMg ZW5vdWdoIHRvIGtub3cpIGlzCnRvIG1ha2Ugc3VyZSB0aGF0IHdoaWxlIGJlaW5nIGJsb2NrZWQg Zm9yIGEgdXNlcnNwYWNlIGZlbmNlIGluIHRoZSBpb2N0bAp5b3UncmUgbm90IHN0YXJ2aW5nIGFu eW9uZSBlbHNlLiBCdXQgaXQgZG9lc24ndCBsb29rIGxpa2UgeW91J3JlIGhvbGRpbmcKYW55IHJl c2VydmF0aW9uIG9iamVjdHMgb3Igc29tZXRoaW5nIHNpbWlsYXIgd2hpY2ggbWlnaHQgcHJldmVu dApjb25jdXJyZW50IGNzLgoKQW55d2F5IGlmIHRoZXJlJ3Mgbm90aGluZyBtb3JlIHRvIHRoaXMg dGhlbiBJIHRoaW5rIHRoaXMgaXMgdmVyeSBzYW5lCmlkZWEuCgpDaGVlcnMsIERhbmllbAo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oICAgICB8ICAyICsrCj4gIGRyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jIHwgNzEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYyB8 ICAxICsKPiAgaW5jbHVkZS91YXBpL2RybS9yYWRlb25fZHJtLmggICAgICAgfCA0MSArKysrKysr KysrKysrLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMTUg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCj4gaW5kZXggNTdkNjNjNC4u MTEwYmFhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaAo+IEBAIC0yMjE1LDYgKzIyMTUs OCBAQCBpbnQgcmFkZW9uX2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPiAgCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4gIGludCByYWRl b25fZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiAgCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOwo+ICtpbnQgcmFkZW9uX2dlbV93YWl0 X3VzZXJmZW5jZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJ CQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4gIGludCByYWRlb25fZ2VtX3Bpbl9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQkgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYpOwo+ICBpbnQgcmFkZW9uX2dlbV91bnBpbl9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5j Cj4gaW5kZXggYWMzYzEzMS4uMDk0YjNkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2dlbS5jCj4gQEAgLTM2NSw2ICszNjUsNzcgQEAgaGFuZGxlX2xvY2t1cDoKPiAgCXJldHVybiBy Owo+ICB9Cj4gIAo+ICtpbnQgcmFkZW9uX2dlbV93YWl0X3VzZXJmZW5jZV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAq ZmlscCkKPiArewo+ICsJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICsJc3RydWN0IGRybV9yYWRlb25fZ2VtX3dhaXRfdXNlcmZlbmNlICphcmdzID0gZGF0 YTsKPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iajsKPiArCXN0cnVjdCByYWRlb25fYm8g KnJvYmo7Cj4gKwl1aW50NjRfdCAqZmVuY2VfYWRkcjsKPiArCXZvaWQgKmNwdV9hZGRyOwo+ICsJ aW50IHIsIHJpbmc7Cj4gKwo+ICsJZG93bl9yZWFkKCZyZGV2LT5leGNsdXNpdmVfbG9jayk7Cj4g Kwo+ICsJcmluZyA9IHJhZGVvbl9jc19nZXRfcmluZyhyZGV2LCBhcmdzLT5yaW5nLCBhcmdzLT5w cmlvcml0eSk7Cj4gKwlpZiAocmluZyA8IDApCj4gKwkJcmV0dXJuIHJpbmc7Cj4gKwo+ICsJZ29i aiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbHAsIGFyZ3MtPmhhbmRsZSk7Cj4gKwlp ZiAoZ29iaiA9PSBOVUxMKSB7Cj4gKwkJciA9IC1FTk9FTlQ7Cj4gKwkJZ290byBlcnJvcl91bnJl ZjsKPiArCX0KPiArCXJvYmogPSBnZW1fdG9fcmFkZW9uX2JvKGdvYmopOwo+ICsKPiArCWlmIChh cmdzLT5vZmZzZXQgJiAweDcgfHwgYXJncy0+b2Zmc2V0ICsgOCA+IHJhZGVvbl9ib19zaXplKHJv YmopKSB7Cj4gKwkJciA9IC1FSU5WQUw7Cj4gKwkJZ290byBlcnJvcl91bnJlZjsKPiArCX0KPiAr Cj4gKwlyID0gcmFkZW9uX2JvX3Jlc2VydmUocm9iaiwgZmFsc2UpOwo+ICsgICAgICAgIGlmIChy KQo+ICsJCWdvdG8gZXJyb3JfdW5yZWY7Cj4gKwo+ICsgICAgICAgIHIgPSByYWRlb25fYm9fcGlu KHJkZXYtPnV2ZC52Y3B1X2JvLCBSQURFT05fR0VNX0RPTUFJTl9WUkFNIHwKPiArCQlSQURFT05f R0VNX0RPTUFJTl9HVFQsIE5VTEwpOwo+ICsJaWYgKHIpCj4gKwkJZ290byBlcnJvcl91bnJlc2Vy dmU7Cj4gKwo+ICsgICAgICAgIHIgPSByYWRlb25fYm9fa21hcChyb2JqLCAmY3B1X2FkZHIpOwo+ ICsgICAgICAgIGlmIChyKQo+ICsJCWdvdG8gZXJyb3JfdW5waW47Cj4gKwo+ICsgICAgICAgIHJh ZGVvbl9ib191bnJlc2VydmUocm9iaik7Cj4gKwo+ICsJZmVuY2VfYWRkciA9ICh1aW50NjRfdCAq KSgoKHVpbnQ4X3QqKWNwdV9hZGRyKSArIGFyZ3MtPm9mZnNldCk7Cj4gKwo+ICsJcmFkZW9uX2ly cV9rbXNfc3dfaXJxX2dldChyZGV2LCByaW5nKTsKPiArCXIgPSB3YWl0X2V2ZW50X2ludGVycnVw dGlibGUocmRldi0+ZmVuY2VfcXVldWUsICgKPiArCQkqZmVuY2VfYWRkciA+PSBhcmdzLT5mZW5j ZSB8fCByZGV2LT5uZWVkc19yZXNldAo+ICsJKSk7Cj4gKwlyYWRlb25faXJxX2ttc19zd19pcnFf cHV0KHJkZXYsIHJpbmcpOwo+ICsKPiArCWlmIChyZGV2LT5uZWVkc19yZXNldCkKPiArCQlyID0g LUVERUFETEs7Cj4gKwo+ICsJcmFkZW9uX2JvX3Jlc2VydmUocm9iaiwgZmFsc2UpOwo+ICsJcmFk ZW9uX2JvX2t1bm1hcChyb2JqKTsKPiArCj4gK2Vycm9yX3VucGluOgo+ICsJcmFkZW9uX2JvX3Vu cGluKHJvYmopOwo+ICsKPiArZXJyb3JfdW5yZXNlcnZlOgo+ICsgICAgICAgIHJhZGVvbl9ib191 bnJlc2VydmUocm9iaik7Cj4gKwo+ICtlcnJvcl91bnJlZjoKPiArCWRybV9nZW1fb2JqZWN0X3Vu cmVmZXJlbmNlX3VubG9ja2VkKGdvYmopOwo+ICsJdXBfcmVhZCgmcmRldi0+ZXhjbHVzaXZlX2xv Y2spOwo+ICsJciA9IHJhZGVvbl9nZW1faGFuZGxlX2xvY2t1cChyb2JqLT5yZGV2LCByKTsKPiAr CXJldHVybiByOwo+ICt9Cj4gKwo+ICBpbnQgcmFkZW9uX2dlbV9zZXRfZG9tYWluX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCQlzdHJ1Y3QgZHJtX2ZpbGUg KmZpbHApCj4gIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f a21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYwo+IGluZGV4IDY4NjQx MWUuLjQ3NTdmMjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f a21zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9rbXMuYwo+IEBAIC04 OTMsNSArODkzLDYgQEAgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIHJhZGVvbl9pb2N0bHNf a21zW10gPSB7Cj4gIAlEUk1fSU9DVExfREVGX0RSVihSQURFT05fR0VNX1ZBLCByYWRlb25fZ2Vt X3ZhX2lvY3RsLCBEUk1fQVVUSHxEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCj4gIAlE Uk1fSU9DVExfREVGX0RSVihSQURFT05fR0VNX09QLCByYWRlb25fZ2VtX29wX2lvY3RsLCBEUk1f QVVUSHxEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCj4gIAlEUk1fSU9DVExfREVGX0RS VihSQURFT05fR0VNX1VTRVJQVFIsIHJhZGVvbl9nZW1fdXNlcnB0cl9pb2N0bCwgRFJNX0FVVEh8 RFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAo+ICsJRFJNX0lPQ1RMX0RFRl9EUlYoUkFE RU9OX0dFTV9XQUlUX1VTRVJGRU5DRSwgcmFkZW9uX2dlbV93YWl0X3VzZXJmZW5jZV9pb2N0bCwg RFJNX0FVVEh8RFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAo+ICB9Owo+ICBpbnQgcmFk ZW9uX21heF9rbXNfaW9jdGwgPSBBUlJBWV9TSVpFKHJhZGVvbl9pb2N0bHNfa21zKTsKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9yYWRlb25fZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJt L3JhZGVvbl9kcm0uaAo+IGluZGV4IDUwZDBmYjQuLjQzZmU2NjAgMTAwNjQ0Cj4gLS0tIGEvaW5j bHVkZS91YXBpL2RybS9yYWRlb25fZHJtLmgKPiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL3JhZGVv bl9kcm0uaAo+IEBAIC01MTIsNiArNTEyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAjZGVmaW5l IERSTV9SQURFT05fR0VNX1ZBCQkweDJiCj4gICNkZWZpbmUgRFJNX1JBREVPTl9HRU1fT1AJCTB4 MmMKPiAgI2RlZmluZSBEUk1fUkFERU9OX0dFTV9VU0VSUFRSCQkweDJkCj4gKyNkZWZpbmUgRFJN X1JBREVPTl9HRU1fV0FJVF9VU0VSRkVOQ0UJMHgyZQo+ICAKPiAgI2RlZmluZSBEUk1fSU9DVExf UkFERU9OX0NQX0lOSVQgICAgRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05f Q1BfSU5JVCwgZHJtX3JhZGVvbl9pbml0X3QpCj4gICNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9D UF9TVEFSVCAgIERSTV9JTyggIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0NQX1NUQVJU KQo+IEBAIC01NDEsMjEgKzU0MiwyMiBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4gICNkZWZpbmUgRFJN X0lPQ1RMX1JBREVPTl9TVVJGX0FMTE9DIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1f UkFERU9OX1NVUkZfQUxMT0MsIGRybV9yYWRlb25fc3VyZmFjZV9hbGxvY190KQo+ICAjZGVmaW5l IERSTV9JT0NUTF9SQURFT05fU1VSRl9GUkVFICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsg RFJNX1JBREVPTl9TVVJGX0ZSRUUsIGRybV9yYWRlb25fc3VyZmFjZV9mcmVlX3QpCj4gIC8qIEtN UyAqLwo+IC0jZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX0lORk8JRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX0lORk8sIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9p bmZvKQo+IC0jZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX0NSRUFURQlEUk1fSU9XUihEUk1f Q09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9HRU1fQ1JFQVRFLCBzdHJ1Y3QgZHJtX3JhZGVvbl9n ZW1fY3JlYXRlKQo+IC0jZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX01NQVAJRFJNX0lPV1Io RFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX01NQVAsIHN0cnVjdCBkcm1fcmFkZW9u X2dlbV9tbWFwKQo+IC0jZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1BSRUFECURSTV9JT1dS KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9QUkVBRCwgc3RydWN0IGRybV9yYWRl b25fZ2VtX3ByZWFkKQo+IC0jZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1BXUklURQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9HRU1fUFdSSVRFLCBzdHJ1Y3QgZHJt X3JhZGVvbl9nZW1fcHdyaXRlKQo+IC0jZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1NFVF9E T01BSU4JRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX1NFVF9ET01B SU4sIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9zZXRfZG9tYWluKQo+IC0jZGVmaW5lIERSTV9JT0NU TF9SQURFT05fR0VNX1dBSVRfSURMRQlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFE RU9OX0dFTV9XQUlUX0lETEUsIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV93YWl0X2lkbGUpCj4gLSNk ZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9DUwkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9SQURFT05fQ1MsIHN0cnVjdCBkcm1fcmFkZW9uX2NzKQo+IC0jZGVmaW5lIERSTV9JT0NUTF9S QURFT05fSU5GTwkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fSU5GTywg c3RydWN0IGRybV9yYWRlb25faW5mbykKPiAtI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9T RVRfVElMSU5HCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9TRVRf VElMSU5HLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fc2V0X3RpbGluZykKPiAtI2RlZmluZSBEUk1f SU9DVExfUkFERU9OX0dFTV9HRVRfVElMSU5HCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fUkFERU9OX0dFTV9HRVRfVElMSU5HLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fZ2V0X3RpbGlu ZykKPiAtI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9CVVNZCURSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9CVVNZLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fYnVz eSkKPiAtI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9WQQkJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9SQURFT05fR0VNX1ZBLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fdmEpCj4g LSNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9HRU1fT1AJCURSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fUkFERU9OX0dFTV9PUCwgc3RydWN0IGRybV9yYWRlb25fZ2VtX29wKQo+IC0jZGVm aW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1VTRVJQVFIJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9SQURFT05fR0VNX1VTRVJQVFIsIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV91c2VycHRy KQo+ICsjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX0lORk8JCURSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9JTkZPLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1faW5m bykKPiArI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9DUkVBVEUJCURSTV9JT1dSKERSTV9D T01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9DUkVBVEUsIHN0cnVjdCBkcm1fcmFkZW9uX2dl bV9jcmVhdGUpCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9HRU1fTU1BUAkJRFJNX0lPV1Io RFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX01NQVAsIHN0cnVjdCBkcm1fcmFkZW9u X2dlbV9tbWFwKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1BSRUFECQlEUk1fSU9X UihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9HRU1fUFJFQUQsIHN0cnVjdCBkcm1fcmFk ZW9uX2dlbV9wcmVhZCkKPiArI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9QV1JJVEUJCURS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9QV1JJVEUsIHN0cnVjdCBk cm1fcmFkZW9uX2dlbV9wd3JpdGUpCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9HRU1fU0VU X0RPTUFJTgkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX1NFVF9E T01BSU4sIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9zZXRfZG9tYWluKQo+ICsjZGVmaW5lIERSTV9J T0NUTF9SQURFT05fR0VNX1dBSVRfSURMRQkJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJN X1JBREVPTl9HRU1fV0FJVF9JRExFLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fd2FpdF9pZGxlKQo+ ICsjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fQ1MJCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1JBREVPTl9DUywgc3RydWN0IGRybV9yYWRlb25fY3MpCj4gKyNkZWZpbmUgRFJNX0lP Q1RMX1JBREVPTl9JTkZPCQkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05f SU5GTywgc3RydWN0IGRybV9yYWRlb25faW5mbykKPiArI2RlZmluZSBEUk1fSU9DVExfUkFERU9O X0dFTV9TRVRfVElMSU5HCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX1JBREVPTl9H RU1fU0VUX1RJTElORywgc3RydWN0IGRybV9yYWRlb25fZ2VtX3NldF90aWxpbmcpCj4gKyNkZWZp bmUgRFJNX0lPQ1RMX1JBREVPTl9HRU1fR0VUX1RJTElORwkJRFJNX0lPV1IoRFJNX0NPTU1BTkRf QkFTRSArIERSTV9SQURFT05fR0VNX0dFVF9USUxJTkcsIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV9n ZXRfdGlsaW5nKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX0JVU1kJCURSTV9JT1dS KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9CVVNZLCBzdHJ1Y3QgZHJtX3JhZGVv bl9nZW1fYnVzeSkKPiArI2RlZmluZSBEUk1fSU9DVExfUkFERU9OX0dFTV9WQQkJCURSTV9JT1dS KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9WQSwgc3RydWN0IGRybV9yYWRlb25f Z2VtX3ZhKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX09QCQkJRFJNX0lPV1IoRFJN X0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX09QLCBzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1f b3ApCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX1JBREVPTl9HRU1fVVNFUlBUUgkJRFJNX0lPV1IoRFJN X0NPTU1BTkRfQkFTRSArIERSTV9SQURFT05fR0VNX1VTRVJQVFIsIHN0cnVjdCBkcm1fcmFkZW9u X2dlbV91c2VycHRyKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9SQURFT05fR0VNX1dBSVRfVVNFUkZF TkNFCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fUkFERU9OX0dFTV9XQUlUX1VTRVJG RU5DRSwgc3RydWN0IGRybV9yYWRlb25fZ2VtX3dhaXRfdXNlcmZlbmNlKQo+ICAKPiAgdHlwZWRl ZiBzdHJ1Y3QgZHJtX3JhZGVvbl9pbml0IHsKPiAgCWVudW0gewo+IEBAIC04MzEsNiArODMzLDE1 IEBAIHN0cnVjdCBkcm1fcmFkZW9uX2dlbV91c2VycHRyIHsKPiAgCXVpbnQzMl90CQloYW5kbGU7 Cj4gIH07Cj4gIAo+ICtzdHJ1Y3QgZHJtX3JhZGVvbl9nZW1fd2FpdF91c2VyZmVuY2Ugewo+ICsJ dWludDMyX3QJaGFuZGxlOwo+ICsJdWludDMyX3QJb2Zmc2V0Owo+ICsJdWludDY0X3QJZmVuY2U7 Cj4gKwl1aW50MzJfdAlyaW5nOwo+ICsJaW50MzJfdAkJcHJpb3JpdHk7Cj4gKwl1aW50MzJfdAlm bGFnczsKPiArfTsKPiArCj4gICNkZWZpbmUgUkFERU9OX1RJTElOR19NQUNSTwkJCQkweDEKPiAg I2RlZmluZSBSQURFT05fVElMSU5HX01JQ1JPCQkJCTB4Mgo+ICAjZGVmaW5lIFJBREVPTl9USUxJ TkdfU1dBUF8xNkJJVAkJCTB4NAo+IC0tIAo+IDEuOS4xCj4gCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4g ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=