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 	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 }
49