linux-headers (unknown)

(root)/
include/
linux/
scif_ioctl.h
       1  /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
       2  /*
       3   * Intel MIC Platform Software Stack (MPSS)
       4   *
       5   * This file is provided under a dual BSD/GPLv2 license.  When using or
       6   * redistributing this file, you may do so under either license.
       7   *
       8   * GPL LICENSE SUMMARY
       9   *
      10   * Copyright(c) 2014 Intel Corporation.
      11   *
      12   * This program is free software; you can redistribute it and/or modify
      13   * it under the terms of version 2 of the GNU General Public License as
      14   * published by the Free Software Foundation.
      15   *
      16   * This program is distributed in the hope that it will be useful, but
      17   * WITHOUT ANY WARRANTY; without even the implied warranty of
      18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      19   * General Public License for more details.
      20   *
      21   * BSD LICENSE
      22   *
      23   * Copyright(c) 2014 Intel Corporation.
      24   *
      25   * Redistribution and use in source and binary forms, with or without
      26   * modification, are permitted provided that the following conditions
      27   * are met:
      28   *
      29   * * Redistributions of source code must retain the above copyright
      30   *   notice, this list of conditions and the following disclaimer.
      31   * * Redistributions in binary form must reproduce the above copyright
      32   *   notice, this list of conditions and the following disclaimer in
      33   *   the documentation and/or other materials provided with the
      34   *   distribution.
      35   * * Neither the name of Intel Corporation nor the names of its
      36   *   contributors may be used to endorse or promote products derived
      37   *   from this software without specific prior written permission.
      38   *
      39   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      40   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      41   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      42   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      43   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      44   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      45   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      46   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      47   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      48   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      49   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      50   *
      51   * Intel SCIF driver.
      52   *
      53   */
      54  /*
      55   * -----------------------------------------
      56   * SCIF IOCTL interface information
      57   * -----------------------------------------
      58   */
      59  #ifndef SCIF_IOCTL_H
      60  #define SCIF_IOCTL_H
      61  
      62  #include <linux/types.h>
      63  
      64  /**
      65   * struct scif_port_id - SCIF port information
      66   * @node:	node on which port resides
      67   * @port:	local port number
      68   */
      69  struct scif_port_id {
      70  	__u16 node;
      71  	__u16 port;
      72  };
      73  
      74  /**
      75   * struct scifioctl_connect - used for SCIF_CONNECT IOCTL
      76   * @self:	used to read back the assigned port_id
      77   * @peer:	destination node and port to connect to
      78   */
      79  struct scifioctl_connect {
      80  	struct scif_port_id	self;
      81  	struct scif_port_id	peer;
      82  };
      83  
      84  /**
      85   * struct scifioctl_accept - used for SCIF_ACCEPTREQ IOCTL
      86   * @flags:	flags
      87   * @peer:	global id of peer endpoint
      88   * @endpt:	new connected endpoint descriptor
      89   */
      90  struct scifioctl_accept {
      91  	__s32			flags;
      92  	struct scif_port_id	peer;
      93  	__u64			endpt;
      94  };
      95  
      96  /**
      97   * struct scifioctl_msg - used for SCIF_SEND/SCIF_RECV IOCTL
      98   * @msg:	message buffer address
      99   * @len:	message length
     100   * @flags:	flags
     101   * @out_len:	number of bytes sent/received
     102   */
     103  struct scifioctl_msg {
     104  	__u64	msg;
     105  	__s32	len;
     106  	__s32	flags;
     107  	__s32	out_len;
     108  };
     109  
     110  /**
     111   * struct scifioctl_reg - used for SCIF_REG IOCTL
     112   * @addr:	starting virtual address
     113   * @len:	length of range
     114   * @offset:	offset of window
     115   * @prot:	read/write protection
     116   * @flags:	flags
     117   * @out_offset:	offset returned
     118   */
     119  struct scifioctl_reg {
     120  	__u64		addr;
     121  	__u64		len;
     122  	__s64		offset;
     123  	__s32		prot;
     124  	__s32		flags;
     125  	__s64		out_offset;
     126  };
     127  
     128  /**
     129   * struct scifioctl_unreg - used for SCIF_UNREG IOCTL
     130   * @offset:	start of range to unregister
     131   * @len:	length of range to unregister
     132   */
     133  struct scifioctl_unreg {
     134  	__s64		offset;
     135  	__u64		len;
     136  };
     137  
     138  /**
     139   * struct scifioctl_copy - used for SCIF DMA copy IOCTLs
     140   *
     141   * @loffset:	offset in local registered address space to/from
     142   *		which to copy
     143   * @len:	length of range to copy
     144   * @roffset:	offset in remote registered address space to/from
     145   *		which to copy
     146   * @addr:	user virtual address to/from which to copy
     147   * @flags:	flags
     148   *
     149   * This structure is used for SCIF_READFROM, SCIF_WRITETO, SCIF_VREADFROM
     150   * and SCIF_VREADFROM IOCTL's.
     151   */
     152  struct scifioctl_copy {
     153  	__s64		loffset;
     154  	__u64		len;
     155  	__s64		roffset;
     156  	__u64		addr;
     157  	__s32		flags;
     158  };
     159  
     160  /**
     161   * struct scifioctl_fence_mark  - used for SCIF_FENCE_MARK IOCTL
     162   * @flags:	flags
     163   * @mark:	fence handle which is a pointer to a __s32
     164   */
     165  struct scifioctl_fence_mark {
     166  	__s32	flags;
     167  	__u64	mark;
     168  };
     169  
     170  /**
     171   * struct scifioctl_fence_signal - used for SCIF_FENCE_SIGNAL IOCTL
     172   * @loff:	local offset
     173   * @lval:	value to write to loffset
     174   * @roff:	remote offset
     175   * @rval:	value to write to roffset
     176   * @flags:	flags
     177   */
     178  struct scifioctl_fence_signal {
     179  	__s64		loff;
     180  	__u64		lval;
     181  	__s64		roff;
     182  	__u64		rval;
     183  	__s32		flags;
     184  };
     185  
     186  /**
     187   * struct scifioctl_node_ids - used for SCIF_GET_NODEIDS IOCTL
     188   * @nodes:	pointer to an array of node_ids
     189   * @self:	ID of the current node
     190   * @len:	length of array
     191   */
     192  struct scifioctl_node_ids {
     193  	__u64	nodes;
     194  	__u64	self;
     195  	__s32	len;
     196  };
     197  
     198  #define SCIF_BIND		_IOWR('s', 1, __u64)
     199  #define SCIF_LISTEN		_IOW('s', 2, __s32)
     200  #define SCIF_CONNECT		_IOWR('s', 3, struct scifioctl_connect)
     201  #define SCIF_ACCEPTREQ		_IOWR('s', 4, struct scifioctl_accept)
     202  #define SCIF_ACCEPTREG		_IOWR('s', 5, __u64)
     203  #define SCIF_SEND		_IOWR('s', 6, struct scifioctl_msg)
     204  #define SCIF_RECV		_IOWR('s', 7, struct scifioctl_msg)
     205  #define SCIF_REG		_IOWR('s', 8, struct scifioctl_reg)
     206  #define SCIF_UNREG		_IOWR('s', 9, struct scifioctl_unreg)
     207  #define SCIF_READFROM		_IOWR('s', 10, struct scifioctl_copy)
     208  #define SCIF_WRITETO		_IOWR('s', 11, struct scifioctl_copy)
     209  #define SCIF_VREADFROM		_IOWR('s', 12, struct scifioctl_copy)
     210  #define SCIF_VWRITETO		_IOWR('s', 13, struct scifioctl_copy)
     211  #define SCIF_GET_NODEIDS	_IOWR('s', 14, struct scifioctl_node_ids)
     212  #define SCIF_FENCE_MARK		_IOWR('s', 15, struct scifioctl_fence_mark)
     213  #define SCIF_FENCE_WAIT		_IOWR('s', 16, __s32)
     214  #define SCIF_FENCE_SIGNAL	_IOWR('s', 17, struct scifioctl_fence_signal)
     215  
     216  #endif /* SCIF_IOCTL_H */