What kernel versions fully support the i.MX6DL?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

What kernel versions fully support the i.MX6DL?

Jump to solution
4,690 Views
michaelworster
Contributor IV

My product uses the i.MX6DL. Originally we were using the 4.1.15 kernel (branch: imx_4.1.15_1.0.0_ga) housed here: linux-2.6-imx.git - Freescale i.MX Linux Tree 

We recently found a need to upgrade. It looks like a more up to date listing of supported kernels can be found here: linux-imx - i.MX Linux kernel 

Is this a correct assertion?

Assuming the is a list of supported kernels, On this page I was looking at the branch: git.kernel.org/linux-stable/linux-4.17.y (linux-imx - i.MX Linux kernel ). Our original 4.1.15 kernel had a lot of changes on the HDMI driver under <kernel_root>/drivers/video/fbdev/mxc, however I've noticed one of the major changes in this 4.17.19 kernel is this "mxc" subdirectory is missing. If this 4.17.19 kernel is valid, where did the fbdev/mxc work go?

Labels (4)
1 Solution
3,676 Views
michaelworster
Contributor IV

For posterity, the errors I encountered can be fixed by updating the defconfig accordingly:

//undefined reference to `psci_ops'

//solved by:
CONFIG_ARM_PSCI=y

//undefined reference to `imx_smp_wfe_optee'

//solved by:

CONFIG_TEE=y

CONFIG_OPTEE=y

View solution in original post

7 Replies
3,676 Views
joanxie
NXP TechSupport
NXP TechSupport

currently, the latest version for imix6dl is 4.14.78

SABRE|Automotive-Infotainment|i.MX6|NXP 

I checked the source code of 4.14.78, can find the mxc folder

3,676 Views
michaelworster
Contributor IV

Thank you for your input. Based on your notes I grabbed the latest content from branch: imx_4.14.78_1.0.0_ga

And added in my defconfig and attempted to build the kernel. At the end of the build process I'm seeing an error:

$ make O=OUTPUT zImage LOADADDR=0x10008000
...
  LD      vmlinux.o
  MODPOST vmlinux.o
arch/arm/mach-imx/cpuidle-imx6sl.o: In function `imx6sl_enter_wait':
cpuidle-imx6sl.c:(.text+0x128): undefined reference to `psci_ops'
arch/arm/mach-imx/cpuidle-imx6sx.o: In function `imx6_idle_finish':
cpuidle-imx6sx.c:(.text+0xe8): undefined reference to `psci_ops'
arch/arm/mach-imx/cpuidle-imx6ul.o: In function `imx6ul_idle_finish':
cpuidle-imx6ul.c:(.text+0x128): undefined reference to `psci_ops'
arch/arm/mach-imx/cpuidle-imx7d.o: In function `imx7d_enter_low_power_idle':
cpuidle-imx7d.c:(.text+0x37c): undefined reference to `psci_ops'
arch/arm/mach-imx/cpuidle-imx7d.o: In function `imx7d_idle_finish':
cpuidle-imx7d.c:(.text+0x3e4): undefined reference to `psci_ops'
arch/arm/mach-imx/cpuidle-imx7d.o:cpuidle-imx7d.c:(.init.text+0x1ac): more undefined references to `psci_ops' follow
arch/arm/mach-imx/busfreq_optee.o: In function `init_freq_optee':
busfreq_optee.c:(.text+0x51c): undefined reference to `imx_smp_wfe_optee'
busfreq_optee.c:(.text+0x520): undefined reference to `imx_smp_wfe_optee'
busfreq_optee.c:(.text+0x524): undefined reference to `imx_smp_wfe_optee_end'
/home/mike1worster/Development/kernel_upgrade/linux-imx-working-dir/Makefile:1020: recipe for target 'vmlinux' failed
make[1]: *** [vmlinux] Error 1
make[1]: Leaving directory '/home/mike1worster/Development/kernel_upgrade/linux-imx-working-dir/OUTPUT'
Makefile:146: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

I'm going to look into the error now and see if I can figure out what's wrong, but I thought I'd post in case this rang any bells. I'm guessing it's something in my 4.1.15 defconfig which isn't working when dropped into the 4.14.78 code base.

0 Kudos
3,677 Views
michaelworster
Contributor IV

For posterity, the errors I encountered can be fixed by updating the defconfig accordingly:

//undefined reference to `psci_ops'

