Home | History | Annotate | Download | only in hfi
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef _LINUX__HFI1_USER_H
     20 #define _LINUX__HFI1_USER_H
     21 #include <linux/types.h>
     22 #define HFI1_USER_SWMAJOR 6
     23 #define HFI1_USER_SWMINOR 3
     24 #define HFI1_SWMAJOR_SHIFT 16
     25 #define HFI1_CAP_DMA_RTAIL (1UL << 0)
     26 #define HFI1_CAP_SDMA (1UL << 1)
     27 #define HFI1_CAP_SDMA_AHG (1UL << 2)
     28 #define HFI1_CAP_EXTENDED_PSN (1UL << 3)
     29 #define HFI1_CAP_HDRSUPP (1UL << 4)
     30 #define HFI1_CAP_USE_SDMA_HEAD (1UL << 6)
     31 #define HFI1_CAP_MULTI_PKT_EGR (1UL << 7)
     32 #define HFI1_CAP_NODROP_RHQ_FULL (1UL << 8)
     33 #define HFI1_CAP_NODROP_EGR_FULL (1UL << 9)
     34 #define HFI1_CAP_TID_UNMAP (1UL << 10)
     35 #define HFI1_CAP_PRINT_UNIMPL (1UL << 11)
     36 #define HFI1_CAP_ALLOW_PERM_JKEY (1UL << 12)
     37 #define HFI1_CAP_NO_INTEGRITY (1UL << 13)
     38 #define HFI1_CAP_PKEY_CHECK (1UL << 14)
     39 #define HFI1_CAP_STATIC_RATE_CTRL (1UL << 15)
     40 #define HFI1_CAP_SDMA_HEAD_CHECK (1UL << 17)
     41 #define HFI1_CAP_EARLY_CREDIT_RETURN (1UL << 18)
     42 #define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0)
     43 #define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1)
     44 #define HFI1_RCVDHR_ENTSIZE_32 (1UL << 2)
     45 #define HFI1_CMD_ASSIGN_CTXT 1
     46 #define HFI1_CMD_CTXT_INFO 2
     47 #define HFI1_CMD_USER_INFO 3
     48 #define HFI1_CMD_TID_UPDATE 4
     49 #define HFI1_CMD_TID_FREE 5
     50 #define HFI1_CMD_CREDIT_UPD 6
     51 #define HFI1_CMD_RECV_CTRL 8
     52 #define HFI1_CMD_POLL_TYPE 9
     53 #define HFI1_CMD_ACK_EVENT 10
     54 #define HFI1_CMD_SET_PKEY 11
     55 #define HFI1_CMD_CTXT_RESET 12
     56 #define HFI1_CMD_TID_INVAL_READ 13
     57 #define HFI1_CMD_GET_VERS 14
     58 #define IB_IOCTL_MAGIC 0x1b
     59 #define __NUM(cmd) (HFI1_CMD_ ##cmd + 0xe0)
     60 struct hfi1_cmd;
     61 #define HFI1_IOCTL_ASSIGN_CTXT _IOWR(IB_IOCTL_MAGIC, __NUM(ASSIGN_CTXT), struct hfi1_user_info)
     62 #define HFI1_IOCTL_CTXT_INFO _IOW(IB_IOCTL_MAGIC, __NUM(CTXT_INFO), struct hfi1_ctxt_info)
     63 #define HFI1_IOCTL_USER_INFO _IOW(IB_IOCTL_MAGIC, __NUM(USER_INFO), struct hfi1_base_info)
     64 #define HFI1_IOCTL_TID_UPDATE _IOWR(IB_IOCTL_MAGIC, __NUM(TID_UPDATE), struct hfi1_tid_info)
     65 #define HFI1_IOCTL_TID_FREE _IOWR(IB_IOCTL_MAGIC, __NUM(TID_FREE), struct hfi1_tid_info)
     66 #define HFI1_IOCTL_CREDIT_UPD _IO(IB_IOCTL_MAGIC, __NUM(CREDIT_UPD))
     67 #define HFI1_IOCTL_RECV_CTRL _IOW(IB_IOCTL_MAGIC, __NUM(RECV_CTRL), int)
     68 #define HFI1_IOCTL_POLL_TYPE _IOW(IB_IOCTL_MAGIC, __NUM(POLL_TYPE), int)
     69 #define HFI1_IOCTL_ACK_EVENT _IOW(IB_IOCTL_MAGIC, __NUM(ACK_EVENT), unsigned long)
     70 #define HFI1_IOCTL_SET_PKEY _IOW(IB_IOCTL_MAGIC, __NUM(SET_PKEY), __u16)
     71 #define HFI1_IOCTL_CTXT_RESET _IO(IB_IOCTL_MAGIC, __NUM(CTXT_RESET))
     72 #define HFI1_IOCTL_TID_INVAL_READ _IOWR(IB_IOCTL_MAGIC, __NUM(TID_INVAL_READ), struct hfi1_tid_info)
     73 #define HFI1_IOCTL_GET_VERS _IOR(IB_IOCTL_MAGIC, __NUM(GET_VERS), int)
     74 #define _HFI1_EVENT_FROZEN_BIT 0
     75 #define _HFI1_EVENT_LINKDOWN_BIT 1
     76 #define _HFI1_EVENT_LID_CHANGE_BIT 2
     77 #define _HFI1_EVENT_LMC_CHANGE_BIT 3
     78 #define _HFI1_EVENT_SL2VL_CHANGE_BIT 4
     79 #define _HFI1_EVENT_TID_MMU_NOTIFY_BIT 5
     80 #define _HFI1_MAX_EVENT_BIT _HFI1_EVENT_TID_MMU_NOTIFY_BIT
     81 #define HFI1_EVENT_FROZEN (1UL << _HFI1_EVENT_FROZEN_BIT)
     82 #define HFI1_EVENT_LINKDOWN (1UL << _HFI1_EVENT_LINKDOWN_BIT)
     83 #define HFI1_EVENT_LID_CHANGE (1UL << _HFI1_EVENT_LID_CHANGE_BIT)
     84 #define HFI1_EVENT_LMC_CHANGE (1UL << _HFI1_EVENT_LMC_CHANGE_BIT)
     85 #define HFI1_EVENT_SL2VL_CHANGE (1UL << _HFI1_EVENT_SL2VL_CHANGE_BIT)
     86 #define HFI1_EVENT_TID_MMU_NOTIFY (1UL << _HFI1_EVENT_TID_MMU_NOTIFY_BIT)
     87 #define HFI1_STATUS_INITTED 0x1
     88 #define HFI1_STATUS_CHIP_PRESENT 0x20
     89 #define HFI1_STATUS_IB_READY 0x40
     90 #define HFI1_STATUS_IB_CONF 0x80
     91 #define HFI1_STATUS_HWERROR 0x200
     92 #define HFI1_MAX_SHARED_CTXTS 8
     93 #define HFI1_POLL_TYPE_ANYRCV 0x0
     94 #define HFI1_POLL_TYPE_URGENT 0x1
     95 struct hfi1_user_info {
     96   __u32 userversion;
     97   __u32 pad;
     98   __u16 subctxt_cnt;
     99   __u16 subctxt_id;
    100   __u8 uuid[16];
    101 };
    102 struct hfi1_ctxt_info {
    103   __u64 runtime_flags;
    104   __u32 rcvegr_size;
    105   __u16 num_active;
    106   __u16 unit;
    107   __u16 ctxt;
    108   __u16 subctxt;
    109   __u16 rcvtids;
    110   __u16 credits;
    111   __u16 numa_node;
    112   __u16 rec_cpu;
    113   __u16 send_ctxt;
    114   __u16 egrtids;
    115   __u16 rcvhdrq_cnt;
    116   __u16 rcvhdrq_entsize;
    117   __u16 sdma_ring_size;
    118 };
    119 struct hfi1_tid_info {
    120   __u64 vaddr;
    121   __u64 tidlist;
    122   __u32 tidcnt;
    123   __u32 length;
    124 };
    125 enum hfi1_sdma_comp_state {
    126   FREE = 0,
    127   QUEUED,
    128   COMPLETE,
    129   ERROR
    130 };
    131 struct hfi1_sdma_comp_entry {
    132   __u32 status;
    133   __u32 errcode;
    134 };
    135 struct hfi1_status {
    136   __u64 dev;
    137   __u64 port;
    138   char freezemsg[0];
    139 };
    140 struct hfi1_base_info {
    141   __u32 hw_version;
    142   __u32 sw_version;
    143   __u16 jkey;
    144   __u16 padding1;
    145   __u32 bthqp;
    146   __u64 sc_credits_addr;
    147   __u64 pio_bufbase_sop;
    148   __u64 pio_bufbase;
    149   __u64 rcvhdr_bufbase;
    150   __u64 rcvegr_bufbase;
    151   __u64 sdma_comp_bufbase;
    152   __u64 user_regbase;
    153   __u64 events_bufbase;
    154   __u64 status_bufbase;
    155   __u64 rcvhdrtail_base;
    156   __u64 subctxt_uregbase;
    157   __u64 subctxt_rcvegrbuf;
    158   __u64 subctxt_rcvhdrbuf;
    159 };
    160 enum sdma_req_opcode {
    161   EXPECTED = 0,
    162   EAGER
    163 };
    164 #define HFI1_SDMA_REQ_VERSION_MASK 0xF
    165 #define HFI1_SDMA_REQ_VERSION_SHIFT 0x0
    166 #define HFI1_SDMA_REQ_OPCODE_MASK 0xF
    167 #define HFI1_SDMA_REQ_OPCODE_SHIFT 0x4
    168 #define HFI1_SDMA_REQ_IOVCNT_MASK 0xFF
    169 #define HFI1_SDMA_REQ_IOVCNT_SHIFT 0x8
    170 struct sdma_req_info {
    171   __u16 ctrl;
    172   __u16 npkts;
    173   __u16 fragsize;
    174   __u16 comp_idx;
    175 } __packed;
    176 struct hfi1_kdeth_header {
    177   __le32 ver_tid_offset;
    178   __le16 jkey;
    179   __le16 hcrc;
    180   __le32 swdata[7];
    181 } __packed;
    182 struct hfi1_pkt_header {
    183   __le16 pbc[4];
    184   __be16 lrh[4];
    185   __be32 bth[3];
    186   struct hfi1_kdeth_header kdeth;
    187 } __packed;
    188 enum hfi1_ureg {
    189   ur_rcvhdrtail = 0,
    190   ur_rcvhdrhead = 1,
    191   ur_rcvegrindextail = 2,
    192   ur_rcvegrindexhead = 3,
    193   ur_rcvegroffsettail = 4,
    194   ur_maxreg,
    195   ur_rcvtidflowtable = 256
    196 };
    197 #endif
    198