Lines Matching full:gpu

108 	return top_dev->gpu;  in kfd_device_by_id()
261 if (iolink->gpu && kfd_devcgroup_check_permission(iolink->gpu)) in iolink_show()
303 if (mem->gpu && kfd_devcgroup_check_permission(mem->gpu)) in mem_show()
335 if (cache->gpu && kfd_devcgroup_check_permission(cache->gpu)) in kfd_cache_show()
417 if (dev->gpu && kfd_devcgroup_check_permission(dev->gpu)) in node_show()
426 if (dev->gpu && kfd_devcgroup_check_permission(dev->gpu)) in node_show()
433 if (dev->gpu && kfd_devcgroup_check_permission(dev->gpu)) in node_show()
438 dev->gpu ? dev->node_props.simd_count : 0); in node_show()
462 dev->gpu ? (dev->node_props.array_count * in node_show()
463 NUM_XCC(dev->gpu->xcc_mask)) : 0); in node_show()
495 if (dev->gpu) { in node_show()
497 __ilog2_u32(dev->gpu->kfd->device_info.num_of_watch_points); in node_show()
509 if (dev->gpu->adev->asic_type == CHIP_TONGA) in node_show()
513 if (KFD_GC_VERSION(dev->gpu) < IP_VERSION(10, 0, 0) && in node_show()
514 (dev->gpu->adev->sdma.supported_reset & AMDGPU_RESET_TYPE_PER_QUEUE)) in node_show()
523 dev->gpu->kfd->mec_fw_version); in node_show()
531 dev->gpu->kfd->sdma_fw_version); in node_show()
533 dev->gpu->xcp ? in node_show()
534 dev->gpu->xcp->unique_id : in node_show()
535 dev->gpu->adev->unique_id); in node_show()
537 NUM_XCC(dev->gpu->xcc_mask)); in node_show()
988 if (!kdev->gpu) { in kfd_add_non_crat_information()
992 /* TODO: For GPU node, rearrange code from kfd_topology_add_device */ in kfd_add_non_crat_information()
1059 /* For nodes with GPU, this information gets added in kfd_topology_init()
1060 * when GPU is detected (kfd_topology_add_device). in kfd_topology_init()
1084 static uint32_t kfd_generate_gpu_id(struct kfd_node *gpu) in kfd_generate_gpu_id() argument
1093 if (!gpu) in kfd_generate_gpu_id()
1097 local_mem_size = gpu->local_mem_info.local_mem_size_private + in kfd_generate_gpu_id()
1098 gpu->local_mem_info.local_mem_size_public; in kfd_generate_gpu_id()
1099 buf[0] = gpu->adev->pdev->devfn; in kfd_generate_gpu_id()
1100 buf[1] = gpu->adev->pdev->subsystem_vendor | in kfd_generate_gpu_id()
1101 (gpu->adev->pdev->subsystem_device << 16); in kfd_generate_gpu_id()
1102 buf[2] = pci_domain_nr(gpu->adev->pdev->bus); in kfd_generate_gpu_id()
1103 buf[3] = gpu->adev->pdev->device; in kfd_generate_gpu_id()
1104 buf[4] = gpu->adev->pdev->bus->number; in kfd_generate_gpu_id()
1107 buf[7] = (ffs(gpu->xcc_mask) - 1) | (NUM_XCC(gpu->xcc_mask) << 16); in kfd_generate_gpu_id()
1125 if (dev->gpu && dev->gpu_id == gpu_id) { in kfd_generate_gpu_id()
1138 /* kfd_assign_gpu - Attach @gpu to the correct kfd topology device. If
1139 * the GPU device is not already present in the topology device
1141 * be created for this GPU.
1143 static struct kfd_topology_device *kfd_assign_gpu(struct kfd_node *gpu) in kfd_assign_gpu() argument
1159 if (!dev->gpu && (dev->node_props.simd_count > 0)) { in kfd_assign_gpu()
1160 dev->gpu = gpu; in kfd_assign_gpu()
1164 mem->gpu = dev->gpu; in kfd_assign_gpu()
1166 cache->gpu = dev->gpu; in kfd_assign_gpu()
1168 iolink->gpu = dev->gpu; in kfd_assign_gpu()
1170 p2plink->gpu = dev->gpu; in kfd_assign_gpu()
1181 * of the GPU in kfd_notify_gpu_change()
1202 amdgpu_amdkfd_get_local_mem_info(dev->gpu->adev, &local_mem_info, in kfd_fill_mem_clk_max_info()
1203 dev->gpu->xcp); in kfd_fill_mem_clk_max_info()
1221 pcie_capability_read_dword(target_gpu_dev->gpu->adev->pdev, in kfd_set_iolink_no_atomics()
1228 /* set gpu (dev) flags. */ in kfd_set_iolink_no_atomics()
1230 if (!dev->gpu->kfd->pci_atomic_requested || in kfd_set_iolink_no_atomics()
1231 dev->gpu->adev->asic_type == CHIP_HAWAII) in kfd_set_iolink_no_atomics()
1241 /* CPU -> GPU with PCIe */ in kfd_set_iolink_non_coherent()
1242 if (!to_dev->gpu && in kfd_set_iolink_non_coherent()
1246 if (to_dev->gpu) { in kfd_set_iolink_non_coherent()
1247 /* GPU <-> GPU with PCIe and in kfd_set_iolink_non_coherent()
1252 KFD_GC_VERSION(to_dev->gpu) == IP_VERSION(9, 4, 0))) { in kfd_set_iolink_non_coherent()
1274 struct kfd_node *gpu = outbound_link->gpu; in kfd_set_recommended_sdma_engines() local
1275 struct amdgpu_device *adev = gpu->adev; in kfd_set_recommended_sdma_engines()
1277 unsigned int num_xgmi_sdma_engines = kfd_get_num_xgmi_sdma_engines(gpu); in kfd_set_recommended_sdma_engines()
1278 unsigned int num_sdma_engines = kfd_get_num_sdma_engines(gpu); in kfd_set_recommended_sdma_engines()
1283 bool support_rec_eng = !amdgpu_sriov_vf(adev) && to_dev->gpu && in kfd_set_recommended_sdma_engines()
1284 adev->aid_mask && num_xgmi_nodes && gpu->kfd->num_nodes == 1 && in kfd_set_recommended_sdma_engines()
1290 int dst_socket_id = to_dev->gpu->adev->gmc.xgmi.physical_node_id; in kfd_set_recommended_sdma_engines()
1306 num_xgmi_sdma_engines && to_dev->gpu) ? xgmi_sdma_eng_id_mask : in kfd_set_recommended_sdma_engines()
1319 if (!dev || !dev->gpu) in kfd_fill_iolink_non_crat_info()
1322 /* GPU only creates direct links so apply flags setting to all */ in kfd_fill_iolink_non_crat_info()
1332 /* Include the CPU peer in GPU hive if connected over xGMI. */ in kfd_fill_iolink_non_crat_info()
1333 if (!peer_dev->gpu && in kfd_fill_iolink_non_crat_info()
1336 * If the GPU is not part of a GPU hive, use its pci in kfd_fill_iolink_non_crat_info()
1340 dev->node_props.hive_id = pci_dev_id(dev->gpu->adev->pdev); in kfd_fill_iolink_non_crat_info()
1414 if (cpu_dev->gpu) in kfd_create_indirect_link_prop()
1426 /* CPU <--> GPU */ in kfd_create_indirect_link_prop()
1446 /* CPU <--> CPU <--> GPU, GPU node*/ in kfd_create_indirect_link_prop()
1466 /* for small Bar, no CPU --> GPU in-direct links */ in kfd_create_indirect_link_prop()
1467 if (kfd_dev_is_large_bar(kdev->gpu)) { in kfd_create_indirect_link_prop()
1468 /* CPU <--> CPU <--> GPU, CPU node*/ in kfd_create_indirect_link_prop()
1497 kdev->gpu->adev, in kfd_add_peer_prop()
1498 peer->gpu->adev)) in kfd_add_peer_prop()
1574 if (WARN_ON(!new_dev->gpu)) in kfd_dev_create_p2p_links()
1590 if (!dev->gpu || !dev->gpu->adev || in kfd_dev_create_p2p_links()
1591 (dev->gpu->kfd->hive_id && in kfd_dev_create_p2p_links()
1592 dev->gpu->kfd->hive_id == new_dev->gpu->kfd->hive_id && in kfd_dev_create_p2p_links()
1593 amdgpu_xgmi_get_is_sharing_enabled(dev->gpu->adev, new_dev->gpu->adev))) in kfd_dev_create_p2p_links()
1778 /* kfd_fill_cache_non_crat_info - Fill GPU cache info using kfd_gpu_cache_info
1864 pr_debug("Added [%d] GPU cache entries\n", num_of_entries); in kfd_fill_cache_non_crat_info()
1867 static int kfd_topology_add_device_locked(struct kfd_node *gpu, in kfd_topology_add_device_locked() argument
1877 COMPUTE_UNIT_GPU, gpu, in kfd_topology_add_device_locked()
1880 dev_err(gpu->adev->dev, "Error creating VCRAT\n"); in kfd_topology_add_device_locked()
1891 dev_err(gpu->adev->dev, "Error parsing VCRAT\n"); in kfd_topology_add_device_locked()
1899 *dev = kfd_assign_gpu(gpu); in kfd_topology_add_device_locked()
1908 kfd_fill_cache_non_crat_info(*dev, gpu); in kfd_topology_add_device_locked()
1917 dev_err(gpu->adev->dev, "Failed to update GPU to sysfs topology. res=%d\n", in kfd_topology_add_device_locked()
1929 if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(11, 0, 0) && in kfd_topology_set_dbg_firmware_support()
1930 KFD_GC_VERSION(dev->gpu) < IP_VERSION(12, 0, 0)) { in kfd_topology_set_dbg_firmware_support()
1931 uint32_t mes_api_rev = (dev->gpu->adev->mes.sched_version & in kfd_topology_set_dbg_firmware_support()
1934 uint32_t mes_rev = dev->gpu->adev->mes.sched_version & in kfd_topology_set_dbg_firmware_support()
1945 switch (KFD_GC_VERSION(dev->gpu)) { in kfd_topology_set_dbg_firmware_support()
1947 firmware_supported = dev->gpu->kfd->mec_fw_version >= 459 + 32768; in kfd_topology_set_dbg_firmware_support()
1954 firmware_supported = dev->gpu->kfd->mec_fw_version >= 459; in kfd_topology_set_dbg_firmware_support()
1957 firmware_supported = dev->gpu->kfd->mec_fw_version >= 60; in kfd_topology_set_dbg_firmware_support()
1960 firmware_supported = dev->gpu->kfd->mec_fw_version >= 51; in kfd_topology_set_dbg_firmware_support()
1965 firmware_supported = dev->gpu->kfd->mec_fw_version >= 144; in kfd_topology_set_dbg_firmware_support()
1972 firmware_supported = dev->gpu->kfd->mec_fw_version >= 89; in kfd_topology_set_dbg_firmware_support()
1997 if (kfd_dbg_has_ttmps_always_setup(dev->gpu)) in kfd_topology_set_capabilities()
2000 if (KFD_GC_VERSION(dev->gpu) < IP_VERSION(10, 0, 0)) { in kfd_topology_set_capabilities()
2001 if (KFD_GC_VERSION(dev->gpu) == IP_VERSION(9, 4, 3) || in kfd_topology_set_capabilities()
2002 KFD_GC_VERSION(dev->gpu) == IP_VERSION(9, 4, 4)) in kfd_topology_set_capabilities()
2011 if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(9, 4, 2)) in kfd_topology_set_capabilities()
2015 if (!amdgpu_sriov_vf(dev->gpu->adev)) in kfd_topology_set_capabilities()
2022 if (KFD_GC_VERSION(dev->gpu) >= IP_VERSION(12, 0, 0)) in kfd_topology_set_capabilities()
2030 int kfd_topology_add_device(struct kfd_node *gpu) in kfd_topology_add_device() argument
2036 const char *asic_name = amdgpu_asic_name[gpu->adev->asic_type]; in kfd_topology_add_device()
2037 struct amdgpu_gfx_config *gfx_info = &gpu->adev->gfx.config; in kfd_topology_add_device()
2038 struct amdgpu_cu_info *cu_info = &gpu->adev->gfx.cu_info; in kfd_topology_add_device()
2040 if (gpu->xcp && !gpu->xcp->ddev) { in kfd_topology_add_device()
2041 dev_warn(gpu->adev->dev, in kfd_topology_add_device()
2042 "Won't add GPU to topology since it has no drm node assigned."); in kfd_topology_add_device()
2045 dev_dbg(gpu->adev->dev, "Adding new GPU to topology\n"); in kfd_topology_add_device()
2048 /* Check to see if this gpu device exists in the topology_device_list. in kfd_topology_add_device()
2049 * If so, assign the gpu to that device, in kfd_topology_add_device()
2050 * else create a Virtual CRAT for this gpu device and then parse that in kfd_topology_add_device()
2051 * CRAT to create a new topology device. Once created assign the gpu to in kfd_topology_add_device()
2055 dev = kfd_assign_gpu(gpu); in kfd_topology_add_device()
2057 res = kfd_topology_add_device_locked(gpu, &dev); in kfd_topology_add_device()
2062 gpu_id = kfd_generate_gpu_id(gpu); in kfd_topology_add_device()
2064 gpu->id = gpu_id; in kfd_topology_add_device()
2086 gpu->kfd->device_info.gfx_target_version; in kfd_topology_add_device()
2087 dev->node_props.vendor_id = gpu->adev->pdev->vendor; in kfd_topology_add_device()
2088 dev->node_props.device_id = gpu->adev->pdev->device; in kfd_topology_add_device()
2090 ((dev->gpu->adev->rev_id << HSA_CAP_ASIC_REVISION_SHIFT) & in kfd_topology_add_device()
2093 dev->node_props.location_id = pci_dev_id(gpu->adev->pdev); in kfd_topology_add_device()
2094 if (gpu->kfd->num_nodes > 1) in kfd_topology_add_device()
2095 dev->node_props.location_id |= dev->gpu->node_id; in kfd_topology_add_device()
2097 dev->node_props.domain = pci_domain_nr(gpu->adev->pdev->bus); in kfd_topology_add_device()
2099 amdgpu_amdkfd_get_max_engine_clock_in_mhz(dev->gpu->adev); in kfd_topology_add_device()
2103 if (gpu->xcp) in kfd_topology_add_device()
2104 dev->node_props.drm_render_minor = gpu->xcp->ddev->render->index; in kfd_topology_add_device()
2107 gpu->kfd->shared_resources.drm_render_minor; in kfd_topology_add_device()
2109 dev->node_props.hive_id = gpu->kfd->hive_id; in kfd_topology_add_device()
2110 dev->node_props.num_sdma_engines = kfd_get_num_sdma_engines(gpu); in kfd_topology_add_device()
2112 kfd_get_num_xgmi_sdma_engines(gpu); in kfd_topology_add_device()
2114 gpu->kfd->device_info.num_sdma_queues_per_engine - in kfd_topology_add_device()
2115 gpu->kfd->device_info.num_reserved_sdma_queues_per_engine; in kfd_topology_add_device()
2116 dev->node_props.num_gws = (dev->gpu->gws && in kfd_topology_add_device()
2117 dev->gpu->dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) ? in kfd_topology_add_device()
2118 dev->gpu->adev->gds.gws_size : 0; in kfd_topology_add_device()
2119 dev->node_props.num_cp_queues = get_cp_queues_num(dev->gpu->dqm); in kfd_topology_add_device()
2124 switch (dev->gpu->adev->asic_type) { in kfd_topology_add_device()
2144 if (KFD_GC_VERSION(dev->gpu) < IP_VERSION(9, 0, 1)) in kfd_topology_add_device()
2146 dev->gpu->adev->asic_type); in kfd_topology_add_device()
2162 if (dev->gpu->adev->asic_type == CHIP_CARRIZO) { in kfd_topology_add_device()
2170 ((dev->gpu->adev->ras_enabled & BIT(AMDGPU_RAS_BLOCK__GFX)) != 0) ? in kfd_topology_add_device()
2173 ((dev->gpu->adev->ras_enabled & BIT(AMDGPU_RAS_BLOCK__UMC)) != 0) ? in kfd_topology_add_device()
2176 if (KFD_GC_VERSION(dev->gpu) != IP_VERSION(9, 0, 1)) in kfd_topology_add_device()
2177 dev->node_props.capability |= (dev->gpu->adev->ras_enabled != 0) ? in kfd_topology_add_device()
2180 if (KFD_IS_SVM_API_SUPPORTED(dev->gpu->adev)) in kfd_topology_add_device()
2183 if (dev->gpu->adev->gmc.is_app_apu || in kfd_topology_add_device()
2184 dev->gpu->adev->gmc.xgmi.connected_to_cpu) in kfd_topology_add_device()
2258 int kfd_topology_remove_device(struct kfd_node *gpu) in kfd_topology_remove_device() argument
2268 if (dev->gpu == gpu) { in kfd_topology_remove_device()
2293 * topology. If GPU device is found @idx, then valid kfd_dev pointer is
2295 * Return - 0: On success (@kdev will be NULL for non GPU nodes)
2309 *kdev = top_dev->gpu; in kfd_topology_enum_kfd_devices()
2363 if (!dev->gpu) { in kfd_debugfs_hqds_by_device()
2368 seq_printf(m, "Node %u, gpu_id %x:\n", i++, dev->gpu->id); in kfd_debugfs_hqds_by_device()
2369 r = dqm_debugfs_hqds(m, dev->gpu->dqm); in kfd_debugfs_hqds_by_device()
2388 if (!dev->gpu) { in kfd_debugfs_rls_by_device()
2393 seq_printf(m, "Node %u, gpu_id %x:\n", i++, dev->gpu->id); in kfd_debugfs_rls_by_device()
2394 r = pm_debugfs_runlist(m, &dev->gpu->dqm->packet_mgr); in kfd_debugfs_rls_by_device()