[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 09/17] [V3]PVH xen: create PVH vmcs, and initialization



>>> On 13.04.13 at 03:02, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
> +static int hvm_pvh_vcpu_initialise(struct vcpu *v)
> +{
> +    int rc;
> +
> +    if ( (rc = hvm_funcs.vcpu_initialise(v)) != 0 )
> +        return rc;
> +
> +    softirq_tasklet_init(&v->arch.hvm_vcpu.assert_evtchn_irq_tasklet,
> +                         (void(*)(unsigned long))hvm_assert_evtchn_irq,
> +                         (unsigned long)v);
> +
> +    v->arch.hvm_vcpu.hcall_64bit = 1;

One more case of not being 32-bit ready, but also not having an
easy way to spot the place later?

> +    v->arch.hvm_vcpu.hvm_pvh.vcpu_info_mfn = INVALID_MFN;
> +    v->arch.user_regs.eflags = 2;
> +    v->arch.hvm_vcpu.inject_trap.vector = -1;
> +
> +    if ( (rc = hvm_vcpu_cacheattr_init(v)) != 0 )
> +    {
> +        hvm_funcs.vcpu_destroy(v);
> +        return rc;
> +    }
> +
> +    /* 
> +     * During domain shutdown: pvh_vmx_vmexit_handler->emulate_privileged_op
> +     * -> guest_io_read -> pv_pit_handler -> handle_speaker_io -> _spin_lock
> +     *  so we call pit_init to initialize the spin lock.
> +     */
> +    if ( v->vcpu_id == 0 )
> +        pit_init(v, cpu_khz);

I'm sorry, but - what? This is either a generic (i.e. not shutdown
specific) problem (and then the comment is misleading), or you
have a problem with the shutdown path that should be fixed
there, not with some hacky workaround.

> @@ -4514,6 +4591,8 @@ static int hvm_memory_event_traps(long p, uint32_t 
> reason,
>  
>  void hvm_memory_event_cr0(unsigned long value, unsigned long old) 
>  {
> +    if ( is_pvh_vcpu(current) )
> +        return;

This is temporary only, isn't it? If so, it should be clearly marked
as such.

> +    vmentry_ctl &= ~VM_ENTRY_LOAD_DEBUG_CTLS;

So you're running the guest with host settings? How's that going
to work?

> +    vmentry_ctl &= ~VM_ENTRY_LOAD_GUEST_EFER;
> +    vmentry_ctl &= ~VM_ENTRY_SMM;
> +    vmentry_ctl &= ~VM_ENTRY_DEACT_DUAL_MONITOR;
> +    vmentry_ctl |= VM_ENTRY_IA32E_MODE;       /* GUEST_EFER.LME/LMA ignored 
> */

Again not 32-bit ready without mark?

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.