xen/debugfs: Add 'p2m' file for printing out the P2M layout.
We walk over the whole P2M tree and construct a simplified view of which PFN regions belong to what level and what type they are. Only enabled if CONFIG_XEN_DEBUG_FS is set. [v2: UNKN->UNKNOWN, use uninitialized_var] [v3: Rebased on top of mmu->p2m code split] [v4: Fixed the else if] Reviewed-by: Ian Campbell <Ian.Campbell@eu.citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
@@ -46,6 +46,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/seq_file.h>
|
||||
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/tlbflush.h>
|
||||
@@ -2367,6 +2368,18 @@ EXPORT_SYMBOL_GPL(xen_remap_domain_mfn_range);
|
||||
|
||||
#ifdef CONFIG_XEN_DEBUG_FS
|
||||
|
||||
static int p2m_dump_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
return single_open(filp, p2m_dump_show, NULL);
|
||||
}
|
||||
|
||||
static const struct file_operations p2m_dump_fops = {
|
||||
.open = p2m_dump_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static struct dentry *d_mmu_debug;
|
||||
|
||||
static int __init xen_mmu_debugfs(void)
|
||||
@@ -2422,6 +2435,7 @@ static int __init xen_mmu_debugfs(void)
|
||||
debugfs_create_u32("prot_commit_batched", 0444, d_mmu_debug,
|
||||
&mmu_stats.prot_commit_batched);
|
||||
|
||||
debugfs_create_file("p2m", 0600, d_mmu_debug, NULL, &p2m_dump_fops);
|
||||
return 0;
|
||||
}
|
||||
fs_initcall(xen_mmu_debugfs);
|
||||
|
Reference in New Issue
Block a user