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

Matthew Dillon dillon at
Sun Dec 15 12:22:36 PST 2019

commit c2ec3418751ed579ef32df1e012847d3c17cbc67
Author: Matthew Dillon <dillon at>
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
    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(-)

DragonFly BSD source repository

More information about the Commits mailing list