Exynos Mainline Kernel TODO

From Tizen Wiki
Jump to: navigation, search

Various improvement ideas, bug fixes and other todo items for Samsung's Exynos-based boards in mainline Linux kernel

TODO Item status reported by person

The dependencies for plat-samsung/SAMSUNG_PM_* symbols are little bit mixed up: 1. pm-common.o depends on PM_SLEEP, 2. pm.o and pm-debug.o depend on PM and sometimes they use stuff from pm-common.

It is possible to create a config with PM_SLEEP=n and PM=y so this is confusing (pm-common won't be linked).

I think this still compiles fine because of various #ifdefs but it would be nice to clean it up.

b.zolnierkie: PM_SAMSUNG_PM depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX) while pm-common can be also used on Exynos. Two observations here: 1. There is so little code left in pm-common that it probably doesn't make much sense to share it any longer. 2. PM_SAMSUNG_PM should most likely depend on PM_SLEEP not PM

C
[    2.619252] max77693-led max77693-led: No DT child node found for connected LED(s).
[    2.626432] max77693-led: probe of max77693-led failed with error -22

krzk: needs a DT node, tried a little bit... cannot make LED working b.zolnierkie: which board is this issue present on? krzk: Trats2

C
Rinato/Monk: dts: Remove wakeup-source fom max77836 and s2mps14 because it is not parsed? Actually recently the wakeup-source generic OF property was added so maybe add proper support for it in the drivers (sec, max77686, max77836 etc)? C
Remove old mach- plat- boards/files which are not compiling b.zolnierkie: are there any still left? needs someone to build for PLAT_S3C24XX, ARCH_S3C64XX, ARCH_EXYNOS & ARCH_S5PV210 and check for not compiled .c files C
Enable IOMMU for SSS -> no benefits with current kernel api, only performance degradation C
Compare SSS-AES with generic and NEON-accelerated implementations b.zolnierkie: needs to be redone for ARM64 SoCs

krzk: done some time, results stored in SRPOLs knowledge base

C
crypto/sss-s5p: Add support for PKA acceleration C

Measure kernels performance on XU3

  1. Hardkernel's 3.10
  2. Tizen 4.0
  3. Mainline
  4. Next

Add this measurement to boot/testing process on krzk.eu and store the data to find performance regressions. b.zolnierkie: OK as long-term goal, first we need to fix max CPU frequencies support for Exynos5422/5800 (needs regulator, ASV & cpufreq changes)

C
Exynos defconfig - SCHED_MC and some other, compare to multi_v7 b.zolnierkie: multi_v7 doesn't use it but arm64/defconfig does in progress krzk C
After merging SROMC and PMU drivers - add compile test b.zolnierkie: already done for PMU but SROMc driver is not merged yet (2017-01-25) sent krzk C
multi_v7 and exynos - is HDMI effectively enabled? Enable also DECON and others b.zolnierkie: Should be checked with Andrzej Hajda C
regulator: s2mps11, 13 and 14: fix number of selectors. Fix minimal selector and/or selector mask (can lead to the same bug as on Odroid XU3/XU4) C
max17042 fg u16/u32 mixup reported by Dan Carpenter b.zolnierkie: need some more info (gmane is gone) C
Exynos5420 and 5422 - lower freq up to 200 MHz, raise up to 1400 for KFC and 1900 Eagle for 5420 (look at vendor code: Arndale Octa, Samsung, Hardkernel) C
smsc911x driver is requesting regulators but they are not documented in bindings (instead in gpmc-eth) b.zolnierkie: Still not fixed (2017-01-25) C
Enable UHS mode for SD storage on Odroid XU3. See also Anand Moon's work b.zolnierkie: should be fixed by https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi?id=399fc1847c62b4a4b8f6bc446f1bd352234c64a1 needs someone to verify C
Extend exynos thermal driver to work with more trip points. The TMU supports 4 temperature thresholds out of each 3 are used for fan and 1 for critical trip point. Passive CPU cooling requires adding trip points in a polling mode.

Suggested by Marek Szyprowski: Instead of polling the driver should simply use some dynamic window for the nearest temperature ranges and reconfigure it when interrupt of occurs.

