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
*** 657,672 ****
* has a 4M pagesize, and memory is low, the allocation of 4M pages may fail
* then 8K pages will be allocated instead and the first TSB which stores 8K
* mappings will potentially be undersized. To compensate for the potential
* underaccounting in this case we always add 1/4 of the region size to the 8K
* ttecnt.
- *
- * Note that sfmmu_xhat_provider MUST be the first element.
*/
struct hat {
- void *sfmmu_xhat_provider; /* NULL for CPU hat */
cpuset_t sfmmu_cpusran; /* cpu bit mask for efficient xcalls */
struct as *sfmmu_as; /* as this hat provides mapping for */
/* per pgsz private ttecnt + shme rgns ttecnt for rgns not in SCD */
ulong_t sfmmu_ttecnt[MMU_PAGE_SIZES];
/* shme rgns ttecnt for rgns in SCD */
--- 657,669 ----
*** 1239,1258 ****
*
* The hmeblk now also has per tte lock cnts. This is required because
* the counts can be high and there are not enough bits in the tte. When
* physio is fixed to not lock the translations we should be able to move
* the lock cnt back to the tte. See bug id 1198554.
- *
- * Note that xhat_hme_blk's layout follows this structure: hme_blk_misc
- * and sf_hment are at the same offsets in both structures. Whenever
- * hme_blk is changed, xhat_hme_blk may need to be updated as well.
*/
struct hme_blk_misc {
! uint_t notused:25;
uint_t shared_bit:1; /* set for SRD shared hmeblk */
- uint_t xhat_bit:1; /* set for an xhat hme_blk */
uint_t shadow_bit:1; /* set for a shadow hme_blk */
uint_t nucleus_bit:1; /* set for a nucleus hme_blk */
uint_t ttesize:3; /* contains ttesz of hmeblk */
};
--- 1236,1250 ----
*
* The hmeblk now also has per tte lock cnts. This is required because
* the counts can be high and there are not enough bits in the tte. When
* physio is fixed to not lock the translations we should be able to move
* the lock cnt back to the tte. See bug id 1198554.
*/
struct hme_blk_misc {
! uint_t notused:26;
uint_t shared_bit:1; /* set for SRD shared hmeblk */
uint_t shadow_bit:1; /* set for a shadow hme_blk */
uint_t nucleus_bit:1; /* set for a nucleus hme_blk */
uint_t ttesize:3; /* contains ttesz of hmeblk */
};
*** 1288,1298 ****
struct sf_hment hblk_hme[1]; /* hment array */
};
#define hblk_shared hblk_misc.shared_bit
- #define hblk_xhat_bit hblk_misc.xhat_bit
#define hblk_shw_bit hblk_misc.shadow_bit
#define hblk_nuc_bit hblk_misc.nucleus_bit
#define hblk_ttesz hblk_misc.ttesize
#define hblk_hmecnt hblk_un.hblk_counts.hblk_hmecount
#define hblk_vcnt hblk_un.hblk_counts.hblk_validcnt
--- 1280,1289 ----
*** 2313,2325 ****
extern int sfmmu_get_ppvcolor(struct page *);
extern int sfmmu_get_addrvcolor(caddr_t);
extern int sfmmu_hat_lock_held(sfmmu_t *);
extern int sfmmu_alloc_ctx(sfmmu_t *, int, struct cpu *, int);
- /*
- * Functions exported to xhat_sfmmu.c
- */
extern kmutex_t *sfmmu_mlist_enter(page_t *);
extern void sfmmu_mlist_exit(kmutex_t *);
extern int sfmmu_mlist_held(struct page *);
extern struct hme_blk *sfmmu_hmetohblk(struct sf_hment *);
--- 2304,2313 ----