All of lore.kernel.org
 help / color / mirror / Atom feed
From: Punit Agrawal <punit.agrawal@arm.com>
To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Cc: Mark Rutland <mark.rutland@arm.com>,
	Christoffer Dall <christoffer.dall@linaro.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Ingo Molnar <mingo@redhat.com>, Will Deacon <will.deacon@arm.com>,
	Punit Agrawal <punit.agrawal@arm.com>
Subject: [RFC PATCH 5/7] arm64/kvm: hyp: tlb: use __tlbi() helper
Date: Tue, 16 Aug 2016 11:45:10 +0100	[thread overview]
Message-ID: <1471344312-26685-6-git-send-email-punit.agrawal@arm.com> (raw)
In-Reply-To: <1471344312-26685-1-git-send-email-punit.agrawal@arm.com>

From: Mark Rutland <mark.rutland@arm.com>

Now that we have a __tlbi() helper, make use of this in the arm64 KVM hyp
code to get rid of asm() boilerplate. At the same time, we simplify
__tlb_flush_vm_context by using __flush_icache_all(), as this has the
appropriate instruction cache maintenance and barrier.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
[ rename tlbi -> __tlbi, convert additional sites, update commit log ]
Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
---
 arch/arm64/kvm/hyp/tlb.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c
index be8177c..4cda100 100644
--- a/arch/arm64/kvm/hyp/tlb.c
+++ b/arch/arm64/kvm/hyp/tlb.c
@@ -16,6 +16,7 @@
  */
 
 #include <asm/kvm_hyp.h>
+#include <asm/tlbflush.h>
 
 static void __hyp_text __tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
 {
@@ -32,7 +33,7 @@ static void __hyp_text __tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
 	 * whole of Stage-1. Weep...
 	 */
 	ipa >>= 12;
-	asm volatile("tlbi ipas2e1is, %0" : : "r" (ipa));
+	__tlbi(ipas2e1is, ipa);
 
 	/*
 	 * We have to ensure completion of the invalidation at Stage-2,
@@ -41,7 +42,7 @@ static void __hyp_text __tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
 	 * the Stage-1 invalidation happened first.
 	 */
 	dsb(ish);
-	asm volatile("tlbi vmalle1is" : : );
+	__tlbi(vmalle1is);
 	dsb(ish);
 	isb();
 
@@ -60,7 +61,7 @@ static void __hyp_text __tlb_flush_vmid(struct kvm *kvm)
 	write_sysreg(kvm->arch.vttbr, vttbr_el2);
 	isb();
 
-	asm volatile("tlbi vmalls12e1is" : : );
+	__tlbi(vmalls12e1is);
 	dsb(ish);
 	isb();
 
@@ -72,9 +73,8 @@ __alias(__tlb_flush_vmid) void __kvm_tlb_flush_vmid(struct kvm *kvm);
 static void __hyp_text __tlb_flush_vm_context(void)
 {
 	dsb(ishst);
-	asm volatile("tlbi alle1is	\n"
-		     "ic ialluis	  ": : );
-	dsb(ish);
+	__tlbi(alle1is);
+	__flush_icache_all(); /* contains a dsb(ish) */
 }
 
 __alias(__tlb_flush_vm_context) void __kvm_flush_vm_context(void);
-- 
2.8.1

WARNING: multiple messages have this Message-ID (diff)
From: punit.agrawal@arm.com (Punit Agrawal)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 5/7] arm64/kvm: hyp: tlb: use __tlbi() helper
Date: Tue, 16 Aug 2016 11:45:10 +0100	[thread overview]
Message-ID: <1471344312-26685-6-git-send-email-punit.agrawal@arm.com> (raw)
In-Reply-To: <1471344312-26685-1-git-send-email-punit.agrawal@arm.com>

From: Mark Rutland <mark.rutland@arm.com>

Now that we have a __tlbi() helper, make use of this in the arm64 KVM hyp
code to get rid of asm() boilerplate. At the same time, we simplify
__tlb_flush_vm_context by using __flush_icache_all(), as this has the
appropriate instruction cache maintenance and barrier.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
[ rename tlbi -> __tlbi, convert additional sites, update commit log ]
Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
---
 arch/arm64/kvm/hyp/tlb.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c
index be8177c..4cda100 100644
--- a/arch/arm64/kvm/hyp/tlb.c
+++ b/arch/arm64/kvm/hyp/tlb.c
@@ -16,6 +16,7 @@
  */
 
 #include <asm/kvm_hyp.h>
+#include <asm/tlbflush.h>
 
 static void __hyp_text __tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
 {
@@ -32,7 +33,7 @@ static void __hyp_text __tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
 	 * whole of Stage-1. Weep...
 	 */
 	ipa >>= 12;
-	asm volatile("tlbi ipas2e1is, %0" : : "r" (ipa));
+	__tlbi(ipas2e1is, ipa);
 
 	/*
 	 * We have to ensure completion of the invalidation at Stage-2,
@@ -41,7 +42,7 @@ static void __hyp_text __tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa)
 	 * the Stage-1 invalidation happened first.
 	 */
 	dsb(ish);
-	asm volatile("tlbi vmalle1is" : : );
+	__tlbi(vmalle1is);
 	dsb(ish);
 	isb();
 
@@ -60,7 +61,7 @@ static void __hyp_text __tlb_flush_vmid(struct kvm *kvm)
 	write_sysreg(kvm->arch.vttbr, vttbr_el2);
 	isb();
 
-	asm volatile("tlbi vmalls12e1is" : : );
+	__tlbi(vmalls12e1is);
 	dsb(ish);
 	isb();
 
@@ -72,9 +73,8 @@ __alias(__tlb_flush_vmid) void __kvm_tlb_flush_vmid(struct kvm *kvm);
 static void __hyp_text __tlb_flush_vm_context(void)
 {
 	dsb(ishst);
-	asm volatile("tlbi alle1is	\n"
-		     "ic ialluis	  ": : );
-	dsb(ish);
+	__tlbi(alle1is);
+	__flush_icache_all(); /* contains a dsb(ish) */
 }
 
 __alias(__tlb_flush_vm_context) void __kvm_flush_vm_context(void);
-- 
2.8.1

  parent reply	other threads:[~2016-08-16 10:47 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-16 10:45 [RFC PATCH 0/7] Add support for monitoring guest TLB operations Punit Agrawal
2016-08-16 10:45 ` Punit Agrawal
2016-08-16 10:45 ` [RFC PATCH 1/7] perf/trace: Add notification for perf trace events Punit Agrawal
2016-08-16 10:45   ` Punit Agrawal
2016-08-31 11:01   ` Punit Agrawal
2016-08-31 11:01     ` Punit Agrawal
2016-08-31 11:01     ` Punit Agrawal
2016-08-16 10:45 ` [RFC PATCH 2/7] KVM: Track the pid of the VM process Punit Agrawal
2016-08-16 10:45   ` Punit Agrawal
2016-08-16 10:45 ` [RFC PATCH 3/7] KVM: arm/arm64: Register perf trace event notifier Punit Agrawal
2016-08-16 10:45   ` Punit Agrawal
2016-08-16 10:45 ` [RFC PATCH 4/7] arm64: tlbflush.h: add __tlbi() macro Punit Agrawal
2016-08-16 10:45   ` Punit Agrawal
2016-08-19 13:24   ` Will Deacon
2016-08-19 13:24     ` Will Deacon
2016-08-19 13:24     ` Will Deacon
2016-08-19 13:34     ` Punit Agrawal
2016-08-19 13:34       ` Punit Agrawal
2016-08-16 10:45 ` Punit Agrawal [this message]
2016-08-16 10:45   ` [RFC PATCH 5/7] arm64/kvm: hyp: tlb: use __tlbi() helper Punit Agrawal
2016-08-16 10:45 ` [RFC PATCH 6/7] arm64: KVM: Handle trappable TLB instructions Punit Agrawal
2016-08-16 10:45   ` Punit Agrawal
2016-08-19 15:18   ` Will Deacon
2016-08-19 15:18     ` Will Deacon
2016-08-24 10:40     ` Punit Agrawal
2016-08-24 10:40       ` Punit Agrawal
2016-08-26  9:37       ` Punit Agrawal
2016-08-26  9:37         ` Punit Agrawal
2016-08-26 12:21         ` Marc Zyngier
2016-08-26 12:21           ` Marc Zyngier
2016-08-26 12:21           ` Marc Zyngier
2016-09-01 14:55         ` Will Deacon
2016-09-01 14:55           ` Will Deacon
2016-09-01 18:29           ` Punit Agrawal
2016-09-01 18:29             ` Punit Agrawal
2016-08-16 10:45 ` [RFC PATCH 7/7] arm64: KVM: Enable selective trapping of " Punit Agrawal
2016-08-16 10:45   ` Punit Agrawal
2016-08-17 15:58 ` [RFC PATCH 0/7] Add support for monitoring guest TLB operations Paolo Bonzini
2016-08-17 15:58   ` Paolo Bonzini
2016-08-17 15:58   ` Paolo Bonzini
2016-08-17 17:01   ` Punit Agrawal
2016-08-17 17:01     ` Punit Agrawal
2016-08-17 17:01     ` Punit Agrawal
2016-08-17 17:02     ` Paolo Bonzini
2016-08-17 17:02       ` Paolo Bonzini
2016-08-17 17:20       ` Punit Agrawal
2016-08-17 17:20         ` Punit Agrawal
2016-08-18  7:04         ` Paolo Bonzini
2016-08-18  7:04           ` Paolo Bonzini

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=1471344312-26685-6-git-send-email-punit.agrawal@arm.com \
    --to=punit.agrawal@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=will.deacon@arm.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.