C
Cleanup the MMC DT nodes/propertiesfrom Exynos3250 Rinato and Monk boards (and maybe other?). They use broken-cd and non-removable. Add vqmmc (LDO12)? C?
leds: max8997: Fix sleeping in a non-sleeping set_brightness callback (Reported by Jacek Anaszewski) C
GScaler (via internal path) integration to Exynos DRM / FIMD / DECON as video plane (Exynos 542x/5433) todo Marek Szyprowski Andrzej Hajda
ARM and ARM64 dma-mapping unification initial patches sent long time ago , needs update and rebase Marek Szyprowski C
ARM/ARM64 dma-mapping with IOMMU: support for initial mapping for framebuffer-like devices and finally enable IOMMU support in exynos_defconfig. Make sense to depend this on "ARM and ARM64 dma-mapping unification" initial patches sent long time ago, needs rebase, discussion and update Marek Szyprowski C
clock core: solve prepare_mutex related deadlock initial patches sent some time ago by krzk, needs rebase, discussion and update Marek Szyprowski Marek Szyprowski, Sylwester
ARTIK 10 support (hw very similar to Odroid XU3/XU4), should be relatively easy to get it supported C
Odroid U3+ (Exynos4412 DWC2) proper USB OTG support. Partially implemented in v3.10 Tizen kernel for Odroid X2/U3: https://git.tizen.org/cgit/platform/kernel/linux-3.10/ - needs take over, rebase and continuation. C
Odroid XU3/XU3-lite (Exynos5422 DWC3) proper USB OTG support. Old patches prepared by Robert Bałdyga long time ago:

https://lkml.org/lkml/2015/3/18/389 - needs take over, rebase and continuation.

C
Trats2 suspend/resume failure - needs investigation and bisecting. C
Odroid XU1 (Exynos5410): add support for HDMI/Exynos DRM, MFC, GScaller, SYSMMU. In theory only clock definitions are missing to get it working (same HW as in Exynos542x SoCs). C
Odroid XU3 (exynos5422) Display Port support. Needs a hardware fix (like DP->HDMI converter with external power supply provided from USB port) and some research. C
Low power modes support (LPA, AFTR, W-AFTR) for Exynos 4210, 3250, 4412, 5422

Shuah: What's the status of this - on Tizen? mszyprow: not implemented, need to be extracted and ported from various vendor kernels

Shuah C
Add support for Wacom w9012 pen touchscreen device, if unable to get the datasheets, the driver is available on opensource.samsung.com Andi
Enable proximity functionality in the stmfts driver Andi
Add support for the sensorhub, code available from linux-exynos in the tizen repositories Andi
s5p-mfc driver probably can be converted to use v4l2-m2m helpers like it has been proposed in this patchset for Quallcom codec: http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1327753.html research needed Marek Szyprowski
Develop the setting of dram timing value when exynos-bus.c driver change the clocks in the MIF block for the Exynos5422(XU3)/Exynos5333 MIF(TM2). If exynos-bus.c changes the clocks of AMBA bus in MIF block without dram timing value, kernel panic occur. Chanwoo Choi
Develop virtual otg block for exynos dwc3 with extcon subsystem. Exynos SoC don't have the physical otg block to detect the connector type for both USB and USB-HOST. by Roger Quadros (https://lkml.org/lkml/2017/4/3/309) Done Dongwoo Lee, Chanwoo Choi
Develop Exynos ASV (Adaptive Supply Voltage) driver. To optimize the performance, Exynos SoC have to use the proper voltage according to the SoC revision. in progress Chanwoo Choi
Fix the Exynos5433 hotplug issue with PSCI.
DWC2 (with Ethernet gadget) - issue with DMA API debug enabled:
[    1.506571] ------------[ cut here ]------------
[    1.511102] WARNING: CPU: 0 PID: 1 at lib/dma-debug.c:1157 check_unmap+0x1d0/0x8b8
[    1.518644] dwc2 12480000.hsotg: DMA-API: device driver frees DMA memory with different direction
 [device address=0x000000006dc27800] [size=18 bytes] [mapped with DMA_TO_DEVICE] [unmapped with DMA_FROM_DEVICE]
