linux/tools/testing/selftests/powerpc/pmu/l3_bank_test.c
<<
>>
Prefs
   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}
  52