[PATCH v10 15/20] xen: create a PV CPU device for PVH guests
U2luY2UgdGhlcmUncyBubyBBQ1BJIG9uIFBWSCBndWVzdHMsIHdlIG5lZWQgdG8gY3JlYXRlIGEg
ZHVtbXkgQ1BVCmRldmljZSBpbiBvcmRlciB0byBmaWxsIHRoZSBwY3B1LT5wY19kZXZpY2UgZmll
bGQuCi0tLQogc3lzL2NvbmYvZmlsZXMgICAgICAgICAgICB8ICAgIDEgKwogc3lzL2Rldi94ZW4v
cHZjcHUvcHZjcHUuYyB8ICAxMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5cy9kZXYveGVuL3B2Y3B1L3B2Y3B1LmMKCmRpZmYg
LS1naXQgYS9zeXMvY29uZi9maWxlcyBiL3N5cy9jb25mL2ZpbGVzCmluZGV4IGJkZGYwMjEuLjE3
OGQ1ZTIgMTAwNjQ0Ci0tLSBhL3N5cy9jb25mL2ZpbGVzCisrKyBiL3N5cy9jb25mL2ZpbGVzCkBA
IC0yNTAwLDYgKzI1MDAsNyBAQCBkZXYveGVuL25ldGJhY2svbmV0YmFjay5jCW9wdGlvbmFsIHhl
biB8IHhlbmh2bQogZGV2L3hlbi9uZXRmcm9udC9uZXRmcm9udC5jCW9wdGlvbmFsIHhlbiB8IHhl
bmh2bQogZGV2L3hlbi94ZW5wY2kveGVucGNpLmMJCW9wdGlvbmFsIHhlbnBjaQogZGV2L3hlbi90
aW1lci90aW1lci5jCQlvcHRpb25hbCB4ZW4gfCB4ZW5odm0KK2Rldi94ZW4vcHZjcHUvcHZjcHUu
YwkJb3B0aW9uYWwgeGVuIHwgeGVuaHZtCiBkZXYveGwvaWZfeGwuYwkJCW9wdGlvbmFsIHhsIHBj
aQogZGV2L3hsL3hscGh5LmMJCQlvcHRpb25hbCB4bCBwY2kKIGZzL2RlYWRmcy9kZWFkX3Zub3Bz
LmMJCXN0YW5kYXJkCmRpZmYgLS1naXQgYS9zeXMvZGV2L3hlbi9wdmNwdS9wdmNwdS5jIGIvc3lz
L2Rldi94ZW4vcHZjcHUvcHZjcHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43ZjM2OTdjCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2Rldi94ZW4vcHZjcHUvcHZjcHUuYwpA
QCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMyBSb2dlciBQYXUgTW9u
bsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBD
T05UUklCVVRPUlMgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUg
PHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9idXMu
aD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2lu
Y2x1ZGUgPHN5cy9wY3B1Lmg+CisjaW5jbHVkZSA8c3lzL3NtcC5oPgorCisjaW5jbHVkZSA8eGVu
L3hlbi1vcy5oPgorCisvKgorICogRHVtbXkgWGVuIGNwdSBkZXZpY2UKKyAqCisgKiBTaW5jZSB0
aGVyZSdzIG5vIEFDUEkgb24gUFZIIGd1ZXN0cywgd2UgbmVlZCB0byBjcmVhdGUgYSBkdW1teQor
ICogQ1BVIGRldmljZSBpbiBvcmRlciB0byBmaWxsIHRoZSBwY3B1LT5wY19kZXZpY2UgZmllbGQu
CisgKi8KKworc3RhdGljIHZvaWQKK3hlbnB2Y3B1X2lkZW50aWZ5KGRyaXZlcl90ICpkcml2ZXIs
IGRldmljZV90IHBhcmVudCkKK3sKKwlkZXZpY2VfdCBjaGlsZDsKKwlpbnQgaTsKKworCS8qIE9u
bHkgYXR0YWNoIHRvIFBWIGd1ZXN0cywgSFZNIGd1ZXN0cyB1c2UgdGhlIEFDUEkgQ1BVIGRldmlj
ZXMgKi8KKwlpZiAoIXhlbl9wdl9kb21haW4oKSkKKwkJcmV0dXJuOworCisJQ1BVX0ZPUkVBQ0go
aSkgeworCQljaGlsZCA9IEJVU19BRERfQ0hJTEQocGFyZW50LCAwLCAicHZjcHUiLCBpKTsKKwkJ
aWYgKGNoaWxkID09IE5VTEwpCisJCQlwYW5pYygieGVucHZjcHVfaWRlbnRpZnkgYWRkIHB2Y3B1
Iik7CisJfQorfQorCitzdGF0aWMgaW50Cit4ZW5wdmNwdV9wcm9iZShkZXZpY2VfdCBkZXYpCit7
CisKKwlkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiWGVuIFBWIENQVSIpOworCXJldHVybiAoQlVTX1BS
T0JFX05PV0lMRENBUkQpOworfQorCitzdGF0aWMgaW50Cit4ZW5wdmNwdV9hdHRhY2goZGV2aWNl
X3QgZGV2KQoreworCXN0cnVjdCBwY3B1ICpwYzsKKwlpbnQgY3B1OworCisJY3B1ID0gZGV2aWNl
X2dldF91bml0KGRldik7CisJcGMgPSBwY3B1X2ZpbmQoY3B1KTsKKwlwYy0+cGNfZGV2aWNlID0g
ZGV2OworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBkZXZpY2VfbWV0aG9kX3QgeGVucHZjcHVf
bWV0aG9kc1tdID0geworCURFVk1FVEhPRChkZXZpY2VfaWRlbnRpZnksIHhlbnB2Y3B1X2lkZW50
aWZ5KSwKKwlERVZNRVRIT0QoZGV2aWNlX3Byb2JlLCB4ZW5wdmNwdV9wcm9iZSksCisJREVWTUVU
SE9EKGRldmljZV9hdHRhY2gsIHhlbnB2Y3B1X2F0dGFjaCksCisKKwlERVZNRVRIT0RfRU5ECit9
OworCitzdGF0aWMgZHJpdmVyX3QgeGVucHZjcHVfZHJpdmVyID0geworCSJwdmNwdSIsCisJeGVu
cHZjcHVfbWV0aG9kcywKKwkwLAorfTsKKworZGV2Y2xhc3NfdCB4ZW5wdmNwdV9kZXZjbGFzczsK
KworRFJJVkVSX01PRFVMRSh4ZW5wdmNwdSwgeGVucHYsIHhlbnB2Y3B1X2RyaXZlciwgeGVucHZj
cHVfZGV2Y2xhc3MsIDAsIDApOworTU9EVUxFX0RFUEVORCh4ZW5wdmNwdSwgeGVucHYsIDEsIDEs
IDEpOwotLSAKMS43LjcuNSAoQXBwbGUgR2l0LTI2KQoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KZnJlZWJzZC1jdXJyZW50QGZyZWVic2Qub3JnIG1haWxp
bmcgbGlzdApodHRwOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlYnNk
LWN1cnJlbnQKVG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1haWwgdG8gImZyZWVic2QtY3VycmVu
dC11bnN1YnNjcmliZUBmcmVlYnNkLm9yZyI=