All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will@kernel.org>
To: Fuad Tabba <tabba@google.com>
Cc: Andrew Jones <drjones@redhat.com>,
	kvmarm@lists.cs.columbia.edu, maz@kernel.org,
	james.morse@arm.com, alexandru.elisei@arm.com,
	suzuki.poulose@arm.com, mark.rutland@arm.com,
	christoffer.dall@arm.com, pbonzini@redhat.com,
	qperret@google.com, kvm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, kernel-team@android.com
Subject: Re: [PATCH v3 06/15] KVM: arm64: Restore mdcr_el2 from vcpu
Date: Thu, 12 Aug 2021 10:49:14 +0100	[thread overview]
Message-ID: <20210812094914.GJ5912@willie-the-truck> (raw)
In-Reply-To: <CA+EHjTx7q+DeR2dNL9X6jLcqtr=ZZ5YN4WsnnbOUPvtQZP1dSQ@mail.gmail.com>

Hey Fuad,

On Thu, Aug 12, 2021 at 11:28:50AM +0200, Fuad Tabba wrote:
> On Thu, Aug 12, 2021 at 10:46 AM Will Deacon <will@kernel.org> wrote:
> >
> > On Wed, Jul 21, 2021 at 08:37:21AM +0100, Fuad Tabba wrote:
> > > On Tue, Jul 20, 2021 at 3:53 PM Andrew Jones <drjones@redhat.com> wrote:
> > > >
> > > > On Mon, Jul 19, 2021 at 05:03:37PM +0100, Fuad Tabba wrote:
> > > > > On deactivating traps, restore the value of mdcr_el2 from the
> > > > > newly created and preserved host value vcpu context, rather than
> > > > > directly reading the hardware register.
> > > > >
> > > > > Up until and including this patch the two values are the same,
> > > > > i.e., the hardware register and the vcpu one. A future patch will
> > > > > be changing the value of mdcr_el2 on activating traps, and this
> > > > > ensures that its value will be restored.
> > > > >
> > > > > No functional change intended.
> > > >
> > > > I'm probably missing something, but I can't convince myself that the host
> > > > will end up with the same mdcr_el2 value after deactivating traps after
> > > > this patch as before. We clearly now restore whatever we had when
> > > > activating traps (presumably whatever we configured at init_el2_state
> > > > time), but is that equivalent to what we had before with the masking and
> > > > ORing that this patch drops?
> > >
> > > You're right. I thought that these were actually being initialized to
> > > the same values, but having a closer look at the code the mdcr values
> > > are not the same as pre-patch. I will fix this.
> >
> > Can you elaborate on the issue here, please? I was just looking at this
> > but aren't you now relying on __init_el2_debug to configure this, which
> > should be fine?
> 
> I *think* that it should be fine, but as Drew pointed out, the host
> does not end up with the same mdcr_el2 value after the deactivation in
> this patch as it did after deactivation before this patch. In my v4
> (not sent out yet), I have fixed it to ensure that the host does end
> up with the same value as the one before this patch. That should make
> it easier to check that there's no functional change.
> 
> I'll look into it further, and if I can convince myself that there
> aren't any issues and that this patch makes the code cleaner, I will
> add it as a separate patch instead to make reviewing easier.

Cheers. I think the new code might actually be better, as things like
MDCR_EL2.E2PB are RES0 if SPE is not implemented. The init code takes care
to set those only if if probes SPE first, whereas the code you're removing
doesn't seem to check that.

Will

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will@kernel.org>
To: Fuad Tabba <tabba@google.com>
Cc: kernel-team@android.com, kvm@vger.kernel.org, maz@kernel.org,
	pbonzini@redhat.com, kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 06/15] KVM: arm64: Restore mdcr_el2 from vcpu
