HvlGetEnlightenmentInfo
UINT64 __fastcall HvlGetEnlightenmentInfo(_DWORD *a1){
UINT64 result;
unsigned __int64 v3;
memset(a1, 0i64, 0x1F8u);
*a1 = HvlEnlightenments;
a1[1] = (_BYTE)HvlHypervisorConnected != 0;
a1[7] = HvlLongSpinCountMask;
*((_QWORD *)a1 + 26) = HvlHalVpStartEnabled;
*((_QWORD *)a1 + 48) = HvlRegisterDeviceId;
*((_QWORD *)a1 + 49) = HvlUnregisterDeviceId;
*((_QWORD *)a1 + 50) = HvlDmaAllocateDeviceDomain;
*((_QWORD *)a1 + 51) = HvlDmaAttachDeviceDomain;
*((_QWORD *)a1 + 52) = HvlDmaDetachDeviceDomain;
*((_QWORD *)a1 + 53) = HvlDmaDeleteDeviceDomain;
*((_QWORD *)a1 + 58) = HvlDmaGetDmaGuardEnabled;
*((_QWORD *)a1 + 62) = HvlSetRootFaultReportingReady;
*((_QWORD *)a1 + 31) = HvlSvmGetSystemCapabilities;
*((_QWORD *)a1 + 32) = HvlSvmGetDeviceCapabilities;
*((_QWORD *)a1 + 33) = HvlSvmCreatePasidSpace;
*((_QWORD *)a1 + 34) = HvlSvmSetPasidAddressSpace;
*((_QWORD *)a1 + 35) = HvlSvmFlushPasid;
*((_QWORD *)a1 + 36) = HvlSvmAttachPasidSpace;
*((_QWORD *)a1 + 37) = HvlSvmDetachPasidSpace;
*((_QWORD *)a1 + 38) = HvlSvmEnablePasid;
*((_QWORD *)a1 + 39) = HvlSvmDisablePasid;
*((_QWORD *)a1 + 40) = HvlSvmAcknowledgePageRequest;
*((_QWORD *)a1 + 41) = HvlSvmCreatePrQueue;
*((_QWORD *)a1 + 42) = HvlSvmDeletePrQueue;
*((_QWORD *)a1 + 43) = HvlSvmClearPrqStalled;
if( (HvlpRootFlags & 1) != 0 )
{
*((_QWORD *)a1 + 44) = HvlSvmSetDeviceEnabled;
*((_QWORD *)a1 + 45) = HvlHvDebuggerPowerHandler;
}
*((_QWORD *)a1 + 54) = HvlDmaMapDeviceLogicalRange;
*((_QWORD *)a1 + 55) = HvlDmaUnmapDeviceLogicalRange;
*((_QWORD *)a1 + 56) = HvlDmaMapDeviceSparsePages;
*((_QWORD *)a1 + 57) = HvlDmaUnmapDeviceSparsePages;
if( (HvlpRootFlags & 0x80u) != 0 )
{
*((_QWORD *)a1 + 14) = HvlQueryAssociatedProcessors;
*((_QWORD *)a1 + 19) = HvlLpGetMachineCheckContext;
*((_QWORD *)a1 + 20) = HvlSuspendPartition;
*((_QWORD *)a1 + 21) = HvlResumePartition;
*((_QWORD *)a1 + 22) = HvlSetSystemMachineCheckProperty;
*((_QWORD *)a1 + 23) = HvlInvokeWheaErrorNotificationCallback;
*((_QWORD *)a1 + 24) = HvlGetProcessorIndexFromVpIndex;
*((_QWORD *)a1 + 15) = HvlLpReadMultipleMsr;
*((_QWORD *)a1 + 16) = HvlLpWriteMultipleMsr;
*((_QWORD *)a1 + 17) = HvlLpReadCpuid;
*((_QWORD *)a1 + 18) = HvlLpWritebackInvalidate;
}
if( (HvlpRootFlags & 0x100) != 0 )
{
*((_QWORD *)a1 + 9) = HvlMapDeviceInterrupt;
*((_QWORD *)a1 + 10) = HvlUnmapDeviceInterrupt;
*((_QWORD *)a1 + 11) = HvlRetargetDeviceInterrupt;
}
if( (HvlpRootFlags & 1) != 0 )
{
*((_QWORD *)a1 + 12) = HvlSetHpetConfig;
*((_QWORD *)a1 + 13) = HvlNotifyHpetEnabled;
*((_QWORD *)a1 + 59) = HvlUpdateMicrocodeDatabase;
if( (HvlpRootFlags & 0x200) != 0 )
*((_QWORD *)a1 + 46) = HvlSetQpcBias;
}
result = VslGetNestedPageProtectionFlags();
if( (result & 4) != 0 )
{
v3 = (unsigned __int64)VslAccessPciDevice & -(__int64)VslGetSecurePciEnabled();
result = (UINT64)VslIumEfiRuntimeService;
*((_QWORD *)a1 + 29) = v3;
*((_QWORD *)a1 + 30) = VslIumEfiRuntimeService;
}
if( (HvlpFlags & 0x4000) != 0 )
{
result = (UINT64)HvlGetQpcBias;
*((_QWORD *)a1 + 47) = HvlGetQpcBias;
}
return result;
}Referenced by:
No references.