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

Re: [Xen-devel] [PATCH] xen/arm: copy cpu clock-frequency to CPU DT node.



On Tue, 2013-11-05 at 14:54 -0500, Jon Fraser wrote:
> On Tue, 2013-11-05 at 10:04 +0000, Ian Campbell wrote:
> > On Tue, 2013-11-05 at 09:56 +0000, Ian Campbell wrote:
> > > On Mon, 2013-11-04 at 13:35 -0500, Jon Fraser wrote:
> > > > On Mon, 2013-11-04 at 17:12 +0000, Ian Campbell wrote:
> > > > > On Fri, 2013-11-01 at 16:58 -0400, Jon Fraser wrote:
> > > > > > When creating the CPU DT node, copy the clock-frequency if present.
> > > > > > 
> > > > ...
> > > > > Julien's the expert but I think you need to use dt_property_read_u32
> > > > > here, to get the correct endianness conversion (as well as for pure
> > > > > forms sake of using the correct API for the job).
> > > > > 
> > > > I'll fix that.
> > > > 
> > > > > >              break;
> > > > > >          }
> > > > > >      }
> > > > > > @@ -457,6 +459,12 @@ static int make_cpus_node(const struct domain 
> > > > > > *d, void *fdt,
> > > > > >          if ( res )
> > > > > >              return res;
> > > > > >  
> > > > > > +        if (clock_frequency) {
> > > > > > +            res = fdt_property_cell(fdt, "clock-frequency", *(u32 
> > > > > > *)clock_frequency);
> > > > > 
> > > > > I suppose there ought to be some API for this side of things too, but 
> > > > > I
> > > > > can't see it right now...
> > > > > 
> > > > > Note that fdt_property_cell contains a cpu_to_fdt32 so it is 
> > > > > converting
> > > > > while the read of the property not, so I think the code is broken as 
> > > > > is?
> > > > 
> > > > Yesss, it is broken.  When I checked the property in /proc/device-tree,
> > > > I failed to realize it was endian swapped.
> > > 
> > > I guess nothing much critical is relying on this value. What is it
> > > supposed to be used for?
> > > linux/Documentation/devicetree/booting-without-of.txt seems to imply it
> > > is mostly optional for non-PPC.
> > 
> > BTW, I'm asking because I'm not sure if exposing the underlying clock
> > speed to the guest VCPU is the right thing to do. It can vary across
> > pCPUs (e.g. big.LITTLE) and with power control etc.
> > 
> > Ian.
> 
> As far as I can tell, it is intended to be used for load balancing
> for the case of differing cpu capabilities.   Looking down the road,
> if I was doing Power Management in Dom0, I would want to know
> the cpu topology and cpu speeds, but that info is probably available by
> other means.
> 
> I just wanted to squelch the annoying linux kernel error messages.
> 
> /cpus/cpu@0 missing clock-frequency property
> /cpus/cpu@1 missing clock-frequency property
> /cpus/cpu@2 missing clock-frequency property
> /cpus/cpu@3 missing clock-frequency property

Ah, I started noticing them too recently but didn't connect them with
this patch.

> Do you foresee, at this point, any problem with giving all the guest
> VCPUs the same clock frequency setting?

Do you mean same as in give all VCPUs a static hardcoded frequency or
what you did here passing through something real?

I think in general I would prefer to passthrough something real as you
have done. I'm always a little bit wary of accidentally creating an ABI
which we end up forced to support. Adding a hardcoded value could be
seen to do that, whereas passing through is going to naturally vary. One
would hope noone would ever rely on a hardcoded clock-frequency anyway.

I'm not sure what to do about domU, since I don't think the physical CPU
frequency is necessarily easily available to the toolstack. We have a
similar issue with the CPU compatiblity string. I guess that all needs
to be plumbed up. :-( (not your problem here though, so don't worry!)

Ian.


_______________________________________________
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®.