From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 01/92] kvm: introduce KVMI (VM introspection subsystem) Date: Fri, 9 Aug 2019 18:59:16 +0300 Message-ID: <20190809160047.8319-2-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , Mathieu Tarral , Stefan Hajnoczi , =?UTF-8?q?Mircea=20C=C3=AErjaliu?= , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKQmVzaWRlcyB0aGUg cG9pbnRlciB0byB0aGUgbmV3IHN0cnVjdHVyZSwgdGhlIHBhdGNoIGFkZHMgdG8gdGhlIGt2bQpz dHJ1Y3R1cmUgYSByZWZlcmVuY2UgY291bnRlciAodGhlIG5ldyBvYmplY3Qgd2lsbCBiZSB1c2Vk IGJ5IHRoZSB0aHJlYWQKcmVjZWl2aW5nIGludHJvc3BlY3Rpb24gY29tbWFuZHMvZXZlbnRzKSBh bmQgYSBjb21wbGV0aW9uIHZhcmlhYmxlCih0byBzaWduYWwgdGhhdCB0aGUgVk0gY2FuIGJlIGhv b2tlZCBieSB0aGUgaW50cm9zcGVjdGlvbiB0b29sKS4KClNpZ25lZC1vZmYtYnk6IE1paGFpIERv bsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBNaXJjZWEgQ8Ou cmphbGl1IDxtY2lyamFsaXVAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaXJjZWEg Q8OucmphbGl1IDxtY2lyamFsaXVAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBBZGFs YmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi92 aXJ0dWFsL2t2bS9rdm1pLnJzdCB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog YXJjaC94ODYva3ZtL0tjb25maWcgICAgICAgICAgICAgICB8ICA3ICsrKwogYXJjaC94ODYva3Zt L01ha2VmaWxlICAgICAgICAgICAgICB8ICAxICsKIGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaCAg ICAgICAgICAgfCAgNCArKwogaW5jbHVkZS9saW51eC9rdm1pLmggICAgICAgICAgICAgICB8IDIz ICsrKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAgICAgICAgICB8IDY4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKwogdmlydC9rdm0va3ZtX21haW4uYyAgICAgICAgICAgICAg ICB8IDEwICsrKy0KIHZpcnQva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAgICAgfCA2NCArKysr KysrKysrKysrKysrKysrKysrKysrCiB2aXJ0L2t2bS9rdm1pX2ludC5oICAgICAgICAgICAgICAg IHwgMTIgKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMjYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWku cnN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9rdm1pLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdmly dC9rdm0va3ZtaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdmlydC9rdm0va3ZtaV9pbnQuaAoKZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QgYi9Eb2N1bWVudGF0 aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZDU0Y2FmOGQ5NzRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92 aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAtMCwwICsxLDc1IEBACis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0tWTUkgLSBUaGUga2VybmVs IHZpcnR1YWwgbWFjaGluZSBpbnRyb3NwZWN0aW9uIHN1YnN5c3RlbQorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBLVk0gaW50 cm9zcGVjdGlvbiBzdWJzeXN0ZW0gcHJvdmlkZXMgYSBmYWNpbGl0eSBmb3IgYXBwbGljYXRpb25z IHJ1bm5pbmcKK29uIHRoZSBob3N0IG9yIGluIGEgc2VwYXJhdGUgVk0sIHRvIGNvbnRyb2wgdGhl IGV4ZWN1dGlvbiBvZiBvdGhlciBWTS1zCisocGF1c2UsIHJlc3VtZSwgc2h1dGRvd24pLCBxdWVy eSB0aGUgc3RhdGUgb2YgdGhlIHZDUFVzIChHUFJzLCBNU1JzIGV0Yy4pLAorYWx0ZXIgdGhlIHBh Z2UgYWNjZXNzIGJpdHMgaW4gdGhlIHNoYWRvdyBwYWdlIHRhYmxlcyAob25seSBmb3IgdGhlIGhh cmR3YXJlCitiYWNrZWQgb25lcywgZWcuIEludGVsJ3MgRVBUKSBhbmQgcmVjZWl2ZSBub3RpZmlj YXRpb25zIHdoZW4gZXZlbnRzIG9mCitpbnRlcmVzdCBoYXZlIHRha2VuIHBsYWNlIChzaGFkb3cg cGFnZSB0YWJsZSBsZXZlbCBmYXVsdHMsIGtleSBNU1Igd3JpdGVzLAoraHlwZXJjYWxscyBldGMu KS4gU29tZSBub3RpZmljYXRpb25zIGNhbiBiZSByZXNwb25kZWQgdG8gd2l0aCBhbiBhY3Rpb24K KyhsaWtlIHByZXZlbnRpbmcgYW4gTVNSIGZyb20gYmVpbmcgd3JpdHRlbiksIG90aGVycyBhcmUg bWVyZSBpbmZvcm1hdGl2ZQorKGxpa2UgYnJlYWtwb2ludCBldmVudHMgd2hpY2ggY2FuIGJlIHVz ZWQgZm9yIGV4ZWN1dGlvbiB0cmFjaW5nKS4KK1dpdGggZmV3IGV4Y2VwdGlvbnMsIGFsbCBldmVu dHMgYXJlIG9wdGlvbmFsLiBBbiBhcHBsaWNhdGlvbiB1c2luZyB0aGlzCitzdWJzeXN0ZW0gd2ls bCBleHBsaWNpdGx5IHJlZ2lzdGVyIGZvciB0aGVtLgorCitUaGUgdXNlIGNhc2UgdGhhdCBnYXZl IHdheSBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoaXMgc3Vic3lzdGVtIGlzIHRvIG1vbml0b3IKK3Ro ZSBndWVzdCBPUyBhbmQgYXMgc3VjaCB0aGUgQUJJL0FQSSBpcyBoaWdobHkgaW5mbHVlbmNlZCBi eSBob3cgdGhlIGd1ZXN0Citzb2Z0d2FyZSAoa2VybmVsLCBhcHBsaWNhdGlvbnMpIHNlZXMgdGhl IHdvcmxkLiBGb3IgZXhhbXBsZSwgc29tZSBldmVudHMKK3Byb3ZpZGUgaW5mb3JtYXRpb24gc3Bl Y2lmaWMgZm9yIHRoZSBob3N0IENQVSBhcmNoaXRlY3R1cmUKKyhlZy4gTVNSX0lBMzJfU1lTRU5U RVJfRUlQKSBtZXJlbHkgYmVjYXVzZSBpdHMgbGV2ZXJhZ2VkIGJ5IGd1ZXN0IHNvZnR3YXJlCit0 byBpbXBsZW1lbnQgYSBjcml0aWNhbCBmZWF0dXJlIChmYXN0IHN5c3RlbSBjYWxscykuCisKK0F0 IHRoZSBtb21lbnQsIHRoZSB0YXJnZXQgYXVkaWVuY2UgZm9yIEtWTUkgYXJlIHNlY3VyaXR5IHNv ZnR3YXJlIGF1dGhvcnMKK3RoYXQgd2lzaCB0byBwZXJmb3JtIGZvcmVuc2ljcyBvbiBuZXdseSBk aXNjb3ZlcmVkIHRocmVhdHMgKGV4cGxvaXRzKSBvcgordG8gaW1wbGVtZW50IGFub3RoZXIgbGF5 ZXIgb2Ygc2VjdXJpdHkgbGlrZSBwcmV2ZW50aW5nIGEgbGFyZ2Ugc2V0IG9mCitrZXJuZWwgcm9v dGtpdHMgc2ltcGx5IGJ5ICJsb2NraW5nIiB0aGUga2VybmVsIGltYWdlIGluIHRoZSBzaGFkb3cg cGFnZQordGFibGVzIChpZS4gZW5mb3JjZSAudGV4dCByLXgsIC5yb2RhdGEgcnctIGV0Yy4pLiBJ dCdzIHRoZSBsYXR0ZXIgY2FzZSB0aGF0CittYWRlIEtWTUkgYSBzZXBhcmF0ZSBzdWJzeXN0ZW0s IGV2ZW4gdGhvdWdoIG1hbnkgb2YgdGhlc2UgZmVhdHVyZXMgYXJlCithdmFpbGFibGUgaW4gdGhl IGRldmljZSBtYW5hZ2VyIChlZy4gUUVNVSkuIFRoZSBhYmlsaXR5IHRvIGJ1aWxkIGEgc2VjdXJp dHkKK2FwcGxpY2F0aW9uIHRoYXQgZG9lcyBub3QgaW50ZXJmZXJlIChpbiB0ZXJtcyBvZiBwZXJm b3JtYW5jZSkgd2l0aCB0aGUKK2d1ZXN0IHNvZnR3YXJlIGFza3MgZm9yIGEgc3BlY2lhbGl6ZWQg aW50ZXJmYWNlIHRoYXQgaXMgZGVzaWduZWQgZm9yIG1pbmltdW0KK292ZXJoZWFkLgorCitBUEkv QUJJCis9PT09PT09CisKK1RoaXMgY2hhcHRlciBkZXNjcmliZXMgdGhlIFZNSSBpbnRlcmZhY2Ug dXNlZCB0byBtb25pdG9yIGFuZCBjb250cm9sIGxvY2FsCitndWVzdHMgZnJvbSBhIHVzZXIgYXBw bGljYXRpb24uCisKK092ZXJ2aWV3CistLS0tLS0tLQorCitUaGUgaW50ZXJmYWNlIGlzIHNvY2tl dCBiYXNlZCwgb25lIGNvbm5lY3Rpb24gZm9yIGV2ZXJ5IFZNLiBPbmUgZW5kIGlzIGluIHRoZQor aG9zdCBrZXJuZWwgd2hpbGUgdGhlIG90aGVyIGlzIGhlbGQgYnkgdGhlIHVzZXIgYXBwbGljYXRp b24gKGludHJvc3BlY3Rpb24KK3Rvb2wpLgorCitUaGUgaW5pdGlhbCBjb25uZWN0aW9uIGlzIGVz dGFibGlzaGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gdGhlIGhvc3QKKyhlZy4gUUVN VSkgdGhhdCBjb25uZWN0cyB0byB0aGUgaW50cm9zcGVjdGlvbiB0b29sIGFuZCBhZnRlciBhIGhh bmRzaGFrZSB0aGUKK3NvY2tldCBpcyBwYXNzZWQgdG8gdGhlIGhvc3Qga2VybmVsIG1ha2luZyBh bGwgZnVydGhlciBjb21tdW5pY2F0aW9uIHRha2UKK3BsYWNlIGJldHdlZW4gaXQgYW5kIHRoZSBp bnRyb3NwZWN0aW9uIHRvb2wuIFRoZSBpbml0aWF0aW5nIHBhcnR5IChRRU1VKSBjYW4KK2Nsb3Nl IGl0cyBlbmQgc28gdGhhdCBhbnkgcG90ZW50aWFsIGV4cGxvaXRzIGNhbm5vdCB0YWtlIGEgaG9s ZCBvZiBpdC4KKworVGhlIHNvY2tldCBwcm90b2NvbCBhbGxvd3MgZm9yIGNvbW1hbmRzIGFuZCBl dmVudHMgdG8gYmUgbXVsdGlwbGV4ZWQgb3ZlcgordGhlIHNhbWUgY29ubmVjdGlvbi4gQXMgc3Vj aCwgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgdG8KK3JlY2VpdmUg YW4gZXZlbnQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdCBvZiBhIGNvbW1hbmQuIEFsc28s IGl0IGNhbgorc2VuZCBhIGNvbW1hbmQgd2hpbGUgdGhlIGhvc3Qga2VybmVsIGlzIHdhaXRpbmcg Zm9yIGEgcmVwbHkgdG8gYW4gZXZlbnQuCisKK1RoZSBrZXJuZWwgc2lkZSBvZiB0aGUgc29ja2V0 IGNvbW11bmljYXRpb24gaXMgYmxvY2tpbmcgYW5kIHdpbGwgd2FpdCBmb3IKK2FuIGFuc3dlciBm cm9tIGl0cyBwZWVyIGluZGVmaW5pdGVseSBvciB1bnRpbCB0aGUgZ3Vlc3QgaXMgcG93ZXJlZCBv ZmYKKyhraWxsZWQpLCByZXN0YXJ0ZWQgb3IgdGhlIHBlZXIgZ29lcyBhd2F5LCBhdCB3aGljaCBw b2ludCBpdCB3aWxsIHdha2UKK3VwIGFuZCBwcm9wZXJseSBjbGVhbnVwIGFzIGlmIHRoZSBpbnRy b3NwZWN0aW9uIHN1YnN5c3RlbSBoYXMgbmV2ZXIgYmVlbgordXNlZCBvbiB0aGF0IGd1ZXN0LiBP YnZpb3VzbHksIHdoZXRoZXIgdGhlIGd1ZXN0IGNhbiByZWFsbHkgY29udGludWUKK25vcm1hbCBl eGVjdXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgaGFzIG1h ZGUgYW55Cittb2RpZmljYXRpb25zIHRoYXQgcmVxdWlyZSBhbiBhY3RpdmUgS1ZNSSBjaGFubmVs LgorCitNZW1vcnkgYWNjZXNzIHNhZmV0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEtW TUkgQVBJIGdpdmVzIGFjY2VzcyB0byB0aGUgZW50aXJlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3Mg c3BhY2UgYnV0Citwcm92aWRlcyBubyBpbmZvcm1hdGlvbiBvbiB3aGljaCBwYXJ0cyBvZiBpdCBh cmUgc3lzdGVtIFJBTSBhbmQgd2hpY2ggYXJlCitkZXZpY2Utc3BlY2lmaWMgbWVtb3J5IChETUEs IGVtdWxhdGVkIE1NSU8sIHJlc2VydmVkIGJ5IGEgcGFzc3Rocm91Z2gKK2RldmljZSBldGMuKS4g SXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gZGV0ZXJtaW5lLCB1c2luZyB0aGUgZ3Vlc3Qgb3BlcmF0 aW5nCitzeXN0ZW0gZGF0YSBzdHJ1Y3R1cmVzLCB0aGUgYXJlYXMgdGhhdCBhcmUgc2FmZSB0byBh Y2Nlc3MgKGNvZGUsIHN0YWNrLCBoZWFwCitldGMuKS4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2 bS9LY29uZmlnIGIvYXJjaC94ODYva3ZtL0tjb25maWcKaW5kZXggNzJmYTk1NWY0YTE1Li5mNzBh NmExYjY4MTQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnCisrKyBiL2FyY2gveDg2 L2t2bS9LY29uZmlnCkBAIC05Niw2ICs5NiwxMyBAQCBjb25maWcgS1ZNX01NVV9BVURJVAogCSBU aGlzIG9wdGlvbiBhZGRzIGEgUi9XIGtWTSBtb2R1bGUgcGFyYW1ldGVyICdtbXVfYXVkaXQnLCB3 aGljaCBhbGxvd3MKIAkgYXVkaXRpbmcgb2YgS1ZNIE1NVSBldmVudHMgYXQgcnVudGltZS4KIAor Y29uZmlnIEtWTV9JTlRST1NQRUNUSU9OCisJYm9vbCAiVk0gSW50cm9zcGVjdGlvbiIKKwlkZXBl bmRzIG9uIEtWTSAmJiAoS1ZNX0lOVEVMIHx8IEtWTV9BTUQpCisJaGVscAorCSBUaGlzIG9wdGlv biBlbmFibGVzIGZ1bmN0aW9ucyB0byBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgVk0tcywgcXVl cnkKKwkgdGhlIHN0YXRlIG9mIHRoZSB2Q1BVLXMgKEdQUi1zLCBNU1ItcyBldGMuKS4KKwogIyBP SywgaXQncyBhIGxpdHRsZSBjb3VudGVyLWludHVpdGl2ZSB0byBkbyB0aGlzLCBidXQgaXQgcHV0 cyBpdCBuZWF0bHkgdW5kZXIKICMgdGhlIHZpcnR1YWxpemF0aW9uIG1lbnUuCiBzb3VyY2UgImRy aXZlcnMvdmhvc3QvS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9NYWtlZmlsZSBi L2FyY2gveDg2L2t2bS9NYWtlZmlsZQppbmRleCAzMWVjZjdhNzZkNWEuLjMxMjU5N2JkNDdjNyAx MDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL01ha2VmaWxlCisrKyBiL2FyY2gveDg2L2t2bS9NYWtl ZmlsZQpAQCAtNyw2ICs3LDcgQEAgS1ZNIDo9IC4uLy4uLy4uL3ZpcnQva3ZtCiBrdm0teQkJCSs9 ICQoS1ZNKS9rdm1fbWFpbi5vICQoS1ZNKS9jb2FsZXNjZWRfbW1pby5vIFwKIAkJCQkkKEtWTSkv ZXZlbnRmZC5vICQoS1ZNKS9pcnFjaGlwLm8gJChLVk0pL3ZmaW8ubwoga3ZtLSQoQ09ORklHX0tW TV9BU1lOQ19QRikJKz0gJChLVk0pL2FzeW5jX3BmLm8KK2t2bS0kKENPTkZJR19LVk1fSU5UUk9T UEVDVElPTikgKz0gJChLVk0pL2t2bWkubwogCiBrdm0teQkJCSs9IHg4Ni5vIG1tdS5vIGVtdWxh dGUubyBpODI1OS5vIGlycS5vIGxhcGljLm8gXAogCQkJICAgaTgyNTQubyBpb2FwaWMubyBpcnFf Y29tbS5vIGNwdWlkLm8gcG11Lm8gbXRyci5vIFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv a3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaAppbmRleCBjMzhjYzVlYjdlNzMu LjU4MmIwMTg3ZjVhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCisrKyBi L2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaApAQCAtNDU1LDYgKzQ1NSwxMCBAQCBzdHJ1Y3Qga3Zt IHsKIAlzdHJ1Y3Qgc3JjdV9zdHJ1Y3Qgc3JjdTsKIAlzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgaXJxX3Ny Y3U7CiAJcGlkX3QgdXNlcnNwYWNlX3BpZDsKKworCXN0cnVjdCBjb21wbGV0aW9uIGt2bWlfY29t cGxldGVkOworCXJlZmNvdW50X3Qga3ZtaV9yZWY7CisJdm9pZCAqa3ZtaTsKIH07CiAKICNkZWZp bmUga3ZtX2VycihmbXQsIC4uLikgXApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1pLmgg Yi9pbmNsdWRlL2xpbnV4L2t2bWkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmUzNmRlM2Y5ZjNkZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgva3Zt aS5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCisjaWZuZGVmIF9fS1ZNSV9IX18KKyNkZWZpbmUgX19LVk1JX0hfXworCisjZGVmaW5lIGt2 bWlfaXNfcHJlc2VudCgpIElTX0VOQUJMRUQoQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OKQorCisj aWZkZWYgQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OCisKK2ludCBrdm1pX2luaXQodm9pZCk7Cit2 b2lkIGt2bWlfdW5pbml0KHZvaWQpOwordm9pZCBrdm1pX2NyZWF0ZV92bShzdHJ1Y3Qga3ZtICpr dm0pOwordm9pZCBrdm1pX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKTsKKworI2Vsc2UKKwor c3RhdGljIGlubGluZSBpbnQga3ZtaV9pbml0KHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBp bmxpbmUgdm9pZCBrdm1pX3VuaW5pdCh2b2lkKSB7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBrdm1p X2NyZWF0ZV92bShzdHJ1Y3Qga3ZtICprdm0pIHsgfQorc3RhdGljIGlubGluZSB2b2lkIGt2bWlf ZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pIHsgfQorCisjZW5kaWYgLyogQ09ORklHX0tWTV9J TlRST1NQRUNUSU9OICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4 L2t2bWkuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5kYmY2M2FkMDg2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNs dWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisjaWZuZGVmIF9V QVBJX19MSU5VWF9LVk1JX0gKKyNkZWZpbmUgX1VBUElfX0xJTlVYX0tWTUlfSAorCisvKgorICog S1ZNSSBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucworICovCisKKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIEtWTUlfVkVSU0lP TiAweDAwMDAwMDAxCisKK2VudW0geworCUtWTUlfRVZFTlRfUkVQTFkgICAgICAgICAgID0gMCwK KwlLVk1JX0VWRU5UICAgICAgICAgICAgICAgICA9IDEsCisKKwlLVk1JX0ZJUlNUX0NPTU1BTkQg ICAgICAgICA9IDIsCisKKwlLVk1JX0dFVF9WRVJTSU9OICAgICAgICAgICA9IDIsCisJS1ZNSV9D SEVDS19DT01NQU5EICAgICAgICAgPSAzLAorCUtWTUlfQ0hFQ0tfRVZFTlQgICAgICAgICAgID0g NCwKKwlLVk1JX0dFVF9HVUVTVF9JTkZPICAgICAgICA9IDUsCisJS1ZNSV9HRVRfVkNQVV9JTkZP ICAgICAgICAgPSA2LAorCUtWTUlfUEFVU0VfVkNQVSAgICAgICAgICAgID0gNywKKwlLVk1JX0NP TlRST0xfVk1fRVZFTlRTICAgICA9IDgsCisJS1ZNSV9DT05UUk9MX0VWRU5UUyAgICAgICAgPSA5 LAorCUtWTUlfQ09OVFJPTF9DUiAgICAgICAgICAgID0gMTAsCisJS1ZNSV9DT05UUk9MX01TUiAg ICAgICAgICAgPSAxMSwKKwlLVk1JX0NPTlRST0xfVkUgICAgICAgICAgICA9IDEyLAorCUtWTUlf R0VUX1JFR0lTVEVSUyAgICAgICAgID0gMTMsCisJS1ZNSV9TRVRfUkVHSVNURVJTICAgICAgICAg PSAxNCwKKwlLVk1JX0dFVF9DUFVJRCAgICAgICAgICAgICA9IDE1LAorCUtWTUlfR0VUX1hTQVZF ICAgICAgICAgICAgID0gMTYsCisJS1ZNSV9SRUFEX1BIWVNJQ0FMICAgICAgICAgPSAxNywKKwlL Vk1JX1dSSVRFX1BIWVNJQ0FMICAgICAgICA9IDE4LAorCUtWTUlfSU5KRUNUX0VYQ0VQVElPTiAg ICAgID0gMTksCisJS1ZNSV9HRVRfUEFHRV9BQ0NFU1MgICAgICAgPSAyMCwKKwlLVk1JX1NFVF9Q QUdFX0FDQ0VTUyAgICAgICA9IDIxLAorCUtWTUlfR0VUX01BUF9UT0tFTiAgICAgICAgID0gMjIs CisJS1ZNSV9HRVRfTVRSUl9UWVBFICAgICAgICAgPSAyMywKKwlLVk1JX0NPTlRST0xfU1BQICAg ICAgICAgICA9IDI0LAorCUtWTUlfR0VUX1BBR0VfV1JJVEVfQklUTUFQID0gMjUsCisJS1ZNSV9T RVRfUEFHRV9XUklURV9CSVRNQVAgPSAyNiwKKwlLVk1JX0NPTlRST0xfQ01EX1JFU1BPTlNFICA9 IDI3LAorCisJS1ZNSV9ORVhUX0FWQUlMQUJMRV9DT01NQU5ELAorCit9OworCitlbnVtIHsKKwlL Vk1JX0VWRU5UX1VOSE9PSyAgICAgID0gMCwKKwlLVk1JX0VWRU5UX0NSCSAgICAgICA9IDEsCisJ S1ZNSV9FVkVOVF9NU1IJICAgICAgID0gMiwKKwlLVk1JX0VWRU5UX1hTRVRCViAgICAgID0gMywK KwlLVk1JX0VWRU5UX0JSRUFLUE9JTlQgID0gNCwKKwlLVk1JX0VWRU5UX0hZUEVSQ0FMTCAgID0g NSwKKwlLVk1JX0VWRU5UX1BGCSAgICAgICA9IDYsCisJS1ZNSV9FVkVOVF9UUkFQCSAgICAgICA9 IDcsCisJS1ZNSV9FVkVOVF9ERVNDUklQVE9SICA9IDgsCisJS1ZNSV9FVkVOVF9DUkVBVEVfVkNQ VSA9IDksCisJS1ZNSV9FVkVOVF9QQVVTRV9WQ1BVICA9IDEwLAorCUtWTUlfRVZFTlRfU0lOR0xF U1RFUCAgPSAxMSwKKworCUtWTUlfTlVNX0VWRU5UUworfTsKKworI2VuZGlmIC8qIF9VQVBJX19M SU5VWF9LVk1JX0ggKi8KZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2 bS9rdm1fbWFpbi5jCmluZGV4IDU4NTg0NTIwM2RiOC4uOTBlNDMyZDIyNWFiIDEwMDY0NAotLS0g YS92aXJ0L2t2bS9rdm1fbWFpbi5jCisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTUxLDYg KzUxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvc29ydC5o PgogI2luY2x1ZGUgPGxpbnV4L2JzZWFyY2guaD4KKyNpbmNsdWRlIDxsaW51eC9rdm1pLmg+CiAK ICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CkBAIC02ODAs NiArNjgxLDggQEAgc3RhdGljIHN0cnVjdCBrdm0gKmt2bV9jcmVhdGVfdm0odW5zaWduZWQgbG9u ZyB0eXBlKQogCWlmIChyKQogCQlnb3RvIG91dF9lcnI7CiAKKwlrdm1pX2NyZWF0ZV92bShrdm0p OworCiAJc3Bpbl9sb2NrKCZrdm1fbG9jayk7CiAJbGlzdF9hZGQoJmt2bS0+dm1fbGlzdCwgJnZt X2xpc3QpOwogCXNwaW5fdW5sb2NrKCZrdm1fbG9jayk7CkBAIC03MjUsNiArNzI4LDcgQEAgc3Rh dGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKQogCWludCBpOwogCXN0cnVj dCBtbV9zdHJ1Y3QgKm1tID0ga3ZtLT5tbTsKIAorCWt2bWlfZGVzdHJveV92bShrdm0pOwogCWt2 bV91ZXZlbnRfbm90aWZ5X2NoYW5nZShLVk1fRVZFTlRfREVTVFJPWV9WTSwga3ZtKTsKIAlrdm1f ZGVzdHJveV92bV9kZWJ1Z2ZzKGt2bSk7CiAJa3ZtX2FyY2hfc3luY19ldmVudHMoa3ZtKTsKQEAg LTE1NTYsNyArMTU2MCw3IEBAIHN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkgKiBXaG9ldmVyIGNhbGxlZCByZW1hcF9wZm5fcmFuZ2Ug aXMgYWxzbyBnb2luZyB0byBjYWxsIGUuZy4KIAkgKiB1bm1hcF9tYXBwaW5nX3JhbmdlIGJlZm9y ZSB0aGUgdW5kZXJseWluZyBwYWdlcyBhcmUgZnJlZWQsCiAJICogY2F1c2luZyBhIGNhbGwgdG8g b3VyIE1NVSBub3RpZmllci4KLQkgKi8gCisJICovCiAJa3ZtX2dldF9wZm4ocGZuKTsKIAogCSpw X3BmbiA9IHBmbjsKQEAgLTQyMDQsNiArNDIwOCw5IEBAIGludCBrdm1faW5pdCh2b2lkICpvcGFx dWUsIHVuc2lnbmVkIHZjcHVfc2l6ZSwgdW5zaWduZWQgdmNwdV9hbGlnbiwKIAlyID0ga3ZtX3Zm aW9fb3BzX2luaXQoKTsKIAlXQVJOX09OKHIpOwogCisJciA9IGt2bWlfaW5pdCgpOworCVdBUk5f T04ocik7CisKIAlyZXR1cm4gMDsKIAogb3V0X3VucmVnOgpAQCAtNDIyOSw2ICs0MjM2LDcgQEAg RVhQT1JUX1NZTUJPTF9HUEwoa3ZtX2luaXQpOwogCiB2b2lkIGt2bV9leGl0KHZvaWQpCiB7CisJ a3ZtaV91bmluaXQoKTsKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoa3ZtX2RlYnVnZnNfZGly KTsKIAltaXNjX2RlcmVnaXN0ZXIoJmt2bV9kZXYpOwogCWttZW1fY2FjaGVfZGVzdHJveShrdm1f dmNwdV9jYWNoZSk7CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pLmMgYi92aXJ0L2t2bS9rdm1p LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMDYzODc0M2JkMDMK LS0tIC9kZXYvbnVsbAorKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTAsMCArMSw2NCBAQAorLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBLVk0gaW50cm9zcGVjdGlv bgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEJpdGRlZmVuZGVyIFMuUi5MLgorICoK KyAqLworI2luY2x1ZGUgPHVhcGkvbGludXgva3ZtaS5oPgorI2luY2x1ZGUgImt2bWlfaW50Lmgi CisKK2ludCBrdm1pX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gMDsKK30KKwordm9pZCBrdm1pX3Vu aW5pdCh2b2lkKQoreworfQorCitzdHJ1Y3Qga3ZtaSAqIF9fbXVzdF9jaGVjayBrdm1pX2dldChz dHJ1Y3Qga3ZtICprdm0pCit7CisJaWYgKHJlZmNvdW50X2luY19ub3RfemVybygma3ZtLT5rdm1p X3JlZikpCisJCXJldHVybiBrdm0tPmt2bWk7CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IHZvaWQga3ZtaV9kZXN0cm95KHN0cnVjdCBrdm0gKmt2bSkKK3sKK30KKworc3RhdGljIHZvaWQg a3ZtaV9yZWxlYXNlKHN0cnVjdCBrdm0gKmt2bSkKK3sKKwlrdm1pX2Rlc3Ryb3koa3ZtKTsKKwor CWNvbXBsZXRlKCZrdm0tPmt2bWlfY29tcGxldGVkKTsKK30KKworLyogVGhpcyBmdW5jdGlvbiBt YXkgYmUgY2FsbGVkIGZyb20gYXRvbWljIGNvbnRleHQgYW5kIG11c3Qgbm90IHNsZWVwICovCit2 b2lkIGt2bWlfcHV0KHN0cnVjdCBrdm0gKmt2bSkKK3sKKwlpZiAocmVmY291bnRfZGVjX2FuZF90 ZXN0KCZrdm0tPmt2bWlfcmVmKSkKKwkJa3ZtaV9yZWxlYXNlKGt2bSk7Cit9CisKK3ZvaWQga3Zt aV9jcmVhdGVfdm0oc3RydWN0IGt2bSAqa3ZtKQoreworCWluaXRfY29tcGxldGlvbigma3ZtLT5r dm1pX2NvbXBsZXRlZCk7CisJY29tcGxldGUoJmt2bS0+a3ZtaV9jb21wbGV0ZWQpOworfQorCit2 b2lkIGt2bWlfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pCit7CisJc3RydWN0IGt2bWkgKmlr dm07CisKKwlpa3ZtID0ga3ZtaV9nZXQoa3ZtKTsKKwlpZiAoIWlrdm0pCisJCXJldHVybjsKKwor CWt2bWlfcHV0KGt2bSk7CisKKwkvKiB3YWl0IGZvciBpbnRyb3NwZWN0aW9uIHJlc291cmNlcyB0 byBiZSByZWxlYXNlZCAqLworCXdhaXRfZm9yX2NvbXBsZXRpb25fa2lsbGFibGUoJmt2bS0+a3Zt aV9jb21wbGV0ZWQpOworfQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9pbnQuaCBiL3ZpcnQv a3ZtL2t2bWlfaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h YzIzYWQ2ZmM0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi92aXJ0L2t2bS9rdm1pX2ludC5oCkBAIC0w LDAgKzEsMTIgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisjaWZu ZGVmIF9fS1ZNSV9JTlRfSF9fCisjZGVmaW5lIF9fS1ZNSV9JTlRfSF9fCisKKyNpbmNsdWRlIDxs aW51eC9rdm1faG9zdC5oPgorCisjZGVmaW5lIElLVk0oa3ZtKSAoKHN0cnVjdCBrdm1pICopKChr dm0pLT5rdm1pKSkKKworc3RydWN0IGt2bWkgeworfTsKKworI2VuZGlmCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcg bGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xp c3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==