HvlpLogIommuEvent
VOID __stdcall HvlpLogIommuEvent(_HV_IOMMU_EXTENDED_STATUS *IommuStatus){
__int64 *v2;
ULONG v3;
int *v4;
__int64 v5;
$9809CEAD2DA957FAEE8580DC38A49918 *v6;
unsigned __int64 *Params;
unsigned int v8;
int v9[4];
_EVENT_DATA_DESCRIPTOR UserData;
if( (HvlpRootFlags & 1) != 0 && IommuStatus->Severity )
{
switch( IommuStatus->Status )
{
case 1u:
v2 = (__int64 *)&HV_EVENTLOG_IOMMU_WARNING_SCOPE_CONFLICT;
break;
case 2u:
v2 = HV_EVENTLOG_IOMMU_FAILED_RID_CONFLICT;
break;
case 3u:
v2 = HV_EVENTLOG_IOMMU_FAILED_NO_RESOURCES;
break;
case 4u:
v2 = HV_EVENTLOG_IOMMU_FAILED_INVALID_IOAPIC;
v3 = 1;
v9[0] = 1;
goto LABEL_17;
case 5u:
v2 = HV_EVENTLOG_IOMMU_FAILED_NO_DEVICE_ASSIGNMENT;
v9[2] = 8;
v3 = 3;
LABEL_16:
v9[1] = 8;
v9[0] = 8;
LABEL_17:
v4 = v9;
v5 = v3;
v6 = &UserData.12;
Params = IommuStatus->Params;
do
{
v6->Reserved = 0;
v8 = *v4++;
*(_QWORD *)&v6[-3].Reserved = Params++;
v6[-1].Reserved = v8;
v6 += 4;
--v5;
}
while( v5 );
HvlpWriteEventLog((PCEVENT_DESCRIPTOR)v2, v3, &UserData);
return;
case 6u:
v2 = HV_EVENTLOG_IOMMU_FAILED_RESERVED_DEVICE;
break;
default:
return;
}
v3 = 2;
goto LABEL_16;
}
}Referenced by:
HvlMapDeviceInterrupt