Message ID | 20200613080958.132489-1-like.xu@linux.intel.com (mailing list archive) |
---|---|
Headers | show |
Series | Guest Last Branch Recording Enabling | expand |
On 2020/6/13 16:09, Like Xu wrote: > Hi all, > > Please help review this new version for the Kenrel 5.9 release. > > Now, you may apply the last two qemu-devel patches to the upstream > qemu and try the guest LBR feature with '-cpu host' command line. > > v11->v12 Changelog: > - apply "Signed-off-by" form PeterZ and his codes for the perf subsystem; > - add validity checks before expose LBR via MSR_IA32_PERF_CAPABILITIES; > - refactor MSR_IA32_DEBUGCTLMSR emulation with validity check; > - reorder "perf_event_attr" fields according to how they're declared; > - replace event_is_oncpu() with "event->state" check; > - make LBR emualtion specific to vmx rather than x86 generic; > - move pass-through LBR code to vmx.c instead of pmu_intel.c; > - add vmx_lbr_en/disable_passthrough layer to make code readable; > - rewrite pmu availability check with vmx_passthrough_lbr_msrs(); > > You may check more details in each commit. > > Previous: > https://lore.kernel.org/kvm/20200514083054.62538-1-like.xu@linux.intel.com/ > > --- ... > > Wei Wang (1): > perf/x86: Fix variable types for LBR registers > Like Xu (10): > perf/x86/core: Refactor hw->idx checks and cleanup > perf/x86/lbr: Add interface to get LBR information > perf/x86: Add constraint to create guest LBR event without hw counter > perf/x86: Keep LBR records unchanged in host context for guest usage Hi Peter, Would you like to add "Acked-by" to the first three perf patches ? > KVM: vmx/pmu: Expose LBR to guest via MSR_IA32_PERF_CAPABILITIES > KVM: vmx/pmu: Unmask LBR fields in the MSR_IA32_DEBUGCTLMSR emualtion > KVM: vmx/pmu: Pass-through LBR msrs when guest LBR event is scheduled > KVM: vmx/pmu: Emulate legacy freezing LBRs on virtual PMI > KVM: vmx/pmu: Reduce the overhead of LBR pass-through or cancellation > KVM: vmx/pmu: Release guest LBR event via lazy release mechanism > Hi Paolo, Would you like to take a moment to review the KVM part for this feature ? Thanks, Like Xu > > Qemu-devel: > target/i386: add -cpu,lbr=true support to enable guest LBR > > arch/x86/events/core.c | 26 +-- > arch/x86/events/intel/core.c | 109 ++++++++----- > arch/x86/events/intel/lbr.c | 51 +++++- > arch/x86/events/perf_event.h | 8 +- > arch/x86/include/asm/perf_event.h | 34 +++- > arch/x86/kvm/pmu.c | 12 +- > arch/x86/kvm/pmu.h | 5 + > arch/x86/kvm/vmx/capabilities.h | 23 ++- > arch/x86/kvm/vmx/pmu_intel.c | 253 +++++++++++++++++++++++++++++- > arch/x86/kvm/vmx/vmx.c | 86 +++++++++- > arch/x86/kvm/vmx/vmx.h | 17 ++ > arch/x86/kvm/x86.c | 13 -- > 12 files changed, 559 insertions(+), 78 deletions(-) >
Ping friendly. If there is room for improvement, please let me know. On 2020/6/23 21:13, Like Xu wrote: > On 2020/6/13 16:09, Like Xu wrote: >> Hi all, >> >> Please help review this new version for the Kenrel 5.9 release. >> >> Now, you may apply the last two qemu-devel patches to the upstream >> qemu and try the guest LBR feature with '-cpu host' command line. >> >> v11->v12 Changelog: >> - apply "Signed-off-by" form PeterZ and his codes for the perf subsystem; >> - add validity checks before expose LBR via MSR_IA32_PERF_CAPABILITIES; >> - refactor MSR_IA32_DEBUGCTLMSR emulation with validity check; >> - reorder "perf_event_attr" fields according to how they're declared; >> - replace event_is_oncpu() with "event->state" check; >> - make LBR emualtion specific to vmx rather than x86 generic; >> - move pass-through LBR code to vmx.c instead of pmu_intel.c; >> - add vmx_lbr_en/disable_passthrough layer to make code readable; >> - rewrite pmu availability check with vmx_passthrough_lbr_msrs(); >> >> You may check more details in each commit. >> >> Previous: >> https://lore.kernel.org/kvm/20200514083054.62538-1-like.xu@linux.intel.com/ >> >> --- > ... >> >> Wei Wang (1): >> perf/x86: Fix variable types for LBR registers > Like Xu (10): >> perf/x86/core: Refactor hw->idx checks and cleanup >> perf/x86/lbr: Add interface to get LBR information >> perf/x86: Add constraint to create guest LBR event without hw counter >> perf/x86: Keep LBR records unchanged in host context for guest usage > > Hi Peter, > Would you like to add "Acked-by" to the first three perf patches ? > >> KVM: vmx/pmu: Expose LBR to guest via MSR_IA32_PERF_CAPABILITIES >> KVM: vmx/pmu: Unmask LBR fields in the MSR_IA32_DEBUGCTLMSR emualtion >> KVM: vmx/pmu: Pass-through LBR msrs when guest LBR event is scheduled >> KVM: vmx/pmu: Emulate legacy freezing LBRs on virtual PMI >> KVM: vmx/pmu: Reduce the overhead of LBR pass-through or cancellation >> KVM: vmx/pmu: Release guest LBR event via lazy release mechanism >> > > Hi Paolo, > Would you like to take a moment to review the KVM part for this feature ? > > Thanks, > Like Xu > >> >> Qemu-devel: >> target/i386: add -cpu,lbr=true support to enable guest LBR >> >> arch/x86/events/core.c | 26 +-- >> arch/x86/events/intel/core.c | 109 ++++++++----- >> arch/x86/events/intel/lbr.c | 51 +++++- >> arch/x86/events/perf_event.h | 8 +- >> arch/x86/include/asm/perf_event.h | 34 +++- >> arch/x86/kvm/pmu.c | 12 +- >> arch/x86/kvm/pmu.h | 5 + >> arch/x86/kvm/vmx/capabilities.h | 23 ++- >> arch/x86/kvm/vmx/pmu_intel.c | 253 +++++++++++++++++++++++++++++- >> arch/x86/kvm/vmx/vmx.c | 86 +++++++++- >> arch/x86/kvm/vmx/vmx.h | 17 ++ >> arch/x86/kvm/x86.c | 13 -- >> 12 files changed, 559 insertions(+), 78 deletions(-) >> >
On Sat, Jun 13, 2020 at 04:09:45PM +0800, Like Xu wrote: > Like Xu (10): > perf/x86/core: Refactor hw->idx checks and cleanup > perf/x86/lbr: Add interface to get LBR information > perf/x86: Add constraint to create guest LBR event without hw counter > perf/x86: Keep LBR records unchanged in host context for guest usage > Wei Wang (1): > perf/x86: Fix variable types for LBR registers > arch/x86/events/core.c | 26 +-- > arch/x86/events/intel/core.c | 109 ++++++++----- > arch/x86/events/intel/lbr.c | 51 +++++- > arch/x86/events/perf_event.h | 8 +- > arch/x86/include/asm/perf_event.h | 34 +++- These look good to me; but at the same time Kan is sending me Architectural LBR patches. Kan, if I take these perf patches and stick them in a tip/perf/vlbr topic branch, can you rebase the arch lbr stuff on top, or is there anything in the arch-lbr series that badly conflicts with this work? Paolo, would that topic branch work for you too, to then stick these patches in top? > KVM: vmx/pmu: Expose LBR to guest via MSR_IA32_PERF_CAPABILITIES > KVM: vmx/pmu: Unmask LBR fields in the MSR_IA32_DEBUGCTLMSR emualtion > KVM: vmx/pmu: Pass-through LBR msrs when guest LBR event is scheduled > KVM: vmx/pmu: Emulate legacy freezing LBRs on virtual PMI > KVM: vmx/pmu: Reduce the overhead of LBR pass-through or cancellation > KVM: vmx/pmu: Release guest LBR event via lazy release mechanism > arch/x86/kvm/pmu.c | 12 +- > arch/x86/kvm/pmu.h | 5 + > arch/x86/kvm/vmx/capabilities.h | 23 ++- > arch/x86/kvm/vmx/pmu_intel.c | 253 +++++++++++++++++++++++++++++- > arch/x86/kvm/vmx/vmx.c | 86 +++++++++- > arch/x86/kvm/vmx/vmx.h | 17 ++ > arch/x86/kvm/x86.c | 13 -- > 12 files changed, 559 insertions(+), 78 deletions(-)
On 7/2/2020 3:40 AM, Peter Zijlstra wrote: > On Sat, Jun 13, 2020 at 04:09:45PM +0800, Like Xu wrote: >> Like Xu (10): >> perf/x86/core: Refactor hw->idx checks and cleanup >> perf/x86/lbr: Add interface to get LBR information >> perf/x86: Add constraint to create guest LBR event without hw counter >> perf/x86: Keep LBR records unchanged in host context for guest usage > >> Wei Wang (1): >> perf/x86: Fix variable types for LBR registers > >> arch/x86/events/core.c | 26 +-- >> arch/x86/events/intel/core.c | 109 ++++++++----- >> arch/x86/events/intel/lbr.c | 51 +++++- >> arch/x86/events/perf_event.h | 8 +- >> arch/x86/include/asm/perf_event.h | 34 +++- > > These look good to me; but at the same time Kan is sending me > Architectural LBR patches. > > Kan, if I take these perf patches and stick them in a tip/perf/vlbr > topic branch, can you rebase the arch lbr stuff on top, or is there > anything in the arch-lbr series that badly conflicts with this work? > Yes, I can rebase the arch lbr patches on top of them. Please push the tip/perf/vlbr branch, so I can pull and rebase my patches. Thanks, Kan
On Thu, Jul 02, 2020 at 09:11:06AM -0400, Liang, Kan wrote: > On 7/2/2020 3:40 AM, Peter Zijlstra wrote: > > On Sat, Jun 13, 2020 at 04:09:45PM +0800, Like Xu wrote: > > > Like Xu (10): > > > perf/x86/core: Refactor hw->idx checks and cleanup > > > perf/x86/lbr: Add interface to get LBR information > > > perf/x86: Add constraint to create guest LBR event without hw counter > > > perf/x86: Keep LBR records unchanged in host context for guest usage > > > > > Wei Wang (1): > > > perf/x86: Fix variable types for LBR registers > > > > > arch/x86/events/core.c | 26 +-- > > > arch/x86/events/intel/core.c | 109 ++++++++----- > > > arch/x86/events/intel/lbr.c | 51 +++++- > > > arch/x86/events/perf_event.h | 8 +- > > > arch/x86/include/asm/perf_event.h | 34 +++- > > > > These look good to me; but at the same time Kan is sending me > > Architectural LBR patches. > > > > Kan, if I take these perf patches and stick them in a tip/perf/vlbr > > topic branch, can you rebase the arch lbr stuff on top, or is there > > anything in the arch-lbr series that badly conflicts with this work? > > > > Yes, I can rebase the arch lbr patches on top of them. > Please push the tip/perf/vlbr branch, so I can pull and rebase my patches. For now I have: git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/vlbr Once the 0day robot comes back all-green, I'll push it out to tip/perf/vlbr and merge it into tip/perf/core. Thanks!
On Thu, Jul 02, 2020 at 03:58:42PM +0200, Peter Zijlstra wrote: > On Thu, Jul 02, 2020 at 09:11:06AM -0400, Liang, Kan wrote: > > On 7/2/2020 3:40 AM, Peter Zijlstra wrote: > > > On Sat, Jun 13, 2020 at 04:09:45PM +0800, Like Xu wrote: > > > > Like Xu (10): > > > > perf/x86/core: Refactor hw->idx checks and cleanup > > > > perf/x86/lbr: Add interface to get LBR information > > > > perf/x86: Add constraint to create guest LBR event without hw counter > > > > perf/x86: Keep LBR records unchanged in host context for guest usage > > > > > > > Wei Wang (1): > > > > perf/x86: Fix variable types for LBR registers > > > > > > > arch/x86/events/core.c | 26 +-- > > > > arch/x86/events/intel/core.c | 109 ++++++++----- > > > > arch/x86/events/intel/lbr.c | 51 +++++- > > > > arch/x86/events/perf_event.h | 8 +- > > > > arch/x86/include/asm/perf_event.h | 34 +++- > > > > > > These look good to me; but at the same time Kan is sending me > > > Architectural LBR patches. > > > > > > Kan, if I take these perf patches and stick them in a tip/perf/vlbr > > > topic branch, can you rebase the arch lbr stuff on top, or is there > > > anything in the arch-lbr series that badly conflicts with this work? > > > > > > > Yes, I can rebase the arch lbr patches on top of them. > > Please push the tip/perf/vlbr branch, so I can pull and rebase my patches. > > For now I have: > > git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/vlbr > > Once the 0day robot comes back all-green, I'll push it out to > tip/perf/vlbr and merge it into tip/perf/core. tip/perf/vlbr now exists, thanks!
On 2020/7/3 15:56, Peter Zijlstra wrote: > On Thu, Jul 02, 2020 at 03:58:42PM +0200, Peter Zijlstra wrote: >> On Thu, Jul 02, 2020 at 09:11:06AM -0400, Liang, Kan wrote: >>> On 7/2/2020 3:40 AM, Peter Zijlstra wrote: >>>> On Sat, Jun 13, 2020 at 04:09:45PM +0800, Like Xu wrote: >>>>> Like Xu (10): >>>>> perf/x86/core: Refactor hw->idx checks and cleanup >>>>> perf/x86/lbr: Add interface to get LBR information >>>>> perf/x86: Add constraint to create guest LBR event without hw counter >>>>> perf/x86: Keep LBR records unchanged in host context for guest usage >>>>> Wei Wang (1): >>>>> perf/x86: Fix variable types for LBR registers >>>>> arch/x86/events/core.c | 26 +-- >>>>> arch/x86/events/intel/core.c | 109 ++++++++----- >>>>> arch/x86/events/intel/lbr.c | 51 +++++- >>>>> arch/x86/events/perf_event.h | 8 +- >>>>> arch/x86/include/asm/perf_event.h | 34 +++- >>>> These look good to me; but at the same time Kan is sending me >>>> Architectural LBR patches. >>>> >>>> Kan, if I take these perf patches and stick them in a tip/perf/vlbr >>>> topic branch, can you rebase the arch lbr stuff on top, or is there >>>> anything in the arch-lbr series that badly conflicts with this work? >>>> >>> Yes, I can rebase the arch lbr patches on top of them. >>> Please push the tip/perf/vlbr branch, so I can pull and rebase my patches. >> For now I have: >> >> git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/vlbr >> >> Once the 0day robot comes back all-green, I'll push it out to >> tip/perf/vlbr and merge it into tip/perf/core. > tip/perf/vlbr now exists, thanks! Hi Peter, Thanks for your patience and professional support on this feature! Thanks, Like Xu