The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/powerpc/pseries/phyp-hvcall.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (C) 2010 Andreas Tobler
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   19  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   20  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   26  *
   27  * $FreeBSD$
   28  */
   29 
   30 #ifndef _PSERIES_PHYP_HVCALL_H_
   31 #define _PSERIES_PHYP_HVCALL_H_
   32 
   33 /* Information taken from: Power.org PAPR, Version 2.4 (December 7, 2009). */
   34 
   35 #include <sys/types.h>
   36 
   37 /* Return codes. */
   38 
   39 #define H_SUCCESS       0
   40 #define H_BUSY          1  /* Hardware Busy -- Retry Later. */
   41 #define H_CLOSED        2  /* Virtual I/O connection is closed. */
   42 #define H_NOT_AVAILABLE 3
   43 #define H_CONSTRAINED   4  /* The request called for resources in excess of
   44                               the maximum allowed. The resultant allocation
   45                               was constrained to maximum allowed. */
   46 #define H_PARTIAL       5  /* The request completed only partially successful.
   47                               Parameters were valid but some specific hcall
   48                               function condition prevented fully completing the
   49                               architected function, see the specific hcall
   50                               definition for possible reasons. */
   51 #define H_IN_PROGRESS     14
   52 #define H_PAGE_REGISTERED 15
   53 #define H_PARTIAL_STORE   16
   54 #define H_PENDING         17
   55 #define H_CONTINUE        18
   56 
   57 #define H_LONG_BUSY_ORDER_1_MS   9900  /* This return code is identical to
   58                                           H_BUSY, but with the added bonus of a
   59                                           hint to the partition OS. If the
   60                                           partition OS can delay for 1
   61                                           millisecond, the hcall will likely
   62                                           succeed on a new hcall with no further
   63                                           busy return codes. If the partition OS
   64                                           cannot handle a delay, they are
   65                                           certainly free to immediately turn
   66                                           around and try again. */
   67 #define H_LONG_BUSY_ORDER_10_MS  9901  /* Similar to H_LONG_BUSY_ORDER_1_MS, but
   68                                           the hint is 10mSec wait this time. */
   69 
   70 #define H_LONG_BUSY_ORDER_100_MS 9902  /* Similar to H_LONG_BUSY_ORDER_1_MS, but
   71                                           the hint is 100mSec wait this time. */ 
   72 
   73 #define H_LONG_BUSY_ORDER_1_S    9903  /* Similar to H_LONG_BUSY_ORDER_1_MS, but
   74                                           the hint is 1Sec wait this time. */
   75 #define H_LONG_BUSY_ORDER_10_S   9904  /* Similar to H_LONG_BUSY_ORDER_1_MS, but
   76                                           the hint is 10Sec wait this time. */
   77 #define H_LONG_BUSY_ORDER_100_S  9905  /* Similar to H_LONG_BUSY_ORDER_1_MS, but
   78                                           the hint is 100Sec wait this time. */
   79 
   80 #define H_HARDWARE   -1  /* Error. */
   81 #define H_FUNCTION   -2  /* Not supported. */
   82 #define H_PRIVILEGE  -3  /* Caller not in privileged mode. */
   83 #define H_PARAMETER  -4  /* Outside valid range for partition or conflicting. */
   84 #define H_BAD_MODE   -5  /* Illegal MSR value. */
   85 #define H_PTEG_FULL  -6  /* The requested pteg was full. */
   86 #define H_NOT_FOUND  -7  /* The requested entitiy was not found. */
   87 #define H_RESERVED_DABR -8  /* The requested address is reserved by the
   88                                hypervisor on this processor. */
   89 #define H_NOMEM      -9
   90 #define H_AUTHORITY -10  /* The caller did not have authority to perform the
   91                             function. */
   92 #define H_PERMISSION -11  /* The mapping specified by the request does not
   93                              allow for the requested transfer. */
   94 #define H_DROPPED   -12  /* One or more packets could not be delivered to
   95                             their requested destinations. */
   96 #define H_S_PARM   -13  /* The source parameter is illegal. */
   97 #define H_D_PARM   -14  /* The destination parameter is illegal. */
   98 #define H_R_PARM   -15  /* The remote TCE mapping is illegal. */
   99 #define H_RESOURCE  -16  /* One or more required resources are in use. */
  100 #define H_ADAPTER_PARM -17  /* Invalid adapter. */
  101 #define H_RH_PARM  -18  /* Resource not valid or logical partition
  102                            conflicting. */
  103 #define H_RCQ_PARM -19  /* RCQ not valid or logical partition conflicting. */
  104 #define H_SCQ_PARM -20  /* SCQ not valid or logical partition conflicting. */
  105 #define H_EQ_PARM -21  /* EQ not valid or logical partition conflicting. */
  106 #define H_RT_PARM -22  /* Invalid resource type. */
  107 #define H_ST_PARM -23  /* Invalid service type. */
  108 #define H_SIGT_PARM -24 /* Invalid signalling type. */
  109 #define H_TOKEN_PARM -25  /* Invalid token. */
  110 #define H_MLENGTH_PARM -27  /* Invalid memory length. */
  111 #define H_MEM_PARM -28  /* Invalid memory I/O virtual address. */
  112 #define H_MEM_ACCESS_PARM -29  /* Invalid memory access control. */
  113 #define H_ATTR_PARM -30  /* Invalid attribute value. */
  114 #define H_PORT_PARM -31  /* Invalid port number. */
  115 #define H_MCG_PARM -32  /* Invalid multicast group. */
  116 #define H_VL_PARM -33  /* Invalid virtual lane. */
  117 #define H_TSIZE_PARM -34  /* Invalid trace size. */
  118 #define H_TRACE_PARM -35  /* Invalid trace buffer. */
  119 #define H_MASK_PARM -37  /* Invalid mask value. */
  120 #define H_MCG_FULL -38  /* Multicast attachments exceeded. */
  121 #define H_ALIAS_EXIST -39  /* Alias QP already defined. */
  122 #define H_P_COUNTER -40  /* Invalid counter specification. */
  123 #define H_TABLE_FULL -41  /* Resource page table full. */
  124 #define H_ALT_TABLE -42  /* Alternate table already exists / alternate page
  125                             table not available. */
  126 #define H_MR_CONDITION -43  /* Invalid memory region condition. */
  127 #define H_NOT_ENOUGH_RESOURCES -44  /* Insufficient resources. */
  128 #define H_R_STATE -45  /* Invalid resource state condition or sequencing
  129                           error. */
  130 #define H_RESCINDED -46
  131 #define H_ABORTED -54
  132 #define H_P2 -55
  133 #define H_P3 -56
  134 #define H_P4 -57
  135 #define H_P5 -58
  136 #define H_P6 -59
  137 #define H_P7 -60
  138 #define H_P8 -61
  139 #define H_P9 -62
  140 #define H_NOOP -63
  141 #define H_TOO_BIG -64
  142 
  143 #define H_UNSUPPORTED -67  /* Parameter value outside of the range supported
  144                               by this implementation. */
  145 
  146 /* Flags. */
  147 /* Table 168. Page Frame Table Access flags field definition. */
  148 #define H_EXACT                 (1UL<<(63-24))
  149 #define H_R_XLATE               (1UL<<(63-25))
  150 #define H_READ_4                (1UL<<(63-26))
  151 
  152 /* Table 178. CMO Page Usage State flags Definition. */
  153 #define H_PAGE_STATE_CHANGE     (1UL<<(63-28))
  154 #define H_PAGE_UNUSED           ((1UL<<(63-29)) | (1UL<<(63-30)))
  155 #define H_PAGE_SET_UNUSED       (H_PAGE_STATE_CHANGE | H_PAGE_UNUSED)
  156 #define H_PAGE_SET_LOANED       (H_PAGE_SET_UNUSED | (1UL<<(63-31)))
  157 #define H_PAGE_SET_ACTIVE       H_PAGE_STATE_CHANGE
  158 
  159 /* Table 168. Page Frame Table Access flags field definition. */
  160 #define H_AVPN                  (1UL<<(63-32))
  161 #define H_ANDCOND               (1UL<<(63-33))
  162 
  163 #define H_ICACHE_INVALIDATE     (1UL<<(63-40))
  164 #define H_ICACHE_SYNCHRONIZE    (1UL<<(63-41))
  165 
  166 #define H_ZERO_PAGE             (1UL<<(63-48))
  167 #define H_COPY_PAGE             (1UL<<(63-49))
  168 
  169 #define H_N (1UL<<(63-61))
  170 #define H_PP1 (1UL<<(63-62))
  171 #define H_PP2 (1UL<<(63-63))
  172 
  173 /* H_SET_MODE resource identifiers from 14.5.4.3.5. */
  174 #define H_SET_MODE_RSRC_CIABR           0x1     /* All versions */
  175 #define H_SET_MODE_RSRC_DAWR0           0x2     /* All versions */
  176 #define H_SET_MODE_RSRC_INTR_TRANS_MODE 0x3     /* All versions */
  177 #define H_SET_MODE_RSRC_ILE             0x4     /* PAPR 2.8 / ISA 2.07 */
  178 #define H_SET_MODE_RSRC_DAWR1           0x5     /* ISA 3.1 Future support */
  179 
  180 /* H_REGISTER_PROC_TBL identifiers. */
  181 #define PROC_TABLE_OP_MASK      0x18
  182 #define PROC_TABLE_DEREG        0x10
  183 #define PROC_TABLE_NEW          0x18
  184 #define PROC_TABLE_TYPE_MASK    0x06
  185 #define PROC_TABLE_HPT_SLB      0x00
  186 #define PROC_TABLE_GTSE         0x01
  187 #define PROC_TABLE_HPT_PT       0x02
  188 #define PROC_TABLE_RADIX        0x04
  189 
  190 /* pSeries hypervisor opcodes. */
  191 #define H_REMOVE                0x04
  192 #define H_ENTER                 0x08
  193 #define H_READ                  0x0c
  194 #define H_CLEAR_MOD             0x10
  195 #define H_CLEAR_REF             0x14
  196 #define H_PROTECT               0x18
  197 #define H_GET_TCE               0x1c
  198 #define H_PUT_TCE               0x20
  199 #define H_SET_SPRG0             0x24
  200 #define H_SET_DABR              0x28
  201 #define H_PAGE_INIT             0x2c
  202 #define H_SET_ASR               0x30
  203 #define H_ASR_ON                0x34
  204 #define H_ASR_OFF               0x38
  205 #define H_LOGICAL_CI_LOAD       0x3c
  206 #define H_LOGICAL_CI_STORE      0x40
  207 #define H_LOGICAL_CACHE_LOAD    0x44
  208 #define H_LOGICAL_CACHE_STORE   0x48
  209 #define H_LOGICAL_ICBI          0x4c
  210 #define H_LOGICAL_DCBF          0x50
  211 #define H_GET_TERM_CHAR         0x54
  212 #define H_PUT_TERM_CHAR         0x58
  213 #define H_REAL_TO_LOGICAL       0x5c
  214 #define H_HYPERVISOR_DATA       0x60
  215 #define H_EOI                   0x64
  216 #define H_CPPR                  0x68
  217 #define H_IPI                   0x6c
  218 #define H_IPOLL                 0x70
  219 #define H_XIRR                  0x74
  220 #define H_MIGRATE_DMA           0x78
  221 #define H_PERFMON               0x7c
  222 #define H_REGISTER_VPA          0xdc
  223 #define H_CEDE                  0xe0
  224 #define H_CONFER                0xe4
  225 #define H_PROD                  0xe8
  226 #define H_GET_PPP               0xec
  227 #define H_SET_PPP               0xf0
  228 #define H_PURR                  0xf4
  229 #define H_PIC                   0xf8
  230 #define H_REG_CRQ               0xfc
  231 #define H_FREE_CRQ              0x100
  232 #define H_VIO_SIGNAL            0x104
  233 #define H_SEND_CRQ              0x108
  234 #define H_PUT_RTCE              0x10c
  235 #define H_COPY_RDMA             0x110
  236 #define H_REGISTER_LOGICAL_LAN  0x114
  237 #define H_FREE_LOGICAL_LAN      0x118
  238 #define H_ADD_LOGICAL_LAN_BUFFER 0x11c
  239 #define H_SEND_LOGICAL_LAN      0x120
  240 #define H_BULK_REMOVE           0x124
  241 #define H_WRITE_RDMA            0x128
  242 #define H_READ_RDMA             0x12c
  243 #define H_MULTICAST_CTRL        0x130
  244 #define H_SET_XDABR             0x134
  245 #define H_STUFF_TCE             0x138
  246 #define H_PUT_TCE_INDIRECT      0x13c
  247 #define H_PUT_RTCE_INDIRECT     0x140
  248 #define H_CHANGE_LOGICAL_LAN_MAC 0x14c
  249 #define H_VTERM_PARTNER_INFO    0x150
  250 #define H_REGISTER_VTERM        0x154
  251 #define H_FREE_VTERM            0x158
  252 /* Reserved ....
  253 #define H_RESET_EVENTS          0x15c
  254 #define H_ALLOC_RESOURCE        0x160
  255 #define H_FREE_RESOURCE         0x164
  256 #define H_MODIFY_QP             0x168
  257 #define H_QUERY_QP              0x16c
  258 #define H_REREGISTER_PMR        0x170
  259 #define H_REGISTER_SMR          0x174
  260 #define H_QUERY_MR              0x178
  261 #define H_QUERY_MW              0x17c
  262 #define H_QUERY_HCA             0x180
  263 #define H_QUERY_PORT            0x184
  264 #define H_MODIFY_PORT           0x188
  265 #define H_DEFINE_AQP1           0x18c
  266 #define H_GET_TRACE_BUFFER      0x190
  267 #define H_DEFINE_AQP0           0x194
  268 #define H_RESIZE_MR             0x198
  269 #define H_ATTACH_MCQP           0x19c
  270 #define H_DETACH_MCQP           0x1a0
  271 #define H_CREATE_RPT            0x1a4
  272 #define H_REMOVE_RPT            0x1a8
  273 #define H_REGISTER_RPAGES       0x1ac
  274 #define H_DISABLE_AND_GETC      0x1b0
  275 #define H_ERROR_DATA            0x1b4
  276 #define H_GET_HCA_INFO          0x1b8
  277 #define H_GET_PERF_COUNT        0x1bc
  278 #define H_MANAGE_TRACE          0x1c0
  279 .... */
  280 #define H_FREE_LOGICAL_LAN_BUFFER 0x1d4
  281 #define H_POLL_PENDING          0x1d8
  282 /* Reserved ....
  283 #define H_QUERY_INT_STATE       0x1e4
  284 .... */
  285 #define H_LIOBN_ATTRIBUTES      0x240
  286 #define H_ILLAN_ATTRIBUTES      0x244
  287 #define H_REMOVE_RTCE           0x24c
  288 /* Reserved ...
  289 #define H_MODIFY_HEA_QP         0x250
  290 #define H_QUERY_HEA_QP          0x254
  291 #define H_QUERY_HEA             0x258
  292 #define H_QUERY_HEA_PORT        0x25c
  293 #define H_MODIFY_HEA_PORT       0x260
  294 #define H_REG_BCMC              0x264
  295 #define H_DEREG_BCMC            0x268
  296 #define H_REGISTER_HEA_RPAGES   0x26c
  297 #define H_DISABLE_AND_GET_HEA   0x270
  298 #define H_GET_HEA_INFO          0x274
  299 #define H_ALLOC_HEA_RESOURCE    0x278
  300 #define H_ADD_CONN              0x284
  301 #define H_DEL_CONN              0x288
  302 ... */
  303 #define H_JOIN                  0x298
  304 #define H_DONOR_OPERATION       0x29c
  305 #define H_VASI_SIGNAL           0x2a0
  306 #define H_VASI_STATE            0x2a4
  307 #define H_VIOCTL                0x2a8
  308 #define H_VRMASD                0x2ac
  309 #define H_ENABLE_CRQ            0x2b0
  310 /* Reserved ...
  311 #define H_GET_EM_PARMS          0x2b8
  312 ... */
  313 #define H_VPM_STAT              0x2bc
  314 #define H_SET_MPP               0x2d0
  315 #define H_GET_MPP               0x2d4
  316 #define H_MO_PERF               0x2d8
  317 #define H_REG_SUB_CRQ           0x2dc
  318 #define H_FREE_SUB_CRQ          0x2e0
  319 #define H_SEND_SUB_CRQ          0x2e4
  320 #define H_SEND_SUB_CRQ_IND      0x2e8
  321 #define H_HOME_NODE_ASSOC       0x2ec
  322 /* Reserved ... */
  323 #define H_BEST_ENERGY           0x2f4
  324 #define H_REG_SNS               0x2f8
  325 #define H_X_XIRR                0x2fc
  326 #define H_RANDOM                0x300
  327 /* Reserved ... */
  328 #define H_COP_OP                0x304
  329 #define H_STOP_COP_OP           0x308
  330 #define H_GET_MPP_X             0x314
  331 #define H_SET_MODE              0x31C
  332 /* Reserved ... */
  333 #define H_GET_DMA_XLATES_L      0x324
  334 /* Reserved ... */
  335 #define H_REGISTER_PROC_TBL     0x37c
  336 #define MAX_HCALL_OPCODE        H_REGISTER_PROC_TBL
  337 
  338 int64_t phyp_hcall(uint64_t opcode, ...);
  339 int64_t phyp_pft_hcall(uint64_t opcode, uint64_t flags, uint64_t pteidx,
  340     uint64_t pte_hi, uint64_t pte_lo, uint64_t *pteidx_out, uint64_t *ptelo_out,
  341     uint64_t *r6);
  342 
  343 #endif /* _PSERIES_PHYP_HVCALL_H_ */

Cache object: 4162d8751a6fcaf11898c8009bf38359


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.