diff options
| author | Michael Ellerman <mpe@ellerman.id.au> | 2014-07-23 03:31:34 -0400 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-07-28 00:11:30 -0400 |
| commit | 1feaa87c2fd7d610d154a3b7b739870030d2a7aa (patch) | |
| tree | d3f7965dceeb83abef8d1caf9549b9e6acdf368e /tools/testing | |
| parent | 6873def90016cc1cde03c38e10a80146d980b48a (diff) | |
selftests/powerpc: Add test of L3 bank handling
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'tools/testing')
| -rw-r--r-- | tools/testing/selftests/powerpc/pmu/Makefile | 2 | ||||
| -rw-r--r-- | tools/testing/selftests/powerpc/pmu/l3_bank_test.c | 48 |
2 files changed, 49 insertions, 1 deletions
diff --git a/tools/testing/selftests/powerpc/pmu/Makefile b/tools/testing/selftests/powerpc/pmu/Makefile index cd256277c24e..ebc0e7449cd9 100644 --- a/tools/testing/selftests/powerpc/pmu/Makefile +++ b/tools/testing/selftests/powerpc/pmu/Makefile | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | noarg: | 1 | noarg: |
| 2 | $(MAKE) -C ../ | 2 | $(MAKE) -C ../ |
| 3 | 3 | ||
| 4 | PROGS := count_instructions | 4 | PROGS := count_instructions l3_bank_test |
| 5 | EXTRA_SOURCES := ../harness.c event.c | 5 | EXTRA_SOURCES := ../harness.c event.c |
| 6 | 6 | ||
| 7 | SUB_TARGETS = ebb | 7 | SUB_TARGETS = ebb |
diff --git a/tools/testing/selftests/powerpc/pmu/l3_bank_test.c b/tools/testing/selftests/powerpc/pmu/l3_bank_test.c new file mode 100644 index 000000000000..77472f31441e --- /dev/null +++ b/tools/testing/selftests/powerpc/pmu/l3_bank_test.c | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2014, Michael Ellerman, IBM Corp. | ||
| 3 | * Licensed under GPLv2. | ||
| 4 | */ | ||
| 5 | |||
| 6 | #include <stdio.h> | ||
| 7 | #include <stdlib.h> | ||
| 8 | |||
| 9 | #include "event.h" | ||
| 10 | #include "utils.h" | ||
| 11 | |||
| 12 | #define MALLOC_SIZE (0x10000 * 10) /* Ought to be enough .. */ | ||
| 13 | |||
| 14 | /* | ||
| 15 | * Tests that the L3 bank handling is correct. We fixed it in commit e9aaac1. | ||
| 16 | */ | ||
| 17 | static int l3_bank_test(void) | ||
| 18 | { | ||
| 19 | struct event event; | ||
| 20 | char *p; | ||
| 21 | int i; | ||
| 22 | |||
| 23 | p = malloc(MALLOC_SIZE); | ||
| 24 | FAIL_IF(!p); | ||
| 25 | |||
| 26 | event_init(&event, 0x84918F); | ||
| 27 | |||
| 28 | FAIL_IF(event_open(&event)); | ||
| 29 | |||
| 30 | for (i = 0; i < MALLOC_SIZE; i += 0x10000) | ||
| 31 | p[i] = i; | ||
| 32 | |||
| 33 | event_read(&event); | ||
| 34 | event_report(&event); | ||
| 35 | |||
| 36 | FAIL_IF(event.result.running == 0); | ||
| 37 | FAIL_IF(event.result.enabled == 0); | ||
| 38 | |||
| 39 | event_close(&event); | ||
| 40 | free(p); | ||
| 41 | |||
| 42 | return 0; | ||
| 43 | } | ||
| 44 | |||
| 45 | int main(void) | ||
| 46 | { | ||
| 47 | return test_harness(l3_bank_test, "l3_bank_test"); | ||
| 48 | } | ||
