nestedsvm: fix shadow-on-hap
PATCH 1/1 nestedsvm: fix shadow-on-hap
Hi,
attached patch lets l2 guest actually run with shadow-on-hap.
Signature · 6 lines
---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632
xen/arch/x86/hvm/svm/entry.S +4 -0
@@ -65,12 +65,16 @@ ENTRY(svm_asm_do_resume) testl $~0,(r(dx),r(ax),1) jnz .Lsvm_process_softirqs + testb $0, VCPU_nsvm_hap_enabled(r(bx)) + jz .Lsvm_asid_handle + mov VCPU_nhvm_p2m(r(bx)),r(ax) test r(ax),r(ax) sete %al andb VCPU_nhvm_guestmode(r(bx)),%al jnz .Lsvm_nsvm_no_p2m +.Lsvm_asid_handle: call svm_asid_handle_vmrun cmpb $0,addr_of(tb_init_done)
xen/arch/x86/hvm/svm/nestedsvm.c +1 -0
@@ -546,6 +547,7 @@ static int nsvm_vmcb_prepare4vmrun(struc/* host nested paging + guest shadow paging. */ n2vmcb->_np_enable =1 ;/* Keep h_cr3 as it is. */ + n2vmcb->_h_cr3 = n1vmcb->_h_cr3;/* When l1 guest does shadow paging * we assume it intercepts page faults. */
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel
Quoted 8 lines · Christoph Egger
Hi,
attached patch lets l2 guest actually run with shadow-on-hap.
Signed-off-by Christoph Egger<[email protected]>
New version. Old version missed some hunks to compile. Sorry about this.
Signature · 6 lines
---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632
xen/arch/x86/hvm/svm/entry.S +4 -0
@@ -65,12 +65,16 @@ ENTRY(svm_asm_do_resume) testl $~0,(r(dx),r(ax),1) jnz .Lsvm_process_softirqs + testb $0, VCPU_nsvm_hap_enabled(r(bx)) + jz .Lsvm_asid_handle + mov VCPU_nhvm_p2m(r(bx)),r(ax) test r(ax),r(ax) sete %al andb VCPU_nhvm_guestmode(r(bx)),%al jnz .Lsvm_nsvm_no_p2m +.Lsvm_asid_handle: call svm_asid_handle_vmrun cmpb $0,addr_of(tb_init_done)
xen/arch/x86/hvm/svm/nestedsvm.c +1 -0
@@ -546,6 +547,7 @@ static int nsvm_vmcb_prepare4vmrun(struc/* host nested paging + guest shadow paging. */ n2vmcb->_np_enable =1 ;/* Keep h_cr3 as it is. */ + n2vmcb->_h_cr3 = n1vmcb->_h_cr3;/* When l1 guest does shadow paging * we assume it intercepts page faults. */
xen/arch/x86/x86_32/asm-offsets.c +1 -0
@@ -95,6 +95,7 @@ void __dummy__(void) OFFSET(VCPU_nhvm_guestmode, struct vcpu, arch.hvm_vcpu.nvcpu.nv_guestmode); OFFSET(VCPU_nhvm_p2m, struct vcpu, arch.hvm_vcpu.nvcpu.nv_p2m); + OFFSET(VCPU_nsvm_hap_enabled, struct vcpu, arch.hvm_vcpu.nvcpu.u.nsvm.ns_hap_enabled);BLANK (); OFFSET(VMCB_rax, struct vmcb_struct, rax);
xen/arch/x86/x86_64/asm-offsets.c +1 -0
@@ -117,6 +117,7 @@ void __dummy__(void) OFFSET(VCPU_nhvm_guestmode, struct vcpu, arch.hvm_vcpu.nvcpu.nv_guestmode); OFFSET(VCPU_nhvm_p2m, struct vcpu, arch.hvm_vcpu.nvcpu.nv_p2m); + OFFSET(VCPU_nsvm_hap_enabled, struct vcpu, arch.hvm_vcpu.nvcpu.u.nsvm.ns_hap_enabled);BLANK (); OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.is_32bit_pv);
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel
Tim Deegan
Acked-byQuoted 7 lines · Christoph Egger
diff -r
0c60c61ff836xen/arch/x86/hvm/svm/entry.Sxen/arch/x86/hvm/svm/entry.S +0
-0@@ -65,12 +65,16 @@ ENTRY(svm_asm_do_resume) testl $~0,(r(dx),r(ax),1) jnz .Lsvm_process_softirqs
xen/arch/x86/hvm/svm/entry.S ENTRY(svm_asm_do_resume) · line 77
Quoted 10 lines
xen/arch/x86/hvm/svm/entry.S +4
-0+ testb $0, VCPU_nsvm_hap_enabled(r(bx)) + jz .Lsvm_asid_handle + mov VCPU_nhvm_p2m(r(bx)),r(ax) test r(ax),r(ax) sete %al andb VCPU_nhvm_guestmode(r(bx)),%al jnz .Lsvm_nsvm_no_p2m +.Lsvm_asid_handle:
It would be neater to AND nsvm_hap_enabled into the no-p2m calculation rather than have another jump, but unless you feel like fixing that, this and your other 3 recent nested-SVM patches are
Tim.
Signature · 3 lines
Tim Deegan <[email protected]> Principal Software Engineer, Xen Platform Team Citrix Systems UK Ltd. (Company #02937203, SL9 0BG)