~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/powerpc/include/asm/hvcall.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/powerpc/include/asm/hvcall.h (Architecture alpha) and /arch/sparc64/include/asm-sparc64/hvcall.h (Architecture sparc64)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 #ifndef _ASM_POWERPC_HVCALL_H                     
  3 #define _ASM_POWERPC_HVCALL_H                     
  4 #ifdef __KERNEL__                                 
  5                                                   
  6 #define HVSC                    .long 0x440000    
  7                                                   
  8 #define H_SUCCESS       0                         
  9 #define H_BUSY          1       /* Hardware bu    
 10 #define H_CLOSED        2       /* Resource cl    
 11 #define H_NOT_AVAILABLE 3                         
 12 #define H_CONSTRAINED   4       /* Resource re    
 13 #define H_PARTIAL       5                         
 14 #define H_IN_PROGRESS   14      /* Kind of lik    
 15 #define H_PAGE_REGISTERED 15                      
 16 #define H_PARTIAL_STORE   16                      
 17 #define H_PENDING       17      /* returned fr    
 18 #define H_CONTINUE      18      /* Returned fr    
 19 #define H_LONG_BUSY_START_RANGE         9900      
 20 #define H_LONG_BUSY_ORDER_1_MSEC        9900      
 21                                                   
 22 #define H_LONG_BUSY_ORDER_10_MSEC       9901      
 23                                                   
 24 #define H_LONG_BUSY_ORDER_100_MSEC      9902      
 25                                                   
 26 #define H_LONG_BUSY_ORDER_1_SEC         9903      
 27                                                   
 28 #define H_LONG_BUSY_ORDER_10_SEC        9904      
 29                                                   
 30 #define H_LONG_BUSY_ORDER_100_SEC       9905      
 31                                                   
 32 #define H_LONG_BUSY_END_RANGE           9905      
 33                                                   
 34 /* Internal value used in book3s_hv kvm suppor    
 35 #define H_TOO_HARD      9999                      
 36                                                   
 37 #define H_HARDWARE      -1      /* Hardware er    
 38 #define H_FUNCTION      -2      /* Function no    
 39 #define H_PRIVILEGE     -3      /* Caller not     
 40 #define H_PARAMETER     -4      /* Parameter i    
 41 #define H_BAD_MODE      -5      /* Illegal msr    
 42 #define H_PTEG_FULL     -6      /* PTEG is ful    
 43 #define H_NOT_FOUND     -7      /* PTE was not    
 44 #define H_RESERVED_DABR -8      /* DABR addres    
 45 #define H_NO_MEM        -9                        
 46 #define H_AUTHORITY     -10                       
 47 #define H_PERMISSION    -11                       
 48 #define H_DROPPED       -12                       
 49 #define H_SOURCE_PARM   -13                       
 50 #define H_DEST_PARM     -14                       
 51 #define H_REMOTE_PARM   -15                       
 52 #define H_RESOURCE      -16                       
 53 #define H_ADAPTER_PARM  -17                       
 54 #define H_RH_PARM       -18                       
 55 #define H_RCQ_PARM      -19                       
 56 #define H_SCQ_PARM      -20                       
 57 #define H_EQ_PARM       -21                       
 58 #define H_RT_PARM       -22                       
 59 #define H_ST_PARM       -23                       
 60 #define H_SIGT_PARM     -24                       
 61 #define H_TOKEN_PARM    -25                       
 62 #define H_MLENGTH_PARM  -27                       
 63 #define H_MEM_PARM      -28                       
 64 #define H_MEM_ACCESS_PARM -29                     
 65 #define H_ATTR_PARM     -30                       
 66 #define H_PORT_PARM     -31                       
 67 #define H_MCG_PARM      -32                       
 68 #define H_VL_PARM       -33                       
 69 #define H_TSIZE_PARM    -34                       
 70 #define H_TRACE_PARM    -35                       
 71                                                   
 72 #define H_MASK_PARM     -37                       
 73 #define H_MCG_FULL      -38                       
 74 #define H_ALIAS_EXIST   -39                       
 75 #define H_P_COUNTER     -40                       
 76 #define H_TABLE_FULL    -41                       
 77 #define H_ALT_TABLE     -42                       
 78 #define H_MR_CONDITION  -43                       
 79 #define H_NOT_ENOUGH_RESOURCES -44                
 80 #define H_R_STATE       -45                       
 81 #define H_RESCINDED     -46                       
 82 #define H_ABORTED       -54                       
 83 #define H_P2            -55                       
 84 #define H_P3            -56                       
 85 #define H_P4            -57                       
 86 #define H_P5            -58                       
 87 #define H_P6            -59                       
 88 #define H_P7            -60                       
 89 #define H_P8            -61                       
 90 #define H_P9            -62                       
 91 #define H_NOOP          -63                       
 92 #define H_TOO_BIG       -64                       
 93 #define H_UNSUPPORTED   -67                       
 94 #define H_OVERLAP       -68                       
 95 #define H_INTERRUPT     -69                       
 96 #define H_BAD_DATA      -70                       
 97 #define H_NOT_ACTIVE    -71                       
 98 #define H_SG_LIST       -72                       
 99 #define H_OP_MODE       -73                       
100 #define H_COP_HW        -74                       
101 #define H_STATE         -75                       
102 #define H_IN_USE        -77                       
103                                                   
104 #define H_INVALID_ELEMENT_ID                      
105 #define H_INVALID_ELEMENT_SIZE                    
106 #define H_INVALID_ELEMENT_VALUE                   
107 #define H_INPUT_BUFFER_NOT_DEFINED                
108 #define H_INPUT_BUFFER_TOO_SMALL                  
109 #define H_OUTPUT_BUFFER_NOT_DEFINED               
110 #define H_OUTPUT_BUFFER_TOO_SMALL                 
111 #define H_PARTITION_PAGE_TABLE_NOT_DEFINED        
112 #define H_GUEST_VCPU_STATE_NOT_HV_OWNED           
113                                                   
114                                                   
115 #define H_UNSUPPORTED_FLAG_START        -256      
116 #define H_UNSUPPORTED_FLAG_END          -511      
117 #define H_MULTI_THREADS_ACTIVE  -9005             
118 #define H_OUTSTANDING_COP_OPS   -9006             
119                                                   
120                                                   
121 /* Long Busy is a condition that can be return    
122  * when a call cannot be completed now, but th    
123  * should be retried later.  This prevents cal    
124  * firmware for long periods of time.  Annoyin    
125  * a range of return codes, hinting at how lon    
126  * retrying.  If you don't care for the hint,     
127  * way to check for the long_busy return codes    
128  */                                               
129 #define H_IS_LONG_BUSY(x)  ((x >= H_LONG_BUSY_    
130                              && (x <= H_LONG_B    
131                                                   
132 /* Flags */                                       
133 #define H_LARGE_PAGE            (1UL<<(63-16))    
134 #define H_EXACT                 (1UL<<(63-24))    
135 #define H_R_XLATE               (1UL<<(63-25))    
136 #define H_READ_4                (1UL<<(63-26))    
137 #define H_PAGE_STATE_CHANGE     (1UL<<(63-28))    
138 #define H_PAGE_UNUSED           ((1UL<<(63-29)    
139 #define H_PAGE_SET_UNUSED       (H_PAGE_STATE_    
140 #define H_PAGE_SET_LOANED       (H_PAGE_SET_UN    
141 #define H_PAGE_SET_ACTIVE       H_PAGE_STATE_C    
142 #define H_AVPN                  (1UL<<(63-32))    
143 #define H_ANDCOND               (1UL<<(63-33))    
144 #define H_LOCAL                 (1UL<<(63-35))    
145 #define H_ICACHE_INVALIDATE     (1UL<<(63-40))    
146 #define H_ICACHE_SYNCHRONIZE    (1UL<<(63-41))    
147 #define H_COALESCE_CAND (1UL<<(63-42))  /* pag    
148 #define H_ZERO_PAGE             (1UL<<(63-48))    
149 #define H_COPY_PAGE             (1UL<<(63-49))    
150 #define H_N                     (1UL<<(63-61))    
151 #define H_PP1                   (1UL<<(63-62))    
152 #define H_PP2                   (1UL<<(63-63))    
153                                                   
154 /* Flags for H_REGISTER_VPA subfunction field     
155 #define H_VPA_FUNC_SHIFT        (63-18) /* Bit    
156 #define H_VPA_FUNC_MASK         7UL               
157 #define H_VPA_REG_VPA           1UL     /* Reg    
158 #define H_VPA_REG_DTL           2UL     /* Reg    
159 #define H_VPA_REG_SLB           3UL     /* Reg    
160 #define H_VPA_DEREG_VPA         5UL     /* Der    
161 #define H_VPA_DEREG_DTL         6UL     /* Der    
162 #define H_VPA_DEREG_SLB         7UL     /* Der    
163                                                   
164 /* VASI States */                                 
165 #define H_VASI_INVALID          0                 
166 #define H_VASI_ENABLED          1                 
167 #define H_VASI_ABORTED          2                 
168 #define H_VASI_SUSPENDING       3                 
169 #define H_VASI_SUSPENDED        4                 
170 #define H_VASI_RESUMED          5                 
171 #define H_VASI_COMPLETED        6                 
172                                                   
173 /* VASI signal codes. Only the Cancel code is     
174 #define H_VASI_SIGNAL_CANCEL    1                 
175 #define H_VASI_SIGNAL_ABORT     2                 
176 #define H_VASI_SIGNAL_SUSPEND   3                 
177 #define H_VASI_SIGNAL_COMPLETE  4                 
178 #define H_VASI_SIGNAL_ENABLE    5                 
179 #define H_VASI_SIGNAL_FAILOVER  6                 
180                                                   
181 /* Each control block has to be on a 4K bounda    
182 #define H_CB_ALIGNMENT          4096              
183                                                   
184 /* pSeries hypervisor opcodes */                  
185 #define H_REMOVE                0x04              
186 #define H_ENTER                 0x08              
187 #define H_READ                  0x0c              
188 #define H_CLEAR_MOD             0x10              
189 #define H_CLEAR_REF             0x14              
190 #define H_PROTECT               0x18              
191 #define H_GET_TCE               0x1c              
192 #define H_PUT_TCE               0x20              
193 #define H_SET_SPRG0             0x24              
194 #define H_SET_DABR              0x28              
195 #define H_PAGE_INIT             0x2c              
196 #define H_SET_ASR               0x30              
197 #define H_ASR_ON                0x34              
198 #define H_ASR_OFF               0x38              
199 #define H_LOGICAL_CI_LOAD       0x3c              
200 #define H_LOGICAL_CI_STORE      0x40              
201 #define H_LOGICAL_CACHE_LOAD    0x44              
202 #define H_LOGICAL_CACHE_STORE   0x48              
203 #define H_LOGICAL_ICBI          0x4c              
204 #define H_LOGICAL_DCBF          0x50              
205 #define H_GET_TERM_CHAR         0x54              
206 #define H_PUT_TERM_CHAR         0x58              
207 #define H_REAL_TO_LOGICAL       0x5c              
208 #define H_HYPERVISOR_DATA       0x60              
209 #define H_EOI                   0x64              
210 #define H_CPPR                  0x68              
211 #define H_IPI                   0x6c              
212 #define H_IPOLL                 0x70              
213 #define H_XIRR                  0x74              
214 #define H_PERFMON               0x7c              
215 #define H_MIGRATE_DMA           0x78              
216 #define H_REGISTER_VPA          0xDC              
217 #define H_CEDE                  0xE0              
218 #define H_CONFER                0xE4              
219 #define H_PROD                  0xE8              
220 #define H_GET_PPP               0xEC              
221 #define H_SET_PPP               0xF0              
222 #define H_PURR                  0xF4              
223 #define H_PIC                   0xF8              
224 #define H_REG_CRQ               0xFC              
225 #define H_FREE_CRQ              0x100             
226 #define H_VIO_SIGNAL            0x104             
227 #define H_SEND_CRQ              0x108             
228 #define H_COPY_RDMA             0x110             
229 #define H_REGISTER_LOGICAL_LAN  0x114             
230 #define H_FREE_LOGICAL_LAN      0x118             
231 #define H_ADD_LOGICAL_LAN_BUFFER 0x11C            
232 #define H_SEND_LOGICAL_LAN      0x120             
233 #define H_BULK_REMOVE           0x124             
234 #define H_MULTICAST_CTRL        0x130             
235 #define H_SET_XDABR             0x134             
236 #define H_STUFF_TCE             0x138             
237 #define H_PUT_TCE_INDIRECT      0x13C             
238 #define H_CHANGE_LOGICAL_LAN_MAC 0x14C            
239 #define H_VTERM_PARTNER_INFO    0x150             
240 #define H_REGISTER_VTERM        0x154             
241 #define H_FREE_VTERM            0x158             
242 #define H_RESET_EVENTS          0x15C             
243 #define H_ALLOC_RESOURCE        0x160             
244 #define H_FREE_RESOURCE         0x164             
245 #define H_MODIFY_QP             0x168             
246 #define H_QUERY_QP              0x16C             
247 #define H_REREGISTER_PMR        0x170             
248 #define H_REGISTER_SMR          0x174             
249 #define H_QUERY_MR              0x178             
250 #define H_QUERY_MW              0x17C             
251 #define H_QUERY_HCA             0x180             
252 #define H_QUERY_PORT            0x184             
253 #define H_MODIFY_PORT           0x188             
254 #define H_DEFINE_AQP1           0x18C             
255 #define H_GET_TRACE_BUFFER      0x190             
256 #define H_DEFINE_AQP0           0x194             
257 #define H_RESIZE_MR             0x198             
258 #define H_ATTACH_MCQP           0x19C             
259 #define H_DETACH_MCQP           0x1A0             
260 #define H_CREATE_RPT            0x1A4             
261 #define H_REMOVE_RPT            0x1A8             
262 #define H_REGISTER_RPAGES       0x1AC             
263 #define H_DISABLE_AND_GET       0x1B0             
264 #define H_ERROR_DATA            0x1B4             
265 #define H_GET_HCA_INFO          0x1B8             
266 #define H_GET_PERF_COUNT        0x1BC             
267 #define H_MANAGE_TRACE          0x1C0             
268 #define H_GET_CPU_CHARACTERISTICS 0x1C8           
269 #define H_FREE_LOGICAL_LAN_BUFFER 0x1D4           
270 #define H_QUERY_INT_STATE       0x1E4             
271 #define H_POLL_PENDING          0x1D8             
272 #define H_ILLAN_ATTRIBUTES      0x244             
273 #define H_MODIFY_HEA_QP         0x250             
274 #define H_QUERY_HEA_QP          0x254             
275 #define H_QUERY_HEA             0x258             
276 #define H_QUERY_HEA_PORT        0x25C             
277 #define H_MODIFY_HEA_PORT       0x260             
278 #define H_REG_BCMC              0x264             
279 #define H_DEREG_BCMC            0x268             
280 #define H_REGISTER_HEA_RPAGES   0x26C             
281 #define H_DISABLE_AND_GET_HEA   0x270             
282 #define H_GET_HEA_INFO          0x274             
283 #define H_ALLOC_HEA_RESOURCE    0x278             
284 #define H_ADD_CONN              0x284             
285 #define H_DEL_CONN              0x288             
286 #define H_JOIN                  0x298             
287 #define H_VASI_SIGNAL           0x2A0             
288 #define H_VASI_STATE            0x2A4             
289 #define H_VIOCTL                0x2A8             
290 #define H_ENABLE_CRQ            0x2B0             
291 #define H_GET_EM_PARMS          0x2B8             
292 #define H_SET_MPP               0x2D0             
293 #define H_GET_MPP               0x2D4             
294 #define H_REG_SUB_CRQ           0x2DC             
295 #define H_HOME_NODE_ASSOCIATIVITY 0x2EC           
296 #define H_FREE_SUB_CRQ          0x2E0             
297 #define H_SEND_SUB_CRQ          0x2E4             
298 #define H_SEND_SUB_CRQ_INDIRECT 0x2E8             
299 #define H_BEST_ENERGY           0x2F4             
300 #define H_XIRR_X                0x2FC             
301 #define H_RANDOM                0x300             
302 #define H_COP                   0x304             
303 #define H_GET_MPP_X             0x314             
304 #define H_SET_MODE              0x31C             
305 #define H_BLOCK_REMOVE          0x328             
306 #define H_CLEAR_HPT             0x358             
307 #define H_REQUEST_VMC           0x360             
308 #define H_RESIZE_HPT_PREPARE    0x36C             
309 #define H_RESIZE_HPT_COMMIT     0x370             
310 #define H_REGISTER_PROC_TBL     0x37C             
311 #define H_SIGNAL_SYS_RESET      0x380             
312 #define H_ALLOCATE_VAS_WINDOW   0x388             
313 #define H_MODIFY_VAS_WINDOW     0x38C             
314 #define H_DEALLOCATE_VAS_WINDOW 0x390             
315 #define H_QUERY_VAS_WINDOW      0x394             
316 #define H_QUERY_VAS_CAPABILITIES        0x398     
317 #define H_QUERY_NX_CAPABILITIES 0x39C             
318 #define H_GET_NX_FAULT          0x3A0             
319 #define H_INT_GET_SOURCE_INFO   0x3A8             
320 #define H_INT_SET_SOURCE_CONFIG 0x3AC             
321 #define H_INT_GET_SOURCE_CONFIG 0x3B0             
322 #define H_INT_GET_QUEUE_INFO    0x3B4             
323 #define H_INT_SET_QUEUE_CONFIG  0x3B8             
324 #define H_INT_GET_QUEUE_CONFIG  0x3BC             
325 #define H_INT_SET_OS_REPORTING_LINE 0x3C0         
326 #define H_INT_GET_OS_REPORTING_LINE 0x3C4         
327 #define H_INT_ESB               0x3C8             
328 #define H_INT_SYNC              0x3CC             
329 #define H_INT_RESET             0x3D0             
330 #define H_SCM_READ_METADATA     0x3E4             
331 #define H_SCM_WRITE_METADATA    0x3E8             
332 #define H_SCM_BIND_MEM          0x3EC             
333 #define H_SCM_UNBIND_MEM        0x3F0             
334 #define H_SCM_QUERY_BLOCK_MEM_BINDING 0x3F4       
335 #define H_SCM_QUERY_LOGICAL_MEM_BINDING 0x3F8     
336 #define H_SCM_UNBIND_ALL        0x3FC             
337 #define H_SCM_HEALTH            0x400             
338 #define H_SCM_PERFORMANCE_STATS 0x418             
339 #define H_PKS_GET_CONFIG        0x41C             
340 #define H_PKS_SET_PASSWORD      0x420             
341 #define H_PKS_GEN_PASSWORD      0x424             
342 #define H_PKS_WRITE_OBJECT      0x42C             
343 #define H_PKS_GEN_KEY           0x430             
344 #define H_PKS_READ_OBJECT       0x434             
345 #define H_PKS_REMOVE_OBJECT     0x438             
346 #define H_PKS_CONFIRM_OBJECT_FLUSHED    0x43C     
347 #define H_RPT_INVALIDATE        0x448             
348 #define H_SCM_FLUSH             0x44C             
349 #define H_GET_ENERGY_SCALE_INFO 0x450             
350 #define H_PKS_SIGNED_UPDATE     0x454             
351 #define H_WATCHDOG              0x45C             
352 #define H_GUEST_GET_CAPABILITIES 0x460            
353 #define H_GUEST_SET_CAPABILITIES 0x464            
354 #define H_GUEST_CREATE          0x470             
355 #define H_GUEST_CREATE_VCPU     0x474             
356 #define H_GUEST_GET_STATE       0x478             
357 #define H_GUEST_SET_STATE       0x47C             
358 #define H_GUEST_RUN_VCPU        0x480             
359 #define H_GUEST_COPY_MEMORY     0x484             
360 #define H_GUEST_DELETE          0x488             
361 #define MAX_HCALL_OPCODE        H_GUEST_DELETE    
362                                                   
363 /* Scope args for H_SCM_UNBIND_ALL */             
364 #define H_UNBIND_SCOPE_ALL (0x1)                  
365 #define H_UNBIND_SCOPE_DRC (0x2)                  
366                                                   
367 /* H_VIOCTL functions */                          
368 #define H_GET_VIOA_DUMP_SIZE    0x01              
369 #define H_GET_VIOA_DUMP         0x02              
370 #define H_GET_ILLAN_NUM_VLAN_IDS 0x03             
371 #define H_GET_ILLAN_VLAN_ID_LIST 0x04             
372 #define H_GET_ILLAN_SWITCH_ID   0x05              
373 #define H_DISABLE_MIGRATION     0x06              
374 #define H_ENABLE_MIGRATION      0x07              
375 #define H_GET_PARTNER_INFO      0x08              
376 #define H_GET_PARTNER_WWPN_LIST 0x09              
377 #define H_DISABLE_ALL_VIO_INTS  0x0A              
378 #define H_DISABLE_VIO_INTERRUPT 0x0B              
379 #define H_ENABLE_VIO_INTERRUPT  0x0C              
380 #define H_GET_SESSION_TOKEN     0x19              
381 #define H_SESSION_ERR_DETECTED  0x1A              
382                                                   
383                                                   
384 /* Platform specific hcalls, used by KVM */       
385 #define H_RTAS                  0xf000            
386                                                   
387 /*                                                
388  * Platform specific hcalls, used by QEMU/SLOF    
389  * KVM and only kept here so we can identify t    
390  */                                               
391 #define H_LOGICAL_MEMOP  0xF001                   
392 #define H_CAS            0XF002                   
393 #define H_UPDATE_DT      0XF003                   
394                                                   
395 /* "Platform specific hcalls", provided by PHY    
396 #define H_GET_24X7_CATALOG_PAGE 0xF078            
397 #define H_GET_24X7_DATA         0xF07C            
398 #define H_GET_PERF_COUNTER_INFO 0xF080            
399                                                   
400 /* Platform-specific hcalls used for nested HV    
401 #define H_SET_PARTITION_TABLE   0xF800            
402 #define H_ENTER_NESTED          0xF804            
403 #define H_TLB_INVALIDATE        0xF808            
404 #define H_COPY_TOFROM_GUEST     0xF80C            
405                                                   
406 /* Flags for H_SVM_PAGE_IN */                     
407 #define H_PAGE_IN_SHARED        0x1               
408                                                   
409 /* Platform-specific hcalls used by the Ultrav    
410 #define H_SVM_PAGE_IN           0xEF00            
411 #define H_SVM_PAGE_OUT          0xEF04            
412 #define H_SVM_INIT_START        0xEF08            
413 #define H_SVM_INIT_DONE         0xEF0C            
414 #define H_SVM_INIT_ABORT        0xEF14            
415                                                   
416 /* Values for 2nd argument to H_SET_MODE */       
417 #define H_SET_MODE_RESOURCE_SET_CIABR             
418 #define H_SET_MODE_RESOURCE_SET_DAWR0             
419 #define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE       
420 #define H_SET_MODE_RESOURCE_LE                    
421 #define H_SET_MODE_RESOURCE_SET_DAWR1             
422                                                   
423 /* Values for argument to H_SIGNAL_SYS_RESET *    
424 #define H_SIGNAL_SYS_RESET_ALL                    
425 #define H_SIGNAL_SYS_RESET_ALL_OTHERS             
426 /* >= 0 values are CPU number */                  
427                                                   
428 /* H_GET_CPU_CHARACTERISTICS return values */     
429 #define H_CPU_CHAR_SPEC_BAR_ORI31       (1ull     
430 #define H_CPU_CHAR_BCCTRL_SERIALISED    (1ull     
431 #define H_CPU_CHAR_L1D_FLUSH_ORI30      (1ull     
432 #define H_CPU_CHAR_L1D_FLUSH_TRIG2      (1ull     
433 #define H_CPU_CHAR_L1D_THREAD_PRIV      (1ull     
434 #define H_CPU_CHAR_BRANCH_HINTS_HONORED (1ull     
435 #define H_CPU_CHAR_THREAD_RECONFIG_CTRL (1ull     
436 #define H_CPU_CHAR_COUNT_CACHE_DISABLED (1ull     
437 #define H_CPU_CHAR_BCCTR_FLUSH_ASSIST   (1ull     
438 #define H_CPU_CHAR_BCCTR_LINK_FLUSH_ASSIST (1u    
439                                                   
440 #define H_CPU_BEHAV_FAVOUR_SECURITY     (1ull     
441 #define H_CPU_BEHAV_L1D_FLUSH_PR        (1ull     
442 #define H_CPU_BEHAV_BNDS_CHK_SPEC_BAR   (1ull     
443 #define H_CPU_BEHAV_FAVOUR_SECURITY_H   (1ull     
444 #define H_CPU_BEHAV_FLUSH_COUNT_CACHE   (1ull     
445 #define H_CPU_BEHAV_FLUSH_LINK_STACK    (1ull     
446 #define H_CPU_BEHAV_NO_L1D_FLUSH_ENTRY  (1ull     
447 #define H_CPU_BEHAV_NO_L1D_FLUSH_UACCESS (1ull    
448 #define H_CPU_BEHAV_NO_STF_BARRIER      (1ull     
449                                                   
450 /* Flag values used in H_REGISTER_PROC_TBL hca    
451 #define PROC_TABLE_OP_MASK      0x18              
452 #define PROC_TABLE_DEREG        0x10              
453 #define PROC_TABLE_NEW          0x18              
454 #define PROC_TABLE_TYPE_MASK    0x06              
455 #define PROC_TABLE_HPT_SLB      0x00              
456 #define PROC_TABLE_HPT_PT       0x02              
457 #define PROC_TABLE_RADIX        0x04              
458 #define PROC_TABLE_GTSE         0x01              
459                                                   
460 /*                                                
461  * Defines for                                    
462  * H_RPT_INVALIDATE - Invalidate RPT translati    
463  */                                               
464                                                   
465 /* Type of translation to invalidate (type) */    
466 #define H_RPTI_TYPE_NESTED      0x0001  /* Inv    
467 #define H_RPTI_TYPE_TLB         0x0002  /* Inv    
468 #define H_RPTI_TYPE_PWC         0x0004  /* Inv    
469 /* Invalidate caching of Process Table Entries    
470 #define H_RPTI_TYPE_PRT         0x0008            
471 /* Invalidate caching of Partition Table Entri    
472 #define H_RPTI_TYPE_PAT         0x0008            
473 #define H_RPTI_TYPE_ALL         (H_RPTI_TYPE_T    
474                                  H_RPTI_TYPE_P    
475 #define H_RPTI_TYPE_NESTED_ALL  (H_RPTI_TYPE_T    
476                                  H_RPTI_TYPE_P    
477                                                   
478 /* Invalidation targets (target) */               
479 #define H_RPTI_TARGET_CMMU              0x01 /    
480 #define H_RPTI_TARGET_CMMU_LOCAL        0x02 /    
481 /* All nest/accelerator agents in use by the p    
482 #define H_RPTI_TARGET_NMMU              0x04      
483                                                   
484 /* Page size mask (page sizes) */                 
485 #define H_RPTI_PAGE_4K  0x01                      
486 #define H_RPTI_PAGE_64K 0x02                      
487 #define H_RPTI_PAGE_2M  0x04                      
488 #define H_RPTI_PAGE_1G  0x08                      
489 #define H_RPTI_PAGE_ALL (-1UL)                    
490                                                   
491 /* Flags for H_GUEST_{S,G}_STATE */               
492 #define H_GUEST_FLAGS_WIDE     (1UL<<(63-0))      
493                                                   
494 /* Flag values used for H_{S,G}SET_GUEST_CAPAB    
495 #define H_GUEST_CAP_COPY_MEM    (1UL<<(63-0))     
496 #define H_GUEST_CAP_POWER9      (1UL<<(63-1))     
497 #define H_GUEST_CAP_POWER10     (1UL<<(63-2))     
498 #define H_GUEST_CAP_BITMAP2     (1UL<<(63-63))    
499                                                   
500 #ifndef __ASSEMBLY__                              
501 #include <linux/types.h>                          
502                                                   
503 /**                                               
504  * plpar_hcall_norets: - Make a pseries hyperv    
505  * @opcode: The hypervisor call to make.          
506  *                                                
507  * This call supports up to 7 arguments and on    
508  * the hcall. Use this version where possible,    
509  * the other plpar_hcalls.                        
510  */                                               
511 long plpar_hcall_norets(unsigned long opcode,     
512                                                   
513 /* Variant which does not do hcall tracing */     
514 long plpar_hcall_norets_notrace(unsigned long     
515                                                   
516 /**                                               
517  * plpar_hcall: - Make a pseries hypervisor ca    
518  * @opcode: The hypervisor call to make.          
519  * @retbuf: Buffer to store up to 4 return arg    
520  *                                                
521  * This call supports up to 6 arguments and 4     
522  * PLPAR_HCALL_BUFSIZE to size the return argu    
523  *                                                
524  * Used for all but the craziest of phyp inter    
525  */                                               
526 #define PLPAR_HCALL_BUFSIZE 4                     
527 long plpar_hcall(unsigned long opcode, unsigne    
528                                                   
529 /**                                               
530  * plpar_hcall_raw: - Make a hypervisor call w    
531  * @opcode: The hypervisor call to make.          
532  * @retbuf: Buffer to store up to 4 return arg    
533  *                                                
534  * This call supports up to 6 arguments and 4     
535  * PLPAR_HCALL_BUFSIZE to size the return argu    
536  *                                                
537  * Used when phyp interface needs to be called    
538  * plpar_hcall, but plpar_hcall_raw works in r    
539  * calculate hypervisor call statistics.          
540  */                                               
541 long plpar_hcall_raw(unsigned long opcode, uns    
542                                                   
543 /**                                               
544  * plpar_hcall9: - Make a pseries hypervisor c    
545  * @opcode: The hypervisor call to make.          
546  * @retbuf: Buffer to store up to 9 return arg    
547  *                                                
548  * This call supports up to 9 arguments and 9     
549  * PLPAR_HCALL9_BUFSIZE to size the return arg    
550  */                                               
551 #define PLPAR_HCALL9_BUFSIZE 9                    
552 long plpar_hcall9(unsigned long opcode, unsign    
553 long plpar_hcall9_raw(unsigned long opcode, un    
554                                                   
555 /* pseries hcall tracing */                       
556 extern struct static_key hcall_tracepoint_key;    
557 void __trace_hcall_entry(unsigned long opcode,    
558 void __trace_hcall_exit(long opcode, long retv    
559                                                   
560 struct hvcall_mpp_data {                          
561         unsigned long entitled_mem;               
562         unsigned long mapped_mem;                 
563         unsigned short group_num;                 
564         unsigned short pool_num;                  
565         unsigned char mem_weight;                 
566         unsigned char unallocated_mem_weight;     
567         unsigned long unallocated_entitlement;    
568         unsigned long pool_size;                  
569         signed long loan_request;                 
570         unsigned long backing_mem;                
571 };                                                
572                                                   
573 long h_get_mpp(struct hvcall_mpp_data *mpp_dat    
574                                                   
575 struct hvcall_mpp_x_data {                        
576         unsigned long coalesced_bytes;            
577         unsigned long pool_coalesced_bytes;       
578         unsigned long pool_purr_cycles;           
579         unsigned long pool_spurr_cycles;          
580         unsigned long reserved[3];                
581 };                                                
582                                                   
583 int h_get_mpp_x(struct hvcall_mpp_x_data *mpp_    
584                                                   
585 static inline unsigned int get_longbusy_msecs(    
586 {                                                 
587         switch (longbusy_rc) {                    
588         case H_LONG_BUSY_ORDER_1_MSEC:            
589                 return 1;                         
590         case H_LONG_BUSY_ORDER_10_MSEC:           
591                 return 10;                        
592         case H_LONG_BUSY_ORDER_100_MSEC:          
593                 return 100;                       
594         case H_LONG_BUSY_ORDER_1_SEC:             
595                 return 1000;                      
596         case H_LONG_BUSY_ORDER_10_SEC:            
597                 return 10000;                     
598         case H_LONG_BUSY_ORDER_100_SEC:           
599                 return 100000;                    
600         default:                                  
601                 return 1;                         
602         }                                         
603 }                                                 
604                                                   
605 struct h_cpu_char_result {                        
606         u64 character;                            
607         u64 behaviour;                            
608 };                                                
609                                                   
610 /*                                                
611  * Register state for entering a nested guest     
612  * New member must be added at the end.           
613  */                                               
614 struct hv_guest_state {                           
615         u64 version;            /* version of     
616         u32 lpid;                                 
617         u32 vcpu_token;                           
618         /* These registers are hypervisor priv    
619         u64 lpcr;                                 
620         u64 pcr;                                  
621         u64 amor;                                 
622         u64 dpdes;                                
623         u64 hfscr;                                
624         s64 tb_offset;                            
625         u64 dawr0;                                
626         u64 dawrx0;                               
627         u64 ciabr;                                
628         u64 hdec_expiry;                          
629         u64 purr;                                 
630         u64 spurr;                                
631         u64 ic;                                   
632         u64 vtb;                                  
633         u64 hdar;                                 
634         u64 hdsisr;                               
635         u64 heir;                                 
636         u64 asdr;                                 
637         /* These are OS privileged but need to    
638         u64 srr0;                                 
639         u64 srr1;                                 
640         u64 sprg[4];                              
641         u64 pidr;                                 
642         u64 cfar;                                 
643         u64 ppr;                                  
644         /* Version 1 ends here */                 
645         u64 dawr1;                                
646         u64 dawrx1;                               
647         /* Version 2 ends here */                 
648 };                                                
649                                                   
650 /* Latest version of hv_guest_state structure     
651 #define HV_GUEST_STATE_VERSION  2                 
652                                                   
653 static inline int hv_guest_state_size(unsigned    
654 {                                                 
655         switch (version) {                        
656         case 1:                                   
657                 return offsetofend(struct hv_g    
658         case 2:                                   
659                 return offsetofend(struct hv_g    
660         default:                                  
661                 return -1;                        
662         }                                         
663 }                                                 
664                                                   
665 /*                                                
666  * From the document "H_GetPerformanceCounterI    
667  *                                                
668  * H_GET_PERF_COUNTER_INFO argument               
669  */                                               
670 struct hv_get_perf_counter_info_params {          
671         __be32 counter_request; /* I */           
672         __be32 starting_index;  /* IO */          
673         __be16 secondary_index; /* IO */          
674         __be16 returned_values; /* O */           
675         __be32 detail_rc; /* O, only needed wh    
676                                                   
677         /*                                        
678          * O, size each of counter_value eleme    
679          * >= 0x3                                 
680          */                                       
681         __be16 cv_element_size;                   
682                                                   
683         /* I, 0 (zero) for versions < 0x3 */      
684         __u8 counter_info_version_in;             
685                                                   
686         /* O, 0 (zero) if version < 0x3. Must     
687         __u8 counter_info_version_out;            
688         __u8 reserved[0xC];                       
689         __u8 counter_value[];                     
690 } __packed;                                       
691                                                   
692 #define HGPCI_REQ_BUFFER_SIZE   4096              
693 #define HGPCI_MAX_DATA_BYTES \                    
694         (HGPCI_REQ_BUFFER_SIZE - sizeof(struct    
695                                                   
696 struct hv_gpci_request_buffer {                   
697         struct hv_get_perf_counter_info_params    
698         uint8_t bytes[HGPCI_MAX_DATA_BYTES];      
699 } __packed;                                       
700                                                   
701 #endif /* __ASSEMBLY__ */                         
702 #endif /* __KERNEL__ */                           
703 #endif /* _ASM_POWERPC_HVCALL_H */                
704                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php