From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH] gfxboot VMX workaround v2 Date: Mon, 07 Apr 2008 11:51:05 -0500 Message-ID: <47FA50F9.70305@codemonkey.ws> References: <47FA1DD5.3050500@suse.de> <47FA4632.9040403@codemonkey.ws> <876E0057-4556-4ADD-9590-F3D01395FA13@suse.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080809070304050903040501" Cc: kvm-devel , bk@suse.de, Guillaume Thouvenin To: Alexander Graf Return-path: In-Reply-To: <876E0057-4556-4ADD-9590-F3D01395FA13@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org This is a multi-part message in MIME format. --------------080809070304050903040501 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Alexander Graf wrote: > > On Apr 7, 2008, at 6:05 PM, Anthony Liguori wrote: > >> Alexander Graf wrote: >>> Hi, >>> >>> this is an improved version of the patch I sent several weeks ago to >>> this list. Functionally nothing changed; it still hacks into gfxboot >>> and >>> patches it to work on Intel CPUs on the fly. The big difference is that >>> this version is cleaned up and should work with every future CPU >>> available. >>> >>> Please do _not_ apply this patch. I send it to the list only for >>> interested people, who would like to have a working version of KVM for >>> their systems right now. It is neither a proper fix nor the right >>> approach to deal with this issue. It is merely a hack that works for me >>> and maybe for others too. >>> >> >> Perhaps a viable way to fix this upstream would be to catch the >> vmentry failure, look to see if SS.CPL != CS.CPL, and if so, invoke >> x86_emulate() in a loop until SS.CPL == CS.CPL. >> >> There are very few instructions in gfxboot that would need to be >> added to x86_emulate (if they aren't already there). > > In a previous thread Avi already explained a quite reasonable way to > approach this problem, which I believe is a really good approach. He > wanted to x86_emulate until the environment is "VMX friendly" again, > thus resolving big real mode problems as well. I've got a slightly lamer approach than what Avi probably wants. I lost interest in updating x86_emulate once I realized how far xen's copy has gotten. To get GFXBOOT 3.3.28 working just requires adding far jmp to x86_emulate. The sequence should look like: jmp pm_seg.prog_c32:switch_to_pm_20 switch_to_pm_20: bits 32 mov ax,pm_seg.prog_d16 mov ds,ax mov eax,ss Which means we'll get 3 vmentry failures. The two moves should already be supported by x86_emulate but I haven't confirmed. It's not a complete solution to our real mode woes but I think it's a reasonable first step. Regards, Anthony Liguori > I personally agree that the real approach is way superior to my patch. > I just won't have the time to do it in the near future and not being > able to boot intuitively hurts KVM users unnecessarily ;-). > > Regards, > > Alex --------------080809070304050903040501 Content-Type: application/mbox; name="x86_emulate.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="x86_emulate.patch" ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBiL2FyY2gveDg2L2t2bS92bXguYwpp bmRleCA2MjQ5ODEwLi4zMGQzNjhjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14LmMK KysrIGIvYXJjaC94ODYva3ZtL3ZteC5jCkBAIC0xMTgzLDcgKzExODMsOSBAQCBzdGF0aWMg dm9pZCBlbnRlcl9wbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJZml4X3Btb2RlX2Rh dGFzZWcoVkNQVV9TUkVHX0dTLCAmdmNwdS0+YXJjaC5ybW9kZS5ncyk7CiAJZml4X3Btb2Rl X2RhdGFzZWcoVkNQVV9TUkVHX0ZTLCAmdmNwdS0+YXJjaC5ybW9kZS5mcyk7CiAKKyNpZiAw CiAJdm1jc193cml0ZTE2KEdVRVNUX1NTX1NFTEVDVE9SLCAwKTsKKyNlbmRpZgogCXZtY3Nf d3JpdGUzMihHVUVTVF9TU19BUl9CWVRFUywgMHg5Myk7CiAKIAl2bWNzX3dyaXRlMTYoR1VF U1RfQ1NfU0VMRUNUT1IsCkBAIC0yMjk3LDYgKzIyOTksMzggQEAgc3RhdGljIGludCBoYW5k bGVfdGFza19zd2l0Y2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAq a3ZtX3J1bikKIAlyZXR1cm4ga3ZtX3Rhc2tfc3dpdGNoKHZjcHUsIHRzc19zZWxlY3Rvciwg cmVhc29uKTsKIH0KIAorc3RhdGljIGludCBoYW5kbGVfdm1lbnRyeV9mYWlsdXJlKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwKKwkJCQkgIHN0cnVjdCBrdm1fcnVuICprdm1fcnVuLCB1MzIg ZmFpbHVyZV9yZWFzb24pCit7CisJdTE2IHNzLCBjczsKKworCXNzID0gdm1jc19yZWFkMTYo R1VFU1RfU1NfU0VMRUNUT1IpOworCWNzID0gdm1jc19yZWFkMTYoR1VFU1RfQ1NfU0VMRUNU T1IpOworCisJaWYgKChzcyAmIDB4MDMpICE9IChjcyAmIDB4MDMpKSB7CisJCWludCBlcnI7 CisKKwkJcHJpbnRrKEtFUk5fSU5GTyAidm1lbnRyeSBmYWlsdXJlIGJlY2F1c2Ugc3MuY3Bs ICE9IGNzLmNwbFxuIik7CisJCWVyciA9IGVtdWxhdGVfaW5zdHJ1Y3Rpb24odmNwdSwga3Zt X3J1biwgMCwgMCwgMCk7CisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2UgRU1VTEFURV9ET05F OgorCQkJcHJpbnRrKEtFUk5fSU5GTyAic3VjY2Vzc2Z1bGx5IGVtdWxhdGVkIGluc3RydWN0 aW9uXG4iKTsKKwkJCXJldHVybiAxOworCQljYXNlIEVNVUxBVEVfRE9fTU1JTzoKKwkJCXBy aW50ayhLRVJOX0lORk8gIm1taW8/XG4iKTsKKwkJCXJldHVybiAwOworCQljYXNlIEVNVUxB VEVfRkFJTDoKKwkJCWt2bV9yZXBvcnRfZW11bGF0aW9uX2ZhaWx1cmUodmNwdSwgInZtZW50 cnkgZmFpbHVyZSIpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlrdm1fcnVuLT5leGl0X3Jl YXNvbiA9IEtWTV9FWElUX1VOS05PV047CisJa3ZtX3J1bi0+aHcuaGFyZHdhcmVfZXhpdF9y ZWFzb24gPSBmYWlsdXJlX3JlYXNvbjsKKworCXJldHVybiAwOworfQorCiAvKgogICogVGhl IGV4aXQgaGFuZGxlcnMgcmV0dXJuIDEgaWYgdGhlIGV4aXQgd2FzIGhhbmRsZWQgZnVsbHkg YW5kIGd1ZXN0IGV4ZWN1dGlvbgogICogbWF5IHJlc3VtZS4gIE90aGVyd2lzZSB0aGV5IHNl dCB0aGUga3ZtX3J1biBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgd2hhdCBuZWVkcwpAQCAtMjM0 Niw2ICsyMzgwLDEyIEBAIHN0YXRpYyBpbnQga3ZtX2hhbmRsZV9leGl0KHN0cnVjdCBrdm1f cnVuICprdm1fcnVuLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCQkJZXhpdF9yZWFzb24g IT0gRVhJVF9SRUFTT05fRVhDRVBUSU9OX05NSSkKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAi JXM6IHVuZXhwZWN0ZWQsIHZhbGlkIHZlY3RvcmluZyBpbmZvIGFuZCAiCiAJCSAgICAgICAi ZXhpdCByZWFzb24gaXMgMHgleFxuIiwgX19mdW5jX18sIGV4aXRfcmVhc29uKTsKKworCWlm ICgoZXhpdF9yZWFzb24gJiBWTVhfRVhJVF9SRUFTT05TX0ZBSUxFRF9WTUVOVFJZKSkgewor CQlleGl0X3JlYXNvbiAmPSB+Vk1YX0VYSVRfUkVBU09OU19GQUlMRURfVk1FTlRSWTsKKwkJ cmV0dXJuIGhhbmRsZV92bWVudHJ5X2ZhaWx1cmUodmNwdSwga3ZtX3J1biwgZXhpdF9yZWFz b24pOworCX0KKwogCWlmIChleGl0X3JlYXNvbiA8IGt2bV92bXhfbWF4X2V4aXRfaGFuZGxl cnMKIAkgICAgJiYga3ZtX3ZteF9leGl0X2hhbmRsZXJzW2V4aXRfcmVhc29uXSkKIAkJcmV0 dXJuIGt2bV92bXhfZXhpdF9oYW5kbGVyc1tleGl0X3JlYXNvbl0odmNwdSwga3ZtX3J1bik7 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2X2VtdWxhdGUuYyBiL2FyY2gveDg2L2t2 bS94ODZfZW11bGF0ZS5jCmluZGV4IGY1OWVkOTMuLjkyMTMyMTMgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2t2bS94ODZfZW11bGF0ZS5jCisrKyBiL2FyY2gveDg2L2t2bS94ODZfZW11bGF0 ZS5jCkBAIC0xNjU2LDYgKzE2NTYsMTYgQEAgc3BlY2lhbF9pbnNuOgogCQlqbXBfcmVsKGMs IGMtPnNyYy52YWwpOwogCQljLT5kc3QudHlwZSA9IE9QX05PTkU7IC8qIERpc2FibGUgd3Jp dGViYWNrLiAqLwogCQlicmVhazsKKwljYXNlIDB4ZWE6IC8qIGptcCAoZmFyLCBhYnNvbHV0 ZSkgKi8geworCQl1aW50MTZfdCBzZWw7CisJCXVpbnQzMl90IGVpcDsKKwkJZWlwID0gaW5z bl9mZXRjaCh1MzIsIDQsIGMtPmVpcCk7CisJCXNlbCA9IGluc25fZmV0Y2godTE2LCAyLCBj LT5laXApOworCQlpZiAoIChyYyA9IGxvYWRfc2VnKHg4Nl9zZWdfY3MsIHNlbCwgY3R4dCwg b3BzKSkgIT0gMCApCisJCQlnb3RvIGRvbmU7CisJCV9yZWdzLmVpcCA9IGVpcDsKKwkJYnJl YWs7CisJfQogCWNhc2UgMHhmNDogICAgICAgICAgICAgIC8qIGhsdCAqLwogCQljdHh0LT52 Y3B1LT5hcmNoLmhhbHRfcmVxdWVzdCA9IDE7CiAJCWdvdG8gZG9uZTsK --------------080809070304050903040501 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Register now and save $200. Hurry, offer ends at 11:59 p.m., Monday, April 7! Use priority code J8TLD2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone --------------080809070304050903040501 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel --------------080809070304050903040501--