Descoberta de recursos e interfaces

Esta seção descreve como o software convidado detecta a presença de um hipervisor e consulta seus recursos, recursos e informações de versão usando mecanismos de descoberta específicos da arquitetura.

Descoberta de recursos e interfaces (x64)

O software convidado interage com o hipervisor por meio de uma variedade de mecanismos. Muitos deles espelham os mecanismos tradicionais usados pelo software para interagir com o processador subjacente. Dessa forma, esses mecanismos são específicos da arquitetura. Na arquitetura x64, os seguintes mecanismos são usados:

  • Instrução CPUID – usada para informações de versão e recursos estáticos.
  • MSRs (registros específicos do modelo) – usados para valores de status e controle.
  • Registros mapeados em memória – usados para valores de status e controle.
  • Interrupções do processador – usadas para eventos assíncronos, notificações e mensagens.

Além dessas interfaces específicas da arquitetura, o hipervisor fornece uma interface de procedimento simples implementada com hiperchamadas.

Descoberta de hipervisor

Antes de usar as interfaces do hipervisor, o software deve primeiro determinar se ele está em execução em um ambiente virtualizado. Em plataformas x64 que estão em conformidade com essa especificação, isso é feito executando a instrução CPUID com um valor de entrada (EAX) de 1. Após a execução, o código deve verificar o bit 31 do registro ECX (o "bit presente do hipervisor"). Se esse bit estiver definido, um hipervisor estará presente. Em um ambiente não virtualizado, o bit será claro.

CPUID.01h.ECX:31 // if set, virtualization present

Se o "bit presente do hipervisor" estiver definido, folhas CPUID adicionais poderão ser consultadas para obter mais informações sobre o hipervisor compatível e suas funcionalidades. Há garantia de que duas dessas folhas estejam disponíveis: 0x40000000 e 0x40000001. As folhas numeradas posteriormente também podem estar disponíveis.

Folhas CPUID do hipervisor padrão

Quando a folha for 0x40000000 consultada, o hipervisor retornará informações que fornecem o número máximo de folha CPUID do hipervisor e uma assinatura de ID do fornecedor.

Registrar-se Informações fornecidas
EAX O valor máximo de entrada para informações de CPUID do hipervisor
EBX Assinatura da ID do fornecedor do hipervisor
ECX Assinatura da ID do fornecedor do hipervisor
EDX Assinatura da ID do fornecedor do hipervisor

Se a folha 0x40000001 for consultada, ela retornará um valor que representa uma identificação de interface de hipervisor neutra do fornecedor. Isso determina a semântica das folhas de 0x4000002 até 0x400000FF.

Registrar-se Informações fornecidas
EAX Assinatura da interface do hipervisor.
EBX Reservado
ECX Reservado
EDX Reservado

Essas duas folhas permitem que o convidado consulte a ID e a interface do fornecedor do hipervisor de forma independente. A ID do fornecedor é fornecida apenas para fins informativos e de diagnóstico. É recomendável que o software apenas basee as decisões de compatibilidade na assinatura de interface relatadas por meio da folha 0x40000001.

Folhas de CPUID do Hipervisor da Microsoft

Em hipervisores em conformidade com a interface CPUID do hipervisor da Microsoft, os 0x40000000 registros folha e folha 0x40000001 terão os seguintes valores.

Intervalo de folhas CPUID do hipervisor – 0x40000000

O EAX determina a folha de CPUID máxima do hipervisor. EBX-EDX contêm a assinatura da ID do fornecedor do hipervisor. A assinatura da ID do fornecedor deve ser usada apenas para fins de relatório e diagnóstico.

Registrar-se Informações fornecidas
EAX O valor máximo de entrada para informações de CPUID do hipervisor. Nos hipervisores da Microsoft, isso será pelo menos 0x40000005.
EBX 0x7263694D— "Micr"
ECX 0x666F736F— "osof"
EDX 0x76482074— "t Hv"

Identificação de interface neutra do fornecedor do hipervisor – 0x40000001

