From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 10/17] drm: Atomic crtc/connector updates using crtc/plane helper interfaces Date: Sun, 2 Nov 2014 14:19:23 +0100 Message-ID: <1414934370-11924-11-git-send-email-daniel.vetter@ffwll.ch> References: <1414934370-11924-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: In-Reply-To: <1414934370-11924-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development List-Id: dri-devel@lists.freedesktop.org U28gdGhpcyBpcyBmaW5hbGx5IHRoZSBpbnRlZ3JhdGlvbiBvZiB0aGUgY3J0YyBhbmQgcGxhbmUg aGVscGVyCmludGVyZmFjZXMgaW50byB0aGUgYXRvbWljIGhlbHBlciBmdW5jdGlvbnMuCgpJbiB0 aGUgY2hlY2sgZnVuY3Rpb24gd2Ugbm93IGhhdmUgYSBmZXcgc3RlcHM6CgotIEZpcnN0IHdlIHVw ZGF0ZSB0aGUgb3V0cHV0IHJvdXRpbmcgYW5kIGZpZ3VyZSBvdXQgd2hpY2ggY3J0Y3MgbmVlZCBh CiAgZnVsbCBtb2RlIHNldC4gU3VpdGFibGUgZW5jb2RlcnMgYXJlIHNlbGVjdGVkIHVzaW5nIC0+ YmVzdF9lbmNvZGVyLAogIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBjcnRjIGhlbHBl cnMgb2YgaW1wbGljaXRseSBkaXNhYmxpbmcKICBhbGwgY29ubmVjdG9ycyBjdXJyZW50bHkgdXNp bmcgdGhlIGVuY29kZXIuCgotIFRoZW4gd2UgcHVsbCBhbGwgb3RoZXIgY29ubmVjdG9ycyBpbnRv IHRoZSBzdGF0ZSB1cGRhdGUgd2hpY2ggZmVlZAogIGZyb20gYSBjcnRjIHdoaWNoIGNoYW5nZXMu IFRoaXMgbXVzdCBiZSBkb25lIGRvIGNhdGNoIG1vZGUgY2hhbmdlcwogIGFuZCBzaW1pbGFyIHVw ZGF0ZXMgLSBhdG9taWMgdXBkYXRlcyBhcmUgZGlmZmVyZW5jZXMgb24gdG9wIG9mIHRoZQogIGN1 cnJlbnQgc3RhdGUuCgotIFRoZW4gd2UgY2FsbCBhbGwgdGhlIHZhcmlvdXMgLT5tb2RlX2ZpeHVw IHRvIGNvbXB1dGUgdGhlIGFkanVzdGVkCiAgbW9kZS4gTm90ZSB0aGF0IGhlcmUgd2UgaGF2ZSBh IHNsaWdodCBzZW1hbnRpYyBkaWZmZXJlbmNlIGNvbXBhcmVkCiAgdG8gdGhlIGNydGMgaGVscGVy czogV2UgaGF2ZSBub3QgeWV0IHVwZGF0ZWQgdGhlIGVuY29kZXItPmNydGMgbGluawogIHdoZW4g Y2FsbGluZyB0aGUgZW5jb2RlcidzIC0+bW9kZV9maXh1cCBmdW5jdGlvbi4gQnV0IHRoYXQncyBh CiAgcmVxdWlyZW1lbnQgd2hlbiBjb252ZXJ0aW5nIHRvIGF0b21pYyBzaW5jZSB3ZSB3YW50IHRv IHByZXBhcmUgdGhlCiAgZW50aXJlIHN0YXRlIGNvbXBsZXRlbHkgY29udGFpbmVkIHdpdGggdGhl IG92ZXIgZHJtX2F0b21pY19zdGF0ZQogIHN0cnVjdHVyZS4gU28gdGhpcyBtdXN0IGJlIGNhcmVm dWxseSBjaGVja2VkIHdoZW4gY29udmVydGluZyBkcml2ZXJzCiAgb3ZlciB0byBhdG9taWMgaGVs cGVycy4KCi0gRmluYWxseSB3ZSBkbyBjYWxsIHRoZSBhdG9taWNfY2hlY2sgZnVuY3Rpb25zIG9u IHBsYW5lcyBhbmQgY3J0Y3MuCgpUaGUgY29tbWl0IGZ1bmN0aW9uIGlzIGFsc28gcXVpdGUgYSBi ZWFzdDoKCi0gVGhlIG9ubHkgc3RlcCB0aGF0IGNhbiBmYWlsIGlzIGRvbmUgZmlyc3QsIG5hbWVs eSBwaW5uaW5nIHRoZQogIGZyYW1lYnVmZmVycy4gQWZ0ZXIgdGhhdCB3ZSBjcm9zcyB0aGUgcG9p bnQgb2Ygbm8gcmV0dXJuLCBhbiBhc3luYwogIGNvbW1pdCB3b3VsZCBwdXNoIGFsbCB0aGF0IGlu dG8gdGhlIHdvcmtlciB0aHJlYWQuCgotIFRoZSBkaXNhYmxpbmcgb2YgZW5jb2RlcnMgYW5kIGNv bm5lY3RvcnMgaXMgYSBiaXQgdHJpY2t5LCBzaW5jZQogIGRlcGVuZGluZyB1cG9uIHRoZSBmaW5h bCBzdGF0ZSB3ZSBuZWVkIHRvIHNlbGVjdCBkaWZmZXJlbnQgY3J0YwogIGhlbHBlciBmdW5jdGlv bnMuCgotIFNvZnR3YXJlIHRyYWNraW5nIGlzIGEgYml0IGNsYXJpZmllZCBjb21wYXJlZCB0byB0 aGUgY3J0YyBoZWxwZXJzOgogIFdlIGNvbW1pdCB0aGUgc29mdHdhcmUgc3RhdGUgYmVmb3JlIHN0 YXJ0aW5nIHRvIHRvdWNoIHRoZSBoYXJkd2FyZSwKICBsaWtlIGNydGMgaGVscGVycy4gQnV0IHNp bmNlIHdlIGp1c3Qgc3dhcCB0aGVtIHdlIHN0aWxsIGhhdmUgdGhlIG9sZAogIHN0YXRlIChpLmUu IHRoZSBjdXJyZW50IGh3IHN0YXRlKSBhcm91bmQsIHdoaWNoIGlzIHJlYWxseSBoYW5keSB0bwog IHdyaXRlIHNpbXBsZSBkaXNhYmxlIGZ1bmN0aW9ucy4gU28gbm8gbW9yZQogIGRybV9jcnRjX2hl bHBlcl9kaXNhYmxlX2FsbF91bnVzZWRfZnVuY3Rpb25zIGtpbmQgb2YgZnVuIGJlY2F1c2UKICB3 ZSdyZSBsZWF2aW5nIHVudXNlZCBjcnRjcy9lbmNvZGVycyBiZWhpbmQuIEV2ZXJ5dGhpbmcgZ2V0 cyBzaHV0CiAgZG93biBpbi1vcmRlciBub3csIHdoaWNoIGlzIG9uZSBvZiB0aGUga2V5IGRpZmZl cmVuY2VzIG9mIHRoZSBpOTE1CiAgaGVscGVycyBjb21wYXJlZCB0byBjcnRjIGhlbHBlcnMgYW5k IGEgcmVhbGx5IG5pY2UgYWRkaXRpb25hbAogIGd1YXJhbnRlZS4KCi0gTGlrZSB3aXRoIHRoZSBw bGFuZSBoZWxwZXJzIHRoZSBhdG9taWMgY29tbWl0IGZ1bmN0aW9uIHdhaXRzIGZvciBvbmUKICB2 YmxhbmsgdG8gcGFzcyBiZWZvcmUgY2FsbGluZyB0aGUgZnJhbWVidWZmZXIgY2xlYW51cCBmdW5j dGlvbi4KCkNvbXBhcmVkIHRvIFJvYidzIGhlbHBlciBhcHByb2FjaCB0aGVyZSdzIGEgYnVuY2gg b2YgdXBzaWRlczoKCi0gQWxsIHRoZSBpbnRlcmZhY2VzIHdoaWNoIGNhbiBmYWlsIGFyZSBjYWxs ZWQgaW4gdGhlIC0+Y2hlY2sgaG9vawogIChpLmUuIC0+YmVzdF9tYXRjaCBhbmQgdGhlIHZhcmlv dXMgLT5tb2RlX2ZpeHVwIGhvb2tzKS4gVGhpcyBtZWFucwogIHRoYXQgZHJpdmVycyBjYW4ganVz dCByZXVzZSB0aG9zZSBmdW5jdGlvbnMgYW5kIGRvbid0IG5lZWQgdG8gbW92ZQogIGV2ZXJ5dGhp bmcgaW50byAtPmF0b21pY19jaGVjayBjYWxsYmFja3MuIElmIGRyaXZlcnMgaGF2ZSBubyBuZWVk CiAgZm9yIGFkZGl0aW9uYWwgY29uc3RyYWludCBjaGVja2luZyBiZXlvbmcgdGhlaXIgZXhpc3Rp bmcgY3J0YwogIGhlbHBlciBjYWxsYmFja3MgdGhleSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5n LgoKLSBUaGUgYWN0dWFsIGNvbW1pdCBvcGVyYXRpb24gaXMgcHJvcGVybHkgc3RhZ2U6IEZpcnN0 IHdlIHByZXBhcmUKICBmcmFtZWJ1ZmZlcnMsIHdoaWNoIGNhbiBwb3RlbnRpYWxseSBzdGlsbCBm YWlsIChkdWUgdG8gbWVtb3J5CiAgZXhoYXVzdGluZykuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB0 aGUgYXN5bmMgY2FzZSwgd2hlcmUgdGhpcyBtdXN0CiAgYmUgZG9uZSBzeW5jaHJvbm91c2x5IHRv IGNvcnJlY3RseSByZXR1cm4gZXJyb3JzLgoKLSBUaGUgb3V0cHV0IGNvbmZpZ3VyYXRpb24gY2hh bmdlcyAoZG9uZSB3aXRoIGNydGMgaGVscGVyIGZ1bmN0aW9ucykKICBhbmQgdGhlIHBsYW5lIHVw ZGF0ZSAodXNpbmcgYXRvbWljIHBsYW5lIGhlbHBlcnMpIGFyZSBjb3JyZWN0bHkKICBpbnRlcmxl YXZlZDogRmlyc3Qgd2Ugc2h1dCBkb3duIGFueSBjcnRjcyB0aGF0IG5lZWQgY2hhbmdpbmcsIHRo ZW4KICB3ZSB1cGRhdGUgcGxhbmVzIGFuZCBmaW5hbGx5IHdlIGVuYWJsZSBldmVyeXRoaW5nIGFn YWluLiBIYXJkd2FyZQogIHdpdGhvdXQgR08gYml0cyBtdXN0IGJlIG1vcmUgY2FyZWZ1bCB3aXRo IG9yZGVyaW5nLCB3aGljaCB0aGlzCiAgc2VxdWVuY2UgZW5hYmxlcy4KCi0gQWxzbyBmb3IgaGFy ZHdhcmUgd2l0aCBzaGFyZWQgb3V0cHV0IHJlc291cmNlcyAobGlrZSBkaXNwbGF5IFBMTHMpCiAg d2UgZmlyc3QgbXVzdCBzaHV0IGRvd24gdGhlIG9sZCBjb25maWd1cmF0aW9uIGJlZm9yZSB3ZSBj YW4gZW5hYmxlCiAgdGhlIG5ldyBvbmUuIE90aGVyd2lzZSB3ZSBjYW4gaGl0IGFuIGltcG9zc2li bGUgaW50ZXJtZWRpYXRlIHN0YXRlCiAgd2hlcmUgdGhlcmUncyBub3QgZW5vdWdoIFBMTHMgKHdo aWNoIGlzIHRoZSBwb2ludCBiZWhpbmQgYXRvbWljCiAgdXBkYXRlcykuCgp2MjoKLSBFbnN1cmUg dGhhdCB1c2VycyBvZiAtPmNoZWNrIHVwZGF0ZSBjcnRjX3N0YXRlLT5lbmFibGUgY29ycmVjdGx5 LgotIFVwZGF0ZSB0aGUgbGVnYWN5IHN0YXRlIGluIGNydGMvcGxhbmUgc3RydWN0dXJlcy4gRXZl bnR1YWxseSB3ZSB3YW50CiAgdG8gcmVtb3ZlIHRoYXQsIGJ1dCBmb3Igbm93IHRoZSBkcm0gY29y ZSBzdGlsbCBleHBlY3RzIHRoaXMgKGVzcGVjaWFsbHkKICB0aGUgcGxhbmUtPmZiIHBvaW50ZXIp LgoKdjM6IEEgZmV3IGNoYW5nZXMgZm9yIGJldHRlciBhc3luYyBoYW5kbGluZzoKCi0gUmVvcmRl ciB0aGUgc29mdHdhcmUgc2lkZSBzdGF0ZSBjb21taXQgc28gdGhhdCBpdCBoYXBwZW5zIGFsbCBi ZWZvcmUKICB3ZSB0b3VjaCB0aGUgaGFyZHdhcmUuIFRoaXMgd2F5IGFzeW5jIHN1cHBvcnQgYmVj b21lcyB2ZXJ5IGVhc3kKICBzaW5jZSB3ZSBjYW4gcHVudCBhbGwgdGhlIGFjdHVhbCBodyB0b3Vj aGluZyB0byBhIHdvcmtlciB0aHJlYWQuIEFuZAogIGFzIGxvbmcgYXMgd2Ugc3luY2hyb25pemUg d2l0aCB0aGF0IHRocmVhZCAoZmx1c2hpbmcgb3IgY2FuY2VsbGluZywKICBkZXBlbmRpbmcgdXBv biB3aGF0IHRoZSBkcml2ZXIgY2FuIGhhbmRsZSkgYmVmb3JlIHdlIGNvbW1pdCB0aGUgbmV4dAog IHNvZnR3YXJlIHN0YXRlIHRoZXJlJ3Mgbm8gbmVlZCBmb3IgYW55IGxvY2tpbmcgaW4gdGhlIHdv cmtlciB0aHJlYWQKICBhdCBhbGwuIFdoaWNoIGdyZWF0bHkgc2ltcGxpZmllcyB0aGluZ3MuCgog IEFuZCBhcyBsb25nIGFzIHdlIHN5bmNocm9uaXplIHdpdGggYWxsIHJlbGV2YW50IHRocmVhZHMg d2UgY2FuIGhhdmUKICBhIGxvdCBvZiB0aGVtIChlLmcuIHBlci1jcnRjIGZvciBwZXItY3J0YyB1 cGRhdGVzKSBydW5uaW5nIGluCiAgcGFyYWxsZWwuCgotIEV4cG9zZSBwcmUvcG9zdCBwbGFuZSBj b21taXQgc3RlcHMgc2VwYXJhdGVseS4gV2UgbmVlZCB0byBleHBvc2UgdGhlCiAgYWN0dWFsIGh3 IGNvbW1pdCBzdGVwIGFueXdheSBmb3IgZHJpdmVycyB0byBiZSBhYmxlIHRvIGltcGxlbWVudAog IGFzeW5jaHJvbm91cyBjb21taXQgd29ya2Vycy4gQnV0IGlmIHdlIGV4cG9zZSBwcmUvcG9zdCBh bmQgcGxhbmUKICBjb21taXQgc3RlcHMgaW5kaXZpZHVhbGx5IHdlIGFsbG93IGRyaXZlcnMgdG8g c2VsZWN0aXZlbHkgdXNlIGF0b21pYwogIGhlbHBlcnMuCgotIEkndmUgZm9yZ290dGVuIHRvIGNh bGwgZW5jb2Rlci9icmlkZ2UgLT5tb2RlX3NldCBmdW5jdGlvbnMsIGZpeAogIHRoaXMuCgp2NDog QWRkIGRlYnVnIG91dHB1dCBhbmQgZml4IGEgbWl4dXAgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcg c3RhdGUKdGhhdCByZXN1bHRlZCBpbiBjcnRjcyBub3QgZ2V0dGluZyB1cGRhdGVkIGNvcnJlY3Rs eS4gQW5kIGluIGFuCk9vcHMgLi4uCgp2NToKLSBCZSBraW5kIHRvIGRyaXZlciB3cml0ZXJzIGlu IHRoZSB2Ymxhbmsgd2FpdCBmdW5jdGlvbnMuLiBpZiB0aGluZwogIGFyZW4ndCB3b3JraW5nIHll dCwgYW5kIHZibGFuayBpcnEgd2lsbCBuZXZlciBjb21lLCB0aGVuIGxldCdzIG5vdAogIGJsb2Nr IGZvcmV2ZXIuLiBlc3BlY2lhbGx5IHVuZGVyIGNvbnNvbGUtbG9jay4KLSBDb3JyZWN0bHkgY2xl YXIgY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgd2hlbiBkaXNhYmxpbmcuCiAgU3BvdHRl ZCB3aGlsZSB0cnlpbmcgdG8gdW5kZXJzdGFuZCBhIHJlcG9ydCBmcm9tIFJvYiBDbGFyay4KLSBP bmx5IHN0ZWFsIGVuY29kZXIgaWYgaXQgYWN0dWFsbHkgY2hhbmdlZCwgb3RoZXJ3aXNlIGhpbGFy aXR5IGVuc3VlcwogIGlmIHdlIHN0ZWFsIGZyb20gdGhlIGN1cnJlbnQgY29ubmVjdG9yIGFuZCBz byBzZXQgdGhlIC0+Y3J0YyBwb2ludGVyCiAgdW5leHBlY3RlZGx5IHRvIE5VTEwuIFJlcG9ydGVk IGJ5IFJvYiBDbGFyay4KLSBCYWlsIG91dCBpbiBkaXNhYmxlX291dHB1dHMgaWYgYW4gb3V0cHV0 IGN1cnJlbnRseSBkb2Vzbid0IGhhdmUgYQogIGJlc3RfZW5jb2RlciAtIHRoaXMgbWVhbnMgaXQn cyBhbHJlYWR5IGRpc2FibGVkLgoKdjY6IEZpeHVwZSBrZXJuZWxkb2MgYXMgcmVwb3J0ZWQgYnkg UGF1bG8uIEFuZCBhbHNvIGZpeCB1cCBrZXJuZWxkb2MKaW4gZHJtX2NydGMuaC4KCnY3OiBUYWtl IG93bmVyc2hpcCBvZiB0aGUgYXRvbWljIHN0YXRlIGFuZCBjbGVhbiBpdCB1cCB3aXRoCmRybV9h dG9taWNfc3RhdGVfZnJlZSgpLgoKdjggVmFyaW91cyBpbXByb3ZlbWVudHMgYWxsIG92ZXI6Ci0g UG9saXNoIGNvZGUgY29tbWVudHMgYW5kIGtlcm5lbGRvYy4KLSBJbXByb3ZlIGRlYnVnIG91dHB1 dCB0byBtYWtlIHN1cmUgYWxsIGZhaWx1cmUgY2FzZXMgYXJlIGxvZ2dlZC4KLSBUcmVhdCBlbmFi bGVkIGNydGMgd2l0aCBubyBjb25uZWN0b3JzIGFzIGludmFsaWQgaW5wdXQgZnJvbSB1c2Vyc3Bh Y2UuCi0gRG9uJ3QgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBtb2RlX2ZpeHVwKCkuCgp2 OToKLSBJbXByb3ZlIGRlYnVnIG91dHB1dCBmb3IgY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkLgoK djEwOgotIEZpeHVwIHRoZSB2Ymxhbmsgd2FpdGluZyBjb2RlIHRvIHByb3Blcmx5IGJhbGFuY2Ug dGhlIHZibGFua19nZXQvcHV0CiAgY2FsbHMuCi0gQmV0dGVyIGNvbW1lbnRzIHdoZW4gY2hlY2tp bmcvY29tcHV0aW5nIGNydGMtPm1vZGVfY2hhbmdlZAoKdjExOiBGaXh1cCB0aGUgZW5jb2RlciBz dGVhbGluZyBsb2dpYzogV2UgY2FuJ3QgbG9vayBhdCBlbmNvZGVyLT5jcnRjCnNpbmNlIHRoYXQn cyBub3QgaW4gdGhlIGF0b21pYyBzdGF0ZSBzdHJ1Y3R1cmVzIGFuZCBtaWdodCBiZSB1cGRhdGVk CmFzeW5jaHJvbm91c2x5IGluIGFuZCBhc3luYyBjb21taXQuIEluc3RlYWQgd2UgbmVlZCB0byBp bnNwZWN0IGFsbCB0aGUKY29ubmVjdG9yIHN0YXRlcyBhbmQgY2hlY2sgd2hldGhlciB0aGUgZW5j b2RlciBpcyBjdXJyZW50bHkgaW4gdXNlZAphbmQgaWYgc28sIG9uIHdoaWNoIGNydGMuCgpDYzog UGF1bG8gWmFub25pIDxwcnphbm9uaUBnbWFpbC5jb20+CkNjOiBSb2IgQ2xhcmsgPHJvYmRjbGFy a0BnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCA2OTIg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2NydGNfaGVscGVyLmMgICB8ICAgMSArCiBpbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5o ICAgICB8ICAgOCArCiBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAgICB8ICAxMCAr CiA0IGZpbGVzIGNoYW5nZWQsIDcxMSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYwppbmRleCA1NWE4ZWIyNjc4YjAuLjg4N2UxOTcxYzkxNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pYy5oPgogI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CiAjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o PgogCiBzdGF0aWMgdm9pZAogZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfY2hhbmdlZChzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCkBAIC01Nyw2ICs1OCwzMjcgQEAgZHJtX2F0b21pY19o ZWxwZXJfcGxhbmVfY2hhbmdlZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJfQog fQogCitzdGF0aWMgc3RydWN0IGRybV9jcnRjICoKK2dldF9jdXJyZW50X2NydGNfZm9yX2VuY29k ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKQoreworCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVf Y29uZmlnOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisKKwlXQVJOX09OKCFk cm1fbW9kZXNldF9pc19sb2NrZWQoJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCkpOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZjb25maWctPmNvbm5lY3Rvcl9saXN0LCBoZWFk KSB7CisJCWlmIChjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIgIT0gZW5jb2RlcikKKwkJ CWNvbnRpbnVlOworCisJCXJldHVybiBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOworCX0KKworCXJl dHVybiBOVUxMOworfQorCitzdGF0aWMgaW50CitzdGVhbF9lbmNvZGVyKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKKwkgICAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJ ICAgICAgc3RydWN0IGRybV9jcnRjICplbmNvZGVyX2NydGMpCit7CisJc3RydWN0IGRybV9tb2Rl X2NvbmZpZyAqY29uZmlnID0gJnN0YXRlLT5kZXYtPm1vZGVfY29uZmlnOworCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y OworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CisKKwkvKgor CSAqIFdlIGNhbiBvbmx5IHN0ZWFsIGFuIGVuY29kZXIgY29taW5nIGZyb20gYSBjb25uZWN0b3Is IHdoaWNoIG1lYW5zIHdlCisJICogbXVzdCBhbHJlYWR5IGhvbGQgdGhlIGNvbm5lY3Rpb25fbXV0 ZXguCisJICovCisJV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZjb25maWctPmNvbm5l Y3Rpb25fbXV0ZXgpKTsKKworCURSTV9ERUJVR19LTVMoIltFTkNPREVSOiVkOiVzXSBpbiB1c2Ug b24gW0NSVEM6JWRdLCBzdGVhbGluZyBpdFxuIiwKKwkJICAgICAgZW5jb2Rlci0+YmFzZS5pZCwg ZW5jb2Rlci0+bmFtZSwKKwkJICAgICAgZW5jb2Rlcl9jcnRjLT5iYXNlLmlkKTsKKworCWNydGNf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBlbmNvZGVyX2NydGMpOwor CWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCisJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwor CisJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKKworCWxpc3RfZm9yX2VhY2hfZW50 cnkoY29ubmVjdG9yLCAmY29uZmlnLT5jb25uZWN0b3JfbGlzdCwgaGVhZCkgeworCQlpZiAoY29u bmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIpCisJCQljb250aW51ZTsKKwor CQlEUk1fREVCVUdfS01TKCJTdGVhbGluZyBlbmNvZGVyIGZyb20gW0NPTk5FQ1RPUjolZDolc11c biIsCisJCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsCisJCQkgICAgICBjb25uZWN0b3ItPm5h bWUpOworCisJCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0 ZShzdGF0ZSwKKwkJCQkJCQkJIGNvbm5lY3Rvcik7CisJCWlmIChJU19FUlIoY29ubmVjdG9yX3N0 YXRlKSkKKwkJCXJldHVybiBQVFJfRVJSKGNvbm5lY3Rvcl9zdGF0ZSk7CisKKwkJY29ubmVjdG9y X3N0YXRlLT5jcnRjID0gTlVMTDsKKwkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBO VUxMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit1cGRhdGVfY29ubmVjdG9y X3JvdXRpbmcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBpbnQgY29ubl9pZHgpCit7 CisJc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jczsKKwlzdHJ1Y3QgZHJt X2VuY29kZXIgKm5ld19lbmNvZGVyOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7 CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJaW50IGlkeCwgcmV0OworCisJY29ubmVjdG9y ID0gc3RhdGUtPmNvbm5lY3RvcnNbY29ubl9pZHhdOworCWNvbm5lY3Rvcl9zdGF0ZSA9IHN0YXRl LT5jb25uZWN0b3Jfc3RhdGVzW2Nvbm5faWR4XTsKKworCWlmICghY29ubmVjdG9yKQorCQlyZXR1 cm4gMDsKKworCURSTV9ERUJVR19LTVMoIlVwZGF0aW5nIHJvdXRpbmcgZm9yIFtDT05ORUNUT1I6 JWQ6JXNdXG4iLAorCQkJY29ubmVjdG9yLT5iYXNlLmlkLAorCQkJY29ubmVjdG9yLT5uYW1lKTsK KworCWlmIChjb25uZWN0b3ItPnN0YXRlLT5jcnRjICE9IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yykg eworCQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YykgeworCQkJaWR4ID0gZHJtX2NydGNfaW5k ZXgoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yyk7CisKKwkJCWNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0 Y19zdGF0ZXNbaWR4XTsKKwkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7CisJCX0K KworCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7CisJCQlpZHggPSBkcm1fY3J0Y19pbmRl eChjb25uZWN0b3Jfc3RhdGUtPmNydGMpOworCisJCQljcnRjX3N0YXRlID0gc3RhdGUtPmNydGNf c3RhdGVzW2lkeF07CisJCQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCQl9CisJ fQorCisJaWYgKCFjb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJRFJNX0RFQlVHX0tNUygiRGlz YWJsaW5nIFtDT05ORUNUT1I6JWQ6JXNdXG4iLAorCQkJCWNvbm5lY3Rvci0+YmFzZS5pZCwKKwkJ CQljb25uZWN0b3ItPm5hbWUpOworCisJCWNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyID0g TlVMTDsKKworCQlyZXR1cm4gMDsKKwl9CisKKwlmdW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3By aXZhdGU7CisJbmV3X2VuY29kZXIgPSBmdW5jcy0+YmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7CisK KwlpZiAoIW5ld19lbmNvZGVyKSB7CisJCURSTV9ERUJVR19LTVMoIk5vIHN1aXRhYmxlIGVuY29k ZXIgZm91bmQgZm9yIFtDT05ORUNUT1I6JWQ6JXNdXG4iLAorCQkJICAgICAgY29ubmVjdG9yLT5i YXNlLmlkLAorCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJaWYgKG5ld19lbmNvZGVyICE9IGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyKSB7 CisJCXN0cnVjdCBkcm1fY3J0YyAqZW5jb2Rlcl9jcnRjOworCisJCWVuY29kZXJfY3J0YyA9IGdl dF9jdXJyZW50X2NydGNfZm9yX2VuY29kZXIoc3RhdGUtPmRldiwKKwkJCQkJCQkgICAgbmV3X2Vu Y29kZXIpOworCisJCWlmIChlbmNvZGVyX2NydGMpIHsKKwkJCXJldCA9IHN0ZWFsX2VuY29kZXIo c3RhdGUsIG5ld19lbmNvZGVyLCBlbmNvZGVyX2NydGMpOworCQkJaWYgKHJldCkgeworCQkJCURS TV9ERUJVR19LTVMoIkVuY29kZXIgc3RlYWxpbmcgZmFpbGVkIGZvciBbQ09OTkVDVE9SOiVkOiVz XVxuIiwKKwkJCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLAorCQkJCQkgICAgICBjb25uZWN0 b3ItPm5hbWUpOworCQkJCXJldHVybiByZXQ7CisJCQl9CisJCX0KKworCQljb25uZWN0b3Jfc3Rh dGUtPmJlc3RfZW5jb2RlciA9IG5ld19lbmNvZGVyOworCQlpZHggPSBkcm1fY3J0Y19pbmRleChj b25uZWN0b3Jfc3RhdGUtPmNydGMpOworCisJCWNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0 ZXNbaWR4XTsKKwkJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKKwl9CisKKwlEUk1f REVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSB1c2luZyBbRU5DT0RFUjolZDolc10gb24gW0NS VEM6JWRdXG4iLAorCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsCisJCSAgICAgIGNvbm5lY3Rv ci0+bmFtZSwKKwkJICAgICAgbmV3X2VuY29kZXItPmJhc2UuaWQsCisJCSAgICAgIG5ld19lbmNv ZGVyLT5uYW1lLAorCQkgICAgICBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPmJhc2UuaWQpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK21vZGVfZml4dXAoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQoreworCWludCBuY3J0Y3MgPSBzdGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5u dW1fY3J0YzsKKwlpbnQgbmNvbm5lY3RvcnMgPSBzdGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1f Y29ubmVjdG9yOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKKwlpbnQgaTsKKwlib29sIHJldDsKKwor CWZvciAoaSA9IDA7IGkgPCBuY3J0Y3M7IGkrKykgeworCQljcnRjX3N0YXRlID0gc3RhdGUtPmNy dGNfc3RhdGVzW2ldOworCisJCWlmICghY3J0Y19zdGF0ZSB8fCAhY3J0Y19zdGF0ZS0+bW9kZV9j aGFuZ2VkKQorCQkJY29udGludWU7CisKKwkJZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+YWRq dXN0ZWRfbW9kZSwgJmNydGNfc3RhdGUtPm1vZGUpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBu Y29ubmVjdG9yczsgaSsrKSB7CisJCXN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmZ1 bmNzOworCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CisKKwkJY29ubl9zdGF0ZSA9IHN0 YXRlLT5jb25uZWN0b3Jfc3RhdGVzW2ldOworCisJCWlmICghY29ubl9zdGF0ZSkKKwkJCWNvbnRp bnVlOworCisJCVdBUk5fT04oISFjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIgIT0gISFjb25uX3N0 YXRlLT5jcnRjKTsKKworCQlpZiAoIWNvbm5fc3RhdGUtPmNydGMgfHwgIWNvbm5fc3RhdGUtPmJl c3RfZW5jb2RlcikKKwkJCWNvbnRpbnVlOworCisJCWNydGNfc3RhdGUgPQorCQkJc3RhdGUtPmNy dGNfc3RhdGVzW2RybV9jcnRjX2luZGV4KGNvbm5fc3RhdGUtPmNydGMpXTsKKworCQkvKgorCQkg KiBFYWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlz IHN0ZWFsCisJCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIC0+bW9kZV9maXh1cCB0d2lj ZS4KKwkJICovCisJCWVuY29kZXIgPSBjb25uX3N0YXRlLT5iZXN0X2VuY29kZXI7CisJCWZ1bmNz ID0gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGU7CisKKwkJaWYgKGVuY29kZXItPmJyaWRnZSAmJiBl bmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKSB7CisJCQlyZXQgPSBlbmNvZGVyLT5i cmlkZ2UtPmZ1bmNzLT5tb2RlX2ZpeHVwKAorCQkJCQllbmNvZGVyLT5icmlkZ2UsICZjcnRjX3N0 YXRlLT5tb2RlLAorCQkJCQkmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCQlpZiAoIXJl dCkgeworCQkJCURSTV9ERUJVR19LTVMoIkJyaWRnZSBmaXh1cCBmYWlsZWRcbiIpOworCQkJCXJl dHVybiAtRUlOVkFMOworCQkJfQorCQl9CisKKworCQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChl bmNvZGVyLCAmY3J0Y19zdGF0ZS0+bW9kZSwKKwkJCQkJJmNydGNfc3RhdGUtPmFkanVzdGVkX21v ZGUpOworCQlpZiAoIXJldCkgeworCQkJRFJNX0RFQlVHX0tNUygiW0VOQ09ERVI6JWQ6JXNdIGZp eHVwIGZhaWxlZFxuIiwKKwkJCQkgICAgICBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1l KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5jcnRj czsgaSsrKSB7CisJCXN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlzdHJ1 Y3QgZHJtX2NydGMgKmNydGM7CisKKwkJY3J0Y19zdGF0ZSA9IHN0YXRlLT5jcnRjX3N0YXRlc1tp XTsKKwkJY3J0YyA9IHN0YXRlLT5jcnRjc1tpXTsKKworCQlpZiAoIWNydGNfc3RhdGUgfHwgIWNy dGNfc3RhdGUtPm1vZGVfY2hhbmdlZCkKKwkJCWNvbnRpbnVlOworCisJCWZ1bmNzID0gY3J0Yy0+ aGVscGVyX3ByaXZhdGU7CisJCXJldCA9IGZ1bmNzLT5tb2RlX2ZpeHVwKGNydGMsICZjcnRjX3N0 YXRlLT5tb2RlLAorCQkJCQkmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCWlmICghcmV0 KSB7CisJCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gZml4dXAgZmFpbGVkXG4iLAorCQkJCSAg ICAgIGNydGMtPmJhc2UuaWQpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludAorZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcHJlcGFyZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKK3sKKwlpbnQgbmNydGNzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsKKwlpbnQgbmNv bm5lY3RvcnMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3I7CisJc3RydWN0IGRybV9j cnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlpbnQgaSwg cmV0OworCisJZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7CisJCWNydGMgPSBzdGF0ZS0+ Y3J0Y3NbaV07CisJCWNydGNfc3RhdGUgPSBzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV07CisKKwkJaWYg KCFjcnRjKQorCQkJY29udGludWU7CisKKwkJaWYgKCFkcm1fbW9kZV9lcXVhbCgmY3J0Yy0+c3Rh dGUtPm1vZGUsICZjcnRjX3N0YXRlLT5tb2RlKSkgeworCQkJRFJNX0RFQlVHX0tNUygiW0NSVEM6 JWRdIG1vZGUgY2hhbmdlZFxuIiwKKwkJCQkgICAgICBjcnRjLT5iYXNlLmlkKTsKKwkJCWNydGNf c3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7CisJCX0KKworCQlpZiAoY3J0Yy0+c3RhdGUtPmVu YWJsZSAhPSBjcnRjX3N0YXRlLT5lbmFibGUpIHsKKwkJCURSTV9ERUJVR19LTVMoIltDUlRDOiVk XSBzdGF0ZSBjaGFuZ2VkXG4iLAorCQkJCSAgICAgIGNydGMtPmJhc2UuaWQpOworCQkJY3J0Y19z dGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCBu Y29ubmVjdG9yczsgaSsrKSB7CisJCS8qCisJCSAqIFRoaXMgb25seSBzZXRzIGNydGMtPm1vZGVf Y2hhbmdlZCBmb3Igcm91dGluZyBjaGFuZ2VzLAorCQkgKiBkcml2ZXJzIG11c3Qgc2V0IGNydGMt Pm1vZGVfY2hhbmdlZCB0aGVtc2VsdmVzIHdoZW4gY29ubmVjdG9yCisJCSAqIHByb3BlcnRpZXMg bmVlZCB0byBiZSB1cGRhdGVkLgorCQkgKi8KKwkJcmV0ID0gdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0 aW5nKHN0YXRlLCBpKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJLyoKKwkg KiBBZnRlciBhbGwgdGhlIHJvdXRpbmcgaGFzIGJlZW4gcHJlcGFyZWQgd2UgbmVlZCB0byBhZGQg aW4gYW55CisJICogY29ubmVjdG9yIHdoaWNoIGlzIGl0c2VsZiB1bmNoYW5nZWQsIGJ1dCB3aG8n cyBjcnRjIGNoYW5nZXMgaXQncworCSAqIGNvbmZpZ3VyYXRpb24uIFRoaXMgbXVzdCBiZSBkb25l IGJlZm9yZSBjYWxsaW5nIG1vZGVfZml4dXAgaW4gY2FzZSBhCisJICogY3J0YyBvbmx5IGNoYW5n ZWQgaXRzIG1vZGUgYnV0IGhhcyB0aGUgc2FtZSBzZXQgb2YgY29ubmVjdG9ycy4KKwkgKi8KKwlm b3IgKGkgPSAwOyBpIDwgbmNydGNzOyBpKyspIHsKKworCQljcnRjID0gc3RhdGUtPmNydGNzW2ld OworCQljcnRjX3N0YXRlID0gc3RhdGUtPmNydGNfc3RhdGVzW2ldOworCisJCWlmICghY3J0YykK KwkJCWNvbnRpbnVlOworCisJCWlmIChjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpIHsKKwkJCWJv b2wgaGFzX2Nvbm5lY3RvcnM7CisKKwkJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBuZWVkcyBm dWxsIG1vZGVzZXQsIGVuYWJsZTogJWNcbiIsCisJCQkJICAgICAgY3J0Yy0+YmFzZS5pZCwKKwkJ CQkgICAgICBjcnRjX3N0YXRlLT5lbmFibGUgPyAneScgOiAnbicpOworCisJCQlyZXQgPSBkcm1f YXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0b3JzKHN0YXRlLCBjcnRjKTsKKwkJCWlmIChyZXQg PCAwKQorCQkJCXJldHVybiByZXQ7CisKKwkJCWhhc19jb25uZWN0b3JzID0gZHJtX2F0b21pY19j b25uZWN0b3JzX2Zvcl9jcnRjKHN0YXRlLAorCQkJCQkJCQkJY3J0Yyk7CisKKwkJCWlmIChjcnRj X3N0YXRlLT5lbmFibGUgIT0gaGFzX2Nvbm5lY3RvcnMpIHsKKwkJCQlEUk1fREVCVUdfS01TKCJb Q1JUQzolZF0gZW5hYmxlZC9jb25uZWN0b3JzIG1pc21hdGNoXG4iLAorCQkJCQkgICAgICBjcnRj LT5iYXNlLmlkKTsKKworCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCQl9CisJfQorCisJcmV0 dXJuIG1vZGVfZml4dXAoc3RhdGUpOworfQorCiAvKioKICAqIGRybV9hdG9taWNfaGVscGVyX2No ZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC03OCw2 ICs0MDAsMTAgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJaW50IG5jcnRjcyA9IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7CiAJaW50IGks IHJldCA9IDA7CiAKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wcmVwYXJlKGRldiwg c3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlmb3IgKGkgPSAwOyBpIDwgbnBs YW5lczsgaSsrKSB7CiAJCXN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKIAkJ c3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBzdGF0ZS0+cGxhbmVzW2ldOwpAQCAtMTI1LDYgKzQ1 MSwzNzIgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2NoZWNrKTsKIAorc3RhdGlj IHZvaWQKK2Rpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQoreworCWludCBuY3J0Y3MgPSBvbGRfc3RhdGUtPmRl di0+bW9kZV9jb25maWcubnVtX2NydGM7CisJaW50IG5jb25uZWN0b3JzID0gb2xkX3N0YXRlLT5k ZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3I7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBp IDwgbmNvbm5lY3RvcnM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xk X2Nvbm5fc3RhdGU7CisJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJCXN0cnVj dCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXI7CisKKwkJb2xkX2Nvbm5fc3RhdGUgPSBvbGRfc3RhdGUtPmNvbm5lY3Rvcl9zdGF0 ZXNbaV07CisJCWNvbm5lY3RvciA9IG9sZF9zdGF0ZS0+Y29ubmVjdG9yc1tpXTsKKworCQkvKiBT aHV0IGRvd24gZXZlcnl0aGluZyB0aGF0J3MgaW4gdGhlIGNoYW5nZXNldCBhbmQgY3VycmVudGx5 CisJCSAqIHN0aWxsIG9uLiBTbyBuZWVkIHRvIGNoZWNrIHRoZSBvbGQsIHNhdmVkIHN0YXRlLiAq LworCQlpZiAoIW9sZF9jb25uX3N0YXRlIHx8ICFvbGRfY29ubl9zdGF0ZS0+Y3J0YykKKwkJCWNv bnRpbnVlOworCisJCWVuY29kZXIgPSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7CisK KwkJaWYgKCFlbmNvZGVyKQorCQkJY29udGludWU7CisKKwkJZnVuY3MgPSBlbmNvZGVyLT5oZWxw ZXJfcHJpdmF0ZTsKKworCQkvKgorCQkgKiBFYWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNv bm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0ZWFsCisJCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24n dCBjYWxsIGNhbGwgZGlzYWJsZSBob29rcyB0d2ljZS4KKwkJICovCisJCWlmIChlbmNvZGVyLT5i cmlkZ2UpCisJCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5kaXNhYmxlKGVuY29kZXItPmJyaWRn ZSk7CisKKwkJLyogUmlnaHQgZnVuY3Rpb24gZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8K KwkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpCisJCQlmdW5jcy0+cHJlcGFyZShlbmNvZGVy KTsKKwkJZWxzZSBpZiAoZnVuY3MtPmRpc2FibGUpCisJCQlmdW5jcy0+ZGlzYWJsZShlbmNvZGVy KTsKKwkJZWxzZQorCQkJZnVuY3MtPmRwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PRkYpOwor CisJCWlmIChlbmNvZGVyLT5icmlkZ2UpCisJCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5wb3N0 X2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbmNydGNz OyBpKyspIHsKKwkJc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7CisJCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKKworCQljcnRjID0gb2xkX3N0YXRlLT5jcnRjc1tpXTsKKworCQkv KiBTaHV0IGRvd24gZXZlcnl0aGluZyB0aGF0IG5lZWRzIGEgZnVsbCBtb2Rlc2V0LiAqLworCQlp ZiAoIWNydGMgfHwgIWNydGMtPnN0YXRlLT5tb2RlX2NoYW5nZWQpCisJCQljb250aW51ZTsKKwor CQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOworCisJCS8qIFJpZ2h0IGZ1bmN0aW9uIGRl cGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCisJCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKQor CQkJZnVuY3MtPnByZXBhcmUoY3J0Yyk7CisJCWVsc2UgaWYgKGZ1bmNzLT5kaXNhYmxlKQorCQkJ ZnVuY3MtPmRpc2FibGUoY3J0Yyk7CisJCWVsc2UKKwkJCWZ1bmNzLT5kcG1zKGNydGMsIERSTV9N T0RFX0RQTVNfT0ZGKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitzZXRfcm91dGluZ19saW5rcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRl KQoreworCWludCBuY29ubmVjdG9ycyA9IGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3RvcjsK KwlpbnQgbmNydGNzID0gb2xkX3N0YXRlLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOworCWlu dCBpOworCisJLyogY2xlYXIgb3V0IGV4aXN0aW5nIGxpbmtzICovCisJZm9yIChpID0gMDsgaSA8 IG5jb25uZWN0b3JzOyBpKyspIHsKKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsK KworCQljb25uZWN0b3IgPSBvbGRfc3RhdGUtPmNvbm5lY3RvcnNbaV07CisKKwkJaWYgKCFjb25u ZWN0b3IgfHwgIWNvbm5lY3Rvci0+ZW5jb2RlcikKKwkJCWNvbnRpbnVlOworCisJCVdBUk5fT04o IWNvbm5lY3Rvci0+ZW5jb2Rlci0+Y3J0Yyk7CisKKwkJY29ubmVjdG9yLT5lbmNvZGVyLT5jcnRj ID0gTlVMTDsKKwkJY29ubmVjdG9yLT5lbmNvZGVyID0gTlVMTDsKKwl9CisKKwkvKiBzZXQgbmV3 IGxpbmtzICovCisJZm9yIChpID0gMDsgaSA8IG5jb25uZWN0b3JzOyBpKyspIHsKKwkJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKworCQljb25uZWN0b3IgPSBvbGRfc3RhdGUtPmNv bm5lY3RvcnNbaV07CisKKwkJaWYgKCFjb25uZWN0b3IgfHwgIWNvbm5lY3Rvci0+c3RhdGUtPmNy dGMpCisJCQljb250aW51ZTsKKworCQlpZiAoV0FSTl9PTighY29ubmVjdG9yLT5zdGF0ZS0+YmVz dF9lbmNvZGVyKSkKKwkJCWNvbnRpbnVlOworCisJCWNvbm5lY3Rvci0+ZW5jb2RlciA9IGNvbm5l Y3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcjsKKwkJY29ubmVjdG9yLT5lbmNvZGVyLT5jcnRjID0g Y29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKKwl9CisKKwkvKiBzZXQgbGVnYWN5IHN0YXRlIGluIHRo ZSBjcnRjIHN0cnVjdHVyZSAqLworCWZvciAoaSA9IDA7IGkgPCBuY3J0Y3M7IGkrKykgeworCQlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7CisKKwkJY3J0YyA9IG9sZF9zdGF0ZS0+Y3J0Y3NbaV07CisK KwkJaWYgKCFjcnRjKQorCQkJY29udGludWU7CisKKwkJY3J0Yy0+bW9kZSA9IGNydGMtPnN0YXRl LT5tb2RlOworCQljcnRjLT5lbmFibGVkID0gY3J0Yy0+c3RhdGUtPmVuYWJsZTsKKwkJY3J0Yy0+ eCA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5zcmNfeCA+PiAxNjsKKwkJY3J0Yy0+eSA9IGNydGMt PnByaW1hcnktPnN0YXRlLT5zcmNfeSA+PiAxNjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitjcnRj X3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpvbGRfc3RhdGUpCit7CisJaW50IG5jcnRjcyA9IG9sZF9zdGF0ZS0+ZGV2LT5tb2RlX2NvbmZp Zy5udW1fY3J0YzsKKwlpbnQgbmNvbm5lY3RvcnMgPSBvbGRfc3RhdGUtPmRldi0+bW9kZV9jb25m aWcubnVtX2Nvbm5lY3RvcjsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuY3J0Y3M7IGkr KykgeworCQlzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5jczsKKwkJc3RydWN0IGRy bV9jcnRjICpjcnRjOworCisJCWNydGMgPSBvbGRfc3RhdGUtPmNydGNzW2ldOworCisJCWlmICgh Y3J0YyB8fCAhY3J0Yy0+c3RhdGUtPm1vZGVfY2hhbmdlZCkKKwkJCWNvbnRpbnVlOworCisJCWZ1 bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7CisKKwkJaWYgKGNydGMtPnN0YXRlLT5lbmFibGUp CisJCQlmdW5jcy0+bW9kZV9zZXRfbm9mYihjcnRjKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwg bmNvbm5lY3RvcnM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwor CQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOworCQlzdHJ1Y3QgZHJtX2Vu Y29kZXJfaGVscGVyX2Z1bmNzICpmdW5jczsKKwkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy OworCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgKmFkanVzdGVkX21vZGU7CisKKwkJ Y29ubmVjdG9yID0gb2xkX3N0YXRlLT5jb25uZWN0b3JzW2ldOworCisJCWlmICghY29ubmVjdG9y IHx8ICFjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIpCisJCQljb250aW51ZTsKKworCQll bmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOworCQlmdW5jcyA9IGVuY29k ZXItPmhlbHBlcl9wcml2YXRlOworCQluZXdfY3J0Y19zdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGUt PmNydGMtPnN0YXRlOworCQltb2RlID0gJm5ld19jcnRjX3N0YXRlLT5tb2RlOworCQlhZGp1c3Rl ZF9tb2RlID0gJm5ld19jcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlOworCisJCS8qCisJCSAqIEVh Y2ggZW5jb2RlciBoYXMgYXQgbW9zdCBvbmUgY29ubmVjdG9yIChzaW5jZSB3ZSBhbHdheXMgc3Rl YWwKKwkJICogaXQgYXdheSksIHNvIHdlIHdvbid0IGNhbGwgY2FsbCBtb2RlX3NldCBob29rcyB0 d2ljZS4KKwkJICovCisJCWZ1bmNzLT5tb2RlX3NldChlbmNvZGVyLCBtb2RlLCBhZGp1c3RlZF9t b2RlKTsKKworCQlpZiAoZW5jb2Rlci0+YnJpZGdlICYmIGVuY29kZXItPmJyaWRnZS0+ZnVuY3Mt Pm1vZGVfc2V0KQorCQkJZW5jb2Rlci0+YnJpZGdlLT5mdW5jcy0+bW9kZV9zZXQoZW5jb2Rlci0+ YnJpZGdlLAorCQkJCQkJCSBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKKwl9Cit9CisKKy8qKgorICog ZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3ByZV9wbGFuZXMgLSBtb2Rlc2V0IGNvbW1pdCBiZWZv cmUgcGxhbmUgdXBkYXRlcworICogQGRldjogRFJNIGRldmljZQorICogQHN0YXRlOiBhdG9taWMg c3RhdGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhlIG1vZGVzZXQgY2hhbmdlcyB0 aGF0IG5lZWQgdG8gYmUgY29tbWl0dGVkIGJlZm9yZQorICogdXBkYXRpbmcgcGxhbmVzLiBJdCBz aHV0cyBkb3duIGFsbCB0aGUgb3V0cHV0cyB0aGF0IG5lZWQgdG8gYmUgc2h1dCBkb3duIGFuZAor ICogcHJlcGFyZXMgdGhlbSAoaWYgcmVxdXJpZWQpIHdpdGggdGhlIG5ldyBtb2RlLgorICovCit2 b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCisJCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJZGlzYWJs ZV9vdXRwdXRzKGRldiwgc3RhdGUpOworCXNldF9yb3V0aW5nX2xpbmtzKGRldiwgc3RhdGUpOwor CWNydGNfc2V0X21vZGUoZGV2LCBzdGF0ZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9wcmVfcGxhbmVzKTsKKworLyoqCisgKiBkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfcG9zdF9wbGFuZXMgLSBtb2Rlc2V0IGNvbW1pdCBhZnRlciBwbGFuZSB1cGRhdGVzCisg KiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAb2xkX3N0YXRlOiBhdG9taWMgc3RhdGUgb2JqZWN0IHdp dGggb2xkIHN0YXRlIHN0cnVjdHVyZXMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhl IG1vZGVzZXQgY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgY29tbWl0dGVkIGFmdGVyCisgKiB1cGRh dGluZyBwbGFuZXM6IEl0IGVuYWJsZXMgYWxsIHRoZSBvdXRwdXRzIHdpdGggdGhlIG5ldyBjb25m aWd1cmF0aW9uIHdoaWNoCisgKiBoYWQgdG8gYmUgdHVybmVkIG9mZiBmb3IgdGhlIHVwZGF0ZS4K KyAqLwordm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcG9zdF9wbGFuZXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKKwkJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRl KQoreworCWludCBuY3J0Y3MgPSBvbGRfc3RhdGUtPmRldi0+bW9kZV9jb25maWcubnVtX2NydGM7 CisJaW50IG5jb25uZWN0b3JzID0gb2xkX3N0YXRlLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jb25u ZWN0b3I7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmNydGNzOyBpKyspIHsKKwkJc3Ry dWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7CisJCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKKworCQljcnRjID0gb2xkX3N0YXRlLT5jcnRjc1tpXTsKKworCQkvKiBOZWVkIHRvIGZpbHRl ciBvdXQgQ1JUQ3Mgd2hlcmUgb25seSBwbGFuZXMgY2hhbmdlLiAqLworCQlpZiAoIWNydGMgfHwg IWNydGMtPnN0YXRlLT5tb2RlX2NoYW5nZWQpCisJCQljb250aW51ZTsKKworCQlmdW5jcyA9IGNy dGMtPmhlbHBlcl9wcml2YXRlOworCisJCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKQorCQkJZnVu Y3MtPmNvbW1pdChjcnRjKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbmNvbm5lY3RvcnM7IGkr KykgeworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCQlzdHJ1Y3QgZHJtX2Vu Y29kZXJfaGVscGVyX2Z1bmNzICpmdW5jczsKKwkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy OworCisJCWNvbm5lY3RvciA9IG9sZF9zdGF0ZS0+Y29ubmVjdG9yc1tpXTsKKworCQlpZiAoIWNv bm5lY3RvciB8fCAhY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyKQorCQkJY29udGludWU7 CisKKwkJZW5jb2RlciA9IGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcjsKKwkJZnVuY3Mg PSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKKworCQkvKgorCQkgKiBFYWNoIGVuY29kZXIgaGFz IGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0ZWFsCisJCSAqIGl0IGF3 YXkpLCBzbyB3ZSB3b24ndCBjYWxsIGNhbGwgZW5hYmxlIGhvb2tzIHR3aWNlLgorCQkgKi8KKwkJ aWYgKGVuY29kZXItPmJyaWRnZSkKKwkJCWVuY29kZXItPmJyaWRnZS0+ZnVuY3MtPnByZV9lbmFi bGUoZW5jb2Rlci0+YnJpZGdlKTsKKworCQlmdW5jcy0+Y29tbWl0KGVuY29kZXIpOworCisJCWlm IChlbmNvZGVyLT5icmlkZ2UpCisJCQllbmNvZGVyLT5icmlkZ2UtPmZ1bmNzLT5lbmFibGUoZW5j b2Rlci0+YnJpZGdlKTsKKwl9Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2Nv bW1pdF9wb3N0X3BsYW5lcyk7CisKK3N0YXRpYyB2b2lkCit3YWl0X2Zvcl92YmxhbmtzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCit7 CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGU7CisJaW50IG5jcnRjcyA9IG9sZF9zdGF0ZS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YzsKKwlpbnQgaSwgcmV0OworCisJZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7CisJ CWNydGMgPSBvbGRfc3RhdGUtPmNydGNzW2ldOworCQlvbGRfY3J0Y19zdGF0ZSA9IG9sZF9zdGF0 ZS0+Y3J0Y19zdGF0ZXNbaV07CisKKwkJaWYgKCFjcnRjKQorCQkJY29udGludWU7CisKKwkJLyog Tm8gb25lIGNhcmVzIGFib3V0IHRoZSBvbGQgc3RhdGUsIHNvIGFidXNlIGl0IGZvciB0cmFja2lu ZworCQkgKiBhbmQgc3RvcmUgd2hldGhlciB3ZSBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSAoYW5k IHNob3VsZCBkbyBhCisJCSAqIHZibGFuayB3YWl0KSBpbiB0aGUgLT5lbmFibGUgYm9vbGVhbi4g Ki8KKwkJb2xkX2NydGNfc3RhdGUtPmVuYWJsZSA9IGZhbHNlOworCisJCWlmICghY3J0Yy0+c3Rh dGUtPmVuYWJsZSkKKwkJCWNvbnRpbnVlOworCisJCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQo Y3J0Yyk7CisJCWlmIChyZXQgIT0gMCkKKwkJCWNvbnRpbnVlOworCisJCW9sZF9jcnRjX3N0YXRl LT5lbmFibGUgPSB0cnVlOworCQlvbGRfY3J0Y19zdGF0ZS0+bGFzdF92YmxhbmtfY291bnQgPSBk cm1fdmJsYW5rX2NvdW50KGRldiwgaSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5jcnRjczsg aSsrKSB7CisJCWNydGMgPSBvbGRfc3RhdGUtPmNydGNzW2ldOworCQlvbGRfY3J0Y19zdGF0ZSA9 IG9sZF9zdGF0ZS0+Y3J0Y19zdGF0ZXNbaV07CisKKwkJaWYgKCFjcnRjIHx8ICFvbGRfY3J0Y19z dGF0ZS0+ZW5hYmxlKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0 KGRldi0+dmJsYW5rW2ldLnF1ZXVlLAorCQkJCW9sZF9jcnRjX3N0YXRlLT5sYXN0X3ZibGFua19j b3VudCAhPQorCQkJCQlkcm1fdmJsYW5rX2NvdW50KGRldiwgaSksCisJCQkJbXNlY3NfdG9famlm Zmllcyg1MCkpOworCisJCWRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7CisJfQorfQorCisvKioK KyAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCAtIGNvbW1pdCB2YWxpZGF0ZWQgc3RhdGUgb2Jq ZWN0CisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAc3RhdGU6IHRoZSBkcml2ZXIgc3RhdGUgb2Jq ZWN0CisgKiBAYXN5bmM6IGFzeW5jaHJvbm91cyBjb21taXQKKyAqCisgKiBUaGlzIGZ1bmN0aW9u IGNvbW1pdHMgYSB3aXRoIGRybV9hdG9taWNfaGVscGVyX2NoZWNrKCkgcHJlLXZhbGlkYXRlZCBz dGF0ZQorICogb2JqZWN0LiBUaGlzIGNhbiBzdGlsbCBmYWlsIHdoZW4gZS5nLiB0aGUgZnJhbWVi dWZmZXIgcmVzZXJ2YXRpb24gZmFpbHMuIEZvcgorICogbm93IHRoaXMgZG9lc24ndCBpbXBsZW1l bnQgYXN5bmNocm9ub3VzIGNvbW1pdHMuCisgKgorICogUkVUVVJOUworICogWmVybyBmb3Igc3Vj Y2VzcyBvciAtZXJybm8uCisgKi8KK2ludCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAorCQkJICAgICBib29sIGFzeW5jKQoreworCWludCByZXQ7CisKKwlpZiAoYXN5bmMpCisJCXJl dHVybiAtRUJVU1k7CisKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhk ZXYsIHN0YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBUaGlzIGlz IHRoZSBwb2ludCBvZiBubyByZXR1cm4gLSBldmVyeXRoaW5nIGJlbG93IG5ldmVyIGZhaWxzIGV4 Y2VwdAorCSAqIHdoZW4gdGhlIGh3IGdvZXMgYm9uZ2hpdHMuIFdoaWNoIG1lYW5zIHdlIGNhbiBj b21taXQgdGhlIG5ldyBzdGF0ZSBvbgorCSAqIHRoZSBzb2Z0d2FyZSBzaWRlIG5vdy4KKwkgKi8K KworCWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2LCBzdGF0ZSk7CisKKwkvKgorCSAq IEV2ZXJ5dGhpbmcgYmVsb3cgY2FuIGJlIHJ1biBhc3luY2hyb25vdXNseSB3aXRob3UgdGhlIG5l ZWQgdG8gZ3JhYgorCSAqIGFueSBtb2Rlc2V0IGxvY2tzIGF0IGFsbCB1bmRlciBvbmUgY29uZGl0 aW9uczogSXQgbXVzdCBiZSBndWFyYW50ZWVkCisJICogdGhhdCB0aGUgYXN5bmNocm9ub3VzIHdv cmsgaGFzIGVpdGhlciBiZWVuIGNhbmNlbGxlZCAoaWYgdGhlIGRyaXZlcgorCSAqIHN1cHBvcnRz IGl0LCB3aGljaCBhdCBsZWFzdCByZXF1aXJlcyB0aGF0IHRoZSBmcmFtZWJ1ZmZlcnMgZ2V0CisJ ICogY2xlYW5lZCB1cCB3aXRoIGRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKCkpIG9y IGNvbXBsZXRlZAorCSAqIGJlZm9yZSB0aGUgbmV3IHN0YXRlIGdldHMgY29tbWl0dGVkIG9uIHRo ZSBzb2Z0d2FyZSBzaWRlIHdpdGgKKwkgKiBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKCku CisJICoKKwkgKiBUaGlzIHNjaGVtZSBhbGxvd3MgbmV3IGF0b21pYyBzdGF0ZSB1cGRhdGVzIHRv IGJlIHByZXBhcmVkIGFuZAorCSAqIGNoZWNrZWQgaW4gcGFyYWxsZWwgdG8gdGhlIGFzeW5jaHJv bm91cyBjb21wbGV0aW9uIG9mIHRoZSBwcmV2aW91cworCSAqIHVwZGF0ZS4gV2hpY2ggaXMgaW1w b3J0YW50IHNpbmNlIGNvbXBvc2l0b3JzIG5lZWQgdG8gZmlndXJlIG91dCB0aGUKKwkgKiBjb21w b3NpdGlvbiBvZiB0aGUgbmV4dCBmcmFtZSByaWdodCBhZnRlciBoYXZpbmcgc3VibWl0dGVkIHRo ZQorCSAqIGN1cnJlbnQgbGF5b3V0LgorCSAqLworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X3ByZV9wbGFuZXMoZGV2LCBzdGF0ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxh bmVzKGRldiwgc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3Bvc3RfcGxhbmVz KGRldiwgc3RhdGUpOworCisJd2FpdF9mb3JfdmJsYW5rcyhkZXYsIHN0YXRlKTsKKworCWRybV9h dG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOworCisJZHJtX2F0b21pY19z dGF0ZV9mcmVlKHN0YXRlKTsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fYXRv bWljX2hlbHBlcl9jb21taXQpOworCiAvKioKICAqIGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVf cGxhbmVzIC0gcHJlcGFyZSBwbGFuZSByZXNvdXJjZXMgYWZ0ZXIgY29tbWl0CiAgKiBAZGV2OiBE Uk0gZGV2aWNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKaW5kZXggOTVlY2JiMTMxMDUzLi40 NjcyOGE4YWM2MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKQEAgLTkyNyw2ICs5Mjcs NyBAQCBpbnQgZHJtX2hlbHBlcl9jcnRjX21vZGVfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZAogCiAJY3J0Y19zdGF0ZS0+ZW5hYmxlID0gdHJ1 ZTsKIAljcnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdlZCA9IHRydWU7CisJY3J0Y19zdGF0ZS0+bW9k ZV9jaGFuZ2VkID0gdHJ1ZTsKIAlkcm1fbW9kZV9jb3B5KCZjcnRjX3N0YXRlLT5tb2RlLCBtb2Rl KTsKIAlkcm1fbW9kZV9jb3B5KCZjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlLCBhZGp1c3RlZF9t b2RlKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaCBiL2lu Y2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKaW5kZXggNzk5MzhjNjJlN2FkLi45NzgxY2U3 MzllMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKKysrIGIv aW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaApAQCAtMzAsNiArMzAsMTQgQEAKIAogaW50 IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKK2ludCBkcm1fYXRvbWljX2hlbHBlcl9j b21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLAorCQkJICAgICBib29sIGFzeW5jKTsKKwordm9pZCBkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfcHJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQkgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29t bWl0X3Bvc3RfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCSAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSk7CiAKIGludCBkcm1fYXRvbWljX2hlbHBlcl9wcmVw YXJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgg Yi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmluZGV4IDc3ZmY4OTkyYTNiNy4uZGRmZjI1ZWIzNGQ0 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9jcnRjLmgKQEAgLTIyOSw2ICsyMjksOSBAQCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKIC8q KgogICogc3RydWN0IGRybV9jcnRjX3N0YXRlIC0gbXV0YWJsZSBjcnRjIHN0YXRlCiAgKiBAZW5h YmxlOiB3aGV0aGVyIHRoZSBDUlRDIHNob3VsZCBiZSBlbmFibGVkLCBnYXRlcyBhbGwgb3RoZXIg c3RhdGUKKyAqIEBtb2RlX2NoYW5nZWQ6IGZvciB1c2UgYnkgaGVscGVycyBhbmQgZHJpdmVycyB3 aGVuIGNvbXB1dGluZyBzdGF0ZSB1cGRhdGVzCisgKiBAbGFzdF92YmxhbmtfY291bnQ6IGZvciBo ZWxwZXJzIGFuZCBkcml2ZXJzIHRvIGNhcHR1cmUgdGhlIHZibGFuayBvZiB0aGUKKyAqIAl1cGRh dGUgdG8gZW5zdXJlIGZyYW1lYnVmZmVyIGNsZWFudXAgaXNuJ3QgZG9uZSB0b28gZWFybHkKICAq IEBwbGFuZXNfY2hhbmdlZDogZm9yIHVzZSBieSBoZWxwZXJzIGFuZCBkcml2ZXJzIHdoZW4gY29t cHV0aW5nIHN0YXRlIHVwZGF0ZXMKICAqIEBhZGp1c3RlZF9tb2RlOiBmb3IgdXNlIGJ5IGhlbHBl cnMgYW5kIGRyaXZlcnMgdG8gY29tcHV0ZSBhZGp1c3RlZCBtb2RlIHRpbWluZ3MKICAqIEBtb2Rl OiBjdXJyZW50IG1vZGUgdGltaW5ncwpAQCAtMjQxLDYgKzI0NCwxMCBAQCBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgewogCiAJLyogY29tcHV0ZWQgc3RhdGUgYml0cyB1c2VkIGJ5IGhlbHBlcnMgYW5k IGRyaXZlcnMgKi8KIAlib29sIHBsYW5lc19jaGFuZ2VkIDogMTsKKwlib29sIG1vZGVfY2hhbmdl ZCA6IDE7CisKKwkvKiBsYXN0X3ZibGFua19jb3VudDogZm9yIHZibGFuayB3YWl0cyBiZWZvcmUg Y2xlYW51cCAqLworCXUzMiBsYXN0X3ZibGFua19jb3VudDsKIAogCS8qIGFkanVzdGVkX21vZGU6 IGZvciB1c2UgYnkgaGVscGVycyBhbmQgZHJpdmVycyAqLwogCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlIGFkanVzdGVkX21vZGU7CkBAIC00MjYsMTEgKzQzMywxNCBAQCBzdHJ1Y3QgZHJtX2NydGMg ewogLyoqCiAgKiBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAtIG11dGFibGUgY29ubmVjdG9y IHN0YXRlCiAgKiBAY3J0YzogY3J0YyB0byBjb25uZWN0IGNvbm5lY3RvciB0bywgTlVMTCBpZiBk aXNhYmxlZAorICogQGJlc3RfZW5jb2RlcjogY2FuIGJlIHVzZWQgYnkgaGVscGVycyBhbmQgZHJp dmVycyB0byBzZWxlY3QgdGhlIGVuY29kZXIKICAqIEBzdGF0ZTogYmFja3BvaW50ZXIgdG8gZ2xv YmFsIGRybV9hdG9taWNfc3RhdGUKICAqLwogc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgewog CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAorCXN0cnVjdCBkcm1fZW5jb2RlciAqYmVzdF9lbmNv ZGVyOworCiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwogfTsKIAotLSAKMi4xLjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==