HvCallCfg.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:8k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * HvCallCfg.h
  3.  * Copyright (C) 2001  Mike Corrigan IBM Corporation
  4.  * 
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  * 
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18.  */
  19. //=====================================================================================
  20. //
  21. // This file contains the "hypervisor call" interface which is used to
  22. // drive the hypervisor from the OS.
  23. //
  24. //=====================================================================================
  25. //-------------------------------------------------------------------
  26. // Standard Includes
  27. //-------------------------------------------------------------------
  28. #ifndef  _HVCALLSC_H
  29. #include "HvCallSc.h"
  30. #endif
  31. #ifndef  _HVTYPES_H
  32. #include <asm/iSeries/HvTypes.h>
  33. #endif
  34. //-------------------------------------------------------------------------------------
  35. // Constants
  36. //-------------------------------------------------------------------------------------
  37. #ifndef _HVCALLCFG_H
  38. #define _HVCALLCFG_H
  39. enum HvCallCfg_ReqQual
  40. {
  41. HvCallCfg_Cur = 0,
  42. HvCallCfg_Init = 1,
  43. HvCallCfg_Max = 2,
  44. HvCallCfg_Min = 3
  45. };
  46. #define HvCallCfgGetLps HvCallCfg +  0
  47. #define HvCallCfgGetActiveLpMap HvCallCfg +  1
  48. #define HvCallCfgGetLpVrmIndex HvCallCfg +  2
  49. #define HvCallCfgGetLpMinSupportedPlicVrmIndex HvCallCfg +  3
  50. #define HvCallCfgGetLpMinCompatablePlicVrmIndex HvCallCfg +  4
  51. #define HvCallCfgGetLpVrmName HvCallCfg +  5 
  52. #define HvCallCfgGetSystemPhysicalProcessors HvCallCfg +  6
  53. #define HvCallCfgGetPhysicalProcessors HvCallCfg +  7
  54. #define HvCallCfgGetSystemMsChunks HvCallCfg +  8
  55. #define HvCallCfgGetMsChunks HvCallCfg +  9
  56. #define HvCallCfgGetInteractivePercentage HvCallCfg + 10
  57. #define HvCallCfgIsBusDedicated HvCallCfg + 11
  58. #define HvCallCfgGetBusOwner HvCallCfg + 12
  59. #define HvCallCfgGetBusAllocation HvCallCfg + 13
  60. #define HvCallCfgGetBusUnitOwner HvCallCfg + 14
  61. #define HvCallCfgGetBusUnitAllocation HvCallCfg + 15
  62. #define HvCallCfgGetVirtualBusPool HvCallCfg + 16
  63. #define HvCallCfgGetBusUnitInterruptProc HvCallCfg + 17
  64. #define HvCallCfgGetConfiguredBusUnitsForIntProc HvCallCfg + 18
  65. #define HvCallCfgGetRioSanBusPool HvCallCfg + 19
  66. #define HvCallCfgGetSharedPoolIndex HvCallCfg + 20
  67. #define HvCallCfgGetSharedProcUnits HvCallCfg + 21
  68. #define HvCallCfgGetNumProcsInSharedPool HvCallCfg + 22
  69. #define HvCallCfgRouter23 HvCallCfg + 23
  70. #define HvCallCfgRouter24 HvCallCfg + 24
  71. #define HvCallCfgRouter25 HvCallCfg + 25
  72. #define HvCallCfgRouter26 HvCallCfg + 26
  73. #define HvCallCfgRouter27 HvCallCfg + 27
  74. #define HvCallCfgGetMinRuntimeMsChunks HvCallCfg + 28
  75. #define HvCallCfgSetMinRuntimeMsChunks HvCallCfg + 29
  76. #define HvCallCfgGetVirtualLanIndexMap HvCallCfg + 30
  77. #define HvCallCfgGetLpExecutionMode HvCallCfg + 31
  78. #define HvCallCfgGetHostingLpIndex  HvCallCfg + 32
  79. //====================================================================
  80. static inline HvLpIndex HvCallCfg_getLps(void)
  81. {
  82. HvLpIndex retVal = HvCall0(HvCallCfgGetLps);
  83. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  84. return retVal;
  85. }
  86. //====================================================================
  87. static inline int HvCallCfg_isBusDedicated(u64 busIndex)
  88. {
  89. int retVal = HvCall1(HvCallCfgIsBusDedicated,busIndex);
  90. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  91. return retVal;
  92. }
  93. //====================================================================
  94. static inline HvLpIndex HvCallCfg_getBusOwner(u64 busIndex)
  95. {
  96. HvLpIndex retVal = HvCall1(HvCallCfgGetBusOwner,busIndex);
  97. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  98. return retVal;
  99. }
  100. //====================================================================
  101. static inline HvLpIndexMap HvCallCfg_getBusAllocation(u64 busIndex)
  102. {
  103. HvLpIndexMap retVal = HvCall1(HvCallCfgGetBusAllocation,busIndex);
  104. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  105. return retVal;
  106. }
  107. //====================================================================
  108. static inline HvLpIndexMap HvCallCfg_getActiveLpMap(void)
  109. {
  110. HvLpIndexMap retVal = HvCall0(HvCallCfgGetActiveLpMap);
  111. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  112. return retVal;
  113. }
  114. //====================================================================
  115. static inline HvLpVirtualLanIndexMap HvCallCfg_getVirtualLanIndexMap(HvLpIndex lp)
  116. {
  117. // This is a new function in V5R1 so calls to this on older 
  118. // hypervisors will return -1
  119. u64 retVal = HvCall1(HvCallCfgGetVirtualLanIndexMap, lp);
  120. if(retVal == -1)
  121. retVal = 0;
  122. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  123. return retVal;
  124. }
  125. //===================================================================
  126. static inline u64 HvCallCfg_getSystemMsChunks(void)
  127. {
  128. u64 retVal = HvCall0(HvCallCfgGetSystemMsChunks);
  129. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  130. return retVal;
  131. }
  132. //===================================================================
  133. static inline u64 HvCallCfg_getMsChunks(HvLpIndex lp,enum HvCallCfg_ReqQual qual)
  134. {
  135. u64 retVal = HvCall2(HvCallCfgGetMsChunks,lp,qual);
  136. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  137. return retVal;
  138. }
  139. //===================================================================
  140. static inline u64 HvCallCfg_getMinRuntimeMsChunks(HvLpIndex lp)
  141. {
  142. // NOTE: This function was added in v5r1 so older hypervisors will return a -1 value
  143. u64 retVal = HvCall1(HvCallCfgGetMinRuntimeMsChunks,lp);
  144. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  145. return retVal;
  146. }
  147. //===================================================================
  148. static inline u64 HvCallCfg_setMinRuntimeMsChunks(u64 chunks)
  149. {
  150. u64 retVal = HvCall1(HvCallCfgSetMinRuntimeMsChunks,chunks);
  151. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  152. return retVal;
  153. }
  154. //===================================================================
  155. static inline u64 HvCallCfg_getSystemPhysicalProcessors(void)
  156. {
  157. u64 retVal = HvCall0(HvCallCfgGetSystemPhysicalProcessors);
  158. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  159. return retVal;
  160. }
  161. //===================================================================
  162. static inline u64 HvCallCfg_getPhysicalProcessors(HvLpIndex lp,enum HvCallCfg_ReqQual qual)
  163. {
  164. u64 retVal = HvCall2(HvCallCfgGetPhysicalProcessors,lp,qual);
  165. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  166. return retVal;
  167. }
  168. //===================================================================
  169. static inline u64 HvCallCfg_getConfiguredBusUnitsForInterruptProc(HvLpIndex lp,
  170. u16 hvLogicalProcIndex)
  171. {
  172. u64 retVal = HvCall2(HvCallCfgGetConfiguredBusUnitsForIntProc,lp,hvLogicalProcIndex);
  173. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  174. return retVal;
  175. }
  176. //==================================================================
  177. static inline HvLpSharedPoolIndex HvCallCfg_getSharedPoolIndex(HvLpIndex lp)
  178. {
  179. HvLpSharedPoolIndex retVal =
  180. HvCall1(HvCallCfgGetSharedPoolIndex,lp);
  181. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  182. return retVal;
  183. }
  184. //==================================================================
  185. static inline u64 HvCallCfg_getSharedProcUnits(HvLpIndex lp,enum HvCallCfg_ReqQual qual)
  186. {
  187. u64 retVal = HvCall2(HvCallCfgGetSharedProcUnits,lp,qual);
  188. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  189. return retVal;
  190. }
  191. //==================================================================
  192. static inline u64 HvCallCfg_getNumProcsInSharedPool(HvLpSharedPoolIndex sPI)
  193. {
  194. u16 retVal = HvCall1(HvCallCfgGetNumProcsInSharedPool,sPI);
  195. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  196. return retVal;
  197. }
  198. //==================================================================
  199. static inline HvLpIndex HvCallCfg_getHostingLpIndex(HvLpIndex lp)
  200. {
  201. u64 retVal = HvCall1(HvCallCfgGetHostingLpIndex,lp);
  202. // getPaca()->adjustHmtForNoOfSpinLocksHeld();
  203. return retVal;
  204. }
  205. #endif // _HVCALLCFG_H