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

efct_driver.h (2384B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
      4 * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
      5 */
      6
      7#if !defined(__EFCT_DRIVER_H__)
      8#define __EFCT_DRIVER_H__
      9
     10/***************************************************************************
     11 * OS specific includes
     12 */
     13#include <linux/module.h>
     14#include <linux/debugfs.h>
     15#include <linux/firmware.h>
     16#include "../include/efc_common.h"
     17#include "../libefc/efclib.h"
     18#include "efct_hw.h"
     19#include "efct_io.h"
     20#include "efct_xport.h"
     21
     22#define EFCT_DRIVER_NAME			"efct"
     23#define EFCT_DRIVER_VERSION			"1.0.0.0"
     24
     25/* EFCT_DEFAULT_FILTER-
     26 * MRQ filter to segregate the IO flow.
     27 */
     28#define EFCT_DEFAULT_FILTER			"0x01ff22ff,0,0,0"
     29
     30/* EFCT_OS_MAX_ISR_TIME_MSEC -
     31 * maximum time driver code should spend in an interrupt
     32 * or kernel thread context without yielding
     33 */
     34#define EFCT_OS_MAX_ISR_TIME_MSEC		1000
     35
     36#define EFCT_FC_MAX_SGL				64
     37#define EFCT_FC_DIF_SEED			0
     38
     39/* Watermark */
     40#define EFCT_WATERMARK_HIGH_PCT			90
     41#define EFCT_WATERMARK_LOW_PCT			80
     42#define EFCT_IO_WATERMARK_PER_INITIATOR		8
     43
     44#define EFCT_PCI_MAX_REGS			6
     45#define MAX_PCI_INTERRUPTS			16
     46
     47struct efct_intr_context {
     48	struct efct		*efct;
     49	u32			index;
     50};
     51
     52struct efct {
     53	struct pci_dev			*pci;
     54	void __iomem			*reg[EFCT_PCI_MAX_REGS];
     55
     56	u32				n_msix_vec;
     57	bool				attached;
     58	bool				soft_wwn_enable;
     59	u8				efct_req_fw_upgrade;
     60	struct efct_intr_context	intr_context[MAX_PCI_INTERRUPTS];
     61	u32				numa_node;
     62
     63	char				name[EFC_NAME_LENGTH];
     64	u32				instance_index;
     65	struct list_head		list_entry;
     66	struct efct_scsi_tgt		tgt_efct;
     67	struct efct_xport		*xport;
     68	struct efc			*efcport;
     69	struct Scsi_Host		*shost;
     70	int				logmask;
     71	u32				max_isr_time_msec;
     72
     73	const char			*desc;
     74
     75	const char			*model;
     76
     77	struct efct_hw			hw;
     78
     79	u32				rq_selection_policy;
     80	char				*filter_def;
     81	int				topology;
     82
     83	/* Look up for target node */
     84	struct xarray			lookup;
     85
     86	/*
     87	 * Target IO timer value:
     88	 * Zero: target command timeout disabled.
     89	 * Non-zero: Timeout value, in seconds, for target commands
     90	 */
     91	u32				target_io_timer_sec;
     92
     93	int				speed;
     94	struct dentry			*sess_debugfs_dir;
     95};
     96
     97#define FW_WRITE_BUFSIZE		(64 * 1024)
     98
     99struct efct_fw_write_result {
    100	struct completion done;
    101	int status;
    102	u32 actual_xfer;
    103	u32 change_status;
    104};
    105
    106extern struct list_head			efct_devices;
    107
    108#endif /* __EFCT_DRIVER_H__ */