[    1.537215] Modules linked in:
[    1.540258] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.11.0-rc3-00076-ga0f99fe74c0b #2289
[    1.548500] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[    1.554597] [<c010d8f0>] (unwind_backtrace) from [<c010a55c>] (show_stack+0x10/0x14)
[    1.562310] [<c010a55c>] (show_stack) from [<c0333dcc>] (dump_stack+0x74/0x94)
[    1.569514] [<c0333dcc>] (dump_stack) from [<c011ceec>] (__warn+0xd4/0x100)
[    1.576455] [<c011ceec>] (__warn) from [<c011cfb8>] (warn_slowpath_fmt+0x38/0x48)
[    1.583921] [<c011cfb8>] (warn_slowpath_fmt) from [<c035df40>] (check_unmap+0x1d0/0x8b8)
[    1.591994] [<c035df40>] (check_unmap) from [<c035e7b8>] (debug_dma_unmap_page+0x80/0x88)
[    1.600155] [<c035e7b8>] (debug_dma_unmap_page) from [<c04e4930>] (usb_gadget_unmap_request_by_dev+0x10c/0x124)
[    1.610225] [<c04e4930>] (usb_gadget_unmap_request_by_dev) from [<c04b66d4>] (dwc2_hsotg_complete_request+0xcc/0x128)
[    1.620812] [<c04b66d4>] (dwc2_hsotg_complete_request) from [<c04b7e30>] (dwc2_hsotg_handle_outdone+0x120/0x1b0)
[    1.630966] [<c04b7e30>] (dwc2_hsotg_handle_outdone) from [<c04b86bc>] (dwc2_hsotg_epint+0x524/0x81c)
[    1.640166] [<c04b86bc>] (dwc2_hsotg_epint) from [<c04b91d4>] (dwc2_hsotg_irq+0xfc/0x748)
[    1.648328] [<c04b91d4>] (dwc2_hsotg_irq) from [<c0164890>] (__handle_irq_event_percpu+0x58/0x140)
[    1.657266] [<c0164890>] (__handle_irq_event_percpu) from [<c0164994>] (handle_irq_event_percpu+0x1c/0x58)
[    1.666899] [<c0164994>] (handle_irq_event_percpu) from [<c0164a08>] (handle_irq_event+0x38/0x5c)
[    1.675755] [<c0164a08>] (handle_irq_event) from [<c0167c8c>] (handle_fasteoi_irq+0xc4/0x19c)
[    1.684261] [<c0167c8c>] (handle_fasteoi_irq) from [<c0164058>] (generic_handle_irq+0x18/0x28)
[    1.692853] [<c0164058>] (generic_handle_irq) from [<c016416c>] (__handle_domain_irq+0x6c/0xe4)
[    1.701533] [<c016416c>] (__handle_domain_irq) from [<c0101470>] (gic_handle_irq+0x50/0x9c)
[    1.709865] [<c0101470>] (gic_handle_irq) from [<c010b04c>] (__irq_svc+0x6c/0xa8)
Marek Szyprowski
"coupled" regulators support for Chromebook & Odroid-XU3/4, https://lkml.org/lkml/2014/4/29/28 https://lkml.org/lkml/2017/10/18/390 https://lkml.org/lkml/2017/9/18/124 patch sent Bartlomiej Zolnierkiewicz Maciej Purski
Artik5: add support for AX88796C SPI Ethernet driver (kernel driver is there, but lacks DT support) to do Marek Szyprowski
Lack of REGULATOR_ARIZONA_LDO1 in .config on TM2 causes endless loop:
[   23.819995] arizona spi1.0: Mixer dropped sample
[   23.937026] arizona spi1.0: Spurious HPDET IRQ
[   23.937353] arizona spi1.0: Mixer dropped sample
[   24.052646] arizona spi1.0: Spurious HPDET IRQ
to do Marek Szyprowski
Trats2: port sound drivers from v3.10 Tizen kernel to mainline:
https://git.tizen.org/cgit/platform/kernel/linux-3.10/tree/arch/arm/boot/dts/exynos4412-trats2.dts?h=tizen#n553
https://git.tizen.org/cgit/platform/kernel/linux-3.10/tree/sound/soc/samsung/trats2_wm1811.c?h=tizen
in-progress Marek Szyprowski forkbomb
Mark all Exynos drivers with .suppress_bind_attrs = true; to do Bartlomiej Zolnierkiewicz
Add Exynos5250 variant to s5p-jpeg driver (very similar to Exynos4210/4412) to do Marek Szyprowski
runtime pm core: fix race in turning generic power domains off (turning off many devices at once typically leaved power domain turned on) to do Marek Szyprowski
FIMD: trashed display (or even DMA freeze) on too narrow planes (i.e. cursor on right screen border), workaround in Chromebook kernel: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-3.8/drivers/gpu/drm/exynos/exynos_drm_cursor.c#31 to do Marek Szyprowski
All non-timer IRQs are always triggered on CPU0, not distributed over all active CPUs. This hurts performance especially on systems, where CPU0 is a LITTLE core. to do Marek Szyprowski
CPU0 hotplug is broken, to check: https://git.linaro.org/people/vireshk/backup/linux.git/commit/?h=bkp/exynos/hotplug&id=aab8a906a70b8f1fb15a4b7bd2ee27e6dcabf79d to do Marek Szyprowski
Support suspend-to-ram for Exynos SoC on both aarch32 and aarch64 (https://lkml.org/lkml/2018/1/9/58) to do Chanwoo Choi
Change the binding method of between devfreq and devfreq-event instance on devicetree for exynos-bus.c (legacy 'devfreq' property -> OF graph) to do Chanwoo Choi