3 * Copyright (C) 2001 Mike Corrigan IBM Corporation
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.
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.
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
23 * This file contains the interface to the LPAR configuration data
24 * to determine which resources should be allocated to each partition.
27 #include <asm/iSeries/HvCallSc.h>
28 #include <asm/iSeries/HvTypes.h>
29 #include <asm/iSeries/ItLpNaca.h>
38 #define HvCallCfgGetSystemPhysicalProcessors HvCallCfg + 6
39 #define HvCallCfgGetPhysicalProcessors HvCallCfg + 7
40 #define HvCallCfgGetMsChunks HvCallCfg + 9
41 #define HvCallCfgGetSharedPoolIndex HvCallCfg + 20
42 #define HvCallCfgGetSharedProcUnits HvCallCfg + 21
43 #define HvCallCfgGetNumProcsInSharedPool HvCallCfg + 22
44 #define HvCallCfgGetVirtualLanIndexMap HvCallCfg + 30
45 #define HvCallCfgGetHostingLpIndex HvCallCfg + 32
47 extern HvLpIndex
HvLpConfig_getLpIndex_outline(void);
49 static inline HvLpIndex
HvLpConfig_getLpIndex(void)
51 return itLpNaca
.xLpIndex
;
54 static inline HvLpIndex
HvLpConfig_getPrimaryLpIndex(void)
56 return itLpNaca
.xPrimaryLpIndex
;
59 static inline u64
HvLpConfig_getMsChunks(void)
61 return HvCall2(HvCallCfgGetMsChunks
, HvLpConfig_getLpIndex(),
65 static inline u64
HvLpConfig_getSystemPhysicalProcessors(void)
67 return HvCall0(HvCallCfgGetSystemPhysicalProcessors
);
70 static inline u64
HvLpConfig_getNumProcsInSharedPool(HvLpSharedPoolIndex sPI
)
72 return (u16
)HvCall1(HvCallCfgGetNumProcsInSharedPool
, sPI
);
75 static inline u64
HvLpConfig_getPhysicalProcessors(void)
77 return HvCall2(HvCallCfgGetPhysicalProcessors
, HvLpConfig_getLpIndex(),
81 static inline HvLpSharedPoolIndex
HvLpConfig_getSharedPoolIndex(void)
83 return HvCall1(HvCallCfgGetSharedPoolIndex
, HvLpConfig_getLpIndex());
86 static inline u64
HvLpConfig_getSharedProcUnits(void)
88 return HvCall2(HvCallCfgGetSharedProcUnits
, HvLpConfig_getLpIndex(),
92 static inline u64
HvLpConfig_getMaxSharedProcUnits(void)
94 return HvCall2(HvCallCfgGetSharedProcUnits
, HvLpConfig_getLpIndex(),
98 static inline u64
HvLpConfig_getMaxPhysicalProcessors(void)
100 return HvCall2(HvCallCfgGetPhysicalProcessors
, HvLpConfig_getLpIndex(),
104 static inline HvLpVirtualLanIndexMap
HvLpConfig_getVirtualLanIndexMapForLp(
108 * This is a new function in V5R1 so calls to this on older
109 * hypervisors will return -1
111 u64 retVal
= HvCall1(HvCallCfgGetVirtualLanIndexMap
, lp
);
117 static inline HvLpVirtualLanIndexMap
HvLpConfig_getVirtualLanIndexMap(void)
119 return HvLpConfig_getVirtualLanIndexMapForLp(
120 HvLpConfig_getLpIndex_outline());
123 static inline int HvLpConfig_doLpsCommunicateOnVirtualLan(HvLpIndex lp1
,
126 HvLpVirtualLanIndexMap virtualLanIndexMap1
=
127 HvLpConfig_getVirtualLanIndexMapForLp(lp1
);
128 HvLpVirtualLanIndexMap virtualLanIndexMap2
=
129 HvLpConfig_getVirtualLanIndexMapForLp(lp2
);
130 return ((virtualLanIndexMap1
& virtualLanIndexMap2
) != 0);
133 static inline HvLpIndex
HvLpConfig_getHostingLpIndex(HvLpIndex lp
)
135 return HvCall1(HvCallCfgGetHostingLpIndex
, lp
);
138 #endif /* _HVLPCONFIG_H */