[PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

Subsystems: kernel virtual machine for powerpc (kvm/powerpc), linux for powerpc (32-bit and 64-bit), the rest

STALE1798d

10 messages, 2 authors, 2021-09-02 · open the first message on its own page

[PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Alexey Kardashevskiy <hidden>
Date: 2021-07-07 04:22:03

Currently it is vm-$currentpid which works as long as there is just one
VM per the userspace (99.99% cases) but produces a bunch
of "debugfs: Directory 'vm16679' with parent 'kvm' already present!"
when syzkaller (syscall fuzzer) is running so only one VM is present in
the debugfs for a given process.

This changes the debugfs node to include the LPID which alone should be
system wide unique. This leaves the existing pid for the convenience of
matching the VM's debugfs with the running userspace process (QEMU).

Signed-off-by: Alexey Kardashevskiy <redacted>
---
 arch/powerpc/kvm/book3s_hv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
 	/*
 	 * Create a debugfs directory for the VM
 	 */
-	snprintf(buf, sizeof(buf), "vm%d", current->pid);
+	snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
 	kvm->arch.debugfs_dir = debugfs_create_dir(buf, kvm_debugfs_dir);
 	kvmppc_mmu_debugfs_init(kvm);
 	if (radix_enabled())
-- 
2.30.2

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Fabiano Rosas <hidden>
Date: 2021-07-07 17:49:00

Alexey Kardashevskiy [off-list ref] writes:
Currently it is vm-$currentpid which works as long as there is just one
VM per the userspace (99.99% cases) but produces a bunch
of "debugfs: Directory 'vm16679' with parent 'kvm' already present!"
when syzkaller (syscall fuzzer) is running so only one VM is present in
the debugfs for a given process.

This changes the debugfs node to include the LPID which alone should be
system wide unique. This leaves the existing pid for the convenience of
matching the VM's debugfs with the running userspace process (QEMU).

Signed-off-by: Alexey Kardashevskiy <redacted>
Reviewed-by: Fabiano Rosas <redacted>
quoted hunk
---
 arch/powerpc/kvm/book3s_hv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
 	/*
 	 * Create a debugfs directory for the VM
 	 */
-	snprintf(buf, sizeof(buf), "vm%d", current->pid);
+	snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
 	kvm->arch.debugfs_dir = debugfs_create_dir(buf, kvm_debugfs_dir);
 	kvmppc_mmu_debugfs_init(kvm);
 	if (radix_enabled())

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Alexey Kardashevskiy <hidden>
Date: 2021-07-08 02:23:02


On 08/07/2021 03:48, Fabiano Rosas wrote:
Alexey Kardashevskiy [off-list ref] writes:
quoted
Currently it is vm-$currentpid which works as long as there is just one
VM per the userspace (99.99% cases) but produces a bunch
of "debugfs: Directory 'vm16679' with parent 'kvm' already present!"
when syzkaller (syscall fuzzer) is running so only one VM is present in
the debugfs for a given process.

This changes the debugfs node to include the LPID which alone should be
system wide unique. This leaves the existing pid for the convenience of
matching the VM's debugfs with the running userspace process (QEMU).

Signed-off-by: Alexey Kardashevskiy <redacted>
Reviewed-by: Fabiano Rosas <redacted>
thanks.

Strangely it also fixes a bunch of

BUG: unable to handle kernel NULL pointer dereference in corrupted
BUG: unable to handle kernel paging request in corrupted

I was having 3 of these for every hour of running syzkaller and not 
anymore with this patch.

quoted
---
  arch/powerpc/kvm/book3s_hv.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
  	/*
  	 * Create a debugfs directory for the VM
  	 */
-	snprintf(buf, sizeof(buf), "vm%d", current->pid);
+	snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
  	kvm->arch.debugfs_dir = debugfs_create_dir(buf, kvm_debugfs_dir);
  	kvmppc_mmu_debugfs_init(kvm);
  	if (radix_enabled())
-- 
Alexey

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Alexey Kardashevskiy <hidden>
Date: 2021-08-13 09:50:12


On 07/07/2021 14:13, Alexey Kardashevskiy wrote:
Currently it is vm-$currentpid which works as long as there is just one
VM per the userspace (99.99% cases) but produces a bunch
of "debugfs: Directory 'vm16679' with parent 'kvm' already present!"
when syzkaller (syscall fuzzer) is running so only one VM is present in
the debugfs for a given process.

This changes the debugfs node to include the LPID which alone should be
system wide unique. This leaves the existing pid for the convenience of
matching the VM's debugfs with the running userspace process (QEMU).

Signed-off-by: Alexey Kardashevskiy <redacted>
Looks like this is not enough as syzkaller still manages to cause the 
error message, I need more robust approach as in 
https://lore.kernel.org/patchwork/patch/1472025/  or   alternatively 
move this debugfs stuff under the platform-independent directory, how 
about that?

quoted hunk
---
  arch/powerpc/kvm/book3s_hv.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
  	/*
  	 * Create a debugfs directory for the VM
  	 */
-	snprintf(buf, sizeof(buf), "vm%d", current->pid);
+	snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
  	kvm->arch.debugfs_dir = debugfs_create_dir(buf, kvm_debugfs_dir);
  	kvmppc_mmu_debugfs_init(kvm);
  	if (radix_enabled())
-- 
Alexey

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Fabiano Rosas <hidden>
Date: 2021-08-17 22:21:17

Alexey Kardashevskiy [off-list ref] writes:
On 07/07/2021 14:13, Alexey Kardashevskiy wrote:
alternatively move this debugfs stuff under the platform-independent
directory, how about that?
That's a good idea. I only now realized we have two separate directories
for the same guest:

$ ls /sys/kernel/debug/kvm/ | grep $pid
19062-11
vm19062               

Looks like we would have to implement kvm_arch_create_vcpu_debugfs for
the vcpu information and add a similar hook for the vm.
quoted
---
  arch/powerpc/kvm/book3s_hv.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
  	/*
  	 * Create a debugfs directory for the VM
  	 */
-	snprintf(buf, sizeof(buf), "vm%d", current->pid);
+	snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
  	kvm->arch.debugfs_dir = debugfs_create_dir(buf, kvm_debugfs_dir);
  	kvmppc_mmu_debugfs_init(kvm);
  	if (radix_enabled())

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Alexey Kardashevskiy <hidden>
Date: 2021-08-24 08:37:36


On 18/08/2021 08:20, Fabiano Rosas wrote:
Alexey Kardashevskiy [off-list ref] writes:
quoted
On 07/07/2021 14:13, Alexey Kardashevskiy wrote:
quoted
alternatively move this debugfs stuff under the platform-independent
directory, how about that?
That's a good idea. I only now realized we have two separate directories
for the same guest:

$ ls /sys/kernel/debug/kvm/ | grep $pid
19062-11
vm19062

Looks like we would have to implement kvm_arch_create_vcpu_debugfs for
the vcpu information and add a similar hook for the vm.
Something like that. From the git history, it looks like the ppc folder 
was added first and then the generic kvm folder was added but apparently 
they did not notice the ppc one due to natural reasons :)

If you are not too busy, can you please merge the ppc one into the 
generic one and post the patch, so we won't need to fix these 
duplication warnings again? Thanks,


quoted
quoted
---
   arch/powerpc/kvm/book3s_hv.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
   	/*
   	 * Create a debugfs directory for the VM
   	 */
-	snprintf(buf, sizeof(buf), "vm%d", current->pid);
+	snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
   	kvm->arch.debugfs_dir = debugfs_create_dir(buf, kvm_debugfs_dir);
   	kvmppc_mmu_debugfs_init(kvm);
   	if (radix_enabled())
-- 
Alexey

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Alexey Kardashevskiy <hidden>
Date: 2021-09-01 08:44:07


On 24/08/2021 18:37, Alexey Kardashevskiy wrote:

On 18/08/2021 08:20, Fabiano Rosas wrote:
quoted
Alexey Kardashevskiy [off-list ref] writes:
quoted
On 07/07/2021 14:13, Alexey Kardashevskiy wrote:
quoted
alternatively move this debugfs stuff under the platform-independent
directory, how about that?
That's a good idea. I only now realized we have two separate directories
for the same guest:

$ ls /sys/kernel/debug/kvm/ | grep $pid
19062-11
vm19062

Looks like we would have to implement kvm_arch_create_vcpu_debugfs for
the vcpu information and add a similar hook for the vm.
Something like that. From the git history, it looks like the ppc folder 
was added first and then the generic kvm folder was added but apparently 
they did not notice the ppc one due to natural reasons :)

