hv_call_xm.h 2.4 KB

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