summaryrefslogtreecommitdiff
path: root/ext/nomali/tests
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2016-01-29 12:14:21 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2016-01-29 12:14:21 +0000
commitb99fea78a6b0db9dcf7133c302991b8a7a8f8538 (patch)
treed92f89fbd5a03e9ce64ab74009687c1b8ec4f441 /ext/nomali/tests
parent1285d639eba6b95e31fb2b4aacae524d04ddf981 (diff)
downloadgem5-b99fea78a6b0db9dcf7133c302991b8a7a8f8538.tar.xz
ext: Update NoMali to external rev f08e0a5
Update NoMali from external revision 9adf9d6 to f08e0a5 and bring in the following changes: f08e0a5 Add support for tracking address space state f11099e Fix job slot register handling when running new jobs b28c98e api: Add a reset callback 29ac4c3 tests: Update gitignore to cover all future test cases 1c6b893 Propagate reset calls to all job slots 8f8ec15 Remove redundant reg vector in MMU 85d90d2 tests: Fix incorrect extern declaration
Diffstat (limited to 'ext/nomali/tests')
-rw-r--r--ext/nomali/tests/Rules.mk2
-rw-r--r--ext/nomali/tests/nomali_test_helpers.h16
-rw-r--r--ext/nomali/tests/nomali_test_ints.c2
-rw-r--r--ext/nomali/tests/nomali_test_mmu.c65
-rw-r--r--ext/nomali/tests/nomali_test_reset.c68
-rw-r--r--ext/nomali/tests/test_helpers.h2
6 files changed, 151 insertions, 4 deletions
diff --git a/ext/nomali/tests/Rules.mk b/ext/nomali/tests/Rules.mk
index 492a326f2..d49dc5a15 100644
--- a/ext/nomali/tests/Rules.mk
+++ b/ext/nomali/tests/Rules.mk
@@ -27,6 +27,8 @@ HELPER_OBJS := $(addprefix $(d)/, \
TESTS := $(addprefix $(d)/nomali_, \
test0 \
test_ints \
+ test_reset \
+ test_mmu \
)
OBJS := $(HELPER_OBJS) $(addsuffix .o, $(TESTS))
diff --git a/ext/nomali/tests/nomali_test_helpers.h b/ext/nomali/tests/nomali_test_helpers.h
index 9de491a2a..82d833830 100644
--- a/ext/nomali/tests/nomali_test_helpers.h
+++ b/ext/nomali/tests/nomali_test_helpers.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2015 ARM Limited
+ * Copyright (c) 2014-2016 ARM Limited
* All rights reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,6 +25,7 @@
#define E_NOMALI_BAIL(c) \
do { \
+ nomali_error_t error; \
if ((error = (c)) != NOMALI_E_OK) { \
test_bail(# c " failed: %s (%i)", \
nomali_errstr(error), error); \
@@ -42,5 +43,18 @@
} \
} while (0)
+#define NOMALI_TEST_REG(t, handle, reg, test) \
+ do { \
+ uint32_t value; \
+ E_NOMALI_BAIL( \
+ nomali_reg_read(handle, &value, (reg))); \
+ if (!(test)) { \
+ test_fail(t); \
+ } else { \
+ test_ok(t); \
+ } \
+ } while (0)
+
+
#endif /* _TESTS_NOMALI_TEST_HELPERS_H */
diff --git a/ext/nomali/tests/nomali_test_ints.c b/ext/nomali/tests/nomali_test_ints.c
index 54a7083ab..e337687f5 100644
--- a/ext/nomali/tests/nomali_test_ints.c
+++ b/ext/nomali/tests/nomali_test_ints.c
@@ -33,7 +33,6 @@ on_int(nomali_handle_t h, void *usr, nomali_int_t intno, int set)
static void
test_gpu_int(nomali_handle_t h)
{
- nomali_error_t error = NOMALI_E_OK;
int int_triggered = 0;
nomali_callback_t int_callback = {
.type = NOMALI_CALLBACK_INT,
@@ -115,7 +114,6 @@ main(int argc, char **argv)
};
nomali_handle_t h;
- nomali_error_t error = NOMALI_E_OK;
E_NOMALI_BAIL(nomali_create(&h, &cfg));
diff --git a/ext/nomali/tests/nomali_test_mmu.c b/ext/nomali/tests/nomali_test_mmu.c
new file mode 100644
index 000000000..ae8095d7a
--- /dev/null
+++ b/ext/nomali/tests/nomali_test_mmu.c
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016 ARM Limited
+ * All rights reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Authors: Andreas Sandberg
+ */
+
+#include <libnomali/nomali.h>
+#include <inttypes.h>
+
+#include "nomali_test_helpers.h"
+#include "../lib/mali_midg_regmap.h"
+
+#define TEST_ASn_STATUS(n) \
+ NOMALI_TEST_REG("AS" # n "_STATUS", h, MMU_AS_REG(n, ASn_STATUS), \
+ value == 0)
+
+int
+main(int argc, char **argv)
+{
+ const nomali_config_t cfg = {
+ .type = NOMALI_GPU_T60X,
+ .ver_maj = 0,
+ .ver_min = 1,
+ .ver_status = 0,
+ };
+ nomali_handle_t h;
+ uint32_t value;
+
+ E_NOMALI_BAIL(nomali_create(&h, &cfg));
+
+ TEST_ASn_STATUS(0);
+ TEST_ASn_STATUS(1);
+ TEST_ASn_STATUS(2);
+ TEST_ASn_STATUS(3);
+ TEST_ASn_STATUS(4);
+ TEST_ASn_STATUS(5);
+ TEST_ASn_STATUS(6);
+ TEST_ASn_STATUS(7);
+ TEST_ASn_STATUS(8);
+ TEST_ASn_STATUS(9);
+ TEST_ASn_STATUS(10);
+ TEST_ASn_STATUS(11);
+ TEST_ASn_STATUS(12);
+ TEST_ASn_STATUS(13);
+ TEST_ASn_STATUS(14);
+ TEST_ASn_STATUS(15);
+
+ E_NOMALI_BAIL(nomali_destroy(h));
+
+
+ return 0;
+}
diff --git a/ext/nomali/tests/nomali_test_reset.c b/ext/nomali/tests/nomali_test_reset.c
new file mode 100644
index 000000000..c98267d7d
--- /dev/null
+++ b/ext/nomali/tests/nomali_test_reset.c
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2016 ARM Limited
+ * All rights reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Authors: Andreas Sandberg
+ */
+
+#include <libnomali/nomali.h>
+#include <inttypes.h>
+
+#include "nomali_test_helpers.h"
+#include "../lib/mali_midg_regmap.h"
+
+#define TEST_ASn_STATUS(n) \
+ E_NOMALI_TEST_REG("AS" # n "_STATUS", h, MMU_AS_REG(n, ASn_STATUS), \
+ value == 0)
+
+static void
+on_reset(nomali_handle_t h, void *usr)
+{
+ E_NOMALI_BAIL(nomali_reg_write_raw(h, 0x0000, 0xC0FFEE));
+}
+
+int
+main(int argc, char **argv)
+{
+ const nomali_config_t cfg = {
+ .type = NOMALI_GPU_T60X,
+ .ver_maj = 0,
+ .ver_min = 1,
+ .ver_status = 0,
+ };
+
+ nomali_callback_t reset_callback = {
+ .type = NOMALI_CALLBACK_RESET,
+ .usr = NULL,
+ .func.reset = &on_reset,
+ };
+
+ nomali_handle_t h;
+ nomali_error_t error;
+
+ E_NOMALI_BAIL(nomali_create(&h, &cfg));
+
+ NOMALI_TEST_REG("gpu_id", h, 0x0000, value == 0x69560010);
+
+ E_NOMALI_TEST("reg_callback", nomali_set_callback(h, &reset_callback));
+ E_NOMALI_BAIL(nomali_reset(h));
+
+ NOMALI_TEST_REG("custom_gpu_id", h, 0x0000, value == 0xC0FFEE);
+
+ E_NOMALI_BAIL(nomali_destroy(h));
+
+
+ return 0;
+}
diff --git a/ext/nomali/tests/test_helpers.h b/ext/nomali/tests/test_helpers.h
index 68bea288b..9959d7109 100644
--- a/ext/nomali/tests/test_helpers.h
+++ b/ext/nomali/tests/test_helpers.h
@@ -23,7 +23,7 @@
#include <stdio.h>
#ifdef __cplusplus
-#extern "C" {
+extern "C" {
#endif
extern unsigned test_current;