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

adf_transport_internal.h (1807B)


      1/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
      2/* Copyright(c) 2014 - 2020 Intel Corporation */
      3#ifndef ADF_TRANSPORT_INTRN_H
      4#define ADF_TRANSPORT_INTRN_H
      5
      6#include <linux/interrupt.h>
      7#include <linux/spinlock_types.h>
      8#include "adf_transport.h"
      9
     10struct adf_etr_ring_debug_entry {
     11	char ring_name[ADF_CFG_MAX_KEY_LEN_IN_BYTES];
     12	struct dentry *debug;
     13};
     14
     15struct adf_etr_ring_data {
     16	void *base_addr;
     17	atomic_t *inflights;
     18	adf_callback_fn callback;
     19	struct adf_etr_bank_data *bank;
     20	dma_addr_t dma_addr;
     21	struct adf_etr_ring_debug_entry *ring_debug;
     22	spinlock_t lock;	/* protects ring data struct */
     23	u16 head;
     24	u16 tail;
     25	u32 threshold;
     26	u8 ring_number;
     27	u8 ring_size;
     28	u8 msg_size;
     29};
     30
     31struct adf_etr_bank_data {
     32	struct adf_etr_ring_data *rings;
     33	struct tasklet_struct resp_handler;
     34	void __iomem *csr_addr;
     35	u32 irq_coalesc_timer;
     36	u32 bank_number;
     37	u16 ring_mask;
     38	u16 irq_mask;
     39	spinlock_t lock;	/* protects bank data struct */
     40	struct adf_accel_dev *accel_dev;
     41	struct dentry *bank_debug_dir;
     42	struct dentry *bank_debug_cfg;
     43};
     44
     45struct adf_etr_data {
     46	struct adf_etr_bank_data *banks;
     47	struct dentry *debug;
     48};
     49
     50void adf_response_handler(uintptr_t bank_addr);
     51#ifdef CONFIG_DEBUG_FS
     52#include <linux/debugfs.h>
     53int adf_bank_debugfs_add(struct adf_etr_bank_data *bank);
     54void adf_bank_debugfs_rm(struct adf_etr_bank_data *bank);
     55int adf_ring_debugfs_add(struct adf_etr_ring_data *ring, const char *name);
     56void adf_ring_debugfs_rm(struct adf_etr_ring_data *ring);
     57#else
     58static inline int adf_bank_debugfs_add(struct adf_etr_bank_data *bank)
     59{
     60	return 0;
     61}
     62
     63#define adf_bank_debugfs_rm(bank) do {} while (0)
     64
     65static inline int adf_ring_debugfs_add(struct adf_etr_ring_data *ring,
     66				       const char *name)
     67{
     68	return 0;
     69}
     70
     71#define adf_ring_debugfs_rm(ring) do {} while (0)
     72#endif
     73#endif