Home | History | Annotate | Download | only in pmu
      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 }
     49