cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

l3_bank_test.c (903B)


      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 */
     17static 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(&event, 0x84918F);
     30
     31	FAIL_IF(event_open(&event));
     32
     33	for (i = 0; i < MALLOC_SIZE; i += 0x10000)
     34		p[i] = i;
     35
     36	event_read(&event);
     37	event_report(&event);
     38
     39	FAIL_IF(event.result.running == 0);
     40	FAIL_IF(event.result.enabled == 0);
     41
     42	event_close(&event);
     43	free(p);
     44
     45	return 0;
     46}
     47
     48int main(void)
     49{
     50	return test_harness(l3_bank_test, "l3_bank_test");
     51}