svn commit: r288256 - in head/sys: amd64/amd64 arm/arm arm64/arm64 i386/i386 mips/mips
Alan Cox
alc at FreeBSD.org
Sat Sep 26 07:18:08 UTC 2015
Author: alc
Date: Sat Sep 26 07:18:05 2015
New Revision: 288256
URL: https://svnweb.freebsd.org/changeset/base/288256
Log:
Exploit r288122 to address a cosmetic issue. Since PV chunk pages don't
belong to a vm object, they can't be paged out. Since they can't be paged
out, they are never enqueued in a paging queue. Nonetheless, passing
PQ_INACTIVE to vm_page_unwire() creates the appearance that these pages
are being enqueued in the inactive queue. As of r288122, we can avoid
this false impression by passing PQ_NONE.
Submitted by: kmacy (an earlier version)
Differential Revision: https://reviews.freebsd.org/D1674
Modified:
head/sys/amd64/amd64/pmap.c
head/sys/arm/arm/pmap-v6-new.c
head/sys/arm/arm/pmap-v6.c
head/sys/arm64/arm64/pmap.c
head/sys/i386/i386/pmap.c
head/sys/mips/mips/pmap.c
Modified: head/sys/amd64/amd64/pmap.c
==============================================================================
--- head/sys/amd64/amd64/pmap.c Sat Sep 26 07:14:00 2015 (r288255)
+++ head/sys/amd64/amd64/pmap.c Sat Sep 26 07:18:05 2015 (r288256)
@@ -2860,7 +2860,7 @@ free_pv_chunk(struct pv_chunk *pc)
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
- vm_page_unwire(m, PQ_INACTIVE);
+ vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
}
Modified: head/sys/arm/arm/pmap-v6-new.c
==============================================================================
--- head/sys/arm/arm/pmap-v6-new.c Sat Sep 26 07:14:00 2015 (r288255)
+++ head/sys/arm/arm/pmap-v6-new.c Sat Sep 26 07:18:05 2015 (r288256)
@@ -2866,7 +2866,7 @@ free_pv_chunk(struct pv_chunk *pc)
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
pmap_qremove((vm_offset_t)pc, 1);
- vm_page_unwire(m, PQ_INACTIVE);
+ vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
pmap_pte2list_free(&pv_vafree, (vm_offset_t)pc);
}
Modified: head/sys/arm/arm/pmap-v6.c
==============================================================================
--- head/sys/arm/arm/pmap-v6.c Sat Sep 26 07:14:00 2015 (r288255)
+++ head/sys/arm/arm/pmap-v6.c Sat Sep 26 07:18:05 2015 (r288256)
@@ -4292,7 +4292,7 @@ pmap_free_pv_chunk(struct pv_chunk *pc)
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
pmap_qremove((vm_offset_t)pc, 1);
- vm_page_unwire(m, PQ_INACTIVE);
+ vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
pmap_ptelist_free(&pv_vafree, (vm_offset_t)pc);
Modified: head/sys/arm64/arm64/pmap.c
==============================================================================
--- head/sys/arm64/arm64/pmap.c Sat Sep 26 07:14:00 2015 (r288255)
+++ head/sys/arm64/arm64/pmap.c Sat Sep 26 07:18:05 2015 (r288256)
@@ -1517,7 +1517,7 @@ free_pv_chunk(struct pv_chunk *pc)
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
- vm_page_unwire(m, PQ_INACTIVE);
+ vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
}
Modified: head/sys/i386/i386/pmap.c
==============================================================================
--- head/sys/i386/i386/pmap.c Sat Sep 26 07:14:00 2015 (r288255)
+++ head/sys/i386/i386/pmap.c Sat Sep 26 07:18:05 2015 (r288256)
@@ -2312,7 +2312,7 @@ free_pv_chunk(struct pv_chunk *pc)
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
pmap_qremove((vm_offset_t)pc, 1);
- vm_page_unwire(m, PQ_INACTIVE);
+ vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
pmap_ptelist_free(&pv_vafree, (vm_offset_t)pc);
}
Modified: head/sys/mips/mips/pmap.c
==============================================================================
--- head/sys/mips/mips/pmap.c Sat Sep 26 07:14:00 2015 (r288255)
+++ head/sys/mips/mips/pmap.c Sat Sep 26 07:18:05 2015 (r288256)
@@ -1527,7 +1527,7 @@ free_pv_chunk(struct pv_chunk *pc)
PV_STAT(pc_chunk_frees++);
/* entire chunk is free, return it */
m = PHYS_TO_VM_PAGE(MIPS_DIRECT_TO_PHYS((vm_offset_t)pc));
- vm_page_unwire(m, PQ_INACTIVE);
+ vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
}
More information about the svn-src-all
mailing list