Re: [PATCH 09/13] x86/tdx: Account shared memory

From: Huang, Kai
Date: Tue Oct 10 2023 - 06:05:30 EST



> +#ifdef CONFIG_DEBUG_FS
> +static int tdx_shared_memory_show(struct seq_file *m, void *p)
> +{
> + unsigned long addr, end;
> + unsigned long found = 0;
> +
> + addr = PAGE_OFFSET;
> + end = PAGE_OFFSET + get_max_mapped();
> +
> + while (addr < end) {
> + unsigned long size;
> + unsigned int level;
> + pte_t *pte;
> +
> + pte = lookup_address(addr, &level);
> + size = page_level_size(level);
> +
> + if (pte && pte_decrypted(*pte))
> + found += size / PAGE_SIZE;
> +
> + addr += size;

This could be a long loop, perhaps add cond_resched() here?

> + }
> +
> + seq_printf(m, "Number of unshared pages in kernel page tables: %16lu\n",
> + found);
> + seq_printf(m, "Number of pages accounted as unshared: %16ld\n",
> + atomic_long_read(&nr_shared));
> + return 0;
> +}
> +