Linux-socfpga 커널 버전 5.4 이상의 문제로 인해 일부 상황에서 HPS EMAC가 중단되거나 중단될 수 있습니다.
이 문제는 Cyclone® V SoC Linux 장치 트리의 잘못된 설정으로 인해 발생합니다
- 공유 활성화 재정의 비트는 L2C-310 캐시 컨트롤러에서 활성화되어야 합니다
- 읽기 및 쓰기 미해결 트랜잭션 한도는 EMAC DMA에서 0xf로 설정해야 합니다.
이 문제를 해결하려면 다음과 같이 하십시오.
1. L2C-310 장치 트리 노드가 arch/arm/boot/dts/socfpga.dtsi를 편집하여 공유 Enable Override(재정의 활성화) 비트를 설정 하는지 확인합니다 .
L2: 캐시 controller@fffef000 {
호환 가능 = "ARM,PL310-캐시";
reg = <0xfffef000 0x1000>;
인터럽트 = <0 38 0x04>;
캐시 통합;
캐시 수준 = <2>;
팔, 태그 대기 시간 = <1 1 1>;
팔, 데이터 대기 시간 = <2 1 1>;
프리페치 데이터 = <1>;
프리페치 instr = <1>;
팔, 공유 재정의; # 이것이 존재하는지 확인
팔, 이중 줄 채우기 = <1>;
팔, 이중 라인 채우기 incr = <0>;
팔, 이중 줄 채우기 줄 바꿈 = <1>;
팔, 프리페치 드롭 = <0>;
팔, 프리페치 오프셋 = <7>;
};
2. 이더넷 노드를 편집 하여 snps,axi-config에 대한 참조를 추가하고 arch/arm/boot/dts/socfpga.dtsi에 snps,axi-config에 대한 노드를 추가합니다 .
GMAC0의 예:
diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi
인덱스 E404220.. 90a0560 100644
--- a/arch/arm/boot/dts/socfpga.dtsi
+++ b/arch/arm/boot/dts/socfpga.dtsi
@@ -560,10 +560,16 @@
재설정 이름 = "stmmaceth";
snps, 멀티 캐스트 필터 빈 = <256>;
snps, 완벽한 필터 항목 = <128>;
+ snps,axi-config = <&stmmac_axi_setup_0>;
tx-fifo-깊이 = <4096>;
rx-fifo-깊이 = <4096>;
상태 = "사용 안 함";
};
+
+ stmmac_axi_setup_0: stmmac-axi-config_0 {
+ snps,wr_osr_lmt = <0xf>;
+ snps,rd_osr_lmt = <0xf>;
+ };
이 문제는 linux-socfpga-5.10.120-lts 및 linux-socfpga-5.15.30-lts 브랜치부터 수정되었습니다