O EAX contém a assinatura de identificação da interface do hipervisor. Isso determina a semântica das folhas de 0x40000002 até 0x400000FF.

Registrar-se Informações fornecidas
EAX 0x31237648— "Hv#1"
EBX Reservado
ECX Reservado
EDX Reservado

Os hipervisores em conformidade com a interface "Hv#1" também fornecem pelo menos as seguintes folhas.

Identidade do sistema do hipervisor – 0x40000002

Registrar-se Bits Informações fornecidas
EAX Número da Compilação
EBX 31-16 Versão Principal
15-0 Versão Menor

Identificação de recursos do hipervisor – 0x40000003

EAX e EBX indicam quais recursos estão disponíveis para a partição com base nos privilégios de partição atuais.

Registrar-se Bits Informações fornecidas
EAX Corresponde aos bits 31-0 de HV_PARTITION_PRIVILEGE_MASK
EBX Corresponde aos bits 63-32 de HV_PARTITION_PRIVILEGE_MASK
ECX 4-0 Reservado
5 O Mperf invariável está disponível
6 A pilha de sombras do supervisor está disponível
7 O PMU de arquitetura está disponível
8 Interceptação de interceptação de exceção está disponível
31-9 Reservado
EDX 0 Preterido (disponibilidade indicada anteriormente da instrução MWAIT)
1 O suporte à depuração de convidado está disponível
2 O suporte ao Monitor de Desempenho está disponível
3 O suporte para eventos de particionamento dinâmico da CPU física está disponível
4 O suporte para passar o bloco de parâmetro de entrada de hiperchamada por meio de registros XMM está disponível
5 O suporte para um estado ocioso de convidado virtual está disponível
6 O suporte para o estado de suspensão do hipervisor está disponível
7 O suporte para consultar distâncias NUMA está disponível
8 O suporte para determinar as frequências do temporizador está disponível
9 O suporte para injetar verificações de máquina sintética está disponível
10 O suporte para MSRs de falha de convidado está disponível
11 O suporte para msrs de depuração está disponível
12 O suporte para NPIEP está disponível
13 DisableHypervisorAvailable
14 ExtendedGvaRangesForFlushVirtualAddressListAvailable
15 O suporte para retornar a saída de hiperchamada por meio de registros XMM está disponível
16 Reservado
17 SintPollingModeAvailable
18 HypercallMsrLockAvailable
19 Usar temporizadores sintéticos diretos
20 Suporte para o registro pat disponível para VSM
21 Suporte para o registro de bndcfgs disponível para VSM
22 Reservado
23 Suporte para tempo sintético não inalado disponível
25-24 Reservado
26 Recurso LBR (Último Registro de Ramificação) da Intel com suporte
31-27 Reservado

Recomendações de implementação – 0x40000004

Indica quais comportamentos o hipervisor recomenda que o sistema operacional implemente para um desempenho ideal.

