Aufgrund eines Problems in der Linux-Socfpga-Kernel-Version 5.4 und neuer kann der HPS E STANDBY unter bestimmten Umständen hängen oder zum Stillstand gebracht werden.
Dieses Problem ist auf eine falsche Einstellung im Cyclone® V SoC Linux Gerätebaum zurückzuführen.
- Das Bit "Shared Enable Override" muss auf dem L2C-310 Cache-Controller aktiviert sein
- Das Limit für ausstehende Lese- und Schreibzugriffe sollte auf 0xf auf der ECONTROLLER-DMA gesetzt werden.
Führen Sie die folgenden Schritte durch, um dieses Problem zu beheben:
1. Stellen Sie sicher, dass der L2C-310 Gerätebaumknoten das freigegebene Enable Override-Bit setzt, indem Sie arch/arm/boot/dts/socfpga.dtsi bearbeiten.
L2: Cache-controller@fffef000 {
compatible = "arm,pl310-cache";
reg = <0xfffef000 0x1000>;
Interrupts = <0 38 0x04>;
Cache-vereinheitlicht;
Cache-Level = <2>;
arm,tag-latency = <1 1 1>;
arm, Datenlatenz = <2 1 1>;
Prefetch-data = <1>;
Prefetch-instr = <1>;
arm, Shared-Override; Anzahl überprüfen, ob dies vorhanden ist
arm,double-line ( Doppellinie) = <1>;
arm,double-linelich-incr = <0>;
arm,double-line/ wrap = <1>;
arm,prefetch-drop = <0>;
Arm,Prefetch-Offset = <7>;
};
2. Bearbeiten Sie die Ethernet-Knoten, um eine Referenz(en) für eine snps,axi-Config hinzuzufügen und Knoten für die snps,axi-config in arch/arm/boot/dts/socfpga.dtsi hinzuzufügen
Beispiel für GSDS:
diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi
Index e404220.. 90a0560 100644
--- a/arch/arm/boot/dts/socfpga.dtsi
+++ b/arch/arm/boot/dts/socfpga.dtsi
@@ -560,10 +560,16 @@
reset-names = "stmmaceth";
snps,multicast-filter-bins = <256>;
snps,perfect-filter-entries = <128>;
+ snps, axi-config = ;
tx-fifo-depth = <4096>;
rx-fifo-depth = <4096>;
status = "deaktiviert";
};
+
+ stmmac_axi_setup_0: stm ieee-axi-config_0 {
+ snps, wr_osr_lmt = <0xf>;
+ SNPS rd_osr_lmt = <0xf>;
+ };
Dieses Problem wird voraussichtlich in einer zukünftigen Version des Linux-Socfpga-Kernels behoben werden.