Re: [PATCH v5 05/10] KVM: arm64: Support stolen time reporting via shared structure

From: Andrew Jones
Date: Fri Oct 04 2019 - 03:03:11 EST


On Thu, Oct 03, 2019 at 03:22:35PM +0200, Andrew Jones wrote:
> On Wed, Oct 02, 2019 at 03:50:32PM +0100, Steven Price wrote:
> > +int kvm_update_stolen_time(struct kvm_vcpu *vcpu, bool init)
> > +{
> > + struct kvm *kvm = vcpu->kvm;
> > + u64 steal;
> > + u64 steal_le;
> > + u64 offset;
> > + int idx;
> > + u64 base = vcpu->arch.steal.base;
> > +
> > + if (base == GPA_INVALID)
> > + return -ENOTSUPP;
> > +
> > + /* Let's do the local bookkeeping */
> > + steal = vcpu->arch.steal.steal;
> > + steal += current->sched_info.run_delay - vcpu->arch.steal.last_steal;
> > + vcpu->arch.steal.last_steal = current->sched_info.run_delay;
> > + vcpu->arch.steal.steal = steal;
> > +
> > + steal_le = cpu_to_le64(steal);
>
> Agreeing on a byte order for this interface makes sense, but I don't see
> it documented anywhere. Is this an SMCCC thing? Because I skimmed some
> of those specs and other users too but didn't see anything obvious. Anyway
> even if everybody but me knows that all data returned from SMCCC calls
> should be LE, it might be nice to document that in the pvtime doc.
>

I have another [potentially dumb] SMCCC byte order question. If we need
to worry about using LE for the members of this structure, then why don't
we need to worry about the actual return values of the SMCCC calls? Like
the IPA of the structure?

Thanks,
drew