Ming Lei <tom.leiming@xxxxxxxxx> writes: > I just tested pm branch of tony's linux-omap-2.6 tree, and found my > beagle will hang in uart3 disabling clocks, follows the log info: It greatly helps when you also state what defconfig you're using, and what you've changed from the default defconfig. ... more below... > Starting kernel ... > > Uncompressing Linux... done, booting the kernel. > Linux version 2.6.36-rc6+ (tom@tom-lei) (gcc version 4.3.3 (Sourcery > G++ Lite 2009q1-203) ) #320 PREEM > PT Sun Oct 3 16:46:04 CST 2010 > CPU: ARMv7 Processor [411fc082] revision 2 (ARMv7), cr=10c53c7f > CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache > Machine: OMAP3 Beagle Board > bootconsole [earlycon0] enabled > Memory policy: ECC disabled, Data cache writeback > OMAP3430/3530 ES2.1 (l2cache iva sgx neon isp ) > SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x10000 > On node 0 totalpages: 32768 > free_area_init_node: node 0, pgdat c04a1a00, node_mem_map c06b8000 > Normal zone: 256 pages used for memmap > Normal zone: 0 pages reserved > Normal zone: 32512 pages, LIFO batch:7 > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 > Kernel command line: console=ttyO2,115200n8 root=/dev/mmcblk0p2 rw > rootdelay=1 earlyprintk initcall_de > bug=1 loglevel=8 > PID hash table entries: 512 (order: -1, 2048 bytes) > Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) > Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) > Memory: 128MB = 128MB total > Memory: 123068k/123068k available, 8004k reserved, 0K highmem > Virtual kernel memory layout: > vector : 0xffff0000 - 0xffff1000 ( 4 kB) > fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > DMA : 0xffc00000 - 0xffe00000 ( 2 MB) > vmalloc : 0xc8800000 - 0xf8000000 ( 760 MB) > lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) > modules : 0xbf000000 - 0xc0000000 ( 16 MB) > .init : 0xc0008000 - 0xc0034000 ( 176 kB) > .text : 0xc0034000 - 0xc046c000 (4320 kB) > .data : 0xc046c000 - 0xc04a2000 ( 216 kB) > Preemptable hierarchical RCU implementation. > RCU-based detection of stalled CPUs is disabled. > Verbose stalled-CPUs detection is disabled. > NR_IRQS:402 > omap_hwmod: l3_main: registering You've manually done a '#define DEBUG' in omap_hwmod.c. This does not work well with UART hwmods, especially when using a UART console and using DEBUG_LL + earlyprintk. [...] > omap_hwmod: uart2: idling > omap_hwmod: uart2: disabling clocks > omap_device: omap-hsuart: activating > omap_hwmod: uart2: enabling > omap_hwmod: uart2: enabling clocks > omap_device: omap-hsuart: pm_lat 0: activate: elapsed time 0 nsec > omap_device: omap-hsuart: deactivating > omap_hwmod: uart2: idling > omap_hwmod: uart2: disabling clocks > omap_device: omap-hsuart: pm_lat 0: deactivate: elapsed time 0 nsec > omap_device: omap-hsuart: activating > omap_hwmod: uart2: enabling > omap_hwmod: uart2: enabling clocks > omap_device: omap-hsuart: pm_lat 0: activate: elapsed time 0 nsec > omap_device: omap-hsuart: building with 1 hwmods > omap_device: omap-hsuart: counted 4 total resources across 1 hwmods > omap_device: omap-hsuart: registering > Registering platform device 'omap-hsuart.2'. Parent at omap > device: 'omap-hsuart.2': device_add > bus: 'platform': add device omap-hsuart.2 > PM: Adding info for platform:omap-hsuart.2 > omap_hwmod: uart3: idling > omap_hwmod: uart3: disabling clocks Remember UART3 is your serial console. Basically, what is happening is that the hwmod is trying to print debug messages for all hwmod changes. As soon as UART3 is disabled, the printing will fail since that is your console, so as soon as uart3 clocks are disabled, there is a fault when the polling-mode serial driver (used for earlyprintk) tries to access the UART, and you hang. Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html