From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH] Revert "drm/vgem: implement virtual GEM" Date: Thu, 21 May 2015 16:38:59 +0200 Message-ID: <555DEE03.2070400@vmware.com> References: <1432218888-21632-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp-outbound-2.vmware.com (smtp-outbound-2.vmware.com [208.91.2.13]) by gabe.freedesktop.org (Postfix) with ESMTP id D3AA06E92A for ; Thu, 21 May 2015 07:39:20 -0700 (PDT) In-Reply-To: <1432218888-21632-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Zach Reizner , Daniel Vetter , DRI Development , =?UTF-8?B?U3TDqXBoYW5lIE1hcmNoZXNpbg==?= , Dave Airlie List-Id: dri-devel@lists.freedesktop.org QWNrZWQtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KCk9uIDA1 LzIxLzIwMTUgMDQ6MzQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gVGhpcyByZXZlcnRzIGNv bW1pdCA1MDJlOTVjNjY3ODUwNTQ3NGYxMDU2NDgwMzEwY2Q5MzgyYmFjYmFjLgo+Cj4gT3JpZ2lu YWxseSB2Z2VtIHdhcyBqdXN0IHRvIGhhdmUgYSBkcm0gZHJpdmVyIGZvciBzb2Z0d2FyZS1vbmx5 Cj4gcmVuZGVycyBsaWtlIGxsdm1waXBlIHNvIHRoYXQgdGhleSBpbnRlZ3JhdGUgbW9yZSBuaWNl bHkgd2l0aCB0aGUKPiBleGlzdGluZyBjb21wb3NpdG9yIHByb3RvY29scyBsaWtlIERSSTIvMy4K Pgo+IExhdGVyIG9uIEJlbiBleHRlbmRlZCBpdCB0byBzZXJ2ZSBhcyBhIGRtYS1idWYgaW1wb3J0 L2V4cG9ydCB0ZXN0Cj4gdmVoaWNsZSBmb3IgZGVidWdnaW5nLiBCb3RoIG9mIHRoZXNlIHVzZS1j YXNlcyBpbW8gbWFrZSBzZW5zZSBhbmQgYXJlCj4gb24gdGhlIGxldmVsIG9mIGp1c3QgeWV0IGFu b3RoZXIgKHZpcnR1YWwpIGRybSBkcml2ZXIuCj4KPiBCdXQgb25seSBqdXN0IEkgcmVhbGl6ZWQg dGhhdCBHb29nbGUncyBDck9TIHBsYW5zIHdpdGggdmdlbSBhcmUgbXVjaAo+IG1vcmUgcGVydmFz aXZlIC0gdGhlIHBsYW4gc2VlbXMgdG8gYmUgdG8gdXNlIGl0IGFzIHRoZSBnZW5lcmljCj4gc29m dHdhcmUgbW1hcCBwYXRoIG9uIHRvcCBvZiBhbnkga2luZCBvZiBodyBkcml2ZXIgYnVmZmVyIG9i amVjdHMgZnJvbQo+IHRoZSB1bmRlcmx5aW5nIFNvQyBnZnggaHcuIFRoYXQgbWVhbnMgdmdlbSBp cyBub3cgY29tbW9uIGluZnJhc3RydWN0cmUKPiB3aGljaCBzaG91bGQgd29yayBmb3IgYWxsIGRy aXZlcnMgYW5kIHByb3Blcmx5IGludGVyYWN0IHdpdGggdGhlbSwgYW5kCj4gZnJvbSB0aGF0IHBv aW50LW9mLXZpZXcgaXQgZGVmaW5pdGVseSBmYWxscyBzaG9ydCBvbiB0aHJlZSBhY2NvdW50czoK Pgo+IC0gSXQgZGlyZWN0bHkgZm9yd2FyZHMgdGhlIGN1cnJlbnQgZG1hLWJ1ZiAtPm1tYXAgbW9k ZWwsIGFuZCB0aGUKPiAgIGNvbnNlbnN1cyBmb3IgdGhhdCBoYXMgYWx3YXlzIGJlZW4gdGhhdCBp dCdzIGEgdG95IG9uZSBhdCBiZXN0Cj4gICB1c2VmdWwgZm9yIGRlYnVnZ2luZyBvciBzdXBlci11 bmxpa2VseSBmYWxsYmFja3MuIE9yaWdpbmFsbHkgaXQgd2FzCj4gICBhZGRlZCBtb3N0bHkgYXMg YSBjb25jZXNzaW9uIHRvIGdldCBwZW9wbGUgb24gdG9wIG9mIHRoZSBkbWEtYnVmCj4gICB0cmFp biBzaW5jZSBJb24gaGFzIHRoaXMgdG9vLgo+Cj4gICBGb3IgcHJvcGVyIG1tYXAgc3VwcG9ydCB3 ZSByZWFsbHkgbmVlZCBzb21lIHNvZnR3YXJlIGJlZ2luL2VuZAo+ICAgc2lnbmFscywgcHJvYmFi bHkgYmVzdCBpbiB0aGUgZm9ybSBvZiBhIHNldCBvZiBpb2N0bHMgb24gdGhlIGRtYS1idWYKPiAg IGZkIHRoYXQgZm9yd2FyZCB0byB0aGUgYWxyZWFkeSBleGlzdGluZyAtPmJlZ2luL2VuZF9jcHVf YWNjZXNzCj4gICBob29rcy4KPgo+ICAgTm90IGV4cG9zaW5nIHRoaXMgYW5kIG5vdCByZXF1aXJp bmcgdXNlcnNwYWNlIHRvIHVzZSB0aGVtIHB1dHMgYQo+ICAgc2VyaW91cyBidXJkZW4gb24gYW55 IGtpbmQgb2YgZHJpdmVyIHRoYXQgbmVlZHMgdG8gb2NjYXNpb25hbGx5Cj4gICBoYW5kbGUgYSBi aXQgb2YgY29oZXJlbmN5IHRyb3VibGVzLiBXaGljaCBpbmNsdWRlcyBhbnl0aGluZyBvbiBBUk0K PiAgIGFuZCBldmVuIG1vcmUgc28gbW9yZSBmYW5jeSBzdHVmZiBsaWtlIHZpcnR1YWwgaGFyZHdh cmUuCj4KPiAgIEZ1cnRoZXJtb3JlIHRoZSB2Z2VtIG1tYXAgaW50ZXJmYWNlIGRvZXNuJ3QgZXhw b3NlIGFueSBiZWdpbi9lbmQKPiAgIGlvY3RscyBlaXRoZXIsIHdoaWNoIG1lYW5zIHdlIGNhbid0 IGV2ZW4gdXNlIHRoZSBleGlzdGluZyBkbWEtYnVmCj4gICBob29rcyBwcm9wZXJseSBhbmQgZml4 IHRoaXMgdXAgaW4gdmdlbS4KPgo+IC0gdmdlbSB1c2VzIHRoZSBkdW1iIGJ1ZmZlciBhcGkgdG8g ZXhwb3NlIHRoZSB0aGUgbW1hcCBzdXBwb3J0Lgo+ICAgR2VuZXJhbGx5IEkgZG9uJ3QgY2FyZSBh Ym91dCB3aGF0IGtpbmQgb2YgaG9ycm9yLXNob3dzIG9mIGFiaSBhYnVzZQo+ICAgZHJpdmVycyBk byAoYW5kIHRoZXJlJ3MgbG90cyBvZiBkdW1iIGJ1ZmZlciBhYnVzZWQgb3V0IHRoZXJlKS4gQnV0 Cj4gICB2Z2VtIGFzIHVzZWQgbm93IGlzbid0IGp1c3QgYSBkcml2ZXIsIGJ1dCBjb3JlIGluZnJh c3RydWN0dXJlLiBBbmQKPiAgIHRoZSBkdW1iIG1tYXAgaW50ZXJmYWNlIHJlYWxseSBpcyBqdXN0 IGZvciB1cGxvYWRpbmcgdGhlIG9jY2FzaW9uYWwKPiAgIHNwbGFzaCBzY3JlZW4sIGFuZCBkZWZp bml0ZWx5IG5vdCBmb3IgbW9yZSBlbGFib3JhdGUgYnVmZmVyIG9iamVjdAo+ICAgdXNhZ2UuCj4K PiAgIEZ1cnRoZXJtb3JlIHRoZSBkdW1iIGJ1ZmZlciBhcGkgaXMgZXhwbGljdGlseSBmb3Iga21z IGRyaXZlcnMgdG8gYmUKPiAgIHVzZWQgYXMgZnJhbWVidWZmZXJzLiBXaGljaCB2Z2VtIGp1c3Qg aXNuJ3QuCj4KPiAtIFRoZSB1c2Vyc3BhY2UgZGVtb25zdHJhdGlvbiB2ZWhpY2xlIHNlZW1zIG1p c3NpbmcuIFllcyB0aGVyZSdzCj4gICBBamF4J3Mgb2xkIGxsdm1waXBlLW9uLXZnZW0gc3R1ZmYs IGFuZCB0aGVyZSdzIEJlbidzIG9sZCBwYXRjaGVzIHRvCj4gICB1c2UgdmdlbSB0byBwdXQgZG1h LWJ1ZiBvbiBpOTE1IHRocm91Z2ggaXQncyBwYWNlcy4gQnV0IHZnZW0gYXMtaXMKPiAgIGhhcyBs b25nIGVjbGlwc2VkIHRoZXNlIHVzZS1jYXNlcywgYnV0IHRoZSBjb3JyZXNwb25kaW5nIENyT1Mg Y29kZQo+ICAgaGFzbid0IGJlZW4gZmxvYXRlZCBhcm91bmQuIFdoaWNoIG1lYW5zIGl0J3MgcHJl dHR5IG11Y2ggaW1wb3NzaWJsZQo+ICAgdG8gZ2F1Z2Ugd2hldGhlciB0aGUgcHJvcG9zZWQgQUJJ IGlzIGEgZ29vZCBmaXQgZm9yIHRoZSBzdGF0ZWQKPiAgIGdvYWxzLgo+Cj4gV29yc2Ugc3RpbGwg SSB0cmllZCB0byByYWlzZSB0aGlzIHdpdGggU3TDqXBoYW5lIG9uIGlyYyBhbmQgd2FudGVkIHRv Cj4gZGlzY3VzcyBteSBjb25jZXJucywgYnV0IGhlIGp1c3Qgc2hydWdnZWQgdGhlbSBvZmYgdGhh dCBpbnRlbCBodwo+IGlzc3VlcyBhcmVuJ3QgaGlzIGNvbmNlcm4gKGFuZCBhIGZldyBvdGhlciBk ZW5pYWxzKS4gV2hpbGUgaW50ZWwgaHcgaXMKPiBvbmUgb2YgdGhlIGZldyB1c2VkIGJ5IENyT1Mg d2hpY2ggYWN0dWFsbHkgaGFzIGEgZnVsbHkgY29oZXJlbnQgZ3B1Cj4gKHdlbGwgYXQgbGVhc3Qg dGhlIG9uZXMgd2l0aCBMTEMpLgo+Cj4gR2l2ZW4gYWxsIHRoYXQgSSB0aGluayB2Z2VtIGp1c3Qg aXNuJ3QgcmVhZHkgeWV0LiBJJ20gZGVmaW5pdGVseSBub3QKPiBvcHBvc2VkIHRvIHRoZSBvdmVy YWxsIGlkZWEsIGJ1dCBJIGRvIHRoaW5rIGl0IG5lZWRzIHRvIGJlIGZsZXNoZWQgb3V0Cj4gYSBi aXQgbW9yZS4gQW5kIHNpbmNlIHRoZSByZWxlYXNlIG9mIDQuMSBpcyBmYWlybHkgY2xvc2UgdGhl IGJlc3QKPiBpbW1lZGlhdGUgYWN0aW9uIHNlZW1zIHRvIGJlIHRvIHRlbXBvcmFyaWx5IHJldmVy dCB0aGUgdmdlbSBkcml2ZXIgZm9yCj4gbm93Lgo+Cj4gQ2M6IFRob21hcyBIZWxsc3Ryb20gPHRo ZWxsc3Ryb21Adm13YXJlLmNvbT4KPiBDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KPiBDYzogU3TDqXBoYW5lIE1hcmNoZXNpbiA8bWFyY2hldUBjaHJvbWl1bS5vcmc+Cj4gQ2M6 IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBDYzogQWRhbSBKYWNrc29uIDxhamF4 QHJlZGhhdC5jb20+Cj4gQ2M6IFphY2ggUmVpem5lciA8emFjaHJAZ29vZ2xlLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgfCAgIDkgLQo+ICBkcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSAtCj4gIGRyaXZlcnMvZ3B1L2RybS92 Z2VtL01ha2VmaWxlICAgICAgIHwgICA0IC0KPiAgZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9k bWFfYnVmLmMgfCAgOTQgLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Ry di5jICAgICB8IDM2NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaCAgICAgfCAgNTcgLS0tLS0tCj4gIDYgZmlsZXMg Y2hhbmdlZCwgNTI5IGRlbGV0aW9ucygtKQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3ZnZW0vTWFrZWZpbGUKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS92Z2VtL3ZnZW1fZG1hX2J1Zi5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vdmdlbS92Z2VtX2Rydi5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v dmdlbS92Z2VtX2Rydi5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IGluZGV4IDQ3ZjJjZTgxYjQxMi4uMTUxYTA1MDEy OWU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMTY1LDE1ICsxNjUsNiBAQCBjb25maWcgRFJNX1NBVkFH RQo+ICAJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYXZhZ2UzRC80L1N1cGVy U2F2YWdlL1Byby9Ud2lzdGVyCj4gIAkgIGNoaXBzZXQuIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1v ZHVsZSB3aWxsIGJlIGNhbGxlZCBzYXZhZ2UuCj4gIAo+IC1jb25maWcgRFJNX1ZHRU0KPiAtCXRy aXN0YXRlICJWaXJ0dWFsIEdFTSBwcm92aWRlciIKPiAtCWRlcGVuZHMgb24gRFJNCj4gLQloZWxw Cj4gLQkgIENob29zZSB0aGlzIG9wdGlvbiB0byBnZXQgYSB2aXJ0dWFsIGdyYXBoaWNzIG1lbW9y eSBtYW5hZ2VyLAo+IC0JICBhcyB1c2VkIGJ5IE1lc2EncyBzb2Z0d2FyZSByZW5kZXJlciBmb3Ig ZW5oYW5jZWQgcGVyZm9ybWFuY2UuCj4gLQkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3 aWxsIGJlIGNhbGxlZCB2Z2VtLgo+IC0KPiAtCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9LY29uZmlnIgo+ICAKPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvS2Nv bmZpZyIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCj4gaW5kZXggNGRlOGQ5YjAwNmVjLi40NGNhYWJmMTMwNDEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gQEAgLTQ2LDcgKzQ2LDYgQEAgb2JqLSQoQ09ORklHX0RSTV9TSVMpICAgKz0g c2lzLwo+ICBvYmotJChDT05GSUdfRFJNX1NBVkFHRSkrPSBzYXZhZ2UvCj4gIG9iai0kKENPTkZJ R19EUk1fVk1XR0ZYKSs9IHZtd2dmeC8KPiAgb2JqLSQoQ09ORklHX0RSTV9WSUEpCSs9dmlhLwo+ IC1vYmotJChDT05GSUdfRFJNX1ZHRU0pCSs9IHZnZW0vCj4gIG9iai0kKENPTkZJR19EUk1fTk9V VkVBVSkgKz1ub3V2ZWF1Lwo+ICBvYmotJChDT05GSUdfRFJNX0VYWU5PUykgKz1leHlub3MvCj4g IG9iai0kKENPTkZJR19EUk1fUk9DS0NISVApICs9cm9ja2NoaXAvCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vTWFrZWZp bGUKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAxMDU1Y2I3OTA5NmMuLjAwMDAw MDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL01ha2VmaWxlCj4gKysrIC9kZXYv bnVsbAo+IEBAIC0xLDQgKzAsMCBAQAo+IC1jY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybQo+IC12 Z2VtLXkgOj0gdmdlbV9kcnYubyB2Z2VtX2RtYV9idWYubwo+IC0KPiAtb2JqLSQoQ09ORklHX0RS TV9WR0VNKQkrPSB2Z2VtLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdl bV9kbWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2RtYV9idWYuYwo+IGRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAyNTQ0MzhhZDFhNi4uMDAwMDAwMDAwMDAwCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kbWFfYnVmLmMKPiArKysgL2Rldi9udWxs Cj4gQEAgLTEsOTQgKzAsMCBAQAo+IC0vKgo+IC0gKiBDb3B5cmlnaHQgwqkgMjAxMiBJbnRlbCBD b3Jwb3JhdGlvbgo+IC0gKiBDb3B5cmlnaHQgwqkgMjAxNCBUaGUgQ2hyb21pdW0gT1MgQXV0aG9y cwo+IC0gKgo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+IC0g KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCj4gLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKPiAtICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiAtICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+IC0gKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCj4gLSAqIFNvZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgo+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4gLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gLSAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKPiAtICogSU4gVEhFIFNPRlRXQVJFLgo+IC0gKgo+IC0gKiBBdXRob3JzOgo+IC0gKiAg ICBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+Cj4gLSAqCj4gLSAqLwo+IC0KPiAtI2lu Y2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPiAtI2luY2x1ZGUgInZnZW1fZHJ2LmgiCj4gLQo+IC1z dHJ1Y3Qgc2dfdGFibGUgKnZnZW1fZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKmdvYmopCj4gLXsKPiAtCXN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICpvYmog PSB0b192Z2VtX2JvKGdvYmopOwo+IC0JQlVHX09OKG9iai0+cGFnZXMgPT0gTlVMTCk7Cj4gLQo+ IC0JcmV0dXJuIGRybV9wcmltZV9wYWdlc190b19zZyhvYmotPnBhZ2VzLCBvYmotPmJhc2Uuc2l6 ZSAvIFBBR0VfU0laRSk7Cj4gLX0KPiAtCj4gLWludCB2Z2VtX2dlbV9wcmltZV9waW4oc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnb2JqKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVj dCAqb2JqID0gdG9fdmdlbV9ibyhnb2JqKTsKPiAtCXJldHVybiB2Z2VtX2dlbV9nZXRfcGFnZXMo b2JqKTsKPiAtfQo+IC0KPiAtdm9pZCB2Z2VtX2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKmdvYmopCj4gLXsKPiAtCXN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICpvYmog PSB0b192Z2VtX2JvKGdvYmopOwo+IC0JdmdlbV9nZW1fcHV0X3BhZ2VzKG9iaik7Cj4gLX0KPiAt Cj4gLXZvaWQgKnZnZW1fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2Jq KQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2JqID0gdG9fdmdlbV9ibyhn b2JqKTsKPiAtCUJVR19PTihvYmotPnBhZ2VzID09IE5VTEwpOwo+IC0KPiAtCXJldHVybiB2bWFw KG9iai0+cGFnZXMsIG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFLCAwLCBQQUdFX0tFUk5FTCk7 Cj4gLX0KPiAtCj4gLXZvaWQgdmdlbV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqLCB2b2lkICp2YWRkcikKPiAtewo+IC0JdnVubWFwKHZhZGRyKTsKPiAtfQo+IC0K PiAtc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2Z2VtX2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAtCQkJCQkgICAgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQo+IC17 Cj4gLQlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKPiAtCWludCByZXQ7 Cj4gLQo+IC0Jb2JqID0ga3phbGxvYyhzaXplb2YoKm9iaiksIEdGUF9LRVJORUwpOwo+IC0JaWYg KG9iaiA9PSBOVUxMKSB7Cj4gLQkJcmV0ID0gLUVOT01FTTsKPiAtCQlnb3RvIGZhaWw7Cj4gLQl9 Cj4gLQo+IC0JcmV0ID0gZHJtX2dlbV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIGRtYV9i dWYtPnNpemUpOwo+IC0JaWYgKHJldCkgewo+IC0JCXJldCA9IC1FTk9NRU07Cj4gLQkJZ290byBm YWlsX2ZyZWU7Cj4gLQl9Cj4gLQo+IC0JZ2V0X2RtYV9idWYoZG1hX2J1Zik7Cj4gLQo+IC0Jb2Jq LT5iYXNlLmRtYV9idWYgPSBkbWFfYnVmOwo+IC0Jb2JqLT51c2VfZG1hX2J1ZiA9IHRydWU7Cj4g LQo+IC0JcmV0dXJuICZvYmotPmJhc2U7Cj4gLQo+IC1mYWlsX2ZyZWU6Cj4gLQlrZnJlZShvYmop Owo+IC1mYWlsOgo+IC0JcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdl bV9kcnYuYwo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGNiM2I0MzUyNWIyZC4u MDAwMDAwMDAwMDAwCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwo+ICsr KyAvZGV2L251bGwKPiBAQCAtMSwzNjQgKzAsMCBAQAo+IC0vKgo+IC0gKiBDb3B5cmlnaHQgMjAx MSBSZWQgSGF0LCBJbmMuCj4gLSAqIENvcHlyaWdodCDCqSAyMDE0IFRoZSBDaHJvbWl1bSBPUyBB dXRob3JzCj4gLSAqCj4gLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIikK PiAtICogdG8gZGVhbCBpbiB0aGUgc29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+IC0gKiBvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViCj4gLSAqIGxpY2Vuc2UsIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tCj4gLSAqIHRoZW0gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAtICoKPiAtICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4 dAo+IC0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gLSAqIFNvZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5USUJJTElUWSwKPiAtICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAo+IC0gKiBUSEUgQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUywgT1Ig T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCj4gLSAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCwgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgo+IC0gKiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgo+IC0gKgo+IC0gKiBBdXRob3JzOgo+IC0gKglBZGFtIEphY2tzb24gPGFq YXhAcmVkaGF0LmNvbT4KPiAtICoJQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0Pgo+IC0g Ki8KPiAtCj4gLS8qKgo+IC0gKiBUaGlzIGlzIHZnZW0sIGEgKG5vbi1oYXJkd2FyZS1iYWNrZWQp IEdFTSBzZXJ2aWNlLiAgVGhpcyBpcyB1c2VkIGJ5IE1lc2Encwo+IC0gKiBzb2Z0d2FyZSByZW5k ZXJlciBhbmQgdGhlIFggc2VydmVyIGZvciBlZmZpY2llbnQgYnVmZmVyIHNoYXJpbmcuCj4gLSAq Lwo+IC0KPiAtI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+IC0jaW5jbHVkZSA8bGludXgvcmFt ZnMuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9k bWEtYnVmLmg+Cj4gLSNpbmNsdWRlICJ2Z2VtX2Rydi5oIgo+IC0KPiAtI2RlZmluZSBEUklWRVJf TkFNRQkidmdlbSIKPiAtI2RlZmluZSBEUklWRVJfREVTQwkiVmlydHVhbCBHRU0gcHJvdmlkZXIi Cj4gLSNkZWZpbmUgRFJJVkVSX0RBVEUJIjIwMTIwMTEyIgo+IC0jZGVmaW5lIERSSVZFUl9NQUpP UgkxCj4gLSNkZWZpbmUgRFJJVkVSX01JTk9SCTAKPiAtCj4gLXZvaWQgdmdlbV9nZW1fcHV0X3Bh Z2VzKHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICpvYmopCj4gLXsKPiAtCWRybV9nZW1fcHV0 X3BhZ2VzKCZvYmotPmJhc2UsIG9iai0+cGFnZXMsIGZhbHNlLCBmYWxzZSk7Cj4gLQlvYmotPnBh Z2VzID0gTlVMTDsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgdmdlbV9nZW1fZnJlZV9vYmplY3Qo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gLXsKPiAtCXN0cnVjdCBkcm1fdmdlbV9nZW1f b2JqZWN0ICp2Z2VtX29iaiA9IHRvX3ZnZW1fYm8ob2JqKTsKPiAtCj4gLQlkcm1fZ2VtX2ZyZWVf bW1hcF9vZmZzZXQob2JqKTsKPiAtCj4gLQlpZiAodmdlbV9vYmotPnVzZV9kbWFfYnVmICYmIG9i ai0+ZG1hX2J1Zikgewo+IC0JCWRtYV9idWZfcHV0KG9iai0+ZG1hX2J1Zik7Cj4gLQkJb2JqLT5k bWFfYnVmID0gTlVMTDsKPiAtCX0KPiAtCj4gLQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKG9iaik7 Cj4gLQo+IC0JaWYgKHZnZW1fb2JqLT5wYWdlcykKPiAtCQl2Z2VtX2dlbV9wdXRfcGFnZXModmdl bV9vYmopOwo+IC0KPiAtCXZnZW1fb2JqLT5wYWdlcyA9IE5VTEw7Cj4gLQo+IC0Ja2ZyZWUodmdl bV9vYmopOwo+IC19Cj4gLQo+IC1pbnQgdmdlbV9nZW1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fdmdl bV9nZW1fb2JqZWN0ICpvYmopCj4gLXsKPiAtCXN0cnVjdCBwYWdlICoqcGFnZXM7Cj4gLQo+IC0J aWYgKG9iai0+cGFnZXMgfHwgb2JqLT51c2VfZG1hX2J1ZikKPiAtCQlyZXR1cm4gMDsKPiAtCj4g LQlwYWdlcyA9IGRybV9nZW1fZ2V0X3BhZ2VzKCZvYmotPmJhc2UpOwo+IC0JaWYgKElTX0VSUihw YWdlcykpIHsKPiAtCQlyZXR1cm4gUFRSX0VSUihwYWdlcyk7Cj4gLQl9Cj4gLQo+IC0Jb2JqLT5w YWdlcyA9IHBhZ2VzOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IHZn ZW1fZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQg KnZtZikKPiAtewo+IC0Jc3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+dm1f cHJpdmF0ZV9kYXRhOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7 Cj4gLQlsb2ZmX3QgbnVtX3BhZ2VzOwo+IC0JcGdvZmZfdCBwYWdlX29mZnNldDsKPiAtCWludCBy ZXQ7Cj4gLQo+IC0JLyogV2UgZG9uJ3QgdXNlIHZtZi0+cGdvZmYgc2luY2UgdGhhdCBoYXMgdGhl IGZha2Ugb2Zmc2V0ICovCj4gLQlwYWdlX29mZnNldCA9ICgodW5zaWduZWQgbG9uZyl2bWYtPnZp cnR1YWxfYWRkcmVzcyAtIHZtYS0+dm1fc3RhcnQpID4+Cj4gLQkJUEFHRV9TSElGVDsKPiAtCj4g LQludW1fcGFnZXMgPSBESVZfUk9VTkRfVVAob2JqLT5iYXNlLnNpemUsIFBBR0VfU0laRSk7Cj4g LQo+IC0JaWYgKHBhZ2Vfb2Zmc2V0ID4gbnVtX3BhZ2VzKQo+IC0JCXJldHVybiBWTV9GQVVMVF9T SUdCVVM7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAtCXJl dCA9IHZtX2luc2VydF9wYWdlKHZtYSwgKHVuc2lnbmVkIGxvbmcpdm1mLT52aXJ0dWFsX2FkZHJl c3MsCj4gLQkJCSAgICAgb2JqLT5wYWdlc1twYWdlX29mZnNldF0pOwo+IC0KPiAtCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jc3dpdGNoIChyZXQpIHsKPiAtCWNhc2UgMDoK PiAtCQlyZXR1cm4gVk1fRkFVTFRfTk9QQUdFOwo+IC0JY2FzZSAtRU5PTUVNOgo+IC0JCXJldHVy biBWTV9GQVVMVF9PT007Cj4gLQljYXNlIC1FQlVTWToKPiAtCQlyZXR1cm4gVk1fRkFVTFRfUkVU Ulk7Cj4gLQljYXNlIC1FRkFVTFQ6Cj4gLQljYXNlIC1FSU5WQUw6Cj4gLQkJcmV0dXJuIFZNX0ZB VUxUX1NJR0JVUzsKPiAtCWRlZmF1bHQ6Cj4gLQkJV0FSTl9PTigxKTsKPiAtCQlyZXR1cm4gVk1f RkFVTFRfU0lHQlVTOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgc3RydWN0IHZtX29wZXJhdGlv bnNfc3RydWN0IHZnZW1fZ2VtX3ZtX29wcyA9IHsKPiAtCS5mYXVsdCA9IHZnZW1fZ2VtX2ZhdWx0 LAo+IC0JLm9wZW4gPSBkcm1fZ2VtX3ZtX29wZW4sCj4gLQkuY2xvc2UgPSBkcm1fZ2VtX3ZtX2Ns b3NlLAo+IC19Owo+IC0KPiAtLyogaW9jdGxzICovCj4gLQo+IC1zdGF0aWMgc3RydWN0IGRybV9n ZW1fb2JqZWN0ICp2Z2VtX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJ CQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gLQkJCQkJICAgICAgdW5zaWduZWQgaW50 ICpoYW5kbGUsCj4gLQkJCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXplKQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2JqOwo+IC0Jc3RydWN0IGRybV9nZW1fb2JqZWN0ICpn ZW1fb2JqZWN0Owo+IC0JaW50IGVycjsKPiAtCj4gLQlzaXplID0gcm91bmR1cChzaXplLCBQQUdF X1NJWkUpOwo+IC0KPiAtCW9iaiA9IGt6YWxsb2Moc2l6ZW9mKCpvYmopLCBHRlBfS0VSTkVMKTsK PiAtCWlmICghb2JqKQo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+IC0KPiAtCWdlbV9v YmplY3QgPSAmb2JqLT5iYXNlOwo+IC0KPiAtCWVyciA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2 LCBnZW1fb2JqZWN0LCBzaXplKTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0J ZXJyID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUsIGdlbV9vYmplY3QsIGhhbmRsZSk7Cj4g LQlpZiAoZXJyKQo+IC0JCWdvdG8gaGFuZGxlX291dDsKPiAtCj4gLQlkcm1fZ2VtX29iamVjdF91 bnJlZmVyZW5jZV91bmxvY2tlZChnZW1fb2JqZWN0KTsKPiAtCj4gLQlyZXR1cm4gZ2VtX29iamVj dDsKPiAtCj4gLWhhbmRsZV9vdXQ6Cj4gLQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKGdlbV9vYmpl Y3QpOwo+IC1vdXQ6Cj4gLQlrZnJlZShvYmopOwo+IC0JcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAt fQo+IC0KPiAtc3RhdGljIGludCB2Z2VtX2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQlzdHJ1Y3QgZHJtX21vZGVfY3Jl YXRlX2R1bWIgKmFyZ3MpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iamVj dDsKPiAtCXVpbnQ2NF90IHNpemU7Cj4gLQl1aW50NjRfdCBwaXRjaCA9IGFyZ3MtPndpZHRoICog RElWX1JPVU5EX1VQKGFyZ3MtPmJwcCwgOCk7Cj4gLQo+IC0Jc2l6ZSA9IGFyZ3MtPmhlaWdodCAq IHBpdGNoOwo+IC0JaWYgKHNpemUgPT0gMCkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4gLQln ZW1fb2JqZWN0ID0gdmdlbV9nZW1fY3JlYXRlKGRldiwgZmlsZSwgJmFyZ3MtPmhhbmRsZSwgc2l6 ZSk7Cj4gLQo+IC0JaWYgKElTX0VSUihnZW1fb2JqZWN0KSkgewo+IC0JCURSTV9ERUJVR19EUklW RVIoIm9iamVjdCBjcmVhdGlvbiBmYWlsZWRcbiIpOwo+IC0JCXJldHVybiBQVFJfRVJSKGdlbV9v YmplY3QpOwo+IC0JfQo+IC0KPiAtCWFyZ3MtPnNpemUgPSBnZW1fb2JqZWN0LT5zaXplOwo+IC0J YXJncy0+cGl0Y2ggPSBwaXRjaDsKPiAtCj4gLQlEUk1fREVCVUdfRFJJVkVSKCJDcmVhdGVkIG9i amVjdCBvZiBzaXplICVsbGRcbiIsIHNpemUpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ IC1pbnQgdmdlbV9nZW1fZHVtYl9tYXAoc3RydWN0IGRybV9maWxlICpmaWxlLCBzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+IC0JCSAgICAgIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3QgKm9mZnNl dCkKPiAtewo+IC0JaW50IHJldCA9IDA7Cj4gLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsK PiAtCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlvYmogPSBkcm1fZ2Vt X29iamVjdF9sb29rdXAoZGV2LCBmaWxlLCBoYW5kbGUpOwo+IC0JaWYgKCFvYmopIHsKPiAtCQly ZXQgPSAtRU5PRU5UOwo+IC0JCWdvdG8gdW5sb2NrOwo+IC0JfQo+IC0KPiAtCWlmICghZHJtX3Zt YV9ub2RlX2hhc19vZmZzZXQoJm9iai0+dm1hX25vZGUpKSB7Cj4gLQkJcmV0ID0gZHJtX2dlbV9j cmVhdGVfbW1hcF9vZmZzZXQob2JqKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlnb3RvIHVucmVmOwo+ IC0JfQo+IC0KPiAtCUJVR19PTighb2JqLT5maWxwKTsKPiAtCj4gLQlvYmotPmZpbHAtPnByaXZh dGVfZGF0YSA9IG9iajsKPiAtCj4gLQlyZXQgPSB2Z2VtX2dlbV9nZXRfcGFnZXModG9fdmdlbV9i byhvYmopKTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBmYWlsX2dldF9wYWdlczsKPiAtCj4gLQkq b2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKCZvYmotPnZtYV9ub2RlKTsKPiAtCj4g LQlnb3RvIHVucmVmOwo+IC0KPiAtZmFpbF9nZXRfcGFnZXM6Cj4gLQlkcm1fZ2VtX2ZyZWVfbW1h cF9vZmZzZXQob2JqKTsKPiAtdW5yZWY6Cj4gLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShv YmopOwo+IC11bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAt CXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLWludCB2Z2VtX2RybV9nZW1fbW1hcChzdHJ1Y3QgZmls ZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gLXsKPiAtCXN0cnVjdCBkcm1f ZmlsZSAqcHJpdiA9IGZpbHAtPnByaXZhdGVfZGF0YTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBwcml2LT5taW5vci0+ZGV2Owo+IC0Jc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5v ZGU7Cj4gLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVjdCBkcm1fdmdlbV9n ZW1fb2JqZWN0ICp2Z2VtX29iajsKPiAtCWludCByZXQgPSAwOwo+IC0KPiAtCW11dGV4X2xvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiAtCj4gLQlub2RlID0gZHJtX3ZtYV9vZmZzZXRfZXhhY3Rf bG9va3VwKGRldi0+dm1hX29mZnNldF9tYW5hZ2VyLAo+IC0JCQkJCSAgIHZtYS0+dm1fcGdvZmYs Cj4gLQkJCQkJICAgdm1hX3BhZ2VzKHZtYSkpOwo+IC0JaWYgKCFub2RlKSB7Cj4gLQkJcmV0ID0g LUVJTlZBTDsKPiAtCQlnb3RvIG91dF91bmxvY2s7Cj4gLQl9IGVsc2UgaWYgKCFkcm1fdm1hX25v ZGVfaXNfYWxsb3dlZChub2RlLCBmaWxwKSkgewo+IC0JCXJldCA9IC1FQUNDRVM7Cj4gLQkJZ290 byBvdXRfdW5sb2NrOwo+IC0JfQo+IC0KPiAtCW9iaiA9IGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QsIHZtYV9ub2RlKTsKPiAtCj4gLQl2Z2VtX29iaiA9IHRvX3ZnZW1f Ym8ob2JqKTsKPiAtCj4gLQlpZiAob2JqLT5kbWFfYnVmICYmIHZnZW1fb2JqLT51c2VfZG1hX2J1 Zikgewo+IC0JCXJldCA9IGRtYV9idWZfbW1hcChvYmotPmRtYV9idWYsIHZtYSwgMCk7Cj4gLQkJ Z290byBvdXRfdW5sb2NrOwo+IC0JfQo+IC0KPiAtCWlmICghb2JqLT5kZXYtPmRyaXZlci0+Z2Vt X3ZtX29wcykgewo+IC0JCXJldCA9IC1FSU5WQUw7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+IC0J fQo+IC0KPiAtCXZtYS0+dm1fZmxhZ3MgfD0gVk1fSU8gfCBWTV9NSVhFRE1BUCB8IFZNX0RPTlRF WFBBTkQgfCBWTV9ET05URFVNUDsKPiAtCXZtYS0+dm1fb3BzID0gb2JqLT5kZXYtPmRyaXZlci0+ Z2VtX3ZtX29wczsKPiAtCXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0gdmdlbV9vYmo7Cj4gLQl2bWEt PnZtX3BhZ2VfcHJvdCA9Cj4gLQkJcGdwcm90X3dyaXRlY29tYmluZSh2bV9nZXRfcGFnZV9wcm90 KHZtYS0+dm1fZmxhZ3MpKTsKPiAtCj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiAtCWRybV9nZW1fdm1fb3Blbih2bWEpOwo+IC0JcmV0dXJuIHJldDsKPiAtCj4gLW91dF91 bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCj4gLQlyZXR1 cm4gcmV0Owo+IC19Cj4gLQo+IC0KPiAtc3RhdGljIHN0cnVjdCBkcm1faW9jdGxfZGVzYyB2Z2Vt X2lvY3Rsc1tdID0gewo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgdmdlbV9kcml2ZXJfZm9wcyA9IHsKPiAtCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiAt CS5vcGVuCQk9IGRybV9vcGVuLAo+IC0JLm1tYXAJCT0gdmdlbV9kcm1fZ2VtX21tYXAsCj4gLQku cG9sbAkJPSBkcm1fcG9sbCwKPiAtCS5yZWFkCQk9IGRybV9yZWFkLAo+IC0JLnVubG9ja2VkX2lv Y3RsID0gZHJtX2lvY3RsLAo+IC0JLnJlbGVhc2UJPSBkcm1fcmVsZWFzZSwKPiAtfTsKPiAtCj4g LXN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciB2Z2VtX2RyaXZlciA9IHsKPiAtCS5kcml2ZXJfZmVh dHVyZXMJCT0gRFJJVkVSX0dFTSB8IERSSVZFUl9QUklNRSwKPiAtCS5nZW1fZnJlZV9vYmplY3QJ CT0gdmdlbV9nZW1fZnJlZV9vYmplY3QsCj4gLQkuZ2VtX3ZtX29wcwkJCT0gJnZnZW1fZ2VtX3Zt X29wcywKPiAtCS5pb2N0bHMJCQkJPSB2Z2VtX2lvY3RscywKPiAtCS5mb3BzCQkJCT0gJnZnZW1f ZHJpdmVyX2ZvcHMsCj4gLQkuZHVtYl9jcmVhdGUJCQk9IHZnZW1fZ2VtX2R1bWJfY3JlYXRlLAo+ IC0JLmR1bWJfbWFwX29mZnNldAkJPSB2Z2VtX2dlbV9kdW1iX21hcCwKPiAtCS5wcmltZV9oYW5k bGVfdG9fZmQJCT0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCj4gLQkucHJpbWVfZmRfdG9f aGFuZGxlCQk9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAo+IC0JLmdlbV9wcmltZV9leHBv cnQJCT0gZHJtX2dlbV9wcmltZV9leHBvcnQsCj4gLQkuZ2VtX3ByaW1lX2ltcG9ydAkJPSB2Z2Vt X2dlbV9wcmltZV9pbXBvcnQsCj4gLQkuZ2VtX3ByaW1lX3BpbgkJCT0gdmdlbV9nZW1fcHJpbWVf cGluLAo+IC0JLmdlbV9wcmltZV91bnBpbgkJPSB2Z2VtX2dlbV9wcmltZV91bnBpbiwKPiAtCS5n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCQk9IHZnZW1fZ2VtX3ByaW1lX2dldF9zZ190YWJsZSwKPiAt CS5nZW1fcHJpbWVfdm1hcAkJCT0gdmdlbV9nZW1fcHJpbWVfdm1hcCwKPiAtCS5nZW1fcHJpbWVf dnVubWFwCQk9IHZnZW1fZ2VtX3ByaW1lX3Z1bm1hcCwKPiAtCS5uYW1lCT0gRFJJVkVSX05BTUUs Cj4gLQkuZGVzYwk9IERSSVZFUl9ERVNDLAo+IC0JLmRhdGUJPSBEUklWRVJfREFURSwKPiAtCS5t YWpvcgk9IERSSVZFUl9NQUpPUiwKPiAtCS5taW5vcgk9IERSSVZFUl9NSU5PUiwKPiAtfTsKPiAt Cj4gLXN0cnVjdCBkcm1fZGV2aWNlICp2Z2VtX2RldmljZTsKPiAtCj4gLXN0YXRpYyBpbnQgX19p bml0IHZnZW1faW5pdCh2b2lkKQo+IC17Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXZnZW1fZGV2aWNl ID0gZHJtX2Rldl9hbGxvYygmdmdlbV9kcml2ZXIsIE5VTEwpOwo+IC0JaWYgKCF2Z2VtX2Rldmlj ZSkgewo+IC0JCXJldCA9IC1FTk9NRU07Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+IC0JcmV0 ICA9IGRybV9kZXZfcmVnaXN0ZXIodmdlbV9kZXZpY2UsIDApOwo+IC0KPiAtCWlmIChyZXQpCj4g LQkJZ290byBvdXRfdW5yZWY7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLQo+IC1vdXRfdW5yZWY6Cj4g LQlkcm1fZGV2X3VucmVmKHZnZW1fZGV2aWNlKTsKPiAtb3V0Ogo+IC0JcmV0dXJuIHJldDsKPiAt fQo+IC0KPiAtc3RhdGljIHZvaWQgX19leGl0IHZnZW1fZXhpdCh2b2lkKQo+IC17Cj4gLQlkcm1f ZGV2X3VucmVnaXN0ZXIodmdlbV9kZXZpY2UpOwo+IC0JZHJtX2Rldl91bnJlZih2Z2VtX2Rldmlj ZSk7Cj4gLX0KPiAtCj4gLW1vZHVsZV9pbml0KHZnZW1faW5pdCk7Cj4gLW1vZHVsZV9leGl0KHZn ZW1fZXhpdCk7Cj4gLQo+IC1NT0RVTEVfQVVUSE9SKCJSZWQgSGF0LCBJbmMuIik7Cj4gLU1PRFVM RV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7Cj4gLU1PRFVMRV9MSUNFTlNFKCJHUEwgYW5kIGFk ZGl0aW9uYWwgcmlnaHRzIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3Zn ZW1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oCj4gZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggNTdhYjRkOGY0MWY5Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDU3 ICswLDAgQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0IMKpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24K PiAtICogQ29weXJpZ2h0IMKpIDIwMTQgVGhlIENocm9taXVtIE9TIEF1dGhvcnMKPiAtICoKPiAt ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKPiAtICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiAtICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiAtICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gLSAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gLSAqCj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAtICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+IC0gKiBTb2Z0d2FyZS4KPiAtICoKPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAtICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCj4gLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+IC0gKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgo+IC0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+IC0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gLSAq IElOIFRIRSBTT0ZUV0FSRS4KPiAtICoKPiAtICogQXV0aG9yczoKPiAtICogICAgQmVuIFdpZGF3 c2t5IDxiZW5AYndpZGF3c2submV0Pgo+IC0gKgo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgX1ZHRU1f RFJWX0hfCj4gLSNkZWZpbmUgX1ZHRU1fRFJWX0hfCj4gLQo+IC0jaW5jbHVkZSA8ZHJtL2RybVAu aD4KPiAtI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gLQo+IC0jZGVmaW5lIHRvX3ZnZW1fYm8o eCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0LCBiYXNlKQo+IC1z dHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCB7Cj4gLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgYmFz ZTsKPiAtCXN0cnVjdCBwYWdlICoqcGFnZXM7Cj4gLQlib29sIHVzZV9kbWFfYnVmOwo+IC19Owo+ IC0KPiAtLyogdmdlbV9kcnYuYyAqLwo+IC1leHRlcm4gdm9pZCB2Z2VtX2dlbV9wdXRfcGFnZXMo c3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3QgKm9iaik7Cj4gLWV4dGVybiBpbnQgdmdlbV9nZW1f Z2V0X3BhZ2VzKHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICpvYmopOwo+IC0KPiAtLyogdmdl bV9kbWFfYnVmLmMgKi8KPiAtZXh0ZXJuIHN0cnVjdCBzZ190YWJsZSAqdmdlbV9nZW1fcHJpbWVf Z2V0X3NnX3RhYmxlKAo+IC0JCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmopOwo+IC1leHRl cm4gaW50IHZnZW1fZ2VtX3ByaW1lX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmopOwo+ IC1leHRlcm4gdm9pZCB2Z2VtX2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdvYmopOwo+IC1leHRlcm4gdm9pZCAqdmdlbV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKmdvYmopOwo+IC1leHRlcm4gdm9pZCB2Z2VtX2dlbV9wcmltZV92dW5tYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKPiAtZXh0ZXJuIHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqdmdlbV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gLQkJCQkJCSAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zik7Cj4gLQo+IC0KPiAtI2Vu ZGlmCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=