//solved by:
CONFIG_ARM_PSCI=y

//undefined reference to `imx_smp_wfe_optee'

//solved by:

CONFIG_TEE=y

CONFIG_OPTEE=y

3,676 Views
michaelworster
Contributor IV

Seems like the imx_v6_v7_defconfig starts breaking with the change: 0a569abd8bed55d999ea301f1616d59eb63d7bcf

Commit - 0a569 info 

Most likely the changes in the

arch/arm/mach-imx/smp_wfe_imx6.S

file. I'll look into this tomorrow.

0 Kudos
3,676 Views
michaelworster
Contributor IV

Looks like the issue is that TEE and OPTEE are not enabled in the imx_v6_v7_defconfig (this is enabled in the imx_v7_defconfig)

Adding:

CONFIG_TEE=y

CONFIG_OPTEE=y

to the imx_v6_v7_defconfig allows the latest 4.14.78 code to build successfully.

Question to Joan Xia or someone at NXP. Is this a safe configuration for the i.MX6DL? From what I've found https://www.nxp.com/docs/en/fact-sheet/TRUSTEXECENVIRFS.PDF  it looks like this feature is "Supported on all i.MX6 and i.MX7 application processor families". So I assume the fact this wasn't enabled in the default imx_v6_v7_defconfig was just an oversight. Can someone confirm that?

0 Kudos
3,676 Views
joanxie
NXP TechSupport
NXP TechSupport

I suggest that you remove the 4.1.15 and build the 4.14.78 again, I built 4.14.78 on my board successfully, if you build the 4.14.78 on the orginal kernal 4.1.15, which would cause some errors

0 Kudos
3,676 Views
michaelworster
Contributor IV

I think you may have misunderstood. The code I'm building is pure 4.14.78 code downloaded from the imx_4.14.78_1.0.0_ga branch.

i.e.:

mike@bldmachine:~$ mkdir kernel_upgrade
mike@bldmachine:~$: cd !$
mike@bldmachine:~/kernel_upgrade$ git clone https://source.codeaurora.org/external/imx/linux-imx -b imx_4.14.78_1.0.0_ga‍‍‍ .

The only 4.1.15 remnant  was the defconfig which I used to build my specific content. I have removed this, cleaned the directory, done a fresh pull and attempted the build process again with a defconfig I found in the 4.14.78 code (imx_). These are the build steps following the above commands to get the code:

mike@bldmachine:~/kernel_upgrade$ mkdir OUTPUT
mike@bldmachine:~/kernel_upgrade$ make O=OUTPUT imx_v6_v7_defconfig
make[1]: Entering directory '/home/mike/kernel_upgrade/OUTPUT'
  HOSTCC  scripts/basic/fixdep
  GEN     ./Makefile
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
make[1]: Leaving directory '/home/mike/kernel_upgrade/OUTPUT'
mike@bldmachine:~/kernel_upgrade$ make O=OUTPUT zImage LOADADDR=0x10008000

With this sequence, I'm still seeing errors:

  MODPOST vmlinux.o
arch/arm/mach-imx/busfreq_optee.o: In function `init_freq_optee':
busfreq_optee.c:(.text+0x53c): undefined reference to `imx_smp_wfe_optee'
busfreq_optee.c:(.text+0x540): undefined reference to `imx_smp_wfe_optee'
busfreq_optee.c:(.text+0x544): undefined reference to `imx_smp_wfe_optee_end'
/home/mike/kernel_upgrade/Makefile:1020: recipe for target 'vmlinux' failed
make[1]: *** [vmlinux] Error 1
make[1]: Leaving directory '/home/mike/kernel_upgrade/OUTPUT'
Makefile:146: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

So it appears even the base content here isn't working with the current defconfig. Note the latest git commit ID on this line is:

commit 94da7bdc489ba686d868bcf80678a37cae22673e
Author: Peng Fan <peng.fan@nxp.com>
Date:   Thu Jan 3 18:50:30 2019 +0800

0 Kudos