Lines Matching refs:st
210 static void dump_prot(struct pg_state *st, const struct prot_bits *bits, in dump_prot() argument
218 if ((st->current_prot & bits->mask) == bits->val) in dump_prot()
224 pt_dump_seq_printf(st->seq, " %s", s); in dump_prot()
228 static void note_prot_uxn(struct pg_state *st, unsigned long addr) in note_prot_uxn() argument
230 if (!st->check_wx) in note_prot_uxn()
233 if ((st->current_prot & PTE_UXN) == PTE_UXN) in note_prot_uxn()
237 (void *)st->start_address, (void *)st->start_address); in note_prot_uxn()
239 st->uxn_pages += (addr - st->start_address) / PAGE_SIZE; in note_prot_uxn()
242 static void note_prot_wx(struct pg_state *st, unsigned long addr) in note_prot_wx() argument
244 if (!st->check_wx) in note_prot_wx()
246 if ((st->current_prot & PTE_RDONLY) == PTE_RDONLY) in note_prot_wx()
248 if ((st->current_prot & PTE_PXN) == PTE_PXN) in note_prot_wx()
252 (void *)st->start_address, (void *)st->start_address); in note_prot_wx()
254 st->wx_pages += (addr - st->start_address) / PAGE_SIZE; in note_prot_wx()
260 struct pg_state *st = container_of(pt_st, struct pg_state, ptdump); in note_page() local
267 if (st->level == -1) { in note_page()
268 st->level = level; in note_page()
269 st->current_prot = prot; in note_page()
270 st->start_address = addr; 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 addr >= st->marker[1].start_address) { in note_page()
277 if (st->current_prot) { in note_page()
278 note_prot_uxn(st, addr); in note_page()
279 note_prot_wx(st, addr); in note_page()
282 pt_dump_seq_printf(st->seq, "0x%016lx-0x%016lx ", in note_page()
283 st->start_address, addr); in note_page()
285 delta = (addr - st->start_address) >> 10; in note_page()
290 pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit, in note_page()
291 pg_level[st->level].name); in note_page()
292 if (st->current_prot && pg_level[st->level].bits) in note_page()
293 dump_prot(st, pg_level[st->level].bits, in note_page()
294 pg_level[st->level].num); in note_page()
295 pt_dump_seq_puts(st->seq, "\n"); in note_page()
297 if (addr >= st->marker[1].start_address) { in note_page()
298 st->marker++; in note_page()
299 pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name); in note_page()
302 st->start_address = addr; in note_page()
303 st->current_prot = prot; in note_page()
304 st->level = level; in note_page()
307 if (addr >= st->marker[1].start_address) { in note_page()
308 st->marker++; in note_page()
309 pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name); in note_page()
317 struct pg_state st; in ptdump_walk() local
322 st = (struct pg_state){ in ptdump_walk()
334 ptdump_walk_pgd(&st.ptdump, info->mm, NULL); in ptdump_walk()
355 struct pg_state st = { in ptdump_check_wx() local
372 ptdump_walk_pgd(&st.ptdump, &init_mm, NULL); in ptdump_check_wx()
374 if (st.wx_pages || st.uxn_pages) in ptdump_check_wx()
376 st.wx_pages, st.uxn_pages); in ptdump_check_wx()