HvlpLogIommuEvent
VOID __fastcall HvlpLogIommuEvent(INT64 a1){
__int64 *v2;
UINT64 v3;
int *v4;
__int64 v5;
$AC492906E908F75CD234F2140A5AAD56 *v6;
INT64 v7;
unsigned int v8;
int v9[4];
struct _EVENT_DATA_DESCRIPTOR UserData;
if( (HvlpRootFlags & 1) != 0 && *(_BYTE *)a1 )
{
switch( *(_WORD *)(a1 + 2) )
{
case 1:
v2 = (__int64 *)&HV_EVENTLOG_IOMMU_WARNING_SCOPE_CONFLICT;
break;
case 2:
v2 = HV_EVENTLOG_IOMMU_FAILED_RID_CONFLICT;
break;
case 3:
v2 = HV_EVENTLOG_IOMMU_FAILED_NO_RESOURCES;
break;
case 4:
v2 = HV_EVENTLOG_IOMMU_FAILED_INVALID_IOAPIC;
v3 = 1i64;
v9[0] = 1;
goto LABEL_17;
case 5:
v2 = HV_EVENTLOG_IOMMU_FAILED_NO_DEVICE_ASSIGNMENT;
v9[2] = 8;
v3 = 3i64;
LABEL_16:
v9[1] = 8;
v9[0] = 8;
LABEL_17:
v4 = v9;
v5 = (unsigned int)v3;
v6 = &UserData.12;
v7 = a1 + 8;
do
{
v6->Reserved = 0;
v8 = *v4++;
*(_QWORD *)&v6[-3].Reserved = v7;
v7 += 8i64;
v6[-1].Reserved = v8;
v6 += 4;
--v5;
}
while( v5 );
HvlpWriteEventLog((EVENT_DESCRIPTOR *)v2, v3, &UserData);
return;
case 6:
v2 = HV_EVENTLOG_IOMMU_FAILED_RESERVED_DEVICE;
break;
default:
return;
}
v3 = 2i64;
goto LABEL_16;
}
}Referenced by:
HvlMapDeviceInterrupt