On 03/23/2012 02:23 AM, Rusty Russell wrote:
> On Mon, 12 Mar 2012 02:52:41 -0400, Christoffer Dall 
> <c.d...@virtualopensystems.com> wrote:
> > @@ -236,6 +237,24 @@ int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu)
> >  
> >  int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
> >  {
> > +   unsigned long cpsr;
> > +   unsigned long sctlr;
> > +
> > +
> > +   /* Init execution CPSR */
> > +   asm volatile ("mrs      %[cpsr], cpsr" :
> > +                   [cpsr] "=r" (cpsr));
> > +   vcpu->arch.regs.cpsr = SVC_MODE | PSR_I_BIT | PSR_F_BIT | PSR_A_BIT |
> > +                           (cpsr & PSR_E_BIT);
> > +
> > +   /* Init SCTLR with MMU disabled */
> > +   asm volatile ("mrc      p15, 0, %[sctlr], c1, c0, 0" :
> > +                   [sctlr] "=r" (sctlr));
> > +   vcpu->arch.cp15[c1_SCTLR] = sctlr & ~1U;
> > +
> > +   /* Compute guest MPIDR */
> > +   vcpu->arch.cp15[c0_MPIDR] = (read_cpuid_mpidr() & ~0xff)
> > +                               | vcpu->vcpu_id;
> >     return 0;
> >  }
>
> Hi Christoffer!
>
>         I started cleaning this up, on the theory that we should use the
> defined reset values rather than basing them on host values.  Then I
> discovered that this is ignored by qemu anyway, which overrides the
> values (except for MPIDR: I set that to 0x80000000 | vcpu->vcpu_id,
> which seems correct to me).
>
> Should this code be dropped altogether?  Peter points out that once we
> add new regs, they *must* be initialized to correct reset values in case
> older QEMU knows nothing about them, but for the rest it just seems
> confusing...
>

It's best to initialize everything.  As far as this code is concerned
qemu is just another user and we shouldn't rely on its implementation.

-- 
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to