Print this page
remove xhat
The xhat infrastructure was added to support hardware such as the zulu
graphics card - hardware which had on-board MMUs. The VM used the xhat code
to keep the CPU's and Zulu's page tables in-sync. Since the only xhat user
was zulu (which is gone), we can safely remove it simplifying the whole VM
subsystem.
Assorted notes:
- AS_BUSY flag was used solely by xhat
*** 1922,1953 ****
hat_memload_array(sptseg->s_as->a_hat,
a, pgsz, &ppa[pidx], sptd->spt_prot,
HAT_LOAD_LOCK | HAT_LOAD_SHARE);
}
} else {
- if (hat == seg->s_as->a_hat) {
-
/*
* Migrate pages marked for migration
*/
if (lgrp_optimizations())
! page_migrate(seg, shm_addr, ppa,
! npages);
! /* CPU HAT */
! for (; pidx < npages;
! a += pgsz, pidx += pgcnt) {
hat_memload_array(sptseg->s_as->a_hat,
a, pgsz, &ppa[pidx],
sptd->spt_prot,
HAT_LOAD_SHARE);
}
- } else {
- /* XHAT. Pass real address */
- hat_memload_array(hat, shm_addr,
- size, ppa, sptd->spt_prot, HAT_LOAD_SHARE);
- }
/*
* And now drop the SE_SHARED lock(s).
*/
if (dyn_ism_unmap) {
--- 1922,1943 ----
hat_memload_array(sptseg->s_as->a_hat,
a, pgsz, &ppa[pidx], sptd->spt_prot,
HAT_LOAD_LOCK | HAT_LOAD_SHARE);
}
} else {
/*
* Migrate pages marked for migration
*/
if (lgrp_optimizations())
! page_migrate(seg, shm_addr, ppa, npages);
! for (; pidx < npages; a += pgsz, pidx += pgcnt) {
hat_memload_array(sptseg->s_as->a_hat,
a, pgsz, &ppa[pidx],
sptd->spt_prot,
HAT_LOAD_SHARE);
}
/*
* And now drop the SE_SHARED lock(s).
*/
if (dyn_ism_unmap) {
*** 2182,2214 ****
hat_memload_array(sptseg->s_as->a_hat, a,
sz, &ppa[pidx], sptd->spt_prot,
HAT_LOAD_LOCK | HAT_LOAD_SHARE);
}
} else {
- if (hat == seg->s_as->a_hat) {
-
/*
* Migrate pages marked for migration.
*/
if (lgrp_optimizations())
! page_migrate(seg, shm_addr, ppa,
! npages);
! /* CPU HAT */
! for (; pidx < npages;
! a += pgsz, pidx += pgcnt) {
sz = MIN(pgsz, ptob(npages - pidx));
hat_memload_array(sptseg->s_as->a_hat,
a, sz, &ppa[pidx],
sptd->spt_prot, HAT_LOAD_SHARE);
}
- } else {
- /* XHAT. Pass real address */
- hat_memload_array(hat, shm_addr,
- ptob(npages), ppa, sptd->spt_prot,
- HAT_LOAD_SHARE);
- }
/*
* And now drop the SE_SHARED lock(s).
*/
for (i = 0; i < npages; i++)
--- 2172,2193 ----
hat_memload_array(sptseg->s_as->a_hat, a,
sz, &ppa[pidx], sptd->spt_prot,
HAT_LOAD_LOCK | HAT_LOAD_SHARE);
}
} else {
/*
* Migrate pages marked for migration.
*/
if (lgrp_optimizations())
! page_migrate(seg, shm_addr, ppa, npages);
! for (; pidx < npages; a += pgsz, pidx += pgcnt) {
sz = MIN(pgsz, ptob(npages - pidx));
hat_memload_array(sptseg->s_as->a_hat,
a, sz, &ppa[pidx],
sptd->spt_prot, HAT_LOAD_SHARE);
}
/*
* And now drop the SE_SHARED lock(s).
*/
for (i = 0; i < npages; i++)