14fb69cc4SJinbum Park // SPDX-License-Identifier: GPL-2.0 24fb69cc4SJinbum Park #include <linux/debugfs.h> 34fb69cc4SJinbum Park #include <linux/seq_file.h> 44fb69cc4SJinbum Park 54fb69cc4SJinbum Park #include <asm/ptdump.h> 64fb69cc4SJinbum Park 74fb69cc4SJinbum Park static int ptdump_show(struct seq_file *m, void *v) 84fb69cc4SJinbum Park { 94fb69cc4SJinbum Park struct ptdump_info *info = m->private; 104fb69cc4SJinbum Park 114fb69cc4SJinbum Park ptdump_walk_pgd(m, info); 124fb69cc4SJinbum Park return 0; 134fb69cc4SJinbum Park } 144fb69cc4SJinbum Park 154fb69cc4SJinbum Park static int ptdump_open(struct inode *inode, struct file *file) 164fb69cc4SJinbum Park { 174fb69cc4SJinbum Park return single_open(file, ptdump_show, inode->i_private); 184fb69cc4SJinbum Park } 194fb69cc4SJinbum Park 204fb69cc4SJinbum Park static const struct file_operations ptdump_fops = { 214fb69cc4SJinbum Park .open = ptdump_open, 224fb69cc4SJinbum Park .read = seq_read, 234fb69cc4SJinbum Park .llseek = seq_lseek, 244fb69cc4SJinbum Park .release = single_release, 254fb69cc4SJinbum Park }; 264fb69cc4SJinbum Park 27*a5e8acd9SJisheng Zhang (syna) void __init ptdump_debugfs_register(struct ptdump_info *info, const char *name) 284fb69cc4SJinbum Park { 29db0487abSGreg Kroah-Hartman debugfs_create_file(name, 0400, NULL, info, &ptdump_fops); 304fb69cc4SJinbum Park } 31