Author: neel
Date: Wed Jul  3 23:38:37 2013
New Revision: 252653
URL: http://svnweb.freebsd.org/changeset/base/252653

Log:
  vm_phys_fictitious_reg_range() was losing the 'memattr' because it would be
  reset by pmap_page_init() right after being initialized in vm_page_initfake().
  
  The statement above is with reference to the amd64 implementation of
  pmap_page_init().
  
  Fix this by calling 'pmap_page_init()' in 'vm_page_initfake()' before changing
  the 'memattr'.
  
  Reviewed by:  kib
  MFC after:    2 weeks

Modified:
  head/sys/vm/vm_page.c
  head/sys/vm/vm_phys.c

Modified: head/sys/vm/vm_page.c
==============================================================================
--- head/sys/vm/vm_page.c       Wed Jul  3 23:38:02 2013        (r252652)
+++ head/sys/vm/vm_page.c       Wed Jul  3 23:38:37 2013        (r252653)
@@ -645,6 +645,7 @@ vm_page_initfake(vm_page_t m, vm_paddr_t
        /* Fictitious pages don't use "order" or "pool". */
        m->oflags = VPO_BUSY | VPO_UNMANAGED;
        m->wire_count = 1;
+       pmap_page_init(m);
 memattr:
        pmap_page_set_memattr(m, memattr);
 }

Modified: head/sys/vm/vm_phys.c
==============================================================================
--- head/sys/vm/vm_phys.c       Wed Jul  3 23:38:02 2013        (r252652)
+++ head/sys/vm/vm_phys.c       Wed Jul  3 23:38:37 2013        (r252653)
@@ -559,7 +559,6 @@ vm_phys_fictitious_reg_range(vm_paddr_t 
        }
        for (i = 0; i < page_count; i++) {
                vm_page_initfake(&fp[i], start + PAGE_SIZE * i, memattr);
-               pmap_page_init(&fp[i]);
                fp[i].oflags &= ~(VPO_BUSY | VPO_UNMANAGED);
        }
        mtx_lock(&vm_phys_fictitious_reg_mtx);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to