Date: Wed, 30 Apr 2014 16:41:37 -0600 From: Ian Lepore <ian@FreeBSD.org> To: Winston Smith <smith.winston.101@gmail.com> Cc: FreeBSD ARM <freebsd-arm@FreeBSD.org> Subject: Re: BBB @ 1Ghz hangs with 10-STABLE (11-CURRENT is ok) Message-ID: <1398897697.22079.80.camel@revolution.hippie.lan> In-Reply-To: <CADH-AwF%2B59f9%2BtDdiAcQbf2zVS5r7_AMAXQ0TG8mBs0q8bfrKg@mail.gmail.com> References: <CADH-AwF%2B59f9%2BtDdiAcQbf2zVS5r7_AMAXQ0TG8mBs0q8bfrKg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2014-04-30 at 18:24 -0400, Winston Smith wrote: > After getting a 2014.01 u-boot built with Xuebing's patches, I found > that 10-STABLE hangs at some point after the kernel has configured the > usb hubs. The abbreviated console log is below; since the kernel had > booted, I was able to get a stack trace (also included below). > > However, the patched u-boot works ok with 11-CURRENT. Looking at the > patches, it wasn't immediately apparent as to what exactly enables the > 1Ghz mode ... maybe it's just having a newer u-boot? > > Is there something specific in 11-CURRENT that enables/supports the > 1Ghz operation? > > Thanks! > > > -W > --- > > > -Boot SPL 2014.01 (Apr 29 2014 - 18:25:45) > reading args > spl: error reading image args, err - -1 > reading bb-uboot.img > reading bb-uboot.img > > > U-Boot 2014.01 (Apr 29 2014 - 18:25:45) > > I2C: ready > DRAM: 512 MiB > NAND: 0 MiB > MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 > *** Warning - readenv() failed, using default environment > > Net: <ethaddr> not set. Validating first E-fuse MAC > cpsw, usb_ether > Hit any key to stop autoboot: 0 > mmc0 is current device > SD/MMC found on device 0 > reading bb-uEnv.txt > reading bbubldr > 251703 bytes read in 17 ms (14.1 MiB/s) > reading bboneblk.dtb > 15278 bytes read in 5 ms (2.9 MiB/s) > ## Starting application at 0x88000054 ... > Consoles: U-Boot console > Compatible U-Boot API signature found @9f62b240 > > FreeBSD/armv6 U-Boot loader, Revision 1.2 > (root@freebsd, Tue Apr 29 12:08:39 EDT 2014) > > DRAM: 512MB > Number of U-Boot devices: 2 > U-Boot env: loaderdev not set, will probe all devices. > Found U-Boot device: disk > Probing all disk devices... > Checking unit=0 slice=<auto> partition=<auto>... good. > Loading /boot/defaults/loader.conf > /boot/kernel/kernel data=0x468f08+0x17d8dc syms=[0x4+0x84b30+0x4+0x501f3] > /boot/kernel/geom_label.ko text=0x50dc data=0x864+0x30 > syms=[0x4+0x1020+0x4+0xfe2] > > Hit [Enter] to boot immediately, or any other key for command prompt. > Booting [/boot/kernel/kernel]... > Using DTB provided by U-Boot at address 0x0x80000100. > Kernel entry at 0x80200100... > > ... > > > Timecounters tick every 10.000 msec > usbus0: 480Mbps High Speed USB v2.0 > usbus1: 480Mbps High Speed USB v2.0 > ugen1.1: <Mentor Graphics> at usbus1 > uhub0: <Mentor Graphics OTG Root HUB, class 9/0, rev 2.00/1.00, addr > 1> on usbus1 > ugen0.1: <Mentor Graphics> at usbus0 > uhub1: <Mentor Graphics OTG Root HUB, class 9/0, rev 2.00/1.00, addr > 1> on usbus0 > mmcsd0: 4GB <SDHC SA04G 1.0 SN 628739603 MFG 09/2011 by 2 TM> at mmc0 > 48.0MHz/4bit/65535-block > uhub0: 1 port with 1 removable, self powered > uhub1: 1 port with 1 removable, self powered > random: unblocking device. > > KDB: enter: Break to debugger > [ thread pid 10 tid 100002 ] > Stopped at $d: ldrb r15, [r15, r15, ror r15]! > db> trace > Tracing pid 10 tid 100002 td 0xc279b320 > db_trace_self() at db_trace_self > pc = 0xc054086c lr = 0xc022e3c0 (db_stack_trace+0xf4) > sp = 0xdbe5da28 fp = 0xdbe5da40 > r10 = 0xc07e1850 > db_stack_trace() at db_stack_trace+0xf4 > pc = 0xc022e3c0 lr = 0xc022dd30 (db_command+0x270) > sp = 0xdbe5da48 fp = 0xdbe5dae8 > r4 = 0x00000000 r5 = 0x00000000 > r6 = 0x00000063 > db_command() at db_command+0x270 > pc = 0xc022dd30 lr = 0xc022da94 (db_command_loop+0x60) > sp = 0xdbe5daf0 fp = 0xdbe5db00 > r4 = 0xc05829b1 r5 = 0xc059dbfc > r6 = 0xc07e183c r7 = 0xdbe5dcd0 > r8 = 0xc067e3a0 r9 = 0xc067e3a4 > r10 = 0xc063b060 > db_command_loop() at db_command_loop+0x60 > pc = 0xc022da94 lr = 0xc023045c (db_trap+0xd8) > sp = 0xdbe5db08 fp = 0xdbe5dc28 > r4 = 0x00000000 r5 = 0xc07e1848 > r6 = 0xc067e3d0 > db_trap() at db_trap+0xd8 > pc = 0xc023045c lr = 0xc0399170 (kdb_trap+0xd4) > sp = 0xdbe5dc30 fp = 0xdbe5dc50 > r4 = 0x00000000 r5 = 0x00000001 > r6 = 0xc067e3d0 r7 = 0xdbe5dcd0 > kdb_trap() at kdb_trap+0xd4 > pc = 0xc0399170 lr = 0xc05535a8 (undefinedinstruction+0x2b0) > sp = 0xdbe5dc58 fp = 0xdbe5dcc8 > r4 = 0x00000000 r5 = 0xc0553240 > r6 = 0x00000000 r7 = 0xe7ffffff > r8 = 0xc279b320 r9 = 0xdbe5dcd0 > r10 = 0xc03989a4 > undefinedinstruction() at undefinedinstruction+0x2b0 > pc = 0xc05535a8 lr = 0xc0542374 (exception_exit) > sp = 0xdbe5dcd0 fp = 0xdbe5dd28 > r4 = 0x00000001 r5 = 0xdbe5ddb8 > r6 = 0xc2805b74 r7 = 0x00060000 > r8 = 0x00000001 r9 = 0xc064014c > r10 = 0xc2805a00 > exception_exit() at exception_exit > pc = 0xc0542374 lr = 0xc0398994 (kdb_break+0x50) > sp = 0xdbe5dd24 fp = 0xdbe5dd28 > r0 = 0xc067e3b4 r1 = 0x00000000 > r2 = 0x00000001 r3 = 0x60000193 > r4 = 0x00000001 r5 = 0xdbe5ddb8 > r6 = 0xc2805b74 r7 = 0x00060000 > r8 = 0x00000001 r9 = 0xc064014c > r10 = 0xc2805a00 r12 = 0x00000000 > $a() at $a > pc = 0xc03989a8 lr = 0xc02612f0 (uart_intr+0x9c) > sp = 0xdbe5dd30 fp = 0xdbe5dd70 > r4 = 0x00000000 > uart_intr() at uart_intr+0x9c > pc = 0xc02612f0 lr = 0xc0333050 (intr_event_handle+0x80) > sp = 0xdbe5dd78 fp = 0xdbe5dd98 > r4 = 0xc267ae00 r5 = 0xdbe5ddb8 > r6 = 0xc0666dd0 r7 = 0xc279b320 > r8 = 0x00000000 r9 = 0xc0597b05 > r10 = 0xc27f2c00 > intr_event_handle() at intr_event_handle+0x80 > pc = 0xc0333050 lr = 0xc0543598 (arm_handler_execute+0x50) > sp = 0xdbe5dda0 fp = 0xdbe5ddb0 > r4 = 0xdbe5ddb8 r5 = 0x00000048 > r6 = 0xc0666dd0 r7 = 0xc07def68 > r8 = 0x00274e80 r9 = 0xc0668184 > r10 = 0xc08dd004 > arm_handler_execute() at arm_handler_execute+0x50 > pc = 0xc0543598 lr = 0xc0561118 (irq_entry+0x6c) > sp = 0xdbe5ddb8 fp = 0xdbe5de10 > r4 = 0x00000001 r5 = 0xc059fdf3 > r6 = 0xc07e3490 r7 = 0xc067df4c > irq_entry() at irq_entry+0x6c > pc = 0xc0561118 lr = 0xc0543bec (cpu_idle+0x24) > sp = 0xdbe5de0c fp = 0xdbe5de10 > r0 = 0x00000001 r1 = 0x00015924 > r2 = 0x00000002 r3 = 0x00000000 > r4 = 0x00000001 r5 = 0xc059fdf3 > r6 = 0xc07e3490 r7 = 0xc067df4c > r8 = 0x00274e80 r9 = 0xc0668184 > r10 = 0xc08dd004 r12 = 0x00000000 > sched_runnable() at sched_runnable > pc = 0xc038773c lr = 0xc0388a0c (sched_idletd+0xc4) > sp = 0xdbe5de18 fp = 0xdbe5de38 > sched_idletd() at sched_idletd+0xc4 > pc = 0xc0388a0c lr = 0xc03307ac (fork_exit+0x88) > sp = 0xdbe5de40 fp = 0xdbe5de58 > r4 = 0xc279b320 r5 = 0xc2798320 > r6 = 0xc0388948 r7 = 0x00000000 > r8 = 0xdbe5de60 r9 = 0x00000000 > r10 = 0x00000000 > fork_exit() at fork_exit+0x88 > pc = 0xc03307ac lr = 0xc0551b0c (fork_trampoline+0x14) > sp = 0xdbe5de60 fp = 0x00000000 > r4 = 0xc0388948 r5 = 0x00000000 > r6 = 0x3bffcfdb r7 = 0xf9fcd7ef > r8 = 0x00000000 > fork_trampoline() at fork_trampoline+0x14 > pc = 0xc0551b0c lr = 0xc0551b0c (fork_trampoline+0x14) > sp = 0xdbe5de60 fp = 0x00000000 > Unable to unwind further > db> That backtrace is just the idle thread; usually that's a sign that some device driver is waiting for an interrupt to finish configuring the device and it never gets it and just hangs. Often usb is the culprit -- we very often rely on u-boot to set up the usb hardware and if it doesn't the kernel hangs trying to access it. Sometimes you just need a "usb start" in u-boot before launching the kernel or ubldr. Or maybe there are some more fixes in 11 that haven't been merged back to 10 yet. As to the 1ghz stuff, it was my understanding that the patches make u-boot set the clock faster. It would probably be better to just have our kernel code do that, but I haven't had time to look at the patches and see how much work is involved. -- Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1398897697.22079.80.camel>