From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 07/17] drm: Add atomic/plane helpers Date: Sun, 2 Nov 2014 14:19:20 +0100 Message-ID: <1414934370-11924-8-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 VGhpcyBpcyB0aGUgZmlyc3QgY3V0IG9mIGF0b21pYyBoZWxwZXIgY29kZS4gQXMtaXMgaXQncyBv bmx5IHVzZWZ1bCB0bwppbXBsZW1lbnQgYSBwdXJlIGF0b21pYyBpbnRlcmZhY2UgZm9yIHBsYW5l IHVwZGF0ZXMuCgpMYXRlciBwYXRjaGVzIHdpbGwgaW50ZWdyYXRlIHRoaXMgd2l0aCB0aGUgY3J0 YyBoZWxwZXJzIHNvIHRoYXQgZnVsbAphdG9taWMgdXBkYXRlcyBhcmUgcG9zc2libGUuIFdlIGFs c28gbmVlZCBhIHBpbGUgb2YgaGVscGVycyB0byBhaWQKZHJpdmVycyBpbiB0cmFuc2l0aW9uaW5n IGZyb20gdGhlIGxlZ2FjeSB3b3JsZCB0byB0aGUgc2hpbnkgbmV3IGF0b21pYwphZ2UuIEZpbmFs bHkgd2UgbmVlZCBoZWxwZXJzIHRvIGltcGxlbWVudCBsZWdhY3kgaW9jdGxzIG9uIHRvcCBvZiB0 aGUKYXRvbWljIGludGVyZmFjZS4KClRoZSBkZXNpZ24gb2YgdGhlIG92ZXJhbGwgaGVscGVyczwt PmRyaXZlciBpbnRlcmFjdGlvbiBpcyBmYWlybHkKc2ltcGxlLCBidXQgaGFzIGFuIHVuZm9ydHVu YXRlIGxhcmdlIGludGVyZmFjZToKCi0gV2UgaGF2ZSAtPmF0b21pY19jaGVjayBjYWxsYmFja3Mg Zm9yIGNydGNzIGFuZCBwbGFuZXMuIFRoZSBpZGVhIGlzCiAgdGhhdCBjb25uZWN0b3JzIGRvbid0 IG5lZWQgYW55IGNoZWNraW5nLCBhbmQgaWYgdGhleSBkbyB0aGV5IGNhbgogIGFkanVzdCB0aGUg cmVsZXZhbnQgY3J0YyBkcml2ZXItcHJpdmF0ZSBzdGF0ZS4gU28gbm8gY29ubmVjdG9yIGhvb2tz CiAgc2hvdWxkIGJlIG5lZWRlZC4gQWxzbyB0aGUgY3J0YyBoZWxwZXJzIGludGVncmF0aW9uIHdp bGwgZG8gdGhlCiAgLT5iZXN0X2VuY29kZXIgY2hlY2tzLCBzbyBubyBuZWVkIGZvciB0aGF0LgoK LSBGcmFtZWJ1ZmZlciBwaW5uaW5nIG5lZWRzIHRvIGJlIGRvbmUgYmVmb3JlIHdlIGNhbiBjb21t aXQgdG8gdGhlIGh3CiAgc3RhdGUuIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIGFz eW5jIHVwZGF0ZXMgd2hlcmUgd2UgbXVzdAogIHBpbiBhbGwgYnVmZmVycyBiZWZvcmUgcmV0dXJu aW5nIHRvIHVzZXJzcGFjZSwgc28gdGhhdCByZWFsbHkgb25seQogIGh3IGZhaWx1cmVzIGNhbiBo YXBwZW4gaW4gdGhlIGFzeW5jaHJvbm91cyB3b3JrZXIuCgogIEhlbmNlIHdlIGFkZCAtPnByZXBh cmVfZmIgYW5kIC0+Y2xlYW51cF9mYiBob29rcyBmb3IgdGhpcyByZXNvdXJjZXMKICBtYW5hZ2Vt ZW50LgoKLSBUaGUgYWN0dWFsIGF0b21pYyBwbGFuZSBjb21taXQgY2FuJ3QgZmFpbCAoZXhjZXB0 IGh3IHdvZXMpLCBzbyBoYXMKICB2b2lkIHJldHVybiB0eXBlLiBJdCBoYXMgdGhyZWUgc3RhZ2Vz OgogIDEuIFByZXBhcmUgYWxsIGFmZmVjdGVkIGNydGNzIHdpdGggY3J0Yy0+YXRvbWljX2JlZ2lu LiBEcml2ZXJzIGNhbgogICAgIHVzZSB0aGlzIHRvIHVuc2V0IHRoZSBHTyBiaXQgb3Igc2ltaWxh ciBsYXRjaGVzIHRvIHByZXZlbnQgcGxhbmUKICAgICB1cGRhdGVzLgogIDIuIFVwZGF0ZSBwbGFu ZSBzdGF0ZSBieSBsb29waW5nIG92ZXIgYWxsIGNoYW5nZWQgcGxhbmVzIGFuZCBjYWxsaW5nCiAg ICAgcGxhbmUtPmF0b21pY191cGRhdGUuIFByZXN1bWluZyB0aGUgaGFyZHdhcmUgaXMgc2FuZSBh bmQgaGFzIEdPCiAgICAgYml0cyBkcml2ZXJzIGNhbiBzaW1wbHkgYmFzaCB0aGUgc3RhdGUgaW50 byB0aGUgaGFyZHdhcmUgaW4gdGhpcwogICAgIGZ1bmN0aW9uLiBPdGhlciBkcml2ZXJzIG1pZ2h0 IHVzZSB0aGlzIHRvIHByZWNvbXB1dGUgaHcgc3RhdGUgZm9yCiAgICAgdGhlIGZpbmFsIHN0ZXAu CiAgMy4gRmluYWxseSBsYXRjaCB0aGUgdXBkYXRlIGZvciB0aGUgbmV4dCB2Ymxhbmsgd2l0aAog ICAgIGNydGMtPmF0b21pY19mbHVzaC4gTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBu ZWVkIHRvIHdhaXQKICAgICBmb3IgdGhlIHZibGFuayB0byBoYXBwZW4gZXZlbiBmb3IgdGhlIHN5 bmNocm9ub3VzIGNhc2UuCgp2MjogQ2xlYXIgZHJtXzxvYmo+X3N0YXRlLT5zdGF0ZSB0byBOVUxM IHdoZW4gc3dhcHBpbmcgaW4gc3RhdGUuCgp2MzogQWRkIFRPRE8gdGhhdCB3ZSBkb24ndCBzaG9y dC1jaXJjdWl0IHBsYW5lIHVwZGF0ZXMgZm9yIG5vdy4gTGlrZWx5Cm5vIG9uZSB3aWxsIGNhcmUu Cgp2NDogU3F1YXNoIGluIGEgYml0IG9mIHBvbGlzaCB0aGF0IHNvbWVob3cgbGFuZGVkIGluIHRo ZSB3cm9uZyAobGF0ZXIpCnBhdGNoZS4KCnY1OiBJbnRlZ3JhdGUgYXRvbWljIGZ1bmN0aW9ucyBp bnRvIHRoZSBkcm0gZG9jYm9vayBhbmQgZml4dXAgdGhlCmtlcm5lbGRvYy4KCnY2OiBGaXh1cCBm aXh1cCBwYXRjaCBzcXVhc2hpbmcgZnVtYmxlLgoKdjc6IERvbid0IHRvdWNoIHRoZSBsZWdhY3kg cGxhbmUgc3RhdGUgcGxhbmUtPmZiIGFuZCBwbGFuZS0+Y3J0Yy4gVGhpcwppcyBvbmx5IHVzZWQg YnkgdGhlIGxlZ2FjeSBpb2N0bCBjb2RlIGluIHRoZSBkcm0gY29yZSwgYW5kIHRoYXQgY29kZQph bHJlYWR5IHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgdGhlIHBvaW50ZXJzIGluIGFsbCByZWxldmFu dCBjYXNlcy4KVGhpcyBpcyBpbiBzdGFyayBjb250cmFzdCB0byBjb25uZWN0b3ItPmVuY29kZXIt PmNydGMgbGlua3Mgb24gdGhlCm1vZGVzZXQgc2lkZSwgd2hpY2ggd2Ugc3RpbGwgbmVlZCB0byBz ZXQgc2luY2UgdGhlIGNvcmUgZG9lc24ndCB0b3VjaAp0aGVtLgoKQWxzbyBzb21lIG1vcmUga2Vy bmVsZG9jIHBvbGlzaC4KCnY4OiBEcm9wIG91dGRhdGVkIGNvbW1lbnQuCgp2OTogSGFuZGxlIHRo ZSBzdGF0ZS0+c3RhdGUgcG9pbnRlciBjb3JyZWN0bHk6IE9ubHkgY2xlYXJpbmcgdGhlCi0+c3Rh dGUgcG9pbnRlciB3aGVuIGFzc2lnbmluZyB0aGUgc3RhdGUgdG8gdGhlIGttcyBvYmplY3QgaXNu J3QgZ29vZAplbm91Z2guIFdlIGFsc28gbmVlZCB0byByZS1saW5rIHRoZSBzd2FwcGVkIG91dCBz dGF0ZSBpbnRvIHRoZQpkcm1fYXRvbWljX3N0YXRlIHN0cnVjdHVyZS4KClNpZ25lZC1vZmYtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQogRG9jdW1lbnRhdGlv bi9Eb2NCb29rL2RybS50bXBsICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl ICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5j IHwgMzU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0v ZHJtX2F0b21pY19oZWxwZXIuaCAgICAgfCAgNDQgKysrKysKIGluY2x1ZGUvZHJtL2RybV9jcnRj LmggICAgICAgICAgICAgIHwgICA2ICsKIGluY2x1ZGUvZHJtL2RybV9jcnRjX2hlbHBlci5oICAg ICAgIHwgICA2ICsKIGluY2x1ZGUvZHJtL2RybV9wbGFuZV9oZWxwZXIuaCAgICAgIHwgIDIyICsr KwogNyBmaWxlcyBjaGFuZ2VkLCA0MzggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAoKZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9v ay9kcm0udG1wbAppbmRleCA4OTgyOWFlNThlOTcuLmVhMGVmNDNiMTllMSAxMDA2NDQKLS0tIGEv RG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9v ay9kcm0udG1wbApAQCAtOTk2LDYgKzk5NiwxMCBAQCBpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0 Ozwvc3lub3BzaXM+CiAhRWRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMuYwogICAgIDwvc2VjdDI+ CiAgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkF0b21pYyBNb2RlIFNldHRpbmcgRnVuY3Rpb24g UmVmZXJlbmNlPC90aXRsZT4KKyFFZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYworICAgIDwv c2VjdDI+CisgICAgPHNlY3QyPgogICAgICAgPHRpdGxlPkZyYW1lIEJ1ZmZlciBDcmVhdGlvbjwv dGl0bGU+CiAgICAgICA8c3lub3BzaXM+c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqKCpmYl9jcmVh dGUpKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQppbmRleCAyZTg5Y2Q1MGMxNGYuLjk2MzM4ZTM0OWEyNCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZQpAQCAtMjQsNyArMjQsNyBAQCBkcm0tJChDT05GSUdfRFJNX1BBTkVMKSArPSBkcm1fcGFu ZWwubwogZHJtLSQoQ09ORklHX09GKSArPSBkcm1fb2YubwogCiBkcm1fa21zX2hlbHBlci15IDo9 IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAot CQlkcm1fcGxhbmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vCisJCWRybV9wbGFuZV9o ZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0b21pY19oZWxwZXIubwogZHJtX2tt c19oZWxwZXItJChDT05GSUdfRFJNX0xPQURfRURJRF9GSVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9h ZC5vCiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fS01TX0ZCX0hFTFBFUikgKz0gZHJtX2Zi X2hlbHBlci5vCiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fS01TX0NNQV9IRUxQRVIpICs9 IGRybV9mYl9jbWFfaGVscGVyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NWE4ZWIyNjc4YjAKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwpAQCAtMCwwICsx LDM1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBSZWQgSGF0CisgKiBDb3B5cmlnaHQg KEMpIDIwMTQgSW50ZWwgQ29ycC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IK KyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICog Um9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgorICogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBmZndsbC5jaD4KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorCitzdGF0aWMgdm9pZAorZHJtX2F0b21p Y19oZWxwZXJfcGxhbmVfY2hhbmdlZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJ CQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCisJCQkJc3RydWN0IGRybV9w bGFuZSAqcGxhbmUpCit7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCisJ aWYgKHBsYW5lLT5zdGF0ZS0+Y3J0YykgeworCQljcnRjX3N0YXRlID0gc3RhdGUtPmNydGNfc3Rh dGVzW2RybV9jcnRjX2luZGV4KHBsYW5lLT5jcnRjKV07CisKKwkJaWYgKFdBUk5fT04oIWNydGNf c3RhdGUpKQorCQkJcmV0dXJuOworCisJCWNydGNfc3RhdGUtPnBsYW5lc19jaGFuZ2VkID0gdHJ1 ZTsKKwl9CisKKwlpZiAocGxhbmVfc3RhdGUtPmNydGMpIHsKKwkJY3J0Y19zdGF0ZSA9CisJCQlz dGF0ZS0+Y3J0Y19zdGF0ZXNbZHJtX2NydGNfaW5kZXgocGxhbmVfc3RhdGUtPmNydGMpXTsKKwor CQlpZiAoV0FSTl9PTighY3J0Y19zdGF0ZSkpCisJCQlyZXR1cm47CisKKwkJY3J0Y19zdGF0ZS0+ cGxhbmVzX2NoYW5nZWQgPSB0cnVlOworCX0KK30KKworLyoqCisgKiBkcm1fYXRvbWljX2hlbHBl cl9jaGVjayAtIHZhbGlkYXRlIHN0YXRlIG9iamVjdAorICogQGRldjogRFJNIGRldmljZQorICog QHN0YXRlOiB0aGUgZHJpdmVyIHN0YXRlIG9iamVjdAorICoKKyAqIENoZWNrIHRoZSBzdGF0ZSBv YmplY3QgdG8gc2VlIGlmIHRoZSByZXF1ZXN0ZWQgc3RhdGUgaXMgcGh5c2ljYWxseSBwb3NzaWJs ZS4KKyAqIE9ubHkgY3J0Y3MgYW5kIHBsYW5lcyBoYXZlIGNoZWNrIGNhbGxiYWNrcywgc28gZm9y IGFueSBhZGRpdGlvbmFsIChnbG9iYWwpCisgKiBjaGVja2luZyB0aGF0IGEgZHJpdmVyIG5lZWRz IGl0IGNhbiBzaW1wbHkgd3JhcCB0aGF0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uLgorICogRHJpdmVy cyB3aXRob3V0IHN1Y2ggbmVlZHMgY2FuIGRpcmVjdGx5IHVzZSB0aGlzIGFzIHRoZWlyIC0+YXRv bWljX2NoZWNrKCkKKyAqIGNhbGxiYWNrLgorICoKKyAqIFJFVFVSTlMKKyAqIFplcm8gZm9yIHN1 Y2Nlc3Mgb3IgLWVycm5vCisgKi8KK2ludCBkcm1fYXRvbWljX2hlbHBlcl9jaGVjayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAorCQkJICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK K3sKKwlpbnQgbnBsYW5lcyA9IGRldi0+bW9kZV9jb25maWcubnVtX3RvdGFsX3BsYW5lOworCWlu dCBuY3J0Y3MgPSBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOworCWludCBpLCByZXQgPSAwOwor CisJZm9yIChpID0gMDsgaSA8IG5wbGFuZXM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX3BsYW5lX2hl bHBlcl9mdW5jcyAqZnVuY3M7CisJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gc3RhdGUtPnBs YW5lc1tpXTsKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSBzdGF0ZS0+ cGxhbmVfc3RhdGVzW2ldOworCisJCWlmICghcGxhbmUpCisJCQljb250aW51ZTsKKworCQlmdW5j cyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKKworCQlkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9j aGFuZ2VkKHN0YXRlLCBwbGFuZV9zdGF0ZSwgcGxhbmUpOworCisJCWlmICghZnVuY3MgfHwgIWZ1 bmNzLT5hdG9taWNfY2hlY2spCisJCQljb250aW51ZTsKKworCQlyZXQgPSBmdW5jcy0+YXRvbWlj X2NoZWNrKHBsYW5lLCBwbGFuZV9zdGF0ZSk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9ERUJVR19L TVMoIltQTEFORTolZF0gYXRvbWljIGNoZWNrIGZhaWxlZFxuIiwKKwkJCQkgICAgICBwbGFuZS0+ YmFzZS5pZCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5j cnRjczsgaSsrKSB7CisJCXN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0Y3NbaV07CisKKwkJaWYgKCFjcnRjKQor CQkJY29udGludWU7CisKKwkJZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0ZTsKKworCQlpZiAo IWZ1bmNzIHx8ICFmdW5jcy0+YXRvbWljX2NoZWNrKQorCQkJY29udGludWU7CisKKwkJcmV0ID0g ZnVuY3MtPmF0b21pY19jaGVjayhjcnRjLCBzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV0pOworCQlpZiAo cmV0KSB7CisJCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gYXRvbWljIGNoZWNrIGZhaWxlZFxu IiwKKwkJCQkgICAgICBjcnRjLT5iYXNlLmlkKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisK KwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVjayk7 CisKKy8qKgorICogZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMgLSBwcmVwYXJlIHBs YW5lIHJlc291cmNlcyBhZnRlciBjb21taXQKKyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBzdGF0 ZTogYXRvbWljIHN0YXRlIG9iamVjdCB3aXRoIG9sZCBzdGF0ZSBzdHJ1Y3R1cmVzCisgKgorICog VGhpcyBmdW5jdGlvbiBwcmVwYXJlcyBwbGFuZSBzdGF0ZSwgc3BlY2lmaWNhbGx5IGZyYW1lYnVm ZmVycywgZm9yIHRoZSBuZXcKKyAqIGNvbmZpZ3VyYXRpb24uIElmIGFueSBmYWlsdXJlIGlzIGVu Y291bnRlcmVkIHRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsCisgKiAtPmNsZWFudXBfZmIgb24gYW55 IGFscmVhZHkgc3VjY2Vzc2Z1bGx5IHByZXBhcmVkIGZyYW1lYnVmZmVyLgorICoKKyAqIFJldHVy bnM6CisgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAq LworaW50IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJaW50 IG5wbGFuZXMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFuZTsKKwlpbnQgcmV0LCBp OworCisJZm9yIChpID0gMDsgaSA8IG5wbGFuZXM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX3BsYW5l X2hlbHBlcl9mdW5jcyAqZnVuY3M7CisJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gc3RhdGUt PnBsYW5lc1tpXTsKKwkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CisKKwkJaWYgKCFwbGFu ZSkKKwkJCWNvbnRpbnVlOworCisJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOworCisJ CWZiID0gc3RhdGUtPnBsYW5lX3N0YXRlc1tpXS0+ZmI7CisKKwkJaWYgKGZiICYmIGZ1bmNzLT5w cmVwYXJlX2ZiKSB7CisJCQlyZXQgPSBmdW5jcy0+cHJlcGFyZV9mYihwbGFuZSwgZmIpOworCQkJ aWYgKHJldCkKKwkJCQlnb3RvIGZhaWw7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKKworZmFpbDoK Kwlmb3IgKGktLTsgaSA+PSAwOyBpLS0pIHsKKwkJc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVu Y3MgKmZ1bmNzOworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHN0YXRlLT5wbGFuZXNbaV07 CisJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOworCisJCWlmICghcGxhbmUpCisJCQljb250 aW51ZTsKKworCQlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKKworCQlmYiA9IHN0YXRl LT5wbGFuZV9zdGF0ZXNbaV0tPmZiOworCisJCWlmIChmYiAmJiBmdW5jcy0+Y2xlYW51cF9mYikK KwkJCWZ1bmNzLT5jbGVhbnVwX2ZiKHBsYW5lLCBmYik7CisKKwl9CisKKwlyZXR1cm4gcmV0Owor fQorRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyk7CisKKy8q KgorICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyAtIGNvbW1pdCBwbGFuZSBzdGF0 ZQorICogQGRldjogRFJNIGRldmljZQorICogQHN0YXRlOiBhdG9taWMgc3RhdGUKKyAqCisgKiBU aGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhlIG5ldyBwbGFuZSBzdGF0ZSB1c2luZyB0aGUgcGxhbmUg YW5kIGF0b21pYyBoZWxwZXIKKyAqIGZ1bmN0aW9ucyBmb3IgcGxhbmVzIGFuZCBjcnRjcy4gSXQg YXNzdW1lcyB0aGF0IHRoZSBhdG9taWMgc3RhdGUgaGFzIGFscmVhZHkKKyAqIGJlZW4gcHVzaGVk IGludG8gdGhlIHJlbGV2YW50IG9iamVjdCBzdGF0ZSBwb2ludGVycywgc2luY2UgdGhpcyBzdGVw IGNhbiBubworICogbG9uZ2VyIGZhaWwuCisgKgorICogSXQgc3RpbGwgcmVxdWlyZXMgdGhlIGds b2JhbCBzdGF0ZSBvYmplY3QgQHN0YXRlIHRvIGtub3cgd2hpY2ggcGxhbmVzIGFuZAorICogY3J0 Y3MgbmVlZCB0byBiZSB1cGRhdGVkIHRob3VnaC4KKyAqLwordm9pZCBkcm1fYXRvbWljX2hlbHBl cl9jb21taXRfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJaW50IG5wbGFuZXMgPSBkZXYtPm1vZGVfY29u ZmlnLm51bV90b3RhbF9wbGFuZTsKKwlpbnQgbmNydGNzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YzsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuY3J0Y3M7IGkrKykgeworCQlzdHJ1 Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5jczsKKwkJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gc3RhdGUtPmNydGNzW2ldOworCisJCWlmICghY3J0YykKKwkJCWNvbnRpbnVlOworCisJCWZ1 bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7CisKKwkJaWYgKCFmdW5jcyB8fCAhZnVuY3MtPmF0 b21pY19iZWdpbikKKwkJCWNvbnRpbnVlOworCisJCWZ1bmNzLT5hdG9taWNfYmVnaW4oY3J0Yyk7 CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5wbGFuZXM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX3Bs YW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7CisJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gc3Rh dGUtPnBsYW5lc1tpXTsKKworCQlpZiAoIXBsYW5lKQorCQkJY29udGludWU7CisKKwkJZnVuY3Mg PSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7CisKKwkJaWYgKCFmdW5jcyB8fCAhZnVuY3MtPmF0b21p Y191cGRhdGUpCisJCQljb250aW51ZTsKKworCQlmdW5jcy0+YXRvbWljX3VwZGF0ZShwbGFuZSk7 CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5jcnRjczsgaSsrKSB7CisJCXN0cnVjdCBkcm1fY3J0 Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+ Y3J0Y3NbaV07CisKKwkJaWYgKCFjcnRjKQorCQkJY29udGludWU7CisKKwkJZnVuY3MgPSBjcnRj LT5oZWxwZXJfcHJpdmF0ZTsKKworCQlpZiAoIWZ1bmNzIHx8ICFmdW5jcy0+YXRvbWljX2ZsdXNo KQorCQkJY29udGludWU7CisKKwkJZnVuY3MtPmF0b21pY19mbHVzaChjcnRjKTsKKwl9Cit9CitF WFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMpOworCisvKioKKyAq IGRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzIC0gY2xlYW51cCBwbGFuZSByZXNvdXJj ZXMgYWZ0ZXIgY29tbWl0CisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAb2xkX3N0YXRlOiBhdG9t aWMgc3RhdGUgb2JqZWN0IHdpdGggb2xkIHN0YXRlIHN0cnVjdHVyZXMKKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGNsZWFucyB1cCBwbGFuZSBzdGF0ZSwgc3BlY2lmaWNhbGx5IGZyYW1lYnVmZmVycywg ZnJvbSB0aGUgb2xkCisgKiBjb25maWd1cmF0aW9uLiBIZW5jZSB0aGUgb2xkIGNvbmZpZ3VyYXRp b24gbXVzdCBiZSBwZXJzZXJ2ZWQgaW4gQG9sZF9zdGF0ZSB0bworICogYmUgYWJsZSB0byBjYWxs IHRoaXMgZnVuY3Rpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBtdXN0IGFsc28gYmUgY2FsbGVk IG9uIHRoZSBuZXcgc3RhdGUgd2hlbiB0aGUgYXRvbWljIHVwZGF0ZQorICogZmFpbHMgYXQgYW55 IHBvaW50IGFmdGVyIGNhbGxpbmcgZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoKS4K KyAqLwordm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorCQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp Cit7CisJaW50IG5wbGFuZXMgPSBkZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFuZTsKKwlp bnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBucGxhbmVzOyBpKyspIHsKKwkJc3RydWN0IGRybV9w bGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IG9s ZF9zdGF0ZS0+cGxhbmVzW2ldOworCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmI7CisK KwkJaWYgKCFwbGFuZSkKKwkJCWNvbnRpbnVlOworCisJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9w cml2YXRlOworCisJCW9sZF9mYiA9IG9sZF9zdGF0ZS0+cGxhbmVfc3RhdGVzW2ldLT5mYjsKKwor CQlpZiAob2xkX2ZiICYmIGZ1bmNzLT5jbGVhbnVwX2ZiKQorCQkJZnVuY3MtPmNsZWFudXBfZmIo cGxhbmUsIG9sZF9mYik7CisJfQorfQorRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9j bGVhbnVwX3BsYW5lcyk7CisKKy8qKgorICogZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZSAt IHN0b3JlIGF0b21pYyBzdGF0ZSBpbnRvIGN1cnJlbnQgc3cgc3RhdGUKKyAqIEBkZXY6IERSTSBk ZXZpY2UKKyAqIEBzdGF0ZTogYXRvbWljIHN0YXRlCisgKgorICogVGhpcyBmdW5jdGlvbiBzdG9y ZXMgdGhlIGF0b21pYyBzdGF0ZSBpbnRvIHRoZSBjdXJyZW50IHN0YXRlIHBvaW50ZXJzIGluIGFs bAorICogZHJpdmVyIG9iamVjdHMuIEl0IHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgYWxsIGZhaWxp bmcgc3RlcHMgaGF2ZSBiZWVuIGRvbmUKKyAqIGFuZCBzdWNjZWVkZWQsIGJ1dCBiZWZvcmUgdGhl IGFjdHVhbCBoYXJkd2FyZSBzdGF0ZSBpcyBjb21taXR0ZWQuCisgKgorICogRm9yIGNsZWFudXAg YW5kIGVycm9yIHJlY292ZXJ5IHRoZSBjdXJyZW50IHN0YXRlIGZvciBhbGwgY2hhbmdlZCBvYmpl Y3RzIHdpbGwKKyAqIGJlIHN3YXBlZCBpbnRvIEBzdGF0ZS4KKyAqCisgKiBXaXRoIHRoYXQgc2Vx dWVuY2UgaXQgZml0cyBwZXJmZWN0bHkgaW50byB0aGUgcGxhbmUgcHJlcGFyZS9jbGVhbnVwIHNl cXVlbmNlOgorICoKKyAqIDEuIENhbGwgZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMo KSB3aXRoIHRoZSBzdGFnZWQgYXRvbWljIHN0YXRlLgorICoKKyAqIDIuIERvIGFueSBvdGhlciBz dGVwcyB0aGF0IG1pZ2h0IGZhaWwuCisgKgorICogMy4gUHV0IHRoZSBzdGFnZWQgc3RhdGUgaW50 byB0aGUgY3VycmVudCBzdGF0ZSBwb2ludGVycyB3aXRoIHRoaXMgZnVuY3Rpb24uCisgKgorICog NC4gQWN0dWFsbHkgY29tbWl0IHRoZSBoYXJkd2FyZSBzdGF0ZS4KKyAqCisgKiA1LiBDYWxsIGRy bV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzIHdpdGggQHN0YXRlLCB3aGljaCBzaW5jZSBz dGVwIDMKKyAqIGNvbnRhaW5zIHRoZSBvbGQgc3RhdGUuIEFsc28gZG8gYW55IG90aGVyIGNsZWFu dXAgcmVxdWlyZWQgd2l0aCB0aGF0IHN0YXRlLgorICovCit2b2lkIGRybV9hdG9taWNfaGVscGVy X3N3YXBfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1v ZGVfY29uZmlnLm51bV9jb25uZWN0b3I7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yID0gc3RhdGUtPmNvbm5lY3RvcnNbaV07CisKKwkJaWYgKCFjb25uZWN0b3IpCisJ CQljb250aW51ZTsKKworCQljb25uZWN0b3ItPnN0YXRlLT5zdGF0ZSA9IHN0YXRlOworCQlzd2Fw KHN0YXRlLT5jb25uZWN0b3Jfc3RhdGVzW2ldLCBjb25uZWN0b3ItPnN0YXRlKTsKKwkJY29ubmVj dG9yLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1v ZGVfY29uZmlnLm51bV9jcnRjOyBpKyspIHsKKwkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3Rh dGUtPmNydGNzW2ldOworCisJCWlmICghY3J0YykKKwkJCWNvbnRpbnVlOworCisJCWNydGMtPnN0 YXRlLT5zdGF0ZSA9IHN0YXRlOworCQlzd2FwKHN0YXRlLT5jcnRjX3N0YXRlc1tpXSwgY3J0Yy0+ c3RhdGUpOworCQljcnRjLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBkZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFuZTsgaSsrKSB7CisJCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lID0gc3RhdGUtPnBsYW5lc1tpXTsKKworCQlpZiAoIXBsYW5lKQorCQkJ Y29udGludWU7CisKKwkJcGxhbmUtPnN0YXRlLT5zdGF0ZSA9IHN0YXRlOworCQlzd2FwKHN0YXRl LT5wbGFuZV9zdGF0ZXNbaV0sIHBsYW5lLT5zdGF0ZSk7CisJCXBsYW5lLT5zdGF0ZS0+c3RhdGUg PSBOVUxMOworCX0KK30KK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0 ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oIGIvaW5jbHVk ZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjc5OTM4YzYyZTdhZAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg MjAxNCBSZWQgSGF0CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSW50ZWwgQ29ycC4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMp IE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29t PgorICogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KKyAqLworCisjaWZu ZGVmIERSTV9BVE9NSUNfSEVMUEVSX0hfCisjZGVmaW5lIERSTV9BVE9NSUNfSEVMUEVSX0hfCisK K2ludCBkcm1fYXRvbWljX2hlbHBlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJ ICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CisKK2ludCBkcm1fYXRvbWljX2hl bHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29t bWl0X3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFu ZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqb2xkX3N0YXRlKTsKKwordm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpOworCisjZW5kaWYgLyogRFJNX0FUT01JQ19IRUxQRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmluZGV4IGMzY2U1 YjM2ZGE1Zi4uZDAwNjhiN2FmNjc4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5o CisrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKQEAgLTIyOSw2ICsyMjksNyBAQCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZTsKIC8qKgogICogc3RydWN0IGRybV9jcnRjX3N0YXRlIC0gbXV0YWJs ZSBjcnRjIHN0YXRlCiAgKiBAZW5hYmxlOiB3aGV0aGVyIHRoZSBDUlRDIHNob3VsZCBiZSBlbmFi bGVkLCBnYXRlcyBhbGwgb3RoZXIgc3RhdGUKKyAqIEBwbGFuZXNfY2hhbmdlZDogZm9yIHVzZSBi eSBoZWxwZXJzIGFuZCBkcml2ZXJzIHdoZW4gY29tcHV0aW5nIHN0YXRlIHVwZGF0ZXMKICAqIEBt b2RlOiBjdXJyZW50IG1vZGUgdGltaW5ncwogICogQGV2ZW50OiBvcHRpb25hbCBwb2ludGVyIHRv IGEgRFJNIGV2ZW50IHRvIHNpZ25hbCB1cG9uIGNvbXBsZXRpb24gb2YgdGhlCiAgKiAJc3RhdGUg dXBkYXRlCkBAIC0yMzcsNiArMjM4LDkgQEAgc3RydWN0IGRybV9hdG9taWNfc3RhdGU7CiBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgewogCWJvb2wgZW5hYmxlICAgICAgICA6IDE7CiAKKwkvKiBjb21w dXRlZCBzdGF0ZSBiaXRzIHVzZWQgYnkgaGVscGVycyBhbmQgZHJpdmVycyAqLworCWJvb2wgcGxh bmVzX2NoYW5nZWQgOiAxOworCiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbW9kZTsKIAogCXN0 cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OwpAQCAtNzQ4LDYgKzc1Miw4IEBA IHN0cnVjdCBkcm1fcGxhbmUgewogCiAJZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlOwogCisJdm9p ZCAqaGVscGVyX3ByaXZhdGU7CisKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZTsKIH07 CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjX2hlbHBlci5oIGIvaW5jbHVkZS9k cm0vZHJtX2NydGNfaGVscGVyLmgKaW5kZXggYTNkNzVmZWZkMDEwLi5hZGVjNDhiMjdhYTUgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJt L2RybV9jcnRjX2hlbHBlci5oCkBAIC04MSw2ICs4MSwxMiBAQCBzdHJ1Y3QgZHJtX2NydGNfaGVs cGVyX2Z1bmNzIHsKIAogCS8qIGRpc2FibGUgY3J0YyB3aGVuIG5vdCBpbiB1c2UgLSBtb3JlIGV4 cGxpY2l0IHRoYW4gZHBtcyBvZmYgKi8KIAl2b2lkICgqZGlzYWJsZSkoc3RydWN0IGRybV9jcnRj ICpjcnRjKTsKKworCS8qIGF0b21pYyBoZWxwZXJzICovCisJaW50ICgqYXRvbWljX2NoZWNrKShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0 ZSk7CisJdm9pZCAoKmF0b21pY19iZWdpbikoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKKwl2b2lk ICgqYXRvbWljX2ZsdXNoKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogfTsKIAogLyoqCmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcGxhbmVfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1f cGxhbmVfaGVscGVyLmgKaW5kZXggMGUxZGNiMTYzYjgxLi5jMjE0NmE3ZDkxZmIgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZV9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1f cGxhbmVfaGVscGVyLmgKQEAgLTQ2LDYgKzQ2LDI4IEBAIGV4dGVybiBpbnQgZHJtX2NydGNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJ CSBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgKmZ1bmNzKTsKIAorLyoqCisgKiBkcm1fcGxh bmVfaGVscGVyX2Z1bmNzIC0gaGVscGVyIG9wZXJhdGlvbnMgZm9yIENSVENzCisgKgorICogVGhl IGhlbHBlciBvcGVyYXRpb25zIGFyZSBjYWxsZWQgYnkgdGhlIG1pZC1sYXllciBDUlRDIGhlbHBl ci4KKyAqLworc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgeworCWludCAoKnByZXBhcmVf ZmIpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYik7CisJdm9pZCAoKmNsZWFudXBfZmIpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJ ICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOworCisJaW50ICgqYXRvbWljX2NoZWNrKShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpz dGF0ZSk7CisJdm9pZCAoKmF0b21pY191cGRhdGUpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsK K307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fcGxhbmVfaGVscGVyX2FkZChzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKKwkJCQkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mg KmZ1bmNzKQoreworCXBsYW5lLT5oZWxwZXJfcHJpdmF0ZSA9ICh2b2lkICopZnVuY3M7Cit9CisK IGV4dGVybiBpbnQgZHJtX3BsYW5lX2hlbHBlcl9jaGVja191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJCQkJCSBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCSBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwKLS0gCjIuMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=