[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <62d4bec1-a0c3-3b01-61bb-f284eede6378@linux.intel.com>
Date: Mon, 26 Sep 2022 11:48:36 -0400
From: "Liang, Kan" <kan.liang@...ux.intel.com>
To: "Wang, Wei W" <wei.w.wang@...el.com>,
Peter Zijlstra <peterz@...radead.org>
Cc: "Li, Xiaoyao" <xiaoyao.li@...el.com>,
Ingo Molnar <mingo@...hat.com>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
Jiri Olsa <jolsa@...nel.org>,
Namhyung Kim <namhyung@...nel.org>,
"Christopherson,, Sean" <seanjc@...gle.com>,
Paolo Bonzini <pbonzini@...hat.com>,
"linux-perf-users@...r.kernel.org" <linux-perf-users@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"kvm@...r.kernel.org" <kvm@...r.kernel.org>
Subject: Re: [RFC PATCH v2 2/3] perf/x86/intel/pt: Introduce and export
pt_get_curr_event()
On 2022-09-22 10:42 a.m., Wang, Wei W wrote:
> On Thursday, September 22, 2022 10:10 PM, Peter Zijlstra wrote:
>> On Thu, Sep 22, 2022 at 01:59:53PM +0000, Wang, Wei W wrote:
>>> On Thursday, September 22, 2022 9:35 PM, Peter Zijlstra
>>>> On Thu, Sep 22, 2022 at 12:58:49PM +0000, Wang, Wei W wrote:
>>>>
>>>>> Add a function to expose the current running PT event to users.
>>>>> One usage is in KVM, it needs to get and disable the running host
>>>>> PT event before VMEnter to the guest and resumes the event after
>> VMexit to host.
>>>>
>>>> You cannot just kill a host event like that. If there is a host
>>>> event, the guest looses out.
>>>
>>> OK. The intention was to pause the event (that only profiles host
>>> info) when switching to guest, and resume when switching back to host.
>>
>> If the even doesn't profile guest context, then yes. If it does profile guest
>> context, you can't.
>
> Seems better to add this one:
If the guest host mode is enabled, I think the PT driver should not
allow the perf tool to create a host event with !exclude_guest.
Thanks,
Kan
>
> +int perf_event_disable_local_exclude_guest(struct perf_event *event)
> +{
> + struct perf_event_attr *attr = &event->attr;
> +
> + if (!attr->exclude_guest)
> + return -EPERM;
> +
> + event_function_local(event, __perf_event_disable, NULL);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(perf_event_disable_local_exclude_guest);
>
Powered by blists - more mailing lists