[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <48F7D4389F30BA4383F214EE802BA47101C2E0DB75@EXS12.iai.co.il>
Date: Thu, 5 Nov 2020 15:38:26 +0000
From: Alayev Michael <malayev@....co.il>
To: "mic.al.linux@...il.com" <mic.al.linux@...il.com>,
"andrew@...n.ch" <andrew@...n.ch>
CC: "netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: net: dsa: mv88e6xxx : linux v5.4 crash
Hello Andrew,
This is my system's network topology. It relies on Xilinx's Zynq-7000 soc.
zynq-7000 switch0 switch1
(cpu) mv88e6390x mv88e6390x
------- --------- ---------
| | | | | |
| gem0|------|p0 p10|-----|p10 |
| | | | | |
| | --------- ---------
| | |mdio_addr=2 | mdio_addr=3
| | | |
| |-------------------------------|
| | |
| | | mv88e1510(debug_phy)
| | | mdio_addr=1 --------
| | --------------------| |
| | | |
| gem1|------------------------| |
| | | |
| | --------
-------
I have built a v5.4 linux kernel for it and its ethernet network defined in the device-tree as follows
(arch/arm/boot/dts/zynq-zed.dts gem0 and gem1) :
> Please fix your email client and
> post the DT file for review. I will
> then point out some of the errors.
Tried to fix it, and indented it again:
&gem0 {
status = "okay";
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
fixed-link {
speed = <1000>;
full-duplex;
};
> The diagram you showed had gem0 connected directly to the switch. So
> this phy-handle is wrong. Or the diagram is wrong.
The diagram is correct. I have commented the phy-mode and phy-handle in 'gem0' definition and got error:
'macb e000b000.ethernet eth0: no PHY found'
dbg_phy: phy@1 {
reg = <1>;
label = "debug";
};
switch0: switch@2 {
compatible = "marvell,mv88e6190";
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;
dsa,member = <0 0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
switch0phy1: port@0 {
reg = <0>;
label = "uid208-cpu";
ethernet = <&gem0>;
phy-mode = "rgmii-id";
> You have gem0 using phy-mode = "rgmii-id" as well. Both doing delays
> will not work. You should drop the one in gem0.
As I've mentioned above, I dropped it but got error.
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@1 {
reg = <1>;
label = "uid201-1A";
};
port@2 {
reg = <2>;
label = "uid202-2A-p9-1A";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@3 {
reg = <3>;
label = "uid203-3A-p9-2A";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@4 {
reg = <4>;
label = "uid204-4A-p9-3A";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@5 {
reg = <5>;
label = "uid205-5A";
};
port@6 {
reg = <6>;
label = "uid206-6A";
};
port@7 {
reg = <7>;
label = "uid207-7A";
};
port@8 {
reg = <8>;
label = "uid208-8A";
};
port@9 {
reg = <9>;
label = "uid209-9A-p9-0A";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
> Why both 1000base-x and fixed link? Do you have an SFP connected? If
> so, describe the SFP in DT.
I do have SFP connected. In my previous DT on linux v4.14 I didn’t have it on DT and it worked fine.
How do I describe it here?
switch0port10: port@10 {
reg = <10>;
label = "dsa";
link = <&switch1port10>;
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
};//ports
};//switch0
switch1: switch@3 {
compatible = "marvell,mv88e6190";
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
dsa,member = <0 1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
label = "uid211-1B";
};
port@2 {
reg = <2>;
label = "uid212-2B-p9-1B";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@3 {
reg = <3>;
label = "uid213-3B-p9-2B";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@4 {
reg = <4>;
label = "uid214-4B-p9-3B";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@5 {
reg = <5>;
label = "uid215-5B";
};
port@6 {
reg = <6>;
label = "uid216-6B";
};
port@7 {
reg = <7>;
label = "uid217-7B";
};
port@8 {
reg = <8>;
label = "uid218-8B";
};
port@9 {
reg = <9>;
label = "uid219-9B-p9-0B";
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
switch1port10: port@10 {
reg = <10>;
label = "dsa";
link = <&switch0port10>;
phy-mode = "1000base-x";
fixed-link {
speed = <1000>;
full-duplex;
};
};
};//ports
};//switch1
};//gem0
&gem1 {
status = "okay";
phy-handle = <&dbg_phy>;
};
> This is a 6390X right? Why limit it to 1000base-X when it could be
> doing 10G?
Yes. In the 4.14 DT I've tried to put speed=2500 but it didn’t work.
Its crashes on linux startup. What should be fixed in my dts/dtsi?
Thank you
Michael Alayev
*********************************************************************************************** Please consider the environment before printing this email ! The information contained in this communication is proprietary to Israel Aerospace Industries Ltd. and/or third parties, may contain confidential or privileged information, and is intended only for the use of the intended addressee thereof. If you are not the intended addressee, please be aware that any use, disclosure, distribution and/or copying of this communication is strictly prohibited. If you receive this communication in error, please notify the sender immediately and delete it from your computer. Thank you. Visit us at: www.iai.co.il
Powered by blists - more mailing lists