From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keshav Darak Subject: Re: PATCH: Hugepage support for Domains booting with 4KB pages Date: Mon, 21 Mar 2011 14:01:51 -0700 (PDT) Message-ID: <71077.78622.qm@web59615.mail.ac4.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1537624673-1300741311=:78622" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: jeremy@goop.org, keir@xen.org List-Id: xen-devel@lists.xenproject.org --0-1537624673-1300741311=:78622 Content-Type: multipart/alternative; boundary="0-308703286-1300741311=:78622" --0-308703286-1300741311=:78622 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable have corrected few mistakes in previously attached xen patch file. Please review it. --- On Sun, 3/20/11, Keshav Darak wrote: From: Keshav Darak Subject: [Xen-devel] PATCH: Hugepage support for Domains booting with 4KB p= ages To: xen-devel@lists.xensource.com Cc: jeremy@goop.org, keir@xen.org Date: Sunday, March 20, 2011, 10:34 PM We have implemented hugepage support for guests in following manner In=0A our implementation we added a parameter hugepage_num which is specifi= ed=0A in the config file of the DomU. It is the number of hugepages that th= e =0Aguest is guaranteed to receive whenever the kernel asks for hugepage b= y =0Ausing its boot time parameter or reserving after booting (eg. Using ec= ho=0A XX > /proc/sys/vm/nr_hugepages). During creation of the domain we =0A= reserve MFN's for these hugepages and store them in the list. The =0Alisthe= ad of this list is inside the domain structure with name =0A"hugepage_list"= . When the domain is booting, at that time the memory =0Aseen by the kernel= is allocated memory=A0 less the amount required for hugepages. The functio= n =0Areserve_hugepage_range is called as a initcall. Before this function t= he=0A xen_extra_mem_start points to this apparent end of the memory. In thi= s =0Afunction we reserve the PFN range for the hugepages which are going to= =0Abe allocated by kernel by incrementing the xen_extra_mem_start. We =0Am= aintain these PFNs as pages in "xen_hugepfn_list" in the kernel.=20 Now=0A before the kernel requests for hugepages, it makes a hypercall =0AHY= PERVISOR_memory_op=A0 to get count of hugepages allocated to it and =0Aacco= rdingly reserves the pfn range. then whenever kernel requests for=0A hugepages it again make hypercall HYPE= RVISOR_memory_op to get the =0Apreallocated hugepage and according makes th= e p2m mapping on both sides =0A(xen as well as kernel side) The approach can be better explained using the presentation attached. -- Keshav Darak Kaustubh Kabra Ashwin Vasani=20 Aditya Gadre =0A=0A =20 -----Inline Attachment Follows----- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel =0A=0A=0A --0-308703286-1300741311=:78622 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable =
have corrected few mistakes in previously att= ached xen patch file.
Please review it.

--- On Sun, 3/20/11, K= eshav Darak <keshav_darak@yahoo.com> wrote:

From: Keshav Darak <keshav_darak@yahoo.com>
Subj= ect: [Xen-devel] PATCH: Hugepage support for Domains booting with 4KB pages=
To: xen-devel@lists.xensource.com
Cc: jeremy@goop.org, keir@xen.org<= br>Date: Sunday, March 20, 2011, 10:34 PM

<= table border=3D"0" cellpadding=3D"0" cellspacing=3D"0">
We have implemented hugepage support for= guests in following manner

In=0A our implementation we added a para= meter hugepage_num which is specified=0A in the config file of the DomU. It= is the number of hugepages that the =0Aguest is guaranteed to receive when= ever the kernel asks for hugepage by =0Ausing its boot time parameter or re= serving after booting (eg. Using echo=0A XX > /proc/sys/vm/nr_hugepages)= . During creation of the domain we =0Areserve MFN's for these hugepages and= store them in the list. The =0Alisthead of this list is inside the domain = structure with name =0A"hugepage_list". When the domain is booting, at that= time the memory =0Aseen by the kernel is allocated memory  less the a= mount required for hugepages. The function =0Areserve_hugepage_range is cal= led as a initcall. Before this function the=0A xen_extra_mem_start points t= o this apparent end of the memory. In this =0Afunction we reserve the PFN r= ange for the hugepages which are going to =0Abe allocated by kernel by incr= ementing the xen_extra_mem_start. We =0Amaintain these PFNs as pages in "xe= n_hugepfn_list" in the kernel.

Now=0A before the kernel requests fo= r hugepages, it makes a hypercall =0AHYPERVISOR_memory_op  to get coun= t of hugepages allocated to it and =0Aaccordingly reserves the pfn range.then whenever kernel requests for=0A hugepages it again make hypercall HY= PERVISOR_memory_op to get the =0Apreallocated hugepage and according makes = the p2m mapping on both sides =0A(xen as well as kernel side)

The ap= proach can be better explained using the presentation attached.

--Keshav Darak
Kaustubh Kabra
Ashwin Vasani
Aditya Gadre

=0A=0A
-----Inline Attachment Follo= ws-----

___________________________________= ____________
Xen-devel mailing list
= Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

