From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org
Subject: [PATCH 04/21] target/arm/kvm: Move kvm_arm_verify_ext_dabt_pending and unexport
Date: Wed, 22 Nov 2023 22:42:02 -0600 [thread overview]
Message-ID: <20231123044219.896776-5-richard.henderson@linaro.org> (raw)
In-Reply-To: <20231123044219.896776-1-richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/kvm_arm.h | 10 --------
target/arm/kvm.c | 57 ++++++++++++++++++++++++++++++++++++++++++++
target/arm/kvm64.c | 49 -------------------------------------
3 files changed, 57 insertions(+), 59 deletions(-)
diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h
index fe6d824a52..bb284a47de 100644
--- a/target/arm/kvm_arm.h
+++ b/target/arm/kvm_arm.h
@@ -472,14 +472,4 @@ bool kvm_arm_hw_debug_active(CPUState *cs);
struct kvm_guest_debug_arch;
void kvm_arm_copy_hw_debug_data(struct kvm_guest_debug_arch *ptr);
-/**
- * kvm_arm_verify_ext_dabt_pending:
- * @cs: CPUState
- *
- * Verify the fault status code wrt the Ext DABT injection
- *
- * Returns: true if the fault status code is as expected, false otherwise
- */
-bool kvm_arm_verify_ext_dabt_pending(CPUState *cs);
-
#endif
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index b4836da6b2..696bc63e86 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -793,6 +793,63 @@ int kvm_get_vcpu_events(ARMCPU *cpu)
return 0;
}
+#define ARM64_REG_ESR_EL1 ARM64_SYS_REG(3, 0, 5, 2, 0)
+#define ARM64_REG_TCR_EL1 ARM64_SYS_REG(3, 0, 2, 0, 2)
+
+/*
+ * ESR_EL1
+ * ISS encoding
+ * AARCH64: DFSC, bits [5:0]
+ * AARCH32:
+ * TTBCR.EAE == 0
+ * FS[4] - DFSR[10]
+ * FS[3:0] - DFSR[3:0]
+ * TTBCR.EAE == 1
+ * FS, bits [5:0]
+ */
+#define ESR_DFSC(aarch64, lpae, v) \
+ ((aarch64 || (lpae)) ? ((v) & 0x3F) \
+ : (((v) >> 6) | ((v) & 0x1F)))
+
+#define ESR_DFSC_EXTABT(aarch64, lpae) \
+ ((aarch64) ? 0x10 : (lpae) ? 0x10 : 0x8)
+
+/**
+ * kvm_arm_verify_ext_dabt_pending:
+ * @cs: CPUState
+ *
+ * Verify the fault status code wrt the Ext DABT injection
+ *
+ * Returns: true if the fault status code is as expected, false otherwise
+ */
+static bool kvm_arm_verify_ext_dabt_pending(CPUState *cs)
+{
+ uint64_t dfsr_val;
+
+ if (!kvm_get_one_reg(cs, ARM64_REG_ESR_EL1, &dfsr_val)) {
+ ARMCPU *cpu = ARM_CPU(cs);
+ CPUARMState *env = &cpu->env;
+ int aarch64_mode = arm_feature(env, ARM_FEATURE_AARCH64);
+ int lpae = 0;
+
+ if (!aarch64_mode) {
+ uint64_t ttbcr;
+
+ if (!kvm_get_one_reg(cs, ARM64_REG_TCR_EL1, &ttbcr)) {
+ lpae = arm_feature(env, ARM_FEATURE_LPAE)
+ && (ttbcr & TTBCR_EAE);
+ }
+ }
+ /*
+ * The verification here is based on the DFSC bits
+ * of the ESR_EL1 reg only
+ */
+ return (ESR_DFSC(aarch64_mode, lpae, dfsr_val) ==
+ ESR_DFSC_EXTABT(aarch64_mode, lpae));
+ }
+ return false;
+}
+
void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
{
ARMCPU *cpu = ARM_CPU(cs);
diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 40f459b786..7d937e2539 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -1213,52 +1213,3 @@ bool kvm_arm_handle_debug(CPUState *cs, struct kvm_debug_exit_arch *debug_exit)
return false;
}
-
-#define ARM64_REG_ESR_EL1 ARM64_SYS_REG(3, 0, 5, 2, 0)
-#define ARM64_REG_TCR_EL1 ARM64_SYS_REG(3, 0, 2, 0, 2)
-
-/*
- * ESR_EL1
- * ISS encoding
- * AARCH64: DFSC, bits [5:0]
- * AARCH32:
- * TTBCR.EAE == 0
- * FS[4] - DFSR[10]
- * FS[3:0] - DFSR[3:0]
- * TTBCR.EAE == 1
- * FS, bits [5:0]
- */
-#define ESR_DFSC(aarch64, lpae, v) \
- ((aarch64 || (lpae)) ? ((v) & 0x3F) \
- : (((v) >> 6) | ((v) & 0x1F)))
-
-#define ESR_DFSC_EXTABT(aarch64, lpae) \
- ((aarch64) ? 0x10 : (lpae) ? 0x10 : 0x8)
-
-bool kvm_arm_verify_ext_dabt_pending(CPUState *cs)
-{
- uint64_t dfsr_val;
-
- if (!kvm_get_one_reg(cs, ARM64_REG_ESR_EL1, &dfsr_val)) {
- ARMCPU *cpu = ARM_CPU(cs);
- CPUARMState *env = &cpu->env;
- int aarch64_mode = arm_feature(env, ARM_FEATURE_AARCH64);
- int lpae = 0;
-
- if (!aarch64_mode) {
- uint64_t ttbcr;
-
- if (!kvm_get_one_reg(cs, ARM64_REG_TCR_EL1, &ttbcr)) {
- lpae = arm_feature(env, ARM_FEATURE_LPAE)
- && (ttbcr & TTBCR_EAE);
- }
- }
- /*
- * The verification here is based on the DFSC bits
- * of the ESR_EL1 reg only
- */
- return (ESR_DFSC(aarch64_mode, lpae, dfsr_val) ==
- ESR_DFSC_EXTABT(aarch64_mode, lpae));
- }
- return false;
-}
--
2.34.1
next prev parent reply other threads:[~2023-11-23 4:44 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-23 4:41 [PATCH for-9.0 00/21] target/arm: kvm cleanups Richard Henderson
2023-11-23 4:41 ` [PATCH 01/21] accel/kvm: Make kvm_has_guest_debug static Richard Henderson
2023-11-23 11:30 ` Philippe Mathieu-Daudé
2023-11-26 23:36 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 02/21] target/arm: kvm64: remove a redundant KVM_CAP_SET_GUEST_DEBUG probe Richard Henderson
2023-11-24 12:03 ` Philippe Mathieu-Daudé
2023-11-26 23:39 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 03/21] target/arm/kvm: Merge kvm_arm_init_debug into kvm_arch_init Richard Henderson
2023-11-23 11:31 ` Philippe Mathieu-Daudé
2023-11-26 23:42 ` Gavin Shan
2023-11-23 4:42 ` Richard Henderson [this message]
2023-11-23 11:32 ` [PATCH 04/21] target/arm/kvm: Move kvm_arm_verify_ext_dabt_pending and unexport Philippe Mathieu-Daudé
2023-11-26 23:46 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 05/21] target/arm/kvm: Move kvm_arm_copy_hw_debug_data " Richard Henderson
2023-11-23 11:32 ` Philippe Mathieu-Daudé
2023-11-26 23:48 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 06/21] target/arm/kvm: Move kvm_arm_hw_debug_active " Richard Henderson
2023-11-23 11:34 ` Philippe Mathieu-Daudé
2023-11-26 23:51 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 07/21] target/arm/kvm: Move kvm_arm_handle_debug " Richard Henderson
2023-11-23 11:35 ` Philippe Mathieu-Daudé
2023-11-26 23:53 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 08/21] target/arm/kvm: Unexport kvm_arm_{get, put}_virtual_time Richard Henderson
2023-11-23 11:40 ` Philippe Mathieu-Daudé
2023-11-26 23:55 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 09/21] target/arm/kvm: Inline kvm_arm_steal_time_supported Richard Henderson
2023-11-23 11:41 ` Philippe Mathieu-Daudé
2023-11-26 23:57 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 10/21] target/arm/kvm: Move kvm_arm_get_host_cpu_features and unexport Richard Henderson
2023-11-24 11:37 ` Philippe Mathieu-Daudé
2023-11-27 0:01 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 11/21] target/arm/kvm: Use a switch for kvm_arm_cpreg_level Richard Henderson
2023-11-23 11:42 ` Philippe Mathieu-Daudé
2023-11-27 0:06 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 12/21] target/arm/kvm: Move kvm_arm_cpreg_level and unexport Richard Henderson
2023-11-24 11:34 ` Philippe Mathieu-Daudé
2023-11-27 0:08 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 13/21] target/arm/kvm: Move kvm_arm_reg_syncs_via_cpreg_list " Richard Henderson
2023-11-23 11:43 ` Philippe Mathieu-Daudé
2023-11-27 0:11 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 14/21] target/arm/kvm: Merge kvm64.c into kvm.c Richard Henderson
2023-11-24 11:41 ` Philippe Mathieu-Daudé
2023-11-27 0:14 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 15/21] target/arm/kvm: Unexport kvm_arm_vcpu_init Richard Henderson
2023-11-23 11:44 ` Philippe Mathieu-Daudé
2023-11-27 0:17 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 16/21] target/arm/kvm: Unexport kvm_arm_vcpu_finalize Richard Henderson
2023-11-23 11:44 ` Philippe Mathieu-Daudé
2023-11-27 0:18 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 17/21] target/arm/kvm: Unexport kvm_arm_init_cpreg_list Richard Henderson
2023-11-23 17:33 ` Philippe Mathieu-Daudé
2023-11-27 0:20 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 18/21] target/arm/kvm: Init cap_has_inject_serror_esr in kvm_arch_init Richard Henderson
2023-11-24 11:49 ` Philippe Mathieu-Daudé
2023-11-24 11:54 ` Philippe Mathieu-Daudé
2023-12-11 17:09 ` Richard Henderson
2023-12-11 18:43 ` Philippe Mathieu-Daudé
2023-12-11 18:58 ` Richard Henderson
2023-11-27 0:21 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 19/21] target/arm/kvm: Unexport kvm_{get,put}_vcpu_events Richard Henderson
2023-11-23 17:34 ` Philippe Mathieu-Daudé
2023-11-27 0:23 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 20/21] target/arm/kvm: Unexport and tidy kvm_arm_sync_mpstate_to_{kvm, qemu} Richard Henderson
2023-11-24 12:05 ` Philippe Mathieu-Daudé
2023-12-11 14:34 ` Peter Maydell
2023-12-11 18:43 ` Philippe Mathieu-Daudé
2023-11-27 0:28 ` Gavin Shan
2023-11-23 4:42 ` [PATCH 21/21] target/arm/kvm: Unexport kvm_arm_vm_state_change Richard Henderson
2023-11-24 11:33 ` Philippe Mathieu-Daudé
2023-11-27 0:29 ` Gavin Shan
2023-11-23 17:40 ` [PATCH for-9.0 00/21] target/arm: kvm cleanups Philippe Mathieu-Daudé
2023-11-23 19:14 ` Philippe Mathieu-Daudé
2023-11-24 12:05 ` Philippe Mathieu-Daudé
2023-12-11 14:35 ` Peter Maydell
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=20231123044219.896776-5-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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).