mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andi Kleen <ak@linux.intel.com>
To: Wei Wang <wei.w.wang@intel.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	pbonzini@redhat.com, kan.liang@intel.com, peterz@infradead.org,
	mingo@redhat.com, rkrcmar@redhat.com, like.xu@intel.com
Subject: Re: [PATCH v2 6/8] perf/x86/intel/lbr: guest requesting KVM for lbr stack save/restore
Date: Thu, 6 Sep 2018 20:27:07 -0700	[thread overview]
Message-ID: <20180907032707.GN27886@tassilo.jf.intel.com> (raw)
In-Reply-To: <1536233456-12173-7-git-send-email-wei.w.wang@intel.com>

On Thu, Sep 06, 2018 at 07:30:54PM +0800, Wei Wang wrote:
> This patch adds an interface to enable a guest to request KVM to save
> and restore the lbr stack on vCPU context switching.
> 
> KVM couldn't capture the info about whether the guest is actively using
> the lbr feature via the lbr enable bit in the debugctl MSR, because that
> control bit is frequently enabled and disabled by the guest, and in some
> csaes, it is disabled even when the guest is actively using the lbr
> feature. For example, perf_pmu_sched_task in the guest disables the bit
> before reading out the lbr stack. In this case, the bit is disabled though
> the guest is still using the lbr feature.
> 
> So, a KVM-specific MSR, MSR_KVM_PV_LBR_CTRL, is used by the guest at a
> proper place to tell KVM if the LBR is actively in use or not. Basically,
> the lbr user callstack mode needs the lbr stack to be saved/restored on a
> context switching, so we set the ACTIVE bit of MSR_KVM_PV_LBR_CTRL only
> when the user callstack mode is used. The KVM hypervisor will add the lbr
> stack save/restore support on vCPU switching after the ACTIVE bit is set.

PV is difficult because it requires changing all the users.

Maybe a better approach would be a lazy restore of the LBRs:

Don't restore the LBRs on context switch, but set the LBR MSRs to intercept.
Then on the first access restore the LBRs and allow direct access to the
MSRs again.

Also when the LBRs haven't been set to direct access the state doesn't
need to be saved.

-Andi


  reply	other threads:[~2018-09-07  3:27 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-06 11:30 [PATCH v2 0/8] Guest LBR Enabling Wei Wang
2018-09-06 11:30 ` [PATCH v2 1/8] perf/x86: add a function to get the lbr stack Wei Wang
2018-09-07  3:28   ` Andi Kleen
2018-09-07  6:45     ` Wei Wang
2018-09-06 11:30 ` [PATCH v2 2/8] KVM/x86: KVM_CAP_X86_GUEST_LBR Wei Wang
2018-09-06 11:30 ` [PATCH v2 3/8] KVM/vmx: Pass through the lbr stack to a guest Wei Wang
2018-09-06 11:30 ` [PATCH v2 4/8] KVM/x86: expose MSR_IA32_PERF_CAPABILITIES to the guest Wei Wang
2018-09-06 11:30 ` [PATCH v2 5/8] KVM/x86: enable the guest to access the debugctl msr Wei Wang
2018-09-06 11:30 ` [PATCH v2 6/8] perf/x86/intel/lbr: guest requesting KVM for lbr stack save/restore Wei Wang
2018-09-07  3:27   ` Andi Kleen [this message]
2018-09-07  5:24     ` Wei Wang
2018-09-07 14:10       ` Andi Kleen
2018-09-07 15:20         ` Wang, Wei W
2018-09-07 20:05           ` Andi Kleen
2018-09-08  1:34             ` Wang, Wei W
2018-09-06 11:30 ` [PATCH v2 7/8] KVM: PMU: support to save/restore the guest lbr stack on vCPU switching Wei Wang
2018-09-07 14:36   ` Jann Horn
2018-09-07 15:21     ` Wang, Wei W
2018-09-18  0:58   ` Gonglei (Arei)
2018-09-18  2:56     ` Andi Kleen
2018-09-18  9:57       ` Wei Wang
2018-09-18 10:34         ` Gonglei (Arei)
2018-09-06 11:30 ` [PATCH v2 8/8] perf/x86/intel/lbr: add the guest_lbr boolean to cpuc Wei Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180907032707.GN27886@tassilo.jf.intel.com \
    --to=ak@linux.intel.com \
    --cc=kan.liang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=like.xu@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rkrcmar@redhat.com \
    --cc=wei.w.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome