[linux-next:master 7592/7905] arch/riscv/mm/ptdump.c:57:3: error: 'FIXADDR_START' undeclared here (not in a function); did you mean 'XAS_RESTART'?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Zong,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   30e2206e11ce27ae910cc0dab21472429e400a87
commit: c0eba2d72e70b4208ca6fd82820ba7428090e350 [7592/7905] riscv: support DEBUG_WX
config: riscv-randconfig-r003-20200509 (attached as .config)
compiler: riscv64-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout c0eba2d72e70b4208ca6fd82820ba7428090e350
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=riscv 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All error/warnings (new ones prefixed by >>):

>> arch/riscv/mm/ptdump.c:57:3: error: 'FIXADDR_START' undeclared here (not in a function); did you mean 'XAS_RESTART'?
      57 |  {FIXADDR_START,  "Fixmap start"},
         |   ^~~~~~~~~~~~~
         |   XAS_RESTART
>> arch/riscv/mm/ptdump.c:58:3: error: 'FIXADDR_TOP' undeclared here (not in a function)
      58 |  {FIXADDR_TOP,  "Fixmap end"},
         |   ^~~~~~~~~~~
>> arch/riscv/mm/ptdump.c:59:3: error: 'PCI_IO_START' undeclared here (not in a function)
      59 |  {PCI_IO_START,  "PCI I/O start"},
         |   ^~~~~~~~~~~~
>> arch/riscv/mm/ptdump.c:60:3: error: 'PCI_IO_END' undeclared here (not in a function)
      60 |  {PCI_IO_END,  "PCI I/O end"},
         |   ^~~~~~~~~~
   In file included from arch/riscv/include/asm/page.h:12,
                    from arch/riscv/include/asm/thread_info.h:11,
                    from include/linux/thread_info.h:38,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/riscv/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:78,
                    from include/linux/spinlock.h:51,
                    from include/linux/wait.h:9,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from include/linux/debugfs.h:15,
                    from arch/riscv/mm/ptdump.c:7:
   arch/riscv/mm/ptdump.c: In function 'note_page':
>> arch/riscv/mm/ptdump.c:210:20: error: implicit declaration of function 'pte_pfn' [-Werror=implicit-function-declaration]
     210 |  u64 pa = PFN_PHYS(pte_pfn(__pte(val)));
         |                    ^~~~~~~
   include/linux/pfn.h:21:36: note: in definition of macro 'PFN_PHYS'
      21 | #define PFN_PHYS(x) ((phys_addr_t)(x) << PAGE_SHIFT)
         |                                    ^
   arch/riscv/mm/ptdump.c: In function 'ptdump_walk':
>> arch/riscv/mm/ptdump.c:257:6: error: 'KERN_VIRT_START' undeclared (first use in this function); did you mean 'KERN_VIRT_SIZE'?
     257 |     {KERN_VIRT_START, ULONG_MAX},
         |      ^~~~~~~~~~~~~~~
         |      KERN_VIRT_SIZE
   arch/riscv/mm/ptdump.c:257:6: note: each undeclared identifier is reported only once for each function it appears in
>> arch/riscv/mm/ptdump.c:257:6: warning: initialization of 'long unsigned int' from 'struct addr_marker *' makes integer from pointer without a cast [-Wint-conversion]
   arch/riscv/mm/ptdump.c:257:6: note: (near initialization for '(anonymous)[0].start')
   arch/riscv/mm/ptdump.c: In function 'ptdump_check_wx':
   arch/riscv/mm/ptdump.c:279:6: error: 'KERN_VIRT_START' undeclared (first use in this function); did you mean 'KERN_VIRT_SIZE'?
     279 |     {KERN_VIRT_START, ULONG_MAX},
         |      ^~~~~~~~~~~~~~~
         |      KERN_VIRT_SIZE
   arch/riscv/mm/ptdump.c:279:6: warning: initialization of 'long unsigned int' from 'struct addr_marker *' makes integer from pointer without a cast [-Wint-conversion]
   arch/riscv/mm/ptdump.c:279:6: note: (near initialization for '(anonymous)[0].start')
   cc1: some warnings being treated as errors

vim +57 arch/riscv/mm/ptdump.c

