• Thomas Hellstrom's avatar
    mm, drm/ttm: Fix vm page protection handling · 5379e4dd
    Thomas Hellstrom authored
    TTM graphics buffer objects may, transparently to user-space,  move
    between IO and system memory. When that happens, all PTEs pointing to the
    old location are zapped before the move and then faulted in again if
    needed. When that happens, the page protection caching mode- and
    encryption bits may change and be different from those of
    struct vm_area_struct::vm_page_prot.
    
    We were using an ugly hack to set the page protection correctly.
    Fix that and instead export and use vmf_insert_mixed_prot() or use
    vmf_insert_pfn_prot().
    Also get the default page protection from
    struct vm_area_struct::vm_page_prot rather than using vm_get_page_prot().
    This way we catch modifications done by the vm system for drivers that
    want write-notification.
    
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: "Jérôme Glisse" <jglisse@redhat.com>
    Cc: "Christian König" <christian.koenig@amd.com>
    Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
    Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    5379e4dd
ttm_bo_vm.c 13.8 KB