lkml.org 
[lkml]   [2018]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch V3 09/11] x86/mm/cpa: Optimize same protection check
    When the existing mapping is correct and the new requested page protections
    are the same as the existing ones, then further checks can be omitted and the
    large page can be preserved. The slow path 4k wise check will not come up with
    a different result.

    Before:

    1G pages checked: 2
    1G pages sameprot: 0
    1G pages preserved: 0
    2M pages checked: 540
    2M pages sameprot: 466
    2M pages preserved: 47
    4K pages checked: 800709
    4K pages set-checked: 7668

    After:

    1G pages checked: 2
    1G pages sameprot: 0
    1G pages preserved: 0
    2M pages checked: 538
    2M pages sameprot: 466
    2M pages preserved: 47
    4K pages checked: 560642
    4K pages set-checked: 7668

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    arch/x86/mm/pageattr.c | 14 ++++++++++++++
    1 file changed, 14 insertions(+)

    --- a/arch/x86/mm/pageattr.c
    +++ b/arch/x86/mm/pageattr.c
    @@ -836,6 +836,20 @@ static int __should_split_large_page(pte
    }

    /*
    + * Optimization: If the requested pgprot is the same as the current
    + * pgprot, then the large page can be preserved and no updates are
    + * required independent of alignment and length of the requested
    + * range. The above already established that the current pgprot is
    + * correct, which in consequence makes the requested pgprot correct
    + * as well if it is the same. The static protection scan below will
    + * not come to a different conclusion.
    + */
    + if (pgprot_val(req_prot) == pgprot_val(old_prot)) {
    + cpa_inc_lp_sameprot(level);
    + return 0;
    + }
    +
    + /*
    * Make sure that the requested pgprot does not violate the static
    * protections. Check the full large page whether one of the pages
    * in it results in a different pgprot than the first one of the

    \
     
     \ /
      Last update: 2018-09-17 16:38    [W:2.854 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site