version 1.1, 2012/10/03 00:51:45 |
version 1.1.4.1, 2013/08/28 23:59:38 |
Line 209 struct pmap_kernel kernel_pmap_store = { |
|
Line 209 struct pmap_kernel kernel_pmap_store = { |
|
.pm_segtab = PMAP_INVALID_SEGTAB_ADDRESS, |
.pm_segtab = PMAP_INVALID_SEGTAB_ADDRESS, |
.pm_minaddr = VM_MIN_KERNEL_ADDRESS, |
.pm_minaddr = VM_MIN_KERNEL_ADDRESS, |
.pm_maxaddr = VM_MAX_KERNEL_ADDRESS, |
.pm_maxaddr = VM_MAX_KERNEL_ADDRESS, |
#ifdef MULTIPROCESSOR |
|
.pm_active = 1, |
|
.pm_onproc = 1, |
|
#endif |
|
}, |
}, |
}; |
}; |
|
|
Line 309 pmap_page_syncicache(struct vm_page *pg) |
|
Line 305 pmap_page_syncicache(struct vm_page *pg) |
|
#endif |
#endif |
struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg); |
struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg); |
pv_entry_t pv = &mdpg->mdpg_first; |
pv_entry_t pv = &mdpg->mdpg_first; |
__cpuset_t onproc = CPUSET_NULLSET; |
kcpuset_t *onproc; |
|
#ifdef MULTIPROCESSOR |
|
kcpuset_create(&onproc, true); |
|
#else |
|
onproc = NULL; |
|
#endif |
(void)VM_PAGEMD_PVLIST_LOCK(mdpg, false); |
(void)VM_PAGEMD_PVLIST_LOCK(mdpg, false); |
|
|
if (pv->pv_pmap != NULL) { |
if (pv->pv_pmap != NULL) { |
for (; pv != NULL; pv = pv->pv_next) { |
for (; pv != NULL; pv = pv->pv_next) { |
#ifdef MULTIPROCESSOR |
#ifdef MULTIPROCESSOR |
CPUSET_MERGE(onproc, pv->pv_pmap->pm_onproc); |
kcpuset_merge(onproc, pv->pv_pmap->pm_onproc); |
if (CPUSET_EQUAL_P(onproc, cpuset_info.cpus_running)) { |
if (kcpuset_match(onproc, kcpuset_running)) { |
break; |
break; |
} |
} |
#else |
#else |
if (pv->pv_pmap == curpmap) { |
if (pv->pv_pmap == curpmap) { |
onproc = CPUSET_SINGLE(0); |
onproc = curcpu()->ci_data.cpu_kcpuset; |
break; |
break; |
} |
} |
#endif |
#endif |
Line 329 pmap_page_syncicache(struct vm_page *pg) |
|
Line 331 pmap_page_syncicache(struct vm_page *pg) |
|
VM_PAGEMD_PVLIST_UNLOCK(mdpg); |
VM_PAGEMD_PVLIST_UNLOCK(mdpg); |
kpreempt_disable(); |
kpreempt_disable(); |
pmap_md_page_syncicache(pg, onproc); |
pmap_md_page_syncicache(pg, onproc); |
|
#ifdef MULTIPROCESSOR |
|
kcpuset_destroy(onproc); |
|
#endif |
kpreempt_enable(); |
kpreempt_enable(); |
} |
} |
|
|