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

processor_thermal_device.h (3021B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * processor_thermal_device.h
      4 * Copyright (c) 2020, Intel Corporation.
      5 */
      6
      7#ifndef __PROCESSOR_THERMAL_DEVICE_H__
      8#define __PROCESSOR_THERMAL_DEVICE_H__
      9
     10#include <linux/intel_rapl.h>
     11
     12#define PCI_DEVICE_ID_INTEL_ADL_THERMAL	0x461d
     13#define PCI_DEVICE_ID_INTEL_BDW_THERMAL	0x1603
     14#define PCI_DEVICE_ID_INTEL_BSW_THERMAL	0x22DC
     15
     16#define PCI_DEVICE_ID_INTEL_BXT0_THERMAL	0x0A8C
     17#define PCI_DEVICE_ID_INTEL_BXT1_THERMAL	0x1A8C
     18#define PCI_DEVICE_ID_INTEL_BXTX_THERMAL	0x4A8C
     19#define PCI_DEVICE_ID_INTEL_BXTP_THERMAL	0x5A8C
     20
     21#define PCI_DEVICE_ID_INTEL_CNL_THERMAL	0x5a03
     22#define PCI_DEVICE_ID_INTEL_CFL_THERMAL	0x3E83
     23#define PCI_DEVICE_ID_INTEL_GLK_THERMAL	0x318C
     24#define PCI_DEVICE_ID_INTEL_HSB_THERMAL	0x0A03
     25#define PCI_DEVICE_ID_INTEL_ICL_THERMAL	0x8a03
     26#define PCI_DEVICE_ID_INTEL_JSL_THERMAL	0x4E03
     27#define PCI_DEVICE_ID_INTEL_MTLP_THERMAL	0x7D03
     28#define PCI_DEVICE_ID_INTEL_RPL_THERMAL	0xA71D
     29#define PCI_DEVICE_ID_INTEL_SKL_THERMAL	0x1903
     30#define PCI_DEVICE_ID_INTEL_TGL_THERMAL	0x9A03
     31
     32struct power_config {
     33	u32	index;
     34	u32	min_uw;
     35	u32	max_uw;
     36	u32	tmin_us;
     37	u32	tmax_us;
     38	u32	step_uw;
     39};
     40
     41struct proc_thermal_device {
     42	struct device *dev;
     43	struct acpi_device *adev;
     44	struct power_config power_limits[2];
     45	struct int34x_thermal_zone *int340x_zone;
     46	struct intel_soc_dts_sensors *soc_dts;
     47	u32 mmio_feature_mask;
     48	void __iomem *mmio_base;
     49	void *priv_data;
     50};
     51
     52struct rapl_mmio_regs {
     53	u64 reg_unit;
     54	u64 regs[RAPL_DOMAIN_MAX][RAPL_DOMAIN_REG_MAX];
     55	int limits[RAPL_DOMAIN_MAX];
     56};
     57
     58#define PROC_THERMAL_FEATURE_NONE	0x00
     59#define PROC_THERMAL_FEATURE_RAPL	0x01
     60#define PROC_THERMAL_FEATURE_FIVR	0x02
     61#define PROC_THERMAL_FEATURE_DVFS	0x04
     62#define PROC_THERMAL_FEATURE_MBOX	0x08
     63
     64#if IS_ENABLED(CONFIG_PROC_THERMAL_MMIO_RAPL)
     65int proc_thermal_rapl_add(struct pci_dev *pdev, struct proc_thermal_device *proc_priv);
     66void proc_thermal_rapl_remove(void);
     67#else
     68static int __maybe_unused proc_thermal_rapl_add(struct pci_dev *pdev,
     69						struct proc_thermal_device *proc_priv)
     70{
     71	return 0;
     72}
     73
     74static void __maybe_unused proc_thermal_rapl_remove(void)
     75{
     76}
     77#endif
     78
     79int proc_thermal_rfim_add(struct pci_dev *pdev, struct proc_thermal_device *proc_priv);
     80void proc_thermal_rfim_remove(struct pci_dev *pdev);
     81
     82int proc_thermal_mbox_add(struct pci_dev *pdev, struct proc_thermal_device *proc_priv);
     83void proc_thermal_mbox_remove(struct pci_dev *pdev);
     84
     85int processor_thermal_send_mbox_read_cmd(struct pci_dev *pdev, u16 id, u64 *resp);
     86int processor_thermal_send_mbox_write_cmd(struct pci_dev *pdev, u16 id, u32 data);
     87int proc_thermal_add(struct device *dev, struct proc_thermal_device *priv);
     88void proc_thermal_remove(struct proc_thermal_device *proc_priv);
     89int proc_thermal_suspend(struct device *dev);
     90int proc_thermal_resume(struct device *dev);
     91int proc_thermal_mmio_add(struct pci_dev *pdev,
     92			  struct proc_thermal_device *proc_priv,
     93			  kernel_ulong_t feature_mask);
     94void proc_thermal_mmio_remove(struct pci_dev *pdev, struct proc_thermal_device *proc_priv);
     95#endif