[PATCH v9 01/19] xen: add PV/PVH kernel entry point
QWRkIHRoZSBQVi9QVkggZW50cnkgcG9pbnQgYW5kIHRoZSBsb3cgbGV2ZWwgZnVuY3Rpb25zIGZv
ciBQVkgKaW5pdGlhbGl6YXRpb24uCi0tLQogc3lzL2FtZDY0L2FtZDY0L2xvY29yZS5TICAgICB8
ICAgIDEgKwogc3lzL2FtZDY0L2FtZDY0L3hlbi1sb2NvcmUuUyB8ICAgODMgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIHN5cy9hbWQ2NC9pbmNsdWRlL2FzbWFjcm9zLmggfCAgIDI2ICsr
KysrKysrKwogc3lzL2NvbmYvZmlsZXMuYW1kNjQgICAgICAgICB8ICAgIDIgKwogc3lzL2kzODYv
eGVuL3hlbl9tYWNoZGVwLmMgICB8ICAgIDIgKwogc3lzL3g4Ni94ZW4vaHZtLmMgICAgICAgICAg
ICB8ICAgIDEgKwogc3lzL3g4Ni94ZW4vcHYuYyAgICAgICAgICAgICB8ICAxMTkgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzeXMveGVuL3hlbi1vcy5oICAgICAg
ICAgICAgIHwgICAgNCArKwogOCBmaWxlcyBjaGFuZ2VkLCAyMzggaW5zZXJ0aW9ucygrKSwgMCBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXMvYW1kNjQvYW1kNjQveGVuLWxvY29y
ZS5TCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzL3g4Ni94ZW4vcHYuYwoKZGlmZiAtLWdpdCBhL3N5
cy9hbWQ2NC9hbWQ2NC9sb2NvcmUuUyBiL3N5cy9hbWQ2NC9hbWQ2NC9sb2NvcmUuUwppbmRleCA1
NWNkYTNhLi40YWNlZjk3IDEwMDY0NAotLS0gYS9zeXMvYW1kNjQvYW1kNjQvbG9jb3JlLlMKKysr
IGIvc3lzL2FtZDY0L2FtZDY0L2xvY29yZS5TCkBAIC04NCw1ICs4NCw2IEBAIE5PTl9HUFJPRl9F
TlRSWShidGV4dCkKIAogCS5ic3MKIAlBTElHTl9EQVRBCQkJLyoganVzdCB0byBiZSBzdXJlICov
CisJLmdsb2JsCWJvb3RzdGFjawogCS5zcGFjZQkweDEwMDAJCQkvKiBzcGFjZSBmb3IgYm9vdHN0
YWNrIC0gdGVtcG9yYXJ5IHN0YWNrICovCiBib290c3RhY2s6CmRpZmYgLS1naXQgYS9zeXMvYW1k
NjQvYW1kNjQveGVuLWxvY29yZS5TIGIvc3lzL2FtZDY0L2FtZDY0L3hlbi1sb2NvcmUuUwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDI4N2M0Ci0tLSAvZGV2L251bGwKKysr
IGIvc3lzL2FtZDY0L2FtZDY0L3hlbi1sb2NvcmUuUwpAQCAtMCwwICsxLDgzIEBACisvKi0KKyAq
IENvcHlyaWdodCAoYykgMjAwMyBQZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz4KKyAqIENv
cHlyaWdodCAoYykgMjAxMyBSb2dlciBQYXUgTW9ubmUgPHJveWdlckBGcmVlQlNELm9yZz4KKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisgKi8KKworI2luY2x1ZGUgPG1h
Y2hpbmUvYXNtYWNyb3MuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3BzbC5oPgorI2luY2x1ZGUgPG1h
Y2hpbmUvcG1hcC5oPgorI2luY2x1ZGUgPG1hY2hpbmUvc3BlY2lhbHJlZy5oPgorCisjaW5jbHVk
ZSA8eGVuL3hlbi1vcy5oPgorI2RlZmluZSBfX0FTU0VNQkxZX18KKyNpbmNsdWRlIDx4ZW4vaW50
ZXJmYWNlL2VsZm5vdGUuaD4KKworI2luY2x1ZGUgImFzc3ltLnMiCisKKy5zZWN0aW9uIF9feGVu
X2d1ZXN0CisJRUxGTk9URShYZW4sIFhFTl9FTEZOT1RFX0dVRVNUX09TLCAgICAgICAuYXNjaXos
ICJGcmVlQlNEIikKKwlFTEZOT1RFKFhlbiwgWEVOX0VMRk5PVEVfR1VFU1RfVkVSU0lPTiwgIC5h
c2NpeiwgIkhFQUQiKQorCUVMRk5PVEUoWGVuLCBYRU5fRUxGTk9URV9YRU5fVkVSU0lPTiwgICAg
LmFzY2l6LCAieGVuLTMuMCIpCisJRUxGTk9URShYZW4sIFhFTl9FTEZOT1RFX1ZJUlRfQkFTRSwg
ICAgICAucXVhZCwgIEtFUk5CQVNFKQorCUVMRk5PVEUoWGVuLCBYRU5fRUxGTk9URV9QQUREUl9P
RkZTRVQsICAgLnF1YWQsICBLRVJOQkFTRSkgLyogWGVuIGhvbm91cnMgZWxmLT5wX3BhZGRyOyBj
b21wZW5zYXRlIGZvciB0aGlzICovCisJRUxGTk9URShYZW4sIFhFTl9FTEZOT1RFX0VOVFJZLCAg
ICAgICAgICAucXVhZCwgIHhlbl9zdGFydCkKKwlFTEZOT1RFKFhlbiwgWEVOX0VMRk5PVEVfSFlQ
RVJDQUxMX1BBR0UsIC5xdWFkLAkgaHlwZXJjYWxsX3BhZ2UpCisJRUxGTk9URShYZW4sIFhFTl9F
TEZOT1RFX0hWX1NUQVJUX0xPVywgICAucXVhZCwgIEhZUEVSVklTT1JfVklSVF9TVEFSVCkKKwlF
TEZOT1RFKFhlbiwgWEVOX0VMRk5PVEVfRkVBVFVSRVMsICAgICAgIC5hc2NpeiwgIndyaXRhYmxl
X2Rlc2NyaXB0b3JfdGFibGVzfGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwfHN1cGVydmlzb3JfbW9k
ZV9rZXJuZWx8aHZtX2NhbGxiYWNrX3ZlY3RvciIpCisJRUxGTk9URShYZW4sIFhFTl9FTEZOT1RF
X1BBRV9NT0RFLCAgICAgICAuYXNjaXosICJ5ZXMiKQorCUVMRk5PVEUoWGVuLCBYRU5fRUxGTk9U
RV9MMV9NRk5fVkFMSUQsICAgLmxvbmcsICBQR19WLCBQR19WKQorCUVMRk5PVEUoWGVuLCBYRU5f
RUxGTk9URV9MT0FERVIsICAgICAgICAgLmFzY2l6LCAiZ2VuZXJpYyIpCisJRUxGTk9URShYZW4s
IFhFTl9FTEZOT1RFX1NVU1BFTkRfQ0FOQ0VMLCAubG9uZywgIDApCisJRUxGTk9URShYZW4sIFhF
Tl9FTEZOT1RFX0JTRF9TWU1UQUIsCSAuYXNjaXosICJ5ZXMiKQorCisJLnRleHQKKy5wMmFsaWdu
IFBBR0VfU0hJRlQsIDB4OTAJLyogSHlwZXJjYWxsX3BhZ2UgbmVlZHMgdG8gYmUgUEFHRSBhbGln
bmVkICovCisKK05PTl9HUFJPRl9FTlRSWShoeXBlcmNhbGxfcGFnZSkKKwkuc2tpcAkweDEwMDAs
IDB4OTAJLyogRmlsbCB3aXRoICJub3AicyAqLworCitOT05fR1BST0ZfRU5UUlkoeGVuX3N0YXJ0
KQorCS8qIERvbid0IHRydXN0IHdoYXQgdGhlIGxvYWRlciBnaXZlcyBmb3IgcmZsYWdzLiAqLwor
CXB1c2hxCSRQU0xfS0VSTkVMCisJcG9wZnEKKworCS8qIFBhcmFtZXRlcnMgZm9yIHRoZSB4ZW4g
aW5pdCBmdW5jdGlvbiAqLworCW1vdnEJJXJzaSwgJXJkaQkJLyogc2hhcmVkX2luZm8gKGFyZyAx
KSAqLworCW1vdnEJJXJzcCwgJXJzaQkJLyogeGVuc3RhY2sgICAgKGFyZyAyKSAqLworCisJLyog
VXNlIG91ciBvd24gc3RhY2sgKi8KKwltb3ZxCSRib290c3RhY2ssJXJzcAorCXhvcmwJJWVicCwg
JWVicAorCisJLyogdV9pbnQ2NF90IGhhbW1lcl90aW1lX3hlbihzdGFydF9pbmZvX3QgKnNpLCB1
X2ludDY0X3QgeGVuc3RhY2spOyAqLworCWNhbGwJaGFtbWVyX3RpbWVfeGVuCisJbW92cQklcmF4
LCAlcnNwCQkvKiBzZXQgdXAga3N0YWNrIGZvciBtaV9zdGFydHVwKCkgKi8KKwljYWxsCW1pX3N0
YXJ0dXAJCS8qIGF1dG9jb25maWd1cmF0aW9uLCBtb3VudHJvb3QgZXRjICovCisKKwkvKiBOT1RS
RUFDSEVEICovCiswOglobHQKKwlqbXAgCTBiCmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvaW5jbHVk
ZS9hc21hY3Jvcy5oIGIvc3lzL2FtZDY0L2luY2x1ZGUvYXNtYWNyb3MuaAppbmRleCAxZmI1OTJh
Li5jZThkY2U0IDEwMDY0NAotLS0gYS9zeXMvYW1kNjQvaW5jbHVkZS9hc21hY3Jvcy5oCisrKyBi
L3N5cy9hbWQ2NC9pbmNsdWRlL2FzbWFjcm9zLmgKQEAgLTIwMSw0ICsyMDEsMzAgQEAKIAogI2Vu
ZGlmIC8qIExPQ09SRSAqLwogCisjaWZkZWYgX19TVERDX18KKyNkZWZpbmUgRUxGTk9URShuYW1l
LCB0eXBlLCBkZXNjdHlwZSwgZGVzY2RhdGEuLi4pIFwKKy5wdXNoc2VjdGlvbiAubm90ZS5uYW1l
ICAgICAgICAgICAgICAgICA7ICAgICAgIFwKKyAgLmFsaWduIDQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7ICAgICAgIFwKKyAgLmxvbmcgMmYgLSAxZiAgICAgICAgIC8qIG5hbWVzeiAq
LyAgICA7ICAgICAgIFwKKyAgLmxvbmcgNGYgLSAzZiAgICAgICAgIC8qIGRlc2NzeiAqLyAgICA7
ICAgICAgIFwKKyAgLmxvbmcgdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ICAgICAg
IFwKKzE6LmFzY2l6ICNuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICA7ICAgICAgIFwKKzI6
LmFsaWduIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ICAgICAgIFwKKzM6ZGVzY3R5
cGUgZGVzY2RhdGEgICAgICAgICAgICAgICAgICAgICA7ICAgICAgIFwKKzQ6LmFsaWduIDQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7ICAgICAgIFwKKy5wb3BzZWN0aW9uCisjZWxzZSAv
KiAhX19TVERDX18sIGkuZS4gLXRyYWRpdGlvbmFsICovCisjZGVmaW5lIEVMRk5PVEUobmFtZSwg
dHlwZSwgZGVzY3R5cGUsIGRlc2NkYXRhKSBcCisucHVzaHNlY3Rpb24gLm5vdGUubmFtZSAgICAg
ICAgICAgICAgICAgOyAgICAgICBcCisgIC5hbGlnbiA0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOyAgICAgICBcCisgIC5sb25nIDJmIC0gMWYgICAgICAgICAvKiBuYW1lc3ogKi8gICAg
OyAgICAgICBcCisgIC5sb25nIDRmIC0gM2YgICAgICAgICAvKiBkZXNjc3ogKi8gICAgOyAgICAg
ICBcCisgIC5sb25nIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyAgICAgICBcCisx
Oi5hc2NpeiAibmFtZSIgICAgICAgICAgICAgICAgICAgICAgICAgOyAgICAgICBcCisyOi5hbGln
biA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyAgICAgICBcCiszOmRlc2N0eXBlIGRl
c2NkYXRhICAgICAgICAgICAgICAgICAgICAgOyAgICAgICBcCis0Oi5hbGlnbiA0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOyAgICAgICBcCisucG9wc2VjdGlvbgorI2VuZGlmIC8qIF9f
U1REQ19fICovCisKICNlbmRpZiAvKiAhX01BQ0hJTkVfQVNNQUNST1NfSF8gKi8KZGlmZiAtLWdp
dCBhL3N5cy9jb25mL2ZpbGVzLmFtZDY0IGIvc3lzL2NvbmYvZmlsZXMuYW1kNjQKaW5kZXggZDFi
ZGNkOS4uMTYwMjlkOCAxMDA2NDQKLS0tIGEvc3lzL2NvbmYvZmlsZXMuYW1kNjQKKysrIGIvc3lz
L2NvbmYvZmlsZXMuYW1kNjQKQEAgLTExOSw2ICsxMTksNyBAQCBhbWQ2NC9hbWQ2NC9pbl9ja3N1
bS5jCQlvcHRpb25hbAlpbmV0IHwgaW5ldDYKIGFtZDY0L2FtZDY0L2luaXRjcHUuYwkJc3RhbmRh
cmQKIGFtZDY0L2FtZDY0L2lvLmMJCW9wdGlvbmFsCWlvCiBhbWQ2NC9hbWQ2NC9sb2NvcmUuUwkJ
c3RhbmRhcmQJbm8tb2JqCithbWQ2NC9hbWQ2NC94ZW4tbG9jb3JlLlMJb3B0aW9uYWwJeGVuaHZt
CiBhbWQ2NC9hbWQ2NC9tYWNoZGVwLmMJCXN0YW5kYXJkCiBhbWQ2NC9hbWQ2NC9tZW0uYwkJb3B0
aW9uYWwJbWVtCiBhbWQ2NC9hbWQ2NC9taW5pZHVtcF9tYWNoZGVwLmMJc3RhbmRhcmQKQEAgLTU2
NiwzICs1NjcsNCBAQCB4ODYveDg2L25leHVzLmMJCQlzdGFuZGFyZAogeDg2L3g4Ni90c2MuYwkJ
CXN0YW5kYXJkCiB4ODYveGVuL2h2bS5jCQkJb3B0aW9uYWwJeGVuaHZtCiB4ODYveGVuL3hlbl9p
bnRyLmMJCW9wdGlvbmFsCXhlbiB8IHhlbmh2bQoreDg2L3hlbi9wdi5jCQkJb3B0aW9uYWwJeGVu
aHZtCmRpZmYgLS1naXQgYS9zeXMvaTM4Ni94ZW4veGVuX21hY2hkZXAuYyBiL3N5cy9pMzg2L3hl
bi94ZW5fbWFjaGRlcC5jCmluZGV4IDcwNDliZTYuLmZkNTc1ZWUgMTAwNjQ0Ci0tLSBhL3N5cy9p
Mzg2L3hlbi94ZW5fbWFjaGRlcC5jCisrKyBiL3N5cy9pMzg2L3hlbi94ZW5fbWFjaGRlcC5jCkBA
IC04OSw2ICs4OSw3IEBAIElEVFZFQyhkaXYpLCBJRFRWRUMoZGJnKSwgSURUVkVDKG5taSksIElE
VFZFQyhicHQpLCBJRFRWRUMob2ZsKSwKIAogaW50IHhlbmRlYnVnX2ZsYWdzOyAKIHN0YXJ0X2lu
Zm9fdCAqeGVuX3N0YXJ0X2luZm87CitzdGFydF9pbmZvX3QgKkhZUEVSVklTT1Jfc3RhcnRfaW5m
bzsKIHNoYXJlZF9pbmZvX3QgKkhZUEVSVklTT1Jfc2hhcmVkX2luZm87CiB4ZW5fcGZuX3QgKnhl
bl9tYWNoaW5lX3BoeXMgPSBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZzsKIHhlbl9wZm5fdCAqeGVu
X3BoeXNfbWFjaGluZTsKQEAgLTkyNyw2ICs5MjgsNyBAQCBpbml0dmFsdWVzKHN0YXJ0X2luZm9f
dCAqc3RhcnRpbmZvKQogCUhZUEVSVklTT1Jfdm1fYXNzaXN0KFZNQVNTVF9DTURfZW5hYmxlLCBW
TUFTU1RfVFlQRV80Z2Jfc2VnbWVudHNfbm90aWZ5KTsJCiAjZW5kaWYJCiAJeGVuX3N0YXJ0X2lu
Zm8gPSBzdGFydGluZm87CisJSFlQRVJWSVNPUl9zdGFydF9pbmZvID0gc3RhcnRpbmZvOwogCXhl
bl9waHlzX21hY2hpbmUgPSAoeGVuX3Bmbl90ICopc3RhcnRpbmZvLT5tZm5fbGlzdDsKIAogCUlk
bGVQVEQgPSAocGRfZW50cnlfdCAqKSgodWludDhfdCAqKXN0YXJ0aW5mby0+cHRfYmFzZSArIFBB
R0VfU0laRSk7CmRpZmYgLS1naXQgYS9zeXMveDg2L3hlbi9odm0uYyBiL3N5cy94ODYveGVuL2h2
bS5jCmluZGV4IDcyODExZGMuLmIzOTc3MjEgMTAwNjQ0Ci0tLSBhL3N5cy94ODYveGVuL2h2bS5j
CisrKyBiL3N5cy94ODYveGVuL2h2bS5jCkBAIC0xNTksNiArMTU5LDcgQEAgRFBDUFVfREVGSU5F
KHhlbl9pbnRyX2hhbmRsZV90LCBpcGlfaGFuZGxlW25pdGVtcyh4ZW5faXBpcyldKTsKIC8qKiBI
eXBlcmNhbGwgdGFibGUgYWNjZXNzZWQgdmlhIEhZUEVSVklTT1JfKl9vcCgpIG1ldGhvZHMuICov
CiBjaGFyICpoeXBlcmNhbGxfc3R1YnM7CiBzaGFyZWRfaW5mb190ICpIWVBFUlZJU09SX3NoYXJl
ZF9pbmZvOworc3RhcnRfaW5mb190ICpIWVBFUlZJU09SX3N0YXJ0X2luZm87CiAKICNpZmRlZiBT
TVAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBYRU4gUFYgSVBJIEhhbmRsZXJzIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmRpZmYgLS1naXQgYS9zeXMveDg2L3hlbi9wdi5j
IGIvc3lzL3g4Ni94ZW4vcHYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
NTcxZWNmCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL3g4Ni94ZW4vcHYuYwpAQCAtMCwwICsxLDEx
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNCBDaHJpc3RpYW4gTGltcGFjaC4KKyAqIENv
cHlyaWdodCAoYykgMjAwNC0yMDA2LDIwMDggS2lwIE1hY3kKKyAqIENvcHlyaWdodCAoYykgMjAx
MyBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQi
KTsKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKyNpbmNs
dWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lzL3JlYm9vdC5oPgorI2luY2x1ZGUgPHN5
cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9sb2NrLmg+CisjaW5jbHVkZSA8c3lzL3J3bG9jay5o
PgorCisjaW5jbHVkZSA8dm0vdm0uaD4KKyNpbmNsdWRlIDx2bS92bV9leHRlcm4uaD4KKyNpbmNs
dWRlIDx2bS92bV9rZXJuLmg+CisjaW5jbHVkZSA8dm0vdm1fcGFnZS5oPgorI2luY2x1ZGUgPHZt
L3ZtX21hcC5oPgorI2luY2x1ZGUgPHZtL3ZtX29iamVjdC5oPgorI2luY2x1ZGUgPHZtL3ZtX3Bh
Z2VyLmg+CisjaW5jbHVkZSA8dm0vdm1fcGFyYW0uaD4KKworI2luY2x1ZGUgPHhlbi94ZW4tb3Mu
aD4KKyNpbmNsdWRlIDx4ZW4vaHlwZXJ2aXNvci5oPgorCisvKiBOYXRpdmUgaW5pdGlhbCBmdW5j
dGlvbiAqLworZXh0ZXJuIHVfaW50NjRfdCBoYW1tZXJfdGltZSh1X2ludDY0X3QsIHVfaW50NjRf
dCk7CisvKiBYZW4gaW5pdGlhbCBmdW5jdGlvbiAqLworZXh0ZXJuIHVfaW50NjRfdCBoYW1tZXJf
dGltZV94ZW4oc3RhcnRfaW5mb190ICosIHVfaW50NjRfdCk7CisKKy8qCisgKiBGaXJzdCBmdW5j
dGlvbiBjYWxsZWQgYnkgdGhlIFhlbiBQVkggYm9vdCBzZXF1ZW5jZS4KKyAqCisgKiBTZXQgc29t
ZSBYZW4gZ2xvYmFsIHZhcmlhYmxlcyBhbmQgcHJlcGFyZSB0aGUgZW52aXJvbm1lbnQgc28gaXQg
aXMKKyAqIGFzIHNpbWlsYXIgYXMgcG9zc2libGUgdG8gd2hhdCBuYXRpdmUgRnJlZUJTRCBpbml0
IGZ1bmN0aW9uIGV4cGVjdHMuCisgKi8KK3VfaW50NjRfdAoraGFtbWVyX3RpbWVfeGVuKHN0YXJ0
X2luZm9fdCAqc2ksIHVfaW50NjRfdCB4ZW5zdGFjaykKK3sKKwl1X2ludDY0X3QgcGh5c2ZyZWU7
CisJdV9pbnQ2NF90ICpQVDQgPSAodV9pbnQ2NF90ICopeGVuc3RhY2s7CisJdV9pbnQ2NF90ICpQ
VDMgPSAodV9pbnQ2NF90ICopKHhlbnN0YWNrICsgUEFHRV9TSVpFKTsKKwl1X2ludDY0X3QgKlBU
MiA9ICh1X2ludDY0X3QgKikoeGVuc3RhY2sgKyAyICogUEFHRV9TSVpFKTsKKwlpbnQgaTsKKwor
CWlmICgoc2kgPT0gTlVMTCkgfHwgKHhlbnN0YWNrID09IDApKSB7CisJCUhZUEVSVklTT1Jfc2h1
dGRvd24oU0hVVERPV05fY3Jhc2gpOworCX0KKworCS8qIFdlIHVzZSAzIHBhZ2VzIG9mIHhlbiBz
dGFjayBmb3IgdGhlIGJvb3QgcGFnZXRhYmxlcyAqLworCXBoeXNmcmVlID0geGVuc3RhY2sgKyAz
ICogUEFHRV9TSVpFIC0gS0VSTkJBU0U7CisKKwkvKiBTZXR1cCBYZW4gZ2xvYmFsIHZhcmlhYmxl
cyAqLworCUhZUEVSVklTT1Jfc3RhcnRfaW5mbyA9IHNpOworCUhZUEVSVklTT1Jfc2hhcmVkX2lu
Zm8gPQorCQkoc2hhcmVkX2luZm9fdCAqKShzaS0+c2hhcmVkX2luZm8gKyBLRVJOQkFTRSk7CisK
KwkvKgorCSAqIFNldHVwIHNvbWUgbWlzYyBnbG9iYWwgdmFyaWFibGVzIGZvciBYZW4gZGV2aWNl
cworCSAqCisJICogWFhYOiBkZXZpY2VzIHRoYXQgbmVlZCB0aGlzIHNwZWNpZmljIHZhcmlhYmxl
cyBzaG91bGQKKwkgKiAgICAgIGJlIHJld3JpdHRlbiB0byBmZXRjaCB0aGlzIGluZm8gYnkgdGhl
bXNlbHZlcyBmcm9tIHRoZQorCSAqICAgICAgc3RhcnRfaW5mbyBwYWdlLgorCSAqLworCXhlbl9z
dG9yZSA9IChzdHJ1Y3QgeGVuc3RvcmVfZG9tYWluX2ludGVyZmFjZSAqKQorCSAgICAgICAgICAg
IChwdG9hKHNpLT5zdG9yZV9tZm4pICsgS0VSTkJBU0UpOworCisJeGVuX2RvbWFpbl90eXBlID0g
WEVOX1BWX0RPTUFJTjsKKwl2bV9ndWVzdCA9IFZNX0dVRVNUX1hFTjsKKworCS8qCisJICogVXNl
IHRoZSBzdGFjayBYZW4gZ2l2ZXMgdXMgdG8gYnVpbGQgdGhlIHBhZ2UgdGFibGVzCisJICogYXMg
bmF0aXZlIEZyZWVCU0QgZXhwZWN0cyB0byBmaW5kIHRoZW0gKGNyZWF0ZWQKKwkgKiBieSB0aGUg
Ym9vdCB0cmFtcG9saW5lKS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgNTEyOyBpKyspIHsKKwkJ
LyogRWFjaCBzbG90IG9mIHRoZSBsZXZlbCA0IHBhZ2VzIHBvaW50cyB0byB0aGUgc2FtZSBsZXZl
bCAzIHBhZ2UgKi8KKwkJUFQ0W2ldID0gKCh1X2ludDY0X3QpJlBUM1swXSkgLSBLRVJOQkFTRTsK
KwkJUFQ0W2ldIHw9IFBHX1YgfCBQR19SVyB8IFBHX1U7CisKKwkJLyogRWFjaCBzbG90IG9mIHRo
ZSBsZXZlbCAzIHBhZ2VzIHBvaW50cyB0byB0aGUgc2FtZSBsZXZlbCAyIHBhZ2UgKi8KKwkJUFQz
W2ldID0gKCh1X2ludDY0X3QpJlBUMlswXSkgLSBLRVJOQkFTRTsKKwkJUFQzW2ldIHw9IFBHX1Yg
fCBQR19SVyB8IFBHX1U7CisKKwkJLyogVGhlIGxldmVsIDIgcGFnZSBzbG90cyBhcmUgbWFwcGVk
IHdpdGggMk1CIHBhZ2VzIGZvciAxR0IuICovCisJCVBUMltpXSA9IGkgKiAoMiAqIDEwMjQgKiAx
MDI0KTsKKwkJUFQyW2ldIHw9IFBHX1YgfCBQR19SVyB8IFBHX1BTIHwgUEdfVTsKKwl9CisJbG9h
ZF9jcjMoKCh1X2ludDY0X3QpJlBUNFswXSkgLSBLRVJOQkFTRSk7CisKKwkvKiBOb3cgd2UgY2Fu
IGp1bXAgaW50byB0aGUgbmF0aXZlIGluaXQgZnVuY3Rpb24gKi8KKwlyZXR1cm4gKGhhbW1lcl90
aW1lKDAsIHBoeXNmcmVlKSk7Cit9CmRpZmYgLS1naXQgYS9zeXMveGVuL3hlbi1vcy5oIGIvc3lz
L3hlbi94ZW4tb3MuaAppbmRleCA4NzY0NGU5Li5jNzQ3NGQ4IDEwMDY0NAotLS0gYS9zeXMveGVu
L3hlbi1vcy5oCisrKyBiL3N5cy94ZW4veGVuLW9zLmgKQEAgLTUxLDYgKzUxLDEwIEBACiB2b2lk
IGZvcmNlX2V2dGNobl9jYWxsYmFjayh2b2lkKTsKIAogZXh0ZXJuIHNoYXJlZF9pbmZvX3QgKkhZ
UEVSVklTT1Jfc2hhcmVkX2luZm87CitleHRlcm4gc3RhcnRfaW5mb190ICpIWVBFUlZJU09SX3N0
YXJ0X2luZm87CisKKy8qIFhYWDogd2UgbmVlZCB0byBnZXQgcmlkIG9mIHRoaXMgYW5kIHVzZSBI
WVBFUlZJU09SX3N0YXJ0X2luZm8gZGlyZWN0bHkgKi8KK2V4dGVybiBzdHJ1Y3QgeGVuc3RvcmVf
ZG9tYWluX2ludGVyZmFjZSAqeGVuX3N0b3JlOwogCiBlbnVtIHhlbl9kb21haW5fdHlwZSB7CiAJ
WEVOX05BVElWRSwgICAgICAgICAgICAgLyogcnVubmluZyBvbiBiYXJlIGhhcmR3YXJlICAgICov
Ci0tIAoxLjcuNy41IChBcHBsZSBHaXQtMjYpCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpmcmVlYnNkLWN1cnJlbnRAZnJlZWJzZC5vcmcgbWFpbGluZyBs
aXN0Cmh0dHA6Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVic2QtY3Vy
cmVudApUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAiZnJlZWJzZC1jdXJyZW50LXVu
c3Vic2NyaWJlQGZyZWVic2Qub3JnIg==