=0A=0A=0A=0A=0A=0A=0A=0A --0-308703286-1300741311=:78622-- --0-1537624673-1300741311=:78622 Content-Type: text/x-patch; name="xen.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="xen.patch" ZGlmZiAtciA0ZTEwOGNmNTZkMDcgdG9vbHMvbGlieGMveGNfZG9tLmgKLS0t IGEvdG9vbHMvbGlieGMveGNfZG9tLmgJTW9uIERlYyAyNyAwODowMDowOSAy MDEwICswMDAwCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbS5oCU1vbiBNYXIg MjEgMTE6Mjk6MjYgMjAxMSArMDUzMApAQCAtMTEzLDYgKzExMyw3IEBACiAg ICAgZG9taWRfdCBndWVzdF9kb21pZDsKICAgICBpbnQ4X3QgdmhwdF9zaXpl X2xvZzI7IC8qIGZvciBJQTY0ICovCiAgICAgaW50OF90IHN1cGVycGFnZXM7 CisgICAgaW50IGh1Z2VwYWdlX251bTsKICAgICBpbnQgc2hhZG93X2VuYWJs ZWQ7CiAKICAgICBpbnQgeGVuX3ZlcnNpb247CmRpZmYgLXIgNGUxMDhjZjU2 ZDA3IHRvb2xzL2xpYnhjL3hjX2RvbV9jb3JlLmMKLS0tIGEvdG9vbHMvbGli eGMveGNfZG9tX2NvcmUuYwlNb24gRGVjIDI3IDA4OjAwOjA5IDIwMTAgKzAw MDAKKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYwlNb24gTWFyIDIx IDExOjI5OjI2IDIwMTEgKzA1MzAKQEAgLTY5OSw2ICs2OTksMjAgQEAKIAog ICAgIHBhZ2Vfc2hpZnQgPSBYQ19ET01fUEFHRV9TSElGVChkb20pOwogICAg IG5yX3BhZ2VzID0gbWVtX21iIDw8ICgyMCAtIHBhZ2Vfc2hpZnQpOworICAg IAorICAgIC8vYTJrMgorICAgIGlmKGRvbS0+aHVnZXBhZ2VfbnVtICYmIGRv bS0+c3VwZXJwYWdlcyE9MSkKKyAgICAgICAgeworCisgICAgICAgICAgICBu cl9wYWdlcy09ZG9tLT5odWdlcGFnZV9udW0qNTEyOworCisgICAgfQorICAg IGlmKG5yX3BhZ2VzPD0wKQorICAgICAgICB7CisgICAgICAgICAgICB4Y19k b21fcGFuaWMoZG9tLT54Y2gsIFhDX0lOVEVSTkFMX0VSUk9SLCAiJXM6IEFs bG9jYXRlZCBtZW1vcnkgbGVzcyB0aGFuIHJlcXVpcmVkIGZvciBodWdlcGFn ZXMiLAorICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAg ICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAKICAgICBET01QUklOVEYo IiVzOiBtZW0gJWQgTUIsIHBhZ2VzIDB4JSIgUFJJcGZuICIgcGFnZXMsICVk ayBlYWNoIiwKICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgbWVtX21i LCBucl9wYWdlcywgMSA8PCAocGFnZV9zaGlmdC0xMCkpOwpkaWZmIC1yIDRl MTA4Y2Y1NmQwNyB0b29scy9saWJ4Yy94Y19kb21feDg2LmMKLS0tIGEvdG9v bHMvbGlieGMveGNfZG9tX3g4Ni5jCU1vbiBEZWMgMjcgMDg6MDA6MDkgMjAx MCArMDAwMAorKysgYi90b29scy9saWJ4Yy94Y19kb21feDg2LmMJTW9uIE1h ciAyMSAxMToyOToyNiAyMDExICswNTMwCkBAIC03NDcsOSArNzQ3LDE4IEBA CiAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IFNVUEVSUEFHRV9OUl9Q Rk5TOyBqKyssIHBmbisrICkKICAgICAgICAgICAgICAgICBkb20tPnAybV9o b3N0W3Bmbl0gPSBtZm4gKyBqOwogICAgICAgICB9CisKICAgICB9CiAgICAg ZWxzZQogICAgIHsKKyAgICAgICAgLyphMmsyIHNldHRpbmcgdXAgaHVnZXBh Z2VzIHBvb2wgZm9yIGRvbWFpbiBpbiB4ZW4gZnJvbSBpdHMgbWVtX3NpemUg bm90IGFsbG9jYXRlZCBhcyBmcmVlIHBhZ2VzIHRvIGRvbWFpbi4gKi8KKyAg ICAgICAgaWYoZG9tLT5odWdlcGFnZV9udW0pCisgICAgICAgIHsKKyAgICAg ICAgICAgIHJjID0geGNfZG9tYWluX3BvcHVsYXRlX2h1Z2VtYXAoCisgICAg ICAgICAgICAgICAgZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIGRvbS0+ aHVnZXBhZ2VfbnVtLAorICAgICAgICAgICAgICAgIDksIDAsICZkb20tPnAy bV9ob3N0WzBdKTsKKworICAgICAgICB9CiAgICAgICAgIC8qIHNldHVwIGlu aXRpYWwgcDJtICovCiAgICAgICAgIGZvciAoIHBmbiA9IDA7IHBmbiA8IGRv bS0+dG90YWxfcGFnZXM7IHBmbisrICkKICAgICAgICAgICAgIGRvbS0+cDJt X2hvc3RbcGZuXSA9IHBmbjsKZGlmZiAtciA0ZTEwOGNmNTZkMDcgdG9vbHMv bGlieGMveGNfZG9tYWluLmMKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tYWlu LmMJTW9uIERlYyAyNyAwODowMDowOSAyMDEwICswMDAwCisrKyBiL3Rvb2xz L2xpYnhjL3hjX2RvbWFpbi5jCU1vbiBNYXIgMjEgMTE6Mjk6MjYgMjAxMSAr MDUzMApAQCAtNzI5LDYgKzcyOSwzNCBAQAogICAgIHJldHVybiBkb19tZW1v cnlfb3AoeGNoLCBYRU5NRU1fYWRkX3RvX3BoeXNtYXAsICZ4YXRwLCBzaXpl b2YoeGF0cCkpOwogfQogCitpbnQgeGNfZG9tYWluX3BvcHVsYXRlX2h1Z2Vt YXAoeGNfaW50ZXJmYWNlICp4Y2gsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucl9leHRlbnRzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleHRlbnRf b3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IG1lbV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4ZW5fcGZuX3QgKmV4dGVudF9zdGFydCkKK3sKKyAgICBpbnQgZXJy OworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRShleHRlbnRfc3RhcnQs IG5yX2V4dGVudHMgKiBzaXplb2YoKmV4dGVudF9zdGFydCksIFhDX0hZUEVS Q0FMTF9CVUZGRVJfQk9VTkNFX0JPVEgpOworICAgIHN0cnVjdCB4ZW5fbWVt b3J5X3Jlc2VydmF0aW9uIHJlc2VydmF0aW9uID0geworICAgICAgICAubnJf ZXh0ZW50cyAgID0gbnJfZXh0ZW50cywKKyAgICAgICAgLmV4dGVudF9vcmRl ciA9IGV4dGVudF9vcmRlciwKKyAgICAgICAgLm1lbV9mbGFncyAgICA9IG1l bV9mbGFncywKKyAgICAgICAgLmRvbWlkICAgICAgICA9IGRvbWlkCisgICAg fTsKKworICAgIGlmICggeGNfaHlwZXJjYWxsX2JvdW5jZV9wcmUoeGNoLCBl eHRlbnRfc3RhcnQpICkKKyAgICB7CisgICAgICAgIFBFUlJPUigiQ291bGQg bm90IGJvdW5jZSBtZW1vcnkgZm9yIFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFw IGh5cGVyY2FsbCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAg IHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHJlc2VydmF0aW9uLmV4dGVudF9zdGFy dCwgZXh0ZW50X3N0YXJ0KTsKKworICAgIGVyciA9IGRvX21lbW9yeV9vcCh4 Y2gsIFhFTk1FTV9wb3B1bGF0ZV9odWdlbWFwLCAmcmVzZXJ2YXRpb24sIHNp emVvZihyZXNlcnZhdGlvbikpOworCisgICAgeGNfaHlwZXJjYWxsX2JvdW5j ZV9wb3N0KHhjaCwgZXh0ZW50X3N0YXJ0KTsKKyAgICByZXR1cm4gZXJyOwor fQogaW50IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwKHhjX2ludGVyZmFj ZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgbnJfZXh0ZW50cywKZGlmZiAtciA0ZTEwOGNmNTZkMDcg dG9vbHMvbGlieGMveGVuY3RybC5oCi0tLSBhL3Rvb2xzL2xpYnhjL3hlbmN0 cmwuaAlNb24gRGVjIDI3IDA4OjAwOjA5IDIwMTAgKzAwMDAKKysrIGIvdG9v bHMvbGlieGMveGVuY3RybC5oCU1vbiBNYXIgMjEgMTE6Mjk6MjYgMjAxMSAr MDUzMApAQCAtMTAwNiw2ICsxMDA2LDEzIEBACiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1lbV9mbGFncywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgKmV4dGVudF9z dGFydCk7CiAKK2ludCB4Y19kb21haW5fcG9wdWxhdGVfaHVnZW1hcCh4Y19p bnRlcmZhY2UgKnhjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIG5yX2V4dGVudHMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4dGVudF9vcmRlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg bWVtX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhl bl9wZm5fdCAqZXh0ZW50X3N0YXJ0KTsKKwogaW50IHhjX2RvbWFpbl9wb3B1 bGF0ZV9waHlzbWFwX2V4YWN0KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbWlk LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgbnJfZXh0ZW50cywKZGlmZiAtciA0ZTEwOGNmNTZkMDcgdG9v bHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jCi0tLSBhL3Rvb2xzL3B5 dGhvbi94ZW4vbG93bGV2ZWwveGMveGMuYwlNb24gRGVjIDI3IDA4OjAwOjA5 IDIwMTAgKzAwMDAKKysrIGIvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94 Yy94Yy5jCU1vbiBNYXIgMjEgMTE6Mjk6MjYgMjAxMSArMDUzMApAQCAtNDU1 LDYgKzQ1NSw3IEBACiAgICAgaW50IHN0b3JlX2V2dGNobiwgY29uc29sZV9l dnRjaG47CiAgICAgaW50IHZocHQgPSAwOwogICAgIGludCBzdXBlcnBhZ2Vz ID0gMDsKKyAgICBpbnQgaHVnZXBhZ2VfbnVtID0gMDsKICAgICB1bnNpZ25l ZCBpbnQgbWVtX21iOwogICAgIHVuc2lnbmVkIGxvbmcgc3RvcmVfbWZuID0g MDsKICAgICB1bnNpZ25lZCBsb25nIGNvbnNvbGVfbWZuID0gMDsKQEAgLTQ2 NywxNCArNDY4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjb25zb2xlX2V2dGNobiIsICJpbWFnZSIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIG9wdGlvbmFsICovCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJyYW1kaXNrIiwgImNtZGxpbmUiLCAi ZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVh dHVyZXMiLCAidmhwdCIsICJzdXBlcnBhZ2VzIiwgTlVMTCB9OwotCi0gICAg aWYgKCAhUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMs ICJpaWlpc3xzc2lzaWkiLCBrd2RfbGlzdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImZlYXR1cmVzIiwgInZocHQiLCAic3VwZXJwYWdl cyIsImh1Z2VwYWdlX251bSIsIE5VTEwgfTsKKworICAgIGlmICggIVB5QXJn X1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiaWlpaXN8c3Np c2lpaSIsIGt3ZF9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZG9taWQsICZzdG9yZV9ldnRjaG4sICZtZW1fbWIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25zb2xl X2V2dGNobiwgJmltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBvcHRpb25hbCAqLwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmcmFtZGlzaywgJmNtZGxpbmUsICZmbGFn cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZl YXR1cmVzLCAmdmhwdCwgJnN1cGVycGFnZXMpICkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmZlYXR1cmVzLCAmdmhwdCwgJnN1 cGVycGFnZXMsJmh1Z2VwYWdlX251bSkgKQogICAgICAgICByZXR1cm4gTlVM TDsKIAogICAgIHhjX2RvbV9sb2dpbml0KHNlbGYtPnhjX2hhbmRsZSk7CkBA IC00ODQsNiArNDg1LDcgQEAKICAgICAvKiBmb3IgSUE2NCAqLwogICAgIGRv bS0+dmhwdF9zaXplX2xvZzIgPSB2aHB0OwogCisgIGRvbS0+aHVnZXBhZ2Vf bnVtPWh1Z2VwYWdlX251bTsKICAgICBkb20tPnN1cGVycGFnZXMgPSBzdXBl cnBhZ2VzOwogCiAgICAgaWYgKCB4Y19kb21fbGludXhfYnVpbGQoc2VsZi0+ eGNfaGFuZGxlLCBkb20sIGRvbWlkLCBtZW1fbWIsIGltYWdlLApkaWZmIC1y IDRlMTA4Y2Y1NmQwNyB0b29scy9weXRob24veGVuL3hlbmQvWGVuZENvbmZp Zy5weQotLS0gYS90b29scy9weXRob24veGVuL3hlbmQvWGVuZENvbmZpZy5w eQlNb24gRGVjIDI3IDA4OjAwOjA5IDIwMTAgKzAwMDAKKysrIGIvdG9vbHMv cHl0aG9uL3hlbi94ZW5kL1hlbmRDb25maWcucHkJTW9uIE1hciAyMSAxMToy OToyNiAyMDExICswNTMwCkBAIC0yNDQsNiArMjQ0LDcgQEAKICAgICAnbWVt b3J5X3NoYXJpbmcnOiBpbnQsCiAgICAgJ3Bvb2xfbmFtZScgOiBzdHIsCiAg ICAgJ0Rlc2NyaXB0aW9uJzogc3RyLAorICAgICdodWdlcGFnZV9udW0nOmlu dCwKIH0KIAogIyBMaXN0IG9mIGxlZ2FjeSBjb25maWd1cmF0aW9uIGtleXMg dGhhdCBoYXZlIG5vIGVxdWl2YWxlbnQgaW4gdGhlCkBAIC00MjMsNiArNDI0 LDcgQEAKICAgICAgICAgICAgICdwb29sX25hbWUnIDogJ1Bvb2wtMCcsCiAg ICAgICAgICAgICAnc3VwZXJwYWdlcyc6IDAsCiAgICAgICAgICAgICAnZGVz Y3JpcHRpb24nOiAnJywKKyAgICAgICAgICAgICdodWdlcGFnZV9udW0nOjAs CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBkZWZhdWx0 cwpAQCAtMjEzNSw2ICsyMTM3LDggQEAKICAgICAgICAgICAgIGltYWdlLmFw cGVuZChbJ2FyZ3MnLCBzZWxmWydQVl9hcmdzJ11dKQogICAgICAgICBpZiBz ZWxmLmhhc19rZXkoJ3N1cGVycGFnZXMnKToKICAgICAgICAgICAgIGltYWdl LmFwcGVuZChbJ3N1cGVycGFnZXMnLCBzZWxmWydzdXBlcnBhZ2VzJ11dKQor CWlmIHNlbGYuaGFzX2tleSgnaHVnZXBhZ2VfbnVtJyk6CisgICAgICAgICAg ICBpbWFnZS5hcHBlbmQoWydodWdlcGFnZV9udW0nLCBzZWxmWydodWdlcGFn ZV9udW0nXV0pCiAKICAgICAgICAgZm9yIGtleSBpbiBYRU5BUElfUExBVEZP Uk1fQ0ZHX1RZUEVTLmtleXMoKToKICAgICAgICAgICAgIGlmIGtleSBpbiBz ZWxmWydwbGF0Zm9ybSddOgpAQCAtMjE3OSw2ICsyMTgzLDkgQEAKICAgICAg ICAgdmFsID0gc3hwLmNoaWxkX3ZhbHVlKGltYWdlX3N4cCwgJ3N1cGVycGFn ZXMnKQogICAgICAgICBpZiB2YWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAg ICBzZWxmWydzdXBlcnBhZ2VzJ10gPSB2YWwKKyAgICAgICAgdmFsID0gc3hw LmNoaWxkX3ZhbHVlKGltYWdlX3N4cCwgJ2h1Z2VwYWdlX251bScpCisgICAg ICAgIGlmIHZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGZbJ2h1 Z2VwYWdlX251bSddID0gdmFsCiAgICAgICAgIAogICAgICAgICB2YWwgPSBz eHAuY2hpbGRfdmFsdWUoaW1hZ2Vfc3hwLCAnbWVtb3J5X3NoYXJpbmcnKQog ICAgICAgICBpZiB2YWwgaXMgbm90IE5vbmU6CmRpZmYgLXIgNGUxMDhjZjU2 ZDA3IHRvb2xzL3B5dGhvbi94ZW4veGVuZC9pbWFnZS5weQotLS0gYS90b29s cy9weXRob24veGVuL3hlbmQvaW1hZ2UucHkJTW9uIERlYyAyNyAwODowMDow OSAyMDEwICswMDAwCisrKyBiL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9pbWFn ZS5weQlNb24gTWFyIDIxIDExOjI5OjI2IDIwMTEgKzA1MzAKQEAgLTg0LDYg Kzg0LDcgQEAKIAogICAgIG9zdHlwZSA9IE5vbmUKICAgICBzdXBlcnBhZ2Vz ID0gMAorICAgIGh1Z2VwYWdlX251bSA9IDAKICAgICBtZW1vcnlfc2hhcmlu ZyA9IDAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2bSwgdm1Db25maWcp OgpAQCAtNzExLDYgKzcxMiw3IEBACiAgICAgICAgIHNlbGYudnJhbXNpemUg PSBpbnQodm1Db25maWdbJ3BsYXRmb3JtJ10uZ2V0KCd2aWRlb3JhbScsNCkp ICogMTAyNAogICAgICAgICBzZWxmLmlzX3N0dWJkb20gPSAoc2VsZi5rZXJu ZWwuZmluZCgnc3R1YmRvbScpID49IDApCiAgICAgICAgIHNlbGYuc3VwZXJw YWdlcyA9IGludCh2bUNvbmZpZ1snc3VwZXJwYWdlcyddKQorCXNlbGYuaHVn ZXBhZ2VfbnVtID0gaW50KHZtQ29uZmlnWydodWdlcGFnZV9udW0nXSkKIAog ICAgIGRlZiBidWlsZERvbWFpbihzZWxmKToKICAgICAgICAgc3RvcmVfZXZ0 Y2huID0gc2VsZi52bS5nZXRTdG9yZVBvcnQoKQpAQCAtNzI5LDYgKzczMSw3 IEBACiAgICAgICAgIGxvZy5kZWJ1ZygiZmVhdHVyZXMgICAgICAgPSAlcyIs IHNlbGYudm0uZ2V0RmVhdHVyZXMoKSkKICAgICAgICAgbG9nLmRlYnVnKCJm bGFncyAgICAgICAgICA9ICVkIiwgc2VsZi5mbGFncykKICAgICAgICAgbG9n LmRlYnVnKCJzdXBlcnBhZ2VzICAgICA9ICVkIiwgc2VsZi5zdXBlcnBhZ2Vz KQorCWxvZy5kZWJ1ZygiaHVnZXBhZ2VfbnVtICAgPSAlZCIsIHNlbGYuaHVn ZXBhZ2VfbnVtKQogICAgICAgICBpZiBhcmNoLnR5cGUgPT0gImlhNjQiOgog ICAgICAgICAgICAgbG9nLmRlYnVnKCJ2aHB0ICAgICAgICAgID0gJWQiLCBz ZWxmLnZocHQpCiAKQEAgLTc0Miw3ICs3NDUsOCBAQAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgICAgICAgPSBzZWxmLnZtLmdl dEZlYXR1cmVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm bGFncyAgICAgICAgICA9IHNlbGYuZmxhZ3MsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2aHB0ICAgICAgICAgICA9IHNlbGYudmhwdCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVycGFnZXMgICAgID0g c2VsZi5zdXBlcnBhZ2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3VwZXJwYWdlcyAgICAgPSBzZWxmLnN1cGVycGFnZXMsCisJCQkgICAg ICBodWdlcGFnZV9udW0gICA9IHNlbGYuaHVnZXBhZ2VfbnVtKQogCiAgICAg ZGVmIGdldEJpdFNpemUoc2VsZik6CiAgICAgICAgIHJldHVybiB4Yy5nZXRC aXRTaXplKGltYWdlICAgID0gc2VsZi5rZXJuZWwsCmRpZmYgLXIgNGUxMDhj ZjU2ZDA3IHRvb2xzL3B5dGhvbi94ZW4veG0vY3JlYXRlLmR0ZAotLS0gYS90 b29scy9weXRob24veGVuL3htL2NyZWF0ZS5kdGQJTW9uIERlYyAyNyAwODow MDowOSAyMDEwICswMDAwCisrKyBiL3Rvb2xzL3B5dGhvbi94ZW4veG0vY3Jl YXRlLmR0ZAlNb24gTWFyIDIxIDExOjI5OjI2IDIwMTEgKzA1MzAKQEAgLTU2 LDYgKzU2LDcgQEAKICAgICAgICAgICAgICAgICAgYWN0aW9uc19hZnRlcl9j cmFzaCAgICAlQ1JBU0hfQkVIQVZJT1VSOyAjUkVRVUlSRUQKICAgICAgICAg ICAgICAgICAgUENJX2J1cyAgICAgICAgICAgICAgICBDREFUQSAjUkVRVUlS RUQKICAgICAgICAgICAgICAgICAgc3VwZXJwYWdlcyAgICAgICAgICAgICBD REFUQSAjUkVRVUlSRUQKKwkJIGh1Z2VwYWdlX251bQkJQ0RBVEEgI1JFUVVJ UkVECiAgICAgICAgICAgICAgICAgIHNlY3VyaXR5X2xhYmVsICAgICAgICAg Q0RBVEEgI0lNUExJRUQ+CiAKIDwhRUxFTUVOVCBtZW1vcnkgRU1QVFk+IApk aWZmIC1yIDRlMTA4Y2Y1NmQwNyB0b29scy9weXRob24veGVuL3htL2NyZWF0 ZS5weQotLS0gYS90b29scy9weXRob24veGVuL3htL2NyZWF0ZS5weQlNb24g RGVjIDI3IDA4OjAwOjA5IDIwMTAgKzAwMDAKKysrIGIvdG9vbHMvcHl0aG9u L3hlbi94bS9jcmVhdGUucHkJTW9uIE1hciAyMSAxMToyOToyNiAyMDExICsw NTMwCkBAIC02ODAsNiArNjgwLDExIEBACiAgICAgICAgICAgIGZuPXNldF9p bnQsIGRlZmF1bHQ9MCwKICAgICAgICAgICAgdXNlPSJDcmVhdGUgZG9tYWlu IHdpdGggc3VwZXJwYWdlcyIpCiAKK2dvcHRzLnZhcignaHVnZXBhZ2VfbnVt JywgdmFsPSdOVU0nLAorICAgICAgICAgICBmbj1zZXRfaW50LCBkZWZhdWx0 PTAsCisgICAgICAgICAgIHVzZT0iRG9tYWluIHdpdGggaHVnZXBhZ2VzIHN1 cHBvcnQiKQorCisKIGRlZiBlcnIobXNnKToKICAgICAiIiJQcmludCBhbiBl cnJvciB0byBzdGRlcnIgYW5kIGV4aXQuCiAgICAgIiIiCkBAIC03NzAsNiAr Nzc1LDkgQEAKICAgICAgICAgY29uZmlnX2ltYWdlLmFwcGVuZChbJ2FyZ3Mn LCB2YWxzLmV4dHJhXSkKICAgICBpZiB2YWxzLnN1cGVycGFnZXM6CiAgICAg ICAgIGNvbmZpZ19pbWFnZS5hcHBlbmQoWydzdXBlcnBhZ2VzJywgdmFscy5z dXBlcnBhZ2VzXSkKKyAgICBpZiB2YWxzLmh1Z2VwYWdlX251bToKKyAgICAg ICAgY29uZmlnX2ltYWdlLmFwcGVuZChbJ2h1Z2VwYWdlX251bScsIHZhbHMu aHVnZXBhZ2VfbnVtXSkKKwogCiAgICAgaWYgdmFscy5idWlsZGVyID09ICdo dm0nOgogICAgICAgICBjb25maWd1cmVfaHZtKGNvbmZpZ19pbWFnZSwgdmFs cykgCmRpZmYgLXIgNGUxMDhjZjU2ZDA3IHRvb2xzL3B5dGhvbi94ZW4veG0v eGVuYXBpX2NyZWF0ZS5weQotLS0gYS90b29scy9weXRob24veGVuL3htL3hl bmFwaV9jcmVhdGUucHkJTW9uIERlYyAyNyAwODowMDowOSAyMDEwICswMDAw CisrKyBiL3Rvb2xzL3B5dGhvbi94ZW4veG0veGVuYXBpX2NyZWF0ZS5weQlN b24gTWFyIDIxIDExOjI5OjI2IDIwMTEgKzA1MzAKQEAgLTI4NSw2ICsyODUs OCBAQAogICAgICAgICAgICAgICAgIHZtLmF0dHJpYnV0ZXNbInMzX2ludGVn cml0eSJdLnZhbHVlLAogICAgICAgICAgICAgInN1cGVycGFnZXMiOgogICAg ICAgICAgICAgICAgIHZtLmF0dHJpYnV0ZXNbInN1cGVycGFnZXMiXS52YWx1 ZSwKKyAJICAgICJodWdlcGFnZV9udW0iOgorICAgICAgICAgICAgICAgIHZt LmF0dHJpYnV0ZXNbImh1Z2VwYWdlX251bSJdLnZhbHVlLAogICAgICAgICAg ICAgIm1lbW9yeV9zdGF0aWNfbWF4IjoKICAgICAgICAgICAgICAgICBnZXRf Y2hpbGRfbm9kZV9hdHRyaWJ1dGUodm0sICJtZW1vcnkiLCAic3RhdGljX21h eCIpLAogICAgICAgICAgICAgIm1lbW9yeV9zdGF0aWNfbWluIjoKQEAgLTY5 Nyw2ICs2OTksOCBAQAogICAgICAgICAgICAgPSBzdHIoZ2V0X2NoaWxkX2J5 X25hbWUoY29uZmlnLCAiczNfaW50ZWdyaXR5IiwgMCkpCiAgICAgICAgIHZt LmF0dHJpYnV0ZXNbInN1cGVycGFnZXMiXSBcCiAgICAgICAgICAgICA9IHN0 cihnZXRfY2hpbGRfYnlfbmFtZShjb25maWcsICJzdXBlcnBhZ2VzIiwgMCkp CisJdm0uYXR0cmlidXRlc1siaHVnZXBhZ2VfbnVtIl0gXAorICAgICAgICAg ICAgPSBzdHIoZ2V0X2NoaWxkX2J5X25hbWUoY29uZmlnLCAiaHVnZXBhZ2Vf bnVtIiwgMCkpCiAgICAgICAgIHZtLmF0dHJpYnV0ZXNbInBvb2xfbmFtZSJd IFwKICAgICAgICAgICAgID0gc3RyKGdldF9jaGlsZF9ieV9uYW1lKGNvbmZp ZywgInBvb2xfbmFtZSIsICJQb29sLTAiKSkKIApkaWZmIC1yIDRlMTA4Y2Y1 NmQwNyB4ZW4vYXJjaC94ODYvc2V0dXAuYwotLS0gYS94ZW4vYXJjaC94ODYv c2V0dXAuYwlNb24gRGVjIDI3IDA4OjAwOjA5IDIwMTAgKzAwMDAKKysrIGIv eGVuL2FyY2gveDg2L3NldHVwLmMJTW9uIE1hciAyMSAxMToyOToyNiAyMDEx ICswNTMwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8YXNtL21hY2gt Z2VuZXJpYy9tYWNoX2FwaWMuaD4gLyogZm9yIGdlbmVyaWNfYXBpY19wcm9i ZSAqLwogI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogI2luY2x1ZGUgPHhlbi9j cHUuaD4KKwogCiBleHRlcm4gdTE2IGJvb3RfZWRpZF9jYXBzOwogZXh0ZXJu IHU4IGJvb3RfZWRpZF9pbmZvWzEyOF07CkBAIC02MCw3ICs2MSwxMCBAQAog Lyogb3B0X3dhdGNoZG9nOiBJZiB0cnVlLCBydW4gYSB3YXRjaGRvZyBOTUkg b24gZWFjaCBwcm9jZXNzb3IuICovCiBzdGF0aWMgYm9vbF90IF9faW5pdGRh dGEgb3B0X3dhdGNoZG9nOwogYm9vbGVhbl9wYXJhbSgid2F0Y2hkb2ciLCBv cHRfd2F0Y2hkb2cpOwotCisvL2EyazI6CitzdGF0aWMgdW5zaWduZWQgaW50 IF9faW5pdGRhdGEgZG9tMF9odWdlcGFnZXM9MDsKK2ludGVnZXJfcGFyYW0o ImRvbTBfaHVnZXBhZ2VzIiwgZG9tMF9odWdlcGFnZXMpOworaW50IGFsbG9j YXRlX2h1Z2VwYWdlcyhzdHJ1Y3QgZG9tYWluICosaW50LGludCk7CiAvKiAq KioqIExpbnV4IGNvbmZpZyBvcHRpb246IHByb3BhZ2F0ZWQgdG8gZG9tYWlu MC4gKi8KIC8qICJhY3BpPW9mZiI6ICAgIFNpc2FibGVzIGJvdGggQUNQSSB0 YWJsZSBwYXJzaW5nIGFuZCBpbnRlcnByZXRlci4gKi8KIC8qICJhY3BpPWZv cmNlIjogIE92ZXJyaWRlIHRoZSBkaXNhYmxlIGJsYWNrbGlzdC4gICAgICAg ICAgICAgICAgICAgKi8KQEAgLTEyNTksNyArMTI2MywxMCBAQAogICAgIAog ICAgIGlmICggIXRib290X3Byb3RlY3RfbWVtX3JlZ2lvbnMoKSApCiAgICAg ICAgIHBhbmljKCJDb3VsZCBub3QgcHJvdGVjdCBUWFQgbWVtb3J5IHJlZ2lv bnNcbiIpOworICAgIC8vYTJrMjoKIAorICAgIC8vaW5pdF9odWdlcGFnZXNf cG9vbCgpOworICAgIHByaW50aygiYTJrMjpEb20wIGh1Z2VwYWdlcyBhcmUg OiV1XG4iLGRvbTBfaHVnZXBhZ2VzKTsKICAgICAvKiBDcmVhdGUgaW5pdGlh bCBkb21haW4gMC4gKi8KICAgICBkb20wID0gZG9tYWluX2NyZWF0ZSgwLCBE T01DUkZfczNfaW50ZWdyaXR5LCBET00wX1NTSURSRUYpOwogICAgIGlmICgg KGRvbTAgPT0gTlVMTCkgfHwgKGFsbG9jX2RvbTBfdmNwdTAoKSA9PSBOVUxM KSApCkBAIC0xMjY3LDcgKzEyNzQsNyBAQAogCiAgICAgZG9tMC0+aXNfcHJp dmlsZWdlZCA9IDE7CiAgICAgZG9tMC0+dGFyZ2V0ID0gTlVMTDsKLQorICAg IGFsbG9jYXRlX2h1Z2VwYWdlcyhkb20wLGRvbTBfaHVnZXBhZ2VzLFNVUEVS UEFHRV9PUkRFUik7CiAgICAgLyogR3JhYiB0aGUgRE9NMCBjb21tYW5kIGxp bmUuICovCiAgICAgY21kbGluZSA9IChjaGFyICopKG1vZFswXS5zdHJpbmcg PyBfX3ZhKG1vZFswXS5zdHJpbmcpIDogTlVMTCk7CiAgICAgaWYgKCAoY21k bGluZSAhPSBOVUxMKSB8fCAoa2V4dHJhICE9IE5VTEwpICkKZGlmZiAtciA0 ZTEwOGNmNTZkMDcgeGVuL2NvbW1vbi9kb21haW4uYwotLS0gYS94ZW4vY29t bW9uL2RvbWFpbi5jCU1vbiBEZWMgMjcgMDg6MDA6MDkgMjAxMCArMDAwMAor KysgYi94ZW4vY29tbW9uL2RvbWFpbi5jCU1vbiBNYXIgMjEgMTE6Mjk6MjYg MjAxMSArMDUzMApAQCAtMjQwLDkgKzI0MCw5IEBACiAgICAgc3Bpbl9sb2Nr X2luaXQoJmQtPmh5cGVyY2FsbF9kZWFkbG9ja19tdXRleCk7CiAgICAgSU5J VF9QQUdFX0xJU1RfSEVBRCgmZC0+cGFnZV9saXN0KTsKICAgICBJTklUX1BB R0VfTElTVF9IRUFEKCZkLT54ZW5wYWdlX2xpc3QpOwotCisgICAgSU5JVF9Q QUdFX0xJU1RfSEVBRCgmZC0+aHVnZXBhZ2VfbGlzdCk7CiAgICAgc3Bpbl9s b2NrX2luaXQoJmQtPm5vZGVfYWZmaW5pdHlfbG9jayk7Ci0KKyAgICBkLT5o dWdlcGFnZV9udW09MDsKICAgICBzcGluX2xvY2tfaW5pdCgmZC0+c2h1dGRv d25fbG9jayk7CiAgICAgZC0+c2h1dGRvd25fY29kZSA9IC0xOwogCkBAIC00 NDEsNyArNDQxLDcgQEAKIGludCBkb21haW5fa2lsbChzdHJ1Y3QgZG9tYWlu ICpkKQogewogICAgIGludCByYyA9IDA7Ci0KKyAgICBzdHJ1Y3QgcGFnZV9p bmZvKiBwYWdlOwogICAgIGlmICggZCA9PSBjdXJyZW50LT5kb21haW4gKQog ICAgICAgICByZXR1cm4gLUVJTlZBTDsKIApAQCAtNDUxLDYgKzQ1MSwxMiBA QAogICAgIGNhc2UgRE9NRFlJTkdfYWxpdmU6CiAgICAgICAgIGRvbWFpbl9w YXVzZShkKTsKICAgICAgICAgZC0+aXNfZHlpbmcgPSBET01EWUlOR19keWlu ZzsKKyAgICAgICAgIHdoaWxlKCFwYWdlX2xpc3RfZW1wdHkoJihkLT5odWdl cGFnZV9saXN0KSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgCisgICAg ICAgICAgICAgICAgcGFnZT1wYWdlX2xpc3RfcmVtb3ZlX2hlYWQoJihkLT5o dWdlcGFnZV9saXN0KSk7CisgICAgICAgICAgICAgICAgZnJlZV9kb21oZWFw X3BhZ2VzKHBhZ2UsU1VQRVJQQUdFX09SREVSKTsKKyAgICAgICAgICAgIH0K ICAgICAgICAgc3Bpbl9iYXJyaWVyKCZkLT5kb21haW5fbG9jayk7CiAgICAg ICAgIGV2dGNobl9kZXN0cm95KGQpOwogICAgICAgICBnbnR0YWJfcmVsZWFz ZV9tYXBwaW5ncyhkKTsKZGlmZiAtciA0ZTEwOGNmNTZkMDcgeGVuL2NvbW1v bi9tZW1vcnkuYwotLS0gYS94ZW4vY29tbW9uL21lbW9yeS5jCU1vbiBEZWMg MjcgMDg6MDA6MDkgMjAxMCArMDAwMAorKysgYi94ZW4vY29tbW9uL21lbW9y eS5jCU1vbiBNYXIgMjEgMTE6Mjk6MjYgMjAxMSArMDUzMApAQCAtMjEsNiAr MjEsNyBAQAogI2luY2x1ZGUgPHhlbi9lcnJuby5oPgogI2luY2x1ZGUgPHhl bi90bWVtLmg+CiAjaW5jbHVkZSA8eGVuL3RtZW1feGVuLmg+CisKICNpbmNs dWRlIDxhc20vY3VycmVudC5oPgogI2luY2x1ZGUgPGFzbS9oYXJkaXJxLmg+ CiAjaWZkZWYgQ09ORklHX1g4NgpAQCAtODksOCArOTAsNDQgQEAKICBvdXQ6 CiAgICAgYS0+bnJfZG9uZSA9IGk7CiB9CitpbnQgYWxsb2NhdGVfaHVnZXBh Z2VzKHN0cnVjdCBkb21haW4gKmQsaW50IGh1Z2VwYWdlX251bSxpbnQgb3Jk ZXIpeworICAgIGludCBpPTA7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFn ZTsKKyAgICBpZihvcmRlciE9U1VQRVJQQUdFX09SREVSKQorICAgIHsKKyAg ICAgICAgZ290byBvdXRfaHVnZTsgCisgICAgfQorICAgIGZvcihpPTA7aTxo dWdlcGFnZV9udW07aSsrKXsKKyAgICAgICAgcGFnZSA9IGFsbG9jX2RvbWhl YXBfcGFnZXMoTlVMTCwgb3JkZXIsMCk7CisgICAgICAgIGlmKHBhZ2U9PU5V TEwpeworICAgICAgICAgICAgcHJpbnRrKCJhMmsyOiBjb3VsZG4ndCBhbGxv Y2F0ZSBodWdlcGFnZXMgZm9yIHRoZSBEb21haW4gJWQgXG4iLGQtPmRvbWFp bl9pZCk7CisgICAgICAgICAgICBnb3RvIG91dF9odWdlOworICAgICAgICB9 CisgICAgICAgIGlmICggZC0+ZG9tYWluX2lkICl7CisgICAgICAgICAgICBp ZiAoIHVubGlrZWx5KChkLT50b3RfcGFnZXMgKyAoMSA8PCBvcmRlcikpID4g ZC0+bWF4X3BhZ2VzKSl7CisgICAgICAgICAgICAgICAgIGlmICggIW9wdF90 bWVtIHx8IG9yZGVyICE9IDAgfHwgZC0+dG90X3BhZ2VzICE9IGQtPm1heF9w YWdlcyApCisgICAgICAgICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0df SU5GTywgIk92ZXItYWxsb2NhdGlvbiBmb3IgZG9tYWluICV1OiAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiJXUgPiAldVxuIiwgZC0+ZG9t YWluX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+dG90 X3BhZ2VzICsgKDEgPDwgb3JkZXIpLCBkLT5tYXhfcGFnZXMpOworICAgICAg ICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgIH0KIAotc3RhdGlj IHZvaWQgcG9wdWxhdGVfcGh5c21hcChzdHJ1Y3QgbWVtb3BfYXJncyAqYSkK KyAgICAgICAgICAgIGlmICggdW5saWtlbHkoZC0+dG90X3BhZ2VzID09IDAp ICkKKyAgICAgICAgICAgICAgICBnZXRfa25vd25hbGl2ZV9kb21haW4oZCk7 CisgICAgICAgICAgICBkLT50b3RfcGFnZXMgKz0gMSA8PCBvcmRlcjsKKyAg ICAgICAgIH0KKyAgICAgICAgIHBhZ2VfbGlzdF9hZGQocGFnZSwmKGQtPmh1 Z2VwYWdlX2xpc3QpKTsgICAgCisgICAgfQorICAgIGdvdG8gb3V0X2h1Z2U7 CitlcnI6CisgICAgZnJlZV9kb21oZWFwX3BhZ2VzKHBhZ2Usb3JkZXIpOwor ICAgIG91dF9odWdlOgorICAgIGQtPmh1Z2VwYWdlX251bSs9aTsKKyAgICBy ZXR1cm4gaTsKK30KKworCitzdGF0aWMgdm9pZCBwb3B1bGF0ZV9waHlzbWFw KHN0cnVjdCBtZW1vcF9hcmdzICphLGludCBmbGFncykKIHsKICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlOwogICAgIHVuc2lnbmVkIGxvbmcgaSwgajsK QEAgLTEyMyw3ICsxNjAsMjYgQEAKICAgICAgICAgfQogICAgICAgICBlbHNl CiAgICAgICAgIHsKLSAgICAgICAgICAgIHBhZ2UgPSBhbGxvY19kb21oZWFw X3BhZ2VzKGQsIGEtPmV4dGVudF9vcmRlciwgYS0+bWVtZmxhZ3MpOworICAg ICAgICAgICAgaWYoZmxhZ3MpeworICAgICAgICAgICAgICAgIC8vYTJrMjoK KyAgICAgICAgICAgICAgICBwYWdlPXBhZ2VfbGlzdF9yZW1vdmVfaGVhZCgm KGQtPmh1Z2VwYWdlX2xpc3QpKTsKKyAgICAgICAgICAgICAgICBpZihwYWdl PT1OVUxMKXsKKyAgICAgICAgICAgICAgICAgICAgLy8gZmxhZ3M9MDsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoZC0+ZG9tYWlu X2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgZC0+dG90X3BhZ2VzLT0x IDw8IGEtPmV4dGVudF9vcmRlcjsKKyAgICAgICAgICAgICAgICAgICAgaWYo YXNzaWduX3BhZ2VzKGQscGFnZSxhLT5leHRlbnRfb3JkZXIsYS0+bWVtZmxh Z3MpPT0tMSl7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoImEy azI6IGh1Z2VwYWdlIGFzc2lnbm1lbnQgdG8gZG9tYWluIGZhaWxlZC5cbiIp OworCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBpZighZmxhZ3MpCisgICAgICAgICAgICAg ICAgcGFnZSA9IGFsbG9jX2RvbWhlYXBfcGFnZXMoZCwgYS0+ZXh0ZW50X29y ZGVyLCBhLT5tZW1mbGFncyk7CisgICAgICAgICAgIAogICAgICAgICAgICAg aWYgKCB1bmxpa2VseShwYWdlID09IE5VTEwpICkgCiAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgaWYgKCAhb3B0X3RtZW0gfHwgKGEtPmV4dGVu dF9vcmRlciAhPSAwKSApCkBAIC01MTEsOSArNTY3LDEzIEBACiAKICAgICBz d2l0Y2ggKCBvcCApCiAgICAgeworICAgIGNhc2UgWEVOTUVNX2h1Z2VwYWdl X2NudDoKICAgICBjYXNlIFhFTk1FTV9pbmNyZWFzZV9yZXNlcnZhdGlvbjoK ICAgICBjYXNlIFhFTk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlvbjoKICAgICBj YXNlIFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwOgorICAgIGNhc2UgWEVOTUVN X3BvcHVsYXRlX2h1Z2VtYXA6CisgICAgY2FzZSBYRU5NRU1fcG9wdWxhdGVf aHVnZXBhZ2U6CisgICAgCiAgICAgICAgIHN0YXJ0X2V4dGVudCA9IGNtZCA+ PiBNRU1PUF9FWFRFTlRfU0hJRlQ7CiAKICAgICAgICAgaWYgKCBjb3B5X2Zy b21fZ3Vlc3QoJnJlc2VydmF0aW9uLCBhcmcsIDEpICkKQEAgLTU4MSw4ICs2 NDEsMTcgQEAKICAgICAgICAgY2FzZSBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2 YXRpb246CiAgICAgICAgICAgICBkZWNyZWFzZV9yZXNlcnZhdGlvbigmYXJn cyk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBYRU5NRU1f cG9wdWxhdGVfaHVnZXBhZ2U6CisgICAgICAgICAgICBwb3B1bGF0ZV9waHlz bWFwKCZhcmdzLDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2UgWEVOTUVNX3BvcHVsYXRlX2h1Z2VtYXA6CisgICAgICAgICAgICBhcmdz Lm5yX2RvbmU9YWxsb2NhdGVfaHVnZXBhZ2VzKGFyZ3MuZG9tYWluLGFyZ3Mu bnJfZXh0ZW50cyxhcmdzLmV4dGVudF9vcmRlcik7CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgY2FzZSBYRU5NRU1faHVnZXBhZ2VfY250OgorICAg ICAgICAgICAgYXJncy5ucl9kb25lPWQtPmh1Z2VwYWdlX251bTsKKyAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OiAvKiBYRU5NRU1fcG9w dWxhdGVfcGh5c21hcCAqLwotICAgICAgICAgICAgcG9wdWxhdGVfcGh5c21h cCgmYXJncyk7CisgICAgICAgICAgICBwb3B1bGF0ZV9waHlzbWFwKCZhcmdz LDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNTk2 LDcgKzY2NSw3IEBACiAgICAgICAgICAgICAgICAgb3AgfCAocmMgPDwgTUVN T1BfRVhURU5UX1NISUZUKSwgYXJnKTsKIAogICAgICAgICBicmVhazsKLQor ICAgIAogICAgIGNhc2UgWEVOTUVNX2V4Y2hhbmdlOgogICAgICAgICByYyA9 IG1lbW9yeV9leGNoYW5nZShndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9t ZW1vcnlfZXhjaGFuZ2VfdCkpOwogICAgICAgICBicmVhazsKZGlmZiAtciA0 ZTEwOGNmNTZkMDcgeGVuL2luY2x1ZGUvcHVibGljL21lbW9yeS5oCi0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaAlNb24gRGVjIDI3IDA4OjAw OjA5IDIwMTAgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL21lbW9y eS5oCU1vbiBNYXIgMjEgMTE6Mjk6MjYgMjAxMSArMDUzMApAQCAtMzcsNiAr MzcsOSBAQAogI2RlZmluZSBYRU5NRU1faW5jcmVhc2VfcmVzZXJ2YXRpb24g MAogI2RlZmluZSBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24gMQogI2Rl ZmluZSBYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCAgICAgNgorI2RlZmluZSBY RU5NRU1fcG9wdWxhdGVfaHVnZXBhZ2UgICAgMTkKKyNkZWZpbmUgWEVOTUVN X2h1Z2VwYWdlX2NudCAgICAgICAgIDIwCisjZGVmaW5lIFhFTk1FTV9wb3B1 bGF0ZV9odWdlbWFwICAgICAyMQogCiAjaWYgX19YRU5fSU5URVJGQUNFX1ZF UlNJT05fXyA+PSAweDAwMDMwMjA5CiAvKgpkaWZmIC1yIDRlMTA4Y2Y1NmQw NyB4ZW4vaW5jbHVkZS94ZW4vbW0uaAotLS0gYS94ZW4vaW5jbHVkZS94ZW4v bW0uaAlNb24gRGVjIDI3IDA4OjAwOjA5IDIwMTAgKzAwMDAKKysrIGIveGVu L2luY2x1ZGUveGVuL21tLmgJTW9uIE1hciAyMSAxMToyOToyNiAyMDExICsw NTMwCkBAIC05NiwxNCArOTYsMTkgQEAKICNlbmRpZgogCiAjZGVmaW5lIHBh Z2VfbGlzdF9lbnRyeSBsaXN0X2hlYWQKKyNkZWZpbmUgaHVnZXBhZ2VfbGlz dF9lbnRyeSBsaXN0X2hlYWQKIAogI2luY2x1ZGUgPGFzbS9tbS5oPgogCiAj aWZuZGVmIHBhZ2VfbGlzdF9lbnRyeQogc3RydWN0IHBhZ2VfbGlzdF9oZWFk CiB7Ci0gICAgc3RydWN0IHBhZ2VfaW5mbyAqbmV4dCwgKnRhaWw7CisgICAg c3RydWN0IHBhZ2VfaW5mbyAqbmV4dCwgKnRhaWw7IAogfTsKKy8qc3RydWN0 IGh1Z2VwYWdlX2xpc3RfaGVhZAoreworICBzdHJ1Y3QgaHVnZXBhZ2VfaW5m byAqbmV4dCwqdGFpbDsKKyAgfTsqLwogLyogVGhlc2UgbXVzdCBvbmx5IGhh dmUgaW5zdGFuY2VzIGluIHN0cnVjdCBwYWdlX2luZm8uICovCiAjIGRlZmlu ZSBwYWdlX2xpc3RfZW50cnkKIApAQCAtMzI2LDUgKzMzMSwxNSBAQAogI2Rl ZmluZSBSQU1fVFlQRV9BQ1BJICAgICAgICAgMHgwMDAwMDAwOAogLyogVFJV RSBpZiB0aGUgd2hvbGUgcGFnZSBhdCBAbWZuIGlzIG9mIHRoZSByZXF1ZXN0 ZWQgUkFNIHR5cGUocykgYWJvdmUuICovCiBpbnQgcGFnZV9pc19yYW1fdHlw ZSh1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgbG9uZyBtZW1fdHlwZSk7 CisvKgorI2RlZmluZSBodWdlcGFnZV9saXN0X2hlYWQgbGlzdF9oZWFkCiAK Ky8vYTJrMgorc3RydWN0IGh1Z2VwYWdlX2luZm8KK3sKKyAgbWZuX3QgbWZu OworICBodWdlcGFnZV9saXN0X2VudHJ5IGh1Z2VwYWdlX2xpc3Q7CisKKwor ICB9OyovCiAjZW5kaWYgLyogX19YRU5fTU1fSF9fICovCmRpZmYgLXIgNGUx MDhjZjU2ZDA3IHhlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCi0tLSBhL3hlbi9p bmNsdWRlL3hlbi9zY2hlZC5oCU1vbiBEZWMgMjcgMDg6MDA6MDkgMjAxMCAr MDAwMAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAlNb24gTWFyIDIx IDExOjI5OjI2IDIwMTEgKzA1MzAKQEAgLTIxMSw2ICsyMTEsOSBAQAogICAg IHNwaW5sb2NrX3QgICAgICAgcGFnZV9hbGxvY19sb2NrOyAvKiBwcm90ZWN0 cyBhbGwgdGhlIGZvbGxvd2luZyBmaWVsZHMgICovCiAgICAgc3RydWN0IHBh Z2VfbGlzdF9oZWFkIHBhZ2VfbGlzdDsgIC8qIGxpbmtlZCBsaXN0LCBvZiBz aXplIHRvdF9wYWdlcyAgICAgKi8KICAgICBzdHJ1Y3QgcGFnZV9saXN0X2hl YWQgeGVucGFnZV9saXN0OyAvKiBsaW5rZWQgbGlzdCAoc2l6ZSB4ZW5oZWFw X3BhZ2VzKSAqLworICAgIHN0cnVjdCBwYWdlX2xpc3RfaGVhZCBodWdlcGFn ZV9saXN0OyAvKmEyazI6RnJlZSBodWdlcGFnZSBsaXN0Ki8KKyAgICB1bnNp Z25lZCBpbnQgICAgIGh1Z2VwYWdlX251bTsgICAgLyphMmsyOiAgKi8KKwog ICAgIHVuc2lnbmVkIGludCAgICAgdG90X3BhZ2VzOyAgICAgICAvKiBudW1i ZXIgb2YgcGFnZXMgY3VycmVudGx5IHBvc3Nlc2VkICovCiAgICAgdW5zaWdu ZWQgaW50ICAgICBtYXhfcGFnZXM7ICAgICAgIC8qIG1heGltdW0gdmFsdWUg Zm9yIHRvdF9wYWdlcyAgICAgICAgKi8KICAgICBhdG9taWNfdCAgICAgICAg IHNocl9wYWdlczsgICAgICAgLyogbnVtYmVyIG9mIHNoYXJlZCBwYWdlcyAg ICAgICAgICAgICAqLwo= --0-1537624673-1300741311=:78622 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --0-1537624673-1300741311=:78622--