Registrar-se Bits Informações fornecidas
EAX 0 Recomendamos usar a hiperchamada para comutadores de espaço de endereço em vez de MOV para instrução CR3.
1 É recomendável usar a hiperchamada para liberações de TLB locais em vez de INSTRUÇÕES INVLPG ou MOV para CR3.
2 É recomendável usar a hiperchamada para liberações remotas de TLB em vez de interrupções entre processadores.
3 É recomendável usar MSRs para acessar registros APIC EOI, ICR e TPR em vez de seus equivalentes mapeados em memória.
4 É recomendável usar o MSR fornecido pelo hipervisor para iniciar uma REDEFINIÇÃO do sistema.
5 É recomendável usar o tempo relaxado para essa partição. Se usada, a VM deve desabilitar qualquer tempo limite de watchdog que dependa da entrega oportuna de interrupções externas.
6 É recomendável usar o remapeamento de DMA.
7 É recomendável usar o remapeamento de interrupção.
8 Reservado.
9 Recomendamos a substituição do AutoEOI.
10 É recomendável usar a hiperchamada SyntheticClusterIpi.
11 É recomendável usar a interface ExProcessorMasks mais recente.
12 Indica que o hipervisor está aninhado em uma partição Hyper-V.
13 É recomendável usar o INT para chamadas do sistema MBEC.
14 Recomendamos um hipervisor aninhado usando a interface VMCS habilitada. Também indica que iluminações aninhadas adicionais podem estar disponíveis (consulte folha 0x4000000A).
15 UseSyncedTimeline – Indica que a partição deve consumir o viés QueryPerformanceCounter fornecido pela partição raiz.
16 Reservado
17 UseDirectLocalFlushEntire – Indica que o convidado deve alternar CR4. PGE para liberar todo o TLB, pois isso é mais performante do que fazer uma hiperchamada.
18 NoNonArchitecturalCoreSharing – indica que o compartilhamento principal não é possível. Isso pode ser usado como uma otimização para evitar a sobrecarga de desempenho do STIBP.
19 Reservado
20 RestoreTimeOnResume – Indica que HvCallRestorePartitionTime está disponível para restaurar o tempo de referência da partição e o TSC quando a partição é retomada da hibernação. Na partição raiz, esse bit indica que o hipervisor restaura o tempo da partição raiz no currículo. Se o bit 12 também estiver definido, a partição raiz deverá permitir a hibernação somente se esse bit estiver definido.
31-21 Reservado
EBX Número recomendado de tentativas de tentar novamente uma falha de spinlock antes de notificar o hipervisor sobre as falhas. 0xFFFFFFFF indica nunca notificar.
ECX 6-0 ImplementedPhysicalAddressBits – relata a largura do endereço físico (MAXPHYADDR) relatada pelos processadores físicos do sistema. Se todos os bits contiverem 0, o recurso não terá suporte. Observe que o valor relatado é o número real de bits de endereço físico e não a posição de bit usada para representar esse número.
31-7 Reservado
EDX Reservado

Limites de implementação do hipervisor – 0x40000005

Descreve os limites de escala com suporte na implementação atual do hipervisor. Se qualquer valor for zero, o hipervisor não exporá as informações correspondentes; caso contrário, eles têm esses significados.

Registrar-se Informações fornecidas
EAX O número máximo de processadores virtuais com suporte
EBX O número máximo de processadores lógicos com suporte
ECX O número máximo de vetores de interrupção física disponíveis para remapeamento de interrupção.
EDX Reservado

Recursos de hardware de implementação – 0x40000006

Indica quais recursos específicos de hardware foram detectados e estão atualmente em uso pelo hipervisor.

Registrar-se Bits Informações fornecidas
EAX 0 O suporte para assistência de sobreposição APIC é detectado e em uso.
1 O suporte para bitmaps MSR é detectado e em uso.
2 O suporte para contadores de desempenho de arquitetura é detectado e em uso.
3 O suporte para tradução de endereço de segundo nível é detectado e em uso.
4 O suporte para remapeamento de DMA é detectado e em uso.
5 O suporte para remapeamento de interrupção é detectado e em uso.
6 Indica que um scrubber de patrulha de memória está presente no hardware.
7 A proteção contra DMA está em uso.
8 O HPET é solicitado.
9 Temporizadores sintéticos são voláteis.
13-10 O nível do hipervisor do convidado atual - '0' se não aninhado.
14 Modo de destino físico necessário.
15 Use VMFUNC para o comutador de mapa de alias.
16 O suporte para zero de memória de hardware está presente.
17 O suporte para Convidado Irrestrito está presente.
18 O suporte para alocação de recursos (RDT-A, PQOS-A) está presente.
19 O suporte para monitoramento de recursos (RDT-M, PQOS-M) está presente.
20 O suporte para PMU virtual convidado está presente.
21 O suporte para LBR virtual convidado está presente.
22 O suporte para IPT virtual convidado está presente.
23 O suporte para emulação APIC está presente.
24 A tabela WDAT do ACPI é detectada e em uso pelo hipervisor.
31-25 Reservado
EBX Reservado
ECX Reservado
EDX Reservado

