From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 01/29] drm/i915/gvt: Introduce the basic architecture of GVT-g Date: Thu, 28 Jan 2016 18:21:23 +0800 Message-ID: <1453976511-27322-2-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D76DB6E7E9 for ; Thu, 28 Jan 2016 02:23:44 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSB2ZXJ5IGJhc2ljIGZyYW1ld29yayBvZiBHVlQtZyBk ZXZpY2UgbW9kZWwsCmluY2x1ZGVzIGJhc2ljIHByb3RvdHlwZXMsIGRlZmluaXRpb25zLCBpbml0 aWFsaXphdGlvbi4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4vaW50ZXJmYWNlLmggIHwg ICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcgICAgICAgICAgfCAgMTYgKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L01ha2VmaWxlICAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvZGVidWcuaCAgICAgIHwgIDcyICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9m Yl9kZWNvZGVyLmMgfCAgMzQgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29k ZXIuaCB8IDExMCArKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgICAg ICAgIHwgMzY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9ndnQuaCAgICAgICAgfCAxMzAgKysrKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmggIHwgIDMwICsrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L21wdC5oICAgICAgICB8ICA5NyArKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9wYXJhbXMuYyAgICAgfCAgMjkgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFy YW1zLmggICAgIHwgIDM0ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaCAgICAg ICAgfCAgMzQgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgICB8ICAx OSArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAgNiArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaCAgICAgIHwgICAzICsKIGluY2x1ZGUveGVuL2lu dGVyZmFjZS94ZW4uaCAgICAgICAgICAgfCAgIDEgKwogMTggZmlsZXMgY2hhbmdlZCwgOTkxIGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv TWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVi dWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNv ZGVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVj b2Rlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv aW5jbHVkZS9hc20veGVuL2ludGVyZmFjZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20veGVuL2lu dGVyZmFjZS5oCmluZGV4IDYyY2EwM2UuLjZmZjQ5ODYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3hlbi9pbnRlcmZhY2UuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4v aW50ZXJmYWNlLmgKQEAgLTczLDYgKzczLDkgQEAKICNlbmRpZgogCiAjaWZuZGVmIF9fQVNTRU1C TFlfXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKwogLyogRXhwbGljaXRseSBzaXplIGlu dGVnZXJzIHRoYXQgcmVwcmVzZW50IHBmbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UKICAqIHdp dGggWGVuIHNvIHRoYXQgb24gQVJNIHdlIGNhbiBoYXZlIG9uZSBBQkkgdGhhdCB3b3JrcyBmb3Ig MzIgYW5kIDY0CiAgKiBiaXQgZ3Vlc3RzLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKaW5kZXggMDUxZWFi My4uODlmZjcyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCkBAIC00NywzICs0NywxOSBAQCBjb25maWcg RFJNX0k5MTVfUFJFTElNSU5BUllfSFdfU1VQUE9SVAogCSAgb3B0aW9uIGNoYW5nZXMgdGhlIGRl ZmF1bHQgZm9yIHRoYXQgbW9kdWxlIG9wdGlvbi4KIAogCSAgSWYgaW4gZG91YnQsIHNheSAiTiIu CisKK2NvbmZpZyBJOTE1X0dWVAorICAgICAgICB0cmlzdGF0ZSAiR1ZULWcgaG9zdCBkcml2ZXIi CisgICAgICAgIGRlcGVuZHMgb24gRFJNX0k5MTUKKyAgICAgICAgc2VsZWN0IElSUV9XT1JLCisg ICAgICAgIGRlZmF1bHQgeQorICAgICAgICBoZWxwCisgICAgICAgICAgRW5hYmxpbmcgR1ZULWcg bWVkaWF0ZWQgZ3JhcGhpY3MgcGFzc3Rocm91Z2ggdGVjaG5pcXVlIGZvciBJbnRlbCBpOTE1Cisg ICAgICAgICAgYmFzZWQgaW50ZWdyYXRlZCBncmFwaGljcyBjYXJkLiBXaXRoIEdWVC1nLCBpdCdz IHBvc3NpYmxlIHRvIGhhdmUgb25lCisgICAgICAgICAgaW50ZWdyYXRlZCBpOTE1IGRldmljZSBz aGFyZWQgYnkgbXVsdGlwbGUgVk1zLiBQZXJmb3JtYW5jZSBjcml0aWNhbAorICAgICAgICAgIG9w dGVyYXRpb25zIHN1Y2ggYXMgYXBwZXJ0dXJlIGFjY2Vzc2VzIGFuZCByaW5nIGJ1ZmZlciBvcGVy YXRpb25zCisgICAgICAgICAgYXJlIHBhc3MtdGhyb3VnaGVkIHRvIFZNLCB3aXRoIGEgbWluaW1h bCBzZXQgb2YgY29uZmxpY3RpbmcgcmVzb3VyY2VzCisgICAgICAgICAgKGUuZy4gZGlzcGxheSBz ZXR0aW5ncykgbWVkaWF0ZWQgYnkgdkdUIGRyaXZlci4gVGhlIGJlbmVmaXQgb2YgdkdUCisgICAg ICAgICAgaXMgb24gYm90aCB0aGUgcGVyZm9ybWFuY2UsIGdpdmVuIHRoYXQgZWFjaCBWTSBjb3Vs ZCBkaXJlY3RseSBvcGVyYXRlCisgICAgICAgICAgaXRzIGFwZXJ0dXJlIHNwYWNlIGFuZCBzdWJt aXQgY29tbWFuZHMgbGlrZSBydW5uaW5nIG9uIG5hdGl2ZSwgYW5kCisgICAgICAgICAgdGhlIGZl YXR1cmUgY29tcGxldGVuZXNzLCBnaXZlbiB0aGF0IGEgdHJ1ZSBHRU4gaGFyZHdhcmUgaXMgZXhw b3NlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMDg1MWRlMDcuLmQ0ZGY0MTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCkBAIC05MSw2ICs5MSw4IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAog CSAgaW50ZWxfc2R2by5vIFwKIAkgIGludGVsX3R2Lm8KIAorb2JqLSQoQ09ORklHX0k5MTVfR1ZU KSAgKz0gZ3Z0LworCiAjIHZpcnR1YWwgZ3B1IGNvZGUKIGk5MTUteSArPSBpOTE1X3ZncHUubwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNjkzNWI3OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9NYWtlZmlsZQpAQCAtMCwwICsxLDUgQEAKK0dWVF9TT1VSQ0UgOj0gZ3Z0Lm8gcGFyYW1zLm8g ZmJfZGVjb2Rlci5vCisKK2NjZmxhZ3MteQkJCSs9IC1JJChzcmMpIC1JJChzcmMpLy4uIC1XYWxs IC1XZXJyb3IgLVduby11bnVzZWQtZnVuY3Rpb24KK2k5MTVfZ3Z0LXkJCQk6PSAkKEdWVF9TT1VS Q0UpCitvYmotJChDT05GSUdfSTkxNV9HVlQpCQkrPSBpOTE1X2d2dC5vCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9kZWJ1Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZTE0NjcKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaApAQCAtMCww ICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQor ICogU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfX0dWVF9ERUJVR19IX18KKyNkZWZpbmUgX19H VlRfREVCVUdfSF9fCisKKyNkZWZpbmUgQVNTRVJUKHgpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgICAgICAgICBpZiAoISh4KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiQXNzZXJ0IGF0ICVz IGxpbmUgJWRcbiIsICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19GSUxFX18sIF9fTElORV9fKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoMCk7CisKKyNkZWZpbmUgQVNTRVJUX05VTSh4LCB5 KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoISh4KSkgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBy aW50aygiQXNzZXJ0IGF0ICVzIGxpbmUgJWQgcGFyYSAweCVsbHhcbiIsICAgIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAodTY0KXkpOyAgICAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoMCk7CisKKyNkZWZp bmUgZ3Z0X2luZm8oZm10LCBhcmdzLi4uKSBcCisJcHJpbnRrKEtFUk5fSU5GTyJbR1ZULWddICJm bXQiXG4iLCAjI2FyZ3MpCisKKyNkZWZpbmUgZ3Z0X2VycihmbXQsIGFyZ3MuLi4pIFwKKwlwcmlu dGsoS0VSTl9FUlIiJXMoKSAtICVkOiAiZm10IlxuIiwgX19mdW5jX18sIF9fTElORV9fLCAjI2Fy Z3MpCisKKyNkZWZpbmUgZ3Z0X3dhcm4oZm10LCBhcmdzLi4uKSBcCisJcHJpbnRrKEtFUk5fV0FS TklORyIlcygpIC0gJWQ6ICJmbXQiXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sICMjYXJncykKKwor I2RlZmluZSBndnRfZGJnKGxldmVsLCBmbXQsIGFyZ3MuLi4pIGRvIHsgXAorCQlpZiAoZ3Z0LmRl YnVnICYgbGV2ZWwpIFwKKwkJCXByaW50ayhLRVJOX0RFQlVHIiVzKCkgLSAlZDogImZtdCJcbiIs IF9fZnVuY19fLCBfX0xJTkVfXywgIyNhcmdzKTsgXAorCX13aGlsZSgwKQorCitlbnVtIHsKKwlH VlRfREJHX0NPUkUgPSAoMSA8PCAwKSwKKwlHVlRfREJHX01NID0gKDEgPDwgMSksCisJR1ZUX0RC R19JUlEgPSAoMSA8PCAyKSwKK307CisKKyNkZWZpbmUgZ3Z0X2RiZ19jb3JlKGZtdCwgYXJncy4u LikgXAorCWd2dF9kYmcoR1ZUX0RCR19DT1JFLCBmbXQsICMjYXJncykKKworI2RlZmluZSBndnRf ZGJnX21tKGZtdCwgYXJncy4uLikgXAorCWd2dF9kYmcoR1ZUX0RCR19NTSwgZm10LCAjI2FyZ3Mp CisKKyNkZWZpbmUgZ3Z0X2RiZ19pcnEoZm10LCBhcmdzLi4uKSBcCisJZ3Z0X2RiZyhHVlRfREJH X0lSUSwgZm10LCAjI2FyZ3MpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2ZiX2RlY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNv ZGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxOTgxOQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmMKQEAgLTAs MCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUK KyAqIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJndnQuaCIKKworaW50IGd2dF9kZWNvZGVf ZmJfZm9ybWF0KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBpbnQgdm1pZCwgc3RydWN0IGd2dF9m Yl9mb3JtYXQgKmZiKQoreworCXJldHVybiAwOworfQorCitpbnQgZ3Z0X2ZiX25vdGlmaWVyX2Nh bGxfY2hhaW4odW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKmRhdGEpCit7CisJcmV0dXJuIDA7Cit9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yYzI5ZWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdo dChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG Uk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNpZm5k ZWYgX0dWVF9GQl9ERUNPREVSX0hfCisjZGVmaW5lIF9HVlRfRkJfREVDT0RFUl9IXworCit0eXBl ZGVmIGVudW0geworCUZCX01PREVfU0VUX1NUQVJUID0gMSwKKwlGQl9NT0RFX1NFVF9FTkQsCisJ RkJfRElTUExBWV9GTElQLAorfWd2dF9mYl9ldmVudF90OworCit0eXBlZGVmIGVudW0geworCURE SV9QT1JUX05PTkUJPSAwLAorCURESV9QT1JUX0IJPSAxLAorCURESV9QT1JUX0MJPSAyLAorCURE SV9QT1JUX0QJPSAzLAorCURESV9QT1JUX0UJPSA0Cit9IGRkaV9wb3J0X3Q7CisKK3N0cnVjdCBw Z3RfZGV2aWNlOworCitzdHJ1Y3QgZ3Z0X2ZiX25vdGlmeV9tc2cgeworCXVuc2lnbmVkIHZtX2lk OworCXVuc2lnbmVkIHBpcGVfaWQ7IC8qIGlkIHN0YXJ0aW5nIGZyb20gMCAqLworCXVuc2lnbmVk IHBsYW5lX2lkOyAvKiBwcmltYXJ5LCBjdXJzb3IsIG9yIHNwcml0ZSAqLworfTsKKworLyogY29s b3Igc3BhY2UgY29udmVyc2lvbiBhbmQgZ2FtbWEgY29ycmVjdGlvbiBhcmUgbm90IGluY2x1ZGVk ICovCitzdHJ1Y3QgZ3Z0X3ByaW1hcnlfcGxhbmVfZm9ybWF0IHsKKwl1OAllbmFibGVkOwkvKiBw bGFuZSBpcyBlbmFibGVkICovCisJdTgJdGlsZWQ7CQkvKiBYLXRpbGVkICovCisJdTgJYnBwOwkJ LyogYml0cyBwZXIgcGl4ZWwgKi8KKwl1MzIJaHdfZm9ybWF0OwkvKiBmb3JtYXQgZmllbGQgaW4g dGhlIFBSSV9DVEwgcmVnaXN0ZXIgKi8KKwl1MzIJZHJtX2Zvcm1hdDsJLyogZm9ybWF0IGluIERS TSBkZWZpbml0aW9uICovCisJdTMyCWJhc2U7CQkvKiBmcmFtZWJ1ZmZlciBiYXNlIGluIGdyYXBo aWNzIG1lbW9yeSAqLworCXUzMgl4X29mZnNldDsJLyogaW4gcGl4ZWxzICovCisJdTMyCXlfb2Zm c2V0OwkvKiBpbiBsaW5lcyAqLworCXUzMgl3aWR0aDsJCS8qIGluIHBpeGVscyAqLworCXUzMglo ZWlnaHQ7CQkvKiBpbiBsaW5lcyAqLworCXUzMglzdHJpZGU7CQkvKiBpbiBieXRlcyAqLworfTsK Kworc3RydWN0IGd2dF9zcHJpdGVfcGxhbmVfZm9ybWF0IHsKKwl1OAllbmFibGVkOwkvKiBwbGFu ZSBpcyBlbmFibGVkICovCisJdTgJdGlsZWQ7CQkvKiBYLXRpbGVkICovCisJdTgJYnBwOwkJLyog Yml0cyBwZXIgcGl4ZWwgKi8KKwl1MzIJaHdfZm9ybWF0OwkvKiBmb3JtYXQgZmllbGQgaW4gdGhl IFNQUl9DVEwgcmVnaXN0ZXIgKi8KKwl1MzIJZHJtX2Zvcm1hdDsJLyogZm9ybWF0IGluIERSTSBk ZWZpbml0aW9uICovCisJdTMyCWJhc2U7CQkvKiBzcHJpdGUgYmFzZSBpbiBncmFwaGljcyBtZW1v cnkgKi8KKwl1MzIJeF9wb3M7CQkvKiBpbiBwaXhlbHMgKi8KKwl1MzIJeV9wb3M7CQkvKiBpbiBs aW5lcyAqLworCXUzMgl4X29mZnNldDsJLyogaW4gcGl4ZWxzICovCisJdTMyCXlfb2Zmc2V0Owkv KiBpbiBsaW5lcyAqLworCXUzMgl3aWR0aDsJCS8qIGluIHBpeGVscyAqLworCXUzMgloZWlnaHQ7 CQkvKiBpbiBsaW5lcyAqLworfTsKKworc3RydWN0IGd2dF9jdXJzb3JfcGxhbmVfZm9ybWF0IHsK Kwl1OAllbmFibGVkOworCXU4CW1vZGU7CQkvKiBjdXJzb3IgbW9kZSBzZWxlY3QgKi8KKwl1OAli cHA7CQkvKiBiaXRzIHBlciBwaXhlbCAqLworCXUzMglkcm1fZm9ybWF0OwkvKiBmb3JtYXQgaW4g RFJNIGRlZmluaXRpb24gKi8KKwl1MzIJYmFzZTsJCS8qIGN1cnNvciBiYXNlIGluIGdyYXBoaWNz IG1lbW9yeSAqLworCXUzMgl4X3BvczsJCS8qIGluIHBpeGVscyAqLworCXUzMgl5X3BvczsJCS8q IGluIGxpbmVzICovCisJdTgJeF9zaWduOwkJLyogWCBQb3NpdGlvbiBTaWduICovCisJdTgJeV9z aWduOwkJLyogWSBQb3NpdGlvbiBTaWduICovCisJdTMyCXdpZHRoOwkJLyogaW4gcGl4ZWxzICov CisJdTMyCWhlaWdodDsJCS8qIGluIGxpbmVzICovCisJdTMyCXhfaG90OwkJLyogaW4gcGl4ZWxz ICovCisJdTMyCXlfaG90OwkJLyogaW4gcGl4ZWxzICovCit9OworCitzdHJ1Y3QgZ3Z0X3BpcGVf Zm9ybWF0IHsKKwlzdHJ1Y3QgZ3Z0X3ByaW1hcnlfcGxhbmVfZm9ybWF0CXByaW1hcnk7CisJc3Ry dWN0IGd2dF9zcHJpdGVfcGxhbmVfZm9ybWF0CXNwcml0ZTsKKwlzdHJ1Y3QgZ3Z0X2N1cnNvcl9w bGFuZV9mb3JtYXQJY3Vyc29yOworCWRkaV9wb3J0X3QgZGRpX3BvcnQ7ICAvKiB0aGUgRERJIHBv cnQgdGhhdCB0aGUgcGlwZSBpcyBjb25uZWN0ZWQgdG8gKi8KK307CisKK3N0cnVjdCBndnRfZmJf Zm9ybWF0eworCXN0cnVjdCBndnRfcGlwZV9mb3JtYXQJcGlwZXNbSTkxNV9NQVhfUElQRVNdOwor fTsKKworZXh0ZXJuIGludCBndnRfZmJfbm90aWZpZXJfY2FsbF9jaGFpbih1bnNpZ25lZCBsb25n IHZhbCwgdm9pZCAqZGF0YSk7CitleHRlcm4gaW50IGd2dF9kZWNvZGVfZmJfZm9ybWF0KHN0cnVj dCBwZ3RfZGV2aWNlICpwZGV2LCBpbnQgdm1pZCwKKwkJCQlzdHJ1Y3QgZ3Z0X2ZiX2Zvcm1hdCAq ZmIpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4wNDFkMTBmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2d2dC5jCkBAIC0wLDAgKzEsMzY2IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIw MTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisg KiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPHhl bi94ZW4uaD4KKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CisKKyNpbmNsdWRlICJndnQuaCIK Kworc3RydWN0IGd2dF9ob3N0IGd2dF9ob3N0OworCitleHRlcm4gc3RydWN0IGd2dF9rZXJuZWxf ZG0geGVuZ3Rfa2RtOworZXh0ZXJuIHN0cnVjdCBndnRfa2VybmVsX2RtIGt2bWd0X2tkbTsKKwor c3RhdGljIGNvbnN0IGNoYXIgKnN1cHBvcnRlZF9oeXBlcnZpc29yc1tdID0geworCVtHVlRfSFlQ RVJWSVNPUl9UWVBFX1hFTl0gPSAiWGVuIEh5cGVydmlzb3IiLAorCVtHVlRfSFlQRVJWSVNPUl9U WVBFX0tWTV0gPSAiS1ZNIiwKK307CisKK3N0YXRpYyBib29sIGd2dF9pbml0X2hvc3Qodm9pZCkK K3sKKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7CisKKwlpZiAoIWd2dC5lbmFi bGUpIHsKKwkJZ3Z0X2RiZ19jb3JlKCJHVlQtZyBoYXMgYmVlbiBkaXNhYmxlZCBieSBrZXJuZWwg cGFyYW1ldGVyIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoaG9zdC0+aW5pdGlhbGl6 ZWQpIHsKKwkJZ3Z0X2VycigiR1ZULWcgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCEiKTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmICh4ZW5faW5pdGlhbF9kb21haW4oKSkgeworCQkv KiBYZW4gRG9tMCAqLworCQlob3N0LT5rZG0gPSB0cnlfdGhlbl9yZXF1ZXN0X21vZHVsZShzeW1i b2xfZ2V0KHhlbmd0X2tkbSksICJ4ZW5ndCIpOworCQlob3N0LT5oeXBlcnZpc29yX3R5cGUgPSBH VlRfSFlQRVJWSVNPUl9UWVBFX1hFTjsKKwl9IGVsc2UgaWYoeGVuX2RvbWFpbigpKSB7CisJCS8q IFhlbiBEb21VICovCisJCXJldHVybiBmYWxzZTsKKwl9IGVsc2UgeworCQkvKiBub3QgaW4gWGVu LiBUcnkgS1ZNR1QgKi8KKwkJaG9zdC0+a2RtID0gdHJ5X3RoZW5fcmVxdWVzdF9tb2R1bGUoc3lt Ym9sX2dldChrdm1ndF9rZG0pLCAia3ZtIik7CisJCWhvc3QtPmh5cGVydmlzb3JfdHlwZSA9IEdW VF9IWVBFUlZJU09SX1RZUEVfS1ZNOworCX0KKworCWlmICghaG9zdC0+a2RtKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlpZiAoIWh5cGVydmlzb3JfZGV0ZWN0X2hvc3QoKSkKKwkJcmV0dXJuIGZhbHNl OworCisJZ3Z0X2luZm8oIlJ1bm5pbmcgd2l0aCBoeXBlcnZpc29yICVzIGluIGhvc3QgbW9kZSIs CisJCQlzdXBwb3J0ZWRfaHlwZXJ2aXNvcnNbaG9zdC0+aHlwZXJ2aXNvcl90eXBlXSk7CisKKwlp ZHJfaW5pdCgmaG9zdC0+ZGV2aWNlX2lkcik7CisJbXV0ZXhfaW5pdCgmaG9zdC0+ZGV2aWNlX2lk cl9sb2NrKTsKKworCWhvc3QtPmluaXRpYWxpemVkID0gdHJ1ZTsKKwlyZXR1cm4gdHJ1ZTsKK30K Kworc3RhdGljIGJvb2wgaW5pdF9kZXZpY2VfaW5mbyhzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikK K3sKKwlzdHJ1Y3QgZ3Z0X2RldmljZV9pbmZvICppbmZvID0gJnBkZXYtPmRldmljZV9pbmZvOwor CisJaWYgKCFJU19CUk9BRFdFTEwocGRldi0+ZGV2X3ByaXYpKSB7CisJCWd2dF9lcnIoIlVuc3Vw cG9ydGVkIEdFTiBkZXZpY2UiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChJU19CUk9B RFdFTEwocGRldi0+ZGV2X3ByaXYpKSB7CisJCWluZm8tPm1heF9ndHRfZ21fc3ogPSAoMVVMIDw8 IDMyKTsKKwkJLyoKKwkJICogVGhlIGxheW91dCBvZiBCQVIwIGluIEJEVzoKKwkJICogfDwgLSBN TUlPIDJNQiAtPnw8LSBSZXNlcnZlZCA2TUIgLT58PC0gTUFYIEdUVCA4TUItPnwKKwkJICoKKwkJ ICogR1RUIG9mZnNldCBpbiBCQVIwIHN0YXJ0cyBmcm9tIDhNQiB0byAxNk1CLCBhbmQKKwkJICog V2hhdGV2ZXIgR1RUIHNpemUgaXMgY29uZmlndXJlZCBpbiBCSU9TLAorCQkgKiB0aGUgc2l6ZSBv ZiBCQVIwIGlzIGFsd2F5cyAxNk1CLiBUaGUgYWN0dWFsIGNvbmZpZ3VyZWQKKwkJICogR1RUIHNp emUgY2FuIGJlIGZvdW5kIGluIEdNQ0hfQ1RSTC4KKwkJICovCisJCWluZm8tPmd0dF9zdGFydF9v ZmZzZXQgPSAoMVVMIDw8IDIzKTsKKwkJaW5mby0+bWF4X2d0dF9zaXplID0gKDFVTCA8PCAyMyk7 CisJCWluZm8tPmd0dF9lbnRyeV9zaXplID0gODsKKwkJaW5mby0+Z3R0X2VudHJ5X3NpemVfc2hp ZnQgPSAzOworCQlpbmZvLT5nbWFkcl9ieXRlc19pbl9jbWQgPSA4OworCX0KKworCWd2dF9pbmZv KCJEZXZpY2UgaW5mbzoiKTsKKwlwcmludGsoIiAgICAgICAgbWF4X2d0dF9nbV9zejogJWxseFxu IiwgaW5mby0+bWF4X2d0dF9nbV9zeik7CisJcHJpbnRrKCIgICAgICAgIG1heF9ndHRfc2l6ZTog JXhcbiIsIGluZm8tPm1heF9ndHRfc2l6ZSk7CisJcHJpbnRrKCIgICAgICAgIGd0dF9zaXplX2Vu dHJ5OiAleFxuIiwgaW5mby0+Z3R0X2VudHJ5X3NpemUpOworCXByaW50aygiICAgICAgICBndHRf ZW50cnlfc2l6ZV9zaGlmdDogJXhcbiIsIGluZm8tPmd0dF9lbnRyeV9zaXplX3NoaWZ0KTsKKwlw cmludGsoIiAgICAgICAgZ3R0X3N0YXJ0X29mZnNldDogJXhcbiIsIGluZm8tPmd0dF9zdGFydF9v ZmZzZXQpOworCXByaW50aygiICAgICAgICBndHRfZW5kX29mZnNldDogJXhcbiIsIGluZm8tPmd0 dF9lbmRfb2Zmc2V0KTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBpbml0X2lu aXRpYWxfY2ZnX3NwYWNlX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCXN0cnVj dCBwY2lfZGV2ICpwY2lfZGV2ID0gcGRldi0+ZGV2X3ByaXYtPmRldi0+cGRldjsKKwlpbnQgaTsK KworCWd2dF9kYmdfY29yZSgiaW5pdCBpbml0aWFsIGNmZyBzcGFjZSwgaWQgJWQiLCBwZGV2LT5p ZCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgR1ZUX0NGR19TUEFDRV9TWjsgaSArPSA0KQorCQlwY2lf cmVhZF9jb25maWdfZHdvcmQocGNpX2RldiwgaSwKKwkJCQkodTMyICopJnBkZXYtPmluaXRpYWxf Y2ZnX3NwYWNlW2ldKTsKKworCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkJcGRldi0+YmFy X3NpemVbaV0gPSBwY2lfcmVzb3VyY2VfbGVuKHBjaV9kZXYsIGkgKiAyKTsKKwkJZ3Z0X2luZm8o ImJhciAlZCBzaXplOiAlbGx4IiwgaSwgcGRldi0+YmFyX3NpemVbaV0pOworCX0KK30KKworc3Rh dGljIHZvaWQgY2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2 KQoreworCWlmIChwZGV2LT5ndHRtbWlvX3ZhKSB7CisJCWlvdW5tYXAocGRldi0+Z3R0bW1pb192 YSk7CisJCXBkZXYtPmd0dG1taW9fdmEgPSBOVUxMOworCX0KKworCWlmIChwZGV2LT5nbWFkcl92 YSkgeworCQlpb3VubWFwKHBkZXYtPmdtYWRyX3ZhKTsKKwkJcGRldi0+Z21hZHJfdmEgPSBOVUxM OworCX0KK30KKworc3RhdGljIGJvb2wgaW5pdF9pbml0aWFsX21taW9fc3RhdGUoc3RydWN0IHBn dF9kZXZpY2UgKnBkZXYpCit7CisJdTY0IGJhcjAsIGJhcjE7CisKKwlndnRfZGJnX2NvcmUoImlu aXQgaW5pdGlhbCBtbWlvIHN0YXRlLCBpZCAlZCIsIHBkZXYtPmlkKTsKKworCWJhcjAgPSAqKHU2 NCAqKSZwZGV2LT5pbml0aWFsX2NmZ19zcGFjZVtHVlRfUkVHX0NGR19TUEFDRV9CQVIwXTsKKwli YXIxID0gKih1NjQgKikmcGRldi0+aW5pdGlhbF9jZmdfc3BhY2VbR1ZUX1JFR19DRkdfU1BBQ0Vf QkFSMV07CisKKwlwZGV2LT5ndHRtbWlvX2Jhc2UgPSBiYXIwICYgfjB4ZjsKKwlwZGV2LT5tbWlv X3NpemUgPSAyICogMTAyNCAqIDEwMjQ7CisJcGRldi0+cmVnX251bSA9IHBkZXYtPm1taW9fc2l6 ZSAvIDQ7CisJcGRldi0+Z21hZHJfYmFzZSA9IGJhcjEgJiB+MHhmOworCisJcGRldi0+Z3R0bW1p b192YSA9IGlvcmVtYXAocGRldi0+Z3R0bW1pb19iYXNlLCBwZGV2LT5iYXJfc2l6ZVswXSk7CisJ aWYgKCFwZGV2LT5ndHRtbWlvX3ZhKSB7CisJCWd2dF9lcnIoImZhaWwgdG8gbWFwIEdUVE1NSU8g QkFSLiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcGRldi0+Z21hZHJfdmEgPSBpb3JlbWFw KHBkZXYtPmdtYWRyX2Jhc2UsIHBkZXYtPmJhcl9zaXplWzJdKTsKKwlpZiAoIXBkZXYtPmdtYWRy X3ZhKSB7CisJCWd2dF9lcnIoImZhaWwgdG8gbWFwIEdNQURSIEJBUi4iKTsKKwkJZ290byBlcnI7 CisJfQorCisJZ3Z0X2luZm8oImJhcjA6IDB4JWxseCwgYmFyMTogMHglbGx4IiwgYmFyMCwgYmFy MSk7CisJZ3Z0X2luZm8oIm1taW8gc2l6ZTogJXgiLCBwZGV2LT5tbWlvX3NpemUpOworCWd2dF9p bmZvKCJndHRtbWlvOiAweCVsbHgsIGdtYWRyOiAweCVsbHgiLCBwZGV2LT5ndHRtbWlvX2Jhc2Us IHBkZXYtPmdtYWRyX2Jhc2UpOworCWd2dF9pbmZvKCJndHRtbWlvX3ZhOiAlcCIsIHBkZXYtPmd0 dG1taW9fdmEpOworCWd2dF9pbmZvKCJnbWFkcl92YTogJXAiLCBwZGV2LT5nbWFkcl92YSk7CisK KwlyZXR1cm4gdHJ1ZTsKK2VycjoKKwljbGVhbl9pbml0aWFsX21taW9fc3RhdGUocGRldik7CisJ cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW50IGd2dF9zZXJ2aWNlX3RocmVhZCh2b2lkICpk YXRhKQoreworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gKHN0cnVjdCBwZ3RfZGV2aWNlICop ZGF0YTsKKwlpbnQgcjsKKworCWd2dF9kYmdfY29yZSgic2VydmljZSB0aHJlYWQgc3RhcnQsIHBn dCAlZCIsIHBkZXYtPmlkKTsKKworCXdoaWxlKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkpIHsKKwkJ ciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShwZGV2LT5zZXJ2aWNlX3RocmVhZF93cSwKKwkJ CQlrdGhyZWFkX3Nob3VsZF9zdG9wKCkgfHwgcGRldi0+c2VydmljZV9yZXF1ZXN0KTsKKworCQlp ZiAoa3RocmVhZF9zaG91bGRfc3RvcCgpKQorCQkJYnJlYWs7CisKKwkJaWYgKHIpIHsKKwkJCWd2 dF93YXJuKCJzZXJ2aWNlIHRocmVhZCBpcyB3YWtlbiB1cCBieSB1bmV4cGVjdGVkIHNpZ25hbC4i KTsKKwkJCWNvbnRpbnVlOworCQl9CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBj bGVhbl9zZXJ2aWNlX3RocmVhZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKK3sKKwlpZiAocGRl di0+c2VydmljZV90aHJlYWQpIHsKKwkJa3RocmVhZF9zdG9wKHBkZXYtPnNlcnZpY2VfdGhyZWFk KTsKKwkJcGRldi0+c2VydmljZV90aHJlYWQgPSBOVUxMOworCX0KK30KKworc3RhdGljIGJvb2wg aW5pdF9zZXJ2aWNlX3RocmVhZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKK3sKKwlpbml0X3dh aXRxdWV1ZV9oZWFkKCZwZGV2LT5zZXJ2aWNlX3RocmVhZF93cSk7CisKKwlwZGV2LT5zZXJ2aWNl X3RocmVhZCA9IGt0aHJlYWRfcnVuKGd2dF9zZXJ2aWNlX3RocmVhZCwKKwkJCXBkZXYsICJndnRf c2VydmljZV90aHJlYWQlZCIsIHBkZXYtPmlkKTsKKworCWlmICghcGRldi0+c2VydmljZV90aHJl YWQpIHsKKwkJZ3Z0X2VycigiZmFpbCB0byBzdGFydCBzZXJ2aWNlIHRocmVhZC4iKTsKKwkJcmV0 dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBjbGVhbl9w Z3RfZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQoreworCWNsZWFuX3NlcnZpY2VfdGhy ZWFkKHBkZXYpOworCWNsZWFuX2luaXRpYWxfbW1pb19zdGF0ZShwZGV2KTsKK30KKworc3RhdGlj IGJvb2wgaW5pdF9wZ3RfZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaWYgKCFpbml0X2RldmljZV9pbmZvKHBkZXYp KQorCQlyZXR1cm4gZmFsc2U7CisKKwlpbml0X2luaXRpYWxfY2ZnX3NwYWNlX3N0YXRlKHBkZXYp OworCisJaWYgKCFpbml0X2luaXRpYWxfbW1pb19zdGF0ZShwZGV2KSkKKwkJZ290byBlcnI7CisK KwlpZiAoIWluaXRfc2VydmljZV90aHJlYWQocGRldikpCisJCWdvdG8gZXJyOworCisJcmV0dXJu IHRydWU7CitlcnI6CisJY2xlYW5fcGd0X2RldmljZShwZGV2KTsKKwlyZXR1cm4gZmFsc2U7Cit9 CisKK3N0YXRpYyBib29sIHBvc3RfaW5pdF9wZ3RfZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3BndF9kZXZpY2Uo c3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2 dF9ob3N0OworCisJbXV0ZXhfbG9jaygmaG9zdC0+ZGV2aWNlX2lkcl9sb2NrKTsKKwlpZHJfcmVt b3ZlKCZob3N0LT5kZXZpY2VfaWRyLCBwZGV2LT5pZCk7CisJbXV0ZXhfdW5sb2NrKCZob3N0LT5k ZXZpY2VfaWRyX2xvY2spOworCisJdmZyZWUocGRldik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGd0 X2RldmljZSAqYWxsb2NfcGd0X2RldmljZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0OworCXN0cnVjdCBwZ3Rf ZGV2aWNlICpwZGV2ID0gTlVMTDsKKworCXBkZXYgPSB2emFsbG9jKHNpemVvZigqcGRldikpOwor CWlmICghcGRldikgeworCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcGd0 IGRldmljZS4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbXV0ZXhfbG9jaygmaG9zdC0+ZGV2 aWNlX2lkcl9sb2NrKTsKKwlwZGV2LT5pZCA9IGlkcl9hbGxvYygmaG9zdC0+ZGV2aWNlX2lkciwg cGRldiwgMCwgMCwgR0ZQX0tFUk5FTCk7CisJbXV0ZXhfdW5sb2NrKCZob3N0LT5kZXZpY2VfaWRy X2xvY2spOworCisJaWYgKHBkZXYtPmlkIDwgMCkgeworCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9j YXRlIHBndCBkZXZpY2UgaWQuIik7CisJCWdvdG8gZXJyOworCX0KKworCW11dGV4X2luaXQoJnBk ZXYtPmxvY2spOworCXBkZXYtPmRldl9wcml2ID0gZGV2X3ByaXY7CisJaWRyX2luaXQoJnBkZXYt Pmluc3RhbmNlX2lkcik7CisKKwlyZXR1cm4gcGRldjsKK2VycjoKKwlmcmVlX3BndF9kZXZpY2Uo cGRldik7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZSh2 b2lkICpwcml2YXRlX2RhdGEpCit7CisJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSAoc3RydWN0 IHBndF9kZXZpY2UgKilwcml2YXRlX2RhdGE7CisKKwljbGVhbl9wZ3RfZGV2aWNlKHBkZXYpOwor CWZyZWVfcGd0X2RldmljZShwZGV2KTsKK30KKwordm9pZCAqZ3Z0X2NyZWF0ZV9wZ3RfZGV2aWNl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgcGd0X2Rldmlj ZSAqcGRldiA9IE5VTEw7CisJc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0OworCisJ aWYgKCFob3N0LT5pbml0aWFsaXplZCAmJiAhZ3Z0X2luaXRfaG9zdCgpKSB7CisJCWd2dF9lcnIo Imd2dF9pbml0X2hvc3QgZmFpbCIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlndnRfZGJnX2Nv cmUoImNyZWF0ZSBuZXcgcGd0IGRldmljZSwgaTkxNSBkZXZfcHJpdjogJXAiLCBkZXZfcHJpdik7 CisKKwlwZGV2ID0gYWxsb2NfcGd0X2RldmljZShkZXZfcHJpdik7CisJaWYgKCFwZGV2KSB7CisJ CWd2dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwZ3QgZGV2aWNlLiIpOworCQln b3RvIGVycjsKKwl9CisKKwlndnRfZGJnX2NvcmUoImluaXQgcGd0IGRldmljZSwgaWQgJWQiLCBw ZGV2LT5pZCk7CisKKwlpZiAoIWluaXRfcGd0X2RldmljZShwZGV2LCBkZXZfcHJpdikpIHsKKwkJ Z3Z0X2VycigiZmFpbCB0byBpbml0IHBoeXNpY2FsIGRldmljZSBzdGF0ZS4iKTsKKwkJZ290byBl cnI7CisJfQorCisJZ3Z0X2RiZ19jb3JlKCJwZ3QgZGV2aWNlIGNyZWF0aW9uIGRvbmUsIGlkICVk IiwgcGRldi0+aWQpOworCisJcmV0dXJuIHBkZXY7CitlcnI6CisJaWYgKHBkZXYpIHsKKwkJZ3Z0 X2Rlc3Ryb3lfcGd0X2RldmljZShwZGV2KTsKKwkJcGRldiA9IE5VTEw7CisJfQorCXJldHVybiBO VUxMOworfQorCitib29sIGd2dF9wb3N0X2luaXRfcGd0X2RldmljZSh2b2lkICpwcml2YXRlX2Rh dGEpCit7CisJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSAoc3RydWN0IHBndF9kZXZpY2UgKilw cml2YXRlX2RhdGE7CisJc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0OworCisJaWYg KCFob3N0LT5pbml0aWFsaXplZCkgeworCQlndnRfZXJyKCJndnRfaG9zdCBoYXZlbid0IGJlZW4g aW5pdGlhbGl6ZWQuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlndnRfZGJnX2NvcmUoInBv c3QgaW5pdCBwZ3QgZGV2aWNlICVkIiwgcGRldi0+aWQpOworCisJaWYgKCFwb3N0X2luaXRfcGd0 X2RldmljZShwZGV2KSkgeworCQlndnRfZXJyKCJmYWlsIHRvIHBvc3QgaW5pdCBwaHlzaWNhbCBk ZXZpY2Ugc3RhdGUuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9ndnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 Yzg1YmJhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5o CkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBfR1ZUX0hfCisjZGVmaW5lIF9H VlRfSF8KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCisK KyNpbmNsdWRlICJkZWJ1Zy5oIgorI2luY2x1ZGUgInBhcmFtcy5oIgorI2luY2x1ZGUgInJlZy5o IgorI2luY2x1ZGUgImh5cGVyY2FsbC5oIgorI2luY2x1ZGUgIm1wdC5oIgorI2luY2x1ZGUgImZi X2RlY29kZXIuaCIKKworI2RlZmluZSBHVlRfTUFYX1ZHUFUgOAorCitlbnVtIHsKKwlHVlRfSFlQ RVJWSVNPUl9UWVBFX1hFTiA9IDAsCisJR1ZUX0hZUEVSVklTT1JfVFlQRV9LVk0sCit9OworCitz dHJ1Y3QgZ3Z0X2hvc3QgeworCWJvb2wgaW5pdGlhbGl6ZWQ7CisJaW50IGh5cGVydmlzb3JfdHlw ZTsKKwlzdHJ1Y3QgbXV0ZXggZGV2aWNlX2lkcl9sb2NrOworCXN0cnVjdCBpZHIgZGV2aWNlX2lk cjsKKwlzdHJ1Y3QgZ3Z0X2tlcm5lbF9kbSAqa2RtOworfTsKKworZXh0ZXJuIHN0cnVjdCBndnRf aG9zdCBndnRfaG9zdDsKKworLyogRGVzY3JpYmUgdGhlIGxpbWl0YXRpb24gb2YgSFcuKi8KK3N0 cnVjdCBndnRfZGV2aWNlX2luZm8geworCXU2NCBtYXhfZ3R0X2dtX3N6OworCXUzMiBndHRfc3Rh cnRfb2Zmc2V0OworCXUzMiBndHRfZW5kX29mZnNldDsKKwl1MzIgbWF4X2d0dF9zaXplOworCXUz MiBndHRfZW50cnlfc2l6ZTsKKwl1MzIgZ3R0X2VudHJ5X3NpemVfc2hpZnQ7CisJdTMyIGdtYWRy X2J5dGVzX2luX2NtZDsKK307CisKK3N0cnVjdCB2Z3RfZGV2aWNlIHsKKwlpbnQgaWQ7CisJaW50 IHZtX2lkOworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2OworCWJvb2wgd2Fybl91bnRyYWNrOwor fTsKKworc3RydWN0IHBndF9kZXZpY2UgeworCXN0cnVjdCBtdXRleCBsb2NrOworCWludCBpZDsK KworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKKwlzdHJ1Y3QgaWRyIGluc3Rh bmNlX2lkcjsKKworCXN0cnVjdCBndnRfZGV2aWNlX2luZm8gZGV2aWNlX2luZm87CisKKwl1OCBp bml0aWFsX2NmZ19zcGFjZVtHVlRfQ0ZHX1NQQUNFX1NaXTsKKwl1NjQgYmFyX3NpemVbR1ZUX0JB Ul9OVU1dOworCisJdTY0IGd0dG1taW9fYmFzZTsKKwl2b2lkICpndHRtbWlvX3ZhOworCisJdTY0 IGdtYWRyX2Jhc2U7CisJdm9pZCAqZ21hZHJfdmE7CisKKwl1MzIgbW1pb19zaXplOworCXUzMiBy ZWdfbnVtOworCisJd2FpdF9xdWV1ZV9oZWFkX3Qgc2VydmljZV90aHJlYWRfd3E7CisJc3RydWN0 IHRhc2tfc3RydWN0ICpzZXJ2aWNlX3RocmVhZDsKKwl1bnNpZ25lZCBsb25nIHNlcnZpY2VfcmVx dWVzdDsKK307CisKK3N0YXRpYyBpbmxpbmUgdTMyIGd2dF9tbWlvX3JlYWQoc3RydWN0IHBndF9k ZXZpY2UgKnBkZXYsCisJCXUzMiByZWcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcGRldi0+ZGV2X3ByaXY7CisJaTkxNV9yZWdfdCB0bXAgPSB7LnJlZyA9IHJlZ307 CisJcmV0dXJuIEk5MTVfUkVBRCh0bXApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ3Z0X21t aW9fd3JpdGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCisJCXUzMiByZWcsIHUzMiB2YWwpCit7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcGRldi0+ZGV2X3ByaXY7CisJ aTkxNV9yZWdfdCB0bXAgPSB7LnJlZyA9IHJlZ307CisJSTkxNV9XUklURSh0bXAsIHZhbCk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdTY0IGd2dF9tbWlvX3JlYWQ2NChzdHJ1Y3QgcGd0X2RldmljZSAq cGRldiwKKwkJdTMyIHJlZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBwZGV2LT5kZXZfcHJpdjsKKwlpOTE1X3JlZ190IHRtcCA9IHsucmVnID0gcmVnfTsKKwlyZXR1 cm4gSTkxNV9SRUFENjQodG1wKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGd2dF9tbWlvX3dy aXRlNjQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCisJCXUzMiByZWcsIHU2NCB2YWwpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcGRldi0+ZGV2X3ByaXY7CisJaTkx NV9yZWdfdCB0bXAgPSB7LnJlZyA9IHJlZ307CisJSTkxNV9XUklURTY0KHRtcCwgdmFsKTsKK30K KworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxs LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMGE0MTg3NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29w eXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKi8KKwor I2lmbmRlZiBfR1ZUX0hZUEVSQ0FMTF9IXworI2RlZmluZSBfR1ZUX0hZUEVSQ0FMTF9IXworCitz dHJ1Y3QgZ3Z0X2tlcm5lbF9kbSB7Cit9OworCisjZW5kaWYgLyogX0dWVF9IWVBFUkNBTExfSF8g Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9tcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iYmU0NDY1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21w dC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9HVlRfTVBUX0hfCisjZGVm aW5lIF9HVlRfTVBUX0hfCisKK3N0cnVjdCB2Z3RfZGV2aWNlOworCitzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcgaHlwZXJ2aXNvcl9nMm1fcGZuKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsCisJ dW5zaWduZWQgbG9uZyBnX3BmbikKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBp bnQgaHlwZXJ2aXNvcl9wYXVzZV9kb21haW4oc3RydWN0IHZndF9kZXZpY2UgKnZndCkKK3sKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNvcl9zaHV0ZG93bl9kb21h aW4oc3RydWN0IHZndF9kZXZpY2UgKnZndCkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu bGluZSBpbnQgaHlwZXJ2aXNvcl9zZXRfdHJhcF9hcmVhKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3Qs CisJdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCwgYm9vbCBtYXApCit7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBoeXBlcnZpc29yX2RldGVjdF9ob3N0KHZvaWQpCit7 CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX3ZpcnRf dG9fbWZuKHZvaWQgKmFkZHIpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCAqaHlwZXJ2aXNvcl9tZm5fdG9fdmlydChpbnQgbWZuKQoreworCXJldHVybiBOVUxMOworfQor CitzdGF0aWMgaW5saW5lIHZvaWQgaHlwZXJ2aXNvcl9pbmplY3RfbXNpKHN0cnVjdCB2Z3RfZGV2 aWNlICp2Z3QpCit7CisJcmV0dXJuOworfQorCitzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29y X2h2bV9pbml0KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBoeXBlcnZpc29yX2h2bV9leGl0KHN0cnVjdCB2Z3RfZGV2aWNlICp2 Z3QpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqaHlwZXJ2aXNvcl9ncGFfdG9fdmEoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwgdW5zaWduZWQgbG9uZyBncGEpCit7CisJcmV0dXJuIE5VTEw7 Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBoeXBlcnZpc29yX3JlYWRfdmEoc3RydWN0IHZndF9k ZXZpY2UgKnZndCwgdm9pZCAqdmEsCisJCXZvaWQgKnZhbCwgaW50IGxlbiwgaW50IGF0b21pYykK K3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBoeXBlcnZpc29yX3dy aXRlX3ZhKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHZvaWQgKnZhLAorCQl2b2lkICp2YWwsIGlu dCBsZW4sIGludCBhdG9taWMpCit7CisJcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYgLyogX0dW VF9NUFRfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kZmMzM2MzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQo YykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP TSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVk ZSAiZ3Z0LmgiCisKK3N0cnVjdCBndnRfa2VybmVsX3BhcmFtcyBndnQgPSB7CisJLmVuYWJsZSA9 IHRydWUsCisJLmRlYnVnID0gMCwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvcGFyYW1zLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI5NTViOQotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaApAQCAtMCwwICsxLDM0IEBACisvKgor ICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisg Ki8KKworI2lmbmRlZiBfR1ZUX1BBUkFNU19IXworI2RlZmluZSBfR1ZUX1BBUkFNU19IXworCitz dHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgeworCWJvb2wgZW5hYmxlOworCWludCBkZWJ1ZzsKK307 CisKK2V4dGVybiBzdHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgZ3Z0OworCisjZW5kaWYKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9yZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzYzYjc0 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCkBAIC0w LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF CisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9HVlRfUkVHX0gKKyNkZWZpbmUgX0dWVF9S RUdfSAorCisjZGVmaW5lIEdWVF9DRkdfU1BBQ0VfU1oJMjU2CisjZGVmaW5lIEdWVF9CQVJfTlVN CQk0CisKKyNkZWZpbmUgR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMAkweDEwCisjZGVmaW5lIEdWVF9S RUdfQ0ZHX1NQQUNFX0JBUjEJMHgxOAorI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9CQVIyCTB4 MjAKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCA0NzI1ZThkLi5lY2E4ZTUw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTk0Myw2ICs5NDMsMTAgQEAgaW50IGk5MTVf ZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykK IAogCWludGVsX3VuY29yZV9pbml0KGRldik7CiAKKwlkZXZfcHJpdi0+dmdwdS5ob3N0X3ByaXZh dGVfZGF0YSA9IGd2dF9jcmVhdGVfcGd0X2RldmljZShkZXZfcHJpdik7CisJaWYoaW50ZWxfZ3Z0 X2hvc3RfYWN0aXZlKGRldikpCisJCURSTV9JTkZPKCJHVlQtZyBpcyBydW5uaW5nIGluIGhvc3Qg bW9kZVxuIik7CisKIAlyZXQgPSBpOTE1X2dlbV9ndHRfaW5pdChkZXYpOwogCWlmIChyZXQpCiAJ CWdvdG8gb3V0X2ZyZWVjc3I7CkBAIC0xMDY3LDYgKzEwNzEsMTMgQEAgaW50IGk5MTVfZHJpdmVy X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAkJZ290 byBvdXRfcG93ZXJfd2VsbDsKIAl9CiAKKwlpZiAoaW50ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikp IHsKKwkJaWYgKCFndnRfcG9zdF9pbml0X3BndF9kZXZpY2UoZGV2X3ByaXYtPnZncHUuaG9zdF9w cml2YXRlX2RhdGEpKSB7CisJCQlEUk1fRVJST1IoImZhaWxlZCB0byBwb3N0IGluaXQgcGd0IGRl dmljZVxuIik7CisJCQlnb3RvIG91dF9wb3dlcl93ZWxsOworCQl9CisJfQorCiAJLyoKIAkgKiBO b3RpZnkgYSB2YWxpZCBzdXJmYWNlIGFmdGVyIG1vZGVzZXR0aW5nLAogCSAqIHdoZW4gcnVubmlu ZyBpbnNpZGUgYSBWTS4KQEAgLTExMTcsNiArMTEyOCwxMCBAQCBvdXRfZ3R0OgogCWk5MTVfZ2xv YmFsX2d0dF9jbGVhbnVwKGRldik7CiBvdXRfZnJlZWNzcjoKIAlpbnRlbF9jc3JfdWNvZGVfZmlu aShkZXZfcHJpdik7CisJaWYgKGludGVsX2d2dF9ob3N0X2FjdGl2ZShkZXYpKSB7CisJCWd2dF9k ZXN0cm95X3BndF9kZXZpY2UoZGV2X3ByaXYtPnZncHUuaG9zdF9wcml2YXRlX2RhdGEpOworCQlk ZXZfcHJpdi0+dmdwdS5ob3N0X3ByaXZhdGVfZGF0YSA9IE5VTEw7CisJfQogCWludGVsX3VuY29y ZV9maW5pKGRldik7CiAJcGNpX2lvdW5tYXAoZGV2LT5wZGV2LCBkZXZfcHJpdi0+cmVncyk7CiBw dXRfYnJpZGdlOgpAQCAtMTE2NSw2ICsxMTgwLDEwIEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWludGVsX21vZGVzZXRfY2xlYW51cChkZXYpOwog CisJaWYgKGludGVsX2d2dF9ob3N0X2FjdGl2ZShkZXYpKSB7CisJCWd2dF9kZXN0cm95X3BndF9k ZXZpY2UoZGV2X3ByaXYtPnZncHUuaG9zdF9wcml2YXRlX2RhdGEpOworCQlkZXZfcHJpdi0+dmdw dS5ob3N0X3ByaXZhdGVfZGF0YSA9IE5VTEw7CisJfQogCS8qCiAJICogZnJlZSB0aGUgbWVtb3J5 IHNwYWNlIGFsbG9jYXRlZCBmb3IgdGhlIGNoaWxkIGRldmljZQogCSAqIGNvbmZpZyBwYXJzZWQg ZnJvbSBWQlQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDAxY2M5ODIuLmRiM2M3OWIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTY3Myw2ICsxNjczLDcgQEAgc3RydWN0IGk5MTVf d29ya2Fyb3VuZHMgewogCiBzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSB7CiAJYm9vbCBhY3RpdmU7 CisJdm9pZCAqaG9zdF9wcml2YXRlX2RhdGE7CiB9OwogCiBzdHJ1Y3QgaTkxNV9leGVjYnVmZmVy X3BhcmFtcyB7CkBAIC0yNzQ3LDYgKzI3NDgsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGludGVs X3ZncHVfYWN0aXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIHRvX2k5MTUoZGV2 KS0+dmdwdS5hY3RpdmU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9ndnRfaG9zdF9h Y3RpdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gdG9faTkxNShkZXYpLT52 Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRhID8gdHJ1ZSA6IGZhbHNlOworfQorCiB2b2lkCiBpOTE1X2Vu YWJsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlw ZSBwaXBlLAogCQkgICAgIHUzMiBzdGF0dXNfbWFzayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5o CmluZGV4IDNjODNiNDcuLjk0MjQ5MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdmdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCkBAIC0x MTMsNSArMTEzLDggQEAgc3RydWN0IHZndF9pZiB7CiBleHRlcm4gdm9pZCBpOTE1X2NoZWNrX3Zn cHUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGludGVsX3ZndF9iYWxsb29u KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfdmd0X2RlYmFsbG9v bih2b2lkKTsKK2V4dGVybiB2b2lkICpndnRfY3JlYXRlX3BndF9kZXZpY2Uoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2V4dGVybiBib29sIGd2dF9wb3N0X2luaXRfcGd0X2Rl dmljZSh2b2lkICpwcml2YXRlX2RhdGEpOworZXh0ZXJuIHZvaWQgZ3Z0X2Rlc3Ryb3lfcGd0X2Rl dmljZSh2b2lkICpwcml2YXRlX2RhdGEpOwogCiAjZW5kaWYgLyogX0k5MTVfVkdQVV9IXyAqLwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL3hlbi5oIGIvaW5jbHVkZS94ZW4vaW50 ZXJmYWNlL3hlbi5oCmluZGV4IGQxMzMxMTIuLjc4YTM4ZjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv eGVuL2ludGVyZmFjZS94ZW4uaAorKysgYi9pbmNsdWRlL3hlbi9pbnRlcmZhY2UveGVuLmgKQEAg LTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgX19YRU5fUFVCTElDX1hFTl9IX18KIAogI2luY2x1ZGUg PGFzbS94ZW4vaW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogLyoKICAq IFhFTiAiU1lTVEVNIENBTExTIiAoYS5rLmEuIEhZUEVSQ0FMTFMpLgotLSAKMS45LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==