Include Linux Kernel patch to make ASMedia Chips work again


Rötti
 Share

2 2

Recommended Posts

Hello,

 

there has been a linux kernel issue in the pci part. The symptoms are Armbian kernel panics. This has already been discussed in the armbian forum:

 

A patch has been supplied by @Pali and Marek Behún in the drivers/pci/quirks.c file. Thank you guys very much for that!

 

Bug report can be found here:https://bugzilla.kernel.org/show_bug.cgi?id=212695

And patch can be found here: https://lore.kernel.org/linux-pci/20210317115924.31885-1-kabel@kernel.org/

 

This is the actual patch content:

---
 drivers/pci/quirks.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 653660e3ba9e..a561136efb08 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3251,6 +3251,11 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE,
 			 PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1, fixup_mpss_256);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SOLARFLARE,
 			 PCI_DEVICE_ID_SOLARFLARE_SFC4000B, fixup_mpss_256);
+/*
+ * For some reason DECLARE_PCI_FIXUP_HEADER does not work with pci-aardvark
+ * controller. We have to use DECLARE_PCI_FIXUP_EARLY.
+ */
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ASMEDIA, 0x0612, fixup_mpss_256);
 
 /*
  * Intel 5000 and 5100 Memory controllers have an erratum with read completion
-- 

 

As proposed by @Pali, I'd like to kindly ask that this patch gets included into Armbian as this affects several boards using ASMedia chip ASM1062 on ARM.

 

If this report lacks any information I'd be happy to supply them.

 

Thank you very much in advance.

Rötti

 

Link to post
Share on other sites

Donate and support the project!

Posted (edited)

Currently trying to build Armbian for the first time.

But I'm stuck on how to build it for Espressobin. It was supported a half a year ago afaik.

I can't find the board to choose in the configuration screen of compile.

 

Where can I download board specific stuff to get it as a choice in the compile screen?

Thanks in advance.

 

----

Update:

Never mind found the button to build CBC.

Edited by Rötti
Found out how to build
Link to post
Share on other sites

Hello @Werner,

over the week end I've got some spare time and compiled armbian and did some testing. First of all, thank you for this easy to use process, it worked like a charm.

 

Here comes the bad news. The patch seems not to have fixed the AS-Media Sata problem.

Maybe the wrong is on my side. I compiled Armbian with the following

sudo ./compile.sh BOARD=espressobin BRANCH=edge RELEASE=focal BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no COMPRESS_OUTPUTIMAGE=sha,gpg,img

 

Since I used the edge branch and I found the patch commited by you in the master branch, that should work, right?

 

Here is the output when I start up the board.

TIM-1.0
WTMI-devel-18.12.0-a0a1cb8
WTMI: system early-init
SVC REV: 3, CPU VDD voltage: 1.155V
NOTICE:  Booting Trusted Firmware
NOTICE:  BL1: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE:  BL1: Built : 09:48:09, Feb 20 2019
NOTICE:  BL1: Booting BL2
NOTICE:  BL2: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE:  BL2: Built : 09:48:10, Feb 20 2019
NOTICE:  BL1: Booting BL31
NOTICE:  BL31: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE:  BL31: Built : 09:4

U-Boot 2018.03-devel-18.12.3-gc9aa92c-armbian (Feb 20 2019 - 09:45:04 +0100)

Model: Marvell Armada 3720 Community Board ESPRESSOBin
       CPU     1000 [MHz]
       L2      800 [MHz]
       TClock  200 [MHz]
       DDR     800 [MHz]
DRAM:  2 GiB
Comphy chip #0:
Comphy-0: USB3          5 Gbps
Comphy-1: PEX0          2.5 Gbps
Comphy-2: SATA0         6 Gbps
Target spinup took 0 ms.
AHCI 0001.0300 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: ncq led only pmp fbss pio slum part sxs
PCIE-0: Link up
MMC:   sdhci@d0000: 0, sdhci@d8000: 1
Loading Environment from SPI Flash... SF: Detected w25q32dw with page size 256 Bytes, erase size 4 KiB, total 4 MiB
OK
Model: Marvell Armada 3720 Community Board ESPRESSOBin
Net:   eth0: neta@30000 [PRIME]
Hit any key to stop autoboot:  0


starting USB...
USB0:   Register 2000104 NbrPorts 2
Starting the controller
USB XHCI 1.00
USB1:   USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
       
## Loading init Ramdisk from Legacy Image at 01100000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
   Data Size:    10352285 Bytes = 9.9 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 06000000
   Booting using the fdt blob at 0x6000000
   Loading Ramdisk to 7ec4b000, end 7f62a69d ... OK
   Using Device Tree in place at 0000000006000000, end 0000000006005d61

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.13.7-mvebu64 (root@mint-pc) (aarch64-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0, GNU ld (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 2.32.0.20190321) #trunk SMP PREEMPT Sun Aug 1 11:54:45 CEST 2021
[    0.000000] Machine model: Globalscale Marvell ESPRESSOBin Board
[    0.000000] earlycon: ar3700_uart0 at MMIO 0x00000000d0012000 (options '')
[    0.000000] printk: bootconsole [ar3700_uart0] enabled
Loading, please wait...
Starting version 245.4-4ubuntu3.11
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.34
[/usr/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1: recovering journal
/dev/mmcblk0p1: clean, 43141/1846656 files, 444693/7498752 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
[    3.286103] Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP
[    3.293847] Modules linked in: mv88e6xxx dsa_core hsr bridge stp llc phy_mvebu_a3700_comphy
[    3.302493] CPU: 0 PID: 323 Comm: run-init Not tainted 5.13.7-mvebu64 #trunk
[    3.309767] Hardware name: Globalscale Marvell ESPRESSOBin Board (DT)
[    3.316409] pstate: 000000c5 (nzcv daIF -PAN -UAO -TCO BTYPE=--)
[    3.322606] pc : ahci_single_level_irq_intr+0x1c/0x90
[    3.327827] lr : __handle_irq_event_percpu+0x54/0x170
[    3.333041] sp : ffffffc010003d30
[    3.336455] x29: ffffffc010003d30 x28: ffffff8000290000 x27: 2f2f2f2f2f2f2f2f
[    3.343825] x26: ffffffc010fc5368 x25: ffffffc0114a9edc x24: ffffff8002bd6200
[    3.351194] x23: 0000000000000035 x22: ffffffc010003de4 x21: 0000000000000000
[    3.358562] x20: ffffffc011655008 x19: ffffff8002bbc300 x18: ffffff807f24b300
[    3.365931] x17: 0000000000000000 x16: 0000000000000000 x15: 0000b55c59f9ec62
[    3.373300] x14: 0000000000000092 x13: 0000000000000040 x12: 0000000000000000
[    3.380668] x11: 0000000000000040 x10: ffffffc011423648 x9 : ffffffc011423640
[    3.388036] x8 : ffffff8000400270 x7 : 0000000000000000 x6 : 0000000000000000
[    3.395405] x5 : ffffffc06e9dd000 x4 : ffffffc010003e20 x3 : ffffffc06e9dd000
[    3.402773] x2 : ffffff8002bd6080 x1 : ffffff8002b5ff00 x0 : 0000000000000035
[    3.410142] Call trace:
[    3.412662]  ahci_single_level_irq_intr+0x1c/0x90
[    3.417516]  __handle_irq_event_percpu+0x54/0x170
[    3.422369]  handle_irq_event_percpu+0x38/0x90
[    3.426953]  handle_irq_event+0x48/0xe0
[    3.430910]  handle_simple_irq+0x94/0xd0
[    3.434959]  generic_handle_irq+0x30/0x48
[    3.439095]  advk_pcie_irq_handler+0x214/0x240
[    3.443681]  __handle_irq_event_percpu+0x54/0x170
[    3.448534]  handle_irq_event_percpu+0x38/0x90
[    3.453117]  handle_irq_event+0x48/0xe0
[    3.457074]  handle_fasteoi_irq+0xb8/0x170
[    3.461300]  generic_handle_irq+0x30/0x48
[    3.465436]  __handle_domain_irq+0x64/0xc0
[    3.469661]  gic_handle_irq+0xbc/0x138
[    3.473533]  el1_irq+0xb8/0x150
[    3.476773]  dput+0x0/0x20
[    3.479565]  walk_component+0x70/0x1d8
[    3.483433]  link_path_walk.part.54+0x254/0x388
[    3.488106]  path_lookupat.isra.56+0x3c/0x158
[    3.492601]  filename_lookup.part.73+0x88/0x148
[    3.497275]  user_path_at_empty+0x50/0x68
[    3.501411]  do_faccessat+0x90/0x2b0
[    3.505103]  __arm64_sys_faccessat+0x24/0x30
[    3.509510]  invoke_syscall+0x44/0x108
[    3.513379]  el0_svc_common.constprop.2+0x84/0xd8
[    3.518234]  do_el0_svc+0x24/0x88
[    3.521654]  el0_svc+0x24/0x38
[    3.524808]  el0_sync_handler+0x90/0xb8
[    3.528766]  el0_sync+0x178/0x180
[    3.532190] Code: a90153f3 f9401022 f9400854 91002294 (b9400293)
[    3.538482] ---[ end trace 6173084cd6700768 ]---
[    3.543245] Kernel panic - not syncing: synchronous external abort: Fatal exception in interrupt
[    3.552306] SMP: stopping secondary CPUs
[    3.556353] Kernel Offset: disabled
[    3.559947] CPU features: 0x00001001,20000846
[    3.564440] Memory Limit: none
[    3.567589] ---[ end Kernel panic - not syncing: synchronous external abort: Fatal exception in interrupt ]---

 

Any help or hint would be appreciated. Otherwise I have to get back to the Linux ger mailing list of pci and inform them.

 

Thank you very much in advance!

 

Best regards,

Rötti

 

Link to post
Share on other sites

On 8/2/2021 at 4:19 PM, Werner said:

Retry with current which should be 5.10

Hello @Werner

 

unfortunately this did not work either. Tried with two boards, two separate SD-Cards and the following images:

- Armbian_21.08.0-trunk_Espressobin_focal_current_5.10.53.img

Build with:

sudo ./compile.sh BOARD=espressobin BRANCH=current RELEASE=focal BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no COMPRESS_OUTPUTIMAGE=sha,gpg,img

resulting in the same error as already mentioned.

 

- Armbian_21.08.0-trunk_Espressobin_focal_current_5.10.55_minimal.img

Build with:

sudo ./compile.sh BOARD=espressobin BRANCH=current RELEASE=focal BUILD_MINIMAL=yes BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no COMPRESS_OUTPUTIMAGE=sha,gpg,img

 

resulting in:

TIM-1.0
WTMI-devel-18.12.0-a0a1cb8
WTMI: system early-init
SVC REV: 3, CPU VDD voltage: 1.155V
NOTICE:  Booting Trusted Firmware
NOTICE:  BL1: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE:  BL1: Built : 09:48:09, Feb 20 2019
NOTICE:  BL1: Booting BL2
NOTICE:  BL2: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE:  BL2: Built : 09:48:10, Feb 20 2019
NOTICE:  BL1: Booting BL31
NOTICE:  BL31: v1.5(release):1f8ca7e (Marvell-devel-18.12.2)
NOTICE:  BL31: Built : 09:4

U-Boot 2018.03-devel-18.12.3-gc9aa92c-armbian (Feb 20 2019 - 09:45:04 +0100)

Model: Marvell Armada 3720 Community Board ESPRESSOBin
       CPU     1000 [MHz]
       L2      800 [MHz]
       TClock  200 [MHz]
       DDR     800 [MHz]
DRAM:  2 GiB
Comphy chip #0:
Comphy-0: USB3          5 Gbps
Comphy-1: PEX0          2.5 Gbps
Comphy-2: SATA0         6 Gbps
Target spinup took 0 ms.
AHCI 0001.0300 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: ncq led only pmp fbss pio slum part sxs
PCIE-0: Link up
MMC:   sdhci@d0000: 0, sdhci@d8000: 1
Loading Environment from SPI Flash... SF: Detected w25q32dw with page size 256 Bytes, erase size 4 KiB, total 4 MiB
OK
Model: Marvell Armada 3720 Community Board ESPRESSOBin
Net:   eth0: neta@30000 [PRIME]
Hit any key to stop autoboot:  0


starting USB...
USB0:   Register 2000104 NbrPorts 2
Starting the controller
USB XHCI 1.00
USB1:   USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
	   
## Loading init Ramdisk from Legacy Image at 01100000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
   Data Size:    9551184 Bytes = 9.1 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 06000000
   Booting using the fdt blob at 0x6000000
   Loading Ramdisk to 7ed0f000, end 7f62ad50 ... OK
   Using Device Tree in place at 0000000006000000, end 0000000006005b76

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.55-mvebu64 (root@mint-pc) (aarch64-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0, GNU ld (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 2.32.0.20190321) #trunk SMP PREEMPT Sat Jul 31 23:22:09 CEST 2021
[    0.000000] Machine model: Globalscale Marvell ESPRESSOBin Board
[    0.000000] earlycon: ar3700_uart0 at MMIO 0x00000000d0012000 (options '')
[    0.000000] printk: bootconsole [ar3700_uart0] enabled
Loading, please wait...
Starting version 245.4-4ubuntu3.11
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Will now check root file system ... fsck from util-linux 2.34
[/usr/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1
/dev/mmcblk0p1: clean, 23897/61184 files, 210185/244736 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
/sbin/init: error while loading s[    2.982575] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[    2.993359] CPU: 0 PID: 1 Comm: init Not tainted 5.10.55-mvebu64 #trunk
[    3.000187] Hardware name: Globalscale Marvell ESPRESSOBin Board (DT)
[    3.006837] Call trace:
[    3.009380]  dump_backtrace+0x0/0x1b0
[    3.013168]  show_stack+0x18/0x68
[    3.016600]  dump_stack+0xd8/0x134
[    3.020116]  panic+0x174/0x33c
[    3.023275]  do_exit+0x9fc/0xa30
[    3.026612]  do_group_exit+0x44/0xa0
[    3.030309]  __wake_up_parent+0x0/0x30
[    3.034188]  el0_svc_common.constprop.3+0x8c/0x170
[    3.039139]  do_el0_svc+0x24/0x90
[    3.042568]  el0_svc+0x14/0x20
[    3.045727]  el0_sync_handler+0x90/0xb8
[    3.049690]  el0_sync+0x160/0x180
[    3.053119] SMP: stopping secondary CPUs
[    3.057177] Kernel Offset: disabled
[    3.060781] CPU features: 0x0240002,2000200c
[    3.065187] Memory Limit: none
[    3.068352] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---
hared libraries: /lib/aarch64-linux-gnu/libmount.so.1: invalid ELF header

Which seems to be some kind of other error.

 

If you could tell me if I did wrong, I'd be happy to create a new image.

 

Thanks in advance.

 

Link to post
Share on other sites

Extract the source code from the generated source code package and double-check if the files are properly patched. If so the patch might not work.

 

minimal has no influence in kernel packaging. However there may be too many userspace components stripped so it does not work anymore. However Armbian will not invest time to fix since the board is CSC. You or anyone else from the community are free to dig into and provide PR to fix.

Link to post
Share on other sites

Hello @Werner,

you have been right. The patch was not included even if I updated the repo which was strange. So started over, deleted everything, cloned it and compiled it with with:

sudo ./compile.sh BOARD=espressobin BRANCH=current RELEASE=focal BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no COMPRESS_OUTPUTIMAGE=sha,gpg,img

 

This time I could find the patch in "cache/sources/linux-mainline/linux-5.10.y/drivers/pci/quirks.c" and guess what. I could use the SATA-Controller card with all HDDs connected and no kernel panic appeared!

So everything is working. Thank you a lot!

 

But I guess this bug is now only patched for espressobin, right? Basically it's a kernel bug which affects nearly all SBCs offering mPCI-E slots, when using SATA-Controller cards. Since AS-Media is the only vendor I could find offering such chips it might be good to have this patch in all board patch-sets until the latest linux kernel where the bug has been fixed lands in Armbian base.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

2 2