문서 ID: 000088369 콘텐츠 형태: 문제 해결 마지막 검토일: 2023-04-13

인텔® Stratix® 10 SoC FPGA 또는 인텔 Agilex 7 SoC FPGA 사용할 때 test_buf_size® 더 큰 값으로 변경될 때 dmatest가 실패하는 이유는 무엇입니까?

환경

    인텔® Quartus® Prime Pro Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
설명

인텔® Stratix® 10 SoC FPGA 또는 인텔 Agilex® 7 SoC FPGA DMAC용 dmatest를 실행할 때 test_buf_size 더 큰 값으로 변경할 때 다음 오류가 발생할 수 있습니다( test_buf_size 기본값은 16KB입니다).

root@agilex:~# 에코 1 > /sys/module/dmatest/매개변수/실행

[149.931113] dmatest: 채널이 구성되지 않고 계속 진행됨

[149.937236] dmatest: dma0chan0을 사용하여 스레드 1개 추가

[149.942349] dmatest: dma0chan0을 사용하여 스레드 1개 시작

root@agilex:~# [149.963288] dma-pl330 ffda0000.pdma: swiotlb 버퍼가 가득 찼습니다(sz: 2097152 바이트), 총 32768(슬롯), 사용 1024(슬롯)

[149.974096] dma-pl330 ffda0000.pdma: 오버플로 0x00000003ebc00000+2097152 DMA 마스크 ffffffff 버스 마스크 0

[149.983622] ------------[여기 잘라내기]------------

해결 방법

근본 원인은 DMAC 330의 주소 폭이 32비트에 불과하다는 것입니다. SWIOTLB 기본 버퍼 크기는 DMAC 330이 전체 DDR 범위에 액세스하기에 충분하지 않습니다.

이 문제를 해결하려면 다음 솔루션 중 하나를 사용할 수 있습니다.

  1. 구성 Linux는 처음 2GB의 DDR만 사용합니다. DMAC는 32비트 폭 주소로 2GB 메모리 범위에 액세스할 수 있으므로 SWIOTLB 버퍼를 늘릴 필요가 없습니다.
  2. 커널 소스와 U-Boot 명령줄을 수정하여 SWIOTLB 버퍼를 더 크게 만듭니다.

/include/linux/swiotlb.h에서 IO_TLB_SEGSIZE 더 많은 수로 변경합니다(2의 전력이어야 합니다); 예를 들어, #define IO_TLB_SEGSIZE 1024

U-Boot 환경을 변경하여 사용자 정의 swiotlb 값을 추가합니다. 예를 들어 setenv bootargs earlycon 콘솔=ttyPS0,115200 swiotlb=32768

관련 제품

이 문서는 다음 항목에 적용됩니다. 2 제품

인텔® Agilex™ FPGAs 및 SoC FPGAs
인텔® Stratix® 10 FPGA 및 SoC FPGA

1

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어서는 안 됩니다. 이 페이지의 영어 버전과 번역 사이에 모순이 있는 경우 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.