From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH 16/25] argo: implement the notify op Date: Fri, 30 Nov 2018 17:32:55 -0800 Message-ID: <1543627984-21394-17-git-send-email-christopher.w.clark@gmail.com> References: <1543627984-21394-1-git-send-email-christopher.w.clark@gmail.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.89) (envelope-from ) id 1gSuAT-0006z2-91 for xen-devel@lists.xenproject.org; Sat, 01 Dec 2018 01:34:01 +0000 Received: by mail-io1-xd42.google.com with SMTP id f14so595981iol.4 for ; Fri, 30 Nov 2018 17:34:00 -0800 (PST) In-Reply-To: <1543627984-21394-1-git-send-email-christopher.w.clark@gmail.com> 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: Stefano Stabellini , Wei Liu , James McKenzie , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , Eric Chanudet List-Id: xen-devel@lists.xenproject.org UXVlcmllcyBmb3IgZGF0YSBhYm91dCBzcGFjZSBhdmFpbGFiaWxpdHkgaW4gcmVnaXN0ZXJlZCBy aW5ncyBhbmQKY2F1c2VzIG5vdGlmaWNhdGlvbiB0byBiZSBzZW50IHdoZW4gc3BhY2UgaGFzIGJl Y29tZSBhdmFpbGFibGUuCgpUaGUgaHlwZXJjYWxsIG9wIHBvcHVsYXRlcyBhIHN1cHBsaWVkIGRh dGEgc3RydWN0dXJlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQKcmluZyBzdGF0ZSwgYW5kIGlmIGlu c3VmZmljZW50IHNwYWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgaW4gYSBnaXZlbiByaW5nLAp0 aGUgaHlwZXJ2aXNvciB3aWxsIHJlY29yZCB0aGUgZG9tYWluJ3MgZXhwcmVzc2VkIGludGVyZXN0 IGFuZCBub3RpZnkgaXQKd2hlbiBpdCBvYnNlcnZlcyB0aGF0IHNwYWNlIGhhcyBiZWNvbWUgYXZh aWxhYmxlLgoKQ2hlY2tzIGZvciBmcmVlIHNwYWNlIG9jY3VyIHdoZW4gdGhpcyBub3RpZnkgb3Ag aXMgaW52b2tlZCwgc28gaXQgbWF5IGJlCmludGVudGlvbmFsbHkgaW52b2tlZCB3aXRoIG5vIGRh dGEgc3RydWN0dXJlIHRvIHBvcHVsYXRlIChpZS4gTlVMTCBhcmd1bWVudCksCnRvIHRyaWdnZXIg c3VjaCBhIGNoZWNrIGFuZCBjb25zZXF1ZW50IG5vdGlmaWNhdGlvbnMuCgpTaWduZWQtb2ZmLWJ5 OiBDaHJpc3RvcGhlciBDbGFyayA8Y2hyaXN0b3BoZXIuY2xhcms2QGJhZXN5c3RlbXMuY29tPgot LS0KIHhlbi9jb21tb24vYXJnby5jICAgICAgICAgfCAzMjYgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaCB8ICA2 MiArKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzg4IGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL2FyZ28uYyBiL3hlbi9jb21tb24vYXJnby5jCmluZGV4IDBjMzk3MmMu LmExNzExOTEgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vYXJnby5jCisrKyBiL3hlbi9jb21tb24v YXJnby5jCkBAIC0zMCw2ICszMCw4IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKGFyZ29fcGZu X3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoYXJnb19hZGRyX3QpOwogREVGSU5FX1hFTl9H VUVTVF9IQU5ETEUoYXJnb19zZW5kX2FkZHJfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShh cmdvX3JpbmdfdCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRShhcmdvX3JpbmdfZGF0YV90KTsK K0RFRklORV9YRU5fR1VFU1RfSEFORExFKGFyZ29fcmluZ19kYXRhX2VudF90KTsKIERFRklORV9Y RU5fR1VFU1RfSEFORExFKHVpbnQ4X3QpOwogCiAvKiBYZW4gY29tbWFuZCBsaW5lIG9wdGlvbiB0 byBlbmFibGUgYXJnbyAqLwpAQCAtMTIwLDYgKzEyMiwxMCBAQCBhcmdvX2hhc2hfZm4oY29uc3Qg c3RydWN0IGFyZ29fcmluZ19pZCAqaWQpCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHN0 cnVjdCBhcmdvX3JpbmdfaW5mbyAqCithcmdvX3JpbmdfZmluZF9pbmZvX2J5X21hdGNoKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRvbWlkX3QgcGFydG5lcl9pZCwgdWludDY0X3QgcGFydG5lcl9jb29raWUpOworCiAv KgogICogbG9ja3MKICAqLwpAQCAtMTgzLDYgKzE4OSwxOSBAQCBhcmdvX3NpZ25hbF9kb21haW4o c3RydWN0IGRvbWFpbiAqZCkKICAgICBldnRjaG5fc2VuZChkLCBkLT5hcmdvLT5ldnRjaG5fcG9y dCk7CiB9CiAKK3N0YXRpYyB2b2lkCithcmdvX3NpZ25hbF9kb21pZChkb21pZF90IGlkKQorewor ICAgIHN0cnVjdCBkb21haW4gKmQgPSBnZXRfZG9tYWluX2J5X2lkKGlkKTsKKworICAgIGlmICgg IWQgKQorICAgICAgICByZXR1cm47CisKKyAgICBhcmdvX3NpZ25hbF9kb21haW4oZCk7CisKKyAg ICBwdXRfZG9tYWluKGQpOworfQorCiAvKgogICogcmluZyBidWZmZXIKICAqLwpAQCAtMzYzLDYg KzM4MiwzOSBAQCBhcmdvX3JpbmdidWZfZ2V0X3J4X3B0cihzdHJ1Y3QgYXJnb19yaW5nX2luZm8g KnJpbmdfaW5mbywgdWludDMyX3QgKnJ4X3B0cikKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGlj IHVpbnQzMl90CithcmdvX3JpbmdidWZfcGF5bG9hZF9zcGFjZShzdHJ1Y3QgZG9tYWluICpkLCBz dHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKK3sKKyAgICBhcmdvX3JpbmdfdCByaW5n OworICAgIGludDMyX3QgcmV0OworCisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZyaW5nX2lu Zm8tPmxvY2spKTsKKworICAgIHJpbmcubGVuID0gcmluZ19pbmZvLT5sZW47CisgICAgaWYgKCAh cmluZy5sZW4gKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJpbmcudHhfcHRyID0gcmluZ19p bmZvLT50eF9wdHI7CisKKyAgICBpZiAoIGFyZ29fcmluZ2J1Zl9nZXRfcnhfcHRyKHJpbmdfaW5m bywgJnJpbmcucnhfcHRyKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgYXJnb19kcHJpbnRr KCJhcmdvX3JpbmdidWZfcGF5bG9hZF9zcGFjZTogdHhfcHRyPSVkIHJ4X3B0cj0lZFxuIiwKKyAg ICAgICAgICAgICAgICAgcmluZy50eF9wdHIsIHJpbmcucnhfcHRyKTsKKworICAgIGlmICggcmlu Zy5yeF9wdHIgPT0gcmluZy50eF9wdHIgKQorICAgICAgICByZXR1cm4gcmluZy5sZW4gLSBzaXpl b2Yoc3RydWN0IGFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcik7CisKKyAgICByZXQgPSByaW5nLnJ4 X3B0ciAtIHJpbmcudHhfcHRyOworICAgIGlmICggcmV0IDwgMCApCisgICAgICAgIHJldCArPSBy aW5nLmxlbjsKKworICAgIHJldCAtPSBzaXplb2Yoc3RydWN0IGFyZ29fcmluZ19tZXNzYWdlX2hl YWRlcik7CisgICAgcmV0IC09IEFSR09fUk9VTkRVUCgxKTsKKworICAgIHJldHVybiAocmV0IDwg MCkgPyAwIDogcmV0OworfQorCiAvKgogICogYXJnb19zYW5pdGl6ZV9yaW5nIGNyZWF0ZXMgYSBt b2RpZmllZCBjb3B5IG9mIHRoZSByaW5nIHBvaW50ZXJzCiAgKiB3aGVyZSB0aGUgcnhfcHRyIGlz IHJvdW5kZWQgdXAgdG8gZW5zdXJlIGl0IGlzIGFsaWduZWQsIGFuZCB0aGVuCkBAIC02MjcsNiAr Njc5LDQzIEBAIGFyZ29fcGVuZGluZ19yZW1vdmVfYWxsKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAq cmluZ19pbmZvKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQKK2FyZ29fcGVuZGluZ19ub3RpZnko c3RydWN0IGhsaXN0X2hlYWQgKnRvX25vdGlmeSkKK3sKKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAq bm9kZSwgKm5leHQ7CisgICAgc3RydWN0IGFyZ29fcGVuZGluZ19lbnQgKnBlbmRpbmdfZW50Owor CisgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmYXJnb19sb2NrKSk7CisKKyAgICBobGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHBlbmRpbmdfZW50LCBub2RlLCBuZXh0LCB0b19ub3RpZnksIG5vZGUp CisgICAgeworICAgICAgICBobGlzdF9kZWwoJnBlbmRpbmdfZW50LT5ub2RlKTsKKyAgICAgICAg YXJnb19zaWduYWxfZG9taWQocGVuZGluZ19lbnQtPmlkKTsKKyAgICAgICAgeGZyZWUocGVuZGlu Z19lbnQpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2FyZ29fcGVuZGluZ19maW5kKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLAorICAg ICAgICAgICAgICAgICAgdWludDMyX3QgcGF5bG9hZF9zcGFjZSwgc3RydWN0IGhsaXN0X2hlYWQg KnRvX25vdGlmeSkKK3sKKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSwgKm5leHQ7CisgICAg c3RydWN0IGFyZ29fcGVuZGluZ19lbnQgKmVudDsKKworICAgIEFTU0VSVChyd19pc19sb2NrZWQo JmQtPmFyZ28tPmxvY2spKTsKKworICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKyAg ICBobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudCwgbm9kZSwgbmV4dCwgJnJpbmdfaW5mby0+ cGVuZGluZywgbm9kZSkKKyAgICB7CisgICAgICAgIGlmICggcGF5bG9hZF9zcGFjZSA+PSBlbnQt PmxlbiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGhsaXN0X2RlbCgmZW50LT5ub2RlKTsKKyAg ICAgICAgICAgIGhsaXN0X2FkZF9oZWFkKCZlbnQtPm5vZGUsIHRvX25vdGlmeSk7CisgICAgICAg IH0KKyAgICB9CisgICAgc3Bpbl91bmxvY2soJnJpbmdfaW5mby0+bG9jayk7Cit9CisKIHN0YXRp YyBpbnQKIGFyZ29fcGVuZGluZ19xdWV1ZShzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5m bywgZG9taWRfdCBzcmNfaWQsIGludCBsZW4pCiB7CkBAIC02NjgsNiArNzU3LDI0IEBAIGFyZ29f cGVuZGluZ19yZXF1ZXVlKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLCBkb21pZF90 IHNyY19pZCwgaW50IGxlbikKICAgICByZXR1cm4gYXJnb19wZW5kaW5nX3F1ZXVlKHJpbmdfaW5m bywgc3JjX2lkLCBsZW4pOwogfQogCitzdGF0aWMgdm9pZAorYXJnb19wZW5kaW5nX2NhbmNlbChz dHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywgZG9taWRfdCBzcmNfaWQpCit7CisgICAg c3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0OworICAgIHN0cnVjdCBhcmdvX3BlbmRpbmdf ZW50ICplbnQ7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnJpbmdfaW5mby0+bG9jaykp OworCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5vZGUsIG5leHQsICZyaW5n X2luZm8tPnBlbmRpbmcsIG5vZGUpCisgICAgeworICAgICAgICBpZiAoIGVudC0+aWQgPT0gc3Jj X2lkKQorICAgICAgICB7CisgICAgICAgICAgICBobGlzdF9kZWwoJmVudC0+bm9kZSk7CisgICAg ICAgICAgICB4ZnJlZShlbnQpOworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBh cmdvX3JpbmdfcmVtb3ZlX21mbnMoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykK IHsKQEAgLTcwNSw2ICs4MTIsMTA3IEBAIGFyZ29fcmluZ19yZW1vdmVfaW5mbyhzdHJ1Y3QgZG9t YWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKICAgICB4ZnJlZShyaW5n X2luZm8pOwogfQogCisvKnJpbmcgZGF0YSovCisKK3N0YXRpYyBpbnQKK2FyZ29fZmlsbF9yaW5n X2RhdGEoc3RydWN0IGRvbWFpbiAqc3JjX2QsCisgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVT VF9IQU5ETEUoYXJnb19yaW5nX2RhdGFfZW50X3QpIGRhdGFfZW50X2huZCkKK3sKKyAgICBhcmdv X3JpbmdfZGF0YV9lbnRfdCBlbnQ7CisgICAgZG9taWRfdCBzcmNfaWQ7CisgICAgc3RydWN0IGRv bWFpbiAqZHN0X2Q7CisgICAgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm87CisgICAg aW50IHJldDsKKworICAgIEFTU0VSVChyd19pc19sb2NrZWQoJmFyZ29fbG9jaykpOworCisgICAg cmV0ID0gY29weV9mcm9tX2d1ZXN0X2Vycm5vKCZlbnQsIGRhdGFfZW50X2huZCwgMSk7CisgICAg aWYgKCByZXQgKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgYXJnb19kcHJpbnRrKCJhcmdv X2ZpbGxfcmluZ19kYXRhOiBlbnQucmluZy5kb21haW49JXUsZW50LnJpbmcucG9ydD0ldVxuIiwK KyAgICAgICAgICAgICAgICAgZW50LnJpbmcuZG9tYWluX2lkLCBlbnQucmluZy5wb3J0KTsKKwor ICAgIHNyY19pZCA9IHNyY19kLT5kb21haW5faWQ7CisgICAgZW50LmZsYWdzID0gMDsKKworICAg IGRzdF9kID0gZ2V0X2RvbWFpbl9ieV9pZChlbnQucmluZy5kb21haW5faWQpOworCisgICAgaWYg KCBkc3RfZCAmJiBkc3RfZC0+YXJnbyApCisgICAgeworICAgICAgICByZWFkX2xvY2soJmRzdF9k LT5hcmdvLT5sb2NrKTsKKworICAgICAgICByaW5nX2luZm8gPSBhcmdvX3JpbmdfZmluZF9pbmZv X2J5X21hdGNoKGRzdF9kLCBlbnQucmluZy5wb3J0LCBzcmNfaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2QtPmFyZ28tPmRvbWFpbl9jb29r aWUpOworCisgICAgICAgIGlmICggcmluZ19pbmZvICkKKyAgICAgICAgeworICAgICAgICAgICAg dWludDMyX3Qgc3BhY2VfYXZhaWw7CisKKyAgICAgICAgICAgIGVudC5mbGFncyB8PSBBUkdPX1JJ TkdfREFUQV9GX0VYSVNUUzsKKyAgICAgICAgICAgIGVudC5tYXhfbWVzc2FnZV9zaXplID0KKyAg ICAgICAgICAgICAgICByaW5nX2luZm8tPmxlbiAtIHNpemVvZihzdHJ1Y3QgYXJnb19yaW5nX21l c3NhZ2VfaGVhZGVyKSAtCisgICAgICAgICAgICAgICAgQVJHT19ST1VORFVQKDEpOworCisgICAg ICAgICAgICBzcGluX2xvY2soJnJpbmdfaW5mby0+bG9jayk7CisKKyAgICAgICAgICAgIHNwYWNl X2F2YWlsID0gYXJnb19yaW5nYnVmX3BheWxvYWRfc3BhY2UoZHN0X2QsIHJpbmdfaW5mbyk7CisK KyAgICAgICAgICAgIGFyZ29fZHByaW50aygiYXJnb19maWxsX3JpbmdfZGF0YTogcG9ydD0lZCBz cGFjZV9hdmFpbD0lZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHNwYWNlX3dhbnRlZD0l ZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLmFkZHIucG9ydCwg c3BhY2VfYXZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgZW50LnNwYWNlX3JlcXVpcmVk KTsKKworICAgICAgICAgICAgaWYgKCBzcGFjZV9hdmFpbCA+PSBlbnQuc3BhY2VfcmVxdWlyZWQg KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFyZ29fcGVuZGluZ19jYW5jZWwocmlu Z19pbmZvLCBzcmNfaWQpOworICAgICAgICAgICAgICAgIGVudC5mbGFncyB8PSBBUkdPX1JJTkdf REFUQV9GX1NVRkZJQ0lFTlQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgYXJnb19wZW5kaW5nX3JlcXVldWUocmluZ19pbmZv LCBzcmNfaWQsIGVudC5zcGFjZV9yZXF1aXJlZCk7CisgICAgICAgICAgICAgICAgZW50LmZsYWdz IHw9IEFSR09fUklOR19EQVRBX0ZfUEVORElORzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgc3Bpbl91bmxvY2soJnJpbmdfaW5mby0+bG9jayk7CisKKyAgICAgICAgICAgIGlmICggc3Bh Y2VfYXZhaWwgPT0gZW50Lm1heF9tZXNzYWdlX3NpemUgKQorICAgICAgICAgICAgICAgIGVudC5m bGFncyB8PSBBUkdPX1JJTkdfREFUQV9GX0VNUFRZOworCisgICAgICAgIH0KKyAgICAgICAgcmVh ZF91bmxvY2soJmRzdF9kLT5hcmdvLT5sb2NrKTsKKyAgICB9CisKKyAgICBpZiAoIGRzdF9kICkK KyAgICAgICAgcHV0X2RvbWFpbihkc3RfZCk7CisKKyAgICByZXQgPSBjb3B5X2ZpZWxkX3RvX2d1 ZXN0X2Vycm5vKGRhdGFfZW50X2huZCwgJmVudCwgZmxhZ3MpOworICAgIGlmICggcmV0ICkKKyAg ICAgICAgcmV0dXJuIHJldDsKKyAgICByZXQgPSBjb3B5X2ZpZWxkX3RvX2d1ZXN0X2Vycm5vKGRh dGFfZW50X2huZCwgJmVudCwgbWF4X21lc3NhZ2Vfc2l6ZSk7CisgICAgaWYgKCByZXQgKQorICAg ICAgICByZXR1cm4gcmV0OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2FyZ29f ZmlsbF9yaW5nX2RhdGFfYXJyYXkoc3RydWN0IGRvbWFpbiAqZCwgaW50IG5lbnQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEUoYXJnb19yaW5nX2RhdGFfZW50X3Qp IGRhdGFfZW50X2huZCkKK3sKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIEFTU0VSVChyd19pc19s b2NrZWQoJmFyZ29fbG9jaykpOworCisgICAgd2hpbGUgKCAhcmV0ICYmIG5lbnQtLSApCisgICAg eworICAgICAgICByZXQgPSBhcmdvX2ZpbGxfcmluZ19kYXRhKGQsIGRhdGFfZW50X2huZCk7Cisg ICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KGRhdGFfZW50X2huZCwgMSk7CisgICAgfQor CisgICAgcmV0dXJuIHJldDsKK30KKwogLyoKICAqIHJpbmcKICAqLwpAQCAtMTE2Niw2ICsxMzc0 LDExNiBAQCBhcmdvX3JlZ2lzdGVyX3Jpbmcoc3RydWN0IGRvbWFpbiAqZCwKICAqIGlvCiAgKi8K IAorc3RhdGljIHZvaWQKK2FyZ29fbm90aWZ5X3Jpbmcoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0 IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sCisgICAgICAgICAgICAgICAgc3RydWN0IGhsaXN0 X2hlYWQgKnRvX25vdGlmeSkKK3sKKyAgICB1aW50MzJfdCBzcGFjZTsKKworICAgIEFTU0VSVChy d19pc19sb2NrZWQoJmFyZ29fbG9jaykpOworICAgIEFTU0VSVChyd19pc19sb2NrZWQoJmQtPmFy Z28tPmxvY2spKTsKKworICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKworICAgIGlm ICggcmluZ19pbmZvLT5sZW4gKQorICAgICAgICBzcGFjZSA9IGFyZ29fcmluZ2J1Zl9wYXlsb2Fk X3NwYWNlKGQsIHJpbmdfaW5mbyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZSA9IDA7CisKKyAg ICBzcGluX3VubG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKworICAgIGlmICggc3BhY2UgKQorICAg ICAgICBhcmdvX3BlbmRpbmdfZmluZChkLCByaW5nX2luZm8sIHNwYWNlLCB0b19ub3RpZnkpOwor fQorCitzdGF0aWMgdm9pZAorYXJnb19ub3RpZnlfY2hlY2tfcGVuZGluZyhzdHJ1Y3QgZG9tYWlu ICpkKQoreworICAgIGludCBpOworICAgIEhMSVNUX0hFQUQodG9fbm90aWZ5KTsKKworICAgIEFT U0VSVChyd19pc19sb2NrZWQoJmFyZ29fbG9jaykpOworCisgICAgcmVhZF9sb2NrKCZkLT5hcmdv LT5sb2NrKTsKKworICAgIG1iKCk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSR09fSFRBQkxF X1NJWkU7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSwgKm5l eHQ7CisgICAgICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOworCisgICAgICAg IGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmluZ19pbmZvLCBub2RlLCBuZXh0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmdvLT5yaW5nX2hhc2hbaV0sIG5vZGUp CisgICAgICAgIHsKKyAgICAgICAgICAgIGFyZ29fbm90aWZ5X3JpbmcoZCwgcmluZ19pbmZvLCAm dG9fbm90aWZ5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZWFkX3VubG9jaygmZC0+YXJnby0+ bG9jayk7CisKKyAgICBpZiAoICFobGlzdF9lbXB0eSgmdG9fbm90aWZ5KSApCisgICAgICAgIGFy Z29fcGVuZGluZ19ub3RpZnkoJnRvX25vdGlmeSk7Cit9CisKK3N0YXRpYyBsb25nCithcmdvX25v dGlmeShzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJB TShhcmdvX3JpbmdfZGF0YV90KSByaW5nX2RhdGFfaG5kKQoreworICAgIGFyZ29fcmluZ19kYXRh X3QgcmluZ19kYXRhOworICAgIGludCByZXQgPSAwOworCisgICAgcmVhZF9sb2NrKCZhcmdvX2xv Y2spOworCisgICAgaWYgKCAhZC0+YXJnbyApCisgICAgeworICAgICAgICByZWFkX3VubG9jaygm YXJnb19sb2NrKTsKKyAgICAgICAgYXJnb19kcHJpbnRrKCIhZC0+YXJnbywgRU5PREVWXG4iKTsK KyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAgYXJnb19ub3RpZnlfY2hlY2tf cGVuZGluZyhkKTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX2lzX251 bGwocmluZ19kYXRhX2huZCkgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBRdWljayBzYW5p dHkgY2hlY2sgb24gcmluZ19kYXRhX2huZCAqLworICAgICAgICAgICAgcmV0ID0gY29weV9maWVs ZF9mcm9tX2d1ZXN0X2Vycm5vKCZyaW5nX2RhdGEsIHJpbmdfZGF0YV9obmQsIG1hZ2ljKTsKKyAg ICAgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg ICAgaWYgKCByaW5nX2RhdGEubWFnaWMgIT0gQVJHT19SSU5HX0RBVEFfTUFHSUMgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIGFyZ29fZHByaW50aygKKyAgICAgICAgICAgICAgICAg ICAgInJpbmcubWFnaWMoJSJQUkl4NjQiKSAhPSBBUkdPX1JJTkdfTUFHSUMoJWxseCksIEVJTlZB TFxuIiwKKyAgICAgICAgICAgICAgICAgICAgcmluZ19kYXRhLm1hZ2ljLCBBUkdPX1JJTkdfTUFH SUMpOworICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldCA9IGNvcHlfZnJvbV9ndWVzdF9l cnJubygmcmluZ19kYXRhLCByaW5nX2RhdGFfaG5kLCAxKTsKKyAgICAgICAgICAgIGlmICggcmV0 ICkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhpcyBpcyBhIGd1ZXN0IHBvaW50ZXIgcGFzc2Vk IGFzIGEgZmllbGQgaW4gYSBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAgKiBzbyBYRU5fR1VFU1Rf SEFORExFIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgWEVO X0dVRVNUX0hBTkRMRShhcmdvX3JpbmdfZGF0YV9lbnRfdCkgcmluZ19kYXRhX2VudF9obmQ7Cisg ICAgICAgICAgICAgICAgcmluZ19kYXRhX2VudF9obmQgPSBndWVzdF9oYW5kbGVfZm9yX2ZpZWxk KHJpbmdfZGF0YV9obmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFyZ29fcmluZ19kYXRhX2VudF90LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzBdKTsKKyAg ICAgICAgICAgICAgICByZXQgPSBhcmdvX2ZpbGxfcmluZ19kYXRhX2FycmF5KGQsIHJpbmdfZGF0 YS5uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmluZ19kYXRhX2VudF9obmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSB3aGls ZSAoIDAgKTsKKworICAgIHJlYWRfdW5sb2NrKCZhcmdvX2xvY2spOworCisgICAgcmV0dXJuIHJl dDsKK30KKwogc3RhdGljIGxvbmcKIGFyZ29fc2VuZHYoc3RydWN0IGRvbWFpbiAqc3JjX2QsIGNv bnN0IGFyZ29fYWRkcl90ICpzcmNfYWRkciwKICAgICAgICAgICAgY29uc3QgYXJnb19hZGRyX3Qg KmRzdF9hZGRyLApAQCAtMTM0MSw2ICsxNjU5LDE0IEBAIGRvX2FyZ29fbWVzc2FnZV9vcChpbnQg Y21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAgICAgICAgICAg ICAgICAgICBpb3ZzLCBuaW92LCBtZXNzYWdlX3R5cGUpOwogICAgICAgICBicmVhazsKICAgICB9 CisgICAgY2FzZSBBUkdPX01FU1NBR0VfT1Bfbm90aWZ5OgorICAgIHsKKyAgICAgICAgWEVOX0dV RVNUX0hBTkRMRV9QQVJBTShhcmdvX3JpbmdfZGF0YV90KSByaW5nX2RhdGFfaG5kID0KKyAgICAg ICAgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcxLCBhcmdvX3JpbmdfZGF0YV90KTsK KworICAgICAgICByYyA9IGFyZ29fbm90aWZ5KGQsIHJpbmdfZGF0YV9obmQpOworICAgICAgICBi cmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAtRU5PU1lTOwogICAgICAg ICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggYi94ZW4vaW5j bHVkZS9wdWJsaWMvYXJnby5oCmluZGV4IDEyM2VmYzUuLjQyZjU1MWYgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaApA QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInhlbi5oIgogCiAjZGVmaW5lIEFSR09fUklOR19N QUdJQyAgICAgIDB4YmQ2N2UxNjNlNzc3N2YyZlVMTAorI2RlZmluZSBBUkdPX1JJTkdfREFUQV9N QUdJQyAweGNjZTRkMzBmYmM4MmU5MmFVTEwKIAogI2RlZmluZSBBUkdPX0RPTUlEX0FOWSAgICAg ICAgICAgRE9NSURfSU5WQUxJRAogCkBAIC0xMDMsNiArMTA0LDQwIEBAIHR5cGVkZWYgc3RydWN0 IGFyZ29fcmluZwogICovCiAjZGVmaW5lIEFSR09fUk9VTkRVUChhKSAoKChhKSArIDB4ZikgJiB+ KHR5cGVvZihhKSkweGYpCiAKKy8qCisgKiBOb3RpZnkgZmxhZ3MKKyAqLworLyogUmluZyBpcyBl bXB0eSAqLworI2RlZmluZSBBUkdPX1JJTkdfREFUQV9GX0VNUFRZICAgICAgICgxVSA8PCAwKQor LyogUmluZyBleGlzdHMgKi8KKyNkZWZpbmUgQVJHT19SSU5HX0RBVEFfRl9FWElTVFMgICAgICAo MVUgPDwgMSkKKy8qIFBlbmRpbmcgaW50ZXJydXB0IGV4aXN0cy4gRG8gbm90IHJlbHkgb24gdGhp cyBmaWVsZCAtIGZvciBwcm9maWxpbmcgb25seSAqLworI2RlZmluZSBBUkdPX1JJTkdfREFUQV9G X1BFTkRJTkcgICAgICgxVSA8PCAyKQorLyogU3VmZmljaWVudCBzcGFjZSB0byBxdWV1ZSBzcGFj ZV9yZXF1aXJlZCBieXRlcyBleGlzdHMgKi8KKyNkZWZpbmUgQVJHT19SSU5HX0RBVEFfRl9TVUZG SUNJRU5UICAoMVUgPDwgMykKKwordHlwZWRlZiBzdHJ1Y3QgYXJnb19yaW5nX2RhdGFfZW50Cit7 CisgICAgYXJnb19hZGRyX3QgcmluZzsKKyAgICB1aW50MTZfdCBmbGFnczsKKyAgICB1aW50MTZf dCBwYWQ7CisgICAgdWludDMyX3Qgc3BhY2VfcmVxdWlyZWQ7CisgICAgdWludDMyX3QgbWF4X21l c3NhZ2Vfc2l6ZTsKK30gYXJnb19yaW5nX2RhdGFfZW50X3Q7CisKK3R5cGVkZWYgc3RydWN0IGFy Z29fcmluZ19kYXRhCit7CisgICAgdWludDY0X3QgbWFnaWM7CisgICAgdWludDMyX3QgbmVudDsK KyAgICB1aW50MzJfdCBwYWQ7CisgICAgdWludDY0X3QgcmVzZXJ2ZWRbNF07CisjaWYgZGVmaW5l ZChfX1NURENfVkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKKyAgICBh cmdvX3JpbmdfZGF0YV9lbnRfdCBkYXRhW107CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAg IGFyZ29fcmluZ19kYXRhX2VudF90IGRhdGFbMF07CisjZW5kaWYKK30gYXJnb19yaW5nX2RhdGFf dDsKKwogc3RydWN0IGFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcgogewogICAgIHVpbnQzMl90IGxl bjsKQEAgLTE3OSw2ICsyMTQsMzMgQEAgc3RydWN0IGFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcgog ICovCiAjZGVmaW5lIEFSR09fTUVTU0FHRV9PUF9zZW5kdiAgICAgICAgICAgICAgIDUKIAorLyoK KyAqIEFSR09fTUVTU0FHRV9PUF9ub3RpZnkKKyAqCisgKiBBc2tzIFhlbiBmb3IgaW5mb3JtYXRp b24gYWJvdXQgb3RoZXIgcmluZ3MgaW4gdGhlIHN5c3RlbS4KKyAqCisgKiBlbnQtPnJpbmcgaXMg dGhlIGFyZ29fYWRkcl90IG9mIHRoZSByaW5nIHlvdSB3YW50IGluZm9ybWF0aW9uIG9uLgorICog VXNlcyB0aGUgc2FtZSByaW5nIG1hdGNoaW5nIHJ1bGVzIGFzIEFSR09fTUVTU0FHRV9PUF9zZW5k di4KKyAqCisgKiBlbnQtPnNwYWNlX3JlcXVpcmVkIDogaWYgdGhpcyBmaWVsZCBpcyBub3QgbnVs bCB0aGVuIFhlbiB3aWxsIGNoZWNrCisgKiB0aGF0IHRoZXJlIGlzIHNwYWNlIGluIHRoZSBkZXN0 aW5hdGlvbiByaW5nIGZvciB0aGlzIG1hbnkgYnl0ZXMgb2YgcGF5bG9hZC4KKyAqIElmIHN1ZmZp Y2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlLCBpdCB3aWxsIHNldCBBUkdPX1JJTkdfREFUQV9GX1NV RkZJQ0lFTlQKKyAqIGFuZCBDQU5DRUwgYW55IHBlbmRpbmcgbm90aWZpY2F0aW9uIGZvciB0aGF0 IGVudC0+cmluZzsgb3RoZXJ3aXNlIGl0CisgKiB3aWxsIHNjaGVkdWxlIGEgbm90aWZpY2F0aW9u IGV2ZW50IGFuZCB0aGUgZmxhZyB3aWxsIG5vdCBiZSBzZXQuCisgKgorICogVGhlc2UgZmxhZ3Mg YXJlIHNldCBieSBYZW4gd2hlbiBub3RpZnkgcmVwbGllczoKKyAqIEFSR09fUklOR19EQVRBX0Zf RU1QVFkgICAgICAgcmluZyBpcyBlbXB0eQorICogQVJHT19SSU5HX0RBVEFfRl9QRU5ESU5HICAg ICBub3RpZnkgZXZlbnQgaXMgcGVuZGluZyAtICogZG9uJ3QgcmVseSBvbiB0aGlzICoKKyAqIEFS R09fUklOR19EQVRBX0ZfU1VGRklDSUVOVCAgc3VmZmljaWVudCBzcGFjZSBmb3Igc3BhY2VfcmVx dWlyZWQgaXMgdGhlcmUKKyAqIEFSR09fUklOR19EQVRBX0ZfRVhJU1RTICAgICAgcmluZyBleGlz dHMKKyAqCisgKiBhcmcxOiBYRU5fR1VFU1RfSEFORExFKGFyZ29fcmluZ19kYXRhX3QpIHJpbmdf ZGF0YSAobWF5IGJlIE5VTEwpCisgKiBhcmcyOiBOVUxMCisgKiBhcmczOiAwIChaRVJPKQorICog YXJnNDogMCAoWkVSTykKKyAqLworI2RlZmluZSBBUkdPX01FU1NBR0VfT1Bfbm90aWZ5ICAgICAg ICAgICAgICA0CisKIC8qIFRoZSBtYXhpbXVtIHNpemUgb2YgYSBndWVzdCBtZXNzYWdlIHRoYXQg bWF5IGJlIHNlbnQgb24gYW4gQXJnbyByaW5nLiAqLwogI2RlZmluZSBBUkdPX01BWF9NU0dfU0la RSAoKEFSR09fTUFYX1JJTkdfU0laRSkgLSBcCiAgICAgICAgIChzaXplb2Yoc3RydWN0IGFyZ29f cmluZ19tZXNzYWdlX2hlYWRlcikpIC0gXAotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs