2 * This file contains the "hypervisor call" interface which is used to
3 * drive the hypervisor from SLIC.
8 #include <asm/iSeries/HvCallSc.h>
9 #include <asm/iSeries/HvTypes.h>
11 #define HvCallXmGetTceTableParms HvCallXm + 0
12 #define HvCallXmTestBus HvCallXm + 1
13 #define HvCallXmConnectBusUnit HvCallXm + 2
14 #define HvCallXmLoadTod HvCallXm + 8
15 #define HvCallXmTestBusUnit HvCallXm + 9
16 #define HvCallXmSetTce HvCallXm + 11
17 #define HvCallXmSetTces HvCallXm + 13
20 * Structure passed to HvCallXm_getTceTableParms
22 struct iommu_table_cb
{
23 unsigned long itc_busno
; /* Bus number for this tce table */
24 unsigned long itc_start
; /* Will be NULL for secondary */
25 unsigned long itc_totalsize
; /* Size (in pages) of whole table */
26 unsigned long itc_offset
; /* Index into real tce table of the
27 start of our section */
28 unsigned long itc_size
; /* Size (in pages) of our section */
29 unsigned long itc_index
; /* Index of this tce table */
30 unsigned short itc_maxtables
; /* Max num of tables for partition */
31 unsigned char itc_virtbus
; /* Flag to indicate virtual bus */
32 unsigned char itc_slotno
; /* IOA Tce Slot Index */
33 unsigned char itc_rsvd
[4];
36 static inline void HvCallXm_getTceTableParms(u64 cb
)
38 HvCall1(HvCallXmGetTceTableParms
, cb
);
41 static inline u64
HvCallXm_setTce(u64 tceTableToken
, u64 tceOffset
, u64 tce
)
43 return HvCall3(HvCallXmSetTce
, tceTableToken
, tceOffset
, tce
);
46 static inline u64
HvCallXm_setTces(u64 tceTableToken
, u64 tceOffset
,
47 u64 numTces
, u64 tce1
, u64 tce2
, u64 tce3
, u64 tce4
)
49 return HvCall7(HvCallXmSetTces
, tceTableToken
, tceOffset
, numTces
,
50 tce1
, tce2
, tce3
, tce4
);
53 static inline u64
HvCallXm_testBus(u16 busNumber
)
55 return HvCall1(HvCallXmTestBus
, busNumber
);
58 static inline u64
HvCallXm_testBusUnit(u16 busNumber
, u8 subBusNumber
,
61 return HvCall2(HvCallXmTestBusUnit
, busNumber
,
62 (subBusNumber
<< 8) | deviceId
);
65 static inline u64
HvCallXm_connectBusUnit(u16 busNumber
, u8 subBusNumber
,
66 u8 deviceId
, u64 interruptToken
)
68 return HvCall5(HvCallXmConnectBusUnit
, busNumber
,
69 (subBusNumber
<< 8) | deviceId
, interruptToken
, 0,
70 0 /* HvLpConfig::mapDsaToQueueIndex(HvLpDSA(busNumber, xBoard, xCard)) */);
73 static inline u64
HvCallXm_loadTod(void)
75 return HvCall0(HvCallXmLoadTod
);
78 #endif /* _HVCALLXM_H */