Lines Matching refs:handle

31 typedef int bank_handler_t(struct aca_handle *handle, struct aca_bank *bank, enum aca_smu_type type…
212 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
214 const struct aca_bank_ops *bank_ops = handle->bank_ops; in aca_bank_is_valid()
218 return handle->hwip == ACA_HWIP_TYPE_UMC; in aca_bank_is_valid()
220 if (!aca_bank_hwip_is_matched(bank, handle->hwip)) in aca_bank_is_valid()
226 return bank_ops->aca_bank_is_valid(handle, bank, type, handle->data); in aca_bank_is_valid()
295 int aca_error_cache_log_bank_error(struct aca_handle *handle, struct aca_bank_info *info, in aca_error_cache_log_bank_error() argument
298 struct aca_error_cache *error_cache = &handle->error_cache; in aca_error_cache_log_bank_error()
302 if (!handle || !info || type >= ACA_ERROR_TYPE_COUNT) in aca_error_cache_log_bank_error()
318 static int aca_bank_parser(struct aca_handle *handle, struct aca_bank *bank, enum aca_smu_type type) in aca_bank_parser() argument
320 const struct aca_bank_ops *bank_ops = handle->bank_ops; in aca_bank_parser()
328 return bank_ops->aca_bank_parser(handle, bank, type, in aca_bank_parser()
329 handle->data); in aca_bank_parser()
332 static int handler_aca_log_bank_error(struct aca_handle *handle, struct aca_bank *bank, in handler_aca_log_bank_error() argument
337 ret = aca_bank_parser(handle, bank, type); in handler_aca_log_bank_error()
347 struct aca_handle *handle; in aca_dispatch_bank() local
353 list_for_each_entry(handle, &mgr->list, node) { in aca_dispatch_bank()
354 if (!aca_bank_is_valid(handle, bank, type)) in aca_dispatch_bank()
357 ret = handler(handle, bank, type, data); in aca_dispatch_bank()
539 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
541 struct aca_error_cache *error_cache = &handle->error_cache; in aca_log_aca_error()
561 static int __aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *handle, enum aca_err… in __aca_get_error_data() argument
586 aca_log_aca_error(handle, ACA_ERROR_TYPE_DEFERRED, err_data); in __aca_get_error_data()
588 return aca_log_aca_error(handle, type, err_data); in __aca_get_error_data()
591 static bool aca_handle_is_valid(struct aca_handle *handle) in aca_handle_is_valid() argument
593 if (!handle->mask || !list_empty(&handle->node)) in aca_handle_is_valid()
599 int amdgpu_aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *handle, in amdgpu_aca_get_error_data() argument
603 if (!handle || !err_data) in amdgpu_aca_get_error_data()
606 if (aca_handle_is_valid(handle)) in amdgpu_aca_get_error_data()
609 if ((type < 0) || (!(BIT(type) & handle->mask))) in amdgpu_aca_get_error_data()
612 return __aca_get_error_data(adev, handle, type, err_data, qctx); in amdgpu_aca_get_error_data()
623 static void aca_init_error_cache(struct aca_handle *handle) in aca_init_error_cache() argument
625 struct aca_error_cache *error_cache = &handle->error_cache; in aca_init_error_cache()
648 static void aca_fini_error_cache(struct aca_handle *handle) in aca_fini_error_cache() argument
650 struct aca_error_cache *error_cache = &handle->error_cache; in aca_fini_error_cache()
657 …d_aca_handle(struct amdgpu_device *adev, struct aca_handle_manager *mgr, struct aca_handle *handle, in add_aca_handle() argument
660 memset(handle, 0, sizeof(*handle)); in add_aca_handle()
662 handle->adev = adev; in add_aca_handle()
663 handle->mgr = mgr; in add_aca_handle()
664 handle->name = name; in add_aca_handle()
665 handle->hwip = ras_info->hwip; in add_aca_handle()
666 handle->mask = ras_info->mask; in add_aca_handle()
667 handle->bank_ops = ras_info->bank_ops; in add_aca_handle()
668 handle->data = data; in add_aca_handle()
669 aca_init_error_cache(handle); in add_aca_handle()
671 INIT_LIST_HEAD(&handle->node); in add_aca_handle()
672 list_add_tail(&handle->node, &mgr->list); in add_aca_handle()
681 struct aca_handle *handle = container_of(attr, struct aca_handle, aca_attr); in aca_sysfs_read() local
685 return amdgpu_ras_aca_sysfs_read(dev, attr, handle, buf, handle->data); in aca_sysfs_read()
688 static int add_aca_sysfs(struct amdgpu_device *adev, struct aca_handle *handle) in add_aca_sysfs() argument
690 struct device_attribute *aca_attr = &handle->aca_attr; in add_aca_sysfs()
692 snprintf(handle->attr_name, sizeof(handle->attr_name) - 1, "aca_%s", handle->name); in add_aca_sysfs()
694 aca_attr->attr.name = handle->attr_name; in add_aca_sysfs()
703 int amdgpu_aca_add_handle(struct amdgpu_device *adev, struct aca_handle *handle, in amdgpu_aca_add_handle() argument
712 ret = add_aca_handle(adev, &aca->mgr, handle, name, ras_info, data); in amdgpu_aca_add_handle()
716 return add_aca_sysfs(adev, handle); in amdgpu_aca_add_handle()
719 static void remove_aca_handle(struct aca_handle *handle) in remove_aca_handle() argument
721 struct aca_handle_manager *mgr = handle->mgr; in remove_aca_handle()
723 aca_fini_error_cache(handle); in remove_aca_handle()
724 list_del(&handle->node); in remove_aca_handle()
728 static void remove_aca_sysfs(struct aca_handle *handle) in remove_aca_sysfs() argument
730 struct amdgpu_device *adev = handle->adev; in remove_aca_sysfs()
731 struct device_attribute *aca_attr = &handle->aca_attr; in remove_aca_sysfs()
739 void amdgpu_aca_remove_handle(struct aca_handle *handle) in amdgpu_aca_remove_handle() argument
741 if (!handle || list_empty(&handle->node)) in amdgpu_aca_remove_handle()
744 remove_aca_sysfs(handle); in amdgpu_aca_remove_handle()
745 remove_aca_handle(handle); in amdgpu_aca_remove_handle()
758 struct aca_handle *handle, *tmp; in aca_manager_fini() local
763 list_for_each_entry_safe(handle, tmp, &mgr->list, node) in aca_manager_fini()
764 amdgpu_aca_remove_handle(handle); in aca_manager_fini()
915 static int handler_aca_bank_dump(struct aca_handle *handle, struct aca_bank *bank, in handler_aca_bank_dump() argument
922 return handler_aca_log_bank_error(handle, bank, type, NULL); in handler_aca_bank_dump()