Re: [PATCHv1, RFC 5/8] x86/mm: Fold p4d page table layer at runtime

From: Brian Gerst
Date: Sat May 27 2017 - 18:57:10 EST


On Sat, May 27, 2017 at 6:46 PM, Kirill A. Shutemov
<kirill@xxxxxxxxxxxxx> wrote:
> On Sat, May 27, 2017 at 11:09:54AM -0400, Brian Gerst wrote:
>> > static inline int pgd_none(pgd_t pgd)
>> > {
>> > + if (p4d_folded)
>> > + return 0;
>> > /*
>> > * There is no need to do a workaround for the KNL stray
>> > * A/D bit erratum here. PGDs only point to page tables
>>
>> These should use static_cpu_has(X86_FEATURE_LA57), so that it gets
>> patched by alternatives.
>
> Right, eventually we would likely need something like this. But at this
> point I'm more worried about correctness than performance. Performance
> will be the next step.
>
> And I haven't tried it yet, but I would expect direct use of alternatives
> wouldn't be possible. If I read code correctly, we enable paging way
> before we apply alternatives. But we need to have something functional in
> between.

static_cpu_has() does the check dynamically before alternatives are
applied, so using it early isn't a problem.

--
Brian Gerst