Identificação de recursos aninhados do hipervisor – 0x40000009

Descreve os recursos expostos à partição pelo hipervisor ao executar aninhado. O EAX descreve o acesso a MSRs virtuais. O EDX descreve o acesso a hiperchamadas.

Registrar-se Bits Informações fornecidas
EAX 1-0 Reservado
2 AccessSynicRegs
3 Reservado
4 AccessIntrCtrlRegs
5 AccessHypercallMsrs
6 AccessVpIndex
11-7 Reservado
12 AccessReenlightenmentControls
31-13 Reservado
EBX Reservado
ECX Reservado
EDX 3-0 Reservado
4 XmmRegistersForFastHypercallAvailable
14-5 Reservado
15 FastHypercallOutputAvailable
16 Reservado
17 SintPollingModeAvailable
31-18 Reservado

Recursos de virtualização aninhada do hipervisor – 0x4000000A

Indica quais otimizações de virtualização aninhadas estão disponíveis para um hipervisor aninhado.

Registrar-se Bits Informações fornecidas
EAX 7-0 Versão do VMCS habilitada (baixa)
15-8 Versão do VMCS habilitada (alta)
16 Reservado
17 Indica suporte para hiperchamadas de liberação virtual direta.
18 Indica suporte para as hiperchamas HvCallFlushGuestPhysicalAddressSpace e HvCallFlushGuestPhysicalAddressList (em plataformas x64).
19 Indica suporte para usar um bitmap de MSR habilitado.
20 Indica suporte para combinar exceções de virtualização na classe de exceção de falha de página.
21 Indica suporte para valor diferente de zero do campo 0x00002802 (GuestIa32DebugCtl) no VMCS.
22 Indica suporte para o TLB habilitado em plataformas AMD. As liberações de ASID não afetam as entradas TLB derivadas do NPT. As hiperchamadas devem ser usadas para invalidar entradas TLB NPT. Também indica suporte para as hiperchamas HvCallFlushGuestPhysicalAddressSpace e HvCallFlushGuestPhysicalAddressList.
31-21 Reservado
EBX 0 Indica suporte para os campos GuestPerfGlobalCtrl e HostPerfGlobalCtrl no VMCS habilitado.
31-1 Reservado
ECX Reservado
EDX Reservado

Controle de versão

As informações de versão do hipervisor são codificadas em folha 0x40000002. Dois números de versão são fornecidos: a versão principal e a versão do serviço.

A versão principal inclui um número de versão principal e secundário e um número de build. Elas correspondem aos números de versão do Microsoft Windows. A versão do serviço descreve as alterações feitas na versão principal.

Os clientes são altamente incentivados a verificar se há recursos de hipervisor usando folhas 0x400000030x40000005 de CPUID em vez de comparar com intervalos de versão.

Descoberta de recursos e interfaces (ARM64)

Na arquitetura ARM64, os seguintes mecanismos são usados para descoberta de recursos e interface:

  • Consultas HvRegister por meio de HvCallGetVpRegisters – Usado para informações de recursos estáticos e de versão.
  • Registros mapeados em memória – usados para valores de status e controle.

Além dessas interfaces específicas da arquitetura, o hipervisor fornece uma interface de procedimento simples implementada com hiperchamadas.

Descoberta de hipervisor

Antes de usar a maioria das interfaces do hipervisor, o software deve primeiro determinar se ele está em execução em um ambiente virtualizado.

No ARM64, o software convidado pode descobrir o hipervisor usando a interface padrão SMCCC (Convenção de Chamada do SMC). A descoberta é executada usando a instrução HVC ou SMC com a ID 0xC600FF0 da função em X0 (isso corresponde a uma chamada de hipervisor específica do fornecedor de 64 bits, VENDOR_HYP_FUNCTION_CODE_UID). A chamada segue as convenções do SMCCC, incluindo um imm16 de 0. O hipervisor da Microsoft retorna os seguintes valores que representam GUID 4d32ba58-cd24-4764-8eef-6c7516597024:

Registrar-se Value
X0 0x4d32ba58
X1 0xcd244764
X2 0x8eef6c75
X3 0x16597024

Depois que um hipervisor é detectado, o software convidado pode consultar recursos de hipervisor por meio de registros sintéticos usando a hiperchamada HvCallGetVpRegisters . Vários registros de chave podem ser consultados antes que o registro de ID do sistema operacional convidado seja definido, permitindo a descoberta antecipada de recursos do hipervisor durante a inicialização.

Registros de recursos do hipervisor

As plataformas ARM64 consultam informações do hipervisor por meio de registros sintéticos em vez de instruções de CPUID. Esses registros fornecem informações equivalentes a seus equivalentes de CPUID x64 e são acessados por meio de HvCallGetVpRegisters. Todos os registros de recursos retornam valores de 128 bits.

Identidade do sistema do hipervisor – HvRegisterHypervisorVersion

Retorna informações de versão codificadas em um valor de 128 bits. O layout é idêntico ao 0x40000002 folha CPUID x64, com valores de registro x64 empacotados no resultado de 128 bits (EAX nos bits 31-0, EBX em bits 63-32, ECX em bits 95-64, EDX em bits 127-96).

Identificação de recursos do hipervisor – HvRegisterPrivilegesAndFeaturesInfo

Equivalente a 0x40000003 folha CPUID x64. Indica quais recursos estão disponíveis para a partição com base nos privilégios de partição atuais. Retorna um valor de 128 bits com estes campos:

Bits Informações fornecidas
31-0 Corresponde aos bits 31-0 de HV_PARTITION_PRIVILEGE_MASK
63-32 Corresponde aos bits 63-32 de HV_PARTITION_PRIVILEGE_MASK
64 O suporte à depuração de convidado está disponível.
65 O suporte ao Monitor de Desempenho está disponível.
66 O suporte para eventos de particionamento dinâmico da CPU física está disponível.
67 O suporte para um estado ocioso de convidado virtual está disponível.
68 O suporte para o estado de suspensão do hipervisor está disponível.
69 O suporte para consultar distâncias NUMA está disponível.
70 O suporte para determinar as frequências do temporizador está disponível.
71 O suporte para injetar verificações de máquina sintética está disponível.
Setenta e dois O suporte para registros de falha de convidado está disponível.
73 Reservado.
74 DisableHypervisorAvailable.
75 Reservado.
76 SintPollingModeAvailable.
77 Use temporizadores sintéticos diretos.
127-78 Reservado.

Recomendações de implementação – HvRegisterFeaturesInfo

Equivalente a 0x40000004 folha CPUID x64. Indica quais comportamentos o hipervisor recomenda que o sistema operacional implemente para um desempenho ideal. Retorna um valor de 128 bits.

Bits Informações fornecidas
0 UseHvRegisterForReset – No ARM64, isso é sempre falso (as partições devem usar SYSTEM_RESET PSCI).
1 É recomendável usar o tempo relaxado para essa partição. Se usada, a VM deve desabilitar qualquer tempo limite de watchdog que dependa da entrega oportuna de interrupções externas.
2 É recomendável usar a hiperchamada SyntheticClusterIpi. No ARM64, isso é falso para a partição raiz (que deve usar ICC_SGI1R_EL1 diretamente) e true para partições de convidado.
3 É recomendável usar a interface ExProcessorMasks mais recente.
4 Indica que o hipervisor está aninhado em uma partição Hyper-V.
5 Indica que a partição deve consumir o viés QueryPerformanceCounter fornecido pela partição raiz.
20-6 Reservado
21 UseHypercallForMmioAccess
22 UseGpaPinningHypercall
23 WakeVps
25-24 Reservado
26 MapPartitionEventLogBuffer
31-27 Reservado
63-32 Número recomendado de tentativas de tentar novamente uma falha de spinlock antes de notificar o hipervisor sobre as falhas. 0xFFFFFFFF indica nunca notificar.
127-64 Reservado

Limites de implementação do hipervisor – HvRegisterImplementationLimitsInfo

Descreve os limites de escala com suporte na implementação atual do hipervisor. Se qualquer valor for zero, o hipervisor não exporá as informações correspondentes. Retorna um valor de 128 bits com um layout idêntico à folha de CPUID x64 0x40000005, com valores de registro x64 empacotados no resultado de 128 bits (EAX nos bits 31-0, EBX nos bits 63-32, ECX nos bits 95-64, EDX nos bits 127-96).

Recursos de hardware de implementação – HvRegisterHardwareFeaturesInfo

Equivalente a 0x40000006 folha CPUID x64. Indica quais recursos específicos de hardware foram detectados e estão atualmente em uso pelo hipervisor. Retorna um valor de 128 bits.

Bits Informações fornecidas
0 O suporte para contadores de desempenho de arquitetura é detectado e em uso.
1 O suporte para tradução de endereço de segundo nível é detectado e em uso.
2 O suporte para remapeamento de DMA é detectado e em uso.
3 O suporte para remapeamento de interrupção é detectado e em uso.
4 Indica que um scrubber de patrulha de memória está presente no hardware.
5 A proteção contra DMA está em uso.
6 Temporizadores sintéticos são voláteis.
127-7 Reservado

Principais tipos de evento PMU (Unidade de Monitoramento de Desempenho)

Um conjunto de linhas de base de eventos de PMU do Núcleo da arquitetura do Arm está disponível para partições convidadas em todas as plataformas ARM64. Eventos adicionais de PMU principal estão disponíveis no Azure Cobalt 100 e Azure Cobalt 200. Os números e os nomes do evento seguem as definições de evento pmu da arquitetura arm.

O software convidado pode identificar a plataforma lendo o MIDR_EL1 registro e comparando os 32 bits baixos para igualdade exata com os valores na tabela a seguir, sem mascarar os campos de implementação, variante, arquitetura, parte ou revisão. Essa é a heurística recomendada para determinar se os tipos de eventos core pmu adicionais estão disponíveis antes de acessá-los.

Platform MIDR_EL1
Azure Cobalt 100 0x410FD490
Azure Cobalt 200 0x410FD841

Na tabela a seguir, uma marca de seleção (✓) indica que o tipo de evento PMU Principal tem suporte para partições de convidado na plataforma correspondente.

