Skip to content

Commit 1568bd5

Browse files
authored
Add support for CSF GPU versioning ioctl (#55)
1 parent 129348a commit 1568bd5

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

vendor/arm/mali/hwc.hpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2017-2019 ARM Limited.
2+
* Copyright (c) 2017-2022 ARM Limited.
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -307,7 +307,8 @@ struct kbase_ioctl_hwcnt_reader_setup
307307

308308
#define KBASE_IOCTL_TYPE 0x80
309309
#define KBASE_IOCTL_GET_GPUPROPS MALI_IOW(KBASE_IOCTL_TYPE, 3, struct mali_userspace::kbase_ioctl_get_gpuprops)
310-
#define KBASE_IOCTL_VERSION_CHECK _IOWR(KBASE_IOCTL_TYPE, 0, struct mali_userspace::kbase_ioctl_version_check)
310+
#define KBASE_IOCTL_VERSION_CHECK_JM _IOWR(KBASE_IOCTL_TYPE, 0, struct mali_userspace::kbase_ioctl_version_check)
311+
#define KBASE_IOCTL_VERSION_CHECK_CSF _IOWR(KBASE_IOCTL_TYPE, 52, struct mali_userspace::kbase_ioctl_version_check)
311312
#define KBASE_IOCTL_SET_FLAGS _IOW(KBASE_IOCTL_TYPE, 1, struct mali_userspace::kbase_ioctl_set_flags)
312313
#define KBASE_IOCTL_HWCNT_READER_SETUP _IOW(KBASE_IOCTL_TYPE, 8, struct mali_userspace::kbase_ioctl_hwcnt_reader_setup)
313314

@@ -348,7 +349,9 @@ struct uku_version_check_args
348349

349350
enum
350351
{
351-
UKP_FUNC_ID_CHECK_VERSION = 0,
352+
UKP_FUNC_ID_CHECK_VERSION_JM = 0,
353+
UKP_FUNC_ID_CHECK_VERSION_CSF = 52,
354+
352355
/* Related to mali0 ioctl interface */
353356
LINUX_UK_BASE_MAGIC = 0x80,
354357
BASE_CONTEXT_CREATE_KERNEL_FLAGS = 0x2,

vendor/arm/mali/mali_profiler.cpp

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,38 @@ MaliHWInfo get_mali_hw_info(const char *path)
5757
}
5858

5959
{
60+
// Try matching Job Manager version IOCTL
61+
bool checked_version = true;
6062
mali_userspace::kbase_uk_hwcnt_reader_version_check_args version_check_args;
61-
version_check_args.header.id = mali_userspace::UKP_FUNC_ID_CHECK_VERSION; // NOLINT
63+
version_check_args.header.id = mali_userspace::UKP_FUNC_ID_CHECK_VERSION_JM;
6264
version_check_args.major = 10;
6365
version_check_args.minor = 2;
6466

6567
if (mali_userspace::mali_ioctl(fd, version_check_args) != 0)
6668
{
6769
mali_userspace::kbase_ioctl_version_check _version_check_args = {0, 0};
68-
if (ioctl(fd, KBASE_IOCTL_VERSION_CHECK, &_version_check_args) < 0)
70+
if (ioctl(fd, KBASE_IOCTL_VERSION_CHECK_JM, &_version_check_args) < 0)
6971
{
70-
close(fd);
71-
throw std::runtime_error("Failed to check version.");
72+
checked_version = false;
73+
}
74+
}
75+
76+
// Try matching CSF version IOCTL
77+
if (!checked_version)
78+
{
79+
mali_userspace::kbase_uk_hwcnt_reader_version_check_args version_check_args;
80+
version_check_args.header.id = mali_userspace::UKP_FUNC_ID_CHECK_VERSION_CSF;
81+
version_check_args.major = 1;
82+
version_check_args.minor = 4;
83+
84+
if (mali_userspace::mali_ioctl(fd, version_check_args) != 0)
85+
{
86+
mali_userspace::kbase_ioctl_version_check _version_check_args = {0, 0};
87+
if (ioctl(fd, KBASE_IOCTL_VERSION_CHECK_CSF, &_version_check_args) < 0)
88+
{
89+
close(fd);
90+
throw std::runtime_error("Failed to check version.");
91+
}
7292
}
7393
}
7494
}
@@ -459,24 +479,6 @@ void MaliProfiler::init()
459479
throw std::runtime_error("Failed to open /dev/mali0.");
460480
}
461481

462-
{
463-
mali_userspace::kbase_uk_hwcnt_reader_version_check_args check; // NOLINT
464-
memset(&check, 0, sizeof(check));
465-
466-
if (mali_userspace::mali_ioctl(fd_, check) != 0)
467-
{
468-
mali_userspace::kbase_ioctl_version_check _check = {0, 0};
469-
if (ioctl(fd_, KBASE_IOCTL_VERSION_CHECK, &_check) < 0)
470-
{
471-
throw std::runtime_error("Failed to get ABI version.");
472-
}
473-
}
474-
else if (check.major < 10)
475-
{
476-
throw std::runtime_error("Unsupported ABI version 10.");
477-
}
478-
}
479-
480482
{
481483
mali_userspace::kbase_uk_hwcnt_reader_set_flags flags; // NOLINT
482484
memset(&flags, 0, sizeof(flags));

0 commit comments

Comments
 (0)