Hi

The VPE support needed by the VMMC driver to realize FXS support for lantiq xrx200 devices is broken since 2017-02-01.

The following commit introduced *conflicting* SMP support for lantiq xrx200 devices and breaks FXS support:
https://github.com/lede-project/source/commit/71e86199ff192538ce9fde59e563e7f54ce9f99a

The VPE kernel configuration have been enabled by this commit since 2016-10-31:
https://github.com/lede-project/source/pull/440/commits/d44329650df7905f648942dec267936bf93ac076

*IMPORTANT*
To use VPE at least CONFIG_MIPS_MT_SMP needs to be disabled within xrx200/config-default and nosmp added to the kernel command line
Without nosmp within command line the full SMP part must be disabled

*WARNING*
If SMP and VPE are enabled together you will get strange kernel panics. Because both, SMP and VPE want to use the second CPU core. The first commit above that introduces SMP added nosmp to kernel command line. So no funny kernel panics appear. But the VMMC firmware could not be loaded.

So there a different options to recover FXS support:
1) remove SMP support for xrx200
2) Disables CONFIG_MIPS_MT_SMP within kernel default configuration that conflicts with the VPE kernel configuration options. I have added a patch as attachment but not tested it without nosmp option and don't know what happens on a device that uses no VPE/VMMC/FXS. But it recovers FXS support successfully.
3) Write a new patch

The CONFIG_MIPS_MT_SMP option enables many ifdef's within the kernel code. It cannot be disabled at runtime, yet.

1) So one possibility is to disable CONFIG_MIPS_MT_SMP when the vmmc driver package is selected. But this conflicts with Default Target approach which builds images for all xrx200 based devices. 2) Create a menu entry within menuconfig to enable SMP support which disables VPE support then. But every image that wants to use SMP needs to be self builded. 2) Provide images with and without SMP support for each device that uses VPE (one kernel with enabed SMP and one with enabled VPE) 3) Replace all ifdef's with if's that will recognized at run time to archive a generic kernel

What do you think about it?
How to solve this issue?

Thanks.
Best regards

Stefan

diff --git a/target/linux/lantiq/xrx200/config-default b/target/linux/lantiq/xrx200/config-default
index c307dc8029..5dca18acae 100644
--- a/target/linux/lantiq/xrx200/config-default
+++ b/target/linux/lantiq/xrx200/config-default
@@ -22,7 +22,7 @@ CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_MIPS_MT=y
 # CONFIG_MIPS_MT_FPAFF is not set
-CONFIG_MIPS_MT_SMP=y
+# CONFIG_MIPS_MT_SMP is not set
 CONFIG_MIPS_PERF_SHARED_TC_COUNTERS=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_ECC=y
_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to