Page MenuHomeFreeBSD

D28809.diff
No OneTemporary

D28809.diff

Index: sys/arm/arm/pmap-v6.c
===================================================================
--- sys/arm/arm/pmap-v6.c
+++ sys/arm/arm/pmap-v6.c
@@ -1633,11 +1633,11 @@
}
/*
- * Zero L2 page table page.
+ * Sync L2 page table page.
* Use same KVA as in pmap_zero_page().
*/
static __inline vm_paddr_t
-pmap_pt2pg_zero(vm_page_t m)
+pmap_pt2pg_sync(vm_page_t m)
{
pt2_entry_t *cmap2_pte2p;
vm_paddr_t pa;
@@ -1657,9 +1657,6 @@
panic("%s: CMAP2 busy", __func__);
pte2_store(cmap2_pte2p, PTE2_KERN_NG(pa, PTE2_AP_KRW,
vm_page_pte2_attr(m)));
- /* Even VM_ALLOC_ZERO request is only advisory. */
- if ((m->flags & PG_ZERO) == 0)
- pagezero(pc->pc_cmap2_addr);
pte2_sync_range((pt2_entry_t *)pc->pc_cmap2_addr, PAGE_SIZE);
pte2_clear(cmap2_pte2p);
tlb_flush((vm_offset_t)pc->pc_cmap2_addr);
@@ -1689,8 +1686,8 @@
if (m->md.pat_mode != pt_memattr)
pmap_page_set_memattr(m, pt_memattr);
- /* Zero page and init wire counts. */
- pa = pmap_pt2pg_zero(m);
+ /* Sync page and init wire counts. */
+ pa = pmap_pt2pg_sync(m);
pt2_wirecount_init(m);
/*
@@ -3713,7 +3710,8 @@
*/
if ((opte1 & PTE1_A) == 0 || (m = vm_page_alloc(NULL,
pte1_index(va) & ~PT2PG_MASK, VM_ALLOC_NOOBJ |
- VM_ALLOC_NORMAL | VM_ALLOC_WIRED)) == NULL) {
+ VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) ==
+ NULL) {
SLIST_INIT(&free);
pmap_remove_pte1(pmap, pte1p, pte1_trunc(va), &free);
vm_page_free_pages_toq(&free, false);

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 9, 3:38 AM (7 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38558746
Default Alt Text
D28809.diff (1 KB)

Event Timeline