From: Marc Zyngier <maz@kernel.org>
To: Oliver Upton <oliver.upton@linux.dev>
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 18:16:02 +0000 [thread overview]
Message-ID: <86wmfvpmhp.wl-maz@kernel.org> (raw)
In-Reply-To: <Z2RfONQgWszZBBJx@linux.dev>
On Thu, 19 Dec 2024 18:00:24 +0000,
Oliver Upton <oliver.upton@linux.dev> wrote:
>
> 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.
Ah crap, I missed the copy of PMCR_EL0.N. Fair enough then.
>
> 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.
Yeah, something like that is probably OK, at least for now.
> 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.
A full load/put is overkill indeed. But something more lightweight and
limited to the debug stuff may be useful. That may cause some
restructuring, but probably worth it.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2024-12-19 18:16 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
2024-12-19 18:16 ` Marc Zyngier [this message]
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=86wmfvpmhp.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=coltonlewis@google.com \
--cc=james.clark@linaro.org \
--cc=joey.gouly@arm.com \
--cc=kvmarm@lists.linux.dev \
--cc=mizhang@google.com \
--cc=oliver.upton@linux.dev \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox