From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: linuxppc-dev@lists.ozlabs.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
kvm-ppc@vger.kernel.org, Paul Mackerras <paulus@ozlabs.org>
Subject: [PATCH kernel] KVM: PPC: Expose userspace mm context id via debugfs
Date: Thu, 12 Jul 2018 17:30:26 +1000 [thread overview]
Message-ID: <20180712073026.19463-1-aik@ozlabs.ru> (raw)
This adds a debugfs entry with mm context id of a process which is using
KVM. This id is an index in the process table so the userspace can dump
that tree provided it is granted access to /dev/mem.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
arch/powerpc/include/asm/kvm_host.h | 1 +
arch/powerpc/kvm/book3s_64_mmu_hv.c | 58 +++++++++++++++++++++++++++++++++++++
2 files changed, 59 insertions(+)
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
index fa4efa7..bb72667 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -284,6 +284,7 @@ struct kvm_arch {
u64 process_table;
struct dentry *debugfs_dir;
struct dentry *htab_dentry;
+ struct dentry *mm_ctxid_dentry;
struct kvm_resize_hpt *resize_hpt; /* protected by kvm->lock */
#endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */
#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
index 7f3a8cf..3b9eb17 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
@@ -2138,11 +2138,69 @@ static const struct file_operations debugfs_htab_fops = {
.llseek = generic_file_llseek,
};
+static int debugfs_mm_ctxid_open(struct inode *inode, struct file *file)
+{
+ struct kvm *kvm = inode->i_private;
+
+ kvm_get_kvm(kvm);
+ file->private_data = kvm;
+
+ return nonseekable_open(inode, file);
+}
+
+static int debugfs_mm_ctxid_release(struct inode *inode, struct file *file)
+{
+ struct kvm *kvm = file->private_data;
+
+ kvm_put_kvm(kvm);
+ return 0;
+}
+
+static ssize_t debugfs_mm_ctxid_read(struct file *file, char __user *buf,
+ size_t len, loff_t *ppos)
+{
+ struct kvm *kvm = file->private_data;
+ ssize_t n, left, ret;
+ char tmp[64];
+
+ if (!kvm_is_radix(kvm))
+ return 0;
+
+ ret = snprintf(tmp, sizeof(tmp) - 1, "%lu\n", kvm->mm->context.id);
+ if (*ppos >= ret)
+ return 0;
+
+ left = min_t(ssize_t, ret - *ppos, len);
+ n = copy_to_user(buf, tmp + *ppos, left);
+ ret = left - n;
+ *ppos += ret;
+
+ return ret;
+}
+
+static ssize_t debugfs_mm_ctxid_write(struct file *file, const char __user *buf,
+ size_t len, loff_t *ppos)
+{
+ return -EACCES;
+}
+
+static const struct file_operations debugfs_mm_ctxid_fops = {
+ .owner = THIS_MODULE,
+ .open = debugfs_mm_ctxid_open,
+ .release = debugfs_mm_ctxid_release,
+ .read = debugfs_mm_ctxid_read,
+ .write = debugfs_mm_ctxid_write,
+ .llseek = generic_file_llseek,
+};
+
void kvmppc_mmu_debugfs_init(struct kvm *kvm)
{
kvm->arch.htab_dentry = debugfs_create_file("htab", 0400,
kvm->arch.debugfs_dir, kvm,
&debugfs_htab_fops);
+ kvm->arch.mm_ctxid_dentry = debugfs_create_file("mm_ctxid", 0400,
+ kvm->arch.debugfs_dir, kvm,
+ &debugfs_mm_ctxid_fops);
}
void kvmppc_mmu_book3s_hv_init(struct kvm_vcpu *vcpu)
--
2.11.0
next reply other threads:[~2018-07-12 7:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-12 7:30 Alexey Kardashevskiy [this message]
2018-07-17 2:01 ` [PATCH kernel] KVM: PPC: Expose userspace mm context id via debugfs Paul Mackerras
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180712073026.19463-1-aik@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).