Skip to content

Commit 8cc0206

Browse files
authored
Fix MaliProfiler::init() exception: "Failed settings flags ioctl." on Mali-G710 (#58)
1 parent fe9a05b commit 8cc0206

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

vendor/arm/mali/mali_profiler.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,43 @@ void MaliProfiler::init()
478478
{
479479
throw std::runtime_error("Failed to open /dev/mali0.");
480480
}
481+
482+
{
483+
// Try matching Job Manager version IOCTL
484+
bool checked_version = true;
485+
mali_userspace::kbase_uk_hwcnt_reader_version_check_args version_check_args;
486+
version_check_args.header.id = mali_userspace::UKP_FUNC_ID_CHECK_VERSION_JM;
487+
version_check_args.major = 10;
488+
version_check_args.minor = 2;
489+
490+
if (mali_userspace::mali_ioctl(fd_, version_check_args) != 0)
491+
{
492+
mali_userspace::kbase_ioctl_version_check _version_check_args = {0, 0};
493+
if (ioctl(fd_, KBASE_IOCTL_VERSION_CHECK_JM, &_version_check_args) < 0)
494+
{
495+
checked_version = false;
496+
}
497+
}
498+
499+
// Try matching CSF version IOCTL
500+
if (!checked_version)
501+
{
502+
mali_userspace::kbase_uk_hwcnt_reader_version_check_args version_check_args;
503+
version_check_args.header.id = mali_userspace::UKP_FUNC_ID_CHECK_VERSION_CSF;
504+
version_check_args.major = 1;
505+
version_check_args.minor = 4;
506+
507+
if (mali_userspace::mali_ioctl(fd_, version_check_args) != 0)
508+
{
509+
mali_userspace::kbase_ioctl_version_check _version_check_args = {0, 0};
510+
if (ioctl(fd_, KBASE_IOCTL_VERSION_CHECK_CSF, &_version_check_args) < 0)
511+
{
512+
close(fd_);
513+
throw std::runtime_error("Failed to check version.");
514+
}
515+
}
516+
}
517+
}
481518

482519
{
483520
mali_userspace::kbase_uk_hwcnt_reader_set_flags flags; // NOLINT

0 commit comments

Comments
 (0)