From mboxrd@z Thu Jan 1 00:00:00 1970 From: Razvan Cojocaru Subject: Re: [PATCH RFC] x86/emulate: implement hvmemul_cmpxchg() with an actual CMPXCHG Date: Tue, 28 Mar 2017 12:14:36 +0300 Message-ID: References: <1490361899-18303-1-git-send-email-rcojocaru@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1490361899-18303-1-git-send-email-rcojocaru@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: andrew.cooper3@citrix.com, paul.durrant@citrix.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org VGhlIHJlYWwgQ01QWENIRyBodm1lbXVsX2NtcHhjaGcoKSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBh cyBleHBlY3RlZCBhcwpmYXIgdGhlIHJhY2UgY29uZGl0aW9ucyBnbywgYW5kIHJldHVybmluZyBS RVRSWSBmb3IgZmFpbGVkIHdyaXRlYmFja3MKc2VlbXMgdG8gd29yayB3aXRob3V0IGlzc3VlIGZv ciByZWd1bGFyIFhlbiBlbXVsYXRpb24uCgpIb3dldmVyLCB3aGVuIHRoZSBwYXRjaCBpcyB1c2Vk IHdpdGggaW50cm9zcGVjdGlvbiwgSSd2ZSBoYWQgYSBCQ0NvZGU6CjEwMSBCU09EIGFuZCByYXJl IChidXQgc2V2ZXJhbCkgb2NjYXNpb25zIHdoZW4gdGhlIGd1ZXN0IGJlY29tZXMKdW5yZXNwb25z aXZlIChjYW4ndCBjbG9zZSBGaXJlZm94IG9yIGhhdmUgdGhlIFdpbmRvd3Mgc3RhcnQgbWVudSBz aG93IHVwCndoZW4gY2xpY2tpbmcgdGhlICJTdGFydCIgYnV0dG9uLCBidXQgdGhlIGd1ZXN0IGlz IG90aGVyd2lzZSBydW5uaW5nKS4KClRoaXMgSSBiZWxpZXZlIGlzIGR1ZSB0byB0aGUgZG8geyB9 IHdoaWxlICggcmMgPT0gWDg2RU1VTF9SRVRSWSApOyBsb29wCmluIGh2bV9lbXVsYXRlX29uZV92 bV9ldmVudCgpOiBJIGFtIGJhc2ljYWxseSBub3cgbG9vcGluZyBiZWhpbmcgdGhlCmd1ZXN0J3Mg YmFjayB1bnRpbCB0aGUgQ01QWENIRyBzdWNjZWVkcywgd2hpY2ggY2FuIHRoZW9yZXRpY2FsbHkg YmUgYQp2ZXJ5IGxvbmcgdGltZSB0byBleGVjdXRlIGEgQ01QWENIRyBpbnN0cnVjdGlvbiwgYW5k IG1vc3QgbGlrZWx5IG5vdAp3aGF0IHRoZSBndWVzdCBPUyBpcyBleHBlY3RpbmcuCgpUaGUgYWx0 ZXJuYXRpdmUgKGFuZCB0aGUgY3VycmVudCBkZWZhdWx0KSBpcyB0byBkbyBub3RoaW5nIG9uClg4 NkVNVUxfUkVUUlkgYW5kIGp1c3QgYWxsb3cgdGhlIGd1ZXN0IHRvIHJlLWVudGVyIGluIHRoZSBz YW1lIHBsYWNlLAp3aGljaCBzaG91bGQgdHJpZ2dlciB0aGUgc2FtZSBwYWdlIGZhdWx0IHZtX2V2 ZW50LCB3aGljaCBjYW4gaG9wZWZ1bGx5Cm5vdyBiZSBhYmxlIHRvIGVtdWxhdGUgdGhlIGN1cnJl bnQgaW5zdHJ1Y3Rpb24uIEhvd2V2ZXIsIGluIHRoZSBiZXN0CmNhc2Ugc2NlbmFyaW8sIHRoaXMg anVzdCBjb21wbGljYXRlcyB0aGUgYWJvdmUgbG9vcCBzaW5jZSB0aGUgY3VycmVudAppbnN0cnVj dGlvbiB3aWxsIHN0aWxsIGJlIHVuYWJsZSB0byBjb21wbGV0ZSB1bnRpbCBlbXVsYXRpb24gc3Vj Y2VlZHMKYnV0IHRoaXMgdGltZSB3aXRoIFZNRVhJVHMuIEFuZCBpbiB0aGUgd29yc3QgY2FzZSBz Y2VuYXJpbyAod2hpY2ggaXMKd2hhdCBoYXBwZW5zIGluIG15IHRlc3RzKSB0aGlzIGFkZHMgYW4g YWRkaXRpb25hbCBmYWN0b3Igb2YKdW5wcmVkaWN0YWJpbGl0eSwgc2luY2UgdGhlIGd1ZXN0IHF1 aWNrbHkgQlNPRHMgKG9yIHJhcmVseSBqdXN0IHBsYWluCmhhbmdzKS4KCkknbSBub3Qgc3VyZSB0 aGF0IHRoZSBSRVRSWSBtb2RlbCBpcyB3aGF0IHRoZSBndWVzdCBPUyBleHBlY3RzLiBBRkFJSywg YQpmYWlsZWQgQ01QWENIRyBzaG91bGQgaGFwcGVuIGp1c3Qgb25jZSwgd2l0aCB0aGUgcHJvcGVy IHJlZ2lzdGVycyBhbmQgWkYKc2V0LiBUaGUgZ3Vlc3Qgc3VyZWx5IGV4cGVjdHMgbmVpdGhlciB0 aGF0IHRoZSBpbnN0cnVjdGlvbiByZXN1bWUgdW50aWwKaXQgc3VjY2VlZHMsIG5vciB0aGF0IHNv bWUgaGlkZGVuIGxvb3AgZ29lcyBvbiBmb3IgYW4gdW5kZXRlcm1pbmF0ZQphbW1vdW50IG9mIHRp bWUgdW50aWwgYSBDTVBYQ0hHIHN1Y2NlZWRzLgoKVGhlIHBpY3R1cmUgaXMgZnVydGhlciBjb21w bGljYXRlZCBieSB0aGUgdHdvLXBhcnQgaGFuZGxpbmcgb2YKaW5zdHJ1Y3Rpb25zIGluIHg4Nl9l bXVsYXRlKCkuIEZvciBleGFtcGxlLCBmb3IgQ01QWENIRyB3ZSBoYXZlOgoKY2FzZSBYODZFTVVM X09QQygweDBmLCAweGIwKTogY2FzZSBYODZFTVVMX09QQygweDBmLCAweGIxKTogLyogY21weGNo ZyAqLwogICAgLyogU2F2ZSByZWFsIHNvdXJjZSB2YWx1ZSwgdGhlbiBjb21wYXJlIEVBWCBhZ2Fp bnN0IGRlc3RpbmF0aW9uLiAqLwogICAgc3JjLm9yaWdfdmFsID0gc3JjLnZhbDsKICAgIHNyYy52 YWwgPSBfcmVncy5yKGF4KTsKICAgIC8qIGNtcDogJSVlYXggLSBkc3QgPT0+IGRzdCBhbmQgc3Jj IHN3YXBwZWQgZm9yIG1hY3JvIGludm9jYXRpb24gKi8KICAgIGVtdWxhdGVfMm9wX1NyY1YoImNt cCIsIGRzdCwgc3JjLCBfcmVncy5lZmxhZ3MpOwogICAgaWYgKCBfcmVncy5lZmxhZ3MgJiBYODZf RUZMQUdTX1pGICkKICAgIHsKICAgICAgICAvKiBTdWNjZXNzOiB3cml0ZSBiYWNrIHRvIG1lbW9y eS4gKi8KICAgICAgICBkc3QudmFsID0gc3JjLm9yaWdfdmFsOwogICAgfQogICAgZWxzZQogICAg ewogICAgICAgIC8qIEZhaWx1cmU6IHdyaXRlIHRoZSB2YWx1ZSB3ZSBzYXcgdG8gRUFYLiAqLwog ICAgICAgIGRzdC50eXBlID0gT1BfUkVHOwogICAgICAgIGRzdC5yZWcgID0gKHVuc2lnbmVkIGxv bmcgKikmX3JlZ3MucihheCk7CiAgICB9CiAgICBicmVhazsKClRoaXMgaXMgdGhlIG9ubHkgcGFy dCB0aGF0IHNldHMgdGhlIHByb3BlciByZWdpc3RlcnMgYW5kIFpGLCBhbmQgaXQncwpvbmx5IHRo ZSBjb21wYXJpc29uLiBJZiB0aGlzIHN1Y2NlZWRzLCB4ODZfZW11bGF0ZSgpIGN1cnJlbnRseSBh c3N1bWVzCnRoYXQgdGhlIHdyaXRlYmFjayBwYXJ0IGNhbm5vdCBmYWlsLiBCdXQgdGhlbiB0aGUg d3JpdGViYWNrIHBhcnQgaXM6CgpjYXNlIE9QX01FTToKICAgIGlmICggIShkICYgTW92KSAmJiAo ZHN0Lm9yaWdfdmFsID09IGRzdC52YWwpICYmCiAgICAgICAgICFjdHh0LT5mb3JjZV93cml0ZWJh Y2sgKQogICAgICAgICAvKiBub3RoaW5nIHRvIGRvICovOwogICAgZWxzZSBpZiAoIGxvY2tfcHJl Zml4ICkKICAgIHsKICAgICAgICBmYWlsX2lmKCFvcHMtPmNtcHhjaGcpOwogICAgICAgIHJjID0g b3BzLT5jbXB4Y2hnKAogICAgICAgICAgICBkc3QubWVtLnNlZywgZHN0Lm1lbS5vZmYsICZkc3Qu b3JpZ192YWwsCiAgICAgICAgICAgICAmZHN0LnZhbCwgZHN0LmJ5dGVzLCBjdHh0KTsKICAgIH0K ICAgIGVsc2UKICAgIHsKICAgICAgICBmYWlsX2lmKCFvcHMtPndyaXRlKTsKICAgICAgICByYyA9 IG9wcy0+d3JpdGUoZHN0Lm1lbS5zZWcsIGRzdC5tZW0ub2ZmLAogICAgICAgICAgICAgICAgICAg ICAgICAhc3RhdGUtPnNpbWRfc2l6ZSA/ICZkc3QudmFsIDogKHZvaWQgKiltbXZhbHAsCiAgICAg ICAgICAgICAgICAgICAgICAgIGRzdC5ieXRlcywgY3R4dCk7CiAgICAgICAgaWYgKCBzZmVuY2Ug KQogICAgICAgICAgICBhc20gdm9sYXRpbGUgKCAic2ZlbmNlIiA6OjogIm1lbW9yeSIgKTsKICAg IH0KICAgIGlmICggcmMgIT0gMCApCiAgICAgICAgZ290byBkb25lOwpkZWZhdWx0OgogICAgYnJl YWs7CgpJIG5vdyBzZWUgdGhhdCB0aGlzIGlzIHdoeSB1c2luZyBhIHNwaW5sb2NrIG9ubHkgYXJv dW5kIHRoZSB3cml0ZWJhY2sKcGFydCBkaWQgbm90IHNvbHZlIHRoZSBpc3N1ZTogYm90aCB0aGUg Y29tcGFyZSBwYXJ0IGFuZCB0aGUgd3JpdGViYWNrCnBhcnQgbmVlZCB0byBiZSBwYXJ0IG9mIHRo ZSBzYW1lIGF0b21pYyBvcGVyYXRpb24gLSBsb2NrIG5lZWRzIHRvIGJlCmFxdWlyZWQgYmVmb3Jl IHRoZSBjbXAgLyBaRiBwYXJ0LgoKT3BpbmlvbnMgYW5kIHN1Z2dlc3Rpb25zIGFyZSBhcHByZWNp YXRlZC4gSWYgSSdtIG5vdCBtaXN0YWtlbiwgaXQgbG9va3MKbGlrZSB0aGUgc21wX2xvY2sgZGVz aWduIGlzIHRoZSBiZXR0ZXIgc29sdXRpb24gdG8gdGhlIHByb2JsZW0uCgoKVGhhbmtzLApSYXp2 YW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=