lkml.org 
[lkml]   [2009]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] x86: use the right protections for split-up pagetables


    On Fri, 20 Feb 2009, Ingo Molnar wrote:
    >
    > Agreed, split_large_page() was just plain confused here - there
    > was no hidden reason for this logic. It makes no sense to bring
    > any pte level protection information to the PMD level because a
    > pmd entry covers a set of 512 ptes so there's no singular
    > protection attribute that can be carried to it.

    Btw, I think split_large_page() is confused in another way too, although
    I'm not entirely sure that it matters. I suspect that it doesn't, if I
    read things correctly.

    The confusion? When it moves the 'ref_prot' bits from the upper level, it
    doesn't do the right thing for the PAT bit. That bit is special, and moves
    around depending on level. In the upper levels, it's bit#12, and in the
    final 4k pte level it's bit#7.

    So _if_ the PAT bit ever matters, it looks like split_large_page() does
    the wrong thing.

    Now, it looks like we avoid the PAT bit on purpose, and we only ever
    encode four PAT values (ie we use only the PCD/PWT bits, and leave the PAT
    bit clear - we don't need any more cases), _but_ we actually do end up
    looking at the PAT bit anyway in cache_attr(). So it looks like at least
    some of the code is _trying_ to handle the PAT bit, but I can pretty much
    guarantee that at least split_large_page() is broken if it is ever set.

    Linus


    \
     
     \ /
      Last update: 2009-02-20 16:45    [W:3.508 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site