UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor sergios_
Visitor
2,283 Views
Registered: ‎05-04-2017

Linux Kernel 4.9, emmc issue

Hello all.

 

We have some custom hardware based on Zynq devices. This hardware uses an eMMC as main storage (contains a Linux root file system). This has been working for a long time without problems using the Xilinx Linux kernel 4.0 (corresponding to xilinx-v2015.4 git tag). Now, we are trying to upgrade the kernel to version 4.9 (corresponding to xilinx-v2017.2 git tag) and although the system boot without problems, when we try to write multiple big files to the eMMC or unzip a big compressed file the access to disk failed and its needed to reboot all the system. This issue can be reproduced using a command like the one below for example:

 

watch -n 1 'dd if=/dev/zero of=/home/user/output bs=8k count=10k conv=fdatasync; rm -f /home/user/output'

 

This command gets blocked, and after that, commands like 'df', 'dmesg' or 'sync' don't produce any output. All the system gets unstable. Its necessary to power cycle the board and during the boot the next message is displayed:

 

mmc0: Card stuck in programming state! __mmc_switch
mmc0: error -110 whilst initialising MMC card

 

Please, note that the hardware has been working without problems with previous software version so this issue has to be related to the arasan sdhc driver in the Xilinx Linux kernel or to the devicetree. This is how the eMMC appears in the devicetree:

 

sdhci1: sdhci@e0101000 {
compatible = "arasan,sdhci-8.9a";
status = "okay";
clock-names = "clk_xin", "clk_ahb";
clocks = <&clkc 22>, <&clkc 33>;
interrupt-parent = <&intc>;
interrupts = <0 47 4>;
reg = <0xe0101000 0x1000>;
broken-adma2 = <0x1>;

u-boot,dm-pre-reloc;

xlnx,has-cd = <0x1>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x0>;
};

 

Anybody of you has had similar issues or can provide any suggestion?

 

Thanks in advance and best regards.

 

Sergio

0 Kudos
3 Replies
Visitor sergios_
Visitor
2,209 Views
Registered: ‎05-04-2017

Re: Linux Kernel 4.9, emmc issue

I have made some new tests and can reproduce the issue with a Petalinux 17.2 project. Below you can find the error I'm getting just before the system begin to fail.

 

mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x400e00

 

Any idea?

0 Kudos
Moderator
Moderator
2,206 Views
Registered: ‎10-06-2016

Re: Linux Kernel 4.9, emmc issue

Hi @sergios_

 

 

Taking a look to your dts node I'm not sure why has-cd property is set to one when you are using an emmc device which is always present. 

 

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/mmc/mmc.txt

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/mmc/arasan%2Csdhci.txt

 

I think that non-removable property would be more suitable for your use case. I don't think that is going to solve your issue but let see if you can see any difference.


Ibai
Don’t forget to reply, kudo, and accept as solution.
0 Kudos
Visitor yair
Visitor
314 Views
Registered: ‎06-03-2018

Re: Linux Kernel 4.9, emmc issue

Hi,

I'm facing the same issue, can you share how did you solved this ?

0 Kudos