[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH 6/16]: PVH xen: Define pvh guest and header changes..
At 17:51 -0800 on 11 Jan (1357926698), Mukesh Rathor wrote: > diff -r fadb3f2f5d97 -r 5af39353f3f9 xen/include/asm-x86/guest_access.h > --- a/xen/include/asm-x86/guest_access.h Fri Jan 11 16:25:27 2013 -0800 > +++ b/xen/include/asm-x86/guest_access.h Fri Jan 11 16:27:46 2013 -0800 > @@ -14,27 +14,27 @@ > > /* Raw access functions: no type checking. */ > #define raw_copy_to_guest(dst, src, len) \ > - (is_hvm_vcpu(current) ? \ > + (is_hvm_or_pvh_vcpu(current) ? \ > copy_to_user_hvm((dst), (src), (len)) : \ > copy_to_user((dst), (src), (len))) > #define raw_copy_from_guest(dst, src, len) \ > - (is_hvm_vcpu(current) ? \ > + (is_hvm_or_pvh_vcpu(current) ? \ > copy_from_user_hvm((dst), (src), (len)) : \ > copy_from_user((dst), (src), (len))) > #define raw_clear_guest(dst, len) \ > - (is_hvm_vcpu(current) ? \ > + (is_hvm_or_pvh_vcpu(current) ? \ > clear_user_hvm((dst), (len)) : \ > clear_user((dst), (len))) > #define __raw_copy_to_guest(dst, src, len) \ > - (is_hvm_vcpu(current) ? \ > + (is_hvm_or_pvh_vcpu(current) ? \ > copy_to_user_hvm((dst), (src), (len)) : \ > __copy_to_user((dst), (src), (len))) > #define __raw_copy_from_guest(dst, src, len) \ > - (is_hvm_vcpu(current) ? \ > + (is_hvm_or_pvh_vcpu(current) ? \ > copy_from_user_hvm((dst), (src), (len)) : \ > __copy_from_user((dst), (src), (len))) > #define __raw_clear_guest(dst, len) \ > - (is_hvm_vcpu(current) ? \ > + (is_hvm_or_pvh_vcpu(current) ? \ > clear_user_hvm((dst), (len)) : \ > clear_user((dst), (len))) Please don't mess up these nicely aligned backslashes. :) > > diff -r fadb3f2f5d97 -r 5af39353f3f9 xen/include/asm-x86/system.h > --- a/xen/include/asm-x86/system.h Fri Jan 11 16:25:27 2013 -0800 > +++ b/xen/include/asm-x86/system.h Fri Jan 11 16:27:46 2013 -0800 > @@ -4,9 +4,15 @@ > #include <xen/lib.h> > #include <asm/bitops.h> > > +/* We need vcpu because during context switch, going from pure PV to PVH, > + * in save_segments(), current has been updated to next, and no longer > pointing > + * to the pure PV. BTW, for PVH, we update regs->selectors on each vmexit */ > #define read_segment_register(vcpu, regs, name) \ > ({ u16 __sel; \ > - asm volatile ( "movw %%" STR(name) ",%0" : "=r" (__sel) ); \ > + if (is_pvh_vcpu(v)) \ > + __sel = regs->name; \ > + else \ > + asm volatile ( "movw %%" STR(name) ",%0" : "=r" (__sel) ); \ Or these. > __sel; \ > }) > > diff -r fadb3f2f5d97 -r 5af39353f3f9 xen/include/asm-x86/x86_64/regs.h > --- a/xen/include/asm-x86/x86_64/regs.h Fri Jan 11 16:25:27 2013 -0800 > +++ b/xen/include/asm-x86/x86_64/regs.h Fri Jan 11 16:27:46 2013 -0800 > @@ -11,9 +11,10 @@ > #define ring_3(r) (((r)->cs & 3) == 3) > > #define guest_kernel_mode(v, r) \ > + ( is_pvh_vcpu(v) ? ({BUG_ON(v!=current); ring_0(r);}) : \ > (!is_pv_32bit_vcpu(v) ? \ > (ring_3(r) && ((v)->arch.flags & TF_kernel_mode)) : \ > - (ring_1(r))) > + (ring_1(r))) ) Guess what I'm going to say here. :) Tim. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |