Message ID | 20220922003214.276736-3-gshan@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: Enable ring-based dirty memory tracking | expand |
On Thu, 22 Sep 2022 01:32:10 +0100, Gavin Shan <gshan@redhat.com> wrote: > > Not all architectures like ARM64 need to override the function. Move > its declaration to kvm_dirty_ring.h to avoid the following compiling > warning on ARM64 when the feature is enabled. > > arch/arm64/kvm/../../../virt/kvm/dirty_ring.c:14:12: \ > warning: no previous prototype for 'kvm_cpu_dirty_log_size' \ > [-Wmissing-prototypes] \ > int __weak kvm_cpu_dirty_log_size(void) > > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Gavin Shan <gshan@redhat.com> > --- > arch/x86/include/asm/kvm_host.h | 2 -- > arch/x86/kvm/mmu/mmu.c | 2 ++ > include/linux/kvm_dirty_ring.h | 1 + > 3 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 2c96c43c313a..4c0fd517282b 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -2082,8 +2082,6 @@ static inline int kvm_cpu_get_apicid(int mps_cpu) > #define GET_SMSTATE(type, buf, offset) \ > (*(type *)((buf) + (offset) - 0x7e00)) > > -int kvm_cpu_dirty_log_size(void); > - > int memslot_rmap_alloc(struct kvm_memory_slot *slot, unsigned long npages); > > #define KVM_CLOCK_VALID_FLAGS \ > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index e418ef3ecfcb..b3eb6a3627ec 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -1349,10 +1349,12 @@ void kvm_arch_mmu_enable_log_dirty_pt_masked(struct kvm *kvm, > kvm_mmu_write_protect_pt_masked(kvm, slot, gfn_offset, mask); > } > > +#ifdef CONFIG_HAVE_KVM_DIRTY_RING I think you can drop the ifdeffery, as HAVE_KVM_DIRTY_RING is unconditionally selected by the arch Kconfig. > int kvm_cpu_dirty_log_size(void) > { > return kvm_x86_ops.cpu_dirty_log_size; > } > +#endif > > bool kvm_mmu_slot_gfn_write_protect(struct kvm *kvm, > struct kvm_memory_slot *slot, u64 gfn, > diff --git a/include/linux/kvm_dirty_ring.h b/include/linux/kvm_dirty_ring.h > index 906f899813dc..8c6755981c9b 100644 > --- a/include/linux/kvm_dirty_ring.h > +++ b/include/linux/kvm_dirty_ring.h > @@ -71,6 +71,7 @@ static inline bool kvm_dirty_ring_soft_full(struct kvm_dirty_ring *ring) > > #else /* CONFIG_HAVE_KVM_DIRTY_RING */ > > +int kvm_cpu_dirty_log_size(void); > u32 kvm_dirty_ring_get_rsvd_entries(void); > int kvm_dirty_ring_alloc(struct kvm_dirty_ring *ring, int index, u32 size); Thanks, M.
Hi Marc, On 9/25/22 5:12 AM, Marc Zyngier wrote: > On Thu, 22 Sep 2022 01:32:10 +0100, > Gavin Shan <gshan@redhat.com> wrote: >> >> Not all architectures like ARM64 need to override the function. Move >> its declaration to kvm_dirty_ring.h to avoid the following compiling >> warning on ARM64 when the feature is enabled. >> >> arch/arm64/kvm/../../../virt/kvm/dirty_ring.c:14:12: \ >> warning: no previous prototype for 'kvm_cpu_dirty_log_size' \ >> [-Wmissing-prototypes] \ >> int __weak kvm_cpu_dirty_log_size(void) >> >> Reported-by: kernel test robot <lkp@intel.com> >> Signed-off-by: Gavin Shan <gshan@redhat.com> >> --- >> arch/x86/include/asm/kvm_host.h | 2 -- >> arch/x86/kvm/mmu/mmu.c | 2 ++ >> include/linux/kvm_dirty_ring.h | 1 + >> 3 files changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h >> index 2c96c43c313a..4c0fd517282b 100644 >> --- a/arch/x86/include/asm/kvm_host.h >> +++ b/arch/x86/include/asm/kvm_host.h >> @@ -2082,8 +2082,6 @@ static inline int kvm_cpu_get_apicid(int mps_cpu) >> #define GET_SMSTATE(type, buf, offset) \ >> (*(type *)((buf) + (offset) - 0x7e00)) >> >> -int kvm_cpu_dirty_log_size(void); >> - >> int memslot_rmap_alloc(struct kvm_memory_slot *slot, unsigned long npages); >> >> #define KVM_CLOCK_VALID_FLAGS \ >> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c >> index e418ef3ecfcb..b3eb6a3627ec 100644 >> --- a/arch/x86/kvm/mmu/mmu.c >> +++ b/arch/x86/kvm/mmu/mmu.c >> @@ -1349,10 +1349,12 @@ void kvm_arch_mmu_enable_log_dirty_pt_masked(struct kvm *kvm, >> kvm_mmu_write_protect_pt_masked(kvm, slot, gfn_offset, mask); >> } >> >> +#ifdef CONFIG_HAVE_KVM_DIRTY_RING > > I think you can drop the ifdeffery, as HAVE_KVM_DIRTY_RING is > unconditionally selected by the arch Kconfig. > Yeah, I think so. Lets drop it in v4, which will be rebased on top of your v2 series. >> int kvm_cpu_dirty_log_size(void) >> { >> return kvm_x86_ops.cpu_dirty_log_size; >> } >> +#endif >> >> bool kvm_mmu_slot_gfn_write_protect(struct kvm *kvm, >> struct kvm_memory_slot *slot, u64 gfn, >> diff --git a/include/linux/kvm_dirty_ring.h b/include/linux/kvm_dirty_ring.h >> index 906f899813dc..8c6755981c9b 100644 >> --- a/include/linux/kvm_dirty_ring.h >> +++ b/include/linux/kvm_dirty_ring.h >> @@ -71,6 +71,7 @@ static inline bool kvm_dirty_ring_soft_full(struct kvm_dirty_ring *ring) >> >> #else /* CONFIG_HAVE_KVM_DIRTY_RING */ >> >> +int kvm_cpu_dirty_log_size(void); >> u32 kvm_dirty_ring_get_rsvd_entries(void); >> int kvm_dirty_ring_alloc(struct kvm_dirty_ring *ring, int index, u32 size); > Thanks, Gavin
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 2c96c43c313a..4c0fd517282b 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -2082,8 +2082,6 @@ static inline int kvm_cpu_get_apicid(int mps_cpu) #define GET_SMSTATE(type, buf, offset) \ (*(type *)((buf) + (offset) - 0x7e00)) -int kvm_cpu_dirty_log_size(void); - int memslot_rmap_alloc(struct kvm_memory_slot *slot, unsigned long npages); #define KVM_CLOCK_VALID_FLAGS \ diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index e418ef3ecfcb..b3eb6a3627ec 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1349,10 +1349,12 @@ void kvm_arch_mmu_enable_log_dirty_pt_masked(struct kvm *kvm, kvm_mmu_write_protect_pt_masked(kvm, slot, gfn_offset, mask); } +#ifdef CONFIG_HAVE_KVM_DIRTY_RING int kvm_cpu_dirty_log_size(void) { return kvm_x86_ops.cpu_dirty_log_size; } +#endif bool kvm_mmu_slot_gfn_write_protect(struct kvm *kvm, struct kvm_memory_slot *slot, u64 gfn, diff --git a/include/linux/kvm_dirty_ring.h b/include/linux/kvm_dirty_ring.h index 906f899813dc..8c6755981c9b 100644 --- a/include/linux/kvm_dirty_ring.h +++ b/include/linux/kvm_dirty_ring.h @@ -71,6 +71,7 @@ static inline bool kvm_dirty_ring_soft_full(struct kvm_dirty_ring *ring) #else /* CONFIG_HAVE_KVM_DIRTY_RING */ +int kvm_cpu_dirty_log_size(void); u32 kvm_dirty_ring_get_rsvd_entries(void); int kvm_dirty_ring_alloc(struct kvm_dirty_ring *ring, int index, u32 size);
Not all architectures like ARM64 need to override the function. Move its declaration to kvm_dirty_ring.h to avoid the following compiling warning on ARM64 when the feature is enabled. arch/arm64/kvm/../../../virt/kvm/dirty_ring.c:14:12: \ warning: no previous prototype for 'kvm_cpu_dirty_log_size' \ [-Wmissing-prototypes] \ int __weak kvm_cpu_dirty_log_size(void) Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Gavin Shan <gshan@redhat.com> --- arch/x86/include/asm/kvm_host.h | 2 -- arch/x86/kvm/mmu/mmu.c | 2 ++ include/linux/kvm_dirty_ring.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-)