If you are not too busy, can you please merge the ppc one into the 
generic one and post the patch, so we won't need to fix these 
duplication warnings again? Thanks,


Turns out it is not that straight forward as I thought as the common KVM 
debugfs entry is created after PPC HV KVM created its own and there is 
no obvious way to change the order (no "post init" hook in kvmppc_ops).

Also, unlike the common KVM debugfs setup, we do not allocate structures 
to support debugfs nodes so we do not leak anything to bother with a 
mutex like 85cd39af14f4 did.

So I'd stick to the original patch to reduce the noise in the dmesg, and 
it also exposes lpid which I find rather useful for finding the right 
partition scope tree in partition_tb.

Michael?


quoted
quoted
quoted
---
   arch/powerpc/kvm/book3s_hv.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c 
b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm 
*kvm)
       /*
        * Create a debugfs directory for the VM
        */
-    snprintf(buf, sizeof(buf), "vm%d", current->pid);
+    snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
       kvm->arch.debugfs_dir = debugfs_create_dir(buf, 
kvm_debugfs_dir);
       kvmppc_mmu_debugfs_init(kvm);
       if (radix_enabled())
-- 
Alexey

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Fabiano Rosas <hidden>
Date: 2021-09-01 14:23:30

Alexey Kardashevskiy [off-list ref] writes:
On 24/08/2021 18:37, Alexey Kardashevskiy wrote:
quoted

On 18/08/2021 08:20, Fabiano Rosas wrote:
quoted
Alexey Kardashevskiy [off-list ref] writes:
quoted
On 07/07/2021 14:13, Alexey Kardashevskiy wrote:
quoted
alternatively move this debugfs stuff under the platform-independent
directory, how about that?
That's a good idea. I only now realized we have two separate directories
for the same guest:

$ ls /sys/kernel/debug/kvm/ | grep $pid
19062-11
vm19062

Looks like we would have to implement kvm_arch_create_vcpu_debugfs for
the vcpu information and add a similar hook for the vm.
Something like that. From the git history, it looks like the ppc folder 
was added first and then the generic kvm folder was added but apparently 
they did not notice the ppc one due to natural reasons :)

If you are not too busy, can you please merge the ppc one into the 
generic one and post the patch, so we won't need to fix these 
duplication warnings again? Thanks,


Turns out it is not that straight forward as I thought as the common KVM 
debugfs entry is created after PPC HV KVM created its own and there is 
no obvious way to change the order (no "post init" hook in
kvmppc_ops).
That is why I mentioned creating a hook similar to
kvm_create_vcpu_debugfs in the common KVM code. kvm_create_vm_debugfs or
something.

Alternatively, maybe kvm_create_vm_debugfs could be moved earlier into
kvm_create_vm, before kvm_arch_post_init_vm and we could move our code
into kvm_arch_post_init_vm.
Also, unlike the common KVM debugfs setup, we do not allocate structures 
to support debugfs nodes so we do not leak anything to bother with a 
mutex like 85cd39af14f4 did.

So I'd stick to the original patch to reduce the noise in the dmesg, and 
it also exposes lpid which I find rather useful for finding the right 
partition scope tree in partition_tb.

Michael?

