• David S. Miller's avatar
    [SPARC64]: Fix X server hangs due to large pages. · 47f2c360
    David S. Miller authored
    This problem was introduced by changeset
    14778d90
    
    Unlike the hugetlb code paths, the normal fault code is not setup to
    propagate PTE changes for large page sizes correctly like the ones we
    make for I/O mappings in io_remap_pfn_range().
    
    It is absolutely necessary to update all sub-ptes of a largepage
    mapping on a fault.  Adding special handling for this would add
    considerably complexity to tlb_batch_add().  So let's just side-step
    the issue and forcefully dirty any writable PTEs created by
    io_remap_pfn_range().
    
    The only other real option would be to disable to large PTE code of
    io_remap_pfn_range() and we really don't want to do that.
    
    Much thanks to Mikael Pettersson for tracking down this problem and
    testing debug patches.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    47f2c360
generic.c 4.29 KB