Compartilhar via


HV_VP_SET

Um conjunto de processadores virtuais representa uma coleção de processadores virtuais e pode ser usado como uma entrada para algumas hiperchamadas.

Syntax

typedef struct
{
    UINT64 Format;
    UINT64 ValidBanksMask;
    UINT64 BankContents[];
} HV_VP_SET;

Um conjunto de processadores tem dois modos, que são especificados pelo campo formato. Conjuntos de processador com um formato "1" representam todos os processadores virtuais para a partição especificada. Conjuntos de processador com um formato "0" descrevem um conjunto esparso de processadores virtuais.

Valor de formato Definir comportamento
0 Um subconjunto esparso de VPSs
1 Todos os VPSs (pertencentes a uma partição)

Conjunto de processador virtual esparso

A seção a seguir descreve como construir um conjunto esparso de processadores virtuais.

O conjunto total de processadores virtuais é dividido em partes de 64, conhecido como "banco". Por exemplo, os processadores 0-63 estão no banco 0, 64-127 estão no banco 1 e assim por diante.

Para descrever um processador individual, seu banco é especificado com ValidBanksMask. Cada bit em ValidBanksMask representa um banco específico.

bank = VPindex / 64

Para cada bit definido com ValidBanksMask, deve haver um elemento na matriz BanksContents. Esse elemento é uma máscara que descreve o próprio banco.

Se um bit em ValidBankMask for 0, não haverá nenhum elemento correspondente em BanksContents. Além disso, para um bit 1 em ValidBankMask, ele é um estado válido para o elemento correspondente em BanksContents pode ser todos 0s, o que significa que nenhum processador está especificado neste banco.

Exemplo de conjunto de processadores

Suponha que uma partição tenha 200 VPSs e que queiramos especificar o seguinte conjunto: {0, 5130}

Primeiro, o formato é 0, pois esse é um conjunto esparso. Em seguida, os bancos correspondentes (e, portanto, o conjunto de bits de ValidBanksMask) são {0, 0, 2}. Portanto, ValidBanksMask é 0x05.

O banco 0 define bits 0 e 5 para especificar o VPSs dentro desse banco. Portanto, o elemento correspondente na máscara BankContents é 0x21.

Como o bit 1 não está definido em ValidBanksMask, não há nenhum elemento correspondente em BankContents. O banco 2 representa o VP de índices 128-191. Para descrever o índice 130, o bit 2 da máscara correspondente é definido. Portanto, BankContents é: {0x21, 0x04}.