Lines Matching +full:m +full:- +full:num
1 // SPDX-License-Identifier: GPL-2.0-only
33 { -1, NULL },
36 #define pt_dump_seq_printf(m, fmt, args...) \ argument
38 if (m) \
39 seq_printf(m, fmt, ##args); \
42 #define pt_dump_seq_puts(m, fmt) \ argument
44 if (m) \
45 seq_printf(m, fmt); \
205 size_t num; member
219 .num = ARRAY_SIZE(section_bits),
223 .num = ARRAY_SIZE(pte_bits),
227 static void dump_prot(struct pg_state *st, const struct prot_bits *bits, size_t num) in dump_prot() argument
231 for (i = 0; i < num; i++, bits++) { in dump_prot()
234 if ((st->current_prot & bits->mask) == bits->val) in dump_prot()
235 s = bits->set; in dump_prot()
237 s = bits->clear; in dump_prot()
240 pt_dump_seq_printf(st->seq, " %s", s); in dump_prot()
246 if (!st->check_wx) in note_prot_wx()
248 if ((st->current_prot & pg_level[st->level].ro_bit->mask) == in note_prot_wx()
249 pg_level[st->level].ro_bit->val) in note_prot_wx()
251 if ((st->current_prot & pg_level[st->level].nx_bit->mask) == in note_prot_wx()
252 pg_level[st->level].nx_bit->val) in note_prot_wx()
256 (void *)st->start_address); in note_prot_wx()
258 st->wx_pages += (addr - st->start_address) / PAGE_SIZE; in note_prot_wx()
267 if (!st->level) { in note_page()
268 st->level = level; in note_page()
269 st->current_prot = prot; in note_page()
270 st->current_domain = domain; in note_page()
271 pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name); in note_page()
272 } else if (prot != st->current_prot || level != st->level || in note_page()
273 domain != st->current_domain || in note_page()
274 addr >= st->marker[1].start_address) { in note_page()
278 if (st->current_prot) { in note_page()
280 pt_dump_seq_printf(st->seq, "0x%08lx-0x%08lx ", in note_page()
281 st->start_address, addr); in note_page()
283 delta = (addr - st->start_address) >> 10; in note_page()
288 pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit, in note_page()
289 pg_level[st->level].name); in note_page()
290 if (st->current_domain) in note_page()
291 pt_dump_seq_printf(st->seq, " %s", in note_page()
292 st->current_domain); in note_page()
293 if (pg_level[st->level].bits) in note_page()
294 dump_prot(st, pg_level[st->level].bits, pg_level[st->level].num); in note_page()
295 pt_dump_seq_printf(st->seq, "\n"); in note_page()
298 if (addr >= st->marker[1].start_address) { in note_page()
299 st->marker++; in note_page()
300 pt_dump_seq_printf(st->seq, "---[ %s ]---\n", in note_page()
301 st->marker->name); in note_page()
303 st->start_address = addr; in note_page()
304 st->current_prot = prot; in note_page()
305 st->current_domain = domain; in note_page()
306 st->level = level; in note_page()
415 void ptdump_walk_pgd(struct seq_file *m, struct ptdump_info *info) in ptdump_walk_pgd() argument
418 .seq = m, in ptdump_walk_pgd()
419 .marker = info->markers, in ptdump_walk_pgd()
423 walk_pgd(&st, info->mm, info->base_addr); in ptdump_walk_pgd()
433 for (j = 0; j < pg_level[i].num; j++) { in ptdump_initialize()
459 { -1, NULL}, in ptdump_check_wx()