Lines Matching defs:srdp
113 #define SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp, rgnp, rid) \
121 ASSERT((srdp)->srd_refcnt != 0); \
146 #define SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp, rgnp, rid)
2124 sf_srd_t *srdp;
2139 if (flag == HAT_DUP_SRD && ((srdp = hat->sfmmu_srdp) != NULL)) {
2140 ASSERT(srdp->srd_evp != NULL);
2141 VN_HOLD(srdp->srd_evp);
2142 ASSERT(srdp->srd_refcnt > 0);
2143 newhat->sfmmu_srdp = srdp;
2144 atomic_inc_32((volatile uint_t *)&srdp->srd_refcnt);
2150 if (flag == HAT_DUP_ALL && ((srdp = newhat->sfmmu_srdp) != NULL)) {
3237 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
3238 sf_region_t *rgnp = srdp->srd_hmergnp[rid];
3776 sfmmu_cleanup_rhblk(sf_srd_t *srdp, caddr_t addr, uint_t rid, int ttesz)
3792 hblktag.htag_id = srdp;
3793 hmebp = HME_HASH_FUNCTION(srdp, addr, hmeshift);
3823 sfmmu_unload_hmeregion_va(sf_srd_t *srdp, uint_t rid, caddr_t addr,
3841 hblktag.htag_id = srdp;
3842 hmebp = HME_HASH_FUNCTION(srdp, addr, hmeshift);
3863 sfmmu_unload_hmeregion(sf_srd_t *srdp, sf_region_t *rgnp)
3914 sfmmu_unload_hmeregion_va(srdp, rid, va, readdr,
4006 sf_srd_t *srdp;
4027 srdp = sfmmup->sfmmu_srdp;
4033 rgnp = srdp->srd_hmergnp[rid];
4057 hblktag.htag_id = srdp;
4058 hmebp = HME_HASH_FUNCTION(srdp, va, hmeshift);
7200 sf_srd_t *srdp = (sf_srd_t *)sfmmup;
7205 ASSERT(srdp != NULL);
7206 rgnp = srdp->srd_hmergnp[rid];
7207 SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp, rgnp, rid);
7422 sf_srd_t *srdp = hblktosrd(hmeblkp);
7427 ASSERT(srdp != NULL);
7428 rgnp = srdp->srd_hmergnp[rid];
7429 SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp,
7522 sf_srd_t *srdp = (sf_srd_t *)sfmmup;
7528 ASSERT(srdp != NULL);
7529 rgnp = srdp->srd_hmergnp[rid];
7531 srdp, rgnp, rid);
7593 sf_srd_t *srdp = (sf_srd_t *)sfmmup;
7598 ASSERT(srdp != NULL);
7599 rgnp = srdp->srd_hmergnp[rid];
7601 srdp, rgnp, rid);
7884 sf_srd_t *srdp;
7948 srdp = sv_sfmmup->sfmmu_srdp;
7949 ASSERT(srdp != NULL);
7950 ASSERT(srdp->srd_refcnt != 0);
7951 hblktag.htag_id = srdp;
7957 hmebp = HME_HASH_FUNCTION(srdp, sv_vaddr, hmeshift);
7975 rgnp = srdp->srd_hmergnp[rid];
7976 SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp, rgnp, rid);
8119 sf_srd_t *srdp = hblktosrd(hmeblkp);
8124 ASSERT(srdp != NULL);
8125 rgnp = srdp->srd_hmergnp[rid];
8126 SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp,
9505 sf_srd_t *srdp = (sf_srd_t *)sfmmup;
9510 ASSERT(srdp != NULL);
9511 rgnp = srdp->srd_hmergnp[rid];
9513 srdp, rgnp, rid);
9540 sf_srd_t *srdp = (sf_srd_t *)sfmmup;
9545 ASSERT(srdp != NULL);
9546 rgnp = srdp->srd_hmergnp[rid];
9548 srdp, rgnp, rid);
10016 sfmmu_set_scd_rttecnt(sf_srd_t *srdp, sf_scd_t *scdp)
10023 ASSERT(srdp != NULL);
10043 rgnp = srdp->srd_hmergnp[rid];
10934 sf_srd_t *srdp;
11013 srdp = sfmmup->sfmmu_srdp;
11014 ASSERT(srdp != NULL && srdp->srd_refcnt != 0);
11015 rgnp = srdp->srd_hmergnp[rid];
11027 sfmmu_cleanup_rhblk(srdp, vaddr, rid, ttesz);
11031 sfmmu_cleanup_rhblk(srdp, va, rid,
11500 sf_srd_t *srdp;
11504 srdp = hblktosrd(hmeblkp);
11505 ASSERT(srdp != NULL && srdp->srd_refcnt != 0);
11509 rgnp = srdp->srd_hmergnp[rid];
11511 SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp, rgnp, rid);
11632 sfmmu_is_rgnva(sf_srd_t *srdp, caddr_t addr, ulong_t w, ulong_t bmw)
11638 ASSERT(srdp != NULL);
11639 ASSERT(srdp->srd_refcnt != 0);
11649 rgnp = srdp->srd_hmergnp[rid];
13599 sf_srd_t *srdp;
13613 for (srdp = srd_buckets[hash].srdb_srdp; srdp != NULL;
13614 srdp = srdp->srd_hash) {
13615 if (srdp->srd_evp == evp) {
13616 ASSERT(srdp->srd_refcnt >= 0);
13617 sfmmup->sfmmu_srdp = srdp;
13619 (volatile uint_t *)&srdp->srd_refcnt);
13635 for (srdp = srd_buckets[hash].srdb_srdp; srdp != NULL;
13636 srdp = srdp->srd_hash) {
13637 if (srdp->srd_evp == evp) {
13638 ASSERT(srdp->srd_refcnt >= 0);
13639 sfmmup->sfmmu_srdp = srdp;
13640 atomic_inc_32((volatile uint_t *)&srdp->srd_refcnt);
13658 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
13669 ASSERT(srdp != NULL);
13670 ASSERT(srdp->srd_refcnt > 0);
13675 evp = srdp->srd_evp;
13677 if (atomic_dec_32_nv((volatile uint_t *)&srdp->srd_refcnt)) {
13685 (srdp = *prev_srdpp) != NULL; prev_srdpp = &srdp->srd_hash) {
13686 if (srdp->srd_evp == evp) {
13690 if (srdp == NULL || srdp->srd_refcnt) {
13695 *prev_srdpp = srdp->srd_hash;
13698 ASSERT(srdp->srd_refcnt == 0);
13703 ASSERT(srdp->srd_rgnhash[i] == NULL);
13708 for (rgnp = srdp->srd_hmergnfree; rgnp != NULL; rgnp = nrgnp) {
13710 ASSERT(rgnp->rgn_id < srdp->srd_next_hmerid);
13715 ASSERT(srdp->srd_hmergnp[rgnp->rgn_id] == rgnp);
13724 ASSERT(rgns == srdp->srd_next_hmerid);
13730 for (rgnp = srdp->srd_ismrgnfree; rgnp != NULL; rgnp = nrgnp) {
13732 ASSERT(rgnp->rgn_id < srdp->srd_next_ismrid);
13736 ASSERT(srdp->srd_ismrgnp[rgnp->rgn_id] == rgnp);
13745 ASSERT(rgns == srdp->srd_next_ismrid);
13746 ASSERT(srdp->srd_ismbusyrgns == 0);
13747 ASSERT(srdp->srd_hmebusyrgns == 0);
13749 srdp->srd_next_ismrid = 0;
13750 srdp->srd_next_hmerid = 0;
13752 bzero((void *)srdp->srd_ismrgnp,
13754 bzero((void *)srdp->srd_hmergnp,
13757 ASSERT(srdp->srd_scdp == NULL);
13758 kmem_cache_free(srd_cache, srdp);
13765 sf_srd_t *srdp = (sf_srd_t *)buf;
13766 bzero(buf, sizeof (*srdp));
13768 mutex_init(&srdp->srd_mutex, NULL, MUTEX_DEFAULT, NULL);
13769 mutex_init(&srdp->srd_scd_mutex, NULL, MUTEX_DEFAULT, NULL);
13777 sf_srd_t *srdp = (sf_srd_t *)buf;
13779 mutex_destroy(&srdp->srd_mutex);
13780 mutex_destroy(&srdp->srd_scd_mutex);
13807 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
13824 if (srdp == NULL || r_size == 0) {
13830 ASSERT(srdp->srd_refcnt > 0);
13846 if (r_type == SFMMU_REGION_HME && ((r_obj != srdp->srd_evp) ||
13854 nextidp = &srdp->srd_next_ismrid;
13855 freelistp = &srdp->srd_ismrgnfree;
13857 rarrp = srdp->srd_ismrgnp;
13858 busyrgnsp = &srdp->srd_ismbusyrgns;
13860 nextidp = &srdp->srd_next_hmerid;
13861 freelistp = &srdp->srd_hmergnfree;
13863 rarrp = srdp->srd_hmergnp;
13864 busyrgnsp = &srdp->srd_hmebusyrgns;
13867 mutex_enter(&srdp->srd_mutex);
13869 for (rgnp = srdp->srd_rgnhash[rhash]; rgnp != NULL;
13888 mutex_exit(&srdp->srd_mutex);
14001 mutex_exit(&srdp->srd_mutex);
14005 ASSERT(MUTEX_HELD(&srdp->srd_mutex));
14020 mutex_exit(&srdp->srd_mutex);
14024 mutex_enter(&srdp->srd_mutex);
14025 for (rgnp = srdp->srd_rgnhash[rhash]; rgnp != NULL;
14041 mutex_exit(&srdp->srd_mutex);
14068 rgnp->rgn_hash = srdp->srd_rgnhash[rhash];
14069 srdp->srd_rgnhash[rhash] = rgnp;
14093 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
14110 ASSERT(srdp != NULL);
14111 ASSERT(srdp->srd_refcnt > 0);
14122 rgnp = srdp->srd_ismrgnp[rid];
14126 rgnp = srdp->srd_hmergnp[rid];
14154 ASSERT(rid < srdp->srd_next_ismrid);
14172 ASSERT(rid < srdp->srd_next_hmerid);
14239 mutex_enter(&srdp->srd_mutex);
14240 for (prev_rgnpp = &srdp->srd_rgnhash[rhash];
14249 mutex_exit(&srdp->srd_mutex);
14257 ASSERT(rid < srdp->srd_next_ismrid);
14258 rgnp->rgn_next = srdp->srd_ismrgnfree;
14259 srdp->srd_ismrgnfree = rgnp;
14260 ASSERT(srdp->srd_ismbusyrgns > 0);
14261 srdp->srd_ismbusyrgns--;
14262 mutex_exit(&srdp->srd_mutex);
14265 mutex_exit(&srdp->srd_mutex);
14270 sfmmu_unload_hmeregion(srdp, rgnp);
14280 mutex_enter(&srdp->srd_mutex);
14281 ASSERT(rid < srdp->srd_next_hmerid);
14282 rgnp->rgn_next = srdp->srd_hmergnfree;
14283 srdp->srd_hmergnfree = rgnp;
14284 ASSERT(srdp->srd_hmebusyrgns > 0);
14285 srdp->srd_hmebusyrgns--;
14286 mutex_exit(&srdp->srd_mutex);
14295 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
14303 ASSERT(srdp != NULL);
14304 ASSERT(srdp->srd_refcnt > 0);
14306 ASSERT(rid < srdp->srd_next_hmerid);
14310 rgnp = srdp->srd_hmergnp[rid];
14404 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
14407 ASSERT(srdp == sp->sfmmu_srdp);
14500 sfmmu_alloc_scd_tsbs(sf_srd_t *srdp, sf_scd_t *scdp)
14515 ASSERT(srdp != NULL);
14533 rgnp = srdp->srd_hmergnp[rid];
14554 rgnp = srdp->srd_ismrgnp[rid];
14746 sfmmu_link_scd_to_regions(sf_srd_t *srdp, sf_scd_t *scdp)
14773 rgnp = srdp->srd_hmergnp[rid];
14781 rgnp = srdp->srd_ismrgnp[rid];
14803 sfmmu_unlink_scd_from_regions(sf_srd_t *srdp, sf_scd_t *scdp)
14829 rgnp = srdp->srd_hmergnp[rid];
14839 rgnp = srdp->srd_ismrgnp[rid];
14863 sfmmu_alloc_scd(sf_srd_t *srdp, sf_region_map_t *new_map)
14869 ASSERT(MUTEX_HELD(&srdp->srd_scd_mutex));
14874 scsfmmup->sfmmu_srdp = srdp;
14893 if (sfmmu_alloc_scd_tsbs(srdp, new_scdp) != TSB_SUCCESS) {
14915 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
14919 ASSERT(srdp != NULL);
14984 SF_SCD_DECR_REF(srdp, old_scdp);
15029 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
15033 ASSERT(srdp != NULL);
15036 mutex_enter(&srdp->srd_scd_mutex);
15037 for (scdp = srdp->srd_scdp; scdp != NULL;
15043 mutex_exit(&srdp->srd_scd_mutex);
15058 mutex_exit(&srdp->srd_scd_mutex);
15068 if ((new_scdp = sfmmu_alloc_scd(srdp, &sfmmup->sfmmu_region_map)) ==
15070 mutex_exit(&srdp->srd_scd_mutex);
15079 sfmmu_set_scd_rttecnt(srdp, new_scdp);
15084 sfmmu_link_scd_to_regions(srdp, new_scdp);
15085 sfmmu_add_scd(&srdp->srd_scdp, new_scdp);
15088 mutex_exit(&srdp->srd_scd_mutex);
15103 sf_srd_t *srdp = sfmmup->sfmmu_srdp;
15108 ASSERT(srdp != NULL);
15131 SF_SCD_DECR_REF(srdp, scdp);
15215 SF_SCD_DECR_REF(srdp, scdp);
15224 sfmmu_destroy_scd(sf_srd_t *srdp, sf_scd_t *scdp, sf_region_map_t *scd_rmap)
15231 mutex_enter(&srdp->srd_scd_mutex);
15232 for (sp = srdp->srd_scdp; sp != NULL; sp = sp->scd_next) {
15237 mutex_exit(&srdp->srd_scd_mutex);
15247 mutex_exit(&srdp->srd_scd_mutex);
15255 sfmmu_remove_scd(&srdp->srd_scdp, scdp);
15256 mutex_exit(&srdp->srd_scd_mutex);
15258 sfmmu_unlink_scd_from_regions(srdp, scdp);
15331 sfmmu_srd_lock_held(sf_srd_t *srdp)
15333 return (MUTEX_HELD(&srdp->srd_mutex));
15555 sf_srd_t *srdp;
15559 srdp = hblktosrd(hmeblkp);
15560 ASSERT(srdp != NULL && srdp->srd_refcnt != 0);
15564 rgnp = srdp->srd_hmergnp[rid];
15566 SFMMU_VALIDATE_SHAREDHBLK(hmeblkp, srdp, rgnp, rid);