From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 3/7] x86/pagewalk: Helpers for reserved bit handling Date: Mon, 27 Feb 2017 14:03:14 +0000 Message-ID: <1488204198-23948-4-git-send-email-andrew.cooper3@citrix.com> References: <1488204198-23948-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488204198-23948-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: George Dunlap , Andrew Cooper , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org U29tZSBiaXRzIGFyZSB1bmNvbmRpdGlvbmFsbHkgcmVzZXJ2ZWQgaW4gcGFnZXRhYmxlIGVudHJp ZXMsIG9yIHJlc2VydmVkCmJlY2F1c2Ugb2YgYWxpZ25tZW50IHJlc3RyaWN0aW9ucy4gIE90aGVy IGJpdHMgYXJlIHJlc2VydmVkIGJlY2F1c2Ugb2YgY29udHJvbApyZWdpc3RlciBjb25maWd1cmF0 aW9uLgoKSW50cm9kdWNlIGhlbHBlcnMgd2hpY2ggdGFrZSBhbiBpbmRpdmlkdWFsIHZjcHUgYW5k IGd1ZXN0IHBhZ2V0YWJsZSBlbnRyeSwgYW5kCmNhbGN1bGF0ZXMgd2hldGhlciBhbnkgcmVzZXJ2 ZWQgYml0cyBhcmUgc2V0LgoKV2hpbGUgaGVyZSwgYWRkIGEgY291cGxlIG9mIG5ld2xpbmVzIHRv IGFpZCByZWFkYWJpbGl0eSwgZHJvcCBzb21lIHRyYWlsaW5nCndoaXRlc3BhY2UgYW5kIGJvb2wv Y29uc3QgY29ycmVjdCB0aGUgZXhpc3RpbmcgaGVscGVycyB0byBhbGxvdyB0aGUgbmV3CmhlbHBl cnMgdG8gdGFrZSBjb25zdCB2Y3B1IHBvaW50ZXJzLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENv b3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJl dWxpY2hAc3VzZS5jb20+CkNDOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJp eC5jb20+CkNDOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KLS0tCiB4ZW4vaW5jbHVkZS9hc20t eDg2L2d1ZXN0X3B0LmggfCA5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvZ3Vlc3RfcHQuaAppbmRleCAwYmY2Y2Y5Li4xYzNkMzg0IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9n dWVzdF9wdC5oCkBAIC00NCw2ICs0NCwxOCBAQCBnZm5fdG9fcGFkZHIoZ2ZuX3QgZ2ZuKQogI3Vu ZGVmIGdldF9nZm4KICNkZWZpbmUgZ2V0X2dmbihkLCBnLCB0KSBnZXRfZ2ZuX3R5cGUoKGQpLCBn Zm5feChnKSwgKHQpLCBQMk1fQUxMT0MpCiAKKy8qIE1hc2sgY292ZXJpbmcgdGhlIHJlc2VydmVk IGJpdHMgZnJvbSBzdXBlcnBhZ2UgYWxpZ25tZW50LiAqLworI2RlZmluZSBTVVBFUlBBR0VfUlNW RChiaXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICgoKDFVTEwgPDwgKGJpdCkpIC0gMSkgJiB+KF9QQUdFX1BTRV9QQVQgfCAoX1BBR0VfUFNFX1BB VCAtIDEpKSkKKworc3RhdGljIGlubGluZSB1aW50MzJfdCBmb2xkX3BzZTM2KHVpbnQ2NF90IHZh bCkKK3sKKyAgICByZXR1cm4gKHZhbCAmIH4oMHgxZmZVTEwgPDwgMTMpKSB8ICgodmFsICYgKDB4 MWZmVUxMIDw8IDMyKSkgPj4gKDMyIC0gMTMpKTsKK30KK3N0YXRpYyBpbmxpbmUgdWludDY0X3Qg dW5mb2xkX3BzZTM2KHVpbnQzMl90IHZhbCkKK3sKKyAgICByZXR1cm4gKHZhbCAmIH4oMHgxZmZV TEwgPDwgMTMpKSB8ICgodmFsICYgKDB4MWZmVUxMIDw8IDEzKSkgPDwgKDMyIC0gMTMpKTsKK30K IAogLyogVHlwZXMgb2YgdGhlIGd1ZXN0J3MgcGFnZSB0YWJsZXMgYW5kIGFjY2VzcyBmdW5jdGlv bnMgZm9yIHRoZW0gKi8KIApAQCAtNTEsOSArNjMsMTMgQEAgZ2ZuX3RvX3BhZGRyKGdmbl90IGdm bikKIAogI2RlZmluZSBHVUVTVF9MMV9QQUdFVEFCTEVfRU5UUklFUyAgICAgMTAyNAogI2RlZmlu ZSBHVUVTVF9MMl9QQUdFVEFCTEVfRU5UUklFUyAgICAgMTAyNAorCiAjZGVmaW5lIEdVRVNUX0wx X1BBR0VUQUJMRV9TSElGVCAgICAgICAgIDEyCiAjZGVmaW5lIEdVRVNUX0wyX1BBR0VUQUJMRV9T SElGVCAgICAgICAgIDIyCiAKKyNkZWZpbmUgR1VFU1RfTDFfUEFHRVRBQkxFX1JTVkQgICAgICAg ICAgIDAKKyNkZWZpbmUgR1VFU1RfTDJfUEFHRVRBQkxFX1JTVkQgICAgICAgICAgIDAKKwogdHlw ZWRlZiB1aW50MzJfdCBndWVzdF9pbnRwdGVfdDsKIHR5cGVkZWYgc3RydWN0IHsgZ3Vlc3RfaW50 cHRlX3QgbDE7IH0gZ3Vlc3RfbDFlX3Q7CiB0eXBlZGVmIHN0cnVjdCB7IGd1ZXN0X2ludHB0ZV90 IGwyOyB9IGd1ZXN0X2wyZV90OwpAQCAtODgsMjEgKzEwNCwzOSBAQCBzdGF0aWMgaW5saW5lIGd1 ZXN0X2wyZV90IGd1ZXN0X2wyZV9mcm9tX2dmbihnZm5fdCBnZm4sIHUzMiBmbGFncykKICNlbHNl IC8qIEdVRVNUX1BBR0lOR19MRVZFTFMgIT0gMiAqLwogCiAjaWYgR1VFU1RfUEFHSU5HX0xFVkVM UyA9PSAzCisKICNkZWZpbmUgR1VFU1RfTDFfUEFHRVRBQkxFX0VOVFJJRVMgICAgICA1MTIKICNk ZWZpbmUgR1VFU1RfTDJfUEFHRVRBQkxFX0VOVFJJRVMgICAgICA1MTIKICNkZWZpbmUgR1VFU1Rf TDNfUEFHRVRBQkxFX0VOVFJJRVMgICAgICAgIDQKKwogI2RlZmluZSBHVUVTVF9MMV9QQUdFVEFC TEVfU0hJRlQgICAgICAgICAxMgogI2RlZmluZSBHVUVTVF9MMl9QQUdFVEFCTEVfU0hJRlQgICAg ICAgICAyMQogI2RlZmluZSBHVUVTVF9MM19QQUdFVEFCTEVfU0hJRlQgICAgICAgICAzMAorCisj ZGVmaW5lIEdVRVNUX0wxX1BBR0VUQUJMRV9SU1ZEICAgICAgICAgICAgMHg3ZmYwMDAwMDAwMDAw MDAwVUwKKyNkZWZpbmUgR1VFU1RfTDJfUEFHRVRBQkxFX1JTVkQgICAgICAgICAgICAweDdmZjAw MDAwMDAwMDAwMDBVTAorI2RlZmluZSBHVUVTVF9MM19QQUdFVEFCTEVfUlNWRCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgweGZmZjAwMDAwMDAwMDAwMDBVTCB8 IF9QQUdFX0dMT0JBTCB8IF9QQUdFX1BTRSB8IF9QQUdFX0RJUlRZIHwgXAorICAgICBfUEFHRV9B Q0NFU1NFRCB8IF9QQUdFX1VTRVIgfCBfUEFHRV9SVykKKwogI2Vsc2UgLyogR1VFU1RfUEFHSU5H X0xFVkVMUyA9PSA0ICovCisKICNkZWZpbmUgR1VFU1RfTDFfUEFHRVRBQkxFX0VOVFJJRVMgICAg ICA1MTIKICNkZWZpbmUgR1VFU1RfTDJfUEFHRVRBQkxFX0VOVFJJRVMgICAgICA1MTIKICNkZWZp bmUgR1VFU1RfTDNfUEFHRVRBQkxFX0VOVFJJRVMgICAgICA1MTIKICNkZWZpbmUgR1VFU1RfTDRf UEFHRVRBQkxFX0VOVFJJRVMgICAgICA1MTIKKwogI2RlZmluZSBHVUVTVF9MMV9QQUdFVEFCTEVf U0hJRlQgICAgICAgICAxMgogI2RlZmluZSBHVUVTVF9MMl9QQUdFVEFCTEVfU0hJRlQgICAgICAg ICAyMQogI2RlZmluZSBHVUVTVF9MM19QQUdFVEFCTEVfU0hJRlQgICAgICAgICAzMAogI2RlZmlu ZSBHVUVTVF9MNF9QQUdFVEFCTEVfU0hJRlQgICAgICAgICAzOQorCisjZGVmaW5lIEdVRVNUX0wx X1BBR0VUQUJMRV9SU1ZEICAgICAgICAgICAgMAorI2RlZmluZSBHVUVTVF9MMl9QQUdFVEFCTEVf UlNWRCAgICAgICAgICAgIDAKKyNkZWZpbmUgR1VFU1RfTDNfUEFHRVRBQkxFX1JTVkQgICAgICAg ICAgICAwCisvKiBOQiBMNGUuX1BBR0VfR0xPQkFMIGlzIHJlc2VydmVkIGZvciBBTUQsIGJ1dCBp Z25vcmVkIGZvciBJbnRlbC4gKi8KKyNkZWZpbmUgR1VFU1RfTDRfUEFHRVRBQkxFX1JTVkQgICAg ICAgICAgICBfUEFHRV9QU0UKKwogI2VuZGlmCiAKIHR5cGVkZWYgbDFfcGdlbnRyeV90IGd1ZXN0 X2wxZV90OwpAQCAtMTcwLDI3ICsyMDQsMzAgQEAgc3RhdGljIGlubGluZSBndWVzdF9sNGVfdCBn dWVzdF9sNGVfZnJvbV9nZm4oZ2ZuX3QgZ2ZuLCB1MzIgZmxhZ3MpCiAKIC8qIFdoaWNoIHBhZ2V0 YWJsZSBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgdmNwdT8gKi8KIAotc3RhdGljIGlu bGluZSBpbnQKLWd1ZXN0X3N1cHBvcnRzX3N1cGVycGFnZXMoc3RydWN0IHZjcHUgKnYpCitzdGF0 aWMgaW5saW5lIGJvb2wgZ3Vlc3Rfc3VwcG9ydHNfc3VwZXJwYWdlcyhjb25zdCBzdHJ1Y3QgdmNw dSAqdikKIHsKICAgICAvKiBUaGUgX1BBR0VfUFNFIGJpdCBtdXN0IGJlIGhvbm91cmVkIGluIEhW TSBndWVzdHMsIHdoZW5ldmVyCi0gICAgICogQ1I0LlBTRSBpcyBzZXQgb3IgdGhlIGd1ZXN0IGlz IGluIFBBRSBvciBsb25nIG1vZGUuIAorICAgICAqIENSNC5QU0UgaXMgc2V0IG9yIHRoZSBndWVz dCBpcyBpbiBQQUUgb3IgbG9uZyBtb2RlLgogICAgICAqIEl0J3MgYWxzbyB1c2VkIGluIHRoZSBk dW1teSBQVCBmb3IgdmNwdXMgd2l0aCBDUjQuUEcgY2xlYXJlZC4gKi8KICAgICByZXR1cm4gKGlz X3B2X3ZjcHUodikKICAgICAgICAgICAgID8gb3B0X2FsbG93X3N1cGVycGFnZQotICAgICAgICAg ICAgOiAoR1VFU1RfUEFHSU5HX0xFVkVMUyAhPSAyIAorICAgICAgICAgICAgOiAoR1VFU1RfUEFH SU5HX0xFVkVMUyAhPSAyCiAgICAgICAgICAgICAgICB8fCAhaHZtX3BhZ2luZ19lbmFibGVkKHYp CiAgICAgICAgICAgICAgICB8fCAodi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jcls0XSAmIFg4Nl9D UjRfUFNFKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIGludAotZ3Vlc3Rfc3VwcG9ydHNfMUdfc3Vw ZXJwYWdlcyhzdHJ1Y3QgdmNwdSAqdikKK3N0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9oYXNfcHNl MzYoY29uc3Qgc3RydWN0IHZjcHUgKnYpCit7CisgICAgIC8qIE5vIHN1cHBvcnQgZm9yIDItbGV2 ZWwgUFYgZ3Vlc3RzLiAqLworICAgIHJldHVybiBpc19wdl92Y3B1KHYpID8gMCA6IHBhZ2luZ19t b2RlX2hhcCh2LT5kb21haW4pOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgZ3Vlc3Rfc3VwcG9y dHNfMUdfc3VwZXJwYWdlcyhjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICByZXR1cm4gKEdV RVNUX1BBR0lOR19MRVZFTFMgPj0gNCAmJiBodm1fcHNlMWdiX3N1cHBvcnRlZCh2LT5kb21haW4p KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQKLWd1ZXN0X3N1cHBvcnRzX254KHN0cnVjdCB2Y3B1 ICp2KQorc3RhdGljIGlubGluZSBib29sIGd1ZXN0X3N1cHBvcnRzX254KGNvbnN0IHN0cnVjdCB2 Y3B1ICp2KQogewogICAgIGlmICggR1VFU1RfUEFHSU5HX0xFVkVMUyA9PSAyIHx8ICFjcHVfaGFz X254ICkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTMsNiArMjUwLDUxIEBAIGd1ZXN0X3N1cHBv cnRzX254KHN0cnVjdCB2Y3B1ICp2KQogI2RlZmluZSBfUEFHRV9JTlZBTElEX0JJVFMgX1BBR0Vf SU5WQUxJRF9CSVQKICNlbmRpZgogCisvKiBIZWxwZXJzIGZvciBpZGVudGlmeWluZyB3aGV0aGVy IGd1ZXN0IGVudHJpZXMgaGF2ZSByZXNlcnZlZCBiaXRzIHNldC4gKi8KKworLyogQml0cyByZXNl cnZlZCBiZWNhdXNlIG9mIG1heHBoeXNhZGRyLCBhbmQgKGxhY2sgb2YpIEVGRVIuTlggKi8KK3N0 YXRpYyBpbmxpbmUgdWludDY0X3QgZ3Vlc3RfcnN2ZF9iaXRzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2 KQoreworICAgIHJldHVybiAoKFBBRERSX01BU0sgJgorICAgICAgICAgICAgIH4oKDFVTCA8PCB2 LT5kb21haW4tPmFyY2guY3B1aWQtPmV4dGQubWF4cGh5c2FkZHIpIC0gMSkpIHwKKyAgICAgICAg ICAgIChndWVzdF9zdXBwb3J0c19ueCh2KSA/IDAgOiBwdXRfcHRlX2ZsYWdzKF9QQUdFX05YX0JJ VCkpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGd1ZXN0X2wxZV9yc3ZkX2JpdHMoY29uc3Qg c3RydWN0IHZjcHUgKnYsIGd1ZXN0X2wxZV90IGwxZSkKK3sKKyAgICByZXR1cm4gbDFlLmwxICYg KGd1ZXN0X3JzdmRfYml0cyh2KSB8IEdVRVNUX0wxX1BBR0VUQUJMRV9SU1ZEKTsKK30KKworc3Rh dGljIGlubGluZSBib29sIGd1ZXN0X2wyZV9yc3ZkX2JpdHMoY29uc3Qgc3RydWN0IHZjcHUgKnYs IGd1ZXN0X2wyZV90IGwyZSkKK3sKKyAgICB1aW50NjRfdCByc3ZkX2JpdHMgPSBndWVzdF9yc3Zk X2JpdHModik7CisKKyAgICByZXR1cm4gKChsMmUubDIgJiAocnN2ZF9iaXRzIHwgR1VFU1RfTDJf UEFHRVRBQkxFX1JTVkQgfAorICAgICAgICAgICAgICAgICAgICAgICAoZ3Vlc3Rfc3VwcG9ydHNf c3VwZXJwYWdlcyh2KSA/IDAgOiBfUEFHRV9QU0UpKSkgfHwKKyAgICAgICAgICAgICgobDJlLmwy ICYgX1BBR0VfUFNFKSAmJgorICAgICAgICAgICAgIChsMmUubDIgJiAoKEdVRVNUX1BBR0lOR19M RVZFTFMgPT0gMiAmJiBndWVzdF9oYXNfcHNlMzYodikpCisgICAgICAgICAgICAgICAgICAgICAg ICA/IChmb2xkX3BzZTM2KHJzdmRfYml0cyB8ICgxVUxMIDw8IDQwKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICA6IFNVUEVSUEFHRV9SU1ZEKEdVRVNUX0wyX1BBR0VUQUJMRV9TSElGVCkpKSkp OworfQorCisjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSAzCitzdGF0aWMgaW5saW5lIGJvb2wg Z3Vlc3RfbDNlX3JzdmRfYml0cyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgZ3Vlc3RfbDNlX3QgbDNl KQoreworICAgIHJldHVybiAoKGwzZS5sMyAmIChndWVzdF9yc3ZkX2JpdHModikgfCBHVUVTVF9M M19QQUdFVEFCTEVfUlNWRCB8CisgICAgICAgICAgICAgICAgICAgICAgIChndWVzdF9zdXBwb3J0 c18xR19zdXBlcnBhZ2VzKHYpID8gMCA6IF9QQUdFX1BTRSkpKSB8fAorICAgICAgICAgICAgKChs M2UubDMgJiBfUEFHRV9QU0UpICYmCisgICAgICAgICAgICAgKGwzZS5sMyAmIFNVUEVSUEFHRV9S U1ZEKEdVRVNUX0wzX1BBR0VUQUJMRV9TSElGVCkpKSk7Cit9CisKKyNpZiBHVUVTVF9QQUdJTkdf TEVWRUxTID49IDQKK3N0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9sNGVfcnN2ZF9iaXRzKGNvbnN0 IHN0cnVjdCB2Y3B1ICp2LCBndWVzdF9sNGVfdCBsNGUpCit7CisgICAgcmV0dXJuIGw0ZS5sNCAm IChndWVzdF9yc3ZkX2JpdHModikgfCBHVUVTVF9MNF9QQUdFVEFCTEVfUlNWRCB8CisgICAgICAg ICAgICAgICAgICAgICAoKHYtPmRvbWFpbi0+YXJjaC5jcHVpZC0+eDg2X3ZlbmRvciA9PSBYODZf VkVORE9SX0FNRCkKKyAgICAgICAgICAgICAgICAgICAgICA/IF9QQUdFX0dMT0JBTCA6IDApKTsK K30KKyNlbmRpZiAvKiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQgKi8KKyNlbmRpZiAvKiBHVUVT VF9QQUdJTkdfTEVWRUxTID49IDMgKi8KIAogLyogVHlwZSB1c2VkIGZvciByZWNvcmRpbmcgYSB3 YWxrIHRocm91Z2ggZ3Vlc3QgcGFnZXRhYmxlcy4gIEl0IGlzCiAgKiBmaWxsZWQgaW4gYnkgdGhl IHBhZ2V0YWJsZSB3YWxrIGZ1bmN0aW9uLCBhbmQgYWxzbyB1c2VkIGFzIGEgY2FjaGUKLS0gCjIu MS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==