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

fw.h (2515B)


      1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
      2/* Copyright (C) 2017-2018 Netronome Systems, Inc. */
      3
      4#ifndef NFP_BPF_FW_H
      5#define NFP_BPF_FW_H 1
      6
      7#include <linux/bitops.h>
      8#include <linux/types.h>
      9#include "../ccm.h"
     10
     11/* Kernel's enum bpf_reg_type is not uABI so people may change it breaking
     12 * our FW ABI.  In that case we will do translation in the driver.
     13 */
     14#define NFP_BPF_SCALAR_VALUE		1
     15#define NFP_BPF_MAP_VALUE		4
     16#define NFP_BPF_STACK			6
     17#define NFP_BPF_PACKET_DATA		8
     18
     19enum bpf_cap_tlv_type {
     20	NFP_BPF_CAP_TYPE_FUNC		= 1,
     21	NFP_BPF_CAP_TYPE_ADJUST_HEAD	= 2,
     22	NFP_BPF_CAP_TYPE_MAPS		= 3,
     23	NFP_BPF_CAP_TYPE_RANDOM		= 4,
     24	NFP_BPF_CAP_TYPE_QUEUE_SELECT	= 5,
     25	NFP_BPF_CAP_TYPE_ADJUST_TAIL	= 6,
     26	NFP_BPF_CAP_TYPE_ABI_VERSION	= 7,
     27	NFP_BPF_CAP_TYPE_CMSG_MULTI_ENT	= 8,
     28};
     29
     30struct nfp_bpf_cap_tlv_func {
     31	__le32 func_id;
     32	__le32 func_addr;
     33};
     34
     35struct nfp_bpf_cap_tlv_adjust_head {
     36	__le32 flags;
     37	__le32 off_min;
     38	__le32 off_max;
     39	__le32 guaranteed_sub;
     40	__le32 guaranteed_add;
     41};
     42
     43#define NFP_BPF_ADJUST_HEAD_NO_META	BIT(0)
     44
     45struct nfp_bpf_cap_tlv_maps {
     46	__le32 types;
     47	__le32 max_maps;
     48	__le32 max_elems;
     49	__le32 max_key_sz;
     50	__le32 max_val_sz;
     51	__le32 max_elem_sz;
     52};
     53
     54/*
     55 * Types defined for map related control messages
     56 */
     57
     58/* BPF ABIv2 fixed-length control message fields */
     59#define CMSG_MAP_KEY_LW			16
     60#define CMSG_MAP_VALUE_LW		16
     61
     62enum nfp_bpf_cmsg_status {
     63	CMSG_RC_SUCCESS			= 0,
     64	CMSG_RC_ERR_MAP_FD		= 1,
     65	CMSG_RC_ERR_MAP_NOENT		= 2,
     66	CMSG_RC_ERR_MAP_ERR		= 3,
     67	CMSG_RC_ERR_MAP_PARSE		= 4,
     68	CMSG_RC_ERR_MAP_EXIST		= 5,
     69	CMSG_RC_ERR_MAP_NOMEM		= 6,
     70	CMSG_RC_ERR_MAP_E2BIG		= 7,
     71};
     72
     73struct cmsg_reply_map_simple {
     74	struct nfp_ccm_hdr hdr;
     75	__be32 rc;
     76};
     77
     78struct cmsg_req_map_alloc_tbl {
     79	struct nfp_ccm_hdr hdr;
     80	__be32 key_size;		/* in bytes */
     81	__be32 value_size;		/* in bytes */
     82	__be32 max_entries;
     83	__be32 map_type;
     84	__be32 map_flags;		/* reserved */
     85};
     86
     87struct cmsg_reply_map_alloc_tbl {
     88	struct cmsg_reply_map_simple reply_hdr;
     89	__be32 tid;
     90};
     91
     92struct cmsg_req_map_free_tbl {
     93	struct nfp_ccm_hdr hdr;
     94	__be32 tid;
     95};
     96
     97struct cmsg_reply_map_free_tbl {
     98	struct cmsg_reply_map_simple reply_hdr;
     99	__be32 count;
    100};
    101
    102struct cmsg_req_map_op {
    103	struct nfp_ccm_hdr hdr;
    104	__be32 tid;
    105	__be32 count;
    106	__be32 flags;
    107	u8 data[];
    108};
    109
    110struct cmsg_reply_map_op {
    111	struct cmsg_reply_map_simple reply_hdr;
    112	__be32 count;
    113	__be32 resv;
    114	u8 data[];
    115};
    116
    117struct cmsg_bpf_event {
    118	struct nfp_ccm_hdr hdr;
    119	__be32 cpu_id;
    120	__be64 map_ptr;
    121	__be32 data_size;
    122	__be32 pkt_size;
    123	u8 data[];
    124};
    125#endif