Lines Matching refs:drhd

132 	drhd_t *drhd;
141 while ((drhd = list_remove_head(drhd_list)) != NULL) {
142 scope_list_free(&(drhd->dr_scope_list));
143 kmem_free(drhd, sizeof (drhd_t));
235 ioapic_drhd_insert(scope_t *scope, drhd_t *drhd)
243 idt->ioapic_drhd = drhd;
284 * parse the drhd uints in dmar table
289 drhd_t *drhd;
306 drhd = kmem_zalloc(sizeof (drhd_t), KM_SLEEP);
307 mutex_init(&(drhd->dr_lock), NULL, MUTEX_DEFAULT, NULL);
308 list_create(&(drhd->dr_scope_list), sizeof (scope_t),
312 drhd->dr_include_all =
314 drhd->dr_seg = seg;
315 drhd->dr_regs = get_uint64(&uhead[8]);
328 ioapic_drhd_insert(scope, drhd);
331 list_insert_tail(&(drhd->dr_scope_list), scope);
335 list_insert_tail(&(tbl->tbl_drhd_list[drhd->dr_seg]), drhd);
560 drhd_t *drhd;
567 for (drhd = list_head(drhd_list); drhd;
568 drhd = list_next(drhd_list, drhd)) {
571 drhd->dr_seg);
573 drhd->dr_regs);
575 drhd->dr_include_all == B_TRUE ? "TRUE" : "FALSE");
577 (void *)drhd->dr_dip);
579 print_scope_list(&(drhd->dr_scope_list));
626 /* print drhd list */
641 drhd_devi_create(drhd_t *drhd, int unit)
650 drhd->dr_dip = dip;
653 reg.regspec_addr = drhd->dr_regs;
687 pdptr->par_reg->regspec_addr = drhd->dr_regs;
703 drhd_t *drhd;
713 drhd = list_head(drhd_list);
714 for (unit = 0; drhd;
715 drhd = list_next(drhd_list, drhd), unit++) {
716 drhd_devi_create(drhd, unit);
722 drhd_devi_destroy(drhd_t *drhd)
727 dip = drhd->dr_dip;
735 drhd->dr_dip = NULL;
741 * destroy dev_info nodes for all drhd units
746 drhd_t *drhd;
755 drhd = list_head(drhd_list);
756 for (; drhd; drhd = list_next(drhd_list, drhd)) {
757 drhd_devi_destroy(drhd);
865 * create one devinfo for every drhd unit
1055 drhd_t *drhd;
1067 * for each segment, walk the drhd list looking for an exact match
1070 drhd = list_head(&(tbl->tbl_drhd_list)[seg]);
1071 for (; drhd; drhd = list_next(&(tbl->tbl_drhd_list)[seg],
1072 drhd)) {
1078 if (drhd->dr_include_all == B_TRUE)
1084 scope = list_head(&(drhd->dr_scope_list));
1086 scope = list_next(&(drhd->dr_scope_list), scope)) {
1120 * walk the drhd list looking for subtree match
1127 drhd = list_head(&(tbl->tbl_drhd_list)[seg]);
1128 for (; drhd; drhd = list_next(&(tbl->tbl_drhd_list)[seg],
1129 drhd)) {
1132 if (drhd->dr_include_all == B_TRUE)
1138 scope = list_head(&(drhd->dr_scope_list));
1140 scope = list_next(&(drhd->dr_scope_list), scope)) {
1165 /* look for lowest ancestor matching drhd */
1168 tdrhd = drhd;
1175 if ((drhd = tdrhd) != NULL) {
1180 drhd = list_head(&(tbl->tbl_drhd_list[seg]));
1181 for (; drhd; drhd = list_next(&(tbl->tbl_drhd_list)[seg],
1182 drhd)) {
1184 if (drhd->dr_include_all == B_TRUE) {
1196 * No drhd (dmar unit) found for this device in the ACPI DMAR tables.
1201 if (drhd == NULL) {
1207 return (drhd->dr_immu);
1213 drhd_t *drhd = (drhd_t *)dmar_unit;
1214 return (drhd->dr_dip);
1221 drhd_t *drhd = (drhd_t *)dmar_unit;
1225 if (drhd == NULL) {
1228 return ((void *)list_next(drhd_list, drhd));
1235 drhd_t *drhd = (drhd_t *)dmar_unit;
1237 ASSERT(drhd);
1240 drhd->dr_immu = immu;