Skip to contentSkip to conversation

KVM: remove kvm_arch_has_vcpu_debugfs()

PATCH In review Greg KH 3 participants 8 messages Jul 31, 2019 – Aug 5, 2019

Subsystems (9)
x86 KVM PowerPC MIPS +5 more subsystems
lore
Share & tools
lore

Greg KH

author
#0 lore raw

PATCH v2 1/2 KVM: remove kvm_arch_has_vcpu_debugfs()

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Cc Paolo Bonzini <[email protected]>
Cc "Radim Krm" <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc "H. Peter Anvin" <[email protected]>

---
v2: new patch in the series

 arch/mips/kvm/mips.c       | 5 -----
 arch/powerpc/kvm/powerpc.c | 5 -----
 arch/s390/kvm/kvm-s390.c   | 5 -----
 arch/x86/kvm/debugfs.c     | 5 -----
 include/linux/kvm_host.h   | 1 -
 virt/kvm/arm/arm.c         | 5 -----
 virt/kvm/kvm_main.c        | 3 ---
 7 files changed, 29 deletions(-)
arch/mips/kvm/mips.c +0 -5
index 2cfe839f0b3a..948ef36ca87c 100644
@@ -150,11 +150,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return 0;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-	return false;
-}
-
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
 	return 0;
arch/powerpc/kvm/powerpc.c +0 -5
index 0dba7eb24f92..78d166672492 100644
@@ -452,11 +452,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return -EINVAL;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-	return false;
-}
-
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
 	return 0;
arch/s390/kvm/kvm-s390.c +0 -5
index 3f520cd837fb..4dd49bda8d25 100644
@@ -2516,11 +2516,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return rc;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-	return false;
-}
-
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
 	return 0;
arch/x86/kvm/debugfs.c +0 -5
index 329361b69d5e..9bd93e0d5f63 100644
@@ -8,11 +8,6 @@
 #include <linux/debugfs.h>
 #include "lapic.h"
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-	return true;
-}
-
 static int vcpu_get_timer_advance_ns(void *data, u64 *val)
 {
 	struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data;
include/linux/kvm_host.h +0 -1
index 5c5b5867024c..52596a27ab27 100644
@@ -861,7 +861,6 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu);
 
-bool kvm_arch_has_vcpu_debugfs(void);
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu);
 
 int kvm_arch_hardware_enable(void);
virt/kvm/arm/arm.c +0 -5
index f645c0fbf7ec..cc85259a243d 100644
@@ -144,11 +144,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return ret;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-	return false;
-}
-
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
 	return 0;
virt/kvm/kvm_main.c +0 -3
index 887f3b0c2b60..ac0a2f6a50a4 100644
@@ -2596,9 +2596,6 @@ static int kvm_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 	char dir_name[ITOA_MAX_LEN * 2];
 	int ret;
 
-	if (!kvm_arch_has_vcpu_debugfs())
-		return 0;
-
 	if (!debugfs_initialized())
 		return 0;
 
Signature · 1 line
2.22.0
author
#1 lore raw

PATCH v2 2/2 KVM: no need to check return value of debugfs_create functions

When calling debugfs functions, there is no need to ever check the return value. The function can work or not, but the code logic should never do something different based on this.

Also, when doing this, change kvm_arch_create_vcpu_debugfs() to return void instead of an integer, as we should not care at all about if this function actually does anything or not.

Cc Paolo Bonzini <[email protected]>
Cc "Radim Krčmář" <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc "H. Peter Anvin" <[email protected]>

---
v2: change the return value of kvm_arch_create_vcpu_debugfs() to be
void, based on review comments.

 arch/mips/kvm/mips.c       |  3 +--
 arch/powerpc/kvm/powerpc.c |  3 +--
 arch/s390/kvm/kvm-s390.c   |  3 +--
 arch/x86/kvm/debugfs.c     | 41 ++++++++++++--------------------------
 include/linux/kvm_host.h   |  2 +-
 virt/kvm/arm/arm.c         |  3 +--
 virt/kvm/kvm_main.c        | 21 +++++--------------
 7 files changed, 23 insertions(+), 53 deletions(-)
arch/mips/kvm/mips.c +1 -2
index 948ef36ca87c..65eeda084c58 100644
@@ -150,9 +150,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return 0;
 }
 
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
+void kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
-	return 0;
 }
 
 void kvm_mips_free_vcpus(struct kvm *kvm)
arch/powerpc/kvm/powerpc.c +1 -2
index 78d166672492..5a303fd2396b 100644
@@ -452,9 +452,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return -EINVAL;
 }
 
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
+void kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
-	return 0;
 }
 
 void kvm_arch_destroy_vm(struct kvm *kvm)
arch/s390/kvm/kvm-s390.c +1 -2
index 4dd49bda8d25..f62d874b6b2a 100644
@@ -2516,9 +2516,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return rc;
 }
 
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
+void kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
-	return 0;
 }
 
 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
arch/x86/kvm/debugfs.c +13 -28

50 lines not on this page · raw message

include/linux/kvm_host.h +1 -1
index 52596a27ab27..b7a7cb291c14 100644
@@ -861,7 +861,7 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu);
 
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu);
+void kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu);
 
 int kvm_arch_hardware_enable(void);
 void kvm_arch_hardware_disable(void);
virt/kvm/arm/arm.c +1 -2
index cc85259a243d..dda5e0bb6871 100644
@@ -144,9 +144,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	return ret;
 }
 
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
+void kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
-	return 0;
 }
 
 vm_fault_t kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf)
virt/kvm/kvm_main.c +5 -16
index ac0a2f6a50a4..5e54b47e2343 100644
@@ -2591,27 +2591,18 @@ static int create_vcpu_fd(struct kvm_vcpu *vcpu)
 	return anon_inode_getfd(name, &kvm_vcpu_fops, vcpu, O_RDWR | O_CLOEXEC);
 }
 
-static int kvm_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
+static void kvm_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
 	char dir_name[ITOA_MAX_LEN * 2];
-	int ret;
 
 	if (!debugfs_initialized())
-		return 0;
+		return;
 
 	snprintf(dir_name, sizeof(dir_name), "vcpu%d", vcpu->vcpu_id);
 	vcpu->debugfs_dentry = debugfs_create_dir(dir_name,
-								vcpu->kvm->debugfs_dentry);
-	if (!vcpu->debugfs_dentry)
-		return -ENOMEM;
+						  vcpu->kvm->debugfs_dentry);
 
