@@ -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