From: Oliver Upton <oliver.upton@linux.dev>
To: Marc Zyngier <maz@kernel.org>
Cc: kvmarm@lists.linux.dev, Joey Gouly <joey.gouly@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
Mingwei Zhang <mizhang@google.com>,
Colton Lewis <coltonlewis@google.com>,
Raghavendra Rao Ananta <rananta@google.com>,
James Clark <james.clark@linaro.org>
Subject: Re: [PATCH v3 12/16] KVM: arm64: Compute MDCR_EL2 at vcpu_load()
Date: Thu, 19 Dec 2024 10:00:24 -0800 [thread overview]
Message-ID: <Z2RfONQgWszZBBJx@linux.dev> (raw)
In-Reply-To: <86ed24rg0h.wl-maz@kernel.org>
On Wed, Dec 18, 2024 at 06:40:46PM +0000, Marc Zyngier wrote:
> On Mon, 09 Dec 2024 18:09:22 +0000,
> Oliver Upton <oliver.upton@linux.dev> wrote:
> > @@ -288,6 +270,12 @@ void kvm_debug_set_guest_ownership(struct kvm_vcpu *vcpu)
> >
> > WARN_ON_ONCE(vcpu->arch.debug_owner == VCPU_DEBUG_GUEST_OWNED);
> > vcpu->arch.debug_owner = VCPU_DEBUG_GUEST_OWNED;
> > +
> > + preempt_disable();
> > + kvm_arm_setup_mdcr_el2(vcpu);
> > + if (has_vhe())
> > + write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
> > + preempt_enable();
>
> I'm not confident that the preemption_disable() does anything.
> Specially given that it doesn't include setting the ownership as part
> of the critical section. So if that works at it is now, then the
> critical section is pointless.
We use percpu data to construct mdcr_el2, so disabling preemption
ensures that we use the right copy + stick mdcr in the right CPU.
But point taken about guest ownership, nothing stops preemption from
blowing away the GUEST_OWNED state.
> I also find it rather fragile that we have multiple places where we
> write MDCR_EL2, and I would love this to go for good. Any idea?
Totally agree, that was at least one of the motivators for this series
originally. For v4 I'm planning to hoist the preempt_disable() + programming
of MDCR_EL2 into kvm_arm_setup_mdcr_el2(), which would be shared w/
vcpu_load() and hide the details of how MDCR gets set up.
I still want us to have a way of reconfiguring MDCR_EL2 on the fly to
lazily restore the debug registers without going through an entire
put/load. I'm thinking that eventually we can do the same thing for the
PMU when Colton + co have partitioned PMU support worked out.
--
Thanks,
Oliver
next prev parent reply other threads:[~2024-12-19 18:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-09 18:09 [PATCH v3 00/16] KVM: arm64: Debug cleanups Oliver Upton
2024-12-09 18:09 ` [PATCH v3 01/16] KVM: arm64: Drop MDSCR_EL1_DEBUG_MASK Oliver Upton
2024-12-09 18:09 ` [PATCH v3 02/16] KVM: arm64: Get rid of __kvm_get_mdcr_el2() and related warts Oliver Upton
2024-12-09 18:09 ` [PATCH v3 03/16] KVM: arm64: Track presence of SPE/TRBE in kvm_host_data instead of vCPU Oliver Upton
2024-12-09 18:09 ` [PATCH v3 04/16] KVM: arm64: Move host SME/SVE tracking flags to host data Oliver Upton
2024-12-09 18:09 ` [PATCH v3 05/16] KVM: arm64: Evaluate debug owner at vcpu_load() Oliver Upton
2024-12-09 18:09 ` [PATCH v3 06/16] KVM: arm64: Clean up KVM_SET_GUEST_DEBUG handler Oliver Upton
2024-12-09 18:09 ` [PATCH v3 07/16] KVM: arm64: Select debug state to save/restore based on debug owner Oliver Upton
2024-12-09 18:09 ` [PATCH v3 08/16] KVM: arm64: Remove debug tracepoints Oliver Upton
2024-12-09 18:09 ` [PATCH v3 09/16] KVM: arm64: Remove vestiges of debug_ptr Oliver Upton
2024-12-09 18:09 ` [PATCH v3 10/16] KVM: arm64: Use debug_owner to track if debug regs need save/restore Oliver Upton
2024-12-18 18:11 ` Marc Zyngier
2024-12-18 20:36 ` Oliver Upton
2024-12-09 18:09 ` [PATCH v3 11/16] KVM: arm64: Reload vCPU for accesses to OSLAR_EL1 Oliver Upton
2024-12-09 18:09 ` [PATCH v3 12/16] KVM: arm64: Compute MDCR_EL2 at vcpu_load() Oliver Upton
2024-12-18 18:40 ` Marc Zyngier
2024-12-19 18:00 ` Oliver Upton [this message]
2024-12-19 18:16 ` Marc Zyngier
2024-12-09 18:09 ` [PATCH v3 13/16] KVM: arm64: Don't hijack guest context MDSCR_EL1 Oliver Upton
2024-12-09 18:09 ` [PATCH v3 14/16] KVM: arm64: Manage software step state at load/put Oliver Upton
2024-12-09 18:09 ` [PATCH v3 15/16] KVM: arm64: nv: Honor MDCR_EL2.TDE routing for debug exceptions Oliver Upton
2024-12-09 18:09 ` [PATCH v3 16/16] KVM: arm64: Avoid reading ID_AA64DFR0_EL1 for debug save/restore Oliver Upton
2024-12-10 10:30 ` [PATCH v3 00/16] KVM: arm64: Debug cleanups James Clark
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=Z2RfONQgWszZBBJx@linux.dev \
--to=oliver.upton@linux.dev \
--cc=coltonlewis@google.com \
--cc=james.clark@linaro.org \
--cc=joey.gouly@arm.com \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=mizhang@google.com \
--cc=rananta@google.com \
--cc=suzuki.poulose@arm.com \
--cc=yuzenghui@huawei.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.