On 2022-09-22 8:58 a.m., Wang, Wei W wrote: > On Thursday, September 22, 2022 8:34 PM, Liang, Kan wrote: >>> To solve the problem, introduce and export pt_get_curr_event() for KVM >>> to get current pt event. >> >> I don't think the current pt event is created by KVM. IIUC, the patch basically >> expose the event created by the other user to KVM. That doesn't sounds >> correct. > > Yes, that's the host PT event running on the current CPU. Not created by KVM. > >> >> I think it should be perf's responsibility to decide which events should be >> disabled, and which MSRs should be switched. Because only perf can see all the >> events. The users should only see the events they created. > > For other pmu cases, yes. For PT, its management is simpler than other pmu > resources and PT PMU is much simpler. It doesn't have a scheduler to manage > events. > Right, but I think we'd better to create a simpler scheduler (just for two events) in the PT driver, since you have two co-existing PT events now, one is from the host and the other is from the guest. I don't think it's KVM's responsibility to schedule events. So I think the process should be something as below. - Let KVM create a PT event if the guest request one. - In VM-entry, just invoke the perf_event_enable_local(guest). The PT driver should schedule out the host event or whatever events and schedule in the guest event. - In VM-exit, just invoke the perf_event_disable_local(guest). The PT driver should schedule in the host event or whatever events and schedule out the guest event. I still don't think we want to expose the host event. Thanks, Kan > I think the usage here is similar to the CPU thread scheduling case. When we have > CPUs isolated from the CPU scheduler, i.e. no scheduler for those CPUs, basically > we rely on users to ping tasks to those CPUs (e.g. taskset). > > For the commit log, probably we don't need those KVM details here. Simplify a bit: > > 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.