Date: Thu, 12 Aug 2021 10:49:14 +0100	[thread overview]
Message-ID: <20210812094914.GJ5912@willie-the-truck> (raw)
In-Reply-To: <CA+EHjTx7q+DeR2dNL9X6jLcqtr=ZZ5YN4WsnnbOUPvtQZP1dSQ@mail.gmail.com>

Hey Fuad,

On Thu, Aug 12, 2021 at 11:28:50AM +0200, Fuad Tabba wrote:
> On Thu, Aug 12, 2021 at 10:46 AM Will Deacon <will@kernel.org> wrote:
> >
> > On Wed, Jul 21, 2021 at 08:37:21AM +0100, Fuad Tabba wrote:
> > > On Tue, Jul 20, 2021 at 3:53 PM Andrew Jones <drjones@redhat.com> wrote:
> > > >
> > > > On Mon, Jul 19, 2021 at 05:03:37PM +0100, Fuad Tabba wrote:
> > > > > On deactivating traps, restore the value of mdcr_el2 from the
> > > > > newly created and preserved host value vcpu context, rather than
> > > > > directly reading the hardware register.
> > > > >
> > > > > Up until and including this patch the two values are the same,
> > > > > i.e., the hardware register and the vcpu one. A future patch will
> > > > > be changing the value of mdcr_el2 on activating traps, and this
> > > > > ensures that its value will be restored.
> > > > >
> > > > > No functional change intended.
> > > >
> > > > I'm probably missing something, but I can't convince myself that the host
> > > > will end up with the same mdcr_el2 value after deactivating traps after
> > > > this patch as before. We clearly now restore whatever we had when
> > > > activating traps (presumably whatever we configured at init_el2_state
> > > > time), but is that equivalent to what we had before with the masking and
> > > > ORing that this patch drops?
> > >
> > > You're right. I thought that these were actually being initialized to
> > > the same values, but having a closer look at the code the mdcr values
> > > are not the same as pre-patch. I will fix this.
> >
> > Can you elaborate on the issue here, please? I was just looking at this
> > but aren't you now relying on __init_el2_debug to configure this, which
> > should be fine?
> 
> I *think* that it should be fine, but as Drew pointed out, the host
> does not end up with the same mdcr_el2 value after the deactivation in
> this patch as it did after deactivation before this patch. In my v4
> (not sent out yet), I have fixed it to ensure that the host does end
> up with the same value as the one before this patch. That should make
> it easier to check that there's no functional change.
> 
> I'll look into it further, and if I can convince myself that there
> aren't any issues and that this patch makes the code cleaner, I will
> add it as a separate patch instead to make reviewing easier.

Cheers. I think the new code might actually be better, as things like
MDCR_EL2.E2PB are RES0 if SPE is not implemented. The init code takes care
to set those only if if probes SPE first, whereas the code you're removing
doesn't seem to check that.

Will
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will@kernel.org>
To: Fuad Tabba <tabba@google.com>
Cc: Andrew Jones <drjones@redhat.com>,
	kvmarm@lists.cs.columbia.edu, maz@kernel.org,
	james.morse@arm.com, alexandru.elisei@arm.com,
	suzuki.poulose@arm.com, mark.rutland@arm.com,
	christoffer.dall@arm.com, pbonzini@redhat.com,
	qperret@google.com, kvm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, kernel-team@android.com
Subject: Re: [PATCH v3 06/15] KVM: arm64: Restore mdcr_el2 from vcpu
Date: Thu, 12 Aug 2021 10:49:14 +0100	[thread overview]
Message-ID: <20210812094914.GJ5912@willie-the-truck> (raw)
In-Reply-To: <CA+EHjTx7q+DeR2dNL9X6jLcqtr=ZZ5YN4WsnnbOUPvtQZP1dSQ@mail.gmail.com>

Hey Fuad,

On Thu, Aug 12, 2021 at 11:28:50AM +0200, Fuad Tabba wrote:
> On Thu, Aug 12, 2021 at 10:46 AM Will Deacon <will@kernel.org> wrote:
> >
> > On Wed, Jul 21, 2021 at 08:37:21AM +0100, Fuad Tabba wrote:
> > > On Tue, Jul 20, 2021 at 3:53 PM Andrew Jones <drjones@redhat.com> wrote:
> > > >
> > > > On Mon, Jul 19, 2021 at 05:03:37PM +0100, Fuad Tabba wrote:
> > > > > On deactivating traps, restore the value of mdcr_el2 from the
> > > > > newly created and preserved host value vcpu context, rather than
> > > > > directly reading the hardware register.
> > > > >
> > > > > Up until and including this patch the two values are the same,
> > > > > i.e., the hardware register and the vcpu one. A future patch will
> > > > > be changing the value of mdcr_el2 on activating traps, and this
> > > > > ensures that its value will be restored.
> > > > >
> > > > > No functional change intended.
> > > >
> > > > I'm probably missing something, but I can't convince myself that the host
> > > > will end up with the same mdcr_el2 value after deactivating traps after
> > > > this patch as before. We clearly now restore whatever we had when
> > > > activating traps (presumably whatever we configured at init_el2_state
> > > > time), but is that equivalent to what we had before with the masking and
> > > > ORing that this patch drops?
> > >
> > > You're right. I thought that these were actually being initialized to
> > > the same values, but having a closer look at the code the mdcr values
> > > are not the same as pre-patch. I will fix this.
> >
> > Can you elaborate on the issue here, please? I was just looking at this
> > but aren't you now relying on __init_el2_debug to configure this, which
> > should be fine?
> 
> I *think* that it should be fine, but as Drew pointed out, the host
> does not end up with the same mdcr_el2 value after the deactivation in
> this patch as it did after deactivation before this patch. In my v4
> (not sent out yet), I have fixed it to ensure that the host does end
> up with the same value as the one before this patch. That should make
> it easier to check that there's no functional change.
> 
> I'll look into it further, and if I can convince myself that there
> aren't any issues and that this patch makes the code cleaner, I will
> add it as a separate patch instead to make reviewing easier.

Cheers. I think the new code might actually be better, as things like
MDCR_EL2.E2PB are RES0 if SPE is not implemented. The init code takes care
to set those only if if probes SPE first, whereas the code you're removing
doesn't seem to check that.

Will

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-08-12  9:49 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-19 16:03 [PATCH v3 00/15] KVM: arm64: Fixed features for protected VMs Fuad Tabba
2021-07-19 16:03 ` Fuad Tabba
2021-07-19 16:03 ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 01/15] KVM: arm64: placeholder to check if VM is protected Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  8:58   ` Will Deacon
2021-08-12  8:58     ` Will Deacon
2021-08-12  8:58     ` Will Deacon
2021-08-12  9:22     ` Fuad Tabba
2021-08-12  9:22       ` Fuad Tabba
2021-08-12  9:22       ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 02/15] KVM: arm64: Remove trailing whitespace in comment Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  8:59   ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 03/15] KVM: arm64: MDCR_EL2 is a 64-bit register Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 04/15] KVM: arm64: Fix names of config register fields Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 05/15] KVM: arm64: Refactor sys_regs.h,c for nVHE reuse Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-20 13:38   ` Andrew Jones
2021-07-20 13:38     ` [PATCH v3 05/15] KVM: arm64: Refactor sys_regs.h, c " Andrew Jones
2021-07-20 13:38     ` Andrew Jones
2021-07-20 14:03     ` [PATCH v3 05/15] KVM: arm64: Refactor sys_regs.h,c " Fuad Tabba
2021-07-20 14:03       ` [PATCH v3 05/15] KVM: arm64: Refactor sys_regs.h, c " Fuad Tabba
2021-07-20 14:03       ` Fuad Tabba
2021-08-12  8:59   ` [PATCH v3 05/15] KVM: arm64: Refactor sys_regs.h,c " Will Deacon
2021-08-12  8:59     ` [PATCH v3 05/15] KVM: arm64: Refactor sys_regs.h, c " Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 06/15] KVM: arm64: Restore mdcr_el2 from vcpu Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-20 14:52   ` Andrew Jones
2021-07-20 14:52     ` Andrew Jones
2021-07-20 14:52     ` Andrew Jones
2021-07-21  7:37     ` Fuad Tabba
2021-07-21  7:37       ` Fuad Tabba
2021-07-21  7:37       ` Fuad Tabba
2021-08-12  8:46       ` Will Deacon
2021-08-12  8:46         ` Will Deacon
2021-08-12  8:46         ` Will Deacon
2021-08-12  9:28         ` Fuad Tabba
2021-08-12  9:28           ` Fuad Tabba
2021-08-12  9:28           ` Fuad Tabba
2021-08-12  9:49           ` Will Deacon [this message]
2021-08-12  9:49             ` Will Deacon
2021-08-12  9:49             ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 07/15] KVM: arm64: Track value of cptr_el2 in struct kvm_vcpu_arch Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  8:59   ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 08/15] KVM: arm64: Add feature register flag definitions Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  8:59   ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-08-12  9:21     ` Fuad Tabba
2021-08-12  9:21       ` Fuad Tabba
2021-08-12  9:21       ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 09/15] KVM: arm64: Add config register bit definitions Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  8:59   ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-08-12  8:59     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 10/15] KVM: arm64: Guest exit handlers for nVHE hyp Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-03 15:32   ` Will Deacon
2021-08-03 15:32     ` Will Deacon
2021-08-03 15:32     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 11/15] KVM: arm64: Add trap handlers for protected VMs Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  9:45   ` Will Deacon
2021-08-12  9:45     ` Will Deacon
2021-08-12  9:45     ` Will Deacon
2021-08-16 14:39     ` Fuad Tabba
2021-08-16 14:39       ` Fuad Tabba
2021-08-16 14:39       ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 12/15] KVM: arm64: Move sanitized copies of CPU features Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  9:46   ` Will Deacon
2021-08-12  9:46     ` Will Deacon
2021-08-12  9:46     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 13/15] KVM: arm64: Trap access to pVM restricted features Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  9:53   ` Will Deacon
2021-08-12  9:53     ` Will Deacon
2021-08-12  9:53     ` Will Deacon
2021-07-19 16:03 ` [PATCH v3 14/15] KVM: arm64: Handle protected guests at 32 bits Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 19:43   ` Oliver Upton
2021-07-19 19:43     ` Oliver Upton
2021-07-19 19:43     ` Oliver Upton
2021-07-21  8:39     ` Fuad Tabba
2021-07-21  8:39       ` Fuad Tabba
2021-07-21  8:39       ` Fuad Tabba
2021-08-12  9:57   ` Will Deacon
2021-08-12  9:57     ` Will Deacon
2021-08-12  9:57     ` Will Deacon
2021-08-12 13:08     ` Fuad Tabba
2021-08-12 13:08       ` Fuad Tabba
2021-08-12 13:08       ` Fuad Tabba
2021-07-19 16:03 ` [PATCH v3 15/15] KVM: arm64: Restrict protected VM capabilities Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-07-19 16:03   ` Fuad Tabba
2021-08-12  9:59   ` Will Deacon
2021-08-12  9:59     ` Will Deacon
2021-08-12  9:59     ` Will Deacon
2021-08-16 14:40     ` Fuad Tabba
2021-08-16 14:40       ` Fuad Tabba
2021-08-16 14:40       ` Fuad Tabba

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=20210812094914.GJ5912@willie-the-truck \
    --to=will@kernel.org \
    --cc=alexandru.elisei@arm.com \
    --cc=christoffer.dall@arm.com \
    --cc=drjones@redhat.com \
    --cc=james.morse@arm.com \
    --cc=kernel-team@android.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=qperret@google.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tabba@google.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.