Lines Matching refs:azn

283 amdzen_df_read_regdef(amdzen_t *azn, amdzen_df_t *df, const df_reg_def_t def,  in amdzen_df_read_regdef()  argument
289 df_rev_t df_rev = azn->azn_dfs[0].adf_rev; in amdzen_df_read_regdef()
292 VERIFY(MUTEX_HELD(&azn->azn_mutex)); in amdzen_df_read_regdef()
332 amdzen_df_read32(amdzen_t *azn, amdzen_df_t *df, uint8_t inst, in amdzen_df_read32() argument
335 return (amdzen_df_read_regdef(azn, df, def, inst, B_FALSE)); in amdzen_df_read32()
344 amdzen_df_read32_bcast(amdzen_t *azn, amdzen_df_t *df, const df_reg_def_t def) in amdzen_df_read32_bcast() argument
346 VERIFY(MUTEX_HELD(&azn->azn_mutex)); in amdzen_df_read32_bcast()
351 amdzen_smn_read(amdzen_t *azn, amdzen_df_t *df, const smn_reg_t reg) in amdzen_smn_read() argument
357 VERIFY(MUTEX_HELD(&azn->azn_mutex)); in amdzen_smn_read()
376 amdzen_smn_write(amdzen_t *azn, amdzen_df_t *df, const smn_reg_t reg, in amdzen_smn_write() argument
384 VERIFY(MUTEX_HELD(&azn->azn_mutex)); in amdzen_smn_write()
416 amdzen_df_find(amdzen_t *azn, uint_t dfno) in amdzen_df_find() argument
420 ASSERT(MUTEX_HELD(&azn->azn_mutex)); in amdzen_df_find()
421 if (dfno >= azn->azn_ndfs) { in amdzen_df_find()
425 for (i = 0; i < azn->azn_ndfs; i++) { in amdzen_df_find()
426 amdzen_df_t *df = &azn->azn_dfs[i]; in amdzen_df_find()
465 amdzen_t *azn = amdzen_data; in amdzen_c_smn_read() local
472 mutex_enter(&azn->azn_mutex); in amdzen_c_smn_read()
473 df = amdzen_df_find(azn, dfno); in amdzen_c_smn_read()
475 mutex_exit(&azn->azn_mutex); in amdzen_c_smn_read()
480 mutex_exit(&azn->azn_mutex); in amdzen_c_smn_read()
484 *valp = amdzen_smn_read(azn, df, reg); in amdzen_c_smn_read()
485 mutex_exit(&azn->azn_mutex); in amdzen_c_smn_read()
493 amdzen_t *azn = amdzen_data; in amdzen_c_smn_write() local
502 mutex_enter(&azn->azn_mutex); in amdzen_c_smn_write()
503 df = amdzen_df_find(azn, dfno); in amdzen_c_smn_write()
505 mutex_exit(&azn->azn_mutex); in amdzen_c_smn_write()
510 mutex_exit(&azn->azn_mutex); in amdzen_c_smn_write()
514 amdzen_smn_write(azn, df, reg, val); in amdzen_c_smn_write()
515 mutex_exit(&azn->azn_mutex); in amdzen_c_smn_write()
523 amdzen_t *azn = amdzen_data; in amdzen_c_df_count() local
525 mutex_enter(&azn->azn_mutex); in amdzen_c_df_count()
526 ret = azn->azn_ndfs; in amdzen_c_df_count()
527 mutex_exit(&azn->azn_mutex); in amdzen_c_df_count()
535 amdzen_t *azn = amdzen_data; in amdzen_c_df_rev() local
544 mutex_enter(&azn->azn_mutex); in amdzen_c_df_rev()
545 df = amdzen_df_find(azn, 0); in amdzen_c_df_rev()
551 mutex_exit(&azn->azn_mutex); in amdzen_c_df_rev()
561 amdzen_t *azn = amdzen_data; in amdzen_c_df_read32() local
563 mutex_enter(&azn->azn_mutex); in amdzen_c_df_read32()
564 df = amdzen_df_find(azn, dfno); in amdzen_c_df_read32()
566 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read32()
571 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read32()
575 *valp = amdzen_df_read_regdef(azn, df, def, inst, B_FALSE); in amdzen_c_df_read32()
576 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read32()
586 amdzen_t *azn = amdzen_data; in amdzen_c_df_read64() local
588 mutex_enter(&azn->azn_mutex); in amdzen_c_df_read64()
589 df = amdzen_df_find(azn, dfno); in amdzen_c_df_read64()
591 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read64()
596 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read64()
600 *valp = amdzen_df_read_regdef(azn, df, def, inst, B_TRUE); in amdzen_c_df_read64()
601 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read64()
610 amdzen_t *azn = amdzen_data; in amdzen_c_df_read32_bcast() local
612 mutex_enter(&azn->azn_mutex); in amdzen_c_df_read32_bcast()
613 df = amdzen_df_find(azn, dfno); in amdzen_c_df_read32_bcast()
615 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read32_bcast()
620 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read32_bcast()
624 *valp = amdzen_df_read32_bcast(azn, df, def); in amdzen_c_df_read32_bcast()
625 mutex_exit(&azn->azn_mutex); in amdzen_c_df_read32_bcast()
635 amdzen_t *azn = amdzen_data; in amdzen_c_df_iter() local
649 mutex_enter(&azn->azn_mutex); in amdzen_c_df_iter()
650 df = amdzen_df_find(azn, dfno); in amdzen_c_df_iter()
652 mutex_exit(&azn->azn_mutex); in amdzen_c_df_iter()
655 mutex_exit(&azn->azn_mutex); in amdzen_c_df_iter()
712 amdzen_t *azn = amdzen_data; in amdzen_c_df_fabric_decomp() local
714 mutex_enter(&azn->azn_mutex); in amdzen_c_df_fabric_decomp()
715 df = amdzen_df_find(azn, 0); in amdzen_c_df_fabric_decomp()
717 mutex_exit(&azn->azn_mutex); in amdzen_c_df_fabric_decomp()
722 mutex_exit(&azn->azn_mutex); in amdzen_c_df_fabric_decomp()
727 amdzen_create_child(amdzen_t *azn, const amdzen_child_data_t *acd) in amdzen_create_child() argument
732 if (ndi_devi_alloc(azn->azn_dip, acd->acd_name, in amdzen_create_child()
734 dev_err(azn->azn_dip, CE_WARN, "!failed to allocate child " in amdzen_create_child()
742 dev_err(azn->azn_dip, CE_WARN, "!failed to online " in amdzen_create_child()
752 amdzen_map_dfs(amdzen_t *azn) in amdzen_map_dfs() argument
756 ASSERT(MUTEX_HELD(&azn->azn_mutex)); in amdzen_map_dfs()
758 for (stub = list_head(&azn->azn_df_stubs); stub != NULL; in amdzen_map_dfs()
759 stub = list_next(&azn->azn_df_stubs, stub)) { in amdzen_map_dfs()
771 df = &azn->azn_dfs[dfno]; in amdzen_map_dfs()
792 azn->azn_flags |= AMDZEN_F_DEVICE_ERROR; in amdzen_map_dfs()
797 amdzen_check_dfs(amdzen_t *azn) in amdzen_check_dfs() argument
803 amdzen_df_t *df = &azn->azn_dfs[i]; in amdzen_check_dfs()
821 dev_err(azn->azn_dip, CE_WARN, "df %u devices " in amdzen_check_dfs()
825 azn->azn_ndfs++; in amdzen_check_dfs()
895 amdzen_determine_df_vers(amdzen_t *azn, amdzen_df_t *df) in amdzen_determine_df_vers() argument
949 amdzen_determine_fabric_decomp(amdzen_t *azn, amdzen_df_t *df) in amdzen_determine_fabric_decomp() argument
956 df->adf_syscfg = amdzen_df_read32_bcast(azn, df, DF_SYSCFG_V2); in amdzen_determine_fabric_decomp()
959 mask = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
963 mask = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1012 df->adf_syscfg = amdzen_df_read32_bcast(azn, df, DF_SYSCFG_V3); in amdzen_determine_fabric_decomp()
1013 df->adf_mask0 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1015 df->adf_mask1 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1036 df->adf_syscfg = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1038 df->adf_mask0 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1040 df->adf_mask1 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1042 df->adf_mask2 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1064 df->adf_syscfg = amdzen_df_read32_bcast(azn, df, DF_SYSCFG_V4); in amdzen_determine_fabric_decomp()
1065 df->adf_mask0 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1067 df->adf_mask1 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1069 df->adf_mask2 = amdzen_df_read32_bcast(azn, df, in amdzen_determine_fabric_decomp()
1146 amdzen_setup_df_ccm(amdzen_t *azn, amdzen_df_t *df, amdzen_df_ent_t *dfe, in amdzen_setup_df_ccm() argument
1154 uint32_t val = amdzen_df_read32(azn, df, dfe->adfe_inst_id, in amdzen_setup_df_ccm()
1161 val = amdzen_df_read32(azn, df, dfe->adfe_inst_id, in amdzen_setup_df_ccm()
1186 amdzen_setup_df(amdzen_t *azn, amdzen_df_t *df) in amdzen_setup_df() argument
1191 amdzen_determine_df_vers(azn, df); in amdzen_setup_df()
1197 val = amdzen_df_read32_bcast(azn, df, DF_CFG_ADDR_CTL_V2); in amdzen_setup_df()
1201 val = amdzen_df_read32_bcast(azn, df, DF_CFG_ADDR_CTL_V4); in amdzen_setup_df()
1204 dev_err(azn->azn_dip, CE_WARN, "encountered unsupported DF " in amdzen_setup_df()
1209 val = amdzen_df_read32_bcast(azn, df, DF_FBICNT); in amdzen_setup_df()
1230 dev_err(azn->azn_dip, CE_WARN, "Rome family " in amdzen_setup_df()
1240 dfe->adfe_info0 = amdzen_df_read32(azn, df, inst, DF_FBIINFO0); in amdzen_setup_df()
1242 dfe->adfe_info1 = amdzen_df_read32(azn, df, inst, in amdzen_setup_df()
1244 dfe->adfe_info2 = amdzen_df_read32(azn, df, inst, in amdzen_setup_df()
1247 dfe->adfe_info3 = amdzen_df_read32(azn, df, inst, DF_FBIINFO3); in amdzen_setup_df()
1328 amdzen_setup_df_ccm(azn, df, dfe, ccmno); in amdzen_setup_df()
1336 amdzen_determine_fabric_decomp(azn, df); in amdzen_setup_df()
1340 amdzen_find_nb(amdzen_t *azn, amdzen_df_t *df) in amdzen_find_nb() argument
1344 for (stub = list_head(&azn->azn_nb_stubs); stub != NULL; in amdzen_find_nb()
1345 stub = list_next(&azn->azn_nb_stubs, stub)) { in amdzen_find_nb()
1366 amdzen_ccd_present(amdzen_t *azn, amdzen_df_t *df, uint32_t ccdno) in amdzen_ccd_present() argument
1369 uint32_t val = amdzen_smn_read(azn, df, die_reg); in amdzen_ccd_present()
1379 amdzen_ccd_thread_en(amdzen_t *azn, amdzen_df_t *df, uint32_t ccdno) in amdzen_ccd_thread_en() argument
1383 if (uarchrev_uarch(azn->azn_uarchrev) >= X86_UARCH_AMD_ZEN5) { in amdzen_ccd_thread_en()
1389 return (amdzen_smn_read(azn, df, reg)); in amdzen_ccd_thread_en()
1393 amdzen_ccd_core_en(amdzen_t *azn, amdzen_df_t *df, uint32_t ccdno) in amdzen_ccd_core_en() argument
1397 if (uarchrev_uarch(azn->azn_uarchrev) >= X86_UARCH_AMD_ZEN5) { in amdzen_ccd_core_en()
1403 return (amdzen_smn_read(azn, df, reg)); in amdzen_ccd_core_en()
1407 amdzen_ccd_info(amdzen_t *azn, amdzen_df_t *df, uint32_t ccdno, uint32_t *nccxp, in amdzen_ccd_info() argument
1412 if (uarchrev_uarch(azn->azn_uarchrev) >= X86_UARCH_AMD_ZEN5) { in amdzen_ccd_info()
1414 uint32_t val = amdzen_smn_read(azn, df, reg); in amdzen_ccd_info()
1420 uint32_t val = amdzen_smn_read(azn, df, reg); in amdzen_ccd_info()
1445 amdzen_initpkg_to_apic(amdzen_t *azn, const uint32_t pkg0, const uint32_t pkg7) in amdzen_initpkg_to_apic() argument
1449 amdzen_apic_decomp_t *apic = &azn->azn_apic_decomp; in amdzen_initpkg_to_apic()
1462 if (uarchrev_uarch(azn->azn_uarchrev) >= X86_UARCH_AMD_ZEN4) { in amdzen_initpkg_to_apic()
1558 amdzen_determine_apic_decomp_initpkg(amdzen_t *azn) in amdzen_determine_apic_decomp_initpkg() argument
1560 amdzen_df_t *df = &azn->azn_dfs[0]; in amdzen_determine_apic_decomp_initpkg()
1574 if (!amdzen_ccd_present(azn, df, ccdno)) { in amdzen_determine_apic_decomp_initpkg()
1583 amdzen_ccd_info(azn, df, ccdno, &nccx, NULL, NULL); in amdzen_determine_apic_decomp_initpkg()
1584 val = amdzen_ccd_core_en(azn, df, ccdno); in amdzen_determine_apic_decomp_initpkg()
1610 pccxno = pcoreno / azn->azn_ncore_per_ccx; in amdzen_determine_apic_decomp_initpkg()
1614 pkg7 = amdzen_smn_read(azn, df, pkg7_reg); in amdzen_determine_apic_decomp_initpkg()
1617 pkg0 = amdzen_smn_read(azn, df, pkg0_reg); in amdzen_determine_apic_decomp_initpkg()
1618 amdzen_initpkg_to_apic(azn, pkg0, pkg7); in amdzen_determine_apic_decomp_initpkg()
1683 amdzen_determine_apic_decomp(amdzen_t *azn) in amdzen_determine_apic_decomp() argument
1685 amdzen_apic_decomp_t *apic = &azn->azn_apic_decomp; in amdzen_determine_apic_decomp()
1688 switch (uarchrev_uarch(azn->azn_uarchrev)) { in amdzen_determine_apic_decomp()
1744 return (amdzen_determine_apic_decomp_initpkg(azn)); in amdzen_determine_apic_decomp()
1758 amdzen_determine_ncore_per_ccx(amdzen_t *azn) in amdzen_determine_ncore_per_ccx() argument
1760 switch (uarchrev_uarch(azn->azn_uarchrev)) { in amdzen_determine_ncore_per_ccx()
1764 azn->azn_ncore_per_ccx = 4; in amdzen_determine_ncore_per_ccx()
1768 azn->azn_ncore_per_ccx = 8; in amdzen_determine_ncore_per_ccx()
1771 if (chiprev_family(azn->azn_chiprev) == in amdzen_determine_ncore_per_ccx()
1773 azn->azn_ncore_per_ccx = 16; in amdzen_determine_ncore_per_ccx()
1775 azn->azn_ncore_per_ccx = 8; in amdzen_determine_ncore_per_ccx()
1794 amdzen_ccd_log_id_zen2(amdzen_t *azn, amdzen_df_t *df, in amdzen_ccd_log_id_zen2() argument
1813 boolean_t present = amdzen_ccd_present(azn, df, smnid); in amdzen_ccd_log_id_zen2()
1825 amdzen_ccd_fill_core_initpkg0(amdzen_t *azn, amdzen_df_t *df, in amdzen_ccd_fill_core_initpkg0() argument
1834 pkg0 = amdzen_smn_read(azn, df, pkg0_reg); in amdzen_ccd_fill_core_initpkg0()
1875 amdzen_ccd_fill_topo(amdzen_t *azn, amdzen_df_t *df, amdzen_df_ent_t *ent, in amdzen_ccd_fill_topo() argument
1882 const x86_uarch_t uarch = uarchrev_uarch(azn->azn_uarchrev); in amdzen_ccd_fill_topo()
1885 ASSERT(MUTEX_HELD(&azn->azn_mutex)); in amdzen_ccd_fill_topo()
1886 if (!amdzen_ccd_present(azn, df, ccdno)) { in amdzen_ccd_fill_topo()
1891 amdzen_ccd_info(azn, df, ccdno, &nccx, &nlcore_per_ccx, in amdzen_ccd_fill_topo()
1895 core_en = amdzen_ccd_core_en(azn, df, ccdno); in amdzen_ccd_fill_topo()
1896 thread_en = amdzen_ccd_thread_en(azn, df, ccdno); in amdzen_ccd_fill_topo()
1919 ccd->atccd_log_no = amdzen_ccd_log_id_zen2(azn, df, ent); in amdzen_ccd_fill_topo()
1940 const uint32_t core_mask = (1 << azn->azn_ncore_per_ccx) - 1; in amdzen_ccd_fill_topo()
1941 const uint32_t core_shift = ccxno * azn->azn_ncore_per_ccx; in amdzen_ccd_fill_topo()
1948 ccx->atccx_nphys_cores = azn->azn_ncore_per_ccx; in amdzen_ccd_fill_topo()
1957 coreno < azn->azn_ncore_per_ccx; coreno++) { in amdzen_ccd_fill_topo()
1982 amdzen_ccd_fill_core_initpkg0(azn, df, ccd, ccx, in amdzen_ccd_fill_topo()
2015 zen_apic_id_compose(&azn->azn_apic_decomp, in amdzen_ccd_fill_topo()
2032 amdzen_t *azn = arg; in amdzen_nexus_init() local
2037 azn->azn_uarchrev = cpuid_getuarchrev(CPU); in amdzen_nexus_init()
2038 azn->azn_chiprev = cpuid_getchiprev(CPU); in amdzen_nexus_init()
2043 mutex_enter(&azn->azn_mutex); in amdzen_nexus_init()
2044 if (!amdzen_map_dfs(azn) || !amdzen_check_dfs(azn)) { in amdzen_nexus_init()
2045 azn->azn_flags |= AMDZEN_F_MAP_ERROR; in amdzen_nexus_init()
2050 amdzen_df_t *df = &azn->azn_dfs[i]; in amdzen_nexus_init()
2054 amdzen_setup_df(azn, df); in amdzen_nexus_init()
2055 amdzen_find_nb(azn, df); in amdzen_nexus_init()
2058 amdzen_determine_ncore_per_ccx(azn); in amdzen_nexus_init()
2060 if (amdzen_determine_apic_decomp(azn)) { in amdzen_nexus_init()
2061 azn->azn_flags |= AMDZEN_F_APIC_DECOMP_VALID; in amdzen_nexus_init()
2068 mutex_exit(&azn->azn_mutex); in amdzen_nexus_init()
2070 (void) amdzen_create_child(azn, &amdzen_children[i]); in amdzen_nexus_init()
2072 mutex_enter(&azn->azn_mutex); in amdzen_nexus_init()
2075 azn->azn_flags &= ~AMDZEN_F_ATTACH_DISPATCHED; in amdzen_nexus_init()
2076 azn->azn_flags |= AMDZEN_F_ATTACH_COMPLETE; in amdzen_nexus_init()
2077 azn->azn_taskqid = TASKQID_INVALID; in amdzen_nexus_init()
2078 cv_broadcast(&azn->azn_cv); in amdzen_nexus_init()
2079 mutex_exit(&azn->azn_mutex); in amdzen_nexus_init()
2085 amdzen_t *azn = arg; in amdzen_stub_scan_cb() local
2142 mutex_enter(&azn->azn_mutex); in amdzen_stub_scan_cb()
2143 azn->azn_nscanned++; in amdzen_stub_scan_cb()
2144 mutex_exit(&azn->azn_mutex); in amdzen_stub_scan_cb()
2153 amdzen_t *azn = arg; in amdzen_stub_scan() local
2155 mutex_enter(&azn->azn_mutex); in amdzen_stub_scan()
2156 azn->azn_nscanned = 0; in amdzen_stub_scan()
2157 mutex_exit(&azn->azn_mutex); in amdzen_stub_scan()
2159 ddi_walk_devs(ddi_root_node(), amdzen_stub_scan_cb, azn); in amdzen_stub_scan()
2161 mutex_enter(&azn->azn_mutex); in amdzen_stub_scan()
2162 azn->azn_flags &= ~AMDZEN_F_SCAN_DISPATCHED; in amdzen_stub_scan()
2163 azn->azn_flags |= AMDZEN_F_SCAN_COMPLETE; in amdzen_stub_scan()
2165 if (azn->azn_nscanned == 0) { in amdzen_stub_scan()
2166 azn->azn_flags |= AMDZEN_F_UNSUPPORTED; in amdzen_stub_scan()
2167 azn->azn_taskqid = TASKQID_INVALID; in amdzen_stub_scan()
2168 cv_broadcast(&azn->azn_cv); in amdzen_stub_scan()
2169 } else if (azn->azn_npresent == azn->azn_nscanned) { in amdzen_stub_scan()
2170 azn->azn_flags |= AMDZEN_F_ATTACH_DISPATCHED; in amdzen_stub_scan()
2171 azn->azn_taskqid = taskq_dispatch(system_taskq, in amdzen_stub_scan()
2172 amdzen_nexus_init, azn, TQ_SLEEP); in amdzen_stub_scan()
2174 mutex_exit(&azn->azn_mutex); in amdzen_stub_scan()
2200 amdzen_t *azn = amdzen_data; in amdzen_attach_stub() local
2283 mutex_enter(&azn->azn_mutex); in amdzen_attach_stub()
2284 azn->azn_npresent++; in amdzen_attach_stub()
2286 list_insert_tail(&azn->azn_nb_stubs, stub); in amdzen_attach_stub()
2288 list_insert_tail(&azn->azn_df_stubs, stub); in amdzen_attach_stub()
2291 if ((azn->azn_flags & AMDZEN_F_TASKQ_MASK) == AMDZEN_F_SCAN_COMPLETE && in amdzen_attach_stub()
2292 azn->azn_nscanned == azn->azn_npresent) { in amdzen_attach_stub()
2293 azn->azn_flags |= AMDZEN_F_ATTACH_DISPATCHED; in amdzen_attach_stub()
2294 azn->azn_taskqid = taskq_dispatch(system_taskq, in amdzen_attach_stub()
2295 amdzen_nexus_init, azn, TQ_SLEEP); in amdzen_attach_stub()
2297 mutex_exit(&azn->azn_mutex); in amdzen_attach_stub()
2360 amdzen_t *azn = amdzen_data; in amdzen_topo_open() local
2380 mutex_enter(&azn->azn_mutex); in amdzen_topo_open()
2381 if ((azn->azn_flags & AMDZEN_F_IOCTL_MASK) != in amdzen_topo_open()
2383 mutex_exit(&azn->azn_mutex); in amdzen_topo_open()
2386 mutex_exit(&azn->azn_mutex); in amdzen_topo_open()
2392 amdzen_topo_ioctl_base(amdzen_t *azn, intptr_t arg, int mode) in amdzen_topo_ioctl_base() argument
2397 mutex_enter(&azn->azn_mutex); in amdzen_topo_ioctl_base()
2398 base.atb_ndf = azn->azn_ndfs; in amdzen_topo_ioctl_base()
2400 if ((azn->azn_flags & AMDZEN_F_APIC_DECOMP_VALID) == 0) { in amdzen_topo_ioctl_base()
2401 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_base()
2405 base.atb_apic_decomp = azn->azn_apic_decomp; in amdzen_topo_ioctl_base()
2406 for (uint_t i = 0; i < azn->azn_ndfs; i++) { in amdzen_topo_ioctl_base()
2407 const amdzen_df_t *df = &azn->azn_dfs[i]; in amdzen_topo_ioctl_base()
2415 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_base()
2469 amdzen_topo_ioctl_df(amdzen_t *azn, intptr_t arg, int mode) in amdzen_topo_ioctl_df() argument
2503 mutex_enter(&azn->azn_mutex); in amdzen_topo_ioctl_df()
2504 if (topo_df.atd_dfno >= azn->azn_ndfs) { in amdzen_topo_ioctl_df()
2505 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_df()
2509 df = &azn->azn_dfs[topo_df.atd_dfno]; in amdzen_topo_ioctl_df()
2523 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_df()
2554 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_df()
2559 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_df()
2596 amdzen_topo_ioctl_ccd(amdzen_t *azn, intptr_t arg, int mode) in amdzen_topo_ioctl_ccd() argument
2616 mutex_enter(&azn->azn_mutex); in amdzen_topo_ioctl_ccd()
2617 if ((azn->azn_flags & AMDZEN_F_APIC_DECOMP_VALID) == 0) { in amdzen_topo_ioctl_ccd()
2622 df = amdzen_df_find(azn, ccd.atccd_dfno); in amdzen_topo_ioctl_ccd()
2668 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_ccd()
2675 amdzen_ccd_fill_topo(azn, df, ent, ccdp); in amdzen_topo_ioctl_ccd()
2682 mutex_exit(&azn->azn_mutex); in amdzen_topo_ioctl_ccd()
2696 amdzen_t *azn = amdzen_data; in amdzen_topo_ioctl() local
2708 ret = amdzen_topo_ioctl_base(azn, arg, mode); in amdzen_topo_ioctl()
2711 ret = amdzen_topo_ioctl_df(azn, arg, mode); in amdzen_topo_ioctl()
2714 ret = amdzen_topo_ioctl_ccd(azn, arg, mode); in amdzen_topo_ioctl()
2741 amdzen_t *azn = amdzen_data; in amdzen_attach() local
2749 mutex_enter(&azn->azn_mutex); in amdzen_attach()
2750 if (azn->azn_dip != NULL) { in amdzen_attach()
2752 mutex_exit(&azn->azn_mutex); in amdzen_attach()
2759 mutex_exit(&azn->azn_mutex); in amdzen_attach()
2763 azn->azn_dip = dip; in amdzen_attach()
2764 azn->azn_taskqid = taskq_dispatch(system_taskq, amdzen_stub_scan, in amdzen_attach()
2765 azn, TQ_SLEEP); in amdzen_attach()
2766 azn->azn_flags |= AMDZEN_F_SCAN_DISPATCHED; in amdzen_attach()
2767 mutex_exit(&azn->azn_mutex); in amdzen_attach()
2775 amdzen_t *azn = amdzen_data; in amdzen_detach() local
2783 mutex_enter(&azn->azn_mutex); in amdzen_detach()
2784 while (azn->azn_taskqid != TASKQID_INVALID) { in amdzen_detach()
2785 cv_wait(&azn->azn_cv, &azn->azn_mutex); in amdzen_detach()
2792 if (!list_is_empty(&azn->azn_df_stubs) || in amdzen_detach()
2793 !list_is_empty(&azn->azn_nb_stubs)) { in amdzen_detach()
2794 mutex_exit(&azn->azn_mutex); in amdzen_detach()
2798 ddi_remove_minor_node(azn->azn_dip, NULL); in amdzen_detach()
2799 azn->azn_dip = NULL; in amdzen_detach()
2800 mutex_exit(&azn->azn_mutex); in amdzen_detach()