Bug 1080449

Summary: HiKey 960 fails to find rootfs on SD card - Hi6421 PMU missing
Product: [openSUSE] openSUSE Tumbleweed Reporter: Andreas Färber <afaerber>
Component: KernelAssignee: Andreas Färber <afaerber>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P4 - Low CC: agraf, bamvor.zhangjian, mbrugger, yousaf.kaukab
Version: Current   
Target Milestone: ---   
Hardware: aarch64   
OS: openSUSE Factory   
URL: https://bugs.96boards.org/show_bug.cgi?id=703
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Andreas Färber 2018-02-11 01:24:08 UTC
Using kernel-default 4.14.15 (or 4.15.1 from Kernel:HEAD) the HiKey 960 boots into our initrd but fails to find the rootfs on SD card.

Adding dw_mmc-k3 module to the dracut initrd does not help.

Possible cause: Hi6421 v530 PMU drivers are missing.
Comment 1 Andreas Färber 2018-02-11 01:35:18 UTC
Kconfig patch queued for master branch.
Comment 2 Andreas Färber 2018-02-11 14:21:37 UTC
Enabling Hi6421 drivers and adding them to the initrd along with dw_mmc-k3, k3dma and reset-hi3660 gets it to boot into the rootfs.

add_drivers+=" hi6421-pmic-core hi6421v530-regulator reset-hi3660 k3dma dw_mmc-k3 "

It now hangs during udev:

         Starting udev Coldplug all Devices...
[  OK  ] Started udev Coldplug all Devices.
[   11.825125] cpu cpu0: failed to get clock: -2
[   11.829524] cpufreq-dt: probe of cpufreq-dt failed with error -2
[   11.838453] dwmmc_k3 ff3ff000.dwmmc2: 'num-slots' was deprecated.
[   11.844565] dwmmc_k3 ff3ff000.dwmmc2: fifo-depth property not found, using value of FIFOTH register as default
[   11.856736] dwmmc_k3 ff3ff000.dwmmc2: IDMAC supports 64-bit address mode.
[   11.863644] dwmmc_k3 ff3ff000.dwmmc2: Using internal DMA controller.
[   11.870015] dwmmc_k3 ff3ff000.dwmmc2: Version ID is 270a
[   11.875391] dwmmc_k3 ff3ff000.dwmmc2: DW MMC controller at irq 57,32 bit host data width,64 deep fifo
[   11.884784] mmc_host mmc1: card is non-removable.

This eventually showed up once:

[   72.886593] INFO: rcu_sched detected stalls on CPUs/tasks:
[   72.892101]  0-...0: (1 GPs behind) idle=fc2/140000000000000/0 softirq=1219/1222 fqs=3000 
[   72.900362]  (detected by 7, t=6002 jiffies, g=79, c=78, q=2984)
[   72.906368] Task dump for CPU 0:
[   72.909590] systemd-udevd   R  running task        0   427    407 0x00000822
[   72.916639] Call trace:
[   72.919091]  __switch_to+0x94/0xd8
[   72.922489]  0xffff8000bb458568

That appears to match https://bugs.96boards.org/show_bug.cgi?id=703 behavior.

If I override the DT with dtb-hisilicon 4.15.1 hi3660-hikey960.dtb then the CPU and MMC messages don't appear, but it still hangs during udev.
Comment 3 Andreas Färber 2019-05-13 10:34:55 UTC
With upstream .dtb at latest 4.20 has been booting.