|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v12 for-xen-4.5 16/20] x86/VPMU: Handle PMU interrupts for PV guests
>>> On 30.09.14 at 18:37, <boris.ostrovsky@xxxxxxxxxx> wrote:
> On 09/30/2014 11:44 AM, Jan Beulich wrote:
>>>>> + {
>>>>> + r->cs = cur_regs->cs;
>>>>> + if ( sampled->arch.flags & TF_kernel_mode )
>>>>> + r->cs &= ~3;
>>>> And once again I wonder how the consumer of this data is to tell
>>>> apart guest kernel and hypervisor addresses.
>>> Based on the RIP --- perf, for example, searches through various symbol
>>> tables.
>> That doesn't help when profiling HVM/PVH guests - addresses are
>> ambiguous in that case.
>
> Hypervisor traces are only sent to dom0, which is currently PV only. The
> key here, of course, is the word 'currently'.
So you completely ignore PVH Dom0? Experimental or not, I don't
think that's the way to go. Furthermore the check around this is
once again using sampled, not sampling.
Looking at the separation of hypervisor vs guest context to report
again
/* Non-privileged domains are always in XENPMU_MODE_SELF mode */
if ( (vpmu_mode & XENPMU_MODE_SELF) ||
(!is_hardware_domain(sampled->domain) &&
!is_idle_vcpu(sampled)) )
cur_regs = guest_cpu_user_regs();
else
cur_regs = regs;
I now additionally wonder why the condition here isn't just the SELF
check: If the interrupt happened while in the hypervisor, why would
you override this unconditionally to report a guest sample instead?
Shouldn't the profiling domain tell you what it wants in that case
(global vs guest local view)?
>>> I suppose I can set xenpmu_data->domain_id below to either DOMID_SELF
>>> for guest and DOMID_XEN for the hypervisor.
>> That's an option, but I'm really having reservations against simulating
>> ring-0 execution in PV guests here. It would certainly be better if we
>> could report reality here, but I can see reservations on the consumer
>> (perf) side against us doing so.
>
> Yes, perf will probably not like it --- as I mentioned in an earlier
> message, it calls user_mode(regs) which is essentially !!(regs->cs & 3).
So you're crippling the Xen implementation in order to please one
of potentially many consumers... Along the lines of what I said
above, I think this ought to be controlled by the consumer of the
interface, defaulting to not doing any masking here.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |