[Skiboot] [PATCH v8 0/7] OPAL support for Nest instrumentation
Michael Neuling
mikey at neuling.org
Tue Mar 22 15:01:49 AEDT 2016
On Thu, 2016-03-17 at 17:04 +0530, Madhavan Srinivasan wrote:
>
> On Wednesday 16 March 2016 11:06 AM, Michael Neuling wrote:
> > Maddy,
> >
> > > chip at 7fdb20000 {
> > > ibm,chip-id = <0x0>;
> > > ranges = <0x0 0x7 0xfdb20000 0x30000>;
> > Should this be a reg property?
> >
> >
> > > #address-cells = <0x1>;
> > > phandle = <0x100001e1>;
> > > #size-cells = <0x1>;
> > > linux,phandle = <0x100001e1>;
> > >
> > > mcs {
> > > compatible = "ibm,nest-counters
> > > -chip";
> > > ranges;
> > > #address-cells = <0x1>;
> > > phandle = <0x100001e2>;
> > > #size-cells = <0x1>;
> > > linux,phandle = <0x100001e2>;
> > >
> > > write_mc at 38 {
> > > id = <0x0>;
> > > reg = <0x38 0x8>;
> > > unit = "MiB";
> > > scale = "1.2207e-4";
> > As I mentioned elsewhere, I'm not keen on these bindings.
>
> Mikey,
>
> Considering the MCS unit, the raw counter value (say X)
> may not be of much use. That said, mcs counter give
> us no. of 128byte blocks of reads or writes. Now, user level
> tool must know how to convert the raw value into some
> metric like GiB or MiB. Hence, have added the "scale"
> and "unit" binding for the events. With this, kernel
> pmu driver creates scale and unit files in the sysfs.
>
> x86 also does something similiar, meaning consider the commit
>
> 433678bdc6ed3 perf/rapl: Fix sysfs_show() initialization for RAPL PMU
>
> Where they have hardcoded "scaling" and "unit" factor to
> get a metric out of the counter data from their
> Uncore RAPL PMU unit.
That's based on x86 BIOS right? I'm not sure that's an
interface I want to actively replicate.
> Hardcoding these values in the kernel PMU driver may work,
> but, then having the unit and scale in device tree will
> allow the kernel drive to be independent of the microcode
> and platform firmware versions. Kernel PMU driver will be
> clean and extensible for new nest units in P8 and
> P9 generations.
I'm not saying hardcode them in the kernel. I'm saying just
put the scale value in the device tree, rather than what you
have now.
Mikey
> > 1.2204e-4 seems to just be 1/8192. MiB is just a number also. I think
> > you are combining these to give a final scale number which in this case
> > (I think is just 128).
> >
> > 1.2204e-4 * 2**20 = 127.96821504
> >
> > I'd prefer you just put that in the device tree.
>
> Now, for the scaling factor value, if we have "128"
> then the unit has to be in "Bytes". Since, these
> memory bandwidth counters are per chip level,
> preferred representing them in "MiB" instead of "Bytes".
>
> In that case scaling factor value comes out as
>
> (128/(1024x1024)) = "1.2207e-4"
>
> Regardring the "reg" property question,
>
> IIUC, these devices counters are memory mapped on the
> CPU domain, having these as "ranges" is right and
> individual event offsets are represented as "regs".
>
> Maddy
>
> > Mikey
>
More information about the Skiboot
mailing list