For reference, the build was done with this config: https://github.com/tobiasjakobi/odroid-environment/blob/master/sourcecode/system/vanilla-4.8.conf - Tobias Tobias Jakobi wrote: > Hello Marek, > > I'm using the patches from the v4.8-clocks-pm-v2 branch plus the ones > from the v4.8-clocks-pm-v2 branch on top of 4.8.0. > > I see some warnings on boot coming from driver core. It appears that the > warnings are actually meaningful, since IOMMUs stop working completly. > E.g. if I modprobe s5p-mfc later, firmware loading fails because > apparantly the IOMMU domain isn't online. > >> WARNING: CPU: 0 PID: 1 at drivers/base/core.c:356 device_links_driver_bound+0x124/0x12c > > I added some debug printk() to device_links_driver_bound(), to show the > link status. Apparantly it is always DEVICE_LINK_AVAILABLE. > > Here's the (semi) full log: >> [ 0.000000] Booting Linux on physical CPU 0xa00 >> [ 0.000000] Linux version 4.8.0-vanilla+ (liquid@chidori) (gcc version 4.9.3 (Gentoo 4.9.3 p1.5, pie-0.6.4) ) #3 SMP PREEMPT Thu Oct 6 19:14:15 CEST 2016 >> [ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d >> [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache >> [ 0.000000] OF: fdt:Machine model: Hardkernel ODROID-X2 board based on Exynos4412 >> [ 0.000000] Reserved memory: created DMA memory pool at 0xbf700000, size 8 MiB >> [ 0.000000] OF: reserved mem: initialized node region_mfc_right, compatible id shared-dma-pool >> [ 0.000000] Reserved memory: created DMA memory pool at 0xbe700000, size 16 MiB >> [ 0.000000] OF: reserved mem: initialized node region_mfc_left, compatible id shared-dma-pool >> [ 0.000000] cma: Reserved 128 MiB at 0xb6400000 >> [ 0.000000] Memory policy: Data cache writealloc >> [ 0.000000] Samsung CPU ID: 0xe4412220 >> [ 0.000000] Running under secure firmware. >> [ 0.000000] percpu: Embedded 14 pages/cpu @eefb3000 s26176 r8192 d22976 u57344 >> [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 516352 >> [ 0.000000] Kernel command line: video=HDMI-A-1:1280x720M@60 console=ttySAC1,115200n8 root=PARTUUID=8c900d97-367f-47a9-bd66-6eced1a29836 rootfstype=f2fs rootwait ro earlyprintk console=tty1 console=ttySAC1,115200 >> [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) >> [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) >> [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) >> [ 0.000000] Memory: 1913244K/2071552K available (6144K kernel code, 223K rwdata, 1432K rodata, 1024K init, 246K bss, 27236K reserved, 131072K cma-reserved, 1154048K highmem) >> [ 0.000000] Virtual kernel memory layout: >> [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) >> [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) >> [ 0.000000] vmalloc : 0xf0800000 - 0xff800000 ( 240 MB) >> [ 0.000000] lowmem : 0xc0000000 - 0xf0000000 ( 768 MB) >> [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) >> [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) >> [ 0.000000] .text : 0xc0008000 - 0xc0700000 (7136 kB) >> [ 0.000000] .init : 0xc0900000 - 0xc0a00000 (1024 kB) >> [ 0.000000] .data : 0xc0a00000 - 0xc0a37fc0 ( 224 kB) >> [ 0.000000] .bss : 0xc0a39000 - 0xc0a76a08 ( 247 kB) >> [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 >> [ 0.000000] Preemptible hierarchical RCU implementation. >> [ 0.000000] Build-time adjustment of leaf fanout to 32. >> [ 0.000000] NR_IRQS:16 nr_irqs:16 16 >> [ 0.000000] L2C: platform modifies aux control register: 0x02070000 -> 0x3e470001 >> [ 0.000000] L2C: platform provided aux values permit register corruption. >> [ 0.000000] L2C: DT/platform modifies aux control register: 0x02070000 -> 0x3e470001 >> [ 0.000000] L2C-310 enabling early BRESP for Cortex-A9 >> [ 0.000000] L2C-310: enabling full line of zeros but not enabled in Cortex-A9 >> [ 0.000000] L2C-310 ID prefetch enabled, offset 8 lines >> [ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled >> [ 0.000000] L2C-310 cache controller enabled, 16 ways, 1024 kB >> [ 0.000000] L2C-310: CACHE_ID 0x4100c4c8, AUX_CTRL 0x7e470001 >> [ 0.000000] Exynos4x12 clocks: sclk_apll = 1000000000, sclk_mpll = 800000000 >> [ 0.000000] sclk_epll = 96000000, sclk_vpll = 350000000, arm_clk = 1000000000 >> [ 0.000000] Switching to timer-based delay loop, resolution 41ns >> [ 0.000000] clocksource: mct-frc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns >> [ 0.000004] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns >> [ 0.000263] Console: colour dummy device 80x30 >> [ 0.000978] console [tty1] enabled >> [ 0.001003] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=120000) >> [ 0.001039] pid_max: default: 32768 minimum: 301 >> [ 0.001118] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) >> [ 0.001142] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) >> [ 0.001577] CPU: Testing write buffer coherency: ok >> [ 0.001875] CPU0: thread -1, cpu 0, socket 10, mpidr 80000a00 >> [ 0.002240] Setting up static identity map for 0x40100000 - 0x40100058 >> [ 0.055360] CPU1: thread -1, cpu 1, socket 10, mpidr 80000a01 >> [ 0.075335] CPU2: thread -1, cpu 2, socket 10, mpidr 80000a02 >> [ 0.095316] CPU3: thread -1, cpu 3, socket 10, mpidr 80000a03 >> [ 0.095374] Brought up 4 CPUs >> [ 0.095445] SMP: Total of 4 processors activated (192.00 BogoMIPS). >> [ 0.095464] CPU: All CPU(s) started in SVC mode. >> [ 0.096280] devtmpfs: initialized >> [ 0.110373] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 >> [ 0.110612] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302231375000 ns >> [ 0.114190] pinctrl core: initialized pinctrl subsystem >> [ 0.114738] lcd0-power-domain@10023C80 has as child subdomain: tv-power-domain@10023C20. >> [ 0.115573] NET: Registered protocol family 16 >> [ 0.117150] DMA: preallocated 256 KiB pool for atomic coherent allocations >> [ 0.134991] cpuidle: using governor ladder >> [ 0.154989] cpuidle: using governor menu >> [ 0.155398] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. >> [ 0.155434] hw-breakpoint: maximum watchpoint size is 4 bytes. >> [ 0.197368] SCSI subsystem initialized >> [ 0.197498] usbcore: registered new interface driver usbfs >> [ 0.197568] usbcore: registered new interface driver hub >> [ 0.197664] usbcore: registered new device driver usb >> [ 0.198081] s3c-i2c 13860000.i2c: slave address 0x10 >> [ 0.198111] s3c-i2c 13860000.i2c: bus frequency set to 390 KHz >> [ 0.198570] s3c-i2c 13860000.i2c: i2c-0: S3C I2C adapter >> [ 0.198763] s3c-i2c 13870000.i2c: slave address 0x10 >> [ 0.198791] s3c-i2c 13870000.i2c: bus frequency set to 390 KHz >> [ 0.199046] s3c-i2c 13870000.i2c: i2c-1: S3C I2C adapter >> [ 0.199192] s3c-i2c 13880000.i2c: slave address 0x00 >> [ 0.199218] s3c-i2c 13880000.i2c: bus frequency set to 97 KHz >> [ 0.199375] s3c-i2c 13880000.i2c: i2c-2: S3C I2C adapter >> [ 0.199481] s3c-i2c 138e0000.i2c: slave address 0x00 >> [ 0.199506] s3c-i2c 138e0000.i2c: bus frequency set to 97 KHz >> [ 0.199758] s3c-i2c 138e0000.i2c: i2c-8: S3C I2C adapter >> [ 0.200052] Linux video capture interface: v2.00 >> [ 0.205439] Advanced Linux Sound Architecture Driver Initialized. >> [ 0.205901] Bluetooth: Core ver 2.21 >> [ 0.205947] NET: Registered protocol family 31 >> [ 0.205966] Bluetooth: HCI device and connection manager initialized >> [ 0.205992] Bluetooth: HCI socket layer initialized >> [ 0.206014] Bluetooth: L2CAP socket layer initialized >> [ 0.206036] Bluetooth: SCO socket layer initialized >> [ 0.206567] clocksource: Switched to clocksource mct-frc >> [ 0.214799] NET: Registered protocol family 2 >> [ 0.215264] TCP established hash table entries: 8192 (order: 3, 32768 bytes) >> [ 0.215352] TCP bind hash table entries: 8192 (order: 4, 65536 bytes) >> [ 0.215463] TCP: Hash tables configured (established 8192 bind 8192) >> [ 0.215531] UDP hash table entries: 512 (order: 2, 16384 bytes) >> [ 0.215573] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) >> [ 0.215717] NET: Registered protocol family 1 >> [ 0.216073] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available >> [ 0.217474] futex hash table entries: 1024 (order: 4, 65536 bytes) >> [ 0.217587] audit: initializing netlink subsys (disabled) >> [ 0.217641] audit: type=2000 audit(0.215:1): initialized >> [ 0.218191] workingset: timestamp_bits=30 max_order=19 bucket_order=0 >> [ 0.230957] bounce: pool size: 64 pages >> [ 0.231124] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251) >> [ 0.231157] io scheduler noop registered >> [ 0.231175] io scheduler deadline registered >> [ 0.231306] io scheduler cfq registered (default) >> [ 0.231963] 125b0000.exynos-usbphy supply vbus not found, using dummy regulator >> [ 0.235681] dma-pl330 12680000.pdma: Loaded driver for PL330 DMAC-141330 >> [ 0.235717] dma-pl330 12680000.pdma: DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32 >> [ 0.238256] dma-pl330 12690000.pdma: Loaded driver for PL330 DMAC-141330 >> [ 0.238291] dma-pl330 12690000.pdma: DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32 >> [ 0.239110] dma-pl330 12850000.mdma: Loaded driver for PL330 DMAC-141330 >> [ 0.239141] dma-pl330 12850000.mdma: DBUFF-64x8bytes Num_Chans-8 Num_Peri-1 Num_Events-32 >> [ 0.239800] 13800000.serial: ttySAC0 at MMIO 0x13800000 (irq = 53, base_baud = 0) is a S3C6400/10 >> [ 0.240144] 13810000.serial: ttySAC1 at MMIO 0x13810000 (irq = 54, base_baud = 0) is a S3C6400/10 >> [ 1.015731] console [ttySAC1] enabled >> [ 1.019770] 13820000.serial: ttySAC2 at MMIO 0x13820000 (irq = 55, base_baud = 0) is a S3C6400/10 >> [ 1.028570] 13830000.serial: ttySAC3 at MMIO 0x13830000 (irq = 56, base_baud = 0) is a S3C6400/10 >> [ 1.038157] [drm] Initialized drm 1.1.0 20060810 >> [ 1.042093] exynos-mixer 12c10000.mixer: Linked as a consumer to 12e20000.sysmmu >> [ 1.049118] iommu: Adding device 12c10000.mixer to group 0 >> [ 1.055403] DEBUG: device_links_driver_bound(): 1 >> [ 1.059238] ------------[ cut here ]------------ >> [ 1.063826] WARNING: CPU: 0 PID: 1 at drivers/base/core.c:356 device_links_driver_bound+0x124/0x12c >> [ 1.072851] Modules linked in: >> [ 1.075859] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.8.0-vanilla+ #3 >> [ 1.082458] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) >> [ 1.088533] Backtrace: >> [ 1.090970] [<c010bb84>] (dump_backtrace) from [<c010bd80>] (show_stack+0x18/0x1c) >> [ 1.098524] r6:60000053 r5:c0a1ff00 r4:00000000 r3:00040800 >> [ 1.104161] [<c010bd68>] (show_stack) from [<c0353640>] (dump_stack+0x9c/0xb0) >> [ 1.111376] [<c03535a4>] (dump_stack) from [<c011fa74>] (__warn+0xec/0x104) >> [ 1.118306] r6:c08038b0 r5:00000000 r4:00000000 r3:00040800 >> [ 1.123946] [<c011f988>] (__warn) from [<c011fb44>] (warn_slowpath_null+0x28/0x30) >> [ 1.131506] r9:00000000 r8:c0a258d8 r7:ee3114e4 r6:eeafa874 r5:00000000 r4:ee3114c0 >> [ 1.139231] [<c011fb1c>] (warn_slowpath_null) from [<c0404114>] (device_links_driver_bound+0x124/0x12c) >> [ 1.148615] [<c0403ff0>] (device_links_driver_bound) from [<c0407950>] (driver_bound+0x68/0xb8) >> [ 1.157287] r9:00000000 r8:c0a258d8 r7:00000001 r6:c0a6d79c r5:c0a6d794 r4:eeafa810 >> [ 1.165011] [<c04078e8>] (driver_bound) from [<c0407e4c>] (driver_probe_device+0x280/0x2e4) >> [ 1.173345] r4:eeafa810 r3:600000d3 >> [ 1.176894] [<c0407bcc>] (driver_probe_device) from [<c0407f64>] (__driver_attach+0xb4/0xb8) >> [ 1.185323] r10:00000000 r9:c03f1178 r8:ffffffff r7:00000000 r6:eeafa844 r5:c0a258d8 >> [ 1.193128] r4:eeafa810 r3:00000000 >> [ 1.196685] [<c0407eb0>] (__driver_attach) from [<c0405f1c>] (bus_for_each_dev+0x74/0xa8) >> [ 1.204853] r6:c0407eb0 r5:c0a258d8 r4:00000000 r3:c0407eb0 >> [ 1.210485] [<c0405ea8>] (bus_for_each_dev) from [<c0407760>] (driver_attach+0x24/0x28) >> [ 1.218480] r6:c0a26758 r5:ee27f780 r4:c0a258d8 >> [ 1.223072] [<c040773c>] (driver_attach) from [<c0407320>] (bus_add_driver+0x1a8/0x220) >> [ 1.231072] [<c0407178>] (bus_add_driver) from [<c0408894>] (driver_register+0x80/0x100) >> [ 1.239139] r7:c0744e38 r6:c0744dc0 r5:00000000 r4:c0a258d8 >> [ 1.244773] [<c0408814>] (driver_register) from [<c0409920>] (__platform_driver_register+0x48/0x50) >> [ 1.253809] r5:00000000 r4:00000004 >> [ 1.257364] [<c04098d8>] (__platform_driver_register) from [<c03f1240>] (exynos_drm_init+0xc8/0xfc) >> [ 1.266402] [<c03f1178>] (exynos_drm_init) from [<c01017c4>] (do_one_initcall+0x58/0x19c) >> [ 1.274554] r8:c0a02448 r7:c0a39000 r6:c0a39000 r5:00000006 r4:c093a520 >> [ 1.281232] [<c010176c>] (do_one_initcall) from [<c0900edc>] (kernel_init_freeable+0x1e4/0x288) >> [ 1.289917] r10:c0926834 r9:c090060c r8:0000008e r7:c0a39000 r6:c0a39000 r5:00000006 >> [ 1.297722] r4:c093a520 >> [ 1.300243] [<c0900cf8>] (kernel_init_freeable) from [<c06dc2dc>] (kernel_init+0x10/0x11c) >> [ 1.308493] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c06dc2cc >> [ 1.316297] r4:00000000 >> [ 1.318815] [<c06dc2cc>] (kernel_init) from [<c0107dd8>] (ret_from_fork+0x14/0x3c) >> [ 1.326373] r4:00000000 r3:ee880000 >> [ 1.329952] ---[ end trace 402e0b75dfe2947b ]--- >> [ 1.336115] exynos-hdmi 12d00000.hdmi: Failed to get supply 'vdd': -517 >> [ 1.341761] s5p-g2d 10800000.g2d: Linked as a consumer to 10a40000.sysmmu >> [ 1.347960] iommu: Adding device 10800000.g2d to group 1 >> [ 1.353512] s5p-g2d 10800000.g2d: The Exynos G2D (ver 4.1) successfully probed. >> [ 1.360510] DEBUG: device_links_driver_bound(): 1 >> [ 1.365183] ------------[ cut here ]------------ >> [ 1.369786] WARNING: CPU: 1 PID: 1 at drivers/base/core.c:356 device_links_driver_bound+0x124/0x12c >> [ 1.378819] Modules linked in: >> [ 1.381829] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 4.8.0-vanilla+ #3 >> [ 1.389651] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) >> [ 1.395718] Backtrace: >> [ 1.398154] [<c010bb84>] (dump_backtrace) from [<c010bd80>] (show_stack+0x18/0x1c) >> [ 1.405709] r6:60000053 r5:c0a1ff00 r4:00000000 r3:00040800 >> [ 1.411344] [<c010bd68>] (show_stack) from [<c0353640>] (dump_stack+0x9c/0xb0) >> [ 1.418560] [<c03535a4>] (dump_stack) from [<c011fa74>] (__warn+0xec/0x104) >> [ 1.425491] r6:c08038b0 r5:00000000 r4:00000000 r3:00040800 >> [ 1.431132] [<c011f988>] (__warn) from [<c011fb44>] (warn_slowpath_null+0x28/0x30) >> [ 1.438691] r9:00000000 r8:c0a2621c r7:ee910ae4 r6:eeac4a74 r5:00000000 r4:ee910ac0 >> [ 1.446416] [<c011fb1c>] (warn_slowpath_null) from [<c0404114>] (device_links_driver_bound+0x124/0x12c) >> [ 1.455800] [<c0403ff0>] (device_links_driver_bound) from [<c0407950>] (driver_bound+0x68/0xb8) >> [ 1.464472] r9:00000000 r8:c0a2621c r7:00000001 r6:c0a6d79c r5:c0a6d794 r4:eeac4a10 >> [ 1.472196] [<c04078e8>] (driver_bound) from [<c0407e4c>] (driver_probe_device+0x280/0x2e4) >> [ 1.480530] r4:eeac4a10 r3:00000000 >> [ 1.484080] [<c0407bcc>] (driver_probe_device) from [<c0407f64>] (__driver_attach+0xb4/0xb8) >> [ 1.492508] r10:00000000 r9:c03f1178 r8:ffffffff r7:00000000 r6:eeac4a44 r5:c0a2621c >> [ 1.500313] r4:eeac4a10 r3:00000000 >> [ 1.503870] [<c0407eb0>] (__driver_attach) from [<c0405f1c>] (bus_for_each_dev+0x74/0xa8) >> [ 1.512038] r6:c0407eb0 r5:c0a2621c r4:00000000 r3:c0407eb0 >> [ 1.517671] [<c0405ea8>] (bus_for_each_dev) from [<c0407760>] (driver_attach+0x24/0x28) >> [ 1.525665] r6:c0a26758 r5:ee932b80 r4:c0a2621c >> [ 1.530257] [<c040773c>] (driver_attach) from [<c0407320>] (bus_add_driver+0x1a8/0x220) >> [ 1.538257] [<c0407178>] (bus_add_driver) from [<c0408894>] (driver_register+0x80/0x100) >> [ 1.546324] r7:c0744e38 r6:c0744dc0 r5:00000000 r4:c0a2621c >> [ 1.551959] [<c0408814>] (driver_register) from [<c0409920>] (__platform_driver_register+0x48/0x50) >> [ 1.560994] r5:00000000 r4:0000000a >> [ 1.564548] [<c04098d8>] (__platform_driver_register) from [<c03f1240>] (exynos_drm_init+0xc8/0xfc) >> [ 1.573587] [<c03f1178>] (exynos_drm_init) from [<c01017c4>] (do_one_initcall+0x58/0x19c) >> [ 1.581739] r8:c0a02448 r7:c0a39000 r6:c0a39000 r5:00000006 r4:c093a520 >> [ 1.588415] [<c010176c>] (do_one_initcall) from [<c0900edc>] (kernel_init_freeable+0x1e4/0x288) >> [ 1.597103] r10:c0926834 r9:c090060c r8:0000008e r7:c0a39000 r6:c0a39000 r5:00000006 >> [ 1.604907] r4:c093a520 >> [ 1.607427] [<c0900cf8>] (kernel_init_freeable) from [<c06dc2dc>] (kernel_init+0x10/0x11c) >> [ 1.615678] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c06dc2cc >> [ 1.623482] r4:00000000 >> [ 1.625999] [<c06dc2cc>] (kernel_init) from [<c0107dd8>] (ret_from_fork+0x14/0x3c) >> [ 1.633558] r4:00000000 r3:ee880000 >> [ 1.637133] ---[ end trace 402e0b75dfe2947c ]--- >> [ 1.642227] exynos-drm-fimc 11800000.fimc: Linked as a consumer to 11a20000.sysmmu >> [ 1.649335] iommu: Adding device 11800000.fimc to group 2 >> [ 1.655529] exynos-drm-fimc 11810000.fimc: Linked as a consumer to 11a30000.sysmmu >> [ 1.662263] iommu: Adding device 11810000.fimc to group 3 >> [ 1.668447] exynos-drm-fimc 11820000.fimc: Linked as a consumer to 11a40000.sysmmu >> [ 1.675196] iommu: Adding device 11820000.fimc to group 4 >> [ 1.681278] exynos-drm-fimc 11820000.fimc: drm fimc registered successfully. >> [ 1.687589] DEBUG: device_links_driver_bound(): 1 >> [ 1.692264] ------------[ cut here ]------------ >> [ 1.696852] WARNING: CPU: 0 PID: 1 at drivers/base/core.c:356 device_links_driver_bound+0x124/0x12c >> [ 1.705880] Modules linked in: >> [ 1.708891] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 4.8.0-vanilla+ #3 >> [ 1.716713] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) >> [ 1.722780] Backtrace: >> [ 1.725216] [<c010bb84>] (dump_backtrace) from [<c010bd80>] (show_stack+0x18/0x1c) >> [ 1.732771] r6:60000053 r5:c0a1ff00 r4:00000000 r3:00040800 >> [ 1.738407] [<c010bd68>] (show_stack) from [<c0353640>] (dump_stack+0x9c/0xb0) >> [ 1.745624] [<c03535a4>] (dump_stack) from [<c011fa74>] (__warn+0xec/0x104) >> [ 1.752553] r6:c08038b0 r5:00000000 r4:00000000 r3:00040800 >> [ 1.758194] [<c011f988>] (__warn) from [<c011fb44>] (warn_slowpath_null+0x28/0x30) >> [ 1.765754] r9:00000000 r8:c0a26330 r7:ee311d24 r6:eea83074 r5:00000000 r4:ee311d00 >> [ 1.773479] [<c011fb1c>] (warn_slowpath_null) from [<c0404114>] (device_links_driver_bound+0x124/0x12c) >> [ 1.782862] [<c0403ff0>] (device_links_driver_bound) from [<c0407950>] (driver_bound+0x68/0xb8) >> [ 1.791534] r9:00000000 r8:c0a26330 r7:00000001 r6:c0a6d79c r5:c0a6d794 r4:eea83010 >> [ 1.799258] [<c04078e8>] (driver_bound) from [<c0407e4c>] (driver_probe_device+0x280/0x2e4) >> [ 1.807592] r4:eea83010 r3:600000d3 >> [ 1.811142] [<c0407bcc>] (driver_probe_device) from [<c0407f64>] (__driver_attach+0xb4/0xb8) >> [ 1.819571] r10:00000000 r9:c03f1178 r8:ffffffff r7:00000000 r6:eea83044 r5:c0a26330 >> [ 1.827376] r4:eea83010 r3:00000000 >> [ 1.830932] [<c0407eb0>] (__driver_attach) from [<c0405f1c>] (bus_for_each_dev+0x74/0xa8) >> [ 1.839100] r6:c0407eb0 r5:c0a26330 r4:00000000 r3:c0407eb0 >> [ 1.844733] [<c0405ea8>] (bus_for_each_dev) from [<c0407760>] (driver_attach+0x24/0x28) >> [ 1.852728] r6:c0a26758 r5:ee27fa00 r4:c0a26330 >> [ 1.857319] [<c040773c>] (driver_attach) from [<c0407320>] (bus_add_driver+0x1a8/0x220) >> [ 1.865320] [<c0407178>] (bus_add_driver) from [<c0408894>] (driver_register+0x80/0x100) >> [ 1.873386] r7:c0744e38 r6:c0744dc0 r5:00000000 r4:c0a26330 >> [ 1.879021] [<c0408814>] (driver_register) from [<c0409920>] (__platform_driver_register+0x48/0x50) >> [ 1.888057] r5:00000000 r4:0000000b >> [ 1.891610] [<c04098d8>] (__platform_driver_register) from [<c03f1240>] (exynos_drm_init+0xc8/0xfc) >> [ 1.900649] [<c03f1178>] (exynos_drm_init) from [<c01017c4>] (do_one_initcall+0x58/0x19c) >> [ 1.908801] r8:c0a02448 r7:c0a39000 r6:c0a39000 r5:00000006 r4:c093a520 >> [ 1.915478] [<c010176c>] (do_one_initcall) from [<c0900edc>] (kernel_init_freeable+0x1e4/0x288) >> [ 1.924165] r10:c0926834 r9:c090060c r8:0000008e r7:c0a39000 r6:c0a39000 r5:00000006 >> [ 1.931969] r4:c093a520 >> [ 1.934489] [<c0900cf8>] (kernel_init_freeable) from [<c06dc2dc>] (kernel_init+0x10/0x11c) >> [ 1.942740] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c06dc2cc >> [ 1.950545] r4:00000000 >> [ 1.953062] [<c06dc2cc>] (kernel_init) from [<c0107dd8>] (ret_from_fork+0x14/0x3c) >> [ 1.960620] r4:00000000 r3:ee880000 >> [ 1.964193] ---[ end trace 402e0b75dfe2947d ]--- >> [ 1.969039] exynos-drm-fimc 11830000.fimc: Linked as a consumer to 11a50000.sysmmu >> [ 1.976392] iommu: Adding device 11830000.fimc to group 5 >> [ 1.982437] exynos-drm-fimc 11830000.fimc: drm fimc registered successfully. >> [ 1.988799] DEBUG: device_links_driver_bound(): 1 >> [ 1.993464] ------------[ cut here ]------------ >> [ 1.998056] WARNING: CPU: 2 PID: 1 at drivers/base/core.c:356 device_links_driver_bound+0x124/0x12c >> [ 2.007076] Modules linked in: >> [ 2.010087] CPU: 2 PID: 1 Comm: swapper/0 Tainted: G W 4.8.0-vanilla+ #3 >> [ 2.017909] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) >> [ 2.023975] Backtrace: >> [ 2.026412] [<c010bb84>] (dump_backtrace) from [<c010bd80>] (show_stack+0x18/0x1c) >> [ 2.033967] r6:60000053 r5:c0a1ff00 r4:00000000 r3:00040800 >> [ 2.039603] [<c010bd68>] (show_stack) from [<c0353640>] (dump_stack+0x9c/0xb0) >> [ 2.046819] [<c03535a4>] (dump_stack) from [<c011fa74>] (__warn+0xec/0x104) >> [ 2.053750] r6:c08038b0 r5:00000000 r4:00000000 r3:00040800 >> [ 2.059390] [<c011f988>] (__warn) from [<c011fb44>] (warn_slowpath_null+0x28/0x30) >> [ 2.066950] r9:00000000 r8:c0a26330 r7:ee313264 r6:eea83274 r5:00000000 r4:ee313240 >> [ 2.074675] [<c011fb1c>] (warn_slowpath_null) from [<c0404114>] (device_links_driver_bound+0x124/0x12c) >> [ 2.084058] [<c0403ff0>] (device_links_driver_bound) from [<c0407950>] (driver_bound+0x68/0xb8) >> [ 2.092731] r9:00000000 r8:c0a26330 r7:00000001 r6:c0a6d79c r5:c0a6d794 r4:eea83210 >> [ 2.100454] [<c04078e8>] (driver_bound) from [<c0407e4c>] (driver_probe_device+0x280/0x2e4) >> [ 2.108788] r4:eea83210 r3:600000d3 >> [ 2.112338] [<c0407bcc>] (driver_probe_device) from [<c0407f64>] (__driver_attach+0xb4/0xb8) >> [ 2.120767] r10:00000000 r9:c03f1178 r8:ffffffff r7:00000000 r6:eea83244 r5:c0a26330 >> [ 2.128571] r4:eea83210 r3:00000000 >> [ 2.132128] [<c0407eb0>] (__driver_attach) from [<c0405f1c>] (bus_for_each_dev+0x74/0xa8) >> [ 2.140296] r6:c0407eb0 r5:c0a26330 r4:00000000 r3:c0407eb0 >> [ 2.145929] [<c0405ea8>] (bus_for_each_dev) from [<c0407760>] (driver_attach+0x24/0x28) >> [ 2.153924] r6:c0a26758 r5:ee27fa00 r4:c0a26330 >> [ 2.158516] [<c040773c>] (driver_attach) from [<c0407320>] (bus_add_driver+0x1a8/0x220) >> [ 2.166516] [<c0407178>] (bus_add_driver) from [<c0408894>] (driver_register+0x80/0x100) >> [ 2.174582] r7:c0744e38 r6:c0744dc0 r5:00000000 r4:c0a26330 >> [ 2.180217] [<c0408814>] (driver_register) from [<c0409920>] (__platform_driver_register+0x48/0x50) >> [ 2.189252] r5:00000000 r4:0000000b >> [ 2.192806] [<c04098d8>] (__platform_driver_register) from [<c03f1240>] (exynos_drm_init+0xc8/0xfc) >> [ 2.201845] [<c03f1178>] (exynos_drm_init) from [<c01017c4>] (do_one_initcall+0x58/0x19c) >> [ 2.209997] r8:c0a02448 r7:c0a39000 r6:c0a39000 r5:00000006 r4:c093a520 >> [ 2.216674] [<c010176c>] (do_one_initcall) from [<c0900edc>] (kernel_init_freeable+0x1e4/0x288) >> [ 2.225361] r10:c0926834 r9:c090060c r8:0000008e r7:c0a39000 r6:c0a39000 r5:00000006 >> [ 2.233165] r4:c093a520 >> [ 2.235685] [<c0900cf8>] (kernel_init_freeable) from [<c06dc2dc>] (kernel_init+0x10/0x11c) >> [ 2.243936] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c06dc2cc >> [ 2.251740] r4:00000000 >> [ 2.254258] [<c06dc2cc>] (kernel_init) from [<c0107dd8>] (ret_from_fork+0x14/0x3c) >> [ 2.261816] r4:00000000 r3:ee880000 >> [ 2.265388] ---[ end trace 402e0b75dfe2947e ]--- >> [ 2.270457] exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully. >> [ 2.280368] loop: module loaded >> [ 2.293185] random: fast init done >> [ 2.303857] usbcore: registered new interface driver smsc95xx >> [ 2.491598] dwc2 12480000.hsotg: Specified GNPTXFDEP=1024 > 768 >> [ 2.491906] dwc2 12480000.hsotg: EPs: 16, dedicated fifos, 7808 entries in SPRAM >> [ 2.499801] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver >> [ 2.505798] ehci-exynos: EHCI EXYNOS driver >> [ 2.510438] exynos-ehci 12580000.ehci: EHCI Host Controller >> [ 2.515535] exynos-ehci 12580000.ehci: new USB bus registered, assigned bus number 1 >> [ 2.523434] exynos-ehci 12580000.ehci: irq 51, io mem 0x12580000 >> [ 2.541596] exynos-ehci 12580000.ehci: USB 2.0 started, EHCI 1.00 >> <snip> > > I'll try to do another test with just the 5 patches from this set > applied (without the IOMMU probe deferral). > > With best wishes, > Tobias > > > > Marek Szyprowski wrote: >> Dear All, >> >> This patchset adds runtime PM support to common clock framework. This is an >> attempt to implement support for clock controllers, which belongs to a power >> domain. This approach works surprisingly well on Exynos 4412 and 5433 SoCs, >> what allowed us to solve various freeze/crash issues related to power >> management. >> >> The main idea behind this patchset is to keep clock's controller power domain >> enabled every time when at least one of its clock is enabled or access to its >> registers is being made. Clock controller driver (clock provider) can >> supply a struct device pointer, which is the used by clock core for tracking and >> managing clock's controller runtime pm state. Each clk_prepare() operation will >> first call pm_runtime_get_sync() on the supplied device, while clk_unprepare() >> will do pm_runtime_put() at the end. >> >> This runtime PM feature has been tested with Exynos4412 and Exynos5433 clocks >> drivers. Both have some clocks, which belongs to respective power domains and >> need special handling during power on/off procedures. Till now it wasn't handled >> at all, what caused various problems. >> >> Patches for exynos 4412 and 5433 clocks drivers change the way the clock >> provider is initialized. Instead of CLK_OF_DECLARE based initialization, a >> complete platform device driver infrastructure is being used. This is needed to >> let driver to use runtime pm feature and integrate with generic power domains. >> The side-effect of this change is a delay in clock provider registeration >> during system boot, so early initialized drivers might get EPROBEDEFER error >> when requesting their clocks. This is an issue for IOMMU drivers, so >> this patchset will be fully functional once the deferred probe for IOMMU >> will be merged. >> >> The side-effect of this patchset is the one can finally read >> /sys/kernel/debug/clk/clk_summary on all Exynos4412 boards without any freeze. >> >> If one wants to test this patchset (on Exynos4412 Trats2 device with FIMC-IS >> driver), I've provided a branch with all needed patches (fixes for Exynos, >> FIMC-IS driver and IOMMU deferred probe): >> https://git.linaro.org/people/marek.szyprowski/linux-srpol.git v4.8-clocks-pm-v2 >> >> Patches are based on vanilla v4.8-rc7 kernel. >> >> Best regards >> Marek Szyprowski >> Samsung R&D Institute Poland >> >> Changelog: >> v2: >> - Simplified clk_pm_runtime_get/put functions, removed workaround for devices >> with disabled runtime pm. Such workaround is no longer needed since commit >> 4d23a5e84806b202d9231929c9507ef7cf7a0185 ("PM / Domains: Allow runtime PM >> during system PM phases"). >> - Added CLK_RUNTIME_PM flag to indicate clocks, for which clock core should >> call runtime pm functions. This solves problem with clocks, for which struct >> device is already registered, but no runtime pm is enabled. >> - Extended commit messages according to Ulf suggestions. >> - Fixed some style issues pointed by Barlomiej. >> >> v1: http://www.spinics.net/lists/arm-kernel/msg528128.html >> - initial version >> >> Marek Szyprowski (5): >> clk: add support for runtime pm >> clock: samsung: add support for runtime pm >> clocks: exynos4x12: add runtime pm support for ISP clocks >> ARM: dts: exynos: add support for ISP power domain to exynos4x12 >> clocks device >> clocks: exynos5433: add runtime pm support >> >> .../devicetree/bindings/clock/exynos4-clock.txt | 22 ++ >> arch/arm/boot/dts/exynos4x12.dtsi | 5 + >> drivers/clk/clk.c | 107 +++++- >> drivers/clk/samsung/clk-exynos4.c | 227 ++++++++---- >> drivers/clk/samsung/clk-exynos5433.c | 385 ++++++++++++++++----- >> drivers/clk/samsung/clk-pll.c | 4 +- >> drivers/clk/samsung/clk.c | 36 +- >> drivers/clk/samsung/clk.h | 7 + >> include/linux/clk-provider.h | 1 + >> 9 files changed, 632 insertions(+), 162 deletions(-) >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html