59c4da8640ccf4 Zong Li 2020-03-12   @7  #include <linux/debugfs.h>
59c4da8640ccf4 Zong Li 2020-03-12    8  #include <linux/seq_file.h>
59c4da8640ccf4 Zong Li 2020-03-12    9  #include <linux/ptdump.h>
59c4da8640ccf4 Zong Li 2020-03-12   10  
59c4da8640ccf4 Zong Li 2020-03-12   11  #include <asm/ptdump.h>
59c4da8640ccf4 Zong Li 2020-03-12   12  #include <asm/pgtable.h>
59c4da8640ccf4 Zong Li 2020-03-12   13  #include <asm/kasan.h>
59c4da8640ccf4 Zong Li 2020-03-12   14  
59c4da8640ccf4 Zong Li 2020-03-12   15  #define pt_dump_seq_printf(m, fmt, args...)	\
59c4da8640ccf4 Zong Li 2020-03-12   16  ({						\
59c4da8640ccf4 Zong Li 2020-03-12   17  	if (m)					\
59c4da8640ccf4 Zong Li 2020-03-12   18  		seq_printf(m, fmt, ##args);	\
59c4da8640ccf4 Zong Li 2020-03-12   19  })
59c4da8640ccf4 Zong Li 2020-03-12   20  
59c4da8640ccf4 Zong Li 2020-03-12   21  #define pt_dump_seq_puts(m, fmt)	\
59c4da8640ccf4 Zong Li 2020-03-12   22  ({					\
59c4da8640ccf4 Zong Li 2020-03-12   23  	if (m)				\
59c4da8640ccf4 Zong Li 2020-03-12   24  		seq_printf(m, fmt);	\
59c4da8640ccf4 Zong Li 2020-03-12   25  })
59c4da8640ccf4 Zong Li 2020-03-12   26  
59c4da8640ccf4 Zong Li 2020-03-12   27  /*
59c4da8640ccf4 Zong Li 2020-03-12   28   * The page dumper groups page table entries of the same type into a single
59c4da8640ccf4 Zong Li 2020-03-12   29   * description. It uses pg_state to track the range information while
59c4da8640ccf4 Zong Li 2020-03-12   30   * iterating over the pte entries. When the continuity is broken it then
59c4da8640ccf4 Zong Li 2020-03-12   31   * dumps out a description of the range.
59c4da8640ccf4 Zong Li 2020-03-12   32   */
59c4da8640ccf4 Zong Li 2020-03-12   33  struct pg_state {
59c4da8640ccf4 Zong Li 2020-03-12   34  	struct ptdump_state ptdump;
59c4da8640ccf4 Zong Li 2020-03-12   35  	struct seq_file *seq;
59c4da8640ccf4 Zong Li 2020-03-12   36  	const struct addr_marker *marker;
59c4da8640ccf4 Zong Li 2020-03-12   37  	unsigned long start_address;
59c4da8640ccf4 Zong Li 2020-03-12   38  	unsigned long start_pa;
59c4da8640ccf4 Zong Li 2020-03-12   39  	unsigned long last_pa;
59c4da8640ccf4 Zong Li 2020-03-12   40  	int level;
59c4da8640ccf4 Zong Li 2020-03-12   41  	u64 current_prot;
59c4da8640ccf4 Zong Li 2020-03-12   42  	bool check_wx;
59c4da8640ccf4 Zong Li 2020-03-12   43  	unsigned long wx_pages;
59c4da8640ccf4 Zong Li 2020-03-12   44  };
59c4da8640ccf4 Zong Li 2020-03-12   45  
59c4da8640ccf4 Zong Li 2020-03-12   46  /* Address marker */
59c4da8640ccf4 Zong Li 2020-03-12   47  struct addr_marker {
59c4da8640ccf4 Zong Li 2020-03-12   48  	unsigned long start_address;
59c4da8640ccf4 Zong Li 2020-03-12   49  	const char *name;
59c4da8640ccf4 Zong Li 2020-03-12   50  };
59c4da8640ccf4 Zong Li 2020-03-12   51  
59c4da8640ccf4 Zong Li 2020-03-12   52  static struct addr_marker address_markers[] = {
59c4da8640ccf4 Zong Li 2020-03-12   53  #ifdef CONFIG_KASAN
59c4da8640ccf4 Zong Li 2020-03-12   54  	{KASAN_SHADOW_START,	"Kasan shadow start"},
59c4da8640ccf4 Zong Li 2020-03-12   55  	{KASAN_SHADOW_END,	"Kasan shadow end"},
59c4da8640ccf4 Zong Li 2020-03-12   56  #endif
59c4da8640ccf4 Zong Li 2020-03-12  @57  	{FIXADDR_START,		"Fixmap start"},
59c4da8640ccf4 Zong Li 2020-03-12  @58  	{FIXADDR_TOP,		"Fixmap end"},
59c4da8640ccf4 Zong Li 2020-03-12  @59  	{PCI_IO_START,		"PCI I/O start"},
59c4da8640ccf4 Zong Li 2020-03-12  @60  	{PCI_IO_END,		"PCI I/O end"},
59c4da8640ccf4 Zong Li 2020-03-12   61  #ifdef CONFIG_SPARSEMEM_VMEMMAP
59c4da8640ccf4 Zong Li 2020-03-12   62  	{VMEMMAP_START,		"vmemmap start"},
59c4da8640ccf4 Zong Li 2020-03-12   63  	{VMEMMAP_END,		"vmemmap end"},
59c4da8640ccf4 Zong Li 2020-03-12   64  #endif
59c4da8640ccf4 Zong Li 2020-03-12   65  	{VMALLOC_START,		"vmalloc() area"},
59c4da8640ccf4 Zong Li 2020-03-12   66  	{VMALLOC_END,		"vmalloc() end"},
59c4da8640ccf4 Zong Li 2020-03-12   67  	{PAGE_OFFSET,		"Linear mapping"},
59c4da8640ccf4 Zong Li 2020-03-12   68  	{-1, NULL},
59c4da8640ccf4 Zong Li 2020-03-12   69  };
59c4da8640ccf4 Zong Li 2020-03-12   70  
59c4da8640ccf4 Zong Li 2020-03-12   71  /* Page Table Entry */
59c4da8640ccf4 Zong Li 2020-03-12   72  struct prot_bits {
59c4da8640ccf4 Zong Li 2020-03-12   73  	u64 mask;
59c4da8640ccf4 Zong Li 2020-03-12   74  	u64 val;
59c4da8640ccf4 Zong Li 2020-03-12   75  	const char *set;
59c4da8640ccf4 Zong Li 2020-03-12   76  	const char *clear;
59c4da8640ccf4 Zong Li 2020-03-12   77  };
59c4da8640ccf4 Zong Li 2020-03-12   78  
59c4da8640ccf4 Zong Li 2020-03-12   79  static const struct prot_bits pte_bits[] = {
59c4da8640ccf4 Zong Li 2020-03-12   80  	{
59c4da8640ccf4 Zong Li 2020-03-12   81  		.mask = _PAGE_SOFT,
59c4da8640ccf4 Zong Li 2020-03-12   82  		.val = _PAGE_SOFT,
59c4da8640ccf4 Zong Li 2020-03-12   83  		.set = "RSW",
59c4da8640ccf4 Zong Li 2020-03-12   84  		.clear = "   ",
59c4da8640ccf4 Zong Li 2020-03-12   85  	}, {
59c4da8640ccf4 Zong Li 2020-03-12   86  		.mask = _PAGE_DIRTY,
59c4da8640ccf4 Zong Li 2020-03-12   87  		.val = _PAGE_DIRTY,
59c4da8640ccf4 Zong Li 2020-03-12   88  		.set = "D",
59c4da8640ccf4 Zong Li 2020-03-12   89  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12   90  	}, {
59c4da8640ccf4 Zong Li 2020-03-12   91  		.mask = _PAGE_ACCESSED,
59c4da8640ccf4 Zong Li 2020-03-12   92  		.val = _PAGE_ACCESSED,
59c4da8640ccf4 Zong Li 2020-03-12   93  		.set = "A",
59c4da8640ccf4 Zong Li 2020-03-12   94  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12   95  	}, {
59c4da8640ccf4 Zong Li 2020-03-12   96  		.mask = _PAGE_GLOBAL,
59c4da8640ccf4 Zong Li 2020-03-12   97  		.val = _PAGE_GLOBAL,
59c4da8640ccf4 Zong Li 2020-03-12   98  		.set = "G",
59c4da8640ccf4 Zong Li 2020-03-12   99  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12  100  	}, {
59c4da8640ccf4 Zong Li 2020-03-12  101  		.mask = _PAGE_USER,
59c4da8640ccf4 Zong Li 2020-03-12  102  		.val = _PAGE_USER,
59c4da8640ccf4 Zong Li 2020-03-12  103  		.set = "U",
59c4da8640ccf4 Zong Li 2020-03-12  104  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12  105  	}, {
59c4da8640ccf4 Zong Li 2020-03-12  106  		.mask = _PAGE_EXEC,
59c4da8640ccf4 Zong Li 2020-03-12  107  		.val = _PAGE_EXEC,
59c4da8640ccf4 Zong Li 2020-03-12  108  		.set = "X",
59c4da8640ccf4 Zong Li 2020-03-12  109  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12  110  	}, {
59c4da8640ccf4 Zong Li 2020-03-12  111  		.mask = _PAGE_WRITE,
59c4da8640ccf4 Zong Li 2020-03-12  112  		.val = _PAGE_WRITE,
59c4da8640ccf4 Zong Li 2020-03-12  113  		.set = "W",
59c4da8640ccf4 Zong Li 2020-03-12  114  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12  115  	}, {
59c4da8640ccf4 Zong Li 2020-03-12  116  		.mask = _PAGE_READ,
59c4da8640ccf4 Zong Li 2020-03-12  117  		.val = _PAGE_READ,
59c4da8640ccf4 Zong Li 2020-03-12  118  		.set = "R",
59c4da8640ccf4 Zong Li 2020-03-12  119  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12  120  	}, {
59c4da8640ccf4 Zong Li 2020-03-12  121  		.mask = _PAGE_PRESENT,
59c4da8640ccf4 Zong Li 2020-03-12  122  		.val = _PAGE_PRESENT,
59c4da8640ccf4 Zong Li 2020-03-12  123  		.set = "V",
59c4da8640ccf4 Zong Li 2020-03-12  124  		.clear = ".",
59c4da8640ccf4 Zong Li 2020-03-12  125  	}
59c4da8640ccf4 Zong Li 2020-03-12  126  };
59c4da8640ccf4 Zong Li 2020-03-12  127  
59c4da8640ccf4 Zong Li 2020-03-12  128  /* Page Level */
59c4da8640ccf4 Zong Li 2020-03-12  129  struct pg_level {
59c4da8640ccf4 Zong Li 2020-03-12  130  	const char *name;
59c4da8640ccf4 Zong Li 2020-03-12  131  	u64 mask;
59c4da8640ccf4 Zong Li 2020-03-12  132  };
59c4da8640ccf4 Zong Li 2020-03-12  133  
59c4da8640ccf4 Zong Li 2020-03-12  134  static struct pg_level pg_level[] = {
59c4da8640ccf4 Zong Li 2020-03-12  135  	{ /* pgd */
59c4da8640ccf4 Zong Li 2020-03-12  136  		.name = "PGD",
59c4da8640ccf4 Zong Li 2020-03-12  137  	}, { /* p4d */
59c4da8640ccf4 Zong Li 2020-03-12  138  		.name = (CONFIG_PGTABLE_LEVELS > 4) ? "P4D" : "PGD",
59c4da8640ccf4 Zong Li 2020-03-12  139  	}, { /* pud */
59c4da8640ccf4 Zong Li 2020-03-12  140  		.name = (CONFIG_PGTABLE_LEVELS > 3) ? "PUD" : "PGD",
59c4da8640ccf4 Zong Li 2020-03-12  141  	}, { /* pmd */
59c4da8640ccf4 Zong Li 2020-03-12  142  		.name = (CONFIG_PGTABLE_LEVELS > 2) ? "PMD" : "PGD",
59c4da8640ccf4 Zong Li 2020-03-12  143  	}, { /* pte */
59c4da8640ccf4 Zong Li 2020-03-12  144  		.name = "PTE",
59c4da8640ccf4 Zong Li 2020-03-12  145  	},
59c4da8640ccf4 Zong Li 2020-03-12  146  };
59c4da8640ccf4 Zong Li 2020-03-12  147  
59c4da8640ccf4 Zong Li 2020-03-12  148  static void dump_prot(struct pg_state *st)
59c4da8640ccf4 Zong Li 2020-03-12  149  {
59c4da8640ccf4 Zong Li 2020-03-12  150  	unsigned int i;
59c4da8640ccf4 Zong Li 2020-03-12  151  
59c4da8640ccf4 Zong Li 2020-03-12  152  	for (i = 0; i < ARRAY_SIZE(pte_bits); i++) {
59c4da8640ccf4 Zong Li 2020-03-12  153  		const char *s;
59c4da8640ccf4 Zong Li 2020-03-12  154  
59c4da8640ccf4 Zong Li 2020-03-12  155  		if ((st->current_prot & pte_bits[i].mask) == pte_bits[i].val)
59c4da8640ccf4 Zong Li 2020-03-12  156  			s = pte_bits[i].set;
59c4da8640ccf4 Zong Li 2020-03-12  157  		else
59c4da8640ccf4 Zong Li 2020-03-12  158  			s = pte_bits[i].clear;
59c4da8640ccf4 Zong Li 2020-03-12  159  
59c4da8640ccf4 Zong Li 2020-03-12  160  		if (s)
59c4da8640ccf4 Zong Li 2020-03-12  161  			pt_dump_seq_printf(st->seq, " %s", s);
59c4da8640ccf4 Zong Li 2020-03-12  162  	}
59c4da8640ccf4 Zong Li 2020-03-12  163  }
59c4da8640ccf4 Zong Li 2020-03-12  164  
59c4da8640ccf4 Zong Li 2020-03-12  165  #ifdef CONFIG_64BIT
59c4da8640ccf4 Zong Li 2020-03-12  166  #define ADDR_FORMAT	"0x%016lx"
59c4da8640ccf4 Zong Li 2020-03-12  167  #else
59c4da8640ccf4 Zong Li 2020-03-12  168  #define ADDR_FORMAT	"0x%08lx"
59c4da8640ccf4 Zong Li 2020-03-12  169  #endif
59c4da8640ccf4 Zong Li 2020-03-12  170  static void dump_addr(struct pg_state *st, unsigned long addr)
59c4da8640ccf4 Zong Li 2020-03-12  171  {
59c4da8640ccf4 Zong Li 2020-03-12  172  	static const char units[] = "KMGTPE";
59c4da8640ccf4 Zong Li 2020-03-12  173  	const char *unit = units;
59c4da8640ccf4 Zong Li 2020-03-12  174  	unsigned long delta;
59c4da8640ccf4 Zong Li 2020-03-12  175  
59c4da8640ccf4 Zong Li 2020-03-12  176  	pt_dump_seq_printf(st->seq, ADDR_FORMAT "-" ADDR_FORMAT "   ",
59c4da8640ccf4 Zong Li 2020-03-12  177  			   st->start_address, addr);
59c4da8640ccf4 Zong Li 2020-03-12  178  
59c4da8640ccf4 Zong Li 2020-03-12  179  	pt_dump_seq_printf(st->seq, " " ADDR_FORMAT " ", st->start_pa);
59c4da8640ccf4 Zong Li 2020-03-12  180  	delta = (addr - st->start_address) >> 10;
59c4da8640ccf4 Zong Li 2020-03-12  181  
59c4da8640ccf4 Zong Li 2020-03-12  182  	while (!(delta & 1023) && unit[1]) {
59c4da8640ccf4 Zong Li 2020-03-12  183  		delta >>= 10;
59c4da8640ccf4 Zong Li 2020-03-12  184  		unit++;
59c4da8640ccf4 Zong Li 2020-03-12  185  	}
59c4da8640ccf4 Zong Li 2020-03-12  186  
59c4da8640ccf4 Zong Li 2020-03-12  187  	pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit,
59c4da8640ccf4 Zong Li 2020-03-12  188  			   pg_level[st->level].name);
59c4da8640ccf4 Zong Li 2020-03-12  189  }
59c4da8640ccf4 Zong Li 2020-03-12  190  
59c4da8640ccf4 Zong Li 2020-03-12  191  static void note_prot_wx(struct pg_state *st, unsigned long addr)
59c4da8640ccf4 Zong Li 2020-03-12  192  {
59c4da8640ccf4 Zong Li 2020-03-12  193  	if (!st->check_wx)
59c4da8640ccf4 Zong Li 2020-03-12  194  		return;
59c4da8640ccf4 Zong Li 2020-03-12  195  
59c4da8640ccf4 Zong Li 2020-03-12  196  	if ((st->current_prot & (_PAGE_WRITE | _PAGE_EXEC)) !=
59c4da8640ccf4 Zong Li 2020-03-12  197  	    (_PAGE_WRITE | _PAGE_EXEC))
59c4da8640ccf4 Zong Li 2020-03-12  198  		return;
59c4da8640ccf4 Zong Li 2020-03-12  199  
59c4da8640ccf4 Zong Li 2020-03-12  200  	WARN_ONCE(1, "riscv/mm: Found insecure W+X mapping at address %p/%pS\n",
59c4da8640ccf4 Zong Li 2020-03-12  201  		  (void *)st->start_address, (void *)st->start_address);
59c4da8640ccf4 Zong Li 2020-03-12  202  
59c4da8640ccf4 Zong Li 2020-03-12  203  	st->wx_pages += (addr - st->start_address) / PAGE_SIZE;
59c4da8640ccf4 Zong Li 2020-03-12  204  }
59c4da8640ccf4 Zong Li 2020-03-12  205  
59c4da8640ccf4 Zong Li 2020-03-12  206  static void note_page(struct ptdump_state *pt_st, unsigned long addr,
59c4da8640ccf4 Zong Li 2020-03-12  207  		      int level, unsigned long val)
59c4da8640ccf4 Zong Li 2020-03-12  208  {
59c4da8640ccf4 Zong Li 2020-03-12  209  	struct pg_state *st = container_of(pt_st, struct pg_state, ptdump);
59c4da8640ccf4 Zong Li 2020-03-12 @210  	u64 pa = PFN_PHYS(pte_pfn(__pte(val)));
59c4da8640ccf4 Zong Li 2020-03-12  211  	u64 prot = 0;
59c4da8640ccf4 Zong Li 2020-03-12  212  
59c4da8640ccf4 Zong Li 2020-03-12  213  	if (level >= 0)
59c4da8640ccf4 Zong Li 2020-03-12  214  		prot = val & pg_level[level].mask;
59c4da8640ccf4 Zong Li 2020-03-12  215  
59c4da8640ccf4 Zong Li 2020-03-12  216  	if (st->level == -1) {
59c4da8640ccf4 Zong Li 2020-03-12  217  		st->level = level;
59c4da8640ccf4 Zong Li 2020-03-12  218  		st->current_prot = prot;
59c4da8640ccf4 Zong Li 2020-03-12  219  		st->start_address = addr;
59c4da8640ccf4 Zong Li 2020-03-12  220  		st->start_pa = pa;
59c4da8640ccf4 Zong Li 2020-03-12  221  		st->last_pa = pa;
59c4da8640ccf4 Zong Li 2020-03-12  222  		pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
59c4da8640ccf4 Zong Li 2020-03-12  223  	} else if (prot != st->current_prot ||
59c4da8640ccf4 Zong Li 2020-03-12  224  		   level != st->level || addr >= st->marker[1].start_address) {
59c4da8640ccf4 Zong Li 2020-03-12  225  		if (st->current_prot) {
59c4da8640ccf4 Zong Li 2020-03-12  226  			note_prot_wx(st, addr);
59c4da8640ccf4 Zong Li 2020-03-12  227  			dump_addr(st, addr);
59c4da8640ccf4 Zong Li 2020-03-12  228  			dump_prot(st);
59c4da8640ccf4 Zong Li 2020-03-12  229  			pt_dump_seq_puts(st->seq, "\n");
59c4da8640ccf4 Zong Li 2020-03-12  230  		}
59c4da8640ccf4 Zong Li 2020-03-12  231  
59c4da8640ccf4 Zong Li 2020-03-12  232  		while (addr >= st->marker[1].start_address) {
59c4da8640ccf4 Zong Li 2020-03-12  233  			st->marker++;
59c4da8640ccf4 Zong Li 2020-03-12  234  			pt_dump_seq_printf(st->seq, "---[ %s ]---\n",
59c4da8640ccf4 Zong Li 2020-03-12  235  					   st->marker->name);
59c4da8640ccf4 Zong Li 2020-03-12  236  		}
59c4da8640ccf4 Zong Li 2020-03-12  237  
59c4da8640ccf4 Zong Li 2020-03-12  238  		st->start_address = addr;
59c4da8640ccf4 Zong Li 2020-03-12  239  		st->start_pa = pa;
59c4da8640ccf4 Zong Li 2020-03-12  240  		st->last_pa = pa;
59c4da8640ccf4 Zong Li 2020-03-12  241  		st->current_prot = prot;
59c4da8640ccf4 Zong Li 2020-03-12  242  		st->level = level;
59c4da8640ccf4 Zong Li 2020-03-12  243  	} else {
59c4da8640ccf4 Zong Li 2020-03-12  244  		st->last_pa = pa;
59c4da8640ccf4 Zong Li 2020-03-12  245  	}
59c4da8640ccf4 Zong Li 2020-03-12  246  }
59c4da8640ccf4 Zong Li 2020-03-12  247  

:::::: The code at line 57 was first introduced by commit
:::::: 59c4da8640ccf4721d54d36835706f3eefb521a4 riscv: Add support to dump the kernel page tables

:::::: TO: Zong Li <zong.li@xxxxxxxxxx>
:::::: CC: Palmer Dabbelt <palmerdabbelt@xxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux