|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V10 PATCH 23/23] PVH xen: introduce vmexit handler for PVH
On Mon, 12 Aug 2013 17:00:36 +0100
George Dunlap <dunlapg@xxxxxxxxx> wrote:
> On Wed, Jul 24, 2013 at 2:59 AM, Mukesh Rathor
> > +/* Returns : 0 == msr read successfully. */
> > +static int vmxit_msr_read(struct cpu_user_regs *regs)
> > +{
> > + u64 msr_content = 0;
> > +
> > + switch ( regs->ecx )
> > + {
> > + case MSR_IA32_MISC_ENABLE:
> > + rdmsrl(MSR_IA32_MISC_ENABLE, msr_content);
> > + msr_content |= MSR_IA32_MISC_ENABLE_BTS_UNAVAIL |
> > + MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL;
> > + break;
> > +
> > + default:
> > + /* PVH fixme: see hvm_msr_read_intercept(). */
> > + rdmsrl(regs->ecx, msr_content);
> > + break;
>
> So at the moment you basically pass through all MSR reads (adding
> BTS_UNAVAIL and PEBS_UNAVAIL to MISC_ENABLE), but send MSR writes
> through the hvm code?
>
> That sounds like it's asking for trouble...
Hence the fixme there. I intended to come back to this during AMD
port because of the differences between vmx_ and svm_ msr reads.
In general, we should have less interecepts for PVH, eg, there should
be no MSR_IA32_CR_PAT intercept. If there is nothing specific
for VMX and SVM for PVH, then perhaps a generic solution with may be
a union or new data struct for PVH.... Anyways, lets divide and conquer
by coming back to this.
...
> > +
> > + __vmwrite(CR4_READ_SHADOW, new);
> > +
> > + new &= ~X86_CR4_PAE; /* PVH always runs with hap
> > enabled. */
> > + new |= X86_CR4_VMXE | X86_CR4_MCE;
> > + __vmwrite(GUEST_CR4, new);
>
> Should you be updating hvm_vcpu.hw_cr[4] to this value?
We dont' use hw_cr[4] for PVH anywhere. I added a comment.
> > + }
> > + else
> > + *regp = __vmread(CR4_READ_SHADOW);
>
> Same as above re guest_cr[]
>
We do set it few lines above:
vp->arch.hvm_vcpu.guest_cr[4] = new;
-Mukesh
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |