Re: [PATCH v11 2/6] KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log
On 23.09.14 02:54, Mario Smarduch wrote: > Add support for generic implementation of dirty log read function. For now > x86_64 and ARMv7 share generic dirty log read. Other architectures call > their architecture specific functions. > > Signed-off-by: Mario Smarduch > --- > arch/arm/kvm/Kconfig |1 + > arch/arm/kvm/arm.c|2 +- > arch/arm64/kvm/Kconfig|1 + > arch/ia64/kvm/Kconfig |1 + > arch/ia64/kvm/kvm-ia64.c |2 +- > arch/mips/kvm/Kconfig |1 + > arch/mips/kvm/mips.c |2 +- > arch/powerpc/kvm/Kconfig |1 + > arch/powerpc/kvm/book3s.c |2 +- > arch/powerpc/kvm/booke.c |2 +- > arch/s390/kvm/Kconfig |1 + > arch/s390/kvm/kvm-s390.c |2 +- > arch/x86/kvm/x86.c| 86 -- > include/linux/kvm_host.h |6 +++ > virt/kvm/Kconfig |3 ++ > virt/kvm/kvm_main.c | 91 > + > 16 files changed, 112 insertions(+), 92 deletions(-) > > diff --git a/arch/arm/kvm/Kconfig b/arch/arm/kvm/Kconfig > index 4be5bb1..cd9bb1c 100644 > --- a/arch/arm/kvm/Kconfig > +++ b/arch/arm/kvm/Kconfig > @@ -23,6 +23,7 @@ config KVM > select HAVE_KVM_CPU_RELAX_INTERCEPT > select KVM_MMIO > select KVM_ARM_HOST > + select HAVE_KVM_ARCH_DIRTY_LOG I think we're better off treating the "common dirty log" option as the odd case. So instead of adding this option for every arch, just set it on x86 and later on arm. Then you can ... > depends on ARM_VIRT_EXT && ARM_LPAE && !CPU_BIG_ENDIAN > ---help--- > Support hosting virtualized guest machines. You will also > diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c > index 3c82b37..c52b2bd 100644 > --- a/arch/arm/kvm/arm.c > +++ b/arch/arm/kvm/arm.c > @@ -774,7 +774,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp, > } > } > > -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) > +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log > *log) > { > return -EINVAL; > } > diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig > index 8ba85e9..40a8d19 100644 > --- a/arch/arm64/kvm/Kconfig > +++ b/arch/arm64/kvm/Kconfig > @@ -26,6 +26,7 @@ config KVM > select KVM_ARM_HOST > select KVM_ARM_VGIC > select KVM_ARM_TIMER > + select HAVE_KVM_ARCH_DIRTY_LOG > ---help--- > Support hosting virtualized guest machines. > > diff --git a/arch/ia64/kvm/Kconfig b/arch/ia64/kvm/Kconfig > index 990b864..217f10a 100644 > --- a/arch/ia64/kvm/Kconfig > +++ b/arch/ia64/kvm/Kconfig > @@ -28,6 +28,7 @@ config KVM > select HAVE_KVM_IRQ_ROUTING > select KVM_APIC_ARCHITECTURE > select KVM_MMIO > + select HAVE_KVM_ARCH_DIRTY_LOG > ---help--- > Support hosting fully virtualized guest machines using hardware > virtualization extensions. You will need a fairly recent > diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c > index 6a4309b..3166df5 100644 > --- a/arch/ia64/kvm/kvm-ia64.c > +++ b/arch/ia64/kvm/kvm-ia64.c > @@ -1812,7 +1812,7 @@ static void kvm_ia64_sync_dirty_log(struct kvm *kvm, > spin_unlock(&kvm->arch.dirty_log_lock); > } > > -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, > +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, > struct kvm_dirty_log *log) > { > int r; > diff --git a/arch/mips/kvm/Kconfig b/arch/mips/kvm/Kconfig > index 30e334e..b57f49e 100644 > --- a/arch/mips/kvm/Kconfig > +++ b/arch/mips/kvm/Kconfig > @@ -20,6 +20,7 @@ config KVM > select PREEMPT_NOTIFIERS > select ANON_INODES > select KVM_MMIO > + select HAVE_KVM_ARCH_DIRTY_LOG > ---help--- > Support for hosting Guest kernels. > Currently supported on MIPS32 processors. > diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c > index d687c6e..885fdfe 100644 > --- a/arch/mips/kvm/mips.c > +++ b/arch/mips/kvm/mips.c > @@ -791,7 +791,7 @@ out: > } > > /* Get (and clear) the dirty memory log for a memory slot. */ > -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) > +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log > *log) > { > struct kvm_memory_slot *memslot; > unsigned long ga, ga_end; > diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig > index d6a53b9..4f28a82 100644 > --- a/arch/powerpc/kvm/Kconfig > +++ b/arch/powerpc/kvm/Kconfig > @@ -21,6 +21,7 @@ config KVM > select PREEMPT_NOTIFIERS > select ANON_INODES > select HAVE_KVM_EVENTFD > + select HAVE_KVM_ARCH_DIRTY_LOG > > config KVM_BOOK3S_HANDLER > bool > diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c > index c254c27..304faa1 100644 > --- a/arch/powerpc/kvm/book3s.c > +++ b/arch/powerpc/kvm/book3s.c > @@ -815,7 +815,7 @@ int kvmppc_core_check_requests(struct kvm_vcpu *vcpu) > r
Re: [PATCH v11 2/6] KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log
On 09/29/2014 10:18 AM, Cornelia Huck wrote: > On Mon, 22 Sep 2014 17:54:46 -0700 > Mario Smarduch wrote: > >> Add support for generic implementation of dirty log read function. For now >> x86_64 and ARMv7 share generic dirty log read. Other architectures call >> their architecture specific functions. >> >> Signed-off-by: Mario Smarduch > > This (and the previous patch), once fitted on current kvm/next (trivial > rejects), seems to work fine on s390 and looks sane to me. > > So, for the s390 parts: > > Acked-by: Cornelia Huck > Thanks, Mario -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v11 2/6] KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log
On Mon, 22 Sep 2014 17:54:46 -0700 Mario Smarduch wrote: > Add support for generic implementation of dirty log read function. For now > x86_64 and ARMv7 share generic dirty log read. Other architectures call > their architecture specific functions. > > Signed-off-by: Mario Smarduch This (and the previous patch), once fitted on current kvm/next (trivial rejects), seems to work fine on s390 and looks sane to me. So, for the s390 parts: Acked-by: Cornelia Huck -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v11 2/6] KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log
On Mon, Sep 22, 2014 at 05:54:46PM -0700, Mario Smarduch wrote: > Add support for generic implementation of dirty log read function. For now > x86_64 and ARMv7 share generic dirty log read. Other architectures call > their architecture specific functions. > > Signed-off-by: Mario Smarduch > --- This looks reasonable to me, Other arch kvm-maintainers: will you give this a look and a spin for your ok? Thanks, -Christoffer -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v11 2/6] KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log
Add support for generic implementation of dirty log read function. For now x86_64 and ARMv7 share generic dirty log read. Other architectures call their architecture specific functions. Signed-off-by: Mario Smarduch --- arch/arm/kvm/Kconfig |1 + arch/arm/kvm/arm.c|2 +- arch/arm64/kvm/Kconfig|1 + arch/ia64/kvm/Kconfig |1 + arch/ia64/kvm/kvm-ia64.c |2 +- arch/mips/kvm/Kconfig |1 + arch/mips/kvm/mips.c |2 +- arch/powerpc/kvm/Kconfig |1 + arch/powerpc/kvm/book3s.c |2 +- arch/powerpc/kvm/booke.c |2 +- arch/s390/kvm/Kconfig |1 + arch/s390/kvm/kvm-s390.c |2 +- arch/x86/kvm/x86.c| 86 -- include/linux/kvm_host.h |6 +++ virt/kvm/Kconfig |3 ++ virt/kvm/kvm_main.c | 91 + 16 files changed, 112 insertions(+), 92 deletions(-) diff --git a/arch/arm/kvm/Kconfig b/arch/arm/kvm/Kconfig index 4be5bb1..cd9bb1c 100644 --- a/arch/arm/kvm/Kconfig +++ b/arch/arm/kvm/Kconfig @@ -23,6 +23,7 @@ config KVM select HAVE_KVM_CPU_RELAX_INTERCEPT select KVM_MMIO select KVM_ARM_HOST + select HAVE_KVM_ARCH_DIRTY_LOG depends on ARM_VIRT_EXT && ARM_LPAE && !CPU_BIG_ENDIAN ---help--- Support hosting virtualized guest machines. You will also diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 3c82b37..c52b2bd 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c @@ -774,7 +774,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp, } } -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) { return -EINVAL; } diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig index 8ba85e9..40a8d19 100644 --- a/arch/arm64/kvm/Kconfig +++ b/arch/arm64/kvm/Kconfig @@ -26,6 +26,7 @@ config KVM select KVM_ARM_HOST select KVM_ARM_VGIC select KVM_ARM_TIMER + select HAVE_KVM_ARCH_DIRTY_LOG ---help--- Support hosting virtualized guest machines. diff --git a/arch/ia64/kvm/Kconfig b/arch/ia64/kvm/Kconfig index 990b864..217f10a 100644 --- a/arch/ia64/kvm/Kconfig +++ b/arch/ia64/kvm/Kconfig @@ -28,6 +28,7 @@ config KVM select HAVE_KVM_IRQ_ROUTING select KVM_APIC_ARCHITECTURE select KVM_MMIO + select HAVE_KVM_ARCH_DIRTY_LOG ---help--- Support hosting fully virtualized guest machines using hardware virtualization extensions. You will need a fairly recent diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index 6a4309b..3166df5 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c @@ -1812,7 +1812,7 @@ static void kvm_ia64_sync_dirty_log(struct kvm *kvm, spin_unlock(&kvm->arch.dirty_log_lock); } -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) { int r; diff --git a/arch/mips/kvm/Kconfig b/arch/mips/kvm/Kconfig index 30e334e..b57f49e 100644 --- a/arch/mips/kvm/Kconfig +++ b/arch/mips/kvm/Kconfig @@ -20,6 +20,7 @@ config KVM select PREEMPT_NOTIFIERS select ANON_INODES select KVM_MMIO + select HAVE_KVM_ARCH_DIRTY_LOG ---help--- Support for hosting Guest kernels. Currently supported on MIPS32 processors. diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c index d687c6e..885fdfe 100644 --- a/arch/mips/kvm/mips.c +++ b/arch/mips/kvm/mips.c @@ -791,7 +791,7 @@ out: } /* Get (and clear) the dirty memory log for a memory slot. */ -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) { struct kvm_memory_slot *memslot; unsigned long ga, ga_end; diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig index d6a53b9..4f28a82 100644 --- a/arch/powerpc/kvm/Kconfig +++ b/arch/powerpc/kvm/Kconfig @@ -21,6 +21,7 @@ config KVM select PREEMPT_NOTIFIERS select ANON_INODES select HAVE_KVM_EVENTFD + select HAVE_KVM_ARCH_DIRTY_LOG config KVM_BOOK3S_HANDLER bool diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index c254c27..304faa1 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c @@ -815,7 +815,7 @@ int kvmppc_core_check_requests(struct kvm_vcpu *vcpu) return vcpu->kvm->arch.kvm_ops->check_requests(vcpu); } -int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) +int kvm_arch_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) { return kvm->arch.kvm_ops->get_dirty_log(kvm, log); } diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index ab62109..50dd33d 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch