Lines Matching refs:handle

31 typedef int bank_handler_t(struct aca_handle *handle, struct aca_bank *bank, enum aca_smu_type type…
202 static bool aca_bank_is_valid(struct aca_handle *handle, struct aca_bank *bank, enum aca_smu_type t… in aca_bank_is_valid() argument
204 const struct aca_bank_ops *bank_ops = handle->bank_ops; in aca_bank_is_valid()
208 return handle->hwip == ACA_HWIP_TYPE_UMC; in aca_bank_is_valid()
210 if (!aca_bank_hwip_is_matched(bank, handle->hwip)) in aca_bank_is_valid()
216 return bank_ops->aca_bank_is_valid(handle, bank, type, handle->data); in aca_bank_is_valid()
284 int aca_error_cache_log_bank_error(struct aca_handle *handle, struct aca_bank_info *info, in aca_error_cache_log_bank_error() argument
287 struct aca_error_cache *error_cache = &handle->error_cache; in aca_error_cache_log_bank_error()
291 if (!handle || !info || type >= ACA_ERROR_TYPE_COUNT) in aca_error_cache_log_bank_error()
307 static int aca_bank_parser(struct aca_handle *handle, struct aca_bank *bank, enum aca_smu_type type) in aca_bank_parser() argument
309 const struct aca_bank_ops *bank_ops = handle->bank_ops; in aca_bank_parser()
317 return bank_ops->aca_bank_parser(handle, bank, type, in aca_bank_parser()
318 handle->data); in aca_bank_parser()
321 static int handler_aca_log_bank_error(struct aca_handle *handle, struct aca_bank *bank, in handler_aca_log_bank_error() argument
326 ret = aca_bank_parser(handle, bank, type); in handler_aca_log_bank_error()
336 struct aca_handle *handle; in aca_dispatch_bank() local
342 list_for_each_entry(handle, &mgr->list, node) { in aca_dispatch_bank()
343 if (!aca_bank_is_valid(handle, bank, type)) in aca_dispatch_bank()
346 ret = handler(handle, bank, type, data); in aca_dispatch_bank()
528 static int aca_log_aca_error(struct aca_handle *handle, enum aca_error_type type, struct ras_err_da… in aca_log_aca_error() argument
530 struct aca_error_cache *error_cache = &handle->error_cache; in aca_log_aca_error()
550 static int __aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *handle, enum aca_err… in __aca_get_error_data() argument
575 aca_log_aca_error(handle, ACA_ERROR_TYPE_DEFERRED, err_data); in __aca_get_error_data()
577 return aca_log_aca_error(handle, type, err_data); in __aca_get_error_data()
580 static bool aca_handle_is_valid(struct aca_handle *handle) in aca_handle_is_valid() argument
582 if (!handle->mask || !list_empty(&handle->node)) in aca_handle_is_valid()
588 int amdgpu_aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *handle, in amdgpu_aca_get_error_data() argument
592 if (!handle || !err_data) in amdgpu_aca_get_error_data()
595 if (aca_handle_is_valid(handle)) in amdgpu_aca_get_error_data()
598 if ((type < 0) || (!(BIT(type) & handle->mask))) in amdgpu_aca_get_error_data()
601 return __aca_get_error_data(adev, handle, type, err_data, qctx); in amdgpu_aca_get_error_data()
612 static void aca_init_error_cache(struct aca_handle *handle) in aca_init_error_cache() argument
614 struct aca_error_cache *error_cache = &handle->error_cache; in aca_init_error_cache()
636 static void aca_fini_error_cache(struct aca_handle *handle) in aca_fini_error_cache() argument
638 struct aca_error_cache *error_cache = &handle->error_cache; in aca_fini_error_cache()
645 …d_aca_handle(struct amdgpu_device *adev, struct aca_handle_manager *mgr, struct aca_handle *handle, in add_aca_handle() argument
648 memset(handle, 0, sizeof(*handle)); in add_aca_handle()
650 handle->adev = adev; in add_aca_handle()
651 handle->mgr = mgr; in add_aca_handle()
652 handle->name = name; in add_aca_handle()
653 handle->hwip = ras_info->hwip; in add_aca_handle()
654 handle->mask = ras_info->mask; in add_aca_handle()
655 handle->bank_ops = ras_info->bank_ops; in add_aca_handle()
656 handle->data = data; in add_aca_handle()
657 aca_init_error_cache(handle); in add_aca_handle()
659 INIT_LIST_HEAD(&handle->node); in add_aca_handle()
660 list_add_tail(&handle->node, &mgr->list); in add_aca_handle()
669 struct aca_handle *handle = container_of(attr, struct aca_handle, aca_attr); in aca_sysfs_read() local
673 return amdgpu_ras_aca_sysfs_read(dev, attr, handle, buf, handle->data); in aca_sysfs_read()
676 static int add_aca_sysfs(struct amdgpu_device *adev, struct aca_handle *handle) in add_aca_sysfs() argument
678 struct device_attribute *aca_attr = &handle->aca_attr; in add_aca_sysfs()
680 snprintf(handle->attr_name, sizeof(handle->attr_name) - 1, "aca_%s", handle->name); in add_aca_sysfs()
682 aca_attr->attr.name = handle->attr_name; in add_aca_sysfs()
691 int amdgpu_aca_add_handle(struct amdgpu_device *adev, struct aca_handle *handle, in amdgpu_aca_add_handle() argument
700 ret = add_aca_handle(adev, &aca->mgr, handle, name, ras_info, data); in amdgpu_aca_add_handle()
704 return add_aca_sysfs(adev, handle); in amdgpu_aca_add_handle()
707 static void remove_aca_handle(struct aca_handle *handle) in remove_aca_handle() argument
709 struct aca_handle_manager *mgr = handle->mgr; in remove_aca_handle()
711 aca_fini_error_cache(handle); in remove_aca_handle()
712 list_del(&handle->node); in remove_aca_handle()
716 static void remove_aca_sysfs(struct aca_handle *handle) in remove_aca_sysfs() argument
718 struct amdgpu_device *adev = handle->adev; in remove_aca_sysfs()
719 struct device_attribute *aca_attr = &handle->aca_attr; in remove_aca_sysfs()
727 void amdgpu_aca_remove_handle(struct aca_handle *handle) in amdgpu_aca_remove_handle() argument
729 if (!handle || list_empty(&handle->node)) in amdgpu_aca_remove_handle()
732 remove_aca_sysfs(handle); in amdgpu_aca_remove_handle()
733 remove_aca_handle(handle); in amdgpu_aca_remove_handle()
746 struct aca_handle *handle, *tmp; in aca_manager_fini() local
751 list_for_each_entry_safe(handle, tmp, &mgr->list, node) in aca_manager_fini()
752 amdgpu_aca_remove_handle(handle); in aca_manager_fini()
903 static int handler_aca_bank_dump(struct aca_handle *handle, struct aca_bank *bank, in handler_aca_bank_dump() argument
910 return handler_aca_log_bank_error(handle, bank, type, NULL); in handler_aca_bank_dump()