On Friday, September 21, 2018 12:24 AM, Peter Zijlstra wrote:
> On Thu, Sep 20, 2018 at 08:30:35AM -0700, Andi Kleen wrote:
> > > +int intel_pmu_enable_save_guest_lbr(struct kvm_vcpu *vcpu) {
> > > + struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
> > > + struct perf_event *event;
> > > + struct perf_event_attr attr = {
> > > +         .type = PERF_TYPE_RAW,
> > > +         .size = sizeof(attr),
> > > +         .pinned = true,
> > > +         .exclude_host = true,
> > > +         .sample_type = PERF_SAMPLE_BRANCH_STACK,
> > > +         .branch_sample_type = PERF_SAMPLE_BRANCH_CALL_STACK
> |
> > > +                               PERF_SAMPLE_BRANCH_USER |
> > > +                               PERF_SAMPLE_BRANCH_KERNEL,
> >
> > I think that will allocate an extra perfmon counter, right?
> 
> I throught the same too, but I think the exclude_host/guest, whichever is the
> right one makes that work for regular counters too.

Sorry for being late.

I'm not sure if exclude_host/guest would be suitable, for example, if the guest 
wants to use a perf counter, host will create a perf event with 
"exclude_host=true" to have the counter not count in host. And 
"exclude_guest=true" is a flag to the perf core that the counter should not 
count when the guest runs.

What would you think if we add a new flag (e.g. .force_no_counters) to the perf 
core to indicate not allocating a perf counter?

> That code is a wee bit magical and I didn't take the time to reverse engineer
> that. It most certainly needs a comment.

No problem. I will add more comments in the next version.

Best,
Wei

Reply via email to