Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A hiperchamada HvCallFlushVirtualAddressSpace invalida todas as entradas TLB virtuais que pertencem a um espaço de endereço especificado.
Interfase
HV_STATUS
HvCallFlushVirtualAddressSpace(
_In_ HV_ADDRESS_SPACE_ID AddressSpace,
_In_ HV_FLUSH_FLAGS Flags,
_In_ UINT64 ProcessorMask
);
A operação de invalidação de TLB virtual atua em um ou mais processadores.
Se o convidado tiver conhecimento sobre quais processadores talvez precisem ser liberados, ele poderá especificar uma máscara de processador. Cada bit na máscara corresponde a um índice de processador virtual. Por exemplo, uma máscara de 0x0000000000000051 indica que o hipervisor deve liberar apenas o TLB dos processadores virtuais 0, 4 e 6. Um processador virtual pode determinar seu índice lendo o registro sintético HvRegisterVpIndex (via HvCallGetVpRegisters) ou em x64 do MSR HV_X64_MSR_VP_INDEX.
Os sinalizadores a seguir podem ser usados para modificar o comportamento da liberação:
- HV_FLUSH_ALL_PROCESSORS indica que a operação deve ser aplicada a todos os processadores virtuais dentro da partição. Se esse sinalizador for definido, o parâmetro ProcessorMask será ignorado.
- HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES indica que a operação deve ser aplicada a todos os espaços de endereço virtual. Se esse sinalizador for definido, o parâmetro AddressSpace será ignorado.
- HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY indica que o hipervisor é necessário apenas para liberar mapeamentos de página que não foram mapeados como "globais" (em x64, o bit "G" na entrada da tabela de páginas; em ARM64, o bit nG). As entradas globais podem ser (mas não precisam ser) deixadas sem falhas pelo hipervisor.
Todos os outros sinalizadores são reservados e devem ser definidos como zero.
Essa chamada garante que, pelo controle de tempo, retorne ao chamador, os efeitos observáveis de todas as liberações nos processadores virtuais especificados ocorreram.
Se o TLB de um processador virtual de destino exigir liberação e o TLB desse processador virtual estiver atualmente "bloqueado", o processador virtual do chamador será suspenso. Quando o processador virtual do chamador for "não gasto", a hiperchamada será relançada.
Código de chamada
0x0002 (Simples)
Parâmetros de Entrada
| Nome | Offset | Tamanho | Informações fornecidas |
|---|---|---|---|
AddressSpace |
0 | 8 | Especifica uma ID de espaço de endereço (CR3 no x64, base da tabela de tradução no ARM64). |
Flags |
8 | 8 | Conjunto de bits de sinalizador que modificam a operação da liberação. |
ProcessorMask |
16 | 8 | Máscara de processador que indica quais processadores devem ser afetados pela operação de liberação. |