1 | // SPDX-License-Identifier: GPL-2.0-only |
---|---|
2 | /* |
3 | * Copyright 2014, Michael Ellerman, IBM Corp. |
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 | // The L3 bank logic is only used on Power8 or later |
24 | SKIP_IF(!have_hwcap2(PPC_FEATURE2_ARCH_2_07)); |
25 | |
26 | p = malloc(MALLOC_SIZE); |
27 | FAIL_IF(!p); |
28 | |
29 | event_init(e: &event, config: 0x84918F); |
30 | |
31 | FAIL_IF(event_open(e: &event)); |
32 | |
33 | for (i = 0; i < MALLOC_SIZE; i += 0x10000) |
34 | p[i] = i; |
35 | |
36 | event_read(e: &event); |
37 | event_report(e: &event); |
38 | |
39 | FAIL_IF(event.result.running == 0); |
40 | FAIL_IF(event.result.enabled == 0); |
41 | |
42 | event_close(e: &event); |
43 | free(p); |
44 | |
45 | return 0; |
46 | } |
47 | |
48 | int main(void) |
49 | { |
50 | return test_harness(l3_bank_test, "l3_bank_test"); |
51 | } |
52 |