From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 10/17] drm: Atomic crtc/connector updates using crtc/plane helper interfaces Date: Wed, 5 Nov 2014 13:53:48 -0500 Message-ID: References: <1414934370-11924-1-git-send-email-daniel.vetter@ffwll.ch> <1414934370-11924-11-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 mail-ie0-f182.google.com (mail-ie0-f182.google.com [209.85.223.182]) by gabe.freedesktop.org (Postfix) with ESMTP id B66396E9FC for ; Wed, 5 Nov 2014 10:54:10 -0800 (PST) Received: by mail-ie0-f182.google.com with SMTP id rd18so1365820iec.13 for ; Wed, 05 Nov 2014 10:54:10 -0800 (PST) Received: from mail-ie0-f172.google.com (mail-ie0-f172.google.com. [209.85.223.172]) by mx.google.com with ESMTPSA id w7sm2022830igl.7.2014.11.05.10.54.09 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 05 Nov 2014 10:54:09 -0800 (PST) Received: by mail-ie0-f172.google.com with SMTP id at20so1353473iec.17 for ; Wed, 05 Nov 2014 10:54:09 -0800 (PST) In-Reply-To: <1414934370-11924-11-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: Intel Graphics Development , DRI Development List-Id: dri-devel@lists.freedesktop.org T24gU3VuLCBOb3YgMDIsIDIwMTQgYXQgMDI6MTk6MjNQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBTbyB0aGlzIGlzIGZpbmFsbHkgdGhlIGludGVncmF0aW9uIG9mIHRoZSBjcnRjIGFu ZCBwbGFuZSBoZWxwZXIKPiBpbnRlcmZhY2VzIGludG8gdGhlIGF0b21pYyBoZWxwZXIgZnVuY3Rp b25zLgo+Cj4gSW4gdGhlIGNoZWNrIGZ1bmN0aW9uIHdlIG5vdyBoYXZlIGEgZmV3IHN0ZXBzOgo+ Cj4gLSBGaXJzdCB3ZSB1cGRhdGUgdGhlIG91dHB1dCByb3V0aW5nIGFuZCBmaWd1cmUgb3V0IHdo aWNoIGNydGNzIG5lZWQgYQo+ICAgZnVsbCBtb2RlIHNldC4gU3VpdGFibGUgZW5jb2RlcnMgYXJl IHNlbGVjdGVkIHVzaW5nIC0+YmVzdF9lbmNvZGVyLAo+ICAgd2l0aCB0aGUgc2FtZSBzZW1hbnRp Y3MgYXMgdGhlIGNydGMgaGVscGVycyBvZiBpbXBsaWNpdGx5IGRpc2FibGluZwo+ICAgYWxsIGNv bm5lY3RvcnMgY3VycmVudGx5IHVzaW5nIHRoZSBlbmNvZGVyLgo+Cj4gLSBUaGVuIHdlIHB1bGwg YWxsIG90aGVyIGNvbm5lY3RvcnMgaW50byB0aGUgc3RhdGUgdXBkYXRlIHdoaWNoIGZlZWQKPiAg IGZyb20gYSBjcnRjIHdoaWNoIGNoYW5nZXMuIFRoaXMgbXVzdCBiZSBkb25lIGRvIGNhdGNoIG1v ZGUgY2hhbmdlcwo+ICAgYW5kIHNpbWlsYXIgdXBkYXRlcyAtIGF0b21pYyB1cGRhdGVzIGFyZSBk aWZmZXJlbmNlcyBvbiB0b3Agb2YgdGhlCj4gICBjdXJyZW50IHN0YXRlLgo+Cj4gLSBUaGVuIHdl IGNhbGwgYWxsIHRoZSB2YXJpb3VzIC0+bW9kZV9maXh1cCB0byBjb21wdXRlIHRoZSBhZGp1c3Rl ZAo+ICAgbW9kZS4gTm90ZSB0aGF0IGhlcmUgd2UgaGF2ZSBhIHNsaWdodCBzZW1hbnRpYyBkaWZm ZXJlbmNlIGNvbXBhcmVkCj4gICB0byB0aGUgY3J0YyBoZWxwZXJzOiBXZSBoYXZlIG5vdCB5ZXQg dXBkYXRlZCB0aGUgZW5jb2Rlci0+Y3J0YyBsaW5rCj4gICB3aGVuIGNhbGxpbmcgdGhlIGVuY29k ZXIncyAtPm1vZGVfZml4dXAgZnVuY3Rpb24uIEJ1dCB0aGF0J3MgYQo+ICAgcmVxdWlyZW1lbnQg d2hlbiBjb252ZXJ0aW5nIHRvIGF0b21pYyBzaW5jZSB3ZSB3YW50IHRvIHByZXBhcmUgdGhlCj4g ICBlbnRpcmUgc3RhdGUgY29tcGxldGVseSBjb250YWluZWQgd2l0aCB0aGUgb3ZlciBkcm1fYXRv bWljX3N0YXRlCj4gICBzdHJ1Y3R1cmUuIFNvIHRoaXMgbXVzdCBiZSBjYXJlZnVsbHkgY2hlY2tl ZCB3aGVuIGNvbnZlcnRpbmcgZHJpdmVycwo+ICAgb3ZlciB0byBhdG9taWMgaGVscGVycy4KPgo+ IC0gRmluYWxseSB3ZSBkbyBjYWxsIHRoZSBhdG9taWNfY2hlY2sgZnVuY3Rpb25zIG9uIHBsYW5l cyBhbmQgY3J0Y3MuCj4KPiBUaGUgY29tbWl0IGZ1bmN0aW9uIGlzIGFsc28gcXVpdGUgYSBiZWFz dDoKPgo+IC0gVGhlIG9ubHkgc3RlcCB0aGF0IGNhbiBmYWlsIGlzIGRvbmUgZmlyc3QsIG5hbWVs eSBwaW5uaW5nIHRoZQo+ICAgZnJhbWVidWZmZXJzLiBBZnRlciB0aGF0IHdlIGNyb3NzIHRoZSBw b2ludCBvZiBubyByZXR1cm4sIGFuIGFzeW5jCj4gICBjb21taXQgd291bGQgcHVzaCBhbGwgdGhh dCBpbnRvIHRoZSB3b3JrZXIgdGhyZWFkLgo+Cj4gLSBUaGUgZGlzYWJsaW5nIG9mIGVuY29kZXJz IGFuZCBjb25uZWN0b3JzIGlzIGEgYml0IHRyaWNreSwgc2luY2UKPiAgIGRlcGVuZGluZyB1cG9u IHRoZSBmaW5hbCBzdGF0ZSB3ZSBuZWVkIHRvIHNlbGVjdCBkaWZmZXJlbnQgY3J0Ywo+ICAgaGVs cGVyIGZ1bmN0aW9ucy4KPgo+IC0gU29mdHdhcmUgdHJhY2tpbmcgaXMgYSBiaXQgY2xhcmlmaWVk IGNvbXBhcmVkIHRvIHRoZSBjcnRjIGhlbHBlcnM6Cj4gICBXZSBjb21taXQgdGhlIHNvZnR3YXJl IHN0YXRlIGJlZm9yZSBzdGFydGluZyB0byB0b3VjaCB0aGUgaGFyZHdhcmUsCj4gICBsaWtlIGNy dGMgaGVscGVycy4gQnV0IHNpbmNlIHdlIGp1c3Qgc3dhcCB0aGVtIHdlIHN0aWxsIGhhdmUgdGhl IG9sZAo+ICAgc3RhdGUgKGkuZS4gdGhlIGN1cnJlbnQgaHcgc3RhdGUpIGFyb3VuZCwgd2hpY2gg aXMgcmVhbGx5IGhhbmR5IHRvCj4gICB3cml0ZSBzaW1wbGUgZGlzYWJsZSBmdW5jdGlvbnMuIFNv IG5vIG1vcmUKPiAgIGRybV9jcnRjX2hlbHBlcl9kaXNhYmxlX2FsbF91bnVzZWRfZnVuY3Rpb25z IGtpbmQgb2YgZnVuIGJlY2F1c2UKPiAgIHdlJ3JlIGxlYXZpbmcgdW51c2VkIGNydGNzL2VuY29k ZXJzIGJlaGluZC4gRXZlcnl0aGluZyBnZXRzIHNodXQKPiAgIGRvd24gaW4tb3JkZXIgbm93LCB3 aGljaCBpcyBvbmUgb2YgdGhlIGtleSBkaWZmZXJlbmNlcyBvZiB0aGUgaTkxNQo+ICAgaGVscGVy cyBjb21wYXJlZCB0byBjcnRjIGhlbHBlcnMgYW5kIGEgcmVhbGx5IG5pY2UgYWRkaXRpb25hbAo+ ICAgZ3VhcmFudGVlLgo+Cj4gLSBMaWtlIHdpdGggdGhlIHBsYW5lIGhlbHBlcnMgdGhlIGF0b21p YyBjb21taXQgZnVuY3Rpb24gd2FpdHMgZm9yIG9uZQo+ICAgdmJsYW5rIHRvIHBhc3MgYmVmb3Jl IGNhbGxpbmcgdGhlIGZyYW1lYnVmZmVyIGNsZWFudXAgZnVuY3Rpb24uCj4KPiBDb21wYXJlZCB0 byBSb2IncyBoZWxwZXIgYXBwcm9hY2ggdGhlcmUncyBhIGJ1bmNoIG9mIHVwc2lkZXM6Cj4KPiAt IEFsbCB0aGUgaW50ZXJmYWNlcyB3aGljaCBjYW4gZmFpbCBhcmUgY2FsbGVkIGluIHRoZSAtPmNo ZWNrIGhvb2sKPiAgIChpLmUuIC0+YmVzdF9tYXRjaCBhbmQgdGhlIHZhcmlvdXMgLT5tb2RlX2Zp eHVwIGhvb2tzKS4gVGhpcyBtZWFucwo+ICAgdGhhdCBkcml2ZXJzIGNhbiBqdXN0IHJldXNlIHRo b3NlIGZ1bmN0aW9ucyBhbmQgZG9uJ3QgbmVlZCB0byBtb3ZlCj4gICBldmVyeXRoaW5nIGludG8g LT5hdG9taWNfY2hlY2sgY2FsbGJhY2tzLiBJZiBkcml2ZXJzIGhhdmUgbm8gbmVlZAo+ICAgZm9y IGFkZGl0aW9uYWwgY29uc3RyYWludCBjaGVja2luZyBiZXlvbmcgdGhlaXIgZXhpc3RpbmcgY3J0 YwoKcy9iZXlvbmcvYmV5b25kLwoKPiAgIGhlbHBlciBjYWxsYmFja3MgdGhleSBkb24ndCBuZWVk IHRvIGRvIGFueXRoaW5nLgo+Cj4gLSBUaGUgYWN0dWFsIGNvbW1pdCBvcGVyYXRpb24gaXMgcHJv cGVybHkgc3RhZ2U6IEZpcnN0IHdlIHByZXBhcmUKPiAgIGZyYW1lYnVmZmVycywgd2hpY2ggY2Fu IHBvdGVudGlhbGx5IHN0aWxsIGZhaWwgKGR1ZSB0byBtZW1vcnkKPiAgIGV4aGF1c3RpbmcpLiBU aGlzIGlzIGltcG9ydGFudCBmb3IgdGhlIGFzeW5jIGNhc2UsIHdoZXJlIHRoaXMgbXVzdAo+ICAg YmUgZG9uZSBzeW5jaHJvbm91c2x5IHRvIGNvcnJlY3RseSByZXR1cm4gZXJyb3JzLgo+Cj4gLSBU aGUgb3V0cHV0IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyAoZG9uZSB3aXRoIGNydGMgaGVscGVyIGZ1 bmN0aW9ucykKPiAgIGFuZCB0aGUgcGxhbmUgdXBkYXRlICh1c2luZyBhdG9taWMgcGxhbmUgaGVs cGVycykgYXJlIGNvcnJlY3RseQo+ICAgaW50ZXJsZWF2ZWQ6IEZpcnN0IHdlIHNodXQgZG93biBh bnkgY3J0Y3MgdGhhdCBuZWVkIGNoYW5naW5nLCB0aGVuCj4gICB3ZSB1cGRhdGUgcGxhbmVzIGFu ZCBmaW5hbGx5IHdlIGVuYWJsZSBldmVyeXRoaW5nIGFnYWluLiBIYXJkd2FyZQo+ICAgd2l0aG91 dCBHTyBiaXRzIG11c3QgYmUgbW9yZSBjYXJlZnVsIHdpdGggb3JkZXJpbmcsIHdoaWNoIHRoaXMK PiAgIHNlcXVlbmNlIGVuYWJsZXMuCj4KPiAtIEFsc28gZm9yIGhhcmR3YXJlIHdpdGggc2hhcmVk IG91dHB1dCByZXNvdXJjZXMgKGxpa2UgZGlzcGxheSBQTExzKQo+ICAgd2UgZmlyc3QgbXVzdCBz aHV0IGRvd24gdGhlIG9sZCBjb25maWd1cmF0aW9uIGJlZm9yZSB3ZSBjYW4gZW5hYmxlCj4gICB0 aGUgbmV3IG9uZS4gT3RoZXJ3aXNlIHdlIGNhbiBoaXQgYW4gaW1wb3NzaWJsZSBpbnRlcm1lZGlh dGUgc3RhdGUKPiAgIHdoZXJlIHRoZXJlJ3Mgbm90IGVub3VnaCBQTExzICh3aGljaCBpcyB0aGUg cG9pbnQgYmVoaW5kIGF0b21pYwo+ICAgdXBkYXRlcykuCj4KPiB2MjoKPiAtIEVuc3VyZSB0aGF0 IHVzZXJzIG9mIC0+Y2hlY2sgdXBkYXRlIGNydGNfc3RhdGUtPmVuYWJsZSBjb3JyZWN0bHkuCj4g LSBVcGRhdGUgdGhlIGxlZ2FjeSBzdGF0ZSBpbiBjcnRjL3BsYW5lIHN0cnVjdHVyZXMuIEV2ZW50 dWFsbHkgd2Ugd2FudAo+ICAgdG8gcmVtb3ZlIHRoYXQsIGJ1dCBmb3Igbm93IHRoZSBkcm0gY29y ZSBzdGlsbCBleHBlY3RzIHRoaXMgKGVzcGVjaWFsbHkKPiAgIHRoZSBwbGFuZS0+ZmIgcG9pbnRl cikuCj4KPiB2MzogQSBmZXcgY2hhbmdlcyBmb3IgYmV0dGVyIGFzeW5jIGhhbmRsaW5nOgo+Cj4g LSBSZW9yZGVyIHRoZSBzb2Z0d2FyZSBzaWRlIHN0YXRlIGNvbW1pdCBzbyB0aGF0IGl0IGhhcHBl bnMgYWxsIGJlZm9yZQo+ICAgd2UgdG91Y2ggdGhlIGhhcmR3YXJlLiBUaGlzIHdheSBhc3luYyBz dXBwb3J0IGJlY29tZXMgdmVyeSBlYXN5Cj4gICBzaW5jZSB3ZSBjYW4gcHVudCBhbGwgdGhlIGFj dHVhbCBodyB0b3VjaGluZyB0byBhIHdvcmtlciB0aHJlYWQuIEFuZAo+ICAgYXMgbG9uZyBhcyB3 ZSBzeW5jaHJvbml6ZSB3aXRoIHRoYXQgdGhyZWFkIChmbHVzaGluZyBvciBjYW5jZWxsaW5nLAo+ ICAgZGVwZW5kaW5nIHVwb24gd2hhdCB0aGUgZHJpdmVyIGNhbiBoYW5kbGUpIGJlZm9yZSB3ZSBj b21taXQgdGhlIG5leHQKPiAgIHNvZnR3YXJlIHN0YXRlIHRoZXJlJ3Mgbm8gbmVlZCBmb3IgYW55 IGxvY2tpbmcgaW4gdGhlIHdvcmtlciB0aHJlYWQKPiAgIGF0IGFsbC4gV2hpY2ggZ3JlYXRseSBz aW1wbGlmaWVzIHRoaW5ncy4KPgo+ICAgQW5kIGFzIGxvbmcgYXMgd2Ugc3luY2hyb25pemUgd2l0 aCBhbGwgcmVsZXZhbnQgdGhyZWFkcyB3ZSBjYW4gaGF2ZQo+ICAgYSBsb3Qgb2YgdGhlbSAoZS5n LiBwZXItY3J0YyBmb3IgcGVyLWNydGMgdXBkYXRlcykgcnVubmluZyBpbgo+ICAgcGFyYWxsZWwu Cj4KPiAtIEV4cG9zZSBwcmUvcG9zdCBwbGFuZSBjb21taXQgc3RlcHMgc2VwYXJhdGVseS4gV2Ug bmVlZCB0byBleHBvc2UgdGhlCj4gICBhY3R1YWwgaHcgY29tbWl0IHN0ZXAgYW55d2F5IGZvciBk cml2ZXJzIHRvIGJlIGFibGUgdG8gaW1wbGVtZW50Cj4gICBhc3luY2hyb25vdXMgY29tbWl0IHdv cmtlcnMuIEJ1dCBpZiB3ZSBleHBvc2UgcHJlL3Bvc3QgYW5kIHBsYW5lCj4gICBjb21taXQgc3Rl cHMgaW5kaXZpZHVhbGx5IHdlIGFsbG93IGRyaXZlcnMgdG8gc2VsZWN0aXZlbHkgdXNlIGF0b21p Ywo+ICAgaGVscGVycy4KPgo+IC0gSSd2ZSBmb3Jnb3R0ZW4gdG8gY2FsbCBlbmNvZGVyL2JyaWRn ZSAtPm1vZGVfc2V0IGZ1bmN0aW9ucywgZml4Cj4gICB0aGlzLgo+Cj4gdjQ6IEFkZCBkZWJ1ZyBv dXRwdXQgYW5kIGZpeCBhIG1peHVwIGJldHdlZW4gY3VycmVudCBhbmQgbmV3IHN0YXRlCj4gdGhh dCByZXN1bHRlZCBpbiBjcnRjcyBub3QgZ2V0dGluZyB1cGRhdGVkIGNvcnJlY3RseS4gQW5kIGlu IGFuCj4gT29wcyAuLi4KPgo+IHY1Ogo+IC0gQmUga2luZCB0byBkcml2ZXIgd3JpdGVycyBpbiB0 aGUgdmJsYW5rIHdhaXQgZnVuY3Rpb25zLi4gaWYgdGhpbmcKPiAgIGFyZW4ndCB3b3JraW5nIHll dCwgYW5kIHZibGFuayBpcnEgd2lsbCBuZXZlciBjb21lLCB0aGVuIGxldCdzIG5vdAo+ICAgYmxv Y2sgZm9yZXZlci4uIGVzcGVjaWFsbHkgdW5kZXIgY29uc29sZS1sb2NrLgo+IC0gQ29ycmVjdGx5 IGNsZWFyIGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyIHdoZW4gZGlzYWJsaW5nLgo+ICAg U3BvdHRlZCB3aGlsZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBhIHJlcG9ydCBmcm9tIFJvYiBDbGFy ay4KPiAtIE9ubHkgc3RlYWwgZW5jb2RlciBpZiBpdCBhY3R1YWxseSBjaGFuZ2VkLCBvdGhlcndp c2UgaGlsYXJpdHkgZW5zdWVzCj4gICBpZiB3ZSBzdGVhbCBmcm9tIHRoZSBjdXJyZW50IGNvbm5l Y3RvciBhbmQgc28gc2V0IHRoZSAtPmNydGMgcG9pbnRlcgo+ICAgdW5leHBlY3RlZGx5IHRvIE5V TEwuIFJlcG9ydGVkIGJ5IFJvYiBDbGFyay4KPiAtIEJhaWwgb3V0IGluIGRpc2FibGVfb3V0cHV0 cyBpZiBhbiBvdXRwdXQgY3VycmVudGx5IGRvZXNuJ3QgaGF2ZSBhCj4gICBiZXN0X2VuY29kZXIg LSB0aGlzIG1lYW5zIGl0J3MgYWxyZWFkeSBkaXNhYmxlZC4KPgo+IHY2OiBGaXh1cGUga2VybmVs ZG9jIGFzIHJlcG9ydGVkIGJ5IFBhdWxvLiBBbmQgYWxzbyBmaXggdXAga2VybmVsZG9jCgpzL0Zp eHVwZS9GaXh1cC8KCj4gaW4gZHJtX2NydGMuaC4KPgo+IHY3OiBUYWtlIG93bmVyc2hpcCBvZiB0 aGUgYXRvbWljIHN0YXRlIGFuZCBjbGVhbiBpdCB1cCB3aXRoCj4gZHJtX2F0b21pY19zdGF0ZV9m cmVlKCkuCj4KPiB2OCBWYXJpb3VzIGltcHJvdmVtZW50cyBhbGwgb3ZlcjoKPiAtIFBvbGlzaCBj b2RlIGNvbW1lbnRzIGFuZCBrZXJuZWxkb2MuCj4gLSBJbXByb3ZlIGRlYnVnIG91dHB1dCB0byBt YWtlIHN1cmUgYWxsIGZhaWx1cmUgY2FzZXMgYXJlIGxvZ2dlZC4KPiAtIFRyZWF0IGVuYWJsZWQg Y3J0YyB3aXRoIG5vIGNvbm5lY3RvcnMgYXMgaW52YWxpZCBpbnB1dCBmcm9tIHVzZXJzcGFjZS4K PiAtIERvbid0IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gbW9kZV9maXh1cCgpLgo+Cj4g djk6Cj4gLSBJbXByb3ZlIGRlYnVnIG91dHB1dCBmb3IgY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2Vk Lgo+Cj4gdjEwOgo+IC0gRml4dXAgdGhlIHZibGFuayB3YWl0aW5nIGNvZGUgdG8gcHJvcGVybHkg YmFsYW5jZSB0aGUgdmJsYW5rX2dldC9wdXQKPiAgIGNhbGxzLgo+IC0gQmV0dGVyIGNvbW1lbnRz IHdoZW4gY2hlY2tpbmcvY29tcHV0aW5nIGNydGMtPm1vZGVfY2hhbmdlZAo+Cj4gdjExOiBGaXh1 cCB0aGUgZW5jb2RlciBzdGVhbGluZyBsb2dpYzogV2UgY2FuJ3QgbG9vayBhdCBlbmNvZGVyLT5j cnRjCj4gc2luY2UgdGhhdCdzIG5vdCBpbiB0aGUgYXRvbWljIHN0YXRlIHN0cnVjdHVyZXMgYW5k IG1pZ2h0IGJlIHVwZGF0ZWQKPiBhc3luY2hyb25vdXNseSBpbiBhbmQgYXN5bmMgY29tbWl0LiBJ bnN0ZWFkIHdlIG5lZWQgdG8gaW5zcGVjdCBhbGwgdGhlCj4gY29ubmVjdG9yIHN0YXRlcyBhbmQg Y2hlY2sgd2hldGhlciB0aGUgZW5jb2RlciBpcyBjdXJyZW50bHkgaW4gdXNlZAo+IGFuZCBpZiBz bywgb24gd2hpY2ggY3J0Yy4KPgo+IENjOiBQYXVsbyBaYW5vbmkgPHByemFub25pQGdtYWlsLmNv bT4KPiBDYzogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gLS0tCgpPdmVyYWxsLCB0 aGlzIGxvb2tzIHJlYWxseSBnb29kLiBJIGp1c3QgaGF2ZSBhIGNvdXBsZSBtaW5vciBjb21tZW50 cy4KCkFsc28sIGl0IHNlZW1zIGxpa2UgbXkgbXV0dC0+Z21haWwgd29ya2Zsb3cgaXMgbWFuZ2xp bmcgdGhlIHBhdGNoJ3MKaW5kZW50YXRpb24sIHNvcnJ5ICdib3V0IHRoYXQuCgoKCj4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgNjkyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMgICB8 ICAgMSArCj4gIGluY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmggICAgIHwgICA4ICsKPiAg aW5jbHVkZS9kcm0vZHJtX2NydGMuaCAgICAgICAgICAgICAgfCAgMTAgKwo+ICA0IGZpbGVzIGNo YW5nZWQsIDcxMSBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu Ywo+IGluZGV4IDU1YThlYjI2NzhiMC4uODg3ZTE5NzFjOTE1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMjksNiArMjksNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWMuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gICNpbmNs dWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19o ZWxwZXIuaD4KPgo+ICBzdGF0aWMgdm9pZAo+ICBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9jaGFu Z2VkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiBAQCAtNTcsNiArNTgsMzI3IEBA IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2NoYW5nZWQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAo+ICAgfQo+ICB9Cj4KPiArc3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqCj4gK2dldF9j dXJyZW50X2NydGNfZm9yX2VuY29kZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArICAgICBz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArIHN0cnVjdCBkcm1fbW9kZV9jb25m aWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICsgc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcjsKPiArCj4gKyBXQVJOX09OKCFkcm1fbW9kZXNldF9pc19sb2NrZWQoJmNvbmZp Zy0+Y29ubmVjdGlvbl9tdXRleCkpOwo+ICsKPiArIGxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVj dG9yLCAmY29uZmlnLT5jb25uZWN0b3JfbGlzdCwgaGVhZCkgewo+ICsgaWYgKGNvbm5lY3Rvci0+ c3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyKQo+ICsgY29udGludWU7Cj4gKwo+ICsgcmV0 dXJuIGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gKyB9Cj4gKwo+ICsgcmV0dXJuIE5VTEw7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQKPiArc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4gKyAgICAgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArICAg ICAgc3RydWN0IGRybV9jcnRjICplbmNvZGVyX2NydGMpCj4gK3sKPiArIHN0cnVjdCBkcm1fbW9k ZV9jb25maWcgKmNvbmZpZyA9ICZzdGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZzsKPiArIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3I7Cj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ ICsKPiArIC8qCj4gKyAqIFdlIGNhbiBvbmx5IHN0ZWFsIGFuIGVuY29kZXIgY29taW5nIGZyb20g YSBjb25uZWN0b3IsIHdoaWNoIG1lYW5zIHdlCj4gKyAqIG11c3QgYWxyZWFkeSBob2xkIHRoZSBj b25uZWN0aW9uX211dGV4Lgo+ICsgKi8KPiArIFdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tl ZCgmY29uZmlnLT5jb25uZWN0aW9uX211dGV4KSk7Cj4gKwo+ICsgRFJNX0RFQlVHX0tNUygiW0VO Q09ERVI6JWQ6JXNdIGluIHVzZSBvbiBbQ1JUQzolZF0sIHN0ZWFsaW5nIGl0XG4iLAo+ICsgICAg ICBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lLAo+ICsgICAgICBlbmNvZGVyX2NydGMt PmJhc2UuaWQpOwo+ICsKPiArIGNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRl KHN0YXRlLCBlbmNvZGVyX2NydGMpOwo+ICsgaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPiArIHJl dHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICsKPiArIGNydGNfc3RhdGUtPm1vZGVfY2hhbmdl ZCA9IHRydWU7Cj4gKwo+ICsgbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZjb25maWct PmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7Cj4gKyBpZiAoY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9l bmNvZGVyICE9IGVuY29kZXIpCj4gKyBjb250aW51ZTsKPiArCj4gKyBEUk1fREVCVUdfS01TKCJT dGVhbGluZyBlbmNvZGVyIGZyb20gW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gKyAgICAgIGNvbm5l Y3Rvci0+YmFzZS5pZCwKPiArICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPiArCj4gKyBjb25uZWN0 b3Jfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsCj4gKyBjb25u ZWN0b3IpOwo+ICsgaWYgKElTX0VSUihjb25uZWN0b3Jfc3RhdGUpKQo+ICsgcmV0dXJuIFBUUl9F UlIoY29ubmVjdG9yX3N0YXRlKTsKPiArCj4gKyBjb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBOVUxM Owo+ICsgY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBOVUxMOwo+ICsgfQo+ICsKPiAr IHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3VwZGF0ZV9jb25uZWN0b3Jfcm91 dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGludCBjb25uX2lkeCkKPiArewo+ ICsgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jczsKPiArIHN0cnVjdCBk cm1fZW5jb2RlciAqbmV3X2VuY29kZXI7Cj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yOwo+ICsgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPiAr IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArIGludCBpZHgsIHJldDsKPiAr Cj4gKyBjb25uZWN0b3IgPSBzdGF0ZS0+Y29ubmVjdG9yc1tjb25uX2lkeF07Cj4gKyBjb25uZWN0 b3Jfc3RhdGUgPSBzdGF0ZS0+Y29ubmVjdG9yX3N0YXRlc1tjb25uX2lkeF07Cj4gKwo+ICsgaWYg KCFjb25uZWN0b3IpCj4gKyByZXR1cm4gMDsKPiArCj4gKyBEUk1fREVCVUdfS01TKCJVcGRhdGlu ZyByb3V0aW5nIGZvciBbQ09OTkVDVE9SOiVkOiVzXVxuIiwKPiArIGNvbm5lY3Rvci0+YmFzZS5p ZCwKPiArIGNvbm5lY3Rvci0+bmFtZSk7Cj4gKwo+ICsgaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMgIT0gY29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7Cj4gKyBpZiAoY29ubmVjdG9yLT5zdGF0ZS0+ Y3J0Yykgewo+ICsgaWR4ID0gZHJtX2NydGNfaW5kZXgoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yyk7 Cj4gKwo+ICsgY3J0Y19zdGF0ZSA9IHN0YXRlLT5jcnRjX3N0YXRlc1tpZHhdOwo+ICsgY3J0Y19z dGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiArIH0KPiArCj4gKyBpZiAoY29ubmVjdG9yX3N0 YXRlLT5jcnRjKSB7Cj4gKyBpZHggPSBkcm1fY3J0Y19pbmRleChjb25uZWN0b3Jfc3RhdGUtPmNy dGMpOwo+ICsKPiArIGNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0ZXNbaWR4XTsKPiArIGNy dGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gKyB9Cj4gKyB9Cj4gKwo+ICsgaWYgKCFj b25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKPiArIERSTV9ERUJVR19LTVMoIkRpc2FibGluZyBbQ09O TkVDVE9SOiVkOiVzXVxuIiwKPiArIGNvbm5lY3Rvci0+YmFzZS5pZCwKPiArIGNvbm5lY3Rvci0+ bmFtZSk7Cj4gKwo+ICsgY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBOVUxMOwo+ICsK PiArIHJldHVybiAwOwo+ICsgfQo+ICsKPiArIGZ1bmNzID0gY29ubmVjdG9yLT5oZWxwZXJfcHJp dmF0ZTsKPiArIG5ld19lbmNvZGVyID0gZnVuY3MtPmJlc3RfZW5jb2Rlcihjb25uZWN0b3IpOwo+ ICsKPiArIGlmICghbmV3X2VuY29kZXIpIHsKPiArIERSTV9ERUJVR19LTVMoIk5vIHN1aXRhYmxl IGVuY29kZXIgZm91bmQgZm9yIFtDT05ORUNUT1I6JWQ6JXNdXG4iLAo+ICsgICAgICBjb25uZWN0 b3ItPmJhc2UuaWQsCj4gKyAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4gKyByZXR1cm4gLUVJTlZB TDsKPiArIH0KPiArCj4gKyBpZiAobmV3X2VuY29kZXIgIT0gY29ubmVjdG9yX3N0YXRlLT5iZXN0 X2VuY29kZXIpIHsKCm5pdDogSWYgeW91IGp1c3QgcmV0dXJuZWQgZWFybHkgd2hlbiB0aGUgZW5j b2RlciBkb2Vzbid0IGNoYW5nZSwgeW91IGNhbiBzYXZlCmluZGVudGF0aW9uIGFuZCBsaW5lIGJy ZWFrcy4KCj4gKyBzdHJ1Y3QgZHJtX2NydGMgKmVuY29kZXJfY3J0YzsKPiArCj4gKyBlbmNvZGVy X2NydGMgPSBnZXRfY3VycmVudF9jcnRjX2Zvcl9lbmNvZGVyKHN0YXRlLT5kZXYsCj4gKyAgICBu ZXdfZW5jb2Rlcik7Cj4gKwo+ICsgaWYgKGVuY29kZXJfY3J0Yykgewo+ICsgcmV0ID0gc3RlYWxf ZW5jb2RlcihzdGF0ZSwgbmV3X2VuY29kZXIsIGVuY29kZXJfY3J0Yyk7Cj4gKyBpZiAocmV0KSB7 Cj4gKyBEUk1fREVCVUdfS01TKCJFbmNvZGVyIHN0ZWFsaW5nIGZhaWxlZCBmb3IgW0NPTk5FQ1RP UjolZDolc11cbiIsCj4gKyAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwKPiArICAgICAgY29ubmVj dG9yLT5uYW1lKTsKPiArIHJldHVybiByZXQ7Cj4gKyB9Cj4gKyB9Cj4gKwo+ICsgY29ubmVjdG9y X3N0YXRlLT5iZXN0X2VuY29kZXIgPSBuZXdfZW5jb2RlcjsKPiArIGlkeCA9IGRybV9jcnRjX2lu ZGV4KGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yyk7Cj4gKwo+ICsgY3J0Y19zdGF0ZSA9IHN0YXRlLT5j cnRjX3N0YXRlc1tpZHhdOwo+ICsgY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAr IH0KPiArCj4gKyBEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSB1c2luZyBbRU5DT0RF UjolZDolc10gb24gW0NSVEM6JWRdXG4iLAo+ICsgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsCj4g KyAgICAgIGNvbm5lY3Rvci0+bmFtZSwKPiArICAgICAgbmV3X2VuY29kZXItPmJhc2UuaWQsCj4g KyAgICAgIG5ld19lbmNvZGVyLT5uYW1lLAo+ICsgICAgICBjb25uZWN0b3Jfc3RhdGUtPmNydGMt PmJhc2UuaWQpOwo+ICsKPiArIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK21v ZGVfZml4dXAoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKyBpbnQgbmNy dGNzID0gc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2NydGM7Cj4gKyBpbnQgbmNvbm5lY3Rv cnMgPSBzdGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwo+ICsgc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7Cj4gKyBpbnQgaTsKPiArIGJvb2wgcmV0Owo+ICsKPiArIGZvciAoaSA9IDA7 IGkgPCBuY3J0Y3M7IGkrKykgewo+ICsgY3J0Y19zdGF0ZSA9IHN0YXRlLT5jcnRjX3N0YXRlc1tp XTsKPiArCj4gKyBpZiAoIWNydGNfc3RhdGUgfHwgIWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCkK PiArIGNvbnRpbnVlOwo+ICsKPiArIGRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmFkanVzdGVk X21vZGUsICZjcnRjX3N0YXRlLT5tb2RlKTsKPiArIH0KPiArCj4gKyBmb3IgKGkgPSAwOyBpIDwg bmNvbm5lY3RvcnM7IGkrKykgewo+ICsgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAq ZnVuY3M7Cj4gKyBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gKwo+ICsgY29ubl9zdGF0 ZSA9IHN0YXRlLT5jb25uZWN0b3Jfc3RhdGVzW2ldOwo+ICsKPiArIGlmICghY29ubl9zdGF0ZSkK PiArIGNvbnRpbnVlOwo+ICsKPiArIFdBUk5fT04oISFjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIg IT0gISFjb25uX3N0YXRlLT5jcnRjKTsKPiArCj4gKyBpZiAoIWNvbm5fc3RhdGUtPmNydGMgfHwg IWNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcikKPiArIGNvbnRpbnVlOwo+ICsKPiArIGNydGNfc3Rh dGUgPQo+ICsgc3RhdGUtPmNydGNfc3RhdGVzW2RybV9jcnRjX2luZGV4KGNvbm5fc3RhdGUtPmNy dGMpXTsKPiArCj4gKyAvKgo+ICsgKiBFYWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5l Y3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0ZWFsCj4gKyAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBj YWxsIC0+bW9kZV9maXh1cCB0d2ljZS4KPiArICovCj4gKyBlbmNvZGVyID0gY29ubl9zdGF0ZS0+ YmVzdF9lbmNvZGVyOwo+ICsgZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKPiArCj4g KyBpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfZml4 dXApIHsKPiArIHJldCA9IGVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfZml4dXAoCj4gKyBl bmNvZGVyLT5icmlkZ2UsICZjcnRjX3N0YXRlLT5tb2RlLAo+ICsgJmNydGNfc3RhdGUtPmFkanVz dGVkX21vZGUpOwo+ICsgaWYgKCFyZXQpIHsKPiArIERSTV9ERUJVR19LTVMoIkJyaWRnZSBmaXh1 cCBmYWlsZWRcbiIpOwo+ICsgcmV0dXJuIC1FSU5WQUw7Cj4gKyB9Cj4gKyB9Cj4gKwo+ICsKPiAr IHJldCA9IGZ1bmNzLT5tb2RlX2ZpeHVwKGVuY29kZXIsICZjcnRjX3N0YXRlLT5tb2RlLAo+ICsg JmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwo+ICsgaWYgKCFyZXQpIHsKPiArIERSTV9ERUJV R19LTVMoIltFTkNPREVSOiVkOiVzXSBmaXh1cCBmYWlsZWRcbiIsCj4gKyAgICAgIGVuY29kZXIt PmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwo+ICsgcmV0dXJuIC1FSU5WQUw7Cj4gKyB9Cj4gKyB9 Cj4gKwo+ICsgZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7Cj4gKyBzdHJ1Y3QgZHJtX2Ny dGNfaGVscGVyX2Z1bmNzICpmdW5jczsKPiArIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCj4g KyBjcnRjX3N0YXRlID0gc3RhdGUtPmNydGNfc3RhdGVzW2ldOwo+ICsgY3J0YyA9IHN0YXRlLT5j cnRjc1tpXTsKPiArCj4gKyBpZiAoIWNydGNfc3RhdGUgfHwgIWNydGNfc3RhdGUtPm1vZGVfY2hh bmdlZCkKPiArIGNvbnRpbnVlOwo+ICsKPiArIGZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7 Cj4gKyByZXQgPSBmdW5jcy0+bW9kZV9maXh1cChjcnRjLCAmY3J0Y19zdGF0ZS0+bW9kZSwKPiAr ICZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlKTsKPiArIGlmICghcmV0KSB7Cj4gKyBEUk1fREVC VUdfS01TKCJbQ1JUQzolZF0gZml4dXAgZmFpbGVkXG4iLAo+ICsgICAgICBjcnRjLT5iYXNlLmlk KTsKPiArIHJldHVybiAtRUlOVkFMOwo+ICsgfQo+ICsgfQo+ICsKPiArIHJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2RybV9hdG9taWNfaGVscGVyX2NoZWNrX3ByZXBhcmUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiArIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiArewo+ICsgaW50IG5jcnRjcyA9IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7Cj4gKyBpbnQg bmNvbm5lY3RvcnMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3I7Cj4gKyBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7Cj4gKyBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4g KyBpbnQgaSwgcmV0Owo+ICsKPiArIGZvciAoaSA9IDA7IGkgPCBuY3J0Y3M7IGkrKykgewo+ICsg Y3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsKPiArIGNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0 ZXNbaV07Cj4gKwo+ICsgaWYgKCFjcnRjKQo+ICsgY29udGludWU7Cj4gKwo+ICsgaWYgKCFkcm1f bW9kZV9lcXVhbCgmY3J0Yy0+c3RhdGUtPm1vZGUsICZjcnRjX3N0YXRlLT5tb2RlKSkgewo+ICsg RFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIG1vZGUgY2hhbmdlZFxuIiwKPiArICAgICAgY3J0Yy0+ YmFzZS5pZCk7Cj4gKyBjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ICsgfQo+ICsK PiArIGlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlICE9IGNydGNfc3RhdGUtPmVuYWJsZSkgewo+ICsg RFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIHN0YXRlIGNoYW5nZWRcbiIsCgpuaXQ6IHMvc3RhdGUv ZW5hYmxlLwoKPiArICAgICAgY3J0Yy0+YmFzZS5pZCk7Cj4gKyBjcnRjX3N0YXRlLT5tb2RlX2No YW5nZWQgPSB0cnVlOwo+ICsgfQo+ICsgfQo+ICsKPiArIGZvciAoaSA9IDA7IGkgPCBuY29ubmVj dG9yczsgaSsrKSB7Cj4gKyAvKgo+ICsgKiBUaGlzIG9ubHkgc2V0cyBjcnRjLT5tb2RlX2NoYW5n ZWQgZm9yIHJvdXRpbmcgY2hhbmdlcywKPiArICogZHJpdmVycyBtdXN0IHNldCBjcnRjLT5tb2Rl X2NoYW5nZWQgdGhlbXNlbHZlcyB3aGVuIGNvbm5lY3Rvcgo+ICsgKiBwcm9wZXJ0aWVzIG5lZWQg dG8gYmUgdXBkYXRlZC4KPiArICovCj4gKyByZXQgPSB1cGRhdGVfY29ubmVjdG9yX3JvdXRpbmco c3RhdGUsIGkpOwo+ICsgaWYgKHJldCkKPiArIHJldHVybiByZXQ7Cj4gKyB9Cj4gKwo+ICsgLyoK PiArICogQWZ0ZXIgYWxsIHRoZSByb3V0aW5nIGhhcyBiZWVuIHByZXBhcmVkIHdlIG5lZWQgdG8g YWRkIGluIGFueQo+ICsgKiBjb25uZWN0b3Igd2hpY2ggaXMgaXRzZWxmIHVuY2hhbmdlZCwgYnV0 IHdobydzIGNydGMgY2hhbmdlcyBpdCdzCj4gKyAqIGNvbmZpZ3VyYXRpb24uIFRoaXMgbXVzdCBi ZSBkb25lIGJlZm9yZSBjYWxsaW5nIG1vZGVfZml4dXAgaW4gY2FzZSBhCj4gKyAqIGNydGMgb25s eSBjaGFuZ2VkIGl0cyBtb2RlIGJ1dCBoYXMgdGhlIHNhbWUgc2V0IG9mIGNvbm5lY3RvcnMuCj4g KyAqLwo+ICsgZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7Cj4gKwo+ICsgY3J0YyA9IHN0 YXRlLT5jcnRjc1tpXTsKPiArIGNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV07Cj4g Kwo+ICsgaWYgKCFjcnRjKQo+ICsgY29udGludWU7Cj4gKwo+ICsgaWYgKGNydGNfc3RhdGUtPm1v ZGVfY2hhbmdlZCkgewoKbml0OiBGbGlwcGluZyB0aGlzIGNoZWNrIGFuZCBtb3ZpbmcgaXQgdXAg aW50byB0aGUgIWNydGMgaWYgYWJvdmUgc2F2ZXMgYSBiaXQgb2YKaW5kZW50YXRpb24KCj4gKyBi b29sIGhhc19jb25uZWN0b3JzOwo+ICsKPiArIERSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBuZWVk cyBmdWxsIG1vZGVzZXQsIGVuYWJsZTogJWNcbiIsCj4gKyAgICAgIGNydGMtPmJhc2UuaWQsCj4g KyAgICAgIGNydGNfc3RhdGUtPmVuYWJsZSA/ICd5JyA6ICduJyk7Cj4gKwo+ICsgcmV0ID0gZHJt X2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhzdGF0ZSwgY3J0Yyk7Cj4gKyBpZiAocmV0 IDwgMCkKCkkgdGhpbmsgaWYgKHJldCAhPSAwKSBpcyBtb3JlIGFwcHJvcHJpYXRlIGhlcmUKCj4g KyByZXR1cm4gcmV0Owo+ICsKPiArIGhhc19jb25uZWN0b3JzID0gZHJtX2F0b21pY19jb25uZWN0 b3JzX2Zvcl9jcnRjKHN0YXRlLAo+ICsgY3J0Yyk7Cj4gKwo+ICsgaWYgKGNydGNfc3RhdGUtPmVu YWJsZSAhPSBoYXNfY29ubmVjdG9ycykgewoKVGhpcyBtYWtlcyBtZSBhIGxpdHRsZSBuZXJ2b3Vz LiBFdmVuIHRob3VnaCBoYXNfY29ubmVjdG9ycyBpcyBhIGJvb2wsCmRybV9hdG9taWNfY29ubmVj dG9yc19mb3JfY3J0YyByZXR1cm5zIGFuIGludCwgYW5kIHRoaXMgc2VlbXMgbGlrZSBzb21ldGhp bmcKdGhhdCBzb21lb25lIG1pZ2h0ICJmaXgiIGluIHRoZSBmdXR1cmUuCgpbUEFUQ0hdIGRybS9h dG9taWM6IFVzZSBwcm9wZXIgdHlwZSBmb3IgZHJtX2F0b21pY19jb25uZWN0b3JzX2Zvcl9jcnRj CgoKPiArIERSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBlbmFibGVkL2Nvbm5lY3RvcnMgbWlzbWF0 Y2hcbiIsCj4gKyAgICAgIGNydGMtPmJhc2UuaWQpOwo+ICsKPiArIHJldHVybiAtRUlOVkFMOwo+ ICsgfQo+ICsgfQo+ICsgfQo+ICsKPiArIHJldHVybiBtb2RlX2ZpeHVwKHN0YXRlKTsKPiArfQo+ ICsKPiAgLyoqCj4gICAqIGRybV9hdG9taWNfaGVscGVyX2NoZWNrIC0gdmFsaWRhdGUgc3RhdGUg b2JqZWN0Cj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiBAQCAtNzgsNiArNDAwLDEwIEBAIGludCBk cm1fYXRvbWljX2hlbHBlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgaW50IG5j cnRjcyA9IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7Cj4gICBpbnQgaSwgcmV0ID0gMDsKPgo+ ICsgcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcHJlcGFyZShkZXYsIHN0YXRlKTsKPiAr IGlmIChyZXQpCj4gKyByZXR1cm4gcmV0Owo+ICsKPiAgIGZvciAoaSA9IDA7IGkgPCBucGxhbmVz OyBpKyspIHsKPiAgIHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKPiAgIHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gc3RhdGUtPnBsYW5lc1tpXTsKPiBAQCAtMTI1LDYgKzQ1 MSwzNzIgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVjayk7Cj4KPiAr c3RhdGljIHZvaWQKPiArZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gK3sKPiArIGludCBuY3J0Y3MgPSBv bGRfc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2NydGM7Cj4gKyBpbnQgbmNvbm5lY3RvcnMg PSBvbGRfc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3RvcjsKPiArIGludCBpOwo+ ICsKPiArIGZvciAoaSA9IDA7IGkgPCBuY29ubmVjdG9yczsgaSsrKSB7Cj4gKyBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7Cj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yOwo+ICsgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7 Cj4gKyBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gKwo+ICsgb2xkX2Nvbm5fc3RhdGUg PSBvbGRfc3RhdGUtPmNvbm5lY3Rvcl9zdGF0ZXNbaV07Cj4gKyBjb25uZWN0b3IgPSBvbGRfc3Rh dGUtPmNvbm5lY3RvcnNbaV07Cj4gKwo+ICsgLyogU2h1dCBkb3duIGV2ZXJ5dGhpbmcgdGhhdCdz IGluIHRoZSBjaGFuZ2VzZXQgYW5kIGN1cnJlbnRseQo+ICsgKiBzdGlsbCBvbi4gU28gbmVlZCB0 byBjaGVjayB0aGUgb2xkLCBzYXZlZCBzdGF0ZS4gKi8KPiArIGlmICghb2xkX2Nvbm5fc3RhdGUg fHwgIW9sZF9jb25uX3N0YXRlLT5jcnRjKQo+ICsgY29udGludWU7Cj4gKwo+ICsgZW5jb2RlciA9 IGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcjsKPiArCj4gKyBpZiAoIWVuY29kZXIpCj4g KyBjb250aW51ZTsKPiArCj4gKyBmdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwo+ICsK PiArIC8qCj4gKyAqIEVhY2ggZW5jb2RlciBoYXMgYXQgbW9zdCBvbmUgY29ubmVjdG9yIChzaW5j ZSB3ZSBhbHdheXMgc3RlYWwKPiArICogaXQgYXdheSksIHNvIHdlIHdvbid0IGNhbGwgY2FsbCBk aXNhYmxlIGhvb2tzIHR3aWNlLgo+ICsgKi8KPiArIGlmIChlbmNvZGVyLT5icmlkZ2UpCj4gKyBl bmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7Cj4gKwo+ICsg LyogUmlnaHQgZnVuY3Rpb24gZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KPiArIGlmIChj b25uZWN0b3ItPnN0YXRlLT5jcnRjKQo+ICsgZnVuY3MtPnByZXBhcmUoZW5jb2Rlcik7Cj4gKyBl bHNlIGlmIChmdW5jcy0+ZGlzYWJsZSkKPiArIGZ1bmNzLT5kaXNhYmxlKGVuY29kZXIpOwo+ICsg ZWxzZQo+ICsgZnVuY3MtPmRwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PRkYpOwo+ICsKPiAr IGlmIChlbmNvZGVyLT5icmlkZ2UpCj4gKyBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5wb3N0X2Rp c2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArIH0KPiArCj4gKyBmb3IgKGkgPSAwOyBpIDwgbmNy dGNzOyBpKyspIHsKPiArIHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ICsg c3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsKPiArIGNydGMgPSBvbGRfc3RhdGUtPmNydGNzW2ld Owo+ICsKPiArIC8qIFNodXQgZG93biBldmVyeXRoaW5nIHRoYXQgbmVlZHMgYSBmdWxsIG1vZGVz ZXQuICovCj4gKyBpZiAoIWNydGMgfHwgIWNydGMtPnN0YXRlLT5tb2RlX2NoYW5nZWQpCj4gKyBj b250aW51ZTsKPiArCj4gKyBmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+ICsKPiArIC8q IFJpZ2h0IGZ1bmN0aW9uIGRlcGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCj4gKyBpZiAoY3J0 Yy0+c3RhdGUtPmVuYWJsZSkKPiArIGZ1bmNzLT5wcmVwYXJlKGNydGMpOwo+ICsgZWxzZSBpZiAo ZnVuY3MtPmRpc2FibGUpCj4gKyBmdW5jcy0+ZGlzYWJsZShjcnRjKTsKPiArIGVsc2UKPiArIGZ1 bmNzLT5kcG1zKGNydGMsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiArIH0KPiArfQo+ICsKPiArc3Rh dGljIHZvaWQKPiArc2V0X3JvdXRpbmdfbGlua3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiArewo+ICsgaW50IG5jb25uZWN0b3Jz ID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwo+ICsgaW50IG5jcnRjcyA9IG9sZF9z dGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsKPiArIGludCBpOwo+ICsKPiArIC8qIGNs ZWFyIG91dCBleGlzdGluZyBsaW5rcyAqLwo+ICsgZm9yIChpID0gMDsgaSA8IG5jb25uZWN0b3Jz OyBpKyspIHsKPiArIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwo+ICsgY29u bmVjdG9yID0gb2xkX3N0YXRlLT5jb25uZWN0b3JzW2ldOwo+ICsKPiArIGlmICghY29ubmVjdG9y IHx8ICFjb25uZWN0b3ItPmVuY29kZXIpCj4gKyBjb250aW51ZTsKPiArCj4gKyBXQVJOX09OKCFj b25uZWN0b3ItPmVuY29kZXItPmNydGMpOwo+ICsKPiArIGNvbm5lY3Rvci0+ZW5jb2Rlci0+Y3J0 YyA9IE5VTEw7Cj4gKyBjb25uZWN0b3ItPmVuY29kZXIgPSBOVUxMOwo+ICsgfQo+ICsKPiArIC8q IHNldCBuZXcgbGlua3MgKi8KPiArIGZvciAoaSA9IDA7IGkgPCBuY29ubmVjdG9yczsgaSsrKSB7 Cj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsKPiArIGNvbm5lY3RvciA9 IG9sZF9zdGF0ZS0+Y29ubmVjdG9yc1tpXTsKPiArCj4gKyBpZiAoIWNvbm5lY3RvciB8fCAhY29u bmVjdG9yLT5zdGF0ZS0+Y3J0YykKPiArIGNvbnRpbnVlOwo+ICsKPiArIGlmIChXQVJOX09OKCFj b25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIpKQo+ICsgY29udGludWU7Cj4gKwo+ICsgY29u bmVjdG9yLT5lbmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ICsgY29u bmVjdG9yLT5lbmNvZGVyLT5jcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPiArIH0KPiAr Cj4gKyAvKiBzZXQgbGVnYWN5IHN0YXRlIGluIHRoZSBjcnRjIHN0cnVjdHVyZSAqLwo+ICsgZm9y IChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7Cj4gKyBzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4g Kwo+ICsgY3J0YyA9IG9sZF9zdGF0ZS0+Y3J0Y3NbaV07Cj4gKwo+ICsgaWYgKCFjcnRjKQo+ICsg Y29udGludWU7Cj4gKwo+ICsgY3J0Yy0+bW9kZSA9IGNydGMtPnN0YXRlLT5tb2RlOwo+ICsgY3J0 Yy0+ZW5hYmxlZCA9IGNydGMtPnN0YXRlLT5lbmFibGU7Cj4gKyBjcnRjLT54ID0gY3J0Yy0+cHJp bWFyeS0+c3RhdGUtPnNyY194ID4+IDE2Owo+ICsgY3J0Yy0+eSA9IGNydGMtPnByaW1hcnktPnN0 YXRlLT5zcmNfeSA+PiAxNjsKPiArIH0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArY3J0Y19z ZXRfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq b2xkX3N0YXRlKQo+ICt7Cj4gKyBpbnQgbmNydGNzID0gb2xkX3N0YXRlLT5kZXYtPm1vZGVfY29u ZmlnLm51bV9jcnRjOwo+ICsgaW50IG5jb25uZWN0b3JzID0gb2xkX3N0YXRlLT5kZXYtPm1vZGVf Y29uZmlnLm51bV9jb25uZWN0b3I7Cj4gKyBpbnQgaTsKPiArCj4gKyBmb3IgKGkgPSAwOyBpIDwg bmNydGNzOyBpKyspIHsKPiArIHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ ICsgc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsKPiArIGNydGMgPSBvbGRfc3RhdGUtPmNydGNz W2ldOwo+ICsKPiArIGlmICghY3J0YyB8fCAhY3J0Yy0+c3RhdGUtPm1vZGVfY2hhbmdlZCkKPiAr IGNvbnRpbnVlOwo+ICsKPiArIGZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gKwo+ICsg aWYgKGNydGMtPnN0YXRlLT5lbmFibGUpCj4gKyBmdW5jcy0+bW9kZV9zZXRfbm9mYihjcnRjKTsK PiArIH0KPiArCj4gKyBmb3IgKGkgPSAwOyBpIDwgbmNvbm5lY3RvcnM7IGkrKykgewo+ICsgc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGU7Cj4gKyBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICpmdW5j czsKPiArIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlLCAqYWRqdXN0ZWRfbW9kZTsKPiArCj4gKyBjb25uZWN0b3IgPSBvbGRfc3Rh dGUtPmNvbm5lY3RvcnNbaV07Cj4gKwo+ICsgaWYgKCFjb25uZWN0b3IgfHwgIWNvbm5lY3Rvci0+ c3RhdGUtPmJlc3RfZW5jb2RlcikKPiArIGNvbnRpbnVlOwo+ICsKPiArIGVuY29kZXIgPSBjb25u ZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7Cj4gKyBmdW5jcyA9IGVuY29kZXItPmhlbHBlcl9w cml2YXRlOwo+ICsgbmV3X2NydGNfc3RhdGUgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5zdGF0 ZTsKPiArIG1vZGUgPSAmbmV3X2NydGNfc3RhdGUtPm1vZGU7Cj4gKyBhZGp1c3RlZF9tb2RlID0g Jm5ld19jcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlOwo+ICsKPiArIC8qCj4gKyAqIEVhY2ggZW5j b2RlciBoYXMgYXQgbW9zdCBvbmUgY29ubmVjdG9yIChzaW5jZSB3ZSBhbHdheXMgc3RlYWwKPiAr ICogaXQgYXdheSksIHNvIHdlIHdvbid0IGNhbGwgY2FsbCBtb2RlX3NldCBob29rcyB0d2ljZS4K PiArICovCj4gKyBmdW5jcy0+bW9kZV9zZXQoZW5jb2RlciwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7 Cj4gKwo+ICsgaWYgKGVuY29kZXItPmJyaWRnZSAmJiBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5t b2RlX3NldCkKPiArIGVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPm1vZGVfc2V0KGVuY29kZXItPmJy aWRnZSwKPiArIG1vZGUsIGFkanVzdGVkX21vZGUpOwo+ICsgfQo+ICt9Cj4gKwo+ICsvKioKPiAr ICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3ByZV9wbGFuZXMgLSBtb2Rlc2V0IGNvbW1pdCBi ZWZvcmUgcGxhbmUgdXBkYXRlcwo+ICsgKiBAZGV2OiBEUk0gZGV2aWNlCj4gKyAqIEBzdGF0ZTog YXRvbWljIHN0YXRlCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY29tbWl0cyB0aGUgbW9kZXNl dCBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSBjb21taXR0ZWQgYmVmb3JlCj4gKyAqIHVwZGF0aW5n IHBsYW5lcy4gSXQgc2h1dHMgZG93biBhbGwgdGhlIG91dHB1dHMgdGhhdCBuZWVkIHRvIGJlIHNo dXQgZG93biBhbmQKPiArICogcHJlcGFyZXMgdGhlbSAoaWYgcmVxdXJpZWQpIHdpdGggdGhlIG5l dyBtb2RlLgoKcy9yZXF1cmllZC9yZXF1aXJlZC8KCj4gKyAqLwo+ICt2b2lkIGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9wcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKyBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArIGRpc2FibGVfb3V0cHV0cyhkZXYs IHN0YXRlKTsKPiArIHNldF9yb3V0aW5nX2xpbmtzKGRldiwgc3RhdGUpOwo+ICsgY3J0Y19zZXRf bW9kZShkZXYsIHN0YXRlKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9wcmVfcGxhbmVzKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfcG9zdF9wbGFuZXMgLSBtb2Rlc2V0IGNvbW1pdCBhZnRlciBwbGFuZSB1cGRhdGVzCj4g KyAqIEBkZXY6IERSTSBkZXZpY2UKPiArICogQG9sZF9zdGF0ZTogYXRvbWljIHN0YXRlIG9iamVj dCB3aXRoIG9sZCBzdGF0ZSBzdHJ1Y3R1cmVzCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY29t bWl0cyB0aGUgbW9kZXNldCBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSBjb21taXR0ZWQgYWZ0ZXIK PiArICogdXBkYXRpbmcgcGxhbmVzOiBJdCBlbmFibGVzIGFsbCB0aGUgb3V0cHV0cyB3aXRoIHRo ZSBuZXcgY29uZmlndXJhdGlvbiB3aGljaAo+ICsgKiBoYWQgdG8gYmUgdHVybmVkIG9mZiBmb3Ig dGhlIHVwZGF0ZS4KPiArICovCj4gK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3Bvc3Rf cGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKyAgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKm9sZF9zdGF0ZSkKPiArewo+ICsgaW50IG5jcnRjcyA9IG9sZF9zdGF0ZS0+ZGV2LT5tb2Rl X2NvbmZpZy5udW1fY3J0YzsKPiArIGludCBuY29ubmVjdG9ycyA9IG9sZF9zdGF0ZS0+ZGV2LT5t b2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwo+ICsgaW50IGk7Cj4gKwo+ICsgZm9yIChpID0gMDsg aSA8IG5jcnRjczsgaSsrKSB7Cj4gKyBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5j czsKPiArIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCj4gKyBjcnRjID0gb2xkX3N0YXRlLT5j cnRjc1tpXTsKPiArCj4gKyAvKiBOZWVkIHRvIGZpbHRlciBvdXQgQ1JUQ3Mgd2hlcmUgb25seSBw bGFuZXMgY2hhbmdlLiAqLwo+ICsgaWYgKCFjcnRjIHx8ICFjcnRjLT5zdGF0ZS0+bW9kZV9jaGFu Z2VkKQo+ICsgY29udGludWU7Cj4gKwo+ICsgZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0ZTsK PiArCj4gKyBpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkKPiArIGZ1bmNzLT5jb21taXQoY3J0Yyk7 Cj4gKyB9Cj4gKwo+ICsgZm9yIChpID0gMDsgaSA8IG5jb25uZWN0b3JzOyBpKyspIHsKPiArIHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKyBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzICpmdW5jczsKPiArIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCj4g KyBjb25uZWN0b3IgPSBvbGRfc3RhdGUtPmNvbm5lY3RvcnNbaV07Cj4gKwo+ICsgaWYgKCFjb25u ZWN0b3IgfHwgIWNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcikKPiArIGNvbnRpbnVlOwo+ ICsKPiArIGVuY29kZXIgPSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7Cj4gKyBmdW5j cyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwo+ICsKPiArIC8qCj4gKyAqIEVhY2ggZW5jb2Rl ciBoYXMgYXQgbW9zdCBvbmUgY29ubmVjdG9yIChzaW5jZSB3ZSBhbHdheXMgc3RlYWwKPiArICog aXQgYXdheSksIHNvIHdlIHdvbid0IGNhbGwgY2FsbCBlbmFibGUgaG9va3MgdHdpY2UuCj4gKyAq Lwo+ICsgaWYgKGVuY29kZXItPmJyaWRnZSkKPiArIGVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPnBy ZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArCj4gKyBmdW5jcy0+Y29tbWl0KGVuY29kZXIp Owo+ICsKPiArIGlmIChlbmNvZGVyLT5icmlkZ2UpCj4gKyBlbmNvZGVyLT5icmlkZ2UtPmZ1bmNz LT5lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiArIH0KPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF9wb3N0X3BsYW5lcyk7Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ ICt3YWl0X2Zvcl92YmxhbmtzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpvbGRfc3RhdGUpCj4gK3sKPiArIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAr IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gKyBpbnQgbmNydGNzID0g b2xkX3N0YXRlLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOwo+ICsgaW50IGksIHJldDsKPiAr Cj4gKyBmb3IgKGkgPSAwOyBpIDwgbmNydGNzOyBpKyspIHsKPiArIGNydGMgPSBvbGRfc3RhdGUt PmNydGNzW2ldOwo+ICsgb2xkX2NydGNfc3RhdGUgPSBvbGRfc3RhdGUtPmNydGNfc3RhdGVzW2ld Owo+ICsKPiArIGlmICghY3J0YykKPiArIGNvbnRpbnVlOwo+ICsKPiArIC8qIE5vIG9uZSBjYXJl cyBhYm91dCB0aGUgb2xkIHN0YXRlLCBzbyBhYnVzZSBpdCBmb3IgdHJhY2tpbmcKPiArICogYW5k IHN0b3JlIHdoZXRoZXIgd2UgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgKGFuZCBzaG91bGQgZG8g YQo+ICsgKiB2Ymxhbmsgd2FpdCkgaW4gdGhlIC0+ZW5hYmxlIGJvb2xlYW4uICovCj4gKyBvbGRf Y3J0Y19zdGF0ZS0+ZW5hYmxlID0gZmFsc2U7Cj4gKwo+ICsgaWYgKCFjcnRjLT5zdGF0ZS0+ZW5h YmxlKQo+ICsgY29udGludWU7Cj4gKwo+ICsgcmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRj KTsKPiArIGlmIChyZXQgIT0gMCkKPiArIGNvbnRpbnVlOwo+ICsKPiArIG9sZF9jcnRjX3N0YXRl LT5lbmFibGUgPSB0cnVlOwo+ICsgb2xkX2NydGNfc3RhdGUtPmxhc3RfdmJsYW5rX2NvdW50ID0g ZHJtX3ZibGFua19jb3VudChkZXYsIGkpOwoKSSB0aGluayB5b3Ugc2hvdWxkIGNvbGxlY3QgbGFz dF92YmxhbmtfY291bnQgYmVmb3JlIGRybV9jcnRjX3ZibGFua19nZXQKCj4gKyB9Cj4gKwo+ICsg Zm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7Cj4gKyBjcnRjID0gb2xkX3N0YXRlLT5jcnRj c1tpXTsKPiArIG9sZF9jcnRjX3N0YXRlID0gb2xkX3N0YXRlLT5jcnRjX3N0YXRlc1tpXTsKPiAr Cj4gKyBpZiAoIWNydGMgfHwgIW9sZF9jcnRjX3N0YXRlLT5lbmFibGUpCj4gKyBjb250aW51ZTsK PiArCj4gKyByZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoZGV2LT52YmxhbmtbaV0ucXVldWUsCj4g KyBvbGRfY3J0Y19zdGF0ZS0+bGFzdF92YmxhbmtfY291bnQgIT0KPiArIGRybV92YmxhbmtfY291 bnQoZGV2LCBpKSwKPiArIG1zZWNzX3RvX2ppZmZpZXMoNTApKTsKPiArCj4gKyBkcm1fY3J0Y192 YmxhbmtfcHV0KGNydGMpOwo+ICsgfQo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19o ZWxwZXJfY29tbWl0IC0gY29tbWl0IHZhbGlkYXRlZCBzdGF0ZSBvYmplY3QKPiArICogQGRldjog RFJNIGRldmljZQo+ICsgKiBAc3RhdGU6IHRoZSBkcml2ZXIgc3RhdGUgb2JqZWN0Cj4gKyAqIEBh c3luYzogYXN5bmNocm9ub3VzIGNvbW1pdAo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGNvbW1p dHMgYSB3aXRoIGRybV9hdG9taWNfaGVscGVyX2NoZWNrKCkgcHJlLXZhbGlkYXRlZCBzdGF0ZQo+ ICsgKiBvYmplY3QuIFRoaXMgY2FuIHN0aWxsIGZhaWwgd2hlbiBlLmcuIHRoZSBmcmFtZWJ1ZmZl ciByZXNlcnZhdGlvbiBmYWlscy4gRm9yCj4gKyAqIG5vdyB0aGlzIGRvZXNuJ3QgaW1wbGVtZW50 IGFzeW5jaHJvbm91cyBjb21taXRzLgo+ICsgKgo+ICsgKiBSRVRVUk5TCj4gKyAqIFplcm8gZm9y IHN1Y2Nlc3Mgb3IgLWVycm5vLgo+ICsgKi8KPiAraW50IGRybV9hdG9taWNfaGVscGVyX2NvbW1p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKPiArICAgICBib29sIGFzeW5jKQo+ICt7Cj4gKyBpbnQgcmV0Owo+ICsKPiArIGlm IChhc3luYykKPiArIHJldHVybiAtRUJVU1k7Cj4gKwo+ICsgcmV0ID0gZHJtX2F0b21pY19oZWxw ZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKyBpZiAocmV0KQo+ICsgcmV0dXJuIHJl dDsKPiArCj4gKyAvKgo+ICsgKiBUaGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4gLSBldmVy eXRoaW5nIGJlbG93IG5ldmVyIGZhaWxzIGV4Y2VwdAo+ICsgKiB3aGVuIHRoZSBodyBnb2VzIGJv bmdoaXRzLiBXaGljaCBtZWFucyB3ZSBjYW4gY29tbWl0IHRoZSBuZXcgc3RhdGUgb24KPiArICog dGhlIHNvZnR3YXJlIHNpZGUgbm93Lgo+ICsgKi8KPiArCj4gKyBkcm1fYXRvbWljX2hlbHBlcl9z d2FwX3N0YXRlKGRldiwgc3RhdGUpOwo+ICsKPiArIC8qCj4gKyAqIEV2ZXJ5dGhpbmcgYmVsb3cg Y2FuIGJlIHJ1biBhc3luY2hyb25vdXNseSB3aXRob3UgdGhlIG5lZWQgdG8gZ3JhYgoKcy93aXRo b3Uvd2l0aG91dC8KCj4gKyAqIGFueSBtb2Rlc2V0IGxvY2tzIGF0IGFsbCB1bmRlciBvbmUgY29u ZGl0aW9uczogSXQgbXVzdCBiZSBndWFyYW50ZWVkCj4gKyAqIHRoYXQgdGhlIGFzeW5jaHJvbm91 cyB3b3JrIGhhcyBlaXRoZXIgYmVlbiBjYW5jZWxsZWQgKGlmIHRoZSBkcml2ZXIKPiArICogc3Vw cG9ydHMgaXQsIHdoaWNoIGF0IGxlYXN0IHJlcXVpcmVzIHRoYXQgdGhlIGZyYW1lYnVmZmVycyBn ZXQKPiArICogY2xlYW5lZCB1cCB3aXRoIGRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVz KCkpIG9yIGNvbXBsZXRlZAo+ICsgKiBiZWZvcmUgdGhlIG5ldyBzdGF0ZSBnZXRzIGNvbW1pdHRl ZCBvbiB0aGUgc29mdHdhcmUgc2lkZSB3aXRoCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX3N3YXBf c3RhdGUoKS4KPiArICoKPiArICogVGhpcyBzY2hlbWUgYWxsb3dzIG5ldyBhdG9taWMgc3RhdGUg dXBkYXRlcyB0byBiZSBwcmVwYXJlZCBhbmQKPiArICogY2hlY2tlZCBpbiBwYXJhbGxlbCB0byB0 aGUgYXN5bmNocm9ub3VzIGNvbXBsZXRpb24gb2YgdGhlIHByZXZpb3VzCj4gKyAqIHVwZGF0ZS4g V2hpY2ggaXMgaW1wb3J0YW50IHNpbmNlIGNvbXBvc2l0b3JzIG5lZWQgdG8gZmlndXJlIG91dCB0 aGUKPiArICogY29tcG9zaXRpb24gb2YgdGhlIG5leHQgZnJhbWUgcmlnaHQgYWZ0ZXIgaGF2aW5n IHN1Ym1pdHRlZCB0aGUKPiArICogY3VycmVudCBsYXlvdXQuCj4gKyAqLwo+ICsKPiArIGRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9wcmVfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICsKPiArIGRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKwo+ICsgZHJtX2F0b21p Y19oZWxwZXJfY29tbWl0X3Bvc3RfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICsKPiArIHdhaXRfZm9y X3ZibGFua3MoZGV2LCBzdGF0ZSk7Cj4gKwo+ICsgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9w bGFuZXMoZGV2LCBzdGF0ZSk7Cj4gKwo+ICsgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsK PiArCj4gKyByZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVy X2NvbW1pdCk7Cj4gKwo+ICAvKioKPiAgICogZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFu ZXMgLSBwcmVwYXJlIHBsYW5lIHJlc291cmNlcyBhZnRlciBjb21taXQKPiAgICogQGRldjogRFJN IGRldmljZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBpbmRleCA5NWVjYmIxMzEwNTMu LjQ2NzI4YThhYzYyMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVs cGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBAQCAtOTI3 LDYgKzkyNyw3IEBAIGludCBkcm1faGVscGVyX2NydGNfbW9kZV9zZXQoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kCj4KPiAgIGNydGNfc3RhdGUtPmVu YWJsZSA9IHRydWU7Cj4gICBjcnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdlZCA9IHRydWU7Cj4gKyBj cnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ICAgZHJtX21vZGVfY29weSgmY3J0Y19z dGF0ZS0+bW9kZSwgbW9kZSk7Cj4gICBkcm1fbW9kZV9jb3B5KCZjcnRjX3N0YXRlLT5hZGp1c3Rl ZF9tb2RlLCBhZGp1c3RlZF9tb2RlKTsKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f YXRvbWljX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAo+IGluZGV4 IDc5OTM4YzYyZTdhZC4uOTc4MWNlNzM5ZTEwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5o Cj4gQEAgLTMwLDYgKzMwLDE0IEBACj4KPiAgaW50IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpOwo+ICtpbnQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gKyAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsgICAgIGJvb2wg YXN5bmMpOwo+ICsKPiArdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcHJlX3BsYW5lcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KTsKPiArdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcG9zdF9wbGFuZXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiArICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKTsK Pgo+ICBpbnQgZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+ IGluZGV4IDc3ZmY4OTkyYTNiNy4uZGRmZjI1ZWIzNGQ0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv ZHJtL2RybV9jcnRjLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTIyOSw2 ICsyMjksOSBAQCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKPiAgLyoqCj4gICAqIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAtIG11dGFibGUgY3J0YyBzdGF0ZQo+ICAgKiBAZW5hYmxlOiB3aGV0aGVy IHRoZSBDUlRDIHNob3VsZCBiZSBlbmFibGVkLCBnYXRlcyBhbGwgb3RoZXIgc3RhdGUKPiArICog QG1vZGVfY2hhbmdlZDogZm9yIHVzZSBieSBoZWxwZXJzIGFuZCBkcml2ZXJzIHdoZW4gY29tcHV0 aW5nIHN0YXRlIHVwZGF0ZXMKPiArICogQGxhc3RfdmJsYW5rX2NvdW50OiBmb3IgaGVscGVycyBh bmQgZHJpdmVycyB0byBjYXB0dXJlIHRoZSB2Ymxhbmsgb2YgdGhlCj4gKyAqIHVwZGF0ZSB0byBl bnN1cmUgZnJhbWVidWZmZXIgY2xlYW51cCBpc24ndCBkb25lIHRvbyBlYXJseQo+ICAgKiBAcGxh bmVzX2NoYW5nZWQ6IGZvciB1c2UgYnkgaGVscGVycyBhbmQgZHJpdmVycyB3aGVuIGNvbXB1dGlu ZyBzdGF0ZSB1cGRhdGVzCj4gICAqIEBhZGp1c3RlZF9tb2RlOiBmb3IgdXNlIGJ5IGhlbHBlcnMg YW5kIGRyaXZlcnMgdG8gY29tcHV0ZSBhZGp1c3RlZCBtb2RlIHRpbWluZ3MKPiAgICogQG1vZGU6 IGN1cnJlbnQgbW9kZSB0aW1pbmdzCj4gQEAgLTI0MSw2ICsyNDQsMTAgQEAgc3RydWN0IGRybV9j cnRjX3N0YXRlIHsKPgo+ICAgLyogY29tcHV0ZWQgc3RhdGUgYml0cyB1c2VkIGJ5IGhlbHBlcnMg YW5kIGRyaXZlcnMgKi8KPiAgIGJvb2wgcGxhbmVzX2NoYW5nZWQgOiAxOwo+ICsgYm9vbCBtb2Rl X2NoYW5nZWQgOiAxOwo+ICsKPiArIC8qIGxhc3RfdmJsYW5rX2NvdW50OiBmb3IgdmJsYW5rIHdh aXRzIGJlZm9yZSBjbGVhbnVwICovCj4gKyB1MzIgbGFzdF92YmxhbmtfY291bnQ7Cj4KPiAgIC8q IGFkanVzdGVkX21vZGU6IGZvciB1c2UgYnkgaGVscGVycyBhbmQgZHJpdmVycyAqLwo+ICAgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgYWRqdXN0ZWRfbW9kZTsKPiBAQCAtNDI2LDExICs0MzMsMTQg QEAgc3RydWN0IGRybV9jcnRjIHsKPiAgLyoqCj4gICAqIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlIC0gbXV0YWJsZSBjb25uZWN0b3Igc3RhdGUKPiAgICogQGNydGM6IGNydGMgdG8gY29ubmVj dCBjb25uZWN0b3IgdG8sIE5VTEwgaWYgZGlzYWJsZWQKPiArICogQGJlc3RfZW5jb2RlcjogY2Fu IGJlIHVzZWQgYnkgaGVscGVycyBhbmQgZHJpdmVycyB0byBzZWxlY3QgdGhlIGVuY29kZXIKPiAg ICogQHN0YXRlOiBiYWNrcG9pbnRlciB0byBnbG9iYWwgZHJtX2F0b21pY19zdGF0ZQo+ICAgKi8K PiAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgewo+ICAgc3RydWN0IGRybV9jcnRjICpjcnRj Owo+Cj4gKyBzdHJ1Y3QgZHJtX2VuY29kZXIgKmJlc3RfZW5jb2RlcjsKPiArCj4gICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gIH07Cj4KPiAtLQo+IDIuMS4xCj4KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWls aW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=