Author: markj
Date: Fri Jul 12 15:24:25 2019
New Revision: 349943
URL: https://svnweb.freebsd.org/changeset/base/349943

Log:
  Apply some light cleanup to uses of pmap_pte_dirty().
  
  - Check for ATTR_SW_MANAGED before anything else.
  - Use pmap_pte_dirty() in pmap_remove_pages().
  
  No functional change intended.
  
  Reviewed by:  alc
  MFC after:    1 week
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/arm64/arm64/pmap.c

Modified: head/sys/arm64/arm64/pmap.c
==============================================================================
--- head/sys/arm64/arm64/pmap.c Fri Jul 12 11:45:42 2019        (r349942)
+++ head/sys/arm64/arm64/pmap.c Fri Jul 12 15:24:25 2019        (r349943)
@@ -2812,9 +2812,8 @@ pmap_protect_l2(pmap_t pmap, pt_entry_t *l2, vm_offset
         * update the dirty field of each of the superpage's constituent 4KB
         * pages.
         */
-       if ((nbits & ATTR_AP(ATTR_AP_RO)) != 0 &&
-           (old_l2 & ATTR_SW_MANAGED) != 0 &&
-           pmap_pte_dirty(old_l2)) {
+       if ((old_l2 & ATTR_SW_MANAGED) != 0 &&
+           (nbits & ATTR_AP(ATTR_AP_RO)) != 0 && pmap_pte_dirty(old_l2)) {
                m = PHYS_TO_VM_PAGE(old_l2 & ~ATTR_MASK);
                for (mt = m; mt < &m[L2_SIZE / PAGE_SIZE]; mt++)
                        vm_page_dirty(mt);
@@ -2920,8 +2919,8 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t
                         * When a dirty read/write mapping is write protected,
                         * update the page's dirty field.
                         */
-                       if ((nbits & ATTR_AP(ATTR_AP_RO)) != 0 &&
-                           (l3 & ATTR_SW_MANAGED) != 0 &&
+                       if ((l3 & ATTR_SW_MANAGED) != 0 &&
+                           (nbits & ATTR_AP(ATTR_AP_RO)) != 0 &&
                            pmap_pte_dirty(l3))
                                vm_page_dirty(PHYS_TO_VM_PAGE(l3 & ~ATTR_MASK));
 
@@ -3344,8 +3343,8 @@ validate:
                        /* same PA, different attributes */
                        pmap_load_store(l3, new_l3);
                        pmap_invalidate_page(pmap, va);
-                       if (pmap_pte_dirty(orig_l3) &&
-                           (orig_l3 & ATTR_SW_MANAGED) != 0)
+                       if ((orig_l3 & ATTR_SW_MANAGED) != 0 &&
+                           pmap_pte_dirty(orig_l3))
                                vm_page_dirty(m);
                } else {
                        /*
@@ -4293,8 +4292,7 @@ pmap_remove_pages(pmap_t pmap)
                                /*
                                 * Update the vm_page_t clean/reference bits.
                                 */
-                               if ((tpte & ATTR_AP_RW_BIT) ==
-                                   ATTR_AP(ATTR_AP_RW)) {
+                               if (pmap_pte_dirty(tpte)) {
                                        switch (lvl) {
                                        case 1:
                                                for (mt = m; mt < &m[L2_SIZE / 
PAGE_SIZE]; mt++)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to