qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 08/10] target/ppc: Restrict KVM-specific field from ArchCPU


From: Cédric Le Goater
Subject: Re: [PATCH 08/10] target/ppc: Restrict KVM-specific field from ArchCPU
Date: Thu, 6 Apr 2023 19:46:09 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1

Hello Philippe

On 4/5/23 18:04, Philippe Mathieu-Daudé wrote:
The 'kvm_sw_tlb' field shouldn't be accessed when KVM is not available.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
  target/ppc/cpu.h        | 2 ++
  target/ppc/mmu_common.c | 4 ++++
  2 files changed, 6 insertions(+)

diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index 557d736dab..0ec3957397 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1148,7 +1148,9 @@ struct CPUArchState {
      int tlb_type;    /* Type of TLB we're dealing with */
      ppc_tlb_t tlb;   /* TLB is optional. Allocate them only if needed */
      bool tlb_dirty;  /* Set to non-zero when modifying TLB */

'tlb_dirty' was part of the same commit 93dd5e852c ("kvm: ppc: booke206:
use MMU API"). So we might as well include it in the #ifdef section.

Thanks,

C.

+#ifdef CONFIG_KVM
      bool kvm_sw_tlb; /* non-zero if KVM SW TLB API is active */
+#endif /* CONFIG_KVM */
      uint32_t tlb_need_flush; /* Delayed flush needed */
  #define TLB_NEED_LOCAL_FLUSH   0x1
  #define TLB_NEED_GLOBAL_FLUSH  0x2
diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c
index 7235a4befe..21843c69f6 100644
--- a/target/ppc/mmu_common.c
+++ b/target/ppc/mmu_common.c
@@ -917,10 +917,12 @@ static void mmubooke_dump_mmu(CPUPPCState *env)
      ppcemb_tlb_t *entry;
      int i;
+#ifdef CONFIG_KVM
      if (kvm_enabled() && !env->kvm_sw_tlb) {
          qemu_printf("Cannot access KVM TLB\n");
          return;
      }
+#endif
qemu_printf("\nTLB:\n");
      qemu_printf("Effective          Physical           Size PID   Prot     "
@@ -1008,10 +1010,12 @@ static void mmubooke206_dump_mmu(CPUPPCState *env)
      int offset = 0;
      int i;
+#ifdef CONFIG_KVM
      if (kvm_enabled() && !env->kvm_sw_tlb) {
          qemu_printf("Cannot access KVM TLB\n");
          return;
      }
+#endif
for (i = 0; i < BOOKE206_MAX_TLBN; i++) {
          int size = booke206_tlb_size(env, i);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]