Red Hat Training

A Red Hat training course is available for RHEL 8

15.7. Anexar coprocessadores criptográficos a máquinas virtuais no IBM Z

Para usar criptografia de hardware em sua máquina virtual (VM) em um host IBM Z, crie dispositivos mediados a partir de um dispositivo coprocessador criptográfico e os atribua às VMs pretendidas. Para instruções detalhadas, veja abaixo.

Pré-requisitos

  • Seu host está rodando em hardware IBM Z.
  • O coprocessador criptográfico é compatível com a atribuição de dispositivos. Para confirmar isso, certifique-se de que o endereço type de seu coprocessador esteja listado como CEX4 ou posterior.

    # lszcrypt -V
    
    CARD.DOMAIN TYPE  MODE        STATUS  REQUESTS  PENDING HWTYPE QDEPTH FUNCTIONS  DRIVER
    --------------------------------------------------------------------------------------------
    05         CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4card
    05.0004    CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue
    05.00ab    CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue
  • O pacote mdevctl está instalado.
  • O módulo do kernel vfio_ap é carregado. Para verificar, use:

    # lsmod | grep vfio_ap
    vfio_ap         24576  0
    [...]

    Para carregar o módulo, use:

    # modprobe vfio_ap

Procedimento

  1. No host, re-designar seu dispositivo criptográfico para os drivers vfio-ap. O exemplo seguinte atribui dois dispositivos criptográficos com bitmask IDs (0x05, 0x0004) e (0x05, 0x00ab) a vfio-ap.

    #  echo -0x05 > /sys/bus/ap/apmask
    #  echo -0x0004, -0x00ab > /sys/bus/ap/aqmask

    Para informações sobre a identificação dos valores de identificação da máscara de bits, consulte Preparando dispositivos de passagem para recursos de adaptador criptográfico no documento KVM Virtual Server Management da IBM.

  2. Verificar se os dispositivos criptográficos foram reatribuídos corretamente.

    # lszcrypt -V
    
    CARD.DOMAIN TYPE  MODE        STATUS  REQUESTS  PENDING HWTYPE QDEPTH FUNCTIONS  DRIVER
    --------------------------------------------------------------------------------------------
    05          CEX5C CCA-Coproc  -              1        0     11     08 S--D--N--  cex4card
    05.0004     CEX5C CCA-Coproc  -              1        0     11     08 S--D--N--  vfio_ap
    05.00ab     CEX5C CCA-Coproc  -              1        0     11     08 S--D--N--  vfio_ap

    Se os valores de DRIVER das filas de domínio mudassem para vfio_ap, a reatribuição seria bem sucedida.

  3. Gerar um dispositivo UUID.

    # uuidgen
    669d9b23-fe1b-4ecb-be08-a2fabca99b71

    Nas seguintes etapas deste procedimento, substitua 669d9b23-fe1b-4ecb-be08-a2fabca99b71 por sua UUID gerada.

  4. Usando a UUID, crie um novo dispositivo vfio_ap.

    O exemplo a seguir mostra a criação de um dispositivo mediado persistente e a atribuição de filas a ele. Por exemplo, os seguintes comandos atribuem o adaptador de domínio 0x05 e as filas de domínio 0x0004 e 0x00ab ao dispositivo 669d9b23-fe1b-4ecb-be08-a2fabca99b71.

    # mdevctl define --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --parent matrix --type vfio_ap-passthrough
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_adapter --value=0x05
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_domain --value=0x0004
    # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_domain --value=0x00ab
  5. Iniciar o dispositivo mediado.

    # mdevctl start --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71
  6. Verificar se a configuração foi aplicada corretamente

    # cat /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/669d9b23-fe1b-4ecb-be08-a2fabca99b71
    05.0004
    05.00ab

    Se a saída contém os valores numéricos das filas que você designou anteriormente para vfio-ap, o processo foi bem sucedido.

  7. Use o comando virsh edit para abrir a configuração XML da VM onde você deseja usar os dispositivos criptográficos.

    # virsh edit vm-name
  8. Adicione as seguintes linhas à seção <devices> na configuração XML, e salve-a.

    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'>
      <source>
        <address uuid='669d9b23-fe1b-4ecb-be08-a2fabca99b71'/>
      </source>
    </hostdev>

    Note que cada UUID só pode ser atribuída a uma VM de cada vez.

Verificação

  1. Inicie a VM para a qual você designou o dispositivo mediado.
  2. Após a inicialização do sistema operacional (OS) convidado, certifique-se de que ele detecta os dispositivos criptográficos designados.

    # lszcrypt -V
    
    CARD.DOMAIN TYPE  MODE        STATUS  REQUESTS  PENDING HWTYPE QDEPTH FUNCTIONS  DRIVER
    --------------------------------------------------------------------------------------------
    05          CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4card
    05.0004     CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue
    05.00ab     CEX5C CCA-Coproc  online         1        0     11     08 S--D--N--  cex4queue

    A saída deste comando no sistema operacional convidado será idêntica à de uma partição lógica host com os mesmos dispositivos coprocessadores criptográficos disponíveis.