quoted

quoted
quoted
quoted
---
   arch/powerpc/kvm/book3s_hv.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c 
b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm 
*kvm)
       /*
        * Create a debugfs directory for the VM
        */
-    snprintf(buf, sizeof(buf), "vm%d", current->pid);
+    snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
       kvm->arch.debugfs_dir = debugfs_create_dir(buf, 
kvm_debugfs_dir);
       kvmppc_mmu_debugfs_init(kvm);
       if (radix_enabled())

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Fabiano Rosas <hidden>
Date: 2021-09-01 15:26:26

Fabiano Rosas [off-list ref] writes:
That is why I mentioned creating a hook similar to
kvm_create_vcpu_debugfs in the common KVM code. kvm_create_vm_debugfs or
something.
s/kvm/kvm_arch/

Re: [PATCH kernel] KVM: PPC: Book3S HV: Make unique debugfs nodename

From: Alexey Kardashevskiy <hidden>
Date: 2021-09-02 05:32:13


On 02/09/2021 00:23, Fabiano Rosas wrote:
Alexey Kardashevskiy [off-list ref] writes:
quoted
On 24/08/2021 18:37, Alexey Kardashevskiy wrote:
quoted

On 18/08/2021 08:20, Fabiano Rosas wrote:
quoted
Alexey Kardashevskiy [off-list ref] writes:
quoted
On 07/07/2021 14:13, Alexey Kardashevskiy wrote:
quoted
alternatively move this debugfs stuff under the platform-independent
directory, how about that?
That's a good idea. I only now realized we have two separate directories
for the same guest:

$ ls /sys/kernel/debug/kvm/ | grep $pid
19062-11
vm19062

Looks like we would have to implement kvm_arch_create_vcpu_debugfs for
the vcpu information and add a similar hook for the vm.
Something like that. From the git history, it looks like the ppc folder
was added first and then the generic kvm folder was added but apparently
they did not notice the ppc one due to natural reasons :)

If you are not too busy, can you please merge the ppc one into the
generic one and post the patch, so we won't need to fix these
duplication warnings again? Thanks,


Turns out it is not that straight forward as I thought as the common KVM
debugfs entry is created after PPC HV KVM created its own and there is
no obvious way to change the order (no "post init" hook in
kvmppc_ops).
That is why I mentioned creating a hook similar to
kvm_create_vcpu_debugfs in the common KVM code. kvm_create_vm_debugfs or
something.
ah sorry I missed that :-/

Alternatively, maybe kvm_create_vm_debugfs could be moved earlier into
kvm_create_vm, before kvm_arch_post_init_vm and we could move our code
into kvm_arch_post_init_vm.
kvm_arch_create_vcpu_debugfs() or kvm_arch_post_init_vm() will still 
require hooks in kvmppc_ops and such bikeshedding may take a while :)

quoted
Also, unlike the common KVM debugfs setup, we do not allocate structures
to support debugfs nodes so we do not leak anything to bother with a
mutex like 85cd39af14f4 did.

So I'd stick to the original patch to reduce the noise in the dmesg, and
it also exposes lpid which I find rather useful for finding the right
partition scope tree in partition_tb.

Michael?

quoted

quoted
quoted
quoted
---
    arch/powerpc/kvm/book3s_hv.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/book3s_hv.c
b/arch/powerpc/kvm/book3s_hv.c
index 1d1fcc290fca..0223ddc0eed0 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5227,7 +5227,7 @@ static int kvmppc_core_init_vm_hv(struct kvm
*kvm)
        /*
         * Create a debugfs directory for the VM
         */
-    snprintf(buf, sizeof(buf), "vm%d", current->pid);
+    snprintf(buf, sizeof(buf), "vm%d-lp%ld", current->pid, lpid);
        kvm->arch.debugfs_dir = debugfs_create_dir(buf,
kvm_debugfs_dir);
        kvmppc_mmu_debugfs_init(kvm);
        if (radix_enabled())
-- 
Alexey
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help