From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2] x86/hvm: re-work viridian APIC assist code Date: Thu, 18 Jan 2018 10:10:59 -0500 Message-ID: <20180118151059.1336-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ecBqR-0003XM-7b for xen-devel@lists.xenproject.org; Thu, 18 Jan 2018 15:11:11 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org SXQgYXBwZWFycyB0aGVyZSBpcyBhIGNhc2Ugd2hlcmUgV2luZG93cyBlbmFibGVzIHRoZSBBUElD IGFzc2lzdAplbmxpZ2h0ZW5tZW50WzFdIGJ1dCBkb2VzIG5vdCB1c2UgaXQuIFRoaXMgc2NlbmFy aW8gaXMgcGVyZmVjdGx5IHZhbGlkCmFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgYnV0 IGNhdXNlcyB0aGUgc3RhdGUgbWFjaGluZSBpbiBYZW4gdG8KYmVjb21lIGNvbmZ1c2VkIGxlYWRp bmcgdG8gYSBkb21haW5fY3Jhc2goKSBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CgooWEVOKSBkNDog VklSSURJQU4gR1VFU1RfT1NfSUQ6IHZlbmRvcjogMSBvczogNCBtYWpvcjogNiBtaW5vcjogMSBz cDogMAogICAgICBidWlsZDogMWRiMAooWEVOKSBkNDogVklSSURJQU4gSFlQRVJDQUxMOiBlbmFi bGVkOiAxIHBmbjogM2ZmZmYKKFhFTikgZDR2MDogVklSSURJQU4gVlBfQVNTSVNUX1BBR0U6IGVu YWJsZWQ6IDEgcGZuOiAzZmZmZQooWEVOKSBkb21haW5fY3Jhc2ggY2FsbGVkIGZyb20gdmlyaWRp YW4uYzo0NTIKKFhFTikgRG9tYWluIDQgKHZjcHUjMCkgY3Jhc2hlZCBvbiBjcHUjMToKClRoZSBm b2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY2Fu IGhhcHBlbjoKCiAtIE9uIHJldHVybiB0byBndWVzdCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJxKCkg ZmluZHMgYSBiaXQgc2V0IGluIHRoZSBJUlIuCiAtIHZsYXBpY19hY2tfcGVuZGluZ19pcnEoKSBj YWxscyB2aXJpZGlhbl9zdGFydF9hcGljX2Fzc2lzdCgpIHdoaWNoIGxhdGNoZXMKICAgdGhlIHZl Y3Rvciwgc2V0cyB0aGUgYml0IGluIHRoZSBJU1IgYW5kIGNsZWFycyBpdCBmcm9tIHRoZSBJUlIu CiAtIFRoZSBndWVzdCB0aGVuIHByb2Nlc3NlcyB0aGUgaW50ZXJydXB0IGJ1dCBFT0lzIGl0IG5v cm1hbGx5LCB0aGVyZWZvcmUKICAgY2xlYXJpbmcgdGhlIGJpdCBpbiB0aGUgSVNSLgogLSBPbiBu ZXh0IHJldHVybiB0byBndWVzdCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJxKCkgY2FsbHMKICAgdmly aWRpYW5fY29tcGxldGVfYXBpY19hc3Npc3QoKSwgd2hpY2ggZGlzY292ZXJzIHRoZSBhc3Npc3Qg Yml0IHN0aWxsIHNldAogICBpbiB0aGUgc2hhcmVkIHBhZ2UgYW5kIHRoZXJlZm9yZSBsZWF2ZXMg dGhlIGxhdGNoZWQgdmVjdG9yIGluIHBsYWNlLCBidXQKICAgYWxzbyBmaW5kcyBhbm90aGVyIGJp dCBzZXQgaW4gdGhlIElSUi4KIC0gdmxhcGljX2Fja19wZW5kaW5nX2lycSgpIGlzIHRoZW4gY2Fs bGVkIGJ1dCwgYmVjYXVzZSB0aGUgSVNSIGlzIHdhcwogICBjbGVhcmVkIGJ5IHRoZSBFT0ksIGFu b3RoZXIgY2FsbCBpcyBtYWRlIHRvIHZpcmlkaWFuX3N0YXJ0X2FwaWNfYXNzaXN0KCkKICAgYW5k IHRoaXMgdGhlbiBjYWxscyBkb21haW5fY3Jhc2goKSBiZWNhdXNlIGl0IGZpbmRzIHRoZSBsYXRj aGVkIHZlY3RvcgogICBoYXMgbm90IGJlZW4gY2xlYXJlZC4KCkhhdmluZyByZS12aXNpdGVkIHRo ZSBjb2RlIEkgYWxzbyBjb25jbHVkZSB0aGF0IFhlbidzIGltcGxlbWVudGF0aW9uIG9mIHRoZQpl bmxpZ2h0ZW5tZW50IGlzIGN1cnJlbnRseSB3cm9uZyBhbmQgd2UgYXJlIG5vdCBwcm9wZXJseSBm b2xsb3dpbmcgdGhlCnNwZWNpZmljYXRpb24uCgpUaGUgc3BlY2lmaWNhdGlvbiBzYXlzOgoKIlRo ZSBoeXBlcnZpc29yIHNldHMgdGhlIOKAnE5vIEVPSSByZXF1aXJlZOKAnSBiaXQgd2hlbiBpdCBp bmplY3RzIGEgdmlydHVhbAogaW50ZXJydXB0IGlmIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh cmUgc2F0aXNmaWVkOgoKIC0gVGhlIHZpcnR1YWwgaW50ZXJydXB0IGlzIGVkZ2UtdHJpZ2dlcmVk LCBhbmQKIC0gVGhlcmUgYXJlIG5vIGxvd2VyIHByaW9yaXR5IGludGVycnVwdHMgcGVuZGluZy4K CiBJZiwgYXQgYSBsYXRlciB0aW1lLCBhIGxvd2VyIHByaW9yaXR5IGludGVycnVwdCBpcyByZXF1 ZXN0ZWQsIHRoZQogaHlwZXJ2aXNvciBjbGVhcnMgdGhlIOKAnE5vIEVPSSByZXF1aXJlZOKAnSBz dWNoIHRoYXQgYSBzdWJzZXF1ZW50IEVPSSBjYXVzZXMKIGFuIGludGVyY2VwdC4KIEluIGNhc2Ug b2YgbmVzdGVkIGludGVycnVwdHMsIHRoZSBFT0kgaW50ZXJjZXB0IGlzIGF2b2lkZWQgb25seSBm b3IgdGhlCiBoaWdoZXN0IHByaW9yaXR5IGludGVycnVwdC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2lu Y2Ugbm8gY291bnQgaXMgbWFpbnRhaW5lZAogZm9yIHRoZSBudW1iZXIgb2YgRU9JcyBwZXJmb3Jt ZWQgYnkgdGhlIE9TLiBUaGVyZWZvcmUgb25seSB0aGUgZmlyc3QgRU9JCiBjYW4gYmUgYXZvaWRl ZCBhbmQgc2luY2UgdGhlIGZpcnN0IEVPSSBjbGVhcnMgdGhlIOKAnE5vIEVPSSBSZXF1aXJlZOKA nSBiaXQsCiB0aGUgbmV4dCBFT0kgZ2VuZXJhdGVzIGFuIGludGVyY2VwdC4iCgpUaHVzIGl0IGlz IHF1aXRlIGxlZ2l0aW1hdGUgdG8gc2V0IHRoZSAiTm8gRU9JIHJlcXVpcmVkIiBiaXQgYW5kIHRo ZW4Kc3Vic2VxdWVudGx5IHRha2UgYSBoaWdoZXIgcHJpb3JpdHkgaW50ZXJydXB0IHdpdGhvdXQg Y2xlYXJpbmcgdGhlIGJpdC4KVGh1cyB0aGUgYXZvaWRlZCBFT0kgd2lsbCB0aGVuIHJlbGF0ZSB0 byB0aGF0IHN1YnNlcXVlbnQgaW50ZXJydXB0IHJhdGhlcgp0aGFuIHRoZSBoaWdoZXN0IHByaW9y aXR5IGludGVycnVwdCB3aGVuIHRoZSBiaXQgd2FzIHNldC4gSGVuY2UgbGF0Y2hpbmcKdGhlIHZl Y3RvciB3aGVuIHNldHRpbmcgdGhlIGJpdCBpcyBub3QgZW50aXJlbHkgdXNlZnVsIGFuZCBzb21l d2hhdAptaXNsZWFkaW5nLgoKVGhpcyBwYXRjaCByZS13b3JrcyB0aGUgQVBJQyBhc3Npc3QgY29k ZSB0byBzaW1wbHkgdHJhY2sgd2hlbiB0aGUgIk5vIEVPSQpyZXF1aXJlZCIgYml0IGlzIHNldCBh bmQgdGVzdCBpZiBpdCBoYXMgYmVlbiBjbGVhcmVkIGJ5IHRoZSBndWVzdCAoaS5lLgonY29tcGxl dGluZycgdGhlIEFQSUMgYXNzaXN0KSwgdGh1cyBpbmRpY2F0aW5nIGEgJ21pc3NlZCBFT0knLiBN aXNzZWQgRU9JcwpuZWVkIHRvIGJlIGRlYWx0IHdpdGggaW4gdHdvIHBsYWNlczoKCiAtIEluIHZs YXBpY19oYXNfcGVuZGluZ19pcnEoKSwgdG8gYXZvaWQgY29tcGFyaW5nIHRoZSBJUlIgYWdhaW5z dCBhIHN0YWxlCiAgIElTUiwgYW5kCiAtIEluIHZsYXBpY19FT0lfc2V0KCkgYmVjYXVzZSBhIG1p c3NlZCBFT0kgZm9yIGEgaGlnaGVyIHByaW9yaXR5IHZlY3RvcgogICBzaG91bGQgYmUgZGVhbHQg d2l0aCBiZWZvcmUgdGhlIGFjdHVhbCBFT0kgZm9yIHRoZSBsb3dlciBwcmlvcml0eQogICB2ZWN0 b3IuCgpGdXJ0aGVybW9yZSwgYmVjYXVzZSB0aGUgZ3Vlc3QgaXMgYXQgbGliZXJ0eSB0byBpZ25v cmUgdGhlICJObyBFT0kgcmVxdWlyZWQiCmJpdCAod2hpY2ggbGVhZCB0aGUgY3Jhc2ggZGV0YWls ZWQgYWJvdmUpIHZsYXBpY19FT0lfc2V0KCkgbXVzdCBhbHNvIG1ha2UKc3VyZSB0aGUgYml0IGlz IGNsZWFyZWQgdG8gYXZvaWQgY29uZnVzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lLgoKTGFzdGx5IHRo ZSBwcmV2aW91cyBjb2RlIGRpZCBub3QgcHJvcGVybHkgZW11bGF0ZSBhbiBFT0kgaWYgYSBtaXNz ZWQgRU9JCndhcyBkaXNjb3ZlcmVkIGluIHZsYXBpY19oYXNfcGVuZGluZ19pcnEoKTsgaXQgbWVy ZWx5IGNsZWFyZWQgdGhlIGJpdCBpbgp0aGUgSVNSLiBUaGUgbmV3IGNvZGUgaW5zdGVhZCBjYWxs cyB2bGFwaWNfRU9JX3NldCgpLgoKWzFdIFNlZSBzZWN0aW9uIDEwLjMuNSBvZiBNaWNyb3NvZnQn cyAiSHlwZXJ2aXNvciBUb3AgTGV2ZWwgRnVuY3Rpb25hbAogICAgU3BlY2lmaWNhdGlvbiB2NS4w YiIuCgpOT1RFOiBUaGUgY2hhbmdlcyB0byB0aGUgc2F2ZS9yZXN0b3JlIGNvZGUgYXJlIHNhZmUg YmVjYXVzZSB0aGUgbGF5b3V0CiAgICAgIG9mIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250 ZXh0IGlzIHVuY2hhbmdlZCBhbmQgdGhlIG5ldwogICAgICBpbnRlcnByZXRhdGlvbiBvZiB0aGUg KHByZXZpb3VzbHkgc28gbmFtZWQpIHZwX2Fzc2lzdF92ZWN0b3IgZmllbGQKICAgICAgYXMgdGhl IGJvb2xlYW4gcGVuZGluZyBmbGFnIG1haW50YWlucyB0aGUgY29ycmVjdCBzZW1hbnRpY3MuCgpT aWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0K Q2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2MjoKIC0gRXh0ZW5kIHBhdGNoIHRvIGNvbXBsZXRl bHkgcmUtd29yayBBUElDIGFzc2lzdCBjb2RlCi0tLQogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlh bi5jICAgICAgICAgICAgfCAzNiArKysrKysrKy0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3Zs YXBpYy5jICAgICAgICAgICAgICB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmggICAgIHwgIDggKystLQogeGVu L2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggfCAgMiArLQogNCBmaWxlcyBjaGFu Z2VkLCA3NiBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKaW5k ZXggZjBmYTU5ZDdkNS4uY2M0MGFmMWZiNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYwpAQCAtNDMzLDQ2ICs0 MzMsNDQgQEAgc3RhdGljIHZvaWQgdGVhcmRvd25fdnBfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQog ICAgIHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOwogfQogCi12b2lkIHZpcmlkaWFuX3N0YXJ0X2Fw aWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2LCBpbnQgdmVjdG9yKQordm9pZCB2aXJpZGlhbl9zZXRf YXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgdWludDMyX3QgKnZhID0gdi0+YXJj aC5odm1fdmNwdS52aXJpZGlhbi52cF9hc3Npc3QudmE7CiAKICAgICBpZiAoICF2YSApCiAgICAg ICAgIHJldHVybjsKIAotICAgIGlmICggdmVjdG9yIDwgMHgxMCApCi0gICAgICAgIHJldHVybjsK LQogICAgIC8qCiAgICAgICogSWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBhc3Npc3QgcGVuZGluZyB0 aGVuIHNvbWV0aGluZyBoYXMgZ29uZQogICAgICAqIHdyb25nIGFuZCB0aGUgVk0gd2lsbCBtb3N0 IGxpa2VseSBoYW5nIHNvIGZvcmNlIGEgY3Jhc2ggbm93CiAgICAgICogdG8gbWFrZSB0aGUgcHJv YmxlbSBjbGVhci4KICAgICAgKi8KLSAgICBpZiAoIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4u dnBfYXNzaXN0LnZlY3RvciApCisgICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZw X2Fzc2lzdC5wZW5kaW5nICkKICAgICAgICAgZG9tYWluX2NyYXNoKHYtPmRvbWFpbik7CiAKLSAg ICB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC52ZWN0b3IgPSB2ZWN0b3I7Cisg ICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZyA9IHRydWU7CiAg ICAgKnZhIHw9IDF1OwogfQogCi1pbnQgdmlyaWRpYW5fY29tcGxldGVfYXBpY19hc3Npc3Qoc3Ry dWN0IHZjcHUgKnYpCitib29sIHZpcmlkaWFuX2FwaWNfYXNzaXN0X2NvbXBsZXRlZChzdHJ1Y3Qg dmNwdSAqdikKIHsKICAgICB1aW50MzJfdCAqdmEgPSB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFu LnZwX2Fzc2lzdC52YTsKLSAgICBpbnQgdmVjdG9yOwogCiAgICAgaWYgKCAhdmEgKQotICAgICAg ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCAqdmEgJiAxdSAp Ci0gICAgICAgIHJldHVybiAwOyAvKiBJbnRlcnJ1cHQgbm90IHlldCBwcm9jZXNzZWQgYnkgdGhl IGd1ZXN0LiAqLwotCi0gICAgdmVjdG9yID0gdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi52cF9h c3Npc3QudmVjdG9yOwotICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0LnZl Y3RvciA9IDA7CisgICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC5w ZW5kaW5nICYmCisgICAgICAgICAhKCp2YSAmIDF1KSApCisgICAgeworICAgICAgICAvKiBBbiBF T0kgaGFzIGJlZW4gYXZvaWRlZCAqLworICAgICAgICB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFu LnZwX2Fzc2lzdC5wZW5kaW5nID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K IAotICAgIHJldHVybiB2ZWN0b3I7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHZpcmlk aWFuX2Fib3J0X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQordm9pZCB2aXJpZGlhbl9jbGVh cl9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICB1aW50MzJfdCAqdmEgPSB2LT5h cmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKIApAQCAtNDgwLDcgKzQ3OCw3IEBA IHZvaWQgdmlyaWRpYW5fYWJvcnRfYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCiAgICAgICAg IHJldHVybjsKIAogICAgICp2YSAmPSB+MXU7Ci0gICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlh bi52cF9hc3Npc3QudmVjdG9yID0gMDsKKyAgICB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZw X2Fzc2lzdC5wZW5kaW5nID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWZlcmVu Y2VfdHNjKHN0cnVjdCBkb21haW4gKmQsIGJvb2xfdCBpbml0aWFsaXplKQpAQCAtMTA0MCw3ICsx MDM4LDcgQEAgc3RhdGljIGludCB2aXJpZGlhbl9zYXZlX3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWlu ICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICBmb3JfZWFjaF92Y3B1KCBkLCB2ICkg ewogICAgICAgICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0ID0gewogICAg ICAgICAgICAgLnZwX2Fzc2lzdF9tc3IgPSB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fz c2lzdC5tc3IucmF3LAotICAgICAgICAgICAgLnZwX2Fzc2lzdF92ZWN0b3IgPSB2LT5hcmNoLmh2 bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC52ZWN0b3IsCisgICAgICAgICAgICAudnBfYXNzaXN0 X3BlbmRpbmcgPSB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC5wZW5kaW5nLAog ICAgICAgICB9OwogCiAgICAgICAgIGlmICggaHZtX3NhdmVfZW50cnkoVklSSURJQU5fVkNQVSwg di0+dmNwdV9pZCwgaCwgJmN0eHQpICE9IDAgKQpAQCAtMTA3NSw3ICsxMDczLDcgQEAgc3RhdGlj IGludCB2aXJpZGlhbl9sb2FkX3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWlu X2NvbnRleHRfdCAqaCkKICAgICAgICAgICF2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fz c2lzdC52YSApCiAgICAgICAgIGluaXRpYWxpemVfdnBfYXNzaXN0KHYpOwogCi0gICAgdi0+YXJj aC5odm1fdmNwdS52aXJpZGlhbi52cF9hc3Npc3QudmVjdG9yID0gY3R4dC52cF9hc3Npc3RfdmVj dG9yOworICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgPSAh IWN0eHQudnBfYXNzaXN0X3BlbmRpbmc7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jCmlu ZGV4IDUwZjUzYmRhZWYuLmE2YWNlNGZiMjEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v dmxhcGljLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYwpAQCAtNDE2LDE4ICs0MTYs NDUgQEAgc3RydWN0IHZsYXBpYyAqdmxhcGljX2xvd2VzdF9wcmlvKAogCiB2b2lkIHZsYXBpY19F T0lfc2V0KHN0cnVjdCB2bGFwaWMgKnZsYXBpYykKIHsKLSAgICBpbnQgdmVjdG9yID0gdmxhcGlj X2ZpbmRfaGlnaGVzdF9pc3IodmxhcGljKTsKKyAgICBzdHJ1Y3QgdmNwdSAqdiA9IHZsYXBpY192 Y3B1KHZsYXBpYyk7CisgICAgLyoKKyAgICAgKiBJZiBBUElDIGFzc2lzdCB3YXMgc2V0IHRoZW4g YW4gRU9JIG1heSBoYXZlIGJlZW4gYXZvaWRlZCBhbmQKKyAgICAgKiBoZW5jZSB0aGlzIEVPSSBh Y3R1YWxseSByZWxhdGVzIHRvIGEgbG93ZXIgcHJpb3JpdHkgdmVjdG9yLgorICAgICAqIFRodXMg aXQgaXMgbmVjZXNzYXJ5IHRvIGZpcnN0IGVtdWxhdGUgdGhlIEVPSSBmb3IgdGhlIGhpZ2hlcgor ICAgICAqIHByaW9yaXR5IHZlY3RvciBhbmQgdGhlbiByZWN1cnNlIHRvIGhhbmRsZSB0aGUgbG93 ZXIgcHJpb3JpdHkKKyAgICAgKiB2ZWN0b3IuCisgICAgICovCisgICAgYm9vbCBtaXNzZWRfZW9p ID0gdmlyaWRpYW5fYXBpY19hc3Npc3RfY29tcGxldGVkKHYpOworICAgIGludCB2ZWN0b3I7CisK KyBhZ2FpbjoKKyAgICB2ZWN0b3IgPSB2bGFwaWNfZmluZF9oaWdoZXN0X2lzcih2bGFwaWMpOwog CiAgICAgLyogU29tZSBFT0kgd3JpdGVzIG1heSBub3QgaGF2ZSBhIG1hdGNoaW5nIHRvIGFuIGlu LXNlcnZpY2UgaW50ZXJydXB0LiAqLwogICAgIGlmICggdmVjdG9yID09IC0xICkKICAgICAgICAg cmV0dXJuOwogCisgICAgLyoKKyAgICAgKiBJZiBBUElDIGFzc2lzdCB3YXMgc2V0IGJ1dCB0aGUg Z3Vlc3QgY2hvc2UgdG8gRU9JIGFueXdheSB0aGVuCisgICAgICogd2UgbmVlZCB0byBjbGVhbiB1 cCBzdGF0ZS4KKyAgICAgKiBOT1RFOiBJdCBpcyBoYXJtbGVzcyB0byBjYWxsIHZpcmlkaWFuX2Ns ZWFyX2FwaWNfYXNzaXN0KCkgb24gYQorICAgICAqICAgICAgIHJlY3Vyc2lvbiwgZXZlbiB0aG91 Z2ggaXQgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICAgKi8KKyAgICBpZiAoICFtaXNzZWRfZW9pICkK KyAgICAgICAgdmlyaWRpYW5fY2xlYXJfYXBpY19hc3Npc3Qodik7CisKICAgICB2bGFwaWNfY2xl YXJfdmVjdG9yKHZlY3RvciwgJnZsYXBpYy0+cmVncy0+ZGF0YVtBUElDX0lTUl0pOwogCiAgICAg aWYgKCBodm1fZnVuY3MuaGFuZGxlX2VvaSApCiAgICAgICAgIGh2bV9mdW5jcy5oYW5kbGVfZW9p KHZlY3Rvcik7CiAKICAgICB2bGFwaWNfaGFuZGxlX0VPSSh2bGFwaWMsIHZlY3Rvcik7CisKKyAg ICBpZiAoIG1pc3NlZF9lb2kgKQorICAgIHsKKyAgICAgICAgbWlzc2VkX2VvaSA9IGZhbHNlOwor ICAgICAgICBnb3RvIGFnYWluOworICAgIH0KIH0KIAogdm9pZCB2bGFwaWNfaGFuZGxlX0VPSShz dHJ1Y3QgdmxhcGljICp2bGFwaWMsIHU4IHZlY3RvcikKQEAgLTEyMzksNyArMTI2Niw3IEBAIGlu dCB2bGFwaWNfdmlydHVhbF9pbnRyX2RlbGl2ZXJ5X2VuYWJsZWQodm9pZCkKIGludCB2bGFwaWNf aGFzX3BlbmRpbmdfaXJxKHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCB2bGFwaWMgKnZs YXBpYyA9IHZjcHVfdmxhcGljKHYpOwotICAgIGludCBpcnIsIHZlY3RvciwgaXNyOworICAgIGlu dCBpcnIsIGlzcjsKIAogICAgIGlmICggIXZsYXBpY19lbmFibGVkKHZsYXBpYykgKQogICAgICAg ICByZXR1cm4gLTE7CkBAIC0xMjUyLDI3ICsxMjc5LDMyIEBAIGludCB2bGFwaWNfaGFzX3BlbmRp bmdfaXJxKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICAgIW5lc3RlZGh2bV92Y3B1X2luX2d1ZXN0 bW9kZSh2KSApCiAgICAgICAgIHJldHVybiBpcnI7CiAKKyAgICBpc3IgPSB2bGFwaWNfZmluZF9o aWdoZXN0X2lzcih2bGFwaWMpOworCiAgICAgLyoKLSAgICAgKiBJZiBBUElDIGFzc2lzdCB3YXMg dXNlZCB0aGVuIHRoZXJlIG1heSBoYXZlIGJlZW4gbm8gRU9JIHNvCi0gICAgICogd2UgbmVlZCB0 byBjbGVhciB0aGUgcmVxdWlzaXRlIGJpdCBmcm9tIHRoZSBJU1IgaGVyZSwgYmVmb3JlCi0gICAg ICogY29tcGFyaW5nIHdpdGggdGhlIElSUi4KKyAgICAgKiBJZiBBUElDIGFzc2lzdCB3YXMgc2V0 IHRoZW4gYW4gRU9JIG1heSBoYXZlIGJlZW4gYXZvaWRlZC4KKyAgICAgKiBJZiBzbywgd2UgbmVl ZCB0byBlbXVsYXRlIHRoZSBFT0kgaGVyZSBiZWZvcmUgY29tcGFyaW5nIElTUgorICAgICAqIHdp dGggSVJSLgogICAgICAqLwotICAgIHZlY3RvciA9IHZpcmlkaWFuX2NvbXBsZXRlX2FwaWNfYXNz aXN0KHYpOwotICAgIGlmICggdmVjdG9yICkKLSAgICAgICAgdmxhcGljX2NsZWFyX3ZlY3Rvcih2 ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JU1JdKTsKLQotICAgIGlzciA9IHZsYXBp Y19maW5kX2hpZ2hlc3RfaXNyKHZsYXBpYyk7Ci0gICAgaWYgKCBpc3IgPT0gLTEgKQotICAgICAg ICByZXR1cm4gaXJyOworICAgIGlmICggdmlyaWRpYW5fYXBpY19hc3Npc3RfY29tcGxldGVkKHYp ICkKKyAgICB7CisgICAgICAgIHZsYXBpY19FT0lfc2V0KHZsYXBpYyk7CisgICAgICAgIGlzciA9 IHZsYXBpY19maW5kX2hpZ2hlc3RfaXNyKHZsYXBpYyk7CisgICAgfQogCiAgICAgLyoKLSAgICAg KiBBIHZlY3RvciBpcyBwZW5kaW5nIGluIHRoZSBJU1Igc28sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhl ciB0aGUgbmV3Ci0gICAgICogdmVjdG9yIGluIHRoZSBJUlIgaXMgbG93ZXIgb3IgaGlnaGVyIGlu IHByaW9yaXR5LCBhbnkgcGVuZGluZwotICAgICAqIEFQSUMgYXNzaXN0IG11c3QgYmUgYWJvcnRl ZCB0byBlbnN1cmUgYW4gRU9JLgorICAgICAqIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBp ZiBBUElDIGFzc2lzdCBpcyBzZXQgYW5kIGEKKyAgICAgKiBzdWJzZXF1ZW50IGludGVycnVwdCBv ZiBsb3dlciBwcmlvcml0eSBvY2N1cnMgdGhlbiBBUElDIGFzc2lzdAorICAgICAqIG5lZWRzIHRv IGJlIGNsZWFyZWQuCiAgICAgICovCi0gICAgdmlyaWRpYW5fYWJvcnRfYXBpY19hc3Npc3Qodik7 CisgICAgaWYgKCBpc3IgPj0gMCAmJgorICAgICAgICAgKGlyciAmIDB4ZjApIDw9IChpc3IgJiAw eGYwKSApCisgICAgeworICAgICAgICB2aXJpZGlhbl9jbGVhcl9hcGljX2Fzc2lzdCh2KTsKKyAg ICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIHJldHVybiAoKGlzciAmIDB4ZjApIDwgKGly ciAmIDB4ZjApKSA/IGlyciA6IC0xOworICAgIHJldHVybiBpcnI7CiB9CiAKIGludCB2bGFwaWNf YWNrX3BlbmRpbmdfaXJxKHN0cnVjdCB2Y3B1ICp2LCBpbnQgdmVjdG9yLCBib29sX3QgZm9yY2Vf YWNrKQpAQCAtMTI5MCwxMyArMTMyMiwxNCBAQCBpbnQgdmxhcGljX2Fja19wZW5kaW5nX2lycShz dHJ1Y3QgdmNwdSAqdiwgaW50IHZlY3RvciwgYm9vbF90IGZvcmNlX2FjaykKICAgICAgICAgZ290 byBkb25lOwogCiAgICAgaXNyID0gdmxhcGljX2ZpbmRfaGlnaGVzdF9pc3IodmxhcGljKTsKLSAg ICBpZiAoIGlzciA9PSAtMSApCisgICAgaWYgKCBpc3IgPT0gLTEgJiYgdmVjdG9yID4gMHgxMCAp CiAgICAgewogICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIHZlY3RvciBpcyBlZGdlIHRyaWdn ZXJlZCBhbmQgbm8gb3RoZXIgdmVjdG9ycyBhcmUgcGVuZGluZwotICAgICAgICAgKiBpbiB0aGUg SVNSIHNvIHdlIGNhbiB1c2UgQVBJQyBhc3Npc3QgdG8gYXZvaWQgZXhpdGluZyBmb3IgRU9JLgor ICAgICAgICAgKiBUaGlzIHZlY3RvciBpcyBlZGdlIHRyaWdnZXJlZCwgbm90IGluIHRoZSBsZWdh Y3kgcmFuZ2UsIGFuZCBubworICAgICAgICAgKiBsb3dlciBwcmlvcml0eSB2ZWN0b3JzIGFyZSBw ZW5kaW5nIGluIHRoZSBJU1IuIFRodXMgd2UgY2FuIHNldAorICAgICAgICAgKiBBUElDIGFzc2lz dCB0byBhdm9pZCBleGl0aW5nIGZvciBFT0kuCiAgICAgICAgICAqLwotICAgICAgICB2aXJpZGlh bl9zdGFydF9hcGljX2Fzc2lzdCh2LCB2ZWN0b3IpOworICAgICAgICB2aXJpZGlhbl9zZXRfYXBp Y19hc3Npc3Qodik7CiAgICAgfQogCiAgZG9uZToKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3ZpcmlkaWFuLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5o CmluZGV4IDMwMjU5ZTkxYjAuLjdlM2EwOGM3M2QgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3ZpcmlkaWFuLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRp YW4uaApAQCAtMjQsNyArMjQsNyBAQCBzdHJ1Y3QgdmlyaWRpYW5fdmNwdQogICAgIHN0cnVjdCB7 CiAgICAgICAgIHVuaW9uIHZpcmlkaWFuX3ZwX2Fzc2lzdCBtc3I7CiAgICAgICAgIHZvaWQgKnZh OwotICAgICAgICBpbnQgdmVjdG9yOworICAgICAgICBib29sIHBlbmRpbmc7CiAgICAgfSB2cF9h c3Npc3Q7CiAgICAgdWludDY0X3QgY3Jhc2hfcGFyYW1bNV07CiB9OwpAQCAtMTIwLDkgKzEyMCw5 IEBAIHZvaWQgdmlyaWRpYW5fdGltZV9yZWZfY291bnRfdGhhdyhzdHJ1Y3QgZG9tYWluICpkKTsK IHZvaWQgdmlyaWRpYW5fdmNwdV9kZWluaXQoc3RydWN0IHZjcHUgKnYpOwogdm9pZCB2aXJpZGlh bl9kb21haW5fZGVpbml0KHN0cnVjdCBkb21haW4gKmQpOwogCi12b2lkIHZpcmlkaWFuX3N0YXJ0 X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2LCBpbnQgdmVjdG9yKTsKLWludCB2aXJpZGlhbl9j b21wbGV0ZV9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdik7Ci12b2lkIHZpcmlkaWFuX2Fib3J0 X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KTsKK3ZvaWQgdmlyaWRpYW5fc2V0X2FwaWNfYXNz aXN0KHN0cnVjdCB2Y3B1ICp2KTsKK2Jvb2wgdmlyaWRpYW5fYXBpY19hc3Npc3RfY29tcGxldGVk KHN0cnVjdCB2Y3B1ICp2KTsKK3ZvaWQgdmlyaWRpYW5fY2xlYXJfYXBpY19hc3Npc3Qoc3RydWN0 IHZjcHUgKnYpOwogCiAjZW5kaWYgLyogX19BU01fWDg2X0hWTV9WSVJJRElBTl9IX18gKi8KIApk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggYi94ZW4v aW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaAppbmRleCBmZDdiZjNmYjM4Li40Njkx ZDRkNGFhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUu aAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaApAQCAtNjAwLDcg KzYwMCw3IEBAIERFQ0xBUkVfSFZNX1NBVkVfVFlQRShWSVJJRElBTl9ET01BSU4sIDE1LCBzdHJ1 Y3QgaHZtX3ZpcmlkaWFuX2RvbWFpbl9jb250ZXh0KTsKIAogc3RydWN0IGh2bV92aXJpZGlhbl92 Y3B1X2NvbnRleHQgewogICAgIHVpbnQ2NF90IHZwX2Fzc2lzdF9tc3I7Ci0gICAgdWludDhfdCAg dnBfYXNzaXN0X3ZlY3RvcjsKKyAgICB1aW50OF90ICB2cF9hc3Npc3RfcGVuZGluZzsKICAgICB1 aW50OF90ICBfcGFkWzddOwogfTsKIAotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==