[prev in list] [next in list] [prev in thread] [next in thread]
List: xen-ppc-devel
Subject: =?WINDOWS-1252?Q?Re:_[XenPPC]_Profiling_in_xen_=96_ppc_considera?=
From: Jimi Xenidis <jimix () watson ! ibm ! com>
Date: 2007-03-22 15:22:15
Message-ID: 6298163F-C69E-4BB0-9571-3A4689B28B1E () watson ! ibm ! com
[Download RAW message or body]
On Mar 19, 2007, at 10:48 AM, Christian Ehrhardt wrote:
> Jimi Xenidis wrote:
>> ...
>> There really very little Linux work to do here. We need:
>> 1. An hcall that turn the performance monitor on for the domain
>> 2. Save and restore the relevant registers for any domain that is
>> has it turned on.
>> 3. Turn it off for domains that have it disabled.
>>
>> you can see the hcall being setup here:
>> arch/powerpc/platforms/pseries/setup.c pSeries_setup_arch 322
>> ppc_md.enable_pmcs = pseries_lpar_enable_pmcs;
>>
>> ...
>
> I have evaluated all three items you listed above and I think to
> know now what to do to implement them in detail. I will post a
> refined version of your list after I have clarified the last open
> thing. You suggested to use the hcall to enable performance
> monitoring and I looked at the definition. The hcall currently
> contains a lot of information like perf granularity, function
> pointer, ...
I'm confused, which hcall? the PAPR hcall or the Xen hcall. I
suggest the PAPR.
> Currently I expect to need only to set a interdomain valid flag
> telling xen "there is some profiling in progress"
I do not think this is necessary for the first step of enabling
active domain oprofiling.
> and optional a per domain flag "this one is currently profiling"
This one _is_ necessary, since you will need to know if save and
restore are necessary.
> via an hcall for the first step of the implementation. Because the
> guest can write all performance special purpose registers xen needs
> only this flag to know if it has to store/recover the perfmon
> registers.
If the guest did not make the hcall to request performance monitor
unit (PMU) then we should blindly turn it off, always.
From a security perspective when we do not restore the PMU we should
really zero everything as well as turn it off since these registers
could provide a covert channel.
> We will need to restore MSR0/1,MSRA, PMC also for non-profiling
> guests in context switch from a profiling one to non profiling
> guests, because of that the easiest first implementation is
> something like the following in context_switch().
> ...
> if (perf_mon_in_use) {
> save/restore MSR0/1,MSRA,PMC's
> }
This is too course grained, how about:
if (is_active(prev)) {
save PMU
}
if (is_active(next)) {
restore PMU
} else {
clear PMU
}
> ...
> This will become more sophisticated in future but I currently
> expect that we will not need the function pointer or profiling
> granularity there for guest sampling. The only thing I currently
> expect for the function pointer is to tell xen the place where to
> report hypervisor samples in one of the next implementation steps.
Is this the function pointer in the Xen hcall, I don't think this is
usable or necessary for the active model.
> Should/Can I use this complex hcall to set that simple flag e.g. by
> skipping all other attributes or do we need a new one?
We should use the PAPR call that I sent the spec out for.
-JX
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic