Re: [PATCH 11/21] target/arm/kvm: Use a switch for kvm_arm_cpreg_level

2023-11-26 Thread Gavin Shan

On 11/23/23 15:42, Richard Henderson wrote:

Use a switch instead of a linear search through data.

Signed-off-by: Richard Henderson 
---
  target/arm/kvm64.c | 32 +---
  1 file changed, 9 insertions(+), 23 deletions(-)



With the following nits addressed:

Reviewed-by: Gavin Shan 


diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 504526b24c..61fb9dbde0 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -361,32 +361,18 @@ bool kvm_arm_reg_syncs_via_cpreg_list(uint64_t regidx)
  }
  }
  
-typedef struct CPRegStateLevel {

-uint64_t regidx;
-int level;
-} CPRegStateLevel;
-
-/* All system registers not listed in the following table are assumed to be
- * of the level KVM_PUT_RUNTIME_STATE. If a register should be written less
- * often, you must add it to this table with a state of either
- * KVM_PUT_RESET_STATE or KVM_PUT_FULL_STATE.
- */
-static const CPRegStateLevel non_runtime_cpregs[] = {
-{ KVM_REG_ARM_TIMER_CNT, KVM_PUT_FULL_STATE },
-{ KVM_REG_ARM_PTIMER_CNT, KVM_PUT_FULL_STATE },
-};
-
  int kvm_arm_cpreg_level(uint64_t regidx)
  {
-int i;
-
-for (i = 0; i < ARRAY_SIZE(non_runtime_cpregs); i++) {
-const CPRegStateLevel *l = &non_runtime_cpregs[i];
-if (l->regidx == regidx) {
-return l->level;
-}
+/*
+ * All system registers are assumed to be level KVM_PUT_RUNTIME_STATE.
+ * If a register should be written less often, you must add it here
+ * with a state of either KVM_PUT_RESET_STATE or KVM_PUT_FULL_STATE.
+ */
+switch (regidx) {
+case KVM_REG_ARM_TIMER_CNT:
+case KVM_REG_ARM_PTIMER_CNT:
+return KVM_PUT_FULL_STATE;
  }
-

  

It is unrelated change and needs to be dropped?


  return KVM_PUT_RUNTIME_STATE;
  }
  


Thanks,
Gavin




Re: [PATCH 11/21] target/arm/kvm: Use a switch for kvm_arm_cpreg_level

2023-11-23 Thread Philippe Mathieu-Daudé

On 23/11/23 05:42, Richard Henderson wrote:

Use a switch instead of a linear search through data.

Signed-off-by: Richard Henderson 
---
  target/arm/kvm64.c | 32 +---
  1 file changed, 9 insertions(+), 23 deletions(-)


Reviewed-by: Philippe Mathieu-Daudé 




[PATCH 11/21] target/arm/kvm: Use a switch for kvm_arm_cpreg_level

2023-11-22 Thread Richard Henderson
Use a switch instead of a linear search through data.

Signed-off-by: Richard Henderson 
---
 target/arm/kvm64.c | 32 +---
 1 file changed, 9 insertions(+), 23 deletions(-)

diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 504526b24c..61fb9dbde0 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -361,32 +361,18 @@ bool kvm_arm_reg_syncs_via_cpreg_list(uint64_t regidx)
 }
 }
 
-typedef struct CPRegStateLevel {
-uint64_t regidx;
-int level;
-} CPRegStateLevel;
-
-/* All system registers not listed in the following table are assumed to be
- * of the level KVM_PUT_RUNTIME_STATE. If a register should be written less
- * often, you must add it to this table with a state of either
- * KVM_PUT_RESET_STATE or KVM_PUT_FULL_STATE.
- */
-static const CPRegStateLevel non_runtime_cpregs[] = {
-{ KVM_REG_ARM_TIMER_CNT, KVM_PUT_FULL_STATE },
-{ KVM_REG_ARM_PTIMER_CNT, KVM_PUT_FULL_STATE },
-};
-
 int kvm_arm_cpreg_level(uint64_t regidx)
 {
-int i;
-
-for (i = 0; i < ARRAY_SIZE(non_runtime_cpregs); i++) {
-const CPRegStateLevel *l = &non_runtime_cpregs[i];
-if (l->regidx == regidx) {
-return l->level;
-}
+/*
+ * All system registers are assumed to be level KVM_PUT_RUNTIME_STATE.
+ * If a register should be written less often, you must add it here
+ * with a state of either KVM_PUT_RESET_STATE or KVM_PUT_FULL_STATE.
+ */
+switch (regidx) {
+case KVM_REG_ARM_TIMER_CNT:
+case KVM_REG_ARM_PTIMER_CNT:
+return KVM_PUT_FULL_STATE;
 }
-
 return KVM_PUT_RUNTIME_STATE;
 }
 
-- 
2.34.1