[PATCH v7 15/19] xen: create a Xen nexus to use in PV/PVH
SW50cm9kdWNlIGEgWGVuIHNwZWNpZmljIG5leHVzIHRoYXQgaXMgZ29pbmcgdG8gYmUgaW4gY2hh
cmdlIGZvcgphdHRhY2hpbmcgWGVuIHNwZWNpZmljIGRldmljZXMuIFJlbW92ZSB0aGUgaWRlbnRp
Znkgcm91dGluZSBmcm9tIFhlbgpkZXZpY2VzIGFuZCBpbnN0ZWFkIGF0dGFjaCB0aGVtIGZyb20g
dGhlIG5leHVzIChQVi9QVkgpIG9yIHhlbnBjaQooSFZNKS4KLS0tCiBzeXMvY29uZi9maWxlcy5h
bWQ2NCAgICAgICAgfCAgICAxICsKIHN5cy9jb25mL2ZpbGVzLmkzODYgICAgICAgICB8ICAgIDEg
Kwogc3lzL2Rldi94ZW4vdGltZXIvdGltZXIuYyAgIHwgICAxNCAtLS0tLS0KIHN5cy9kZXYveGVu
L3hlbnBjaS94ZW5wY2kuYyB8ICAgIDUgKysKIHN5cy94ODYveGVuL3hlbl9uZXh1cy5jICAgICB8
ICAgOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3lzL3hl
bi94ZW5zdG9yZS94ZW5zdG9yZS5jIHwgICAgNyAtLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTA2IGlu
c2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5cy94ODYv
eGVuL3hlbl9uZXh1cy5jCgpkaWZmIC0tZ2l0IGEvc3lzL2NvbmYvZmlsZXMuYW1kNjQgYi9zeXMv
Y29uZi9maWxlcy5hbWQ2NAppbmRleCA0YTNmNjEyLi44YmIwYjVjIDEwMDY0NAotLS0gYS9zeXMv
Y29uZi9maWxlcy5hbWQ2NAorKysgYi9zeXMvY29uZi9maWxlcy5hbWQ2NApAQCAtNTcwLDMgKzU3
MCw0IEBAIHg4Ni94ZW4veGVuX2ludHIuYwkJb3B0aW9uYWwJeGVuIHwgeGVuaHZtCiB4ODYveGVu
L3B2LmMJCQlvcHRpb25hbAl4ZW5odm0KIHg4Ni94ZW4vbXB0YWJsZS5jCQlvcHRpb25hbAl4ZW5o
dm0KIHg4Ni94ZW4vcHZjcHUuYwkJCW9wdGlvbmFsCXhlbmh2bQoreDg2L3hlbi94ZW5fbmV4dXMu
YwkJb3B0aW9uYWwJeGVuaHZtCmRpZmYgLS1naXQgYS9zeXMvY29uZi9maWxlcy5pMzg2IGIvc3lz
L2NvbmYvZmlsZXMuaTM4NgppbmRleCA3OTAyOTZkLi43NTFkYjMyIDEwMDY0NAotLS0gYS9zeXMv
Y29uZi9maWxlcy5pMzg2CisrKyBiL3N5cy9jb25mL2ZpbGVzLmkzODYKQEAgLTYwMywzICs2MDMs
NCBAQCB4ODYveDg2L3RzYy5jCQkJc3RhbmRhcmQKIHg4Ni94ODYvZGVsYXkuYwkJCXN0YW5kYXJk
CiB4ODYveGVuL2h2bS5jCQkJb3B0aW9uYWwgeGVuaHZtCiB4ODYveGVuL3hlbl9pbnRyLmMJCW9w
dGlvbmFsIHhlbiB8IHhlbmh2bQoreDg2L3hlbi94ZW5fbmV4dXMuYwkJb3B0aW9uYWwgeGVuIHwg
eGVuaHZtCmRpZmYgLS1naXQgYS9zeXMvZGV2L3hlbi90aW1lci90aW1lci5jIGIvc3lzL2Rldi94
ZW4vdGltZXIvdGltZXIuYwppbmRleCA5NjM3MmFiLi5iMDQ3Nzg2IDEwMDY0NAotLS0gYS9zeXMv
ZGV2L3hlbi90aW1lci90aW1lci5jCisrKyBiL3N5cy9kZXYveGVuL3RpbWVyL3RpbWVyLmMKQEAg
LTk4LDE5ICs5OCw2IEBAIHN0cnVjdCB4ZW50aW1lcl9zb2Z0YyB7CiAvKiBMYXN0IHRpbWU7IHRo
aXMgZ3VhcmFudGVlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBjbG9jay4gKi8KIHZvbGF0
aWxlIHVpbnQ2NF90IHhlbl90aW1lcl9sYXN0X3RpbWUgPSAwOwogCi1zdGF0aWMgdm9pZAoteGVu
dGltZXJfaWRlbnRpZnkoZHJpdmVyX3QgKmRyaXZlciwgZGV2aWNlX3QgcGFyZW50KQotewotCWlm
ICgheGVuX2RvbWFpbigpKQotCQlyZXR1cm47Ci0KLQkvKiBIYW5kbGUgYWxsIFhlbiBQViB0aW1l
cnMgaW4gb25lIGRldmljZSBpbnN0YW5jZS4gKi8KLQlpZiAoZGV2Y2xhc3NfZ2V0X2RldmljZSh4
ZW50aW1lcl9kZXZjbGFzcywgMCkpCi0JCXJldHVybjsKLQotCUJVU19BRERfQ0hJTEQocGFyZW50
LCAwLCAieGVuX2V0IiwgMCk7Ci19Ci0KIHN0YXRpYyBpbnQKIHhlbnRpbWVyX3Byb2JlKGRldmlj
ZV90IGRldikKIHsKQEAgLTYxOCw3ICs2MDUsNiBAQCB2b2lkIHhlbl9kZWxheShpbnQgbikKIH0K
IAogc3RhdGljIGRldmljZV9tZXRob2RfdCB4ZW50aW1lcl9tZXRob2RzW10gPSB7Ci0JREVWTUVU
SE9EKGRldmljZV9pZGVudGlmeSwgeGVudGltZXJfaWRlbnRpZnkpLAogCURFVk1FVEhPRChkZXZp
Y2VfcHJvYmUsIHhlbnRpbWVyX3Byb2JlKSwKIAlERVZNRVRIT0QoZGV2aWNlX2F0dGFjaCwgeGVu
dGltZXJfYXR0YWNoKSwKIAlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwgeGVudGltZXJfZGV0YWNo
KSwKZGlmZiAtLWdpdCBhL3N5cy9kZXYveGVuL3hlbnBjaS94ZW5wY2kuYyBiL3N5cy9kZXYveGVu
L3hlbnBjaS94ZW5wY2kuYwppbmRleCBkZDJhZDkyLi5jYWM4MDIyIDEwMDY0NAotLS0gYS9zeXMv
ZGV2L3hlbi94ZW5wY2kveGVucGNpLmMKKysrIGIvc3lzL2Rldi94ZW4veGVucGNpL3hlbnBjaS5j
CkBAIC0yNzAsNiArMjcwLDExIEBAIHhlbnBjaV9hdHRhY2goZGV2aWNlX3QgZGV2KQogCQlnb3Rv
IGVycmV4aXQ7CiAJfQogCisJaWYgKEJVU19BRERfQ0hJTEQoZGV2LCAwLCAieGVuc3RvcmUiLCAw
KSA9PSBOVUxMKQorCQlwYW5pYygieGVucGNpOiB1bmFibGUgdG8gYWRkIHhlbnN0b3JlIGRldmlj
ZSIpOworCWlmIChCVVNfQUREX0NISUxEKG5leHVzLCAwLCAieGVuX2V0IiwgMCkgPT0gTlVMTCkK
KwkJcGFuaWMoInhlbnBjaTogdW5hYmxlIHRvIGFkZCB4ZW4gcHYgdGltZXIgZGV2aWNlIik7CisK
IAlyZXR1cm4gKGJ1c19nZW5lcmljX2F0dGFjaChkZXYpKTsKIAogZXJyZXhpdDoKZGlmZiAtLWdp
dCBhL3N5cy94ODYveGVuL3hlbl9uZXh1cy5jIGIvc3lzL3g4Ni94ZW4veGVuX25leHVzLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg4ZTZiNgotLS0gL2Rldi9udWxsCisr
KyBiL3N5cy94ODYveGVuL3hlbl9uZXh1cy5jCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTMgUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Cisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICog
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CitfX0ZCU0RJ
RCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMv
YnVzLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4K
KyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisjaW5jbHVk
ZSA8c3lzL3NtcC5oPgorCisjaW5jbHVkZSA8bWFjaGluZS9uZXh1c3Zhci5oPgorCisjaW5jbHVk
ZSA8eGVuL3hlbi1vcy5oPgorCitzdGF0aWMgY29uc3QgY2hhciAqeGVuX2RldmljZXNbXSA9Cit7
CisJInhlbnN0b3JlIiwJCS8qIFhlblN0b3JlIGJ1cyAqLworCSJ4ZW5fZXQiLAkJLyogWGVuIFBW
IHRpbWVyIChwcm92aWRlczogdGMsIGV0LCBjbGspICovCisJInhjIiwJCQkvKiBYZW4gUFYgY29u
c29sZSAqLworCSJpc2EiLAkJCS8qIER1bW15IElTQSBidXMgZm9yIHNjIHRvIGF0dGFjaCAqLwor
fTsKKworLyoKKyAqIFhlbiBuZXh1cyg0KSBkcml2ZXIuCisgKi8KK3N0YXRpYyBpbnQKK25leHVz
X3hlbl9wcm9iZShkZXZpY2VfdCBkZXYpCit7CisJaWYgKCF4ZW5fcHZfZG9tYWluKCkpCisJCXJl
dHVybiAoRU5YSU8pOworCisJcmV0dXJuIChCVVNfUFJPQkVfREVGQVVMVCk7Cit9CisKK3N0YXRp
YyBpbnQKK25leHVzX3hlbl9hdHRhY2goZGV2aWNlX3QgZGV2KQoreworCWludCBpLCBlcnJvciA9
IDA7CisKKwluZXh1c19pbml0X3Jlc291cmNlcygpOworCWJ1c19nZW5lcmljX3Byb2JlKGRldik7
CisKKwkvKgorCSAqIFNpbmNlIHdlIGhhdmUgbm8gQUNQSSwgd2UgbmVlZCB0byBjcmVhdGUgYSBk
dW1teSBDUFUgZGV2aWNlCisJICogaW4gb3JkZXIgdG8gc2V0IHBjcHUtPnBjX2RldmljZS4KKwkg
Ki8KKwlDUFVfRk9SRUFDSChpKQorCQlpZiAoQlVTX0FERF9DSElMRChkZXYsIDAsICJwdmNwdSIs
IGkpID09IE5VTEwpCisJCQlwYW5pYygidW5hYmxlIHRvIGFkZCBwdmNwdSMlZCBkZXZpY2UiLCBp
KTsKKworCWZvciAoaSA9IDA7IGkgPCBuaXRlbXMoeGVuX2RldmljZXMpOyBpKyspIHsKKwkJaWYg
KEJVU19BRERfQ0hJTEQoZGV2LCAwLCB4ZW5fZGV2aWNlc1tpXSwgMCkgPT0gTlVMTCkKKwkJCXBh
bmljKCIlczogY291bGQgbm90IGFkZCIsIHhlbl9kZXZpY2VzW2ldKTsKKwl9CisKKwlidXNfZ2Vu
ZXJpY19hdHRhY2goZGV2KTsKKworCXJldHVybiAoZXJyb3IpOworfQorCitzdGF0aWMgZGV2aWNl
X21ldGhvZF90IG5leHVzX3hlbl9tZXRob2RzW10gPSB7CisJLyogRGV2aWNlIGludGVyZmFjZSAq
LworCURFVk1FVEhPRChkZXZpY2VfcHJvYmUsCQluZXh1c194ZW5fcHJvYmUpLAorCURFVk1FVEhP
RChkZXZpY2VfYXR0YWNoLAluZXh1c194ZW5fYXR0YWNoKSwKKworCXsgMCwgMCB9Cit9OworCitE
RUZJTkVfQ0xBU1NfMShuZXh1cywgbmV4dXNfeGVuX2RyaXZlciwgbmV4dXNfeGVuX21ldGhvZHMs
IDEsIG5leHVzX2RyaXZlcik7CitzdGF0aWMgZGV2Y2xhc3NfdCBuZXh1c19kZXZjbGFzczsKKwor
RFJJVkVSX01PRFVMRShuZXh1c194ZW4sIHJvb3QsIG5leHVzX3hlbl9kcml2ZXIsIG5leHVzX2Rl
dmNsYXNzLCAwLCAwKTsKZGlmZiAtLWdpdCBhL3N5cy94ZW4veGVuc3RvcmUveGVuc3RvcmUuYyBi
L3N5cy94ZW4veGVuc3RvcmUveGVuc3RvcmUuYwppbmRleCBkNDA0ODYyLi5iY2Y2MzU3IDEwMDY0
NAotLS0gYS9zeXMveGVuL3hlbnN0b3JlL3hlbnN0b3JlLmMKKysrIGIvc3lzL3hlbi94ZW5zdG9y
ZS94ZW5zdG9yZS5jCkBAIC0xMDc5LDEyICsxMDc5LDYgQEAgeHNfaW5pdF9jb21tcyh2b2lkKQog
fQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIERldmljZSBBdHRhY2htZW50IEZ1bmN0
aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotc3RhdGljIHZvaWQKLXhzX2lkZW50aWZ5KGRy
aXZlcl90ICpkcml2ZXIsIGRldmljZV90IHBhcmVudCkKLXsKLQotCUJVU19BRERfQ0hJTEQocGFy
ZW50LCAwLCAieGVuc3RvcmUiLCAwKTsKLX0KIAogLyoqCiAgKiBQcm9iZSBmb3IgdGhlIGV4aXN0
YW5jZSBvZiB0aGUgWGVuU3RvcmUuCkBAIC0xMjQwLDcgKzEyMzQsNiBAQCB4c19yZXN1bWUoZGV2
aWNlX3QgZGV2IF9fdW51c2VkKQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIERldmlj
ZSBBdHRhY2htZW50IERhdGEgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHN0YXRpYyBkZXZp
Y2VfbWV0aG9kX3QgeGVuc3RvcmVfbWV0aG9kc1tdID0geyAKIAkvKiBEZXZpY2UgaW50ZXJmYWNl
ICovIAotCURFVk1FVEhPRChkZXZpY2VfaWRlbnRpZnksCXhzX2lkZW50aWZ5KSwKIAlERVZNRVRI
T0QoZGV2aWNlX3Byb2JlLCAgICAgICAgIHhzX3Byb2JlKSwgCiAJREVWTUVUSE9EKGRldmljZV9h
dHRhY2gsICAgICAgICB4c19hdHRhY2gpLCAKIAlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwgICAg
ICAgIGJ1c19nZW5lcmljX2RldGFjaCksIAotLSAKMS43LjcuNSAoQXBwbGUgR2l0LTI2KQoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZnJlZWJzZC1jdXJy
ZW50QGZyZWVic2Qub3JnIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFp
bG1hbi9saXN0aW5mby9mcmVlYnNkLWN1cnJlbnQKVG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1h
aWwgdG8gImZyZWVic2QtY3VycmVudC11bnN1YnNjcmliZUBmcmVlYnNkLm9yZyI=