On 2013-6-4 20:53, Graeme Gregory wrote:
On Tue, Jun 04, 2013 at 07:55:28PM +0800, Hanjun Guo wrote:
On 2013-6-4 19:34, Graeme Gregory wrote:
Hi Hanjun,
I have just compiled a kernel with your patches and it starts to boot then locks up. From the kernel log it looks like the CPUs are being recognised from your patches.
...
Boot log before your patches is here.
This bug is so freaky that I'm not sure what's happening here.
I have double checked the DSDT table and confirm it with BIOS guy, it is no error in the DSDT table except the _MAT return buffer, but this will not cause such problem because the parking_version and other values is not used by OS.
From the log I can found that the DSDT table I created becomes effective,
but cpu1 stalls when a system tick interrupt happens.
The dump stack attached: 6ACPI: Using GIC for interrupt routing 3INFO: rcu_sched self-detected stall on CPU { 1} (t=6001 jiffies g=4294967004 c=4294967003 q=8) 6Backtrace for cpu 1 (current): 3INFO: rcu_sched detected stalls on CPUs/tasks: { 1} (detected by 0, t=6002 jiffies, g=4294967004, c=4294967003, q=8) [<80011895>] (unwind_backtrace+0x1/0x9c) from [<80010cc5>] (smp_send_all_cpu_backtrace+0x49/0x98) [<80010cc5>] (smp_send_all_cpu_backtrace+0x49/0x98) from [<8005d6db>] (rcu_check_callbacks+0x227/0x4a8) [<8005d6db>] (rcu_check_callbacks+0x227/0x4a8) from [<80026c09>] (update_process_times+0x2d/0x4c) [<80026c09>] (update_process_times+0x2d/0x4c) from [<8004d111>] (tick_periodic+0x29/0x84) [<8004d111>] (tick_periodic+0x29/0x84) from [<8004d1dd>] (tick_handle_periodic+0x21/0x74) [<8004d1dd>] (tick_handle_periodic+0x21/0x74) from [<80332925>] (arch_timer_handler_phys+0x25/0x28) [<80332925>] (arch_timer_handler_phys+0x25/0x28) from [<80059d9d>] (handle_percpu_devid_irq+0x45/0xa4) [<80059d9d>] (handle_percpu_devid_irq+0x45/0xa4) from [<80057853>] (generic_handle_irq+0x1f/0x2c) [<80057853>] (generic_handle_irq+0x1f/0x2c) from [<8000d58d>] (handle_IRQ+0x29/0x68) [<8000d58d>] (handle_IRQ+0x29/0x68) from [<80008463>] (gic_handle_irq+0x27/0x50) [<80008463>] (gic_handle_irq+0x27/0x50) from [<8000c85b>] (__irq_svc+0x3b/0x5c) Exception stack(0xec081d00 to 0xec081d48) 1d00: 00000061 80617cd4 ec081d4c 806d7c40 00000001 806d7c40 00000005 8041d587 1d20: 8041d572 00000061 00004006 00000001 00000000 ec081d48 802387ad 8023876e 1d40: 80000133 ffffffff [<8000c85b>] (__irq_svc+0x3b/0x5c) from [<8023876e>] (acpi_ut_track_stack_ptr+0x16/0x34) [<8023876e>] (acpi_ut_track_stack_ptr+0x16/0x34) from [<802387ad>] (acpi_ut_trace+0x21/0x64) [<802387ad>] (acpi_ut_trace+0x21/0x64) from [<80239d6b>] (acpi_ut_short_divide+0x23/0x84) [<80239d6b>] (acpi_ut_short_divide+0x23/0x84) from [<8022c213>] (acpi_ex_integer_to_string+0x63/0xb0) [<8022c213>] (acpi_ex_integer_to_string+0x63/0xb0) from [<80239a87>] (acpi_ut_execute_UID+0x73/0xa8) [<80239a87>] (acpi_ut_execute_UID+0x73/0xa8) from [<802323ed>] (acpi_get_object_info+0x9f/0x2b6) [<802323ed>] (acpi_get_object_info+0x9f/0x2b6) from [<8023fac5>] (acpi_container_register_notify_handler+0x11/0x60) [<8023fac5>] (acpi_container_register_notify_handler+0x11/0x60) from [<80231a8d>] (acpi_ns_walk_namespace+0x8b/0x14e) [<80231a8d>] (acpi_ns_walk_namespace+0x8b/0x14e) from [<80232109>] (acpi_walk_namespace+0x77/0xa6) [<80232109>] (acpi_walk_namespace+0x77/0xa6) from [<805e5055>] (acpi_container_init+0x19/0x2c) [<805e5055>] (acpi_container_init+0x19/0x2c) from [<805e44cf>] (acpi_scan_init+0x1f/0xe4) [<805e44cf>] (acpi_scan_init+0x1f/0xe4) from [<805e434f>] (acpi_init+0x14f/0x1e8) [<805e434f>] (acpi_init+0x14f/0x1e8) from [<80008603>] (do_one_initcall+0xc7/0x10c) [<80008603>] (do_one_initcall+0xc7/0x10c) from [<805d470f>] (kernel_init_freeable+0xb7/0x148) [<805d470f>] (kernel_init_freeable+0xb7/0x148) from [<803cb667>] (kernel_init+0xf/0xa0) [<803cb667>] (kernel_init+0xf/0xa0) from [<8000cd7d>] (ret_from_fork+0x11/0x20)
acpi_container_init runs because I created a container device for SCK0 which named "ACPI0004", I didn't modify this part of the code, so I'm not sure what's going on here.
I think the same problem will happen on ARMv8, I will try to find out where the problem is.
I found that cpu logical id which matched the cpu acpi id is not implement for ARM, I will sent out the proto patch to linaro-acpi list.
To Graeme, pls send your config file to me, Thanks.
Thanks Hanjun