1/* 2 * Copyright (C) 2001 Mike Corrigan IBM Corporation 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18#ifndef _ASM_POWERPC_ISERIES_HV_LP_CONFIG_H 19#define _ASM_POWERPC_ISERIES_HV_LP_CONFIG_H 20 21/* 22 * This file contains the interface to the LPAR configuration data 23 * to determine which resources should be allocated to each partition. 24 */ 25 26#include <asm/iseries/hv_call_sc.h> 27#include <asm/iseries/hv_types.h> 28 29enum { 30 HvCallCfg_Cur = 0, 31 HvCallCfg_Init = 1, 32 HvCallCfg_Max = 2, 33 HvCallCfg_Min = 3 34}; 35 36#define HvCallCfgGetSystemPhysicalProcessors HvCallCfg + 6 37#define HvCallCfgGetPhysicalProcessors HvCallCfg + 7 38#define HvCallCfgGetMsChunks HvCallCfg + 9 39#define HvCallCfgGetSharedPoolIndex HvCallCfg + 20 40#define HvCallCfgGetSharedProcUnits HvCallCfg + 21 41#define HvCallCfgGetNumProcsInSharedPool HvCallCfg + 22 42#define HvCallCfgGetVirtualLanIndexMap HvCallCfg + 30 43#define HvCallCfgGetHostingLpIndex HvCallCfg + 32 44 45extern HvLpIndex HvLpConfig_getLpIndex_outline(void); 46extern HvLpIndex HvLpConfig_getLpIndex(void); 47extern HvLpIndex HvLpConfig_getPrimaryLpIndex(void); 48 49static inline u64 HvLpConfig_getMsChunks(void) 50{ 51 return HvCall2(HvCallCfgGetMsChunks, HvLpConfig_getLpIndex(), 52 HvCallCfg_Cur); 53} 54 55static inline u64 HvLpConfig_getSystemPhysicalProcessors(void) 56{ 57 return HvCall0(HvCallCfgGetSystemPhysicalProcessors); 58} 59 60static inline u64 HvLpConfig_getNumProcsInSharedPool(HvLpSharedPoolIndex sPI) 61{ 62 return (u16)HvCall1(HvCallCfgGetNumProcsInSharedPool, sPI); 63} 64 65static inline u64 HvLpConfig_getPhysicalProcessors(void) 66{ 67 return HvCall2(HvCallCfgGetPhysicalProcessors, HvLpConfig_getLpIndex(), 68 HvCallCfg_Cur); 69} 70 71static inline HvLpSharedPoolIndex HvLpConfig_getSharedPoolIndex(void) 72{ 73 return HvCall1(HvCallCfgGetSharedPoolIndex, HvLpConfig_getLpIndex()); 74} 75 76static inline u64 HvLpConfig_getSharedProcUnits(void) 77{ 78 return HvCall2(HvCallCfgGetSharedProcUnits, HvLpConfig_getLpIndex(), 79 HvCallCfg_Cur); 80} 81 82static inline u64 HvLpConfig_getMaxSharedProcUnits(void) 83{ 84 return HvCall2(HvCallCfgGetSharedProcUnits, HvLpConfig_getLpIndex(), 85 HvCallCfg_Max); 86} 87 88static inline u64 HvLpConfig_getMaxPhysicalProcessors(void) 89{ 90 return HvCall2(HvCallCfgGetPhysicalProcessors, HvLpConfig_getLpIndex(), 91 HvCallCfg_Max); 92} 93 94static inline HvLpVirtualLanIndexMap HvLpConfig_getVirtualLanIndexMapForLp( 95 HvLpIndex lp) 96{ 97 /* 98 * This is a new function in V5R1 so calls to this on older 99 * hypervisors will return -1 100 */ 101 u64 retVal = HvCall1(HvCallCfgGetVirtualLanIndexMap, lp); 102 if (retVal == -1) 103 retVal = 0; 104 return retVal; 105} 106 107static inline HvLpVirtualLanIndexMap HvLpConfig_getVirtualLanIndexMap(void) 108{ 109 return HvLpConfig_getVirtualLanIndexMapForLp( 110 HvLpConfig_getLpIndex_outline()); 111} 112 113static inline int HvLpConfig_doLpsCommunicateOnVirtualLan(HvLpIndex lp1, 114 HvLpIndex lp2) 115{ 116 HvLpVirtualLanIndexMap virtualLanIndexMap1 = 117 HvLpConfig_getVirtualLanIndexMapForLp(lp1); 118 HvLpVirtualLanIndexMap virtualLanIndexMap2 = 119 HvLpConfig_getVirtualLanIndexMapForLp(lp2); 120 return ((virtualLanIndexMap1 & virtualLanIndexMap2) != 0); 121} 122 123static inline HvLpIndex HvLpConfig_getHostingLpIndex(HvLpIndex lp) 124{ 125 return HvCall1(HvCallCfgGetHostingLpIndex, lp); 126} 127 128#endif /* _ASM_POWERPC_ISERIES_HV_LP_CONFIG_H */ 129