sfmmu_t
sfmmu_check_page_sizes(sfmmu_t *sfmmup, int growing)
sfmmu_size_tsb(sfmmu_t *sfmmup, int growing, uint64_t tte8k_cnt,
sfmmu_free_sfmmu(sfmmu_t *sfmmup)
sfmmu_hat_enter(sfmmu_t *sfmmup)
sfmmu_hat_tryenter(sfmmu_t *sfmmup)
sfmmu_hat_lock_held(sfmmu_t *sfmmup)
sfmmu_ismhat_enter(sfmmu_t *sfmmup, int hatlock_held)
sfmmu_ismhat_exit(sfmmu_t *sfmmup, int hatlock_held)
sfmmu_hblk_alloc(sfmmu_t *sfmmup, caddr_t vaddr,
size = sizeof (sfmmu_t) + sizeof (sfmmu_ctx_t) * (max_mmu_ctxdoms - 1);
sfmmu_t *sfmmup;
sfmmu_tsb_swapin(sfmmu_t *sfmmup, hatlock_t *hatlockp)
sfmmu_t *sfmmup, *shsfmmup;
sfmmu_tsb_chk_reloc(sfmmu_t *sfmmup, hatlock_t *hatlockp)
sfmmu_vatopfn_suspended(caddr_t vaddr, sfmmu_t *sfmmu, tte_t *ttep)
sfmmu_t *sfmmup;
find_ism_rid(sfmmu_t *sfmmup, sfmmu_t *ism_sfmmup, caddr_t va, uint_t *ism_rid)
sfmmu_ismtlbcache_demap(caddr_t addr, sfmmu_t *ism_sfmmup,
sfmmu_t *sfmmup;
sfmmu_tlbcache_demap(caddr_t addr, sfmmu_t *sfmmup, struct hme_blk *hmeblkp,
sfmmu_tlb_demap(caddr_t addr, sfmmu_t *sfmmup, struct hme_blk *hmeblkp,
sfmmu_t *sfmmup = dmrp->dmr_sfmmup;
sfmmu_invalidate_ctx(sfmmu_t *sfmmup)
sfmmu_t *sfmmup = tsbinfop->tsb_sfmmu;
sfmmu_tsb_inv_ctx(sfmmu_t *sfmmup)
sfmmu_t *sfmmup = tsbinfop->tsb_sfmmu;
uint_t flags, sfmmu_t *sfmmup)
int tsbcode, uint_t flags, sfmmu_t *sfmmup)
sfmmu_leave_srd(sfmmu_t *sfmmup)
check_scd_sfmmu_list(sfmmu_t **headp, sfmmu_t *sfmmup, int onlist)
sfmmu_t *sp;
sfmmu_from_scd_list(sfmmu_t **headp, sfmmu_t *sfmmup)
sfmmu_to_scd_list(sfmmu_t **headp, sfmmu_t *sfmmup)
sfmmu_t *scsfmmup = scdp->scd_sfmmup;
sfmmu_t *ism_hatid;
ism_hatid = (sfmmu_t *)rgnp->rgn_obj;
sfmmu_t *sfmmup;
sfmmu_free_scd_tsbs(sfmmu_t *scd_sfmmu)
sfmmu_link_to_hmeregion(sfmmu_t *sfmmup, sf_region_t *rgnp)
sfmmu_t *head;
sfmmu_unlink_from_hmeregion(sfmmu_t *sfmmup, sf_region_t *rgnp)
sfmmu_t *next = rlink->next;
sfmmu_t *next = rlink->next;
sfmmu_t *prev = rlink->prev;
sfmmu_t *scsfmmup;
sfmmu_t *ism_hatid = NULL;
ism_hatid = (sfmmu_t *)rgnp->rgn_obj;
sfmmu_t *scsfmmup;
sfmmu_t *ism_hatid = NULL;
ism_hatid = (sfmmu_t *)rgnp->rgn_obj;
sfmmu_t *scsfmmup;
sfmmu_join_scd(sf_scd_t *scdp, sfmmu_t *sfmmup)
sfmmu_finish_join_scd(sfmmu_t *sfmmup)
sfmmu_find_scd(sfmmu_t *sfmmup)
sfmmu_leave_scd(sfmmu_t *sfmmup, uchar_t r_type)
sfmmu_t *scsfmmup;
sfmmu_ism_hatflags(sfmmu_t *sfmmup, int addflag)
static void sfmmu_leave_srd(sfmmu_t *);
sfmmu_mod_tsb(sfmmu_t *sfmmup, caddr_t vaddr, tte_t *ttep, int ttesz)
sfmmu_unload_tsb_range(sfmmu_t *sfmmup, caddr_t start, caddr_t end, int ttesz)
sfmmu_tteload_array(sfmmu_t *sfmmup, tte_t *ttep, caddr_t vaddr,
static void check_scd_sfmmu_list(sfmmu_t **, sfmmu_t *, int);
sfmmu_tteload_acquire_hashbucket(sfmmu_t *sfmmup, caddr_t vaddr, int size,
static void sfmmu_to_scd_list(sfmmu_t **, sfmmu_t *);
sfmmu_tteload_find_hmeblk(sfmmu_t *sfmmup, struct hmehash_bucket *hmebp,
static void sfmmu_from_scd_list(sfmmu_t **, sfmmu_t *);
static void sfmmu_find_scd(sfmmu_t *);
static void sfmmu_join_scd(sf_scd_t *, sfmmu_t *);
static void sfmmu_finish_join_scd(sfmmu_t *);
static void sfmmu_leave_scd(sfmmu_t *, uchar_t);
sfmmu_tteload_addentry(sfmmu_t *sfmmup, struct hme_blk *hmeblkp, tte_t *ttep,
static void sfmmu_free_scd_tsbs(sfmmu_t *);
static void sfmmu_tsb_inv_ctx(sfmmu_t *);
static int find_ism_rid(sfmmu_t *, sfmmu_t *, caddr_t, uint_t *);
static void sfmmu_ism_hatflags(sfmmu_t *, int);
static void sfmmu_link_to_hmeregion(sfmmu_t *, sf_region_t *);
static void sfmmu_unlink_from_hmeregion(sfmmu_t *, sf_region_t *);
sfmmu_shadow_hcreate(sfmmu_t *sfmmup, caddr_t vaddr, int ttesz, uint_t flags)
sfmmu_shadow_hcleanup(sfmmu_t *sfmmup, struct hme_blk *hmeblkp,
sfmmu_free_hblks(sfmmu_t *sfmmup, caddr_t addr, caddr_t endaddr,
static struct hme_blk *sfmmu_shadow_hcreate(sfmmu_t *, caddr_t, int, uint_t);
static struct hme_blk *sfmmu_hblk_alloc(sfmmu_t *, caddr_t,
static int sfmmu_tteload_array(sfmmu_t *, tte_t *, caddr_t, page_t **,
static struct hmehash_bucket *sfmmu_tteload_acquire_hashbucket(sfmmu_t *,
static struct hme_blk *sfmmu_tteload_find_hmeblk(sfmmu_t *,
static int sfmmu_tteload_addentry(sfmmu_t *, struct hme_blk *, tte_t *,
static pfn_t sfmmu_uvatopfn(caddr_t, sfmmu_t *, tte_t *);
static void sfmmu_get_ctx(sfmmu_t *);
static void sfmmu_free_sfmmu(sfmmu_t *);
static void sfmmu_tlbcache_demap(caddr_t, sfmmu_t *, struct hme_blk *,
static void sfmmu_ismtlbcache_demap(caddr_t, sfmmu_t *, struct hme_blk *,
static void sfmmu_tlb_demap(caddr_t, sfmmu_t *, struct hme_blk *, int, int);
static void sfmmu_invalidate_ctx(sfmmu_t *);
static void sfmmu_sync_mmustate(sfmmu_t *);
sfmmu_t *);
sfmmu_t *);
static void sfmmu_tsb_chk_reloc(sfmmu_t *, hatlock_t *);
static void sfmmu_tsb_swapin(sfmmu_t *, hatlock_t *);
static void sfmmu_mod_tsb(sfmmu_t *, caddr_t, tte_t *, int);
static tsb_replace_rc_t sfmmu_replace_tsb(sfmmu_t *, struct tsb_info *, uint_t,
static void sfmmu_size_tsb(sfmmu_t *, int, uint64_t, uint64_t, int);
static caddr_t sfmmu_hblk_chgattr(sfmmu_t *, struct hme_blk *, caddr_t,
static caddr_t sfmmu_hblk_chgprot(sfmmu_t *, struct hme_blk *, caddr_t,
static void sfmmu_shadow_hcleanup(sfmmu_t *, struct hme_blk *,
static void sfmmu_free_hblks(sfmmu_t *, caddr_t, caddr_t, int);
static void sfmmu_check_page_sizes(sfmmu_t *, int);
static pgcnt_t ism_tsb_entries(sfmmu_t *, int szc);
sfmmu_hblk_chgprot(sfmmu_t *sfmmup, struct hme_blk *hmeblkp, caddr_t addr,
extern void sfmmu_setup_tsbinfo(sfmmu_t *);
sfmmu_t *sfmmup;
sfmmu_t *ksfmmup; /* kernel's hat id */
sfmmu_t *sfmmup;
sfmmu_hat_enter(sfmmu_t *);
sfmmu_hat_tryenter(sfmmu_t *);
static void sfmmu_ismhat_enter(sfmmu_t *, int);
static void sfmmu_ismhat_exit(sfmmu_t *, int);
sfmmu_t *sfmmup;
sfmmu_t *sfmmup;
sfmmu_t *ism_hatid = NULL;
sfmmu_t *locked_hatid = NULL;
sfmmu_t *sv_sfmmup = sfmmup;
ism_tsb_entries(sfmmu_t *sfmmup, int szc)
bzero(buf, sizeof (sfmmu_t));
sfmmu_t *sfmmup;
sfmmu_get_ctx(sfmmu_t *sfmmup)
sfmmu_t *scsfmmup = scdp->scd_sfmmup;
sfmmu_sync_mmustate(sfmmu_t *sfmmup)
sfmmu_replace_tsb(sfmmu_t *sfmmup, struct tsb_info *old_tsbinfo, uint_t szc,
sfmmu_reprog_pgsz_arr(sfmmu_t *sfmmup, uint8_t *tmp_pgsz)
#define hblktosfmmu(hmeblkp) ((sfmmu_t *)(hmeblkp)->hblk_tag.htag_id)
sfmmu_t *dmr_sfmmup; /* relevant hat */
sfmmu_t *ksfmmup; /* kernel hat id */
sfmmu_t *usfmmup; /* user hat id */
sfmmu_t *imap_ismhat; /* hat id of dummy ISM as */
sfmmu_t *iment_hat; /* back pointer to hat_share() hat */
extern void sfmmu_load_mmustate(sfmmu_t *);
extern pfn_t sfmmu_vatopfn(caddr_t, sfmmu_t *, tte_t *);
extern void sfmmu_vatopfn_suspended(caddr_t, sfmmu_t *, tte_t *);
extern pgcnt_t sfmmu_tte_cnt(sfmmu_t *, uint_t);
extern void sfmmu_reprog_pgsz_arr(sfmmu_t *, uint8_t *);
extern int sfmmu_hat_lock_held(sfmmu_t *);
extern int sfmmu_alloc_ctx(sfmmu_t *, int, struct cpu *, int);
extern void mmu_set_ctx_page_sizes(sfmmu_t *);
extern void mmu_check_page_sizes(sfmmu_t *, uint64_t *);
extern sfmmu_t *ksfmmup;
sfmmu_t *tsb_sfmmu; /* sfmmu */
sfmmu_t *next;
sfmmu_t *prev;
sfmmu_t *rgn_sfmmu_head;
sfmmu_t *scd_sfmmup; /* shared context hat */
sfmmu_t *scd_sf_list; /* list of doubly linked hat structs */
sfmmu_t *sc_sfmmu_stolen;
sfmmu_t *sc_sfmmu_stealing;
sfmmu_t *sfmmup;
mmu_check_page_sizes(sfmmu_t *sfmmup, uint64_t *ttecnt)
mmu_check_page_sizes(sfmmu_t *sfmmup, uint64_t *ttecnt)
sfmmu_setup_tsbinfo(sfmmu_t *sfmmup)
sfmmu_setup_tsbinfo(sfmmu_t *sfmmup)