Message ID | 20230405160454.97436-9-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | accel/kvm: Spring cleaning | expand |
On 4/5/23 13: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> > --- Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> > 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 */ > +#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);
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);
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 */ +#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);
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(+)