-	ret = kvm_arch_create_vcpu_debugfs(vcpu);
-	if (ret < 0) {
-		debugfs_remove_recursive(vcpu->debugfs_dentry);
-		return ret;
-	}
-
-	return 0;
+	kvm_arch_create_vcpu_debugfs(vcpu);
 }
 
 /*
@@ -2646,9 +2637,7 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
 	if (r)
 		goto vcpu_destroy;
 
-	r = kvm_create_vcpu_debugfs(vcpu);
-	if (r)
-		goto vcpu_destroy;
+	kvm_create_vcpu_debugfs(vcpu);
 
 	mutex_lock(&kvm->lock);
 	if (kvm_get_vcpu_by_id(kvm, id)) {
Signature · 1 line
2.22.0
maintainer
#2 lore raw
In reply to Greg KH
Quoted 13 lines · Greg KH

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Cc Paolo Bonzini <[email protected]>
Cc "Radim Krm" <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc "H. Peter Anvin" <[email protected]>
Quoted 2 lines

---
v2: new patch in the series

Let's remove kvm_arch_arch_create_vcpu_debugfs too for non-x86 arches.

I'll queue your 2/2.

---------------- 8< ------------------
From fe1b874aca4679836f0533a923c641a1a367cd32 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Sat, 3 Aug 2019 08:14:25 +0200
Subject: [PATCH] KVM: remove kvm_arch_has_vcpu_debugfs()

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what. A #define symbol let us actually simplify the code.

arch/mips/kvm/mips.c +0 -10
index 2cfe839f0b3a..1109924560d8 100644
@@ -150,16 +150,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
        return 0;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-       return false;
-}
-
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
-{
-       return 0;
-}
-
 void kvm_mips_free_vcpus(struct kvm *kvm)
 {
        unsigned int i;
arch/powerpc/kvm/powerpc.c +0 -10
index 0dba7eb24f92..d71b21b4eea6 100644
@@ -452,16 +452,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
        return -EINVAL;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-       return false;
-}
-
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
-{
-       return 0;
-}
-
 void kvm_arch_destroy_vm(struct kvm *kvm)
 {
        unsigned int i;
arch/s390/kvm/kvm-s390.c +0 -10
index 3f520cd837fb..f329dcb3f44c 100644
@@ -2516,16 +2516,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
        return rc;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-       return false;
-}
-
-int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
-{
-       return 0;
-}
-
 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
 {
        VCPU_EVENT(vcpu, 3, "%s", "free cpu");
arch/x86/include/asm/kvm_host.h +2 -0
index e74f0711eaaf..a40a77e09cb0 100644
@@ -35,6 +35,8 @@
 #include <asm/kvm_vcpu_regs.h>
 #include <asm/hyperv-tlfs.h>
 
+#define __KVM_HAVE_ARCH_VCPU_DEBUGFS
+
 #define KVM_MAX_VCPUS 288
 #define KVM_SOFT_MAX_VCPUS 240
 #define KVM_MAX_VCPU_ID 1023
arch/x86/kvm/debugfs.c +0 -5
index 329361b69d5e..9bd93e0d5f63 100644
@@ -8,11 +8,6 @@
 #include <linux/debugfs.h>
 #include "lapic.h"
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-       return true;
-}
-
 static int vcpu_get_timer_advance_ns(void *data, u64 *val)
 {
        struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data;
include/linux/kvm_host.h +2 -1
index 5c5b5867024c..65b85737ad22 100644
@@ -861,8 +861,9 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
 void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu);
 
-bool kvm_arch_has_vcpu_debugfs(void);
+#ifdef __KVM_HAVE_ARCH_VCPU_DEBUGFS
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu);
+#endif
 
 int kvm_arch_hardware_enable(void);
 void kvm_arch_hardware_disable(void);
virt/kvm/arm/arm.c +0 -5
index acc43242a310..13f5a1aa6d79 100644
@@ -144,11 +144,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
        return ret;
 }
 
-bool kvm_arch_has_vcpu_debugfs(void)
-{
-       return false;
-}
-
 int kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
        return 0;
virt/kvm/kvm_main.c +2 -3
index 887f3b0c2b60..9c210f848ebd 100644
@@ -2593,12 +2593,10 @@ static int create_vcpu_fd(struct kvm_vcpu *vcpu)
 
 static int kvm_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 {
+#ifdef __KVM_HAVE_ARCH_VCPU_DEBUGFS
 	char dir_name[ITOA_MAX_LEN * 2];
 	int ret;
 
-	if (!kvm_arch_has_vcpu_debugfs())
-		return 0;
-
 	if (!debugfs_initialized())
 		return 0;
 
@@ -2613,6 +2611,7 @@ static int kvm_create_vcpu_debugfs(struct kvm_vcpu *vcpu)
 		debugfs_remove_recursive(vcpu->debugfs_dentry);
 		return ret;
 	}
+#endif
 
 	return 0;
 }
#3 lore raw
Quoted 6 lines · Paolo Bonzini
Quoted 3 lines · Greg KH

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Let's remove kvm_arch_arch_create_vcpu_debugfs too for non-x86 arches.

Can't we remove _all_ that virt muck? That would solve a lot more problems in one go.

/me ducks

maintainer
#4 lore raw
Quoted 10 lines · Thomas Gleixner
Quoted 6 lines · Paolo Bonzini
Quoted 3 lines · Greg KH

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Let's remove kvm_arch_arch_create_vcpu_debugfs too for non-x86 arches.

Can't we remove _all_ that virt muck? That would solve a lot more problems in one go.

It sure would take some maintainer burden off me. :)

Paolo

author
#5 lore raw
In reply to Paolo Bonzini
Quoted 17 lines · Paolo Bonzini
Quoted 13 lines · Greg KH

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Cc Paolo Bonzini <[email protected]>
Cc "Radim Krm" <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc "H. Peter Anvin" <[email protected]>
Quoted 2 lines

---
v2: new patch in the series

Quoted 3 lines

Let's remove kvm_arch_arch_create_vcpu_debugfs too for non-x86 arches.

I'll queue your 2/2.

Great, so what about 1/2? I have no objection to your patch for this.

thanks,

greg k-h

maintainer
#6 lore raw
Quoted 18 lines · Greg KH
Quoted 17 lines · Paolo Bonzini
Quoted 15 lines · Greg KH

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Cc Paolo Bonzini <[email protected]>
Cc "Radim Krm" <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc "H. Peter Anvin" <[email protected]>

---
v2: new patch in the series

Quoted 5 lines
Quoted 3 lines

Let's remove kvm_arch_arch_create_vcpu_debugfs too for non-x86 arches.

I'll queue your 2/2.

Great, so what about 1/2? I have no objection to your patch for this.

I'll queue my own replacement of 1/2, together with your 2/2. Both should reach Linus later this week.

Paolo

author
#7 lore raw
Quoted 19 lines · Paolo Bonzini
Quoted 18 lines · Greg KH
Quoted 17 lines · Paolo Bonzini
Quoted 15 lines · Greg KH

There is no need for this function as all arches have to implement kvm_arch_create_vcpu_debugfs() no matter what, so just remove this call as it is pointless.

Cc Paolo Bonzini <[email protected]>
Cc "Radim Krm" <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc "H. Peter Anvin" <[email protected]>

---
v2: new patch in the series

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

Let's remove kvm_arch_arch_create_vcpu_debugfs too for non-x86 arches.

I'll queue your 2/2.

Great, so what about 1/2? I have no objection to your patch for this.

I'll queue my own replacement of 1/2, together with your 2/2. Both should reach Linus later this week.

Wonderful, thanks.

greg k-h