From: Marc Zyngier <maz@kernel.org>
To: Ricardo Koller <ricarkol@google.com>
Cc: pbonzini@redhat.com, oupton@google.com, yuzenghui@huawei.com,
dmatlack@google.com, kvm@vger.kernel.org, kvmarm@lists.linux.dev,
qperret@google.com, catalin.marinas@arm.com,
andrew.jones@linux.dev, seanjc@google.com,
alexandru.elisei@arm.com, suzuki.poulose@arm.com,
eric.auger@redhat.com, gshan@redhat.com, reijiw@google.com,
rananta@google.com, bgardon@google.com, ricarkol@gmail.com
Subject: Re: [PATCH v6 12/12] KVM: arm64: Use local TLBI on permission relaxation
Date: Sun, 12 Mar 2023 13:22:40 +0000 [thread overview]
Message-ID: <87356a5ckf.wl-maz@kernel.org> (raw)
In-Reply-To: <20230307034555.39733-13-ricarkol@google.com>
On Tue, 07 Mar 2023 03:45:55 +0000,
Ricardo Koller <ricarkol@google.com> wrote:
>
> From: Marc Zyngier <maz@kernel.org>
Thanks for writing a commit message for my hacks!
>
> Broadcasted TLB invalidations (TLBI) are usually less performant than
More precisely, TLBIs targeting the Inner Shareable domain. Also,
's/broadcasted/broadcast/', as this is an adjective and not a verb
indicative of the past tense..
> their local variant. In particular, we observed some implementations
non-shareable rather than local. 'Local' has all sort of odd
implementation specific meanings (local to *what* is the usual
question that follows...).
> that take millliseconds to complete parallel broadcasted TLBIs.
>
> It's safe to use local, non-shareable, TLBIs when relaxing permissions
s/local//
> on a PTE in the KVM case for a couple of reasons. First, according to
> the ARM Arm (DDI 0487H.a D5-4913), permission relaxation does not need
> break-before-make.
This requires some more details, and references to the latest revision
of the ARM ARM (0487I.a). In that particular revision, the relevant
information is contained in D8.13.1 "Using break-before-make when
updating translation table entries", and more importantly in the rule
R_WHZWS, which states that only a change of output address or block
size require a BBM.
> Second, the VTTBR_EL2.CnP==0 case, where each PE
> has its own TLB entry for the same page, is tolerated correctly by KVM
> when doing permission relaxation. Not having changes broadcasted to
> all PEs is correct for this case, as it's safe to have other PEs fault
> on permission on the same page.
I'm not sure mentioning CnP is relevant here. If CnP==1, the TLBI will
nuke the TLB visible by the sibling PE, but not any other. So this is
always a partial TLB invalidation, irrespective of CnP.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2023-03-12 13:24 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-07 3:45 [PATCH v6 00/12] Implement Eager Page Splitting for ARM Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 01/12] KVM: arm64: Rename free_removed to free_unlinked Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 02/12] KVM: arm64: Add KVM_PGTABLE_WALK ctx->flags for skipping BBM and CMO Ricardo Koller
2023-03-12 10:49 ` Marc Zyngier
2023-03-13 18:49 ` Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 03/12] KVM: arm64: Add helper for creating unlinked stage2 subtrees Ricardo Koller
2023-03-12 11:06 ` Marc Zyngier
2023-03-13 22:23 ` Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 04/12] KVM: arm64: Add kvm_pgtable_stage2_split() Ricardo Koller
2023-03-12 11:35 ` Marc Zyngier
2023-03-13 23:58 ` Ricardo Koller
2023-03-15 18:09 ` Marc Zyngier
2023-03-15 18:51 ` Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 05/12] KVM: arm64: Refactor kvm_arch_commit_memory_region() Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 06/12] KVM: arm64: Add kvm_uninit_stage2_mmu() Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 07/12] KVM: arm64: Export kvm_are_all_memslots_empty() Ricardo Koller
2023-03-12 11:39 ` Marc Zyngier
2023-03-13 15:18 ` Sean Christopherson
2023-03-14 10:18 ` Marc Zyngier
2023-03-15 21:00 ` Sean Christopherson
2023-03-07 3:45 ` [PATCH v6 08/12] KVM: arm64: Add KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE Ricardo Koller
2023-03-12 11:56 ` Marc Zyngier
2023-03-24 7:41 ` Ricardo Koller
2023-03-29 4:50 ` Reiji Watanabe
2023-04-10 20:04 ` Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 09/12] KVM: arm64: Split huge pages when dirty logging is enabled Ricardo Koller
2023-03-12 12:54 ` Marc Zyngier
2023-04-10 18:32 ` Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 10/12] KVM: arm64: Open-code kvm_mmu_write_protect_pt_masked() Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 11/12] KVM: arm64: Split huge pages during KVM_CLEAR_DIRTY_LOG Ricardo Koller
2023-03-12 13:01 ` Marc Zyngier
2023-04-10 18:26 ` Ricardo Koller
2023-03-07 3:45 ` [PATCH v6 12/12] KVM: arm64: Use local TLBI on permission relaxation Ricardo Koller
2023-03-12 13:22 ` Marc Zyngier [this message]
2023-04-10 18:22 ` Ricardo Koller
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=87356a5ckf.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=alexandru.elisei@arm.com \
--cc=andrew.jones@linux.dev \
--cc=bgardon@google.com \
--cc=catalin.marinas@arm.com \
--cc=dmatlack@google.com \
--cc=eric.auger@redhat.com \
--cc=gshan@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=oupton@google.com \
--cc=pbonzini@redhat.com \
--cc=qperret@google.com \
--cc=rananta@google.com \
--cc=reijiw@google.com \
--cc=ricarkol@gmail.com \
--cc=ricarkol@google.com \
--cc=seanjc@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;
as well as URLs for NNTP newsgroup(s).