Partilhar via


Acesso à alocação não residente

O acesso de GPU a alocações que não são residentes é ilegal. Esse acesso resulta na remoção de um dispositivo para o aplicativo que gerou o erro.

Há dois modelos distintos de manipulação desse acesso inválido dependendo se o mecanismo de falha dá suporte ao endereçamento virtual de GPU:

  • Para mecanismos que não dão suporte ao endereçamento virtual de GPU e usam a lista de localização de alocação e patch para referências de memória de patch:

    Um acesso inválido ocorre quando o driver do modo de usuário envia uma lista de alocação que faz referência a uma alocação que não é residente no dispositivo (ou seja, o driver do modo de usuário não chamou MakeResidentCb nessa alocação). Quando esse acesso inválido ocorre, o kernel de elementos gráficos coloca o contexto/dispositivo com falha em erro.

  • Para mecanismos que dão suporte ao endereçamento virtual de GPU, mas acessam um VA (endereço virtual) de GPU inválido:

    Espera-se que a GPU gere uma falha de página irrecuperável na forma de uma interrupção. Quando a interrupção de falha de página ocorre, o driver do modo kernel precisa encaminhar o erro para o kernel gráfico por meio de uma nova notificação de falha de página. Quando o kernel gráfico recebe essa notificação, ele inicia uma redefinição de mecanismo no mecanismo com falha e coloca o contexto/dispositivo com falha em erro. Se a redefinição do mecanismo não for bem-sucedida, o kernel de gráficos promoverá o erro para um TDR (detecção e recuperação de tempo limite) de todo o adaptador completo.

    O acesso a um VA inválido pode acontecer porque não há alocação por trás do VA ou há uma alocação válida, mas não foi feito residente.