From mboxrd@z Thu Jan 1 00:00:00 1970 From: Feng Wu Subject: [PATCH v14 1/2] vmx: VT-d posted-interrupt core logic handling Date: Mon, 29 Feb 2016 11:00:15 +0800 Message-ID: <1456714816-3876-2-git-send-email-feng.wu@intel.com> References: <1456714816-3876-1-git-send-email-feng.wu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456714816-3876-1-git-send-email-feng.wu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Keir Fraser , George Dunlap , Andrew Cooper , Dario Faggioli , Jan Beulich , Feng Wu List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyB0aGUgY29yZSBsb2dpYyBoYW5kbGluZyBmb3IgVlQtZCBwb3N0ZWQtaW50ZXJydXB0 cy4gQmFzaWNhbGx5IGl0CmRlYWxzIHdpdGggaG93IGFuZCB3aGVuIHRvIHVwZGF0ZSBwb3N0ZWQt aW50ZXJydXB0cyBkdXJpbmcgdGhlIGZvbGxvd2luZwpzY2VuYXJpb3M6Ci0gdkNQVSBpcyBwcmVl bXB0ZWQKLSB2Q1BVIGlzIHNsZXB0Ci0gdkNQVSBpcyBibG9ja2VkCgpXaGVuIHZDUFUgaXMgcHJl ZW1wdGVkL3NsZXB0LCB3ZSB1cGRhdGUgdGhlIHBvc3RlZC1pbnRlcnJ1cHRzIGR1cmluZwpzY2hl ZHVsaW5nIGJ5IGludHJvZHVjaW5nIHR3byBuZXcgYXJjaGl0ZWN1dHJhbCBzY2hlZHVsZXIgaG9v a3M6CnZteF9waV9zd2l0Y2hfZnJvbSgpIGFuZCB2bXhfcGlfc3dpdGNoX3RvKCkuIFdoZW4gdkNQ VSBpcyBibG9ja2VkLCB3ZQppbnRyb2R1Y2UgYSBuZXcgYXJjaGl0ZWN0dXJhbCBob29rOiBhcmNo X3ZjcHVfYmxvY2soKSB0byB1cGRhdGUKcG9zdGVkLWludGVycnVwdHMgZGVzY3JpcHRvci4KCkJl c2lkZXMgdGhhdCwgYmVmb3JlIFZNLWVudHJ5LCB3ZSB3aWxsIG1ha2Ugc3VyZSB0aGUgJ05WJyBm aWxlZCBpcyBzZXQKdG8gJ3Bvc3RlZF9pbnRyX3ZlY3RvcicgYW5kIHRoZSB2Q1BVIGlzIG5vdCBp biBhbnkgYmxvY2tpbmcgbGlzdHMsIHdoaWNoCmlzIG5lZWRlZCB3aGVuIHZDUFUgaXMgcnVubmlu ZyBpbiBub24tcm9vdCBtb2RlLiBUaGUgcmVhc29uIHdlIGRvIHRoaXMgY2hlY2sKaXMgYmVjYXVz ZSB3ZSBjaGFuZ2UgdGhlIHBvc3RlZC1pbnRlcnJ1cHRzIGRlc2NyaXB0b3IgaW4gdmNwdV9ibG9j aygpLApob3dldmVyLCB3ZSBkb24ndCBjaGFuZ2UgaXQgYmFjayBpbiB2Y3B1X3VuYmxvY2soKSBv ciB3aGVuIHZjcHVfYmxvY2soKQpkaXJlY3RseSByZXR1cm5zIGR1ZSB0byBldmVudCBkZWxpdmVy eSAoaW4gZmFjdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBpdAppbiB0aGUgdHdvIHBsYWNlcywgdGhh dCBpcyB3aHkgd2UgZG8gaXQgYmVmb3JlIFZNLUVudHJ5KS4KCldoZW4gd2UgaGFuZGxlIHRoZSBs YXp5IGNvbnRleHQgc3dpdGNoIGZvciB0aGUgZm9sbG93aW5nIHR3byBzY2VuYXJpb3M6Ci0gUHJl ZW1wdGVkIGJ5IGEgdGFza2xldCwgd2hpY2ggdXNlcyBpbiBhbiBpZGxlIGNvbnRleHQuCi0gdGhl IHByZXYgdmNwdSBpcyBpbiBvZmZsaW5lIGFuZCBubyBuZXcgYXZhaWxhYmxlIHZjcHVzIGluIHJ1 biBxdWV1ZS4KV2UgZG9uJ3QgY2hhbmdlIHRoZSAnU04nIGJpdCBpbiBwb3N0ZWQtaW50ZXJydXB0 IGRlc2NyaXB0b3IsIHRoaXMKbWF5IGluY3VyIHNwdXJpb3VzIFBJIG5vdGlmaWNhdGlvbiBldmVu dHMsIGJ1dCBzaW5jZSBQSSBub3RpZmljYXRpb24KZXZlbnQgaXMgb25seSBzZW50IHdoZW4gJ09O JyBpcyBjbGVhciwgYW5kIG9uY2UgdGhlIFBJIG5vdGlmaWNhdG9pbgppcyBzZW50LCBPTiBpcyBz ZXQgYnkgaGFyZHdhcmUsIGhlbmNlIG5vIG1vcmUgbm90aWZpY2F0aW9uIGV2ZW50cwpiZWZvcmUg J09OJyBpcyBjbGVhci4gQmVzaWRlcyB0aGF0LCBzcHVyaW91cyBQSSBub3RpZmljYXRpb24gZXZl bnRzIGFyZQpnb2luZyB0byBoYXBwZW4gZnJvbSB0aW1lIHRvIHRpbWUgaW4gWGVuIGh5cGVydmlz b3IsIHN1Y2ggYXMsIHdoZW4KZ3Vlc3RzIHRyYXAgdG8gWGVuIGFuZCBQSSBub3RpZmljYXRpb24g ZXZlbnQgaGFwcGVucywgdGhlcmUgaXMKbm90aGluZyBYZW4gYWN0dWFsbHkgbmVlZHMgdG8gZG8g YWJvdXQgaXQsIHRoZSBpbnRlcnJ1cHRzIHdpbGwgYmUKZGVsaXZlcmVkIHRvIGd1ZXN0IGF0aHQg dGhlIG5leHQgdGltZSB3ZSBkbyBhIFZNRU5UUlkuCgpDQzogS2VpciBGcmFzZXIgPGtlaXJAeGVu Lm9yZz4KQ0M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ0M6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNDOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFu QGludGVsLmNvbT4KQ0M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNv bT4KQ0M6IERhcmlvIEZhZ2dpb2xpIDxkYXJpby5mYWdnaW9saUBjaXRyaXguY29tPgpTdWdnZXN0 ZWQtYnk6IFlhbmcgWmhhbmcgPHlhbmcuei56aGFuZ0BpbnRlbC5jb20+ClN1Z2dlc3RlZC1ieTog RGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+ClN1Z2dlc3RlZC1ieTog R2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgpTdWdnZXN0ZWQtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRmVuZyBXdSA8ZmVu Zy53dUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFw QGNpdHJpeC5jb20+Ci0tLQp2MTQ6Ci0gSW50cm9kdWNlIGEgbG9jYWwgdmFyaWFibGUgaW4gbWFj cm8gYXJjaF92Y3B1X2Jsb2NrKCkKLSBTaG9ydGVuIHNvbWUgdmFyaWFibGUgbmFtZSBhbmQgcmVt b3ZlIHRoZSByZWxhdGVkIG1hY3JvIGFjY29yZGluZ2x5Ci0gT25seSB1c2UgaGFzX2FyY2hfcGRl dnMoKSB0byBkZXRlcm1pbmUgd2hldGhlciBuZWVkcyB0byBjYWxsCiAgdm14X3BpX2hvb2tzX2Fz c2lnbigpL3ZteF9waV9ob29rc19kZWFzc2lnbigpCi0gVXNlIGxvY2FsIHZhcmlhYmxlIGZvciB0 aGUgbGFzdCBwYXJhbWV0ZXIgaW4gY21weGNoZygpCi0gQ2hlY2sgaGFzX2h2bV9jb250YWluZXJf dmNwdSgpIGluIGFyY2hfdmNwdV9ibG9jaygpCgp2MTM6Ci0gRGVmaW5lIHRoZSBibG9ja2luZyB2 Y3B1IGxpc3QgYW5kIGxvY2sgaW4gYSBzdHJ1Y3R1cmUKLSBEZWZpbmUgdGhlIHR3byBsb2NhbCBw ZXItQ1BVIHZhcmlhYmxlcyBpbiBhIHN0cnVjdHVyZQotIFNvbWUgYWRqdXN0bWVudCB0byB2bXhf cGlfaG9va3NfYXNzaWduKCkgYW5kIHZteF9waV9ob29rc19kZWFzc2lnbigpCi0gVXNlIHNtcF9y bWIoKSBpbnN0ZWFkIG9mIGJhcnJpZXIoKSwgYW5kIHB1dCBpdCBhIGxpdHRsZSBlYXJsaWVyCi0g TWlub3IgY2hhbmdlcyB0byBtYWNybyBhcmNoX3ZjcHVfYmxvY2soKSB0byBtYWtlICd2JyBldmFs dWF0ZWQgb25seSBvbmNlLgotIFJlbW92ZSB0aGUgcG9pbnRsZXNzIHBhcmVudGhlc2VzIGluIHRo ZSBmdW5jdGlvbiBhcmd1bWVudHMgaW4gbWFjcm8gYXJjaF92Y3B1X2Jsb2NrKCkKLSBjb2Rpbmcg c3R5bGUKCnYxMjoKLSBNb3ZlIHRoZSBBU1NFUlQgdG8gdGhlIGxvY2tlZCByZWdpb24gaW4gdm14 X3ZjcHVfYmxvY2soKQotIEFkZCBiYXJyaWVyKCkgYmVmb3JlIHVzaW5nIHRoZSBsb2NhbCB2YXJp YWJsZSBpbiB2bXhfcGlfZG9fcmVzdW1lKCkKLSBTcGxpdCB2bXhfcGlfaG9va3NfcmVhc3NpZ24o KSB0byB0d28gZnVuY3Rpb25zOgogICAgICAqIHZteF9waV9ob29rc19hc3NpZ24oKQogICAgICAq IHZteF9waV9ob29rc19kZWFzc2lnbigpCi0gQWRkIG1vcmUgY29tbWVudHMgYWJvdXQgaG93IFBJ IHdvcmtzIGR1cmluZyB2Q1BVIHN0YXRlIHRyYW5zaXRpb24KLSBjb2Rpbmcgc3R5bGUKCnYxMToK LSBBZGQgQVNTRVJUKCkgaW4gdm14X3ZjcHVfYmxvY2soKQotIEFkZCBzb21lIGNvbW1lbnRzIGlu IHZteF9waV9zd2l0Y2hfZnJvbSgpCi0gUmVtb3ZlIHNvbWUgY29tbWVudHMgd2hpY2ggc2hvdWxk IGhhdmUgYmVlbiByZW1vdmVkIHdoZW4gdGhlCiAgcmVsYXRlZCBjb2RlIHdhcyByZW1vdmVkIGR1 cmluZyB2OSAtPiB2MTAKLSBSZW5hbWUgJ3ZteF9waV9zdGF0ZV90b19ub3JtYWwnIHRvICd2bXhf cGlfZG9fcmVzdW1lJwotIENvZGluZyBzdHlsZQotIE1ha2UgYXJjaF92Y3B1X2Jsb2NrKCkgYSBt YWNybwotIE1ha2UgJ3BpX3dha2V1cF92ZWN0b3InIHN0YXRpYwotIE1vdmUgaG9vayAndmNwdV9i bG9jaycgdG8gJ3N0cnVjdCBodm1fdmNwdScKLSBJbml0aWFsIGhvb2sgJ3ZjcHVfYmxvY2snIHdo ZW4gYXNzaWduaW5nIHRoZSBmaXJzdCBwY2kgZGV2aWNlCiAgYW5kIHphcCBpdCBvbiByZW1vdmFs IG9mIHRoZSBsYXN0IGRldmljZQotIFNhdmUgcG9pbnRlciB0byB0aGUgYmxvY2sgbGlzdCBsb2Nr IGluc3RlYWQgb2YgdGhlIHByb2Nlc3NvcgogIGlkIGluICdzdHJ1Y3QgYXJjaF92bXhfc3RydWN0 JwotIEltcGxlbWVudCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcyBob29rcywgc28gd2UKICBj YW4gZWxpbWlsYXRlIGxvdHMgb2YgY2hlY2tpbmdzIGFuZCBzcGlubG9ja3MgaW4gc2NoZWR1bGlu ZwogIHJlbGF0ZWQgY29kZSBwYXRoLCB3aGljaCBpcyBnb29kIGZvciBwZXJmb3JtYW5jZS4KICAg ICAgICB2bXhfcGlfc3dpdGNoX2Zyb20KICAgICAgICB2bXhfcGlfc3dpdGNoX3RvCiAgICAgICAg dm14X3BpX2RvX3Jlc3VtZQoKdjEwOgotIENoZWNrIGlvbW11X2ludHBvc3QgZmlyc3QKLSBSZW1v dmUgcG9pbnRsZXNzIGNoZWNraW5nIG9mIGhhc19odm1fY29udGFpbmVyX3ZjcHUodikKLSBSZW5h bWUgJ3ZteF9waV9zdGF0ZV9jaGFuZ2UnIHRvICd2bXhfcGlfc3RhdGVfdG9fbm9ybWFsJwotIFNp bmNlIHZjcHVfdW5ibG9jaygpIGRvZXNuJ3QgYWNxdWlyZSAncGlfYmxvY2tlZF92Y3B1X2xvY2sn LCB3ZQogIGRvbid0IG5lZWQgdXNlIGFub3RoZXIgbGlzdCB0byBzYXZlIHRoZSB2Q1BVcyB3aXRo ICdPTicgc2V0LCBqdXN0CiAgZGlyZWN0bHkgY2FsbCB2Y3B1X3VuYmxvY2sodikuCgp2OToKLSBS ZW1vdmUgYXJjaF92Y3B1X2Jsb2NrX2NhbmNlbCgpIGFuZCBhcmNoX3ZjcHVfd2FrZV9wcmVwYXJl KCkKLSBBZGQgdm14X3BpX3N0YXRlX2NoYW5nZSgpIGFuZCBjYWxsIGl0IGJlZm9yZSBWTSBFbnRy eQoKdjg6Ci0gUmVtb3ZlIHRoZSBsYXp5IGNvbnRleHQgc3dpdGNoIGhhbmRsaW5nIGZvciBQSSBz dGF0ZSB0cmFuc2l0aW9uCi0gQ2hhbmdlIFBJIHN0YXRlIGluIHZjcHVfYmxvY2soKSBhbmQgZG9f cG9sbCgpIHdoZW4gdGhlIHZDUFUKICBpcyBnb2luZyB0byBiZSBibG9ja2VkCgp2NzoKLSBNZXJn ZSBbUEFUQ0ggdjYgMTYvMThdIHZteDogQWRkIHNvbWUgc2NoZWR1bGVyIGhvb2tzIGZvciBWVC1k IHBvc3RlZCBpbnRlcnJ1cHRzCiAgYW5kICJbUEFUQ0ggdjYgMTQvMThdIHZteDogcG9zdGVkLWlu dGVycnVwdCBoYW5kbGluZyB3aGVuIHZDUFUgaXMgYmxvY2tlZCIKICBpbnRvIHRoaXMgcGF0Y2gs IHNvIGl0IGlzIHNlbGYtY29udGFpbmVkIGFuZCBtb3JlIGNvbnZlbmllbnQKICBmb3IgY29kZSBy ZXZpZXcuCi0gTWFrZSAncGlfYmxvY2tlZF92Y3B1JyBhbmQgJ3BpX2Jsb2NrZWRfdmNwdV9sb2Nr JyBzdGF0aWMKLSBDb2Rpbmcgc3R5bGUKLSBVc2UgcGVyX2NwdSgpIGluc3RlYWQgb2YgdGhpc19j cHUoKSBpbiBwaV93YWtldXBfaW50ZXJydXB0KCkKLSBNb3ZlIGFja19BUElDX2lycSgpIHRvIHRo ZSBiZWdpbm5pbmcgb2YgcGlfd2FrZXVwX2ludGVycnVwdCgpCi0gUmVuYW1lICdwaV9jdHh0X3N3 aXRjaF9mcm9tJyB0byAnY3R4dF9zd2l0Y2hfcHJlcGFyZScKLSBSZW5hbWUgJ3BpX2N0eHRfc3dp dGNoX3RvJyB0byAnY3R4dF9zd2l0Y2hfY2FuY2VsJwotIFVzZSAnaGFzX2h2bV9jb250YWluZXJf dmNwdScgaW5zdGVhZCBvZiAnaXNfaHZtX3ZjcHUnCi0gVXNlICdzcGluX2xvY2snIGFuZCAnc3Bp bl91bmxvY2snIHdoZW4gdGhlIGludGVycnVwdCBoYXMgYmVlbgogIGFscmVhZHkgZGlzYWJsZWQu Ci0gUmVuYW1lIGFyY2hfdmNwdV93YWtlX3ByZXBhcmUgdG8gdm14X3ZjcHVfd2FrZV9wcmVwYXJl Ci0gRGVmaW5lIHZteF92Y3B1X3dha2VfcHJlcGFyZSBpbiB4ZW4vYXJjaC94ODYvaHZtL2h2bS5j Ci0gQ2FsbCAucGlfY3R4dF9zd2l0Y2hfdG8oKSBfX2NvbnRleHRfc3dpdGNoKCkgaW5zdGVhZCBv ZiBkaXJlY3RseQogIGNhbGxpbmcgdm14X3Bvc3RfY3R4X3N3aXRjaF9waSgpIGluIHZteF9jdHh0 X3N3aXRjaF90bygpCi0gTWFrZSAucGlfYmxvY2tfY3B1IHVuc2lnbmVkIGludAotIFVzZSBsaXN0 X2RlbCgpIGluc3RlYWQgb2YgbGlzdF9kZWxfaW5pdCgpCi0gQ29kaW5nIHN0eWxlCgpPbmUgcmVt YWluaW5nIGl0ZW0gaW4gdjc6CkphbiBoYXMgY29uY2VybiBhYm91dCBjYWxsaW5nIHZjcHVfdW5i bG9jaygpIGluIHZteF9wcmVfY3R4X3N3aXRjaF9waSgpLApuZWVkIERhcmlvIG9yIEdlb3JnZSdz IGlucHV0IGFib3V0IHRoaXMuCgp2NjoKLSBBZGQgdHdvIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25z IGZvciBwaSBjb250ZXh0IHN3aXRjaAotIEZpeCB0eXBvcwoKdjU6Ci0gUmVuYW1lIGFyY2hfdmNw dV93YWtlIHRvIGFyY2hfdmNwdV93YWtlX3ByZXBhcmUKLSBNYWtlIGFyY2hfdmNwdV93YWtlX3By ZXBhcmUoKSBpbmxpbmUgZm9yIEFSTQotIE1lcmdlIHRoZSBBUk0gZHVtbXkgaG9vayB3aXRoIHRv Z2V0aGVyCi0gQ2hhbmdlcyB0byBzb21lIGNvZGUgY29tbWVudHMKLSBMZWF2ZSAncGlfY3R4dF9z d2l0Y2hfZnJvbScgYW5kICdwaV9jdHh0X3N3aXRjaF90bycgTlVMTCBpZgogIFBJIGlzIGRpc2Fi bGVkIG9yIHRoZSB2Q1BVIGlzIG5vdCBpbiBIVk0KLSBDb2Rpbmcgc3R5bGUKCnY0OgotIE5ld2x5 IGFkZGVkCgpDaGFuZ2xvZyBmb3IgInZteDogcG9zdGVkLWludGVycnVwdCBoYW5kbGluZyB3aGVu IHZDUFUgaXMgYmxvY2tlZCIKdjY6Ci0gRml4IHNvbWUgdHlwb3MKLSBBY2sgdGhlIGludGVycnVw dCByaWdodCBhZnRlciB0aGUgc3Bpbl91bmxvY2sgaW4gcGlfd2FrZXVwX2ludGVycnVwdCgpCgp2 NDoKLSBVc2UgbG9jYWwgdmFyaWFibGVzIGluIHBpX3dha2V1cF9pbnRlcnJ1cHQoKQotIFJlbW92 ZSB2Y3B1IGZyb20gdGhlIGJsb2NrZWQgbGlzdCB3aGVuIHBpX2Rlc2Mub249PTEsIHRoaXMKLSBh dm9pZCBraWNrIHZjcHUgbXVsdGlwbGUgdGltZXMuCi0gUmVtb3ZlIHRhc2tsZXQKCnYzOgotIFRo aXMgcGF0Y2ggaXMgZ2VuZXJhdGVkIGJ5IG1lcmdpbmcgdGhlIGZvbGxvd2luZyB0aHJlZSBwYXRj aGVzIGluIHYyOgogICBbUkZDIHYyIDA5LzE1XSBBZGQgYSBuZXcgcGVyLXZDUFUgdGFza2xldCB0 byB3YWtldXAgdGhlIGJsb2NrZWQgdkNQVQogICBbUkZDIHYyIDEwLzE1XSB2bXg6IERlZmluZSB0 d28gcGVyLWNwdSB2YXJpYWJsZXMKICAgW1JGQyB2MiAxMS8xNV0gdm14OiBBZGQgYSBnbG9iYWwg d2FrZS11cCB2ZWN0b3IgZm9yIFZULWQgUG9zdGVkLUludGVycnVwdHMKLSByZW5hbWUgJ3ZjcHVf d2FrZXVwX3Rhc2tsZXQnIHRvICdwaV92Y3B1X3dha2V1cF90YXNrbGV0JwotIE1vdmUgdGhlIGRl ZmluaXRpb24gb2YgJ3BpX3ZjcHVfd2FrZXVwX3Rhc2tsZXQnIHRvICdzdHJ1Y3QgYXJjaF92bXhf c3RydWN0JwotIHJlbmFtZSAndmNwdV93YWtldXBfdGFza2xldF9oYW5kbGVyJyB0byAncGlfdmNw dV93YWtldXBfdGFza2xldF9oYW5kbGVyJwotIE1ha2UgcGlfd2FrZXVwX2ludGVycnVwdCgpIHN0 YXRpYwotIFJlbmFtZSAnYmxvY2tlZF92Y3B1X2xpc3QnIHRvICdwaV9ibG9ja2VkX3ZjcHVfbGlz dCcKLSBtb3ZlICdwaV9ibG9ja2VkX3ZjcHVfbGlzdCcgdG8gJ3N0cnVjdCBhcmNoX3ZteF9zdHJ1 Y3QnCi0gUmVuYW1lICdibG9ja2VkX3ZjcHUnIHRvICdwaV9ibG9ja2VkX3ZjcHUnCi0gUmVuYW1l ICdibG9ja2VkX3ZjcHVfbG9jaycgdG8gJ3BpX2Jsb2NrZWRfdmNwdV9sb2NrJwoKIHhlbi9hcmNo L3g4Ni9odm0vdm14L3ZtY3MuYyAgICAgICAgIHwgICAyICsKIHhlbi9hcmNoL3g4Ni9odm0vdm14 L3ZteC5jICAgICAgICAgIHwgMTg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogeGVuL2NvbW1vbi9zY2hlZHVsZS5jICAgICAgICAgICAgICAgfCAgIDQgKwogeGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgfCAgMTEgKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJt L2RvbWFpbi5oICAgICAgICB8ICAgMiArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCAg ICAgICB8ICAxMiArKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmggIHwgIDcx ICsrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm14LmggICB8ICAg NSArCiA4IGZpbGVzIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2h2bS92bXgvdm1jcy5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCmlu ZGV4IGVkZDRjOGQuLjJlNTM1ZGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Zt Y3MuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKQEAgLTY3Niw2ICs2NzYsOCBA QCBpbnQgdm14X2NwdV91cCh2b2lkKQogICAgIGlmICggY3B1X2hhc192bXhfdnBpZCApCiAgICAg ICAgIHZwaWRfc3luY19hbGwoKTsKIAorICAgIHZteF9waV9wZXJfY3B1X2luaXQoY3B1KTsKKwog ICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXgu YyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCmluZGV4IDc5MTdmYjcuLjQ3ZDQwZTYgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3ZteC5jCkBAIC04Myw3ICs4MywxNDggQEAgc3RhdGljIGludCB2bXhfbXNyX3dyaXRl X2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCk7CiBzdGF0 aWMgdm9pZCB2bXhfaW52bHBnX2ludGVyY2VwdCh1bnNpZ25lZCBsb25nIHZhZGRyKTsKIHN0YXRp YyBpbnQgdm14X3ZtZnVuY19pbnRlcmNlcHQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwog CitzdHJ1Y3Qgdm14X3BpX2Jsb2NraW5nX3ZjcHUgeworICAgIHN0cnVjdCBsaXN0X2hlYWQgICAg IGxpc3Q7CisgICAgc3BpbmxvY2tfdCAgICAgICAgICAgbG9jazsKK307CisKKy8qCisgKiBXZSBt YWludGFpbiBhIHBlci1DUFUgbGlua2VkLWxpc3Qgb2YgdkNQVXMsIHNvIGluIFBJIHdha2V1cAor ICogaGFuZGxlciB3ZSBjYW4gZmluZCB3aGljaCB2Q1BVIHNob3VsZCBiZSB3b2tlbiB1cC4KKyAq Lworc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCB2bXhfcGlfYmxvY2tpbmdfdmNwdSwgdm14 X3BpX2Jsb2NraW5nKTsKKwogdWludDhfdCBfX3JlYWRfbW9zdGx5IHBvc3RlZF9pbnRyX3ZlY3Rv cjsKK3N0YXRpYyB1aW50OF90IF9fcmVhZF9tb3N0bHkgcGlfd2FrZXVwX3ZlY3RvcjsKKwordm9p ZCB2bXhfcGlfcGVyX2NwdV9pbml0KHVuc2lnbmVkIGludCBjcHUpCit7CisgICAgSU5JVF9MSVNU X0hFQUQoJnBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCBjcHUpLmxpc3QpOworICAgIHNwaW5fbG9j a19pbml0KCZwZXJfY3B1KHZteF9waV9ibG9ja2luZywgY3B1KS5sb2NrKTsKK30KKworc3RhdGlj IHZvaWQgdm14X3ZjcHVfYmxvY2soc3RydWN0IHZjcHUgKnYpCit7CisgICAgdW5zaWduZWQgbG9u ZyBmbGFnczsKKyAgICB1bnNpZ25lZCBpbnQgZGVzdDsKKyAgICBzcGlubG9ja190ICpvbGRfbG9j azsKKyAgICBzcGlubG9ja190ICpwaV9ibG9ja2luZ19saXN0X2xvY2sgPQorCQkmcGVyX2NwdSh2 bXhfcGlfYmxvY2tpbmcsIHYtPnByb2Nlc3NvcikubG9jazsKKyAgICBzdHJ1Y3QgcGlfZGVzYyAq cGlfZGVzYyA9ICZ2LT5hcmNoLmh2bV92bXgucGlfZGVzYzsKKworICAgIHNwaW5fbG9ja19pcnFz YXZlKHBpX2Jsb2NraW5nX2xpc3RfbG9jaywgZmxhZ3MpOworICAgIG9sZF9sb2NrID0gY21weGNo Zygmdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2ssIE5VTEwsCisgICAgICAgICAgICAg ICAgICAgICAgIHBpX2Jsb2NraW5nX2xpc3RfbG9jayk7CisKKyAgICAvKgorICAgICAqICd2LT5h cmNoLmh2bV92bXgucGlfYmxvY2tpbmcubG9jaycgc2hvdWxkIGJlIE5VTEwgYmVmb3JlCisgICAg ICogYmVpbmcgYXNzaWduZWQgdG8gYSBuZXcgdmFsdWUsIHNpbmNlIHRoZSB2Q1BVIGlzIGN1cnJl bnRseQorICAgICAqIHJ1bm5pbmcgYW5kIGl0IGNhbm5vdCBiZSBvbiBhbnkgYmxvY2tpbmcgbGlz dC4KKyAgICAgKi8KKyAgICBBU1NFUlQob2xkX2xvY2sgPT0gTlVMTCk7CisKKyAgICBsaXN0X2Fk ZF90YWlsKCZ2LT5hcmNoLmh2bV92bXgucGlfYmxvY2tpbmcubGlzdCwKKyAgICAgICAgICAgICAg ICAgICZwZXJfY3B1KHZteF9waV9ibG9ja2luZywgdi0+cHJvY2Vzc29yKS5saXN0KTsKKyAgICBz cGluX3VubG9ja19pcnFyZXN0b3JlKHBpX2Jsb2NraW5nX2xpc3RfbG9jaywgZmxhZ3MpOworCisg ICAgQVNTRVJUKCFwaV90ZXN0X3NuKHBpX2Rlc2MpKTsKKworICAgIGRlc3QgPSBjcHVfcGh5c2lj YWxfaWQodi0+cHJvY2Vzc29yKTsKKworICAgIEFTU0VSVChwaV9kZXNjLT5uZHN0ID09CisgICAg ICAgICAgICh4MmFwaWNfZW5hYmxlZCA/IGRlc3QgOiBNQVNLX0lOU1IoZGVzdCwgUElfeEFQSUNf TkRTVF9NQVNLKSkpOworCisgICAgd3JpdGVfYXRvbWljKCZwaV9kZXNjLT5udiwgcGlfd2FrZXVw X3ZlY3Rvcik7Cit9CisKK3N0YXRpYyB2b2lkIHZteF9waV9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNw dSAqdikKK3sKKyAgICBzdHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYyA9ICZ2LT5hcmNoLmh2bV92bXgu cGlfZGVzYzsKKworICAgIGlmICggdGVzdF9iaXQoX1ZQRl9ibG9ja2VkLCAmdi0+cGF1c2VfZmxh Z3MpICkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGlfc2V0X3NuKHBpX2Rlc2MpOworfQorCitz dGF0aWMgdm9pZCB2bXhfcGlfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHN0cnVj dCBwaV9kZXNjICpwaV9kZXNjID0gJnYtPmFyY2guaHZtX3ZteC5waV9kZXNjOworICAgIHVuc2ln bmVkIGludCBkZXN0ID0gY3B1X3BoeXNpY2FsX2lkKHYtPnByb2Nlc3Nvcik7CisKKyAgICB3cml0 ZV9hdG9taWMoJnBpX2Rlc2MtPm5kc3QsCisgICAgICAgICAgICAgICAgIHgyYXBpY19lbmFibGVk ID8gZGVzdCA6IE1BU0tfSU5TUihkZXN0LCBQSV94QVBJQ19ORFNUX01BU0spKTsKKworICAgIHBp X2NsZWFyX3NuKHBpX2Rlc2MpOworfQorCitzdGF0aWMgdm9pZCB2bXhfcGlfZG9fcmVzdW1lKHN0 cnVjdCB2Y3B1ICp2KQoreworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc3BpbmxvY2tf dCAqcGlfYmxvY2tpbmdfbGlzdF9sb2NrOworICAgIHN0cnVjdCBwaV9kZXNjICpwaV9kZXNjID0g JnYtPmFyY2guaHZtX3ZteC5waV9kZXNjOworCisgICAgQVNTRVJUKCF0ZXN0X2JpdChfVlBGX2Js b2NrZWQsICZ2LT5wYXVzZV9mbGFncykpOworCisgICAgLyoKKyAgICAgKiBTZXQgJ05WJyBmaWVs ZCBiYWNrIHRvIHBvc3RlZF9pbnRyX3ZlY3Rvciwgc28gdGhlCisgICAgICogUG9zdGVkLUludGVy cnVwdHMgY2FuIGJlIGRlbGl2ZXJlZCB0byB0aGUgdkNQVSB3aGVuCisgICAgICogaXQgaXMgcnVu bmluZyBpbiBub24tcm9vdCBtb2RlLgorICAgICAqLworICAgIHdyaXRlX2F0b21pYygmcGlfZGVz Yy0+bnYsIHBvc3RlZF9pbnRyX3ZlY3Rvcik7CisKKyAgICAvKiBUaGUgdkNQVSBpcyBub3Qgb24g YW55IGJsb2NraW5nIGxpc3QuICovCisgICAgcGlfYmxvY2tpbmdfbGlzdF9sb2NrID0gdi0+YXJj aC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2s7CisKKyAgICAvKiBQcmV2ZW50IHRoZSBjb21waWxl ciBmcm9tIGVsaW1pbmF0aW5nIHRoZSBsb2NhbCB2YXJpYWJsZS4qLworICAgIHNtcF9ybWIoKTsK KworICAgIGlmICggcGlfYmxvY2tpbmdfbGlzdF9sb2NrID09IE5VTEwgKQorICAgICAgICByZXR1 cm47CisKKyAgICBzcGluX2xvY2tfaXJxc2F2ZShwaV9ibG9ja2luZ19saXN0X2xvY2ssIGZsYWdz KTsKKworICAgIC8qCisgICAgICogdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sgPT0g TlVMTCBoZXJlIG1lYW5zIHRoZSB2Q1BVCisgICAgICogd2FzIHJlbW92ZWQgZnJvbSB0aGUgYmxv Y2tpbmcgbGlzdCB3aGlsZSB3ZSBhcmUgYWNxdWlyaW5nIHRoZSBsb2NrLgorICAgICAqLworICAg IGlmICggdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sgIT0gTlVMTCApCisgICAgewor ICAgICAgICBBU1NFUlQodi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sgPT0gcGlfYmxv Y2tpbmdfbGlzdF9sb2NrKTsKKyAgICAgICAgbGlzdF9kZWwoJnYtPmFyY2guaHZtX3ZteC5waV9i bG9ja2luZy5saXN0KTsKKyAgICAgICAgdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sg PSBOVUxMOworICAgIH0KKworICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUocGlfYmxvY2tpbmdf bGlzdF9sb2NrLCBmbGFncyk7Cit9CisKKy8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4g cGNpZGV2c19sb2NrIGlzIGhlbGQgKi8KK3ZvaWQgdm14X3BpX2hvb2tzX2Fzc2lnbihzdHJ1Y3Qg ZG9tYWluICpkKQoreworICAgIGlmICggIWlvbW11X2ludHBvc3QgfHwgIWhhc19odm1fY29udGFp bmVyX2RvbWFpbihkKSApCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghZC0+YXJjaC5o dm1fZG9tYWluLnZteC52Y3B1X2Jsb2NrKTsKKworICAgIGQtPmFyY2guaHZtX2RvbWFpbi52bXgu dmNwdV9ibG9jayA9IHZteF92Y3B1X2Jsb2NrOworICAgIGQtPmFyY2guaHZtX2RvbWFpbi52bXgu cGlfc3dpdGNoX2Zyb20gPSB2bXhfcGlfc3dpdGNoX2Zyb207CisgICAgZC0+YXJjaC5odm1fZG9t YWluLnZteC5waV9zd2l0Y2hfdG8gPSB2bXhfcGlfc3dpdGNoX3RvOworICAgIGQtPmFyY2guaHZt X2RvbWFpbi52bXgucGlfZG9fcmVzdW1lID0gdm14X3BpX2RvX3Jlc3VtZTsKK30KKworLyogVGhp cyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBwY2lkZXZzX2xvY2sgaXMgaGVsZCAqLwordm9pZCB2 bXhfcGlfaG9va3NfZGVhc3NpZ24oc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpZiAoICFpb21t dV9pbnRwb3N0IHx8ICFoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQorICAgICAgICByZXR1 cm47CisKKyAgICBBU1NFUlQoZC0+YXJjaC5odm1fZG9tYWluLnZteC52Y3B1X2Jsb2NrKTsKKwor ICAgIGQtPmFyY2guaHZtX2RvbWFpbi52bXgudmNwdV9ibG9jayA9IE5VTEw7CisgICAgZC0+YXJj aC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hfZnJvbSA9IE5VTEw7CisgICAgZC0+YXJjaC5odm1f ZG9tYWluLnZteC5waV9zd2l0Y2hfdG8gPSBOVUxMOworICAgIGQtPmFyY2guaHZtX2RvbWFpbi52 bXgucGlfZG9fcmVzdW1lID0gTlVMTDsKK30KIAogc3RhdGljIGludCB2bXhfZG9tYWluX2luaXRp YWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKIHsKQEAgLTExMiw2ICsyNTMsOCBAQCBzdGF0aWMgaW50 IHZteF92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAKICAgICBzcGluX2xvY2tfaW5p dCgmdi0+YXJjaC5odm1fdm14LnZtY3NfbG9jayk7CiAKKyAgICBJTklUX0xJU1RfSEVBRCgmdi0+ YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxpc3QpOworCiAgICAgdi0+YXJjaC5zY2hlZHVsZV90 YWlsICAgID0gdm14X2RvX3Jlc3VtZTsKICAgICB2LT5hcmNoLmN0eHRfc3dpdGNoX2Zyb20gPSB2 bXhfY3R4dF9zd2l0Y2hfZnJvbTsKICAgICB2LT5hcmNoLmN0eHRfc3dpdGNoX3RvICAgPSB2bXhf Y3R4dF9zd2l0Y2hfdG87CkBAIC03NDAsNiArODgzLDkgQEAgc3RhdGljIHZvaWQgdm14X2N0eHRf c3dpdGNoX2Zyb20oc3RydWN0IHZjcHUgKnYpCiAgICAgdm14X3NhdmVfZ3Vlc3RfbXNycyh2KTsK ICAgICB2bXhfcmVzdG9yZV9ob3N0X21zcnMoKTsKICAgICB2bXhfc2F2ZV9kcih2KTsKKworICAg IGlmICggdi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRjaF9mcm9tICkKKyAg ICAgICAgdi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRjaF9mcm9tKHYpOwog fQogCiBzdGF0aWMgdm9pZCB2bXhfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpCkBAIC03 NTIsNiArODk4LDkgQEAgc3RhdGljIHZvaWQgdm14X2N0eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1 ICp2KQogCiAgICAgdm14X3Jlc3RvcmVfZ3Vlc3RfbXNycyh2KTsKICAgICB2bXhfcmVzdG9yZV9k cih2KTsKKworICAgIGlmICggdi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4udm14LnBpX3N3aXRj aF90byApCisgICAgICAgIHYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnZteC5waV9zd2l0Y2hf dG8odik7CiB9CiAKIApAQCAtMjAxMCw2ICsyMTU5LDM4IEBAIHN0YXRpYyBzdHJ1Y3QgaHZtX2Z1 bmN0aW9uX3RhYmxlIF9faW5pdGRhdGEgdm14X2Z1bmN0aW9uX3RhYmxlID0gewogICAgIC5hbHRw Mm1fdmNwdV9lbXVsYXRlX3ZtZnVuYyA9IHZteF92Y3B1X2VtdWxhdGVfdm1mdW5jLAogfTsKIAor LyogSGFuZGxlIFZULWQgcG9zdGVkLWludGVycnVwdCB3aGVuIFZDUFUgaXMgYmxvY2tlZC4gKi8K K3N0YXRpYyB2b2lkIHBpX3dha2V1cF9pbnRlcnJ1cHQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCit7CisgICAgc3RydWN0IGFyY2hfdm14X3N0cnVjdCAqdm14LCAqdG1wOworICAgIHNwaW5s b2NrX3QgKmxvY2sgPSAmcGVyX2NwdSh2bXhfcGlfYmxvY2tpbmcsIHNtcF9wcm9jZXNzb3JfaWQo KSkubG9jazsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja2VkX3ZjcHVzID0KKwkJJnBlcl9j cHUodm14X3BpX2Jsb2NraW5nLCBzbXBfcHJvY2Vzc29yX2lkKCkpLmxpc3Q7CisKKyAgICBhY2tf QVBJQ19pcnEoKTsKKyAgICB0aGlzX2NwdShpcnFfY291bnQpKys7CisKKyAgICBzcGluX2xvY2so bG9jayk7CisKKyAgICAvKgorICAgICAqIFhYWDogVGhlIGxlbmd0aCBvZiB0aGUgbGlzdCBkZXBl bmRzIG9uIGhvdyBtYW55IHZDUFUgaXMgY3VycmVudAorICAgICAqIGJsb2NrZWQgb24gdGhpcyBz cGVjaWZpYyBwQ1BVLiBUaGlzIG1heSBodXJ0IHRoZSBpbnRlcnJ1cHQgbGF0ZW5jeQorICAgICAq IGlmIHRoZSBsaXN0IGdyb3dzIHRvIHRvbyBtYW55IGVudHJpZXMuCisgICAgICovCisgICAgbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZteCwgdG1wLCBibG9ja2VkX3ZjcHVzLCBwaV9ibG9ja2lu Zy5saXN0KQorICAgIHsKKyAgICAgICAgaWYgKCBwaV90ZXN0X29uKCZ2bXgtPnBpX2Rlc2MpICkK KyAgICAgICAgeworICAgICAgICAgICAgbGlzdF9kZWwoJnZteC0+cGlfYmxvY2tpbmcubGlzdCk7 CisgICAgICAgICAgICBBU1NFUlQodm14LT5waV9ibG9ja2luZy5sb2NrID09IGxvY2spOworICAg ICAgICAgICAgdm14LT5waV9ibG9ja2luZy5sb2NrID0gTlVMTDsKKyAgICAgICAgICAgIHZjcHVf dW5ibG9jayhjb250YWluZXJfb2Yodm14LCBzdHJ1Y3QgdmNwdSwgYXJjaC5odm1fdm14KSk7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICBzcGluX3VubG9jayhsb2NrKTsKK30KKwogLyogSGFuZGxl IFZULWQgcG9zdGVkLWludGVycnVwdCB3aGVuIFZDUFUgaXMgcnVubmluZy4gKi8KIHN0YXRpYyB2 b2lkIHBpX25vdGlmaWNhdGlvbl9pbnRlcnJ1cHQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp CiB7CkBAIC0yMDk2LDcgKzIyNzcsMTAgQEAgY29uc3Qgc3RydWN0IGh2bV9mdW5jdGlvbl90YWJs ZSAqIF9faW5pdCBzdGFydF92bXgodm9pZCkKICAgICBpZiAoIGNwdV9oYXNfdm14X3Bvc3RlZF9p bnRyX3Byb2Nlc3NpbmcgKQogICAgIHsKICAgICAgICAgaWYgKCBpb21tdV9pbnRwb3N0ICkKKyAg ICAgICAgewogICAgICAgICAgICAgYWxsb2NfZGlyZWN0X2FwaWNfdmVjdG9yKCZwb3N0ZWRfaW50 cl92ZWN0b3IsIHBpX25vdGlmaWNhdGlvbl9pbnRlcnJ1cHQpOworICAgICAgICAgICAgYWxsb2Nf ZGlyZWN0X2FwaWNfdmVjdG9yKCZwaV93YWtldXBfdmVjdG9yLCBwaV93YWtldXBfaW50ZXJydXB0 KTsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhbGxvY19kaXJlY3RfYXBp Y192ZWN0b3IoJnBvc3RlZF9pbnRyX3ZlY3RvciwgZXZlbnRfY2hlY2tfaW50ZXJydXB0KTsKICAg ICB9CkBAIC0zNTc0LDYgKzM3NTgsOSBAQCB2b2lkIHZteF92bWVudGVyX2hlbHBlcihjb25zdCBz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICBzdHJ1Y3QgaHZtX3ZjcHVfYXNpZCAqcF9h c2lkOwogICAgIGJvb2xfdCBuZWVkX2ZsdXNoOwogCisgICAgaWYgKCBjdXJyLT5kb21haW4tPmFy Y2guaHZtX2RvbWFpbi52bXgucGlfZG9fcmVzdW1lICkKKyAgICAgICAgY3Vyci0+ZG9tYWluLT5h cmNoLmh2bV9kb21haW4udm14LnBpX2RvX3Jlc3VtZShjdXJyKTsKKwogICAgIGlmICggIWNwdV9o YXNfdm14X3ZwaWQgKQogICAgICAgICBnb3RvIG91dDsKICAgICBpZiAoIG5lc3RlZGh2bV92Y3B1 X2luX2d1ZXN0bW9kZShjdXJyKSApCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkdWxlLmMg Yi94ZW4vY29tbW9uL3NjaGVkdWxlLmMKaW5kZXggZDEyMTg5Ni4uMmQ4NzAyMSAxMDA2NDQKLS0t IGEveGVuL2NvbW1vbi9zY2hlZHVsZS5jCisrKyBiL3hlbi9jb21tb24vc2NoZWR1bGUuYwpAQCAt ODAyLDYgKzgwMiw4IEBAIHZvaWQgdmNwdV9ibG9jayh2b2lkKQogCiAgICAgc2V0X2JpdChfVlBG X2Jsb2NrZWQsICZ2LT5wYXVzZV9mbGFncyk7CiAKKyAgICBhcmNoX3ZjcHVfYmxvY2sodik7CisK ICAgICAvKiBDaGVjayBmb3IgZXZlbnRzIC9hZnRlci8gYmxvY2tpbmc6IGF2b2lkcyB3YWtldXAg d2FpdGluZyByYWNlLiAqLwogICAgIGlmICggbG9jYWxfZXZlbnRzX25lZWRfZGVsaXZlcnkoKSAp CiAgICAgewpAQCAtODM5LDYgKzg0MSw4IEBAIHN0YXRpYyBsb25nIGRvX3BvbGwoc3RydWN0IHNj aGVkX3BvbGwgKnNjaGVkX3BvbGwpCiAgICAgdi0+cG9sbF9ldnRjaG4gPSAtMTsKICAgICBzZXRf Yml0KHYtPnZjcHVfaWQsIGQtPnBvbGxfbWFzayk7CiAKKyAgICBhcmNoX3ZjcHVfYmxvY2sodik7 CisKICNpZm5kZWYgQ09ORklHX1g4NiAvKiBzZXRfYml0KCkgaW1wbGllcyBtYigpIG9uIHg4NiAq LwogICAgIC8qIENoZWNrIGZvciBldmVudHMgL2FmdGVyLyBzZXR0aW5nIGZsYWdzOiBhdm9pZHMg d2FrZXVwIHdhaXRpbmcgcmFjZS4gKi8KICAgICBzbXBfbWIoKTsKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv dnRkL2lvbW11LmMKaW5kZXggZWMzMWM2Yi4uODAyMjcwMiAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv dnRkL2lvbW11LmMKQEAgLTIyODMsOSArMjI4MywxNyBAQCBzdGF0aWMgaW50IHJlYXNzaWduX2Rl dmljZV9vd25lcnNoaXAoCiAgICAgaWYgKCByZXQgKQogICAgICAgICByZXR1cm4gcmV0OwogCisg ICAgaWYgKCAhaGFzX2FyY2hfcGRldnModGFyZ2V0KSApCisgICAgICAgIHZteF9waV9ob29rc19h c3NpZ24odGFyZ2V0KTsKKwogICAgIHJldCA9IGRvbWFpbl9jb250ZXh0X21hcHBpbmcodGFyZ2V0 LCBkZXZmbiwgcGRldik7CiAgICAgaWYgKCByZXQgKQorICAgIHsKKyAgICAgICAgaWYgKCAhaGFz X2FyY2hfcGRldnModGFyZ2V0KSApCisgICAgICAgICAgICB2bXhfcGlfaG9va3NfZGVhc3NpZ24o dGFyZ2V0KTsKKwogICAgICAgICByZXR1cm4gcmV0OworICAgIH0KIAogICAgIGlmICggZGV2Zm4g PT0gcGRldi0+ZGV2Zm4gKQogICAgIHsKQEAgLTIyOTMsNiArMjMwMSw5IEBAIHN0YXRpYyBpbnQg cmVhc3NpZ25fZGV2aWNlX293bmVyc2hpcCgKICAgICAgICAgcGRldi0+ZG9tYWluID0gdGFyZ2V0 OwogICAgIH0KIAorICAgIGlmICggIWhhc19hcmNoX3BkZXZzKHNvdXJjZSkgKQorICAgICAgICB2 bXhfcGlfaG9va3NfZGVhc3NpZ24oc291cmNlKTsKKwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20t YXJtL2RvbWFpbi5oCmluZGV4IGFhN2YyODMuLjM3YWZhODAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApA QCAtMzEwLDYgKzMxMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlX3ZjcHVfZ3Vlc3RfY29u dGV4dChzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICp2Z2MpCiAgICAgeGZyZWUodmdjKTsKIH0K IAorc3RhdGljIGlubGluZSB2b2lkIGFyY2hfdmNwdV9ibG9jayhzdHJ1Y3QgdmNwdSAqdikge30K KwogI2VuZGlmIC8qIF9fQVNNX0RPTUFJTl9IX18gKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgK aW5kZXggYjlkODkzZC4uODhlYzczNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vaHZtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKQEAgLTU2NSw2ICs1 NjUsMTggQEAgY29uc3QgY2hhciAqaHZtX2VmZXJfdmFsaWQoY29uc3Qgc3RydWN0IHZjcHUgKnYs IHVpbnQ2NF90IHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBj cjBfcGcpOwogdW5zaWduZWQgbG9uZyBodm1fY3I0X2d1ZXN0X3Jlc2VydmVkX2JpdHMoY29uc3Qg c3RydWN0IHZjcHUgKnYsIGJvb2xfdCByZXN0b3JlKTsKIAorLyoKKyAqIFRoaXMgbXVzdCBiZSBk ZWZpbmVkIGFzIGEgbWFjcm8gaW5zdGVhZCBvZiBhbiBpbmxpbmUgZnVuY3Rpb24sCisgKiBiZWNh dXNlIGl0IHVzZXMgJ3N0cnVjdCB2Y3B1JyBhbmQgJ3N0cnVjdCBkb21haW4nIHdoaWNoIGhhdmUK KyAqIG5vdCBiZWVuIGRlZmluZWQgeWV0LgorICovCisjZGVmaW5lIGFyY2hfdmNwdV9ibG9jayh2 KSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBz dHJ1Y3QgdmNwdSAqdl8gPSAodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfdmNwdSh2XykgJiYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAodl8pLT5kb21haW4t PmFyY2guaHZtX2RvbWFpbi52bXgudmNwdV9ibG9jayApICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgKHZfKS0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4udm14LnZjcHVfYmxvY2sodl8pOyAg ICAgICAgICAgICAgICAgXAorfSkKKwogI2VuZGlmIC8qIF9fQVNNX1g4Nl9IVk1fSFZNX0hfXyAq LwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmgKaW5kZXggZDE0OTZiOC4uODI0N2Q1 OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1jcy5oCkBAIC03Nyw2ICs3Nyw2NSBAQCBzdHJ1 Y3Qgdm14X2RvbWFpbiB7CiAgICAgdW5zaWduZWQgbG9uZyBhcGljX2FjY2Vzc19tZm47CiAgICAg LyogVk1YX0RPTUFJTl8qICovCiAgICAgdW5zaWduZWQgaW50IHN0YXR1czsKKworICAgIC8qCisg ICAgICogVG8gaGFuZGxlIHBvc3RlZCBpbnRlcnJ1cHRzIGNvcnJlY3RseSwgd2UgbmVlZCB0byBz ZXQgdGhlIGZvbGxvd2luZworICAgICAqIHN0YXRlOgorICAgICAqCisgICAgICogKiBUaGUgUEkg bm90aWZpY2F0aW9uIHZlY3RvciAoTlYpCisgICAgICogKiBUaGUgUEkgbm90aWZpY2F0aW9uIGRl c3RpbmF0aW9uIHByb2Nlc3NvciAoTkRTVCkKKyAgICAgKiAqIFRoZSBQSSAic3VwcHJlc3Mgbm90 aWZpY2F0aW9uIiBiaXQgKFNOKQorICAgICAqICogVGhlIHZjcHUgcGkgImJsb2NrZWQiIGxpc3QK KyAgICAgKgorICAgICAqIElmIGEgVk0gaXMgY3VycmVudGx5IHJ1bm5pbmcsIHdlIHdhbnQgdGhl IFBJIGRlbGl2ZXJlZCB0byB0aGUgZ3Vlc3QgdmNwdQorICAgICAqIG9uIHRoZSBwcm9wZXIgcGNw dSAoTkRTVCA9IHYtPnByb2Nlc3NvciwgU04gY2xlYXIpLgorICAgICAqCisgICAgICogSWYgdGhl IHZtIGlzIGJsb2NrZWQsIHdlIHdhbnQgdGhlIFBJIGRlbGl2ZXJlZCB0byBYZW4gc28gdGhhdCBp dCBjYW4KKyAgICAgKiB3YWtlIGl0IHVwICAoU04gY2xlYXIsIE5WID0gcGlfd2FrZXVwX3ZlY3Rv ciwgdmNwdSBvbiBibG9jayBsaXN0KS4KKyAgICAgKgorICAgICAqIElmIHRoZSBWTSBpcyBjdXJy ZW50bHkgZWl0aGVyIHByZWVtcHRlZCBvciBvZmZsaW5lIChpLmUuLCBub3QgcnVubmluZworICAg ICAqIGJlY2F1c2Ugb2Ygc29tZSByZWFzb24gb3RoZXIgdGhhbiBibG9ja2luZyB3YWl0aW5nIGZv ciBhbiBpbnRlcnJ1cHQpLAorICAgICAqIHRoZXJlJ3Mgbm90aGluZyBYZW4gY2FuIGRvIC0tIHdl IHdhbnQgdGhlIGludGVycnVwdCBwZW5kaW5nIGJpdCBzZXQgaW4KKyAgICAgKiB0aGUgZ3Vlc3Qs IGJ1dCB3ZSBkb24ndCB3YW50IHRvIGJvdGhlciBYZW4gd2l0aCBhbiBpbnRlcnJ1cHQgKFNOIGNs ZWFyKS4KKyAgICAgKgorICAgICAqIFRoZXJlJ3MgYSBicmllZiB3aW5kb3cgb2YgdGltZSBiZXR3 ZWVuIHZteF9pbnRyX2Fzc2lzdCgpIGFuZCBjaGVja2luZworICAgICAqIHNvZnRpcnFzIHdoZXJl IGlmIGFuIGludGVycnVwdCBjb21lcyBpbiBpdCBtYXkgYmUgbG9zdDsgc28gd2UgbmVlZCBYZW4K KyAgICAgKiB0byBnZXQgYW4gaW50ZXJydXB0IGFuZCByYWlzZSBhIHNvZnRpcnEgc28gdGhhdCBp dCB3aWxsIGdvIHRocm91Z2ggdGhlCisgICAgICogdm14X2ludHJfYXNzaXN0KCkgcGF0aCBhZ2Fp biAoU04gY2xlYXIsIE5WID0gcG9zdGVkX2ludGVycnVwdCkuCisgICAgICoKKyAgICAgKiBUaGUg d2F5IHdlIGltcGxlbWVudCB0aGlzIG5vdyBpcyBieSBsb29raW5nIGF0IHdoYXQgbmVlZHMgdG8g aGFwcGVuIG9uCisgICAgICogdGhlIGZvbGxvd2luZyBydW5zdGF0ZSB0cmFuc2l0aW9uczoKKyAg ICAgKgorICAgICAqIEE6IHJ1bm5hYmxlIC0+IHJ1bm5pbmcKKyAgICAgKiAgLSBTTiA9IDAKKyAg ICAgKiAgLSBORFNUID0gdi0+cHJvY2Vzc29yCisgICAgICogQjogcnVubmluZyAtPiBydW5uYWJs ZQorICAgICAqICAtIFNOID0gMQorICAgICAqIEM6IHJ1bm5pbmcgLT4gYmxvY2tlZAorICAgICAq ICAtIE5WID0gcGlfd2FrZXVwX3ZlY3RvcgorICAgICAqICAtIEFkZCB2Y3B1IHRvIGJsb2NrZWQg bGlzdAorICAgICAqIEQ6IGJsb2NrZWQgLT4gcnVubmFibGUKKyAgICAgKiAgLSBOViA9IHBvc3Rl ZF9pbnRyX3ZlY3RvcgorICAgICAqICAtIFRha2UgdmNwdSBvZmYgYmxvY2tlZCBsaXN0CisgICAg ICoKKyAgICAgKiBGb3IgdHJhbnNpdGlvbnMgQSBhbmQgQiwgd2UgYWRkIGhvb2tzIGludG8gdm14 X2N0eHRfc3dpdGNoX3tmcm9tLHRvfQorICAgICAqIHBhdGhzLgorICAgICAqCisgICAgICogRm9y IHRyYW5zaXRpb24gQywgd2UgYWRkIGEgbmV3IGFyY2ggaG9vaywgYXJjaF92Y3B1X2Jsb2NrKCks IHdoaWNoIGlzCisgICAgICogY2FsbGVkIGZyb20gdmNwdV9ibG9jaygpIGFuZCB2Y3B1X2RvX3Bv bGwoKS4KKyAgICAgKgorICAgICAqIEZvciB0cmFuc2l0aW9uIEQsIHJhdGhlciB0aGFuIGFkZCBh biBleHRyYSBhcmNoIGhvb2sgb24gdmNwdV93YWtlLCB3ZQorICAgICAqIGFkZCBhIGhvb2sgb24g dGhlIHZtZW50cnkgcGF0aCB3aGljaCBjaGVja3MgdG8gc2VlIGlmIGVpdGhlciBvZiB0aGUgdHdv CisgICAgICogYWN0aW9ucyBuZWVkIHRvIGJlIHRha2VuLgorICAgICAqCisgICAgICogVGhlc2Ug aG9va3Mgb25seSBuZWVkIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkb21haW4gaW4gcXVlc3Rpb24g YWN0dWFsbHkKKyAgICAgKiBoYXMgYSBwaHlzaWNhbCBkZXZpY2UgYXNzaWduZWQgdG8gaXQsIHNv IHdlIHNldCBhbmQgY2xlYXIgdGhlIGNhbGxiYWNrcworICAgICAqIGFzIGFwcHJvcHJpYXRlIHdo ZW4gZGV2aWNlIGFzc2lnbm1lbnQgY2hhbmdlcy4KKyAgICAgKi8KKyAgICB2b2lkICgqdmNwdV9i bG9jaykgKHN0cnVjdCB2Y3B1ICopOworICAgIHZvaWQgKCpwaV9zd2l0Y2hfZnJvbSkgKHN0cnVj dCB2Y3B1ICp2KTsKKyAgICB2b2lkICgqcGlfc3dpdGNoX3RvKSAoc3RydWN0IHZjcHUgKnYpOwor ICAgIHZvaWQgKCpwaV9kb19yZXN1bWUpIChzdHJ1Y3QgdmNwdSAqdik7CiB9OwogCiBzdHJ1Y3Qg cGlfZGVzYyB7CkBAIC0xMDEsNiArMTYwLDExIEBAIHN0cnVjdCBwaV9kZXNjIHsKIAogI2RlZmlu ZSBOUl9QTUxfRU5UUklFUyAgIDUxMgogCitzdHJ1Y3QgcGlfYmxvY2tpbmdfdmNwdSB7CisgICAg c3RydWN0IGxpc3RfaGVhZCAgICAgbGlzdDsKKyAgICBzcGlubG9ja190ICAgICAgICAgICAqbG9j azsKK307CisKIHN0cnVjdCBhcmNoX3ZteF9zdHJ1Y3QgewogICAgIC8qIFBoeXNpY2FsIGFkZHJl c3Mgb2YgVk1DUy4gKi8KICAgICBwYWRkcl90ICAgICAgICAgICAgICB2bWNzX3BhOwpAQCAtMTYw LDYgKzIyNCwxMyBAQCBzdHJ1Y3QgYXJjaF92bXhfc3RydWN0IHsKICAgICBzdHJ1Y3QgcGFnZV9p bmZvICAgICAqdm13cml0ZV9iaXRtYXA7CiAKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICAgICAqcG1s X3BnOworCisgICAgLyoKKyAgICAgKiBCZWZvcmUgaXQgaXMgYmxvY2tlZCwgdkNQVSBpcyBhZGRl ZCB0byB0aGUgcGVyLWNwdSBsaXN0LgorICAgICAqIFZULWQgZW5naW5lIGNhbiBzZW5kIHdha2V1 cCBub3RpZmljYXRpb24gZXZlbnQgdG8gdGhlCisgICAgICogcENQVSBhbmQgd2FrZXVwIHRoZSBy ZWxhdGVkIHZDUFUuCisgICAgICovCisgICAgc3RydWN0IHBpX2Jsb2NraW5nX3ZjcHUgcGlfYmxv Y2tpbmc7CiB9OwogCiBpbnQgdm14X2NyZWF0ZV92bWNzKHN0cnVjdCB2Y3B1ICp2KTsKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bXguaCBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3ZteC92bXguaAppbmRleCAxNzE5OTY1Li4zNTliMmE5IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm14LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vdm14L3ZteC5oCkBAIC01NjMsNiArNTYzLDExIEBAIGludCBhbGxvY19wMm1faGFwX2Rh dGEoc3RydWN0IHAybV9kb21haW4gKnAybSk7CiB2b2lkIGZyZWVfcDJtX2hhcF9kYXRhKHN0cnVj dCBwMm1fZG9tYWluICpwMm0pOwogdm9pZCBwMm1faW5pdF9oYXBfZGF0YShzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtKTsKIAordm9pZCB2bXhfcGlfcGVyX2NwdV9pbml0KHVuc2lnbmVkIGludCBjcHUp OworCit2b2lkIHZteF9waV9ob29rc19hc3NpZ24oc3RydWN0IGRvbWFpbiAqZCk7Cit2b2lkIHZt eF9waV9ob29rc19kZWFzc2lnbihzdHJ1Y3QgZG9tYWluICpkKTsKKwogLyogRVBUIHZpb2xhdGlv biBxdWFsaWZpY2F0aW9ucyBkZWZpbml0aW9ucyAqLwogI2RlZmluZSBfRVBUX1JFQURfVklPTEFU SU9OICAgICAgICAgMAogI2RlZmluZSBFUFRfUkVBRF9WSU9MQVRJT04gICAgICAgICAgKDFVTDw8 X0VQVF9SRUFEX1ZJT0xBVElPTikKLS0gCjIuMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK