ID do artigo: 000088369 Tipo de conteúdo: Solução de problemas Última revisão: 13/04/2023

Por que o dmatest falha quando o test_buf_size é alterado para um valor maior quando Intel® Stratix® 10 SoC FPGA ou Intel Agilex® 7 SoC FPGA é usado?

Ambiente

    Intel® Quartus® Prime Pro Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

Ao executar o dmatest para DMAC em Intel® Stratix® 10 SoC FPGA ou Intel Agilex® 7 SoC FPGA, você pode encontrar o seguinte erro ao mudar o test_buf_size para um valor maior (o valor padrão do test_buf_size é de 16 KB):

root@agilex:~# eco 1 > /sys/module/dmatest/parâmetros/run

[ 149.931113] dmatest: sem canais configurados, continue com qualquer

[ 149.937236] dmatest: adicionado 1 threads usando dma0chan0

[ 149.942349] dmatest: Iniciado 1 threads usando dma0chan0

root@agilex:~# [149.963288] dma-pl330 ffda0000.pdma: buffer swiotlb está cheio (sz: 2097152 bytes), total de 32768 (slots), usado 1024 (slots)

[149.974096] dma-pl330 ffda0000.pdma: transbordamento 0x00000003ebc00000+2097152 de máscara DMA ffffffff bus mask 0

[149.983622] ------------[ corte aqui ]------------

Resolução

A causa principal é que o DMAC 330 tem apenas 32 bits de largura de endereço; o tamanho padrão do buffer SWIOTLB não é suficiente para que o DMAC 330 acesse toda a gama de DDR.

Para resolver este problema, você pode usar uma das seguintes soluções:

  1. Configurar Linux para usar apenas os primeiros 2 GB de DDR; O DMAC pode acessar a faixa de memória de 2 GB com um endereço de largura de 32 bits, de modo que o buffer SWIOTLB não seja necessário para aumentar.
  2. Modifique a fonte do kernel e a linha de comando U-boot para tornar o buffer SWIOTLB maior:

Em /include/linux/swiotlb.h, mude de IO_TLB_SEGSIZE para um número maior (deve ser uma potência de2); por exemplo, #define IO_TLB_SEGSIZE 1024

Altere o ambiente U-boot para adicionar valor personalizado de swiotlb; por exemplo, setenv bootargs earlycon console=ttyPS0,115200 swiotlb=32768

Produtos relacionados

Este artigo aplica-se a 2 produtos

FPGAs e FPGAs SoC Intel® Agilex™ 7
FPGAs Intel® Stratix® 10 e FPGAs SoC

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.