git: kernel - Improve pmap_change_attr() when used on the DMAP

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Dec 15 12:22:36 PST 2019


commit c2ec3418751ed579ef32df1e012847d3c17cbc67
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Dec 15 12:18:44 2019 -0800

    kernel - Improve pmap_change_attr() when used on the DMAP
    
    * When used on the DMAP's 1GB or 2MB pages pmap_change_attr()
      basically didn't work because it tries to access terminal PTEs
      (and there aren't any), instead accidently accessing the
      underlying physical memory and causing corruption.
    
    * Fix this by (1) Forcing the DMAP to use 2MB pages and
      (2) special-casing DMAP addresses in pmap_change_attr()
      to act on the PDEs.
    
    * This is not a complete fix because the granularity for
      any DMAP VAs will still be ~2MB and not 4K.  Its use by
      the DRM subsystem requires more investigation.  But the
      changes should improve some of the reported GPU corruption
      issues.
    
    Reported-by: peeter
    Testing-by: multiple

Summary of changes:
 sys/platform/pc64/include/pmap.h |  6 ++-
 sys/platform/pc64/vmm/ept.c      |  7 +++-
 sys/platform/pc64/x86_64/pmap.c  | 89 ++++++++++++++++++++++++++++++++--------
 3 files changed, 82 insertions(+), 20 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c2ec3418751ed579ef32df1e012847d3c17cbc67


-- 
DragonFly BSD source repository



More information about the Commits mailing list