Lines Matching defs:icm

987 	hermon_icm_table_t	*icm;
998 icm = &state->hs_icm[type];
1049 hermon_bitmap(bitmap, dma_info, icm, index1, num_to_hdl);
1054 dma_info->length = icm->span << icm->log_object_size;
1055 dma_info->icmaddr = icm->icm_baseaddr +
1056 (((index1 << icm->split_shift) +
1057 (index2 << icm->span_shift)) << icm->log_object_size);
1061 icm->num_to_hdl[index1][index2] =
1104 HERMON_BMAP_BIT_SET(icm->icm_bitmap[index1], index2);
1120 hermon_icm_table_t *icm;
1124 icm = &state->hs_icm[type];
1125 ASSERT(icm->icm_dma[index1][index2].icm_refcnt == 0);
1132 dma_info = icm->icm_dma[index1] + index2;
1146 HERMON_BMAP_BIT_CLR(icm->icm_bitmap[index1], index2);
1181 hermon_icm_table_t *icm;
1186 icm = &state->hs_icm[type];
1187 hermon_index(index1, index2, idx, icm, span_offset);
1188 p1 = icm->num_to_hdl[index1];
1218 hermon_icm_table_t *icm;
1222 icm = &state->hs_icm[type];
1223 hermon_index(index1, index2, idx, icm, span_offset);
1225 (icm->num_to_hdl[index1][index2][span_offset] == NULL));
1226 icm->num_to_hdl[index1][index2][span_offset] = hdl;
1922 /* alloc icm aux physical memory and map it */
2855 hermon_icm_table_t *icm;
2865 icm = state->hs_icm;
2874 icm[HERMON_CMPT].object_size = devlim->cmpt_entry_sz;
2875 icm[HERMON_CMPT_QPC].object_size = devlim->cmpt_entry_sz;
2876 icm[HERMON_CMPT_SRQC].object_size = devlim->cmpt_entry_sz;
2877 icm[HERMON_CMPT_CQC].object_size = devlim->cmpt_entry_sz;
2878 icm[HERMON_CMPT_EQC].object_size = devlim->cmpt_entry_sz;
2879 icm[HERMON_MTT].object_size = devlim->mtt_entry_sz;
2880 icm[HERMON_DMPT].object_size = devlim->dmpt_entry_sz;
2881 icm[HERMON_QPC].object_size = devlim->qpc_entry_sz;
2882 icm[HERMON_CQC].object_size = devlim->cqc_entry_sz;
2883 icm[HERMON_SRQC].object_size = devlim->srq_entry_sz;
2884 icm[HERMON_EQC].object_size = devlim->eqc_entry_sz;
2885 icm[HERMON_RDB].object_size = devlim->rdmardc_entry_sz *
2887 icm[HERMON_MCG].object_size = HERMON_MCGMEM_SZ(state);
2888 icm[HERMON_ALTC].object_size = devlim->altc_entry_sz;
2889 icm[HERMON_AUXC].object_size = devlim->aux_entry_sz;
2892 icm[HERMON_CMPT].log_num_entries = cfg->cp_log_num_cmpt;
2893 icm[HERMON_CMPT_QPC].log_num_entries = cfg->cp_log_num_qp;
2894 icm[HERMON_CMPT_SRQC].log_num_entries = cfg->cp_log_num_srq;
2895 icm[HERMON_CMPT_CQC].log_num_entries = cfg->cp_log_num_cq;
2896 icm[HERMON_CMPT_EQC].log_num_entries = HERMON_NUM_EQ_SHIFT;
2897 icm[HERMON_MTT].log_num_entries = cfg->cp_log_num_mtt;
2898 icm[HERMON_DMPT].log_num_entries = cfg->cp_log_num_dmpt;
2899 icm[HERMON_QPC].log_num_entries = cfg->cp_log_num_qp;
2900 icm[HERMON_SRQC].log_num_entries = cfg->cp_log_num_srq;
2901 icm[HERMON_CQC].log_num_entries = cfg->cp_log_num_cq;
2902 icm[HERMON_EQC].log_num_entries = HERMON_NUM_EQ_SHIFT;
2903 icm[HERMON_RDB].log_num_entries = cfg->cp_log_num_qp;
2904 icm[HERMON_MCG].log_num_entries = cfg->cp_log_num_mcg;
2905 icm[HERMON_ALTC].log_num_entries = cfg->cp_log_num_qp;
2906 icm[HERMON_AUXC].log_num_entries = cfg->cp_log_num_qp;
2925 icm_p[i] = &icm[i];
2960 if (icm[j].table_size) {
2966 icm[j].icm_baseaddr = icm_addr;
2969 " size %llx", j, icm[j].icm_baseaddr,
2970 icm[j].table_size);
2972 icm_size += icm[j].table_size;
2989 uint64_t cmpt_size = icm[j].table_size >> 2;
2991 icm[rsrc].icm_baseaddr = icm_addr + (indx * cmpt_size);
2999 icm_addr += icm[j].table_size;
3033 hermon_icm_table_t *icm;
3038 icm = state->hs_icm;
3066 switch (icm[i].icm_type) {
3068 inithca->tpt.cmpt_baseaddr = icm[i].icm_baseaddr;
3072 inithca->tpt.mtt_baseaddr = icm[i].icm_baseaddr;
3076 inithca->tpt.dmpt_baseaddr = icm[i].icm_baseaddr;
3077 inithca->tpt.log_dmpt_sz = icm[i].log_num_entries;
3082 inithca->context.log_num_qp = icm[i].log_num_entries;
3084 icm[i].icm_baseaddr >> 32;
3086 (icm[i].icm_baseaddr & 0xFFFFFFFF) >> 5;
3090 inithca->context.log_num_cq = icm[i].log_num_entries;
3092 icm[i].icm_baseaddr >> 32;
3094 (icm[i].icm_baseaddr & 0xFFFFFFFF) >> 5;
3098 inithca->context.log_num_srq = icm[i].log_num_entries;
3100 icm[i].icm_baseaddr >> 32;
3102 (icm[i].icm_baseaddr & 0xFFFFFFFF) >> 5;
3106 inithca->context.log_num_eq = icm[i].log_num_entries;
3108 icm[i].icm_baseaddr >> 32;
3110 (icm[i].icm_baseaddr & 0xFFFFFFFF) >> 5;
3115 icm[i].icm_baseaddr >> 32;
3117 (icm[i].icm_baseaddr & 0xFFFFFFFF) >> 5;
3123 inithca->multi.mc_baseaddr = icm[i].icm_baseaddr;
3124 inithca->multi.log_mc_tbl_sz = icm[i].log_num_entries;
3133 inithca->context.altc_baseaddr = icm[i].icm_baseaddr;
3137 inithca->context.auxc_baseaddr = icm[i].icm_baseaddr;
3191 icm[dep].span = icm[rsrc].span; \
3192 icm[dep].num_spans = icm[rsrc].num_spans; \
3193 icm[dep].split_shift = icm[rsrc].split_shift; \
3194 icm[dep].span_mask = icm[rsrc].span_mask; \
3195 icm[dep].span_shift = icm[rsrc].span_shift; \
3196 icm[dep].rsrc_mask = icm[rsrc].rsrc_mask; \
3200 "num_spans (0x%x)", dep, icm[dep].table_size, \
3201 icm[dep].span, icm[dep].num_spans); \
3204 icm[dep].span_shift, icm[dep].split_shift); \
3207 icm[dep].span_mask, icm[dep].rsrc_mask); \
3213 hermon_icm_table_t *icm;
3218 icm = state->hs_icm;
3221 icm[i].icm_type = i;
3222 icm[i].num_entries = 1 << icm[i].log_num_entries;
3223 icm[i].log_object_size = highbit(icm[i].object_size) - 1;
3224 icm[i].table_size = icm[i].num_entries <<
3225 icm[i].log_object_size;
3231 icm[i].table_size = 0x80000000ull;
3250 icm[i].span = HERMON_ICM_SPAN; /* default #rsrc's in 1 span */
3252 icm[i].span = HERMON_ICM_SPAN * 16;
3253 icm[i].num_spans = icm[i].num_entries / icm[i].span;
3254 if (icm[i].num_spans == 0) {
3255 icm[i].span = icm[i].num_entries;
3257 icm[i].num_spans = icm[i].num_entries / icm[i].span;
3259 per_split = icm[i].num_spans / HERMON_ICM_SPLIT;
3266 i, icm[i].span, icm[i].num_spans);
3275 icm[i].table_size = max(icm[i].table_size, HERMON_PAGESIZE);
3277 icm[i].span_shift = 0;
3278 for (k = icm[i].span; k != 1; k >>= 1)
3279 icm[i].span_shift++;
3280 icm[i].split_shift = icm[i].span_shift;
3282 icm[i].split_shift++;
3283 icm[i].span_mask = (1 << icm[i].split_shift) -
3284 (1 << icm[i].span_shift);
3285 icm[i].rsrc_mask = (1 << icm[i].span_shift) - 1;
3289 mutex_init(&icm[i].icm_table_lock, NULL, MUTEX_DRIVER,
3291 cv_init(&icm[i].icm_table_cv, NULL, CV_DRIVER, NULL);
3295 "rsrc (0x%x) size (0x%lx)", i, icm[i].table_size);
3298 icm[i].span, icm[i].num_spans);
3301 icm[i].span_shift, icm[i].split_shift);
3304 icm[i].span_mask, icm[i].rsrc_mask);
3319 hermon_icm_table_t *icm;
3324 icm = state->hs_icm;
3328 mutex_enter(&icm[i].icm_table_lock);
3329 nspans = icm[i].num_spans;
3332 if (icm[i].icm_dma[j])
3334 kmem_free(icm[i].icm_dma[j],
3337 if (icm[i].icm_bitmap[j])
3339 kmem_free(icm[i].icm_bitmap[j],
3343 cv_destroy(&icm[i].icm_table_cv);
3344 mutex_exit(&icm[i].icm_table_lock);
3345 mutex_destroy(&icm[i].icm_table_lock);
3357 hermon_icm_table_t *icm;
3392 icm = &state->hs_icm[type];
3394 mutex_enter(&icm->icm_table_lock);
3396 mutex_exit(&icm->icm_table_lock);
3399 icm = &state->hs_icm[type];
3400 mutex_enter(&icm->icm_table_lock);
3402 mutex_exit(&icm->icm_table_lock);
3425 hermon_icm_table_t *icm;
3432 icm = &state->hs_icm[type];
3434 dma_info = icm->icm_dma[index1];
3437 for (index2 = 0; index2 < icm->num_spans; index2++) {