Delen via


HvCallFlushVirtualAddressSpace

De HvCallFlushVirtualAddressSpace hypercall ongeldig alle virtuele TLB-vermeldingen die deel uitmaken van een opgegeven adresruimte.

gebruikersinterface

HV_STATUS
HvCallFlushVirtualAddressSpace(
   _In_ HV_ADDRESS_SPACE_ID AddressSpace,
   _In_ HV_FLUSH_FLAGS Flags,
   _In_ UINT64 ProcessorMask
   );

De virtuele TLB-ongeldige bewerking werkt op een of meer processors.

Als de gast kennis heeft over welke processors mogelijk moeten worden leeggemaakt, kan het een processormasker opgeven. Elke bit in het masker komt overeen met een index van een virtuele processor. Een masker van 0x0000000000000051 geeft bijvoorbeeld aan dat de hypervisor alleen de TLB van virtuele processors 0, 4 en 6 mag leegmaken. Een virtuele processor kan de index bepalen door het synthetische register HvRegisterVpIndex (via HvCallGetVpRegisters) of op x64 van de HV_X64_MSR_VP_INDEX MSR te lezen.

De volgende vlaggen kunnen worden gebruikt om het gedrag van het leegmaken te wijzigen:

  • HV_FLUSH_ALL_PROCESSORS geeft aan dat de bewerking moet worden toegepast op alle virtuele processors binnen de partitie. Als deze vlag is ingesteld, wordt de parameter ProcessorMask genegeerd.
  • HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES geeft aan dat de bewerking moet worden toegepast op alle virtuele adresruimten. Als deze vlag is ingesteld, wordt de parameter AddressSpace genegeerd.
  • HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY geeft aan dat de hypervisor alleen is vereist voor het leegmaken van paginatoewijzingen die niet zijn toegewezen als 'globaal' (op x64, de 'G'-bit in de paginatabelvermelding; op ARM64, de nG-bit). Globale vermeldingen kunnen (maar zijn niet vereist) niet worden overgelaten door de hypervisor.

Alle andere vlaggen zijn gereserveerd en moeten worden ingesteld op nul.

Deze aanroep garandeert dat door het tijdbesturingselement terugkeert naar de beller, de waarneembare effecten van alle flushes op de opgegeven virtuele processors hebben plaatsgevonden.

Als de TLB van een virtuele doelprocessor moet worden leeggemaakt en de TLB van die virtuele processor momenteel is 'vergrendeld', wordt de virtuele processor van de beller onderbroken. Wanneer de virtuele processor van de beller 'unsuspended' is, wordt de hypercall opnieuw verzonden.

Code aanroepen

0x0002 (Eenvoudig)

Invoerparameters

Naam Offset Grootte Verstrekte informatie
AddressSpace 0 8 Hiermee geeft u een adresruimte-id (CR3 op x64, vertaaltabelbasis op ARM64) op.
Flags 8 8 Set vlag-bits die de werking van de flush wijzigen.
ProcessorMask 16 8 Processormasker dat aangeeft welke processors moeten worden beïnvloed door de flush-bewerking.