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

hinic_hw_qp_ctxt.h (6535B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Huawei HiNIC PCI Express Linux driver
      4 * Copyright(c) 2017 Huawei Technologies Co., Ltd
      5 */
      6
      7#ifndef HINIC_HW_QP_CTXT_H
      8#define HINIC_HW_QP_CTXT_H
      9
     10#include <linux/types.h>
     11
     12#include "hinic_hw_cmdq.h"
     13
     14#define HINIC_SQ_CTXT_CEQ_ATTR_GLOBAL_SQ_ID_SHIFT       13
     15#define HINIC_SQ_CTXT_CEQ_ATTR_EN_SHIFT                 23
     16
     17#define HINIC_SQ_CTXT_CEQ_ATTR_GLOBAL_SQ_ID_MASK        0x3FF
     18#define HINIC_SQ_CTXT_CEQ_ATTR_EN_MASK                  0x1
     19
     20#define HINIC_SQ_CTXT_CEQ_ATTR_SET(val, member)         \
     21	(((u32)(val) & HINIC_SQ_CTXT_CEQ_ATTR_##member##_MASK) \
     22	 << HINIC_SQ_CTXT_CEQ_ATTR_##member##_SHIFT)
     23
     24#define HINIC_SQ_CTXT_CI_IDX_SHIFT                      11
     25#define HINIC_SQ_CTXT_CI_WRAPPED_SHIFT                  23
     26
     27#define HINIC_SQ_CTXT_CI_IDX_MASK                       0xFFF
     28#define HINIC_SQ_CTXT_CI_WRAPPED_MASK                   0x1
     29
     30#define HINIC_SQ_CTXT_CI_SET(val, member)               \
     31	(((u32)(val) & HINIC_SQ_CTXT_CI_##member##_MASK) \
     32	 << HINIC_SQ_CTXT_CI_##member##_SHIFT)
     33
     34#define HINIC_SQ_CTXT_WQ_PAGE_HI_PFN_SHIFT              0
     35#define HINIC_SQ_CTXT_WQ_PAGE_PI_SHIFT                  20
     36
     37#define HINIC_SQ_CTXT_WQ_PAGE_HI_PFN_MASK               0xFFFFF
     38#define HINIC_SQ_CTXT_WQ_PAGE_PI_MASK                   0xFFF
     39
     40#define HINIC_SQ_CTXT_WQ_PAGE_SET(val, member)          \
     41	(((u32)(val) & HINIC_SQ_CTXT_WQ_PAGE_##member##_MASK) \
     42	 << HINIC_SQ_CTXT_WQ_PAGE_##member##_SHIFT)
     43
     44#define HINIC_SQ_CTXT_PREF_CACHE_THRESHOLD_SHIFT        0
     45#define HINIC_SQ_CTXT_PREF_CACHE_MAX_SHIFT              14
     46#define HINIC_SQ_CTXT_PREF_CACHE_MIN_SHIFT              25
     47
     48#define HINIC_SQ_CTXT_PREF_CACHE_THRESHOLD_MASK         0x3FFF
     49#define HINIC_SQ_CTXT_PREF_CACHE_MAX_MASK               0x7FF
     50#define HINIC_SQ_CTXT_PREF_CACHE_MIN_MASK               0x7F
     51
     52#define HINIC_SQ_CTXT_PREF_WQ_HI_PFN_SHIFT              0
     53#define HINIC_SQ_CTXT_PREF_CI_SHIFT                     20
     54
     55#define HINIC_SQ_CTXT_PREF_WQ_HI_PFN_MASK               0xFFFFF
     56#define HINIC_SQ_CTXT_PREF_CI_MASK                      0xFFF
     57
     58#define HINIC_SQ_CTXT_PREF_SET(val, member)             \
     59	(((u32)(val) & HINIC_SQ_CTXT_PREF_##member##_MASK) \
     60	 << HINIC_SQ_CTXT_PREF_##member##_SHIFT)
     61
     62#define HINIC_SQ_CTXT_WQ_BLOCK_HI_PFN_SHIFT             0
     63
     64#define HINIC_SQ_CTXT_WQ_BLOCK_HI_PFN_MASK              0x7FFFFF
     65
     66#define HINIC_SQ_CTXT_WQ_BLOCK_SET(val, member)         \
     67	(((u32)(val) & HINIC_SQ_CTXT_WQ_BLOCK_##member##_MASK) \
     68	 << HINIC_SQ_CTXT_WQ_BLOCK_##member##_SHIFT)
     69
     70#define HINIC_RQ_CTXT_CEQ_ATTR_EN_SHIFT                 0
     71#define HINIC_RQ_CTXT_CEQ_ATTR_WRAPPED_SHIFT            1
     72
     73#define HINIC_RQ_CTXT_CEQ_ATTR_EN_MASK                  0x1
     74#define HINIC_RQ_CTXT_CEQ_ATTR_WRAPPED_MASK             0x1
     75
     76#define HINIC_RQ_CTXT_CEQ_ATTR_SET(val, member)         \
     77	(((u32)(val) & HINIC_RQ_CTXT_CEQ_ATTR_##member##_MASK) \
     78	 << HINIC_RQ_CTXT_CEQ_ATTR_##member##_SHIFT)
     79
     80#define HINIC_RQ_CTXT_PI_IDX_SHIFT                      0
     81#define HINIC_RQ_CTXT_PI_INTR_SHIFT                     22
     82
     83#define HINIC_RQ_CTXT_PI_IDX_MASK                       0xFFF
     84#define HINIC_RQ_CTXT_PI_INTR_MASK                      0x3FF
     85
     86#define HINIC_RQ_CTXT_PI_SET(val, member)               \
     87	(((u32)(val) & HINIC_RQ_CTXT_PI_##member##_MASK) << \
     88	 HINIC_RQ_CTXT_PI_##member##_SHIFT)
     89
     90#define HINIC_RQ_CTXT_WQ_PAGE_HI_PFN_SHIFT              0
     91#define HINIC_RQ_CTXT_WQ_PAGE_CI_SHIFT                  20
     92
     93#define HINIC_RQ_CTXT_WQ_PAGE_HI_PFN_MASK               0xFFFFF
     94#define HINIC_RQ_CTXT_WQ_PAGE_CI_MASK                   0xFFF
     95
     96#define HINIC_RQ_CTXT_WQ_PAGE_SET(val, member)          \
     97	(((u32)(val) & HINIC_RQ_CTXT_WQ_PAGE_##member##_MASK) << \
     98	 HINIC_RQ_CTXT_WQ_PAGE_##member##_SHIFT)
     99
    100#define HINIC_RQ_CTXT_PREF_CACHE_THRESHOLD_SHIFT        0
    101#define HINIC_RQ_CTXT_PREF_CACHE_MAX_SHIFT              14
    102#define HINIC_RQ_CTXT_PREF_CACHE_MIN_SHIFT              25
    103
    104#define HINIC_RQ_CTXT_PREF_CACHE_THRESHOLD_MASK         0x3FFF
    105#define HINIC_RQ_CTXT_PREF_CACHE_MAX_MASK               0x7FF
    106#define HINIC_RQ_CTXT_PREF_CACHE_MIN_MASK               0x7F
    107
    108#define HINIC_RQ_CTXT_PREF_WQ_HI_PFN_SHIFT              0
    109#define HINIC_RQ_CTXT_PREF_CI_SHIFT                     20
    110
    111#define HINIC_RQ_CTXT_PREF_WQ_HI_PFN_MASK               0xFFFFF
    112#define HINIC_RQ_CTXT_PREF_CI_MASK                      0xFFF
    113
    114#define HINIC_RQ_CTXT_PREF_SET(val, member)             \
    115	(((u32)(val) & HINIC_RQ_CTXT_PREF_##member##_MASK) << \
    116	 HINIC_RQ_CTXT_PREF_##member##_SHIFT)
    117
    118#define HINIC_RQ_CTXT_WQ_BLOCK_HI_PFN_SHIFT             0
    119
    120#define HINIC_RQ_CTXT_WQ_BLOCK_HI_PFN_MASK              0x7FFFFF
    121
    122#define HINIC_RQ_CTXT_WQ_BLOCK_SET(val, member)         \
    123	(((u32)(val) & HINIC_RQ_CTXT_WQ_BLOCK_##member##_MASK) << \
    124	 HINIC_RQ_CTXT_WQ_BLOCK_##member##_SHIFT)
    125
    126#define HINIC_SQ_CTXT_SIZE(num_sqs) (sizeof(struct hinic_qp_ctxt_header) \
    127				     + (num_sqs) * sizeof(struct hinic_sq_ctxt))
    128
    129#define HINIC_RQ_CTXT_SIZE(num_rqs) (sizeof(struct hinic_qp_ctxt_header) \
    130				     + (num_rqs) * sizeof(struct hinic_rq_ctxt))
    131
    132#define HINIC_WQ_PAGE_PFN_SHIFT         12
    133#define HINIC_WQ_BLOCK_PFN_SHIFT        9
    134
    135#define HINIC_WQ_PAGE_PFN(page_addr)    ((page_addr) >> HINIC_WQ_PAGE_PFN_SHIFT)
    136#define HINIC_WQ_BLOCK_PFN(page_addr)   ((page_addr) >> \
    137					 HINIC_WQ_BLOCK_PFN_SHIFT)
    138
    139#define HINIC_Q_CTXT_MAX                \
    140		((HINIC_CMDQ_BUF_SIZE - sizeof(struct hinic_qp_ctxt_header)) \
    141		 / sizeof(struct hinic_sq_ctxt))
    142
    143enum hinic_qp_ctxt_type {
    144	HINIC_QP_CTXT_TYPE_SQ,
    145	HINIC_QP_CTXT_TYPE_RQ
    146};
    147
    148struct hinic_qp_ctxt_header {
    149	u16     num_queues;
    150	u16     queue_type;
    151	u32     addr_offset;
    152};
    153
    154struct hinic_sq_ctxt {
    155	u32     ceq_attr;
    156
    157	u32     ci_wrapped;
    158
    159	u32     wq_hi_pfn_pi;
    160	u32     wq_lo_pfn;
    161
    162	u32     pref_cache;
    163	u32     pref_wrapped;
    164	u32     pref_wq_hi_pfn_ci;
    165	u32     pref_wq_lo_pfn;
    166
    167	u32     rsvd0;
    168	u32     rsvd1;
    169
    170	u32     wq_block_hi_pfn;
    171	u32     wq_block_lo_pfn;
    172};
    173
    174struct hinic_rq_ctxt {
    175	u32     ceq_attr;
    176
    177	u32     pi_intr_attr;
    178
    179	u32     wq_hi_pfn_ci;
    180	u32     wq_lo_pfn;
    181
    182	u32     pref_cache;
    183	u32     pref_wrapped;
    184
    185	u32     pref_wq_hi_pfn_ci;
    186	u32     pref_wq_lo_pfn;
    187
    188	u32     pi_paddr_hi;
    189	u32     pi_paddr_lo;
    190
    191	u32     wq_block_hi_pfn;
    192	u32     wq_block_lo_pfn;
    193};
    194
    195struct hinic_clean_queue_ctxt {
    196	struct hinic_qp_ctxt_header	cmdq_hdr;
    197	u32				ctxt_size;
    198};
    199
    200struct hinic_sq_ctxt_block {
    201	struct hinic_qp_ctxt_header hdr;
    202	struct hinic_sq_ctxt sq_ctxt[HINIC_Q_CTXT_MAX];
    203};
    204
    205struct hinic_rq_ctxt_block {
    206	struct hinic_qp_ctxt_header hdr;
    207	struct hinic_rq_ctxt rq_ctxt[HINIC_Q_CTXT_MAX];
    208};
    209
    210#endif