Re: [PATCH] x86/mm/pti: in pti_clone_pgtable() don't increase addr by PUD_SIZE

Song Liu
2019-08-20T16:05:58Z

> On Aug 20, 2019, at 7:18 AM, Dave Hansen <dave.hansen@intel.com> wrote:
>
> On 8/20/19 7:14 AM, Song Liu wrote:
>>> *But*, that shouldn't get hit on a Skylake CPU since those have PCIDs
>>> and shouldn't have a global kernel image. Could you confirm whether
>>> PCIDs are supported on this CPU?
>> Yes, pcid is listed in /proc/cpuinfo.
>
> So what's going on? Could you confirm exactly which pti_clone_pgtable()
> is causing you problems? Do you have a theory as to why this manifests
> as a performance problem rather than a functional one?
>
> A diff of these:
>
> /sys/kernel/debug/page_tables/current_user
> /sys/kernel/debug/page_tables/current_kernel
>
> before and after your patch might be helpful.

I believe the difference is from the following entries (7 PMDs)

Before the patch:

current_kernel: 0xffffffff81000000-0xffffffff81e04000 14352K ro GLB x pte
efi: 0xffffffff81000000-0xffffffff81e04000 14352K ro GLB x pte
kernel: 0xffffffff81000000-0xffffffff81e04000 14352K ro GLB x pte

After the patch:

current_kernel: 0xffffffff81000000-0xffffffff81e00000 14M ro PSE GLB x pmd
efi: 0xffffffff81000000-0xffffffff81e00000 14M ro PSE GLB x pmd
kernel: 0xffffffff81000000-0xffffffff81e00000 14M ro PSE GLB x pmd

current_kernel and kernel show same data though.

Thanks,
Song