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

cudbg_lib.h (10446B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  Copyright (C) 2017 Chelsio Communications.  All rights reserved.
      4 */
      5
      6#ifndef __CUDBG_LIB_H__
      7#define __CUDBG_LIB_H__
      8
      9int cudbg_collect_reg_dump(struct cudbg_init *pdbg_init,
     10			   struct cudbg_buffer *dbg_buff,
     11			   struct cudbg_error *cudbg_err);
     12int cudbg_collect_fw_devlog(struct cudbg_init *pdbg_init,
     13			    struct cudbg_buffer *dbg_buff,
     14			    struct cudbg_error *cudbg_err);
     15int cudbg_collect_cim_la(struct cudbg_init *pdbg_init,
     16			 struct cudbg_buffer *dbg_buff,
     17			 struct cudbg_error *cudbg_err);
     18int cudbg_collect_cim_ma_la(struct cudbg_init *pdbg_init,
     19			    struct cudbg_buffer *dbg_buff,
     20			    struct cudbg_error *cudbg_err);
     21int cudbg_collect_cim_qcfg(struct cudbg_init *pdbg_init,
     22			   struct cudbg_buffer *dbg_buff,
     23			   struct cudbg_error *cudbg_err);
     24int cudbg_collect_cim_ibq_tp0(struct cudbg_init *pdbg_init,
     25			      struct cudbg_buffer *dbg_buff,
     26			      struct cudbg_error *cudbg_err);
     27int cudbg_collect_cim_ibq_tp1(struct cudbg_init *pdbg_init,
     28			      struct cudbg_buffer *dbg_buff,
     29			      struct cudbg_error *cudbg_err);
     30int cudbg_collect_cim_ibq_ulp(struct cudbg_init *pdbg_init,
     31			      struct cudbg_buffer *dbg_buff,
     32			      struct cudbg_error *cudbg_err);
     33int cudbg_collect_cim_ibq_sge0(struct cudbg_init *pdbg_init,
     34			       struct cudbg_buffer *dbg_buff,
     35			       struct cudbg_error *cudbg_err);
     36int cudbg_collect_cim_ibq_sge1(struct cudbg_init *pdbg_init,
     37			       struct cudbg_buffer *dbg_buff,
     38			       struct cudbg_error *cudbg_err);
     39int cudbg_collect_cim_ibq_ncsi(struct cudbg_init *pdbg_init,
     40			       struct cudbg_buffer *dbg_buff,
     41			       struct cudbg_error *cudbg_err);
     42int cudbg_collect_cim_obq_ulp0(struct cudbg_init *pdbg_init,
     43			       struct cudbg_buffer *dbg_buff,
     44			       struct cudbg_error *cudbg_err);
     45int cudbg_collect_cim_obq_ulp1(struct cudbg_init *pdbg_init,
     46			       struct cudbg_buffer *dbg_buff,
     47			       struct cudbg_error *cudbg_err);
     48int cudbg_collect_cim_obq_ulp2(struct cudbg_init *pdbg_init,
     49			       struct cudbg_buffer *dbg_buff,
     50			       struct cudbg_error *cudbg_err);
     51int cudbg_collect_cim_obq_ulp3(struct cudbg_init *pdbg_init,
     52			       struct cudbg_buffer *dbg_buff,
     53			       struct cudbg_error *cudbg_err);
     54int cudbg_collect_cim_obq_sge(struct cudbg_init *pdbg_init,
     55			      struct cudbg_buffer *dbg_buff,
     56			      struct cudbg_error *cudbg_err);
     57int cudbg_collect_cim_obq_ncsi(struct cudbg_init *pdbg_init,
     58			       struct cudbg_buffer *dbg_buff,
     59			       struct cudbg_error *cudbg_err);
     60int cudbg_collect_edc0_meminfo(struct cudbg_init *pdbg_init,
     61			       struct cudbg_buffer *dbg_buff,
     62			       struct cudbg_error *cudbg_err);
     63int cudbg_collect_edc1_meminfo(struct cudbg_init *pdbg_init,
     64			       struct cudbg_buffer *dbg_buff,
     65			       struct cudbg_error *cudbg_err);
     66int cudbg_collect_mc0_meminfo(struct cudbg_init *pdbg_init,
     67			      struct cudbg_buffer *dbg_buff,
     68			      struct cudbg_error *cudbg_err);
     69int cudbg_collect_mc1_meminfo(struct cudbg_init *pdbg_init,
     70			      struct cudbg_buffer *dbg_buff,
     71			      struct cudbg_error *cudbg_err);
     72int cudbg_collect_rss(struct cudbg_init *pdbg_init,
     73		      struct cudbg_buffer *dbg_buff,
     74		      struct cudbg_error *cudbg_err);
     75int cudbg_collect_rss_vf_config(struct cudbg_init *pdbg_init,
     76				struct cudbg_buffer *dbg_buff,
     77				struct cudbg_error *cudbg_err);
     78int cudbg_collect_tp_indirect(struct cudbg_init *pdbg_init,
     79			      struct cudbg_buffer *dbg_buff,
     80			      struct cudbg_error *cudbg_err);
     81int cudbg_collect_path_mtu(struct cudbg_init *pdbg_init,
     82			   struct cudbg_buffer *dbg_buff,
     83			   struct cudbg_error *cudbg_err);
     84int cudbg_collect_pm_stats(struct cudbg_init *pdbg_init,
     85			   struct cudbg_buffer *dbg_buff,
     86			   struct cudbg_error *cudbg_err);
     87int cudbg_collect_hw_sched(struct cudbg_init *pdbg_init,
     88			   struct cudbg_buffer *dbg_buff,
     89			   struct cudbg_error *cudbg_err);
     90int cudbg_collect_sge_indirect(struct cudbg_init *pdbg_init,
     91			       struct cudbg_buffer *dbg_buff,
     92			       struct cudbg_error *cudbg_err);
     93int cudbg_collect_ulprx_la(struct cudbg_init *pdbg_init,
     94			   struct cudbg_buffer *dbg_buff,
     95			   struct cudbg_error *cudbg_err);
     96int cudbg_collect_tp_la(struct cudbg_init *pdbg_init,
     97			struct cudbg_buffer *dbg_buff,
     98			struct cudbg_error *cudbg_err);
     99int cudbg_collect_meminfo(struct cudbg_init *pdbg_init,
    100			  struct cudbg_buffer *dbg_buff,
    101			  struct cudbg_error *cudbg_err);
    102int cudbg_collect_cim_pif_la(struct cudbg_init *pdbg_init,
    103			     struct cudbg_buffer *dbg_buff,
    104			     struct cudbg_error *cudbg_err);
    105int cudbg_collect_clk_info(struct cudbg_init *pdbg_init,
    106			   struct cudbg_buffer *dbg_buff,
    107			   struct cudbg_error *cudbg_err);
    108int cudbg_collect_obq_sge_rx_q0(struct cudbg_init *pdbg_init,
    109				struct cudbg_buffer *dbg_buff,
    110				struct cudbg_error *cudbg_err);
    111int cudbg_collect_obq_sge_rx_q1(struct cudbg_init *pdbg_init,
    112				struct cudbg_buffer *dbg_buff,
    113				struct cudbg_error *cudbg_err);
    114int cudbg_collect_pcie_indirect(struct cudbg_init *pdbg_init,
    115				struct cudbg_buffer *dbg_buff,
    116				struct cudbg_error *cudbg_err);
    117int cudbg_collect_pm_indirect(struct cudbg_init *pdbg_init,
    118			      struct cudbg_buffer *dbg_buff,
    119			      struct cudbg_error *cudbg_err);
    120int cudbg_collect_tid(struct cudbg_init *pdbg_init,
    121		      struct cudbg_buffer *dbg_buff,
    122		      struct cudbg_error *cudbg_err);
    123int cudbg_collect_pcie_config(struct cudbg_init *pdbg_init,
    124			      struct cudbg_buffer *dbg_buff,
    125			      struct cudbg_error *cudbg_err);
    126int cudbg_collect_dump_context(struct cudbg_init *pdbg_init,
    127			       struct cudbg_buffer *dbg_buff,
    128			       struct cudbg_error *cudbg_err);
    129int cudbg_collect_mps_tcam(struct cudbg_init *pdbg_init,
    130			   struct cudbg_buffer *dbg_buff,
    131			   struct cudbg_error *cudbg_err);
    132int cudbg_collect_vpd_data(struct cudbg_init *pdbg_init,
    133			   struct cudbg_buffer *dbg_buff,
    134			   struct cudbg_error *cudbg_err);
    135int cudbg_collect_le_tcam(struct cudbg_init *pdbg_init,
    136			  struct cudbg_buffer *dbg_buff,
    137			  struct cudbg_error *cudbg_err);
    138int cudbg_collect_cctrl(struct cudbg_init *pdbg_init,
    139			struct cudbg_buffer *dbg_buff,
    140			struct cudbg_error *cudbg_err);
    141int cudbg_collect_ma_indirect(struct cudbg_init *pdbg_init,
    142			      struct cudbg_buffer *dbg_buff,
    143			      struct cudbg_error *cudbg_err);
    144int cudbg_collect_ulptx_la(struct cudbg_init *pdbg_init,
    145			   struct cudbg_buffer *dbg_buff,
    146			   struct cudbg_error *cudbg_err);
    147int cudbg_collect_up_cim_indirect(struct cudbg_init *pdbg_init,
    148				  struct cudbg_buffer *dbg_buff,
    149				  struct cudbg_error *cudbg_err);
    150int cudbg_collect_pbt_tables(struct cudbg_init *pdbg_init,
    151			     struct cudbg_buffer *dbg_buff,
    152			     struct cudbg_error *cudbg_err);
    153int cudbg_collect_mbox_log(struct cudbg_init *pdbg_init,
    154			   struct cudbg_buffer *dbg_buff,
    155			   struct cudbg_error *cudbg_err);
    156int cudbg_collect_hma_indirect(struct cudbg_init *pdbg_init,
    157			       struct cudbg_buffer *dbg_buff,
    158			       struct cudbg_error *cudbg_err);
    159int cudbg_collect_hma_meminfo(struct cudbg_init *pdbg_init,
    160			      struct cudbg_buffer *dbg_buff,
    161			      struct cudbg_error *cudbg_err);
    162int cudbg_collect_qdesc(struct cudbg_init *pdbg_init,
    163			struct cudbg_buffer *dbg_buff,
    164			struct cudbg_error *cudbg_err);
    165int cudbg_collect_flash(struct cudbg_init *pdbg_init,
    166			struct cudbg_buffer *dbg_buff,
    167			struct cudbg_error *cudbg_err);
    168
    169u32 cudbg_get_entity_length(struct adapter *adap, u32 entity);
    170struct cudbg_entity_hdr *cudbg_get_entity_hdr(void *outbuf, int i);
    171void cudbg_align_debug_buffer(struct cudbg_buffer *dbg_buff,
    172			      struct cudbg_entity_hdr *entity_hdr);
    173u32 cudbg_cim_obq_size(struct adapter *padap, int qid);
    174int cudbg_dump_context_size(struct adapter *padap);
    175
    176int cudbg_fill_meminfo(struct adapter *padap,
    177		       struct cudbg_meminfo *meminfo_buff);
    178void cudbg_fill_le_tcam_info(struct adapter *padap,
    179			     struct cudbg_tcam *tcam_region);
    180void cudbg_fill_qdesc_num_and_size(const struct adapter *padap,
    181				   u32 *num, u32 *size);
    182
    183static inline u32 cudbg_uld_txq_to_qtype(u32 uld)
    184{
    185	switch (uld) {
    186	case CXGB4_TX_OFLD:
    187		return CUDBG_QTYPE_OFLD_TXQ;
    188	case CXGB4_TX_CRYPTO:
    189		return CUDBG_QTYPE_CRYPTO_TXQ;
    190	}
    191
    192	return CUDBG_QTYPE_UNKNOWN;
    193}
    194
    195static inline u32 cudbg_uld_rxq_to_qtype(u32 uld)
    196{
    197	switch (uld) {
    198	case CXGB4_ULD_RDMA:
    199		return CUDBG_QTYPE_RDMA_RXQ;
    200	case CXGB4_ULD_ISCSI:
    201		return CUDBG_QTYPE_ISCSI_RXQ;
    202	case CXGB4_ULD_ISCSIT:
    203		return CUDBG_QTYPE_ISCSIT_RXQ;
    204	case CXGB4_ULD_CRYPTO:
    205		return CUDBG_QTYPE_CRYPTO_RXQ;
    206	case CXGB4_ULD_TLS:
    207		return CUDBG_QTYPE_TLS_RXQ;
    208	}
    209
    210	return CUDBG_QTYPE_UNKNOWN;
    211}
    212
    213static inline u32 cudbg_uld_flq_to_qtype(u32 uld)
    214{
    215	switch (uld) {
    216	case CXGB4_ULD_RDMA:
    217		return CUDBG_QTYPE_RDMA_FLQ;
    218	case CXGB4_ULD_ISCSI:
    219		return CUDBG_QTYPE_ISCSI_FLQ;
    220	case CXGB4_ULD_ISCSIT:
    221		return CUDBG_QTYPE_ISCSIT_FLQ;
    222	case CXGB4_ULD_CRYPTO:
    223		return CUDBG_QTYPE_CRYPTO_FLQ;
    224	case CXGB4_ULD_TLS:
    225		return CUDBG_QTYPE_TLS_FLQ;
    226	}
    227
    228	return CUDBG_QTYPE_UNKNOWN;
    229}
    230
    231static inline u32 cudbg_uld_ciq_to_qtype(u32 uld)
    232{
    233	switch (uld) {
    234	case CXGB4_ULD_RDMA:
    235		return CUDBG_QTYPE_RDMA_CIQ;
    236	}
    237
    238	return CUDBG_QTYPE_UNKNOWN;
    239}
    240
    241static inline void cudbg_fill_qdesc_txq(const struct sge_txq *txq,
    242					enum cudbg_qdesc_qtype type,
    243					struct cudbg_qdesc_entry *entry)
    244{
    245	entry->qtype = type;
    246	entry->qid = txq->cntxt_id;
    247	entry->desc_size = sizeof(struct tx_desc);
    248	entry->num_desc = txq->size;
    249	entry->data_size = txq->size * sizeof(struct tx_desc);
    250	memcpy(entry->data, txq->desc, entry->data_size);
    251}
    252
    253static inline void cudbg_fill_qdesc_rxq(const struct sge_rspq *rxq,
    254					enum cudbg_qdesc_qtype type,
    255					struct cudbg_qdesc_entry *entry)
    256{
    257	entry->qtype = type;
    258	entry->qid = rxq->cntxt_id;
    259	entry->desc_size = rxq->iqe_len;
    260	entry->num_desc = rxq->size;
    261	entry->data_size = rxq->size * rxq->iqe_len;
    262	memcpy(entry->data, rxq->desc, entry->data_size);
    263}
    264
    265static inline void cudbg_fill_qdesc_flq(const struct sge_fl *flq,
    266					enum cudbg_qdesc_qtype type,
    267					struct cudbg_qdesc_entry *entry)
    268{
    269	entry->qtype = type;
    270	entry->qid = flq->cntxt_id;
    271	entry->desc_size = sizeof(__be64);
    272	entry->num_desc = flq->size;
    273	entry->data_size = flq->size * sizeof(__be64);
    274	memcpy(entry->data, flq->desc, entry->data_size);
    275}
    276
    277static inline
    278struct cudbg_qdesc_entry *cudbg_next_qdesc(struct cudbg_qdesc_entry *e)
    279{
    280	return (struct cudbg_qdesc_entry *)
    281	       ((u8 *)e + sizeof(*e) + e->data_size);
    282}
    283#endif /* __CUDBG_LIB_H__ */