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

librapl.c (607B)


      1// SPDX-License-Identifier: MIT
      2/*
      3 * Copyright © 2020 Intel Corporation
      4 */
      5
      6#include <asm/msr.h>
      7
      8#include "i915_drv.h"
      9#include "librapl.h"
     10
     11bool librapl_supported(const struct drm_i915_private *i915)
     12{
     13	/* Discrete cards require hwmon integration */
     14	if (IS_DGFX(i915))
     15		return false;
     16
     17	return librapl_energy_uJ();
     18}
     19
     20u64 librapl_energy_uJ(void)
     21{
     22	unsigned long long power;
     23	u32 units;
     24
     25	if (rdmsrl_safe(MSR_RAPL_POWER_UNIT, &power))
     26		return 0;
     27
     28	units = (power & 0x1f00) >> 8;
     29
     30	if (rdmsrl_safe(MSR_PP1_ENERGY_STATUS, &power))
     31		return 0;
     32
     33	return (1000000 * power) >> units; /* convert to uJ */
     34}