Número do evento Nome do evento Todas as plataformas ARM64 Azure Cobalt 100 Azure Cobalt 200
0x0000 SW_INCR ✓ ✓ ✓
0x0001 L1I_CACHE_REFILL ✓ ✓
0x0002 L1I_TLB_REFILL ✓ ✓
0x0003 L1D_CACHE_REFILL ✓ ✓ ✓
0x0004 L1D_CACHE ✓ ✓ ✓
0x0005 L1D_TLB_REFILL ✓ ✓
0x0008 INST_RETIRED ✓ ✓ ✓
0x0010 BR_MIS_PRED ✓ ✓ ✓
0x0011 CPU_CYCLES ✓ ✓ ✓
0x0012 BR_PRED ✓ ✓ ✓
0x0013 MEM_ACCESS ✓ ✓
0x0014 L1I_CACHE ✓ ✓
0x0016 L2D_CACHE ✓ ✓
0x0017 L2D_CACHE_REFILL ✓ ✓
0x001A MEMORY_ERROR ✓ ✓
0x001B INST_SPEC ✓ ✓ ✓
0x001C TTBR_WRITE_RETIRED ✓ ✓
0x0020 L2D_CACHE_ALLOCATE ✓
0x0021 BR_RETIRED ✓ ✓ ✓
0x0022 BR_MIS_PRED_RETIRED ✓ ✓ ✓
0x0023 STALL_FRONTEND ✓ ✓ ✓
0x0024 STALL_BACKEND ✓ ✓ ✓
0x0025 L1D_TLB ✓ ✓
0x0026 L1I_TLB ✓ ✓
0x0029 L3D_CACHE_ALLOCATE ✓
0x002D L2D_TLB_REFILL ✓ ✓
0x002F L2D_TLB ✓ ✓
0x0031 REMOTE_ACCESS ✓ ✓
0x0034 DTLB_WALK ✓ ✓
0x0035 ITLB_WALK ✓ ✓
0x0036 LL_CACHE_RD ✓ ✓
0x0037 LL_CACHE_MISS_RD ✓ ✓
0x0039 L1D_CACHE_LMISS_RD ✓ ✓
0x003A OP_RETIRED ✓ ✓ ✓
Código hexadecimal: 0x003B OP_SPEC ✓ ✓ ✓
0x003C STALL ✓ ✓
0x003D STALL_SLOT_BACKEND ✓ ✓
0x003E STALL_SLOT_FRONTEND ✓ ✓
0x003F STALL_SLOT ✓ ✓
0x0040 L1D_CACHE_RD ✓ ✓
0x0041 L1D_CACHE_WR ✓ ✓
0x0042 L1D_CACHE_REFILL_RD ✓ ✓
0x0043 L1D_CACHE_REFILL_WR ✓ ✓
0x0044 L1D_CACHE_REFILL_INNER ✓ ✓
0x0045 L1D_CACHE_REFILL_OUTER ✓ ✓
0x0046 L1D_CACHE_WB_VICTIM ✓ ✓
0x004C L1D_TLB_REFILL_RD ✓ ✓
0x004D L1D_TLB_REFILL_WR ✓ ✓
0x004E L1D_TLB_RD ✓ ✓
0x004F L1D_TLB_WR ✓ ✓
0x0050 L2D_CACHE_RD ✓ ✓
0x0051 L2D_CACHE_WR ✓ ✓
0x0052 L2D_CACHE_REFILL_RD ✓ ✓
0x0053 L2D_CACHE_REFILL_WR ✓ ✓
0x0056 L2D_CACHE_WB_VICTIM ✓ ✓
0x005C L2D_TLB_REFILL_RD ✓ ✓
0x005D L2D_TLB_REFILL_WR ✓ ✓
0x005E L2D_TLB_RD ✓ ✓
0x005F L2D_TLB_WR ✓ ✓
0x0066 MEM_ACCESS_RD ✓ ✓
0x0067 MEM_ACCESS_WR ✓ ✓
0x0068 UNALIGNED_LD_SPEC ✓ ✓
0x0069 UNALIGNED_ST_SPEC ✓ ✓
0x0070 LD_SPEC ✓ ✓
0x0071 ST_SPEC ✓ ✓
0x0073 DP_SPEC ✓ ✓
0x0074 ASE_SPEC ✓ ✓
0x0075 VFP_SPEC ✓ ✓
0x0077 CRYPTO_SPEC ✓ ✓
0x0078 BR_IMMED_SPEC ✓ ✓
0x007A BR_INDIRECT_SPEC ✓ ✓
0x01B8 L2D_CACHE_L1HWPRF ✓
0x01B9 L2D_CACHE_REFILL_L1HWPRF ✓
0x4004 CNT_CYCLES ✓ ✓
0x4005 STALL_BACKEND_MEM ✓ ✓
0x4006 L1I_CACHE_LMISS ✓ ✓
0x4009 L2D_CACHE_LMISS_RD ✓ ✓
0x4020 LDST_ALIGN_LAT ✓ ✓
0x4021 LD_ALIGN_LAT ✓ ✓
0x4022 ST_ALIGN_LAT ✓ ✓
0x4024 MEM_ACCESS_CHECKED ✓ ✓
0x4025 MEM_ACCESS_CHECKED_RD ✓ ✓
0x4026 MEM_ACCESS_CHECKED_WR ✓ ✓
0x8006 SVE_INST_SPEC ✓ ✓

Controle de versão

As informações de versão do hipervisor são codificadas em HvRegisterHypervisorVersion. O formato